NEWS
Javascript Adapter Frage
-
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
Hawe -
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
Hawe -
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
Hawe@teletapi Tipp: Erstelle direkt deine Datenpunkte in
0_userdata.0mit dem JavaScript-Adapter und nicht in derjavascript.0.Struktur.Ansonsten zeig mal das Script, welches sich so verhält.
-
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
Hawe@teletapi sagte in Javascript Adapter Frage:
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
HaweManuell erzeugte datenpunkte gehören nicht in den namespace von Adaptern sondern unter 0_userdata. Die adapter namespaces sind für adapter-interne datenpunkte vorgesehen. Es ist denkbar das der JS adapter da code zu hat das sicher zu stellen.
A.
-
@teletapi sagte in Javascript Adapter Frage:
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
HaweManuell erzeugte datenpunkte gehören nicht in den namespace von Adaptern sondern unter 0_userdata. Die adapter namespaces sind für adapter-interne datenpunkte vorgesehen. Es ist denkbar das der JS adapter da code zu hat das sicher zu stellen.
A.
@asgothian sagte in Javascript Adapter Frage:
Es ist denkbar das der JS adapter da code zu hat das sicher zu stellen.
Hat er nicht - alles in
javascript.0(ist ja der "eigene Namespace" der Scripts) und0_userdata.0ist erlaubt. -
Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
Gruß
Hawe@teletapi sagte in Javascript Adapter Frage:
nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX
Dann hast Du das in Deinem Script auch so vorgesehen.
Ohne besonderes Zutun - also percreateState('meinState')- erscheint ein State unterjavascript.0.Dass der da nicht hingehört, wurde bereits gesagt.
Aber ohne das Script zu sehen bleibt unsere Glaskugel recht trüb.
-
Jetzt im Moment hatte ich garkein script dazu ich wollte nur nochmal versuchen einen datenpunkt unter dem Rootverzeichnis javascript.0.XX zu erstellen. Gestern hatte ich mir mithilfe von Chatgpt ein script erstellen lassen um aus einem wert die differenz pro tag erstellen zu lassen Chatgpt hatte dazu den Datenpunkt unter javascript.0.XXX erstellen wollen was aber nicht funktionierte weil der Datenpunkt dann immer unter javascrip.0.scriptproblem.XXXX auftauchte und somit das script nicht laufen konnte und ich auch nicht wirklich einen weg gefunden hatte das zu ändern. Irgendwie hab ich das wohl hinbekommen. Möglicherweise ist das ja falsch aber ich habe ja viele datenpunkte im Javascript Adapter dann aber in Unterordner..
// Funktion, die das Skript periodisch ausführt function updateDailyEnergy() { // Datenpunkt für die gesamte erzeugte Energie const totalEnergyDP = 'modbus.0.holdingRegisters.1086_Total_PV_Energy'; // Datenpunkt für die täglich erzeugte Energie const dailyEnergyDP = 'javascript.0.PV_Daily_Energy'; // Heutiges Datum const today = new Date(); today.setHours(0, 0, 0, 0); // Setze Zeit auf Mitternacht // Gestriges Datum const yesterday = new Date(today); yesterday.setDate(yesterday.getDate() - 1); // Datenpunktwerte lesen getState(totalEnergyDP, (err, state) => { if (err) { console.error('Fehler beim Lesen des Datenpunkts für die gesamte erzeugte Energie:', err); return; } const totalEnergy = state.val || 0; // Gesamte erzeugte Energie heute console.log('Gesamte erzeugte Energie heute:', totalEnergy); getState(dailyEnergyDP, (err, state) => { if (err) { console.error('Fehler beim Lesen des Datenpunkts für die täglich erzeugte Energie:', err); return; } const lastTotalEnergy = state.val || 0; // Gesamte erzeugte Energie gestern console.log('Gesamte erzeugte Energie gestern:', lastTotalEnergy); // Täglich erzeugte Energie berechnen const dailyEnergy = totalEnergy - lastTotalEnergy; console.log('Täglich erzeugte Energie:', dailyEnergy); // Täglich erzeugte Energie in den entsprechenden Datenpunkt schreiben setState(dailyEnergyDP, dailyEnergy, true, (err) => { if (err) { console.error('Fehler beim Schreiben des Datenpunkts für die täglich erzeugte Energie:', err); return; } console.log('Täglich erzeugte Energie erfolgreich aktualisiert:', dailyEnergy); }); }); }); } // Funktion periodisch ausführen (alle 30 Minuten) updateDailyEnergy(); // Sofortiges Ausführen beim Start setInterval(updateDailyEnergy, 30 * 60 * 1000); // Alle 30 Minuten wiederholen -
Jetzt im Moment hatte ich garkein script dazu ich wollte nur nochmal versuchen einen datenpunkt unter dem Rootverzeichnis javascript.0.XX zu erstellen. Gestern hatte ich mir mithilfe von Chatgpt ein script erstellen lassen um aus einem wert die differenz pro tag erstellen zu lassen Chatgpt hatte dazu den Datenpunkt unter javascript.0.XXX erstellen wollen was aber nicht funktionierte weil der Datenpunkt dann immer unter javascrip.0.scriptproblem.XXXX auftauchte und somit das script nicht laufen konnte und ich auch nicht wirklich einen weg gefunden hatte das zu ändern. Irgendwie hab ich das wohl hinbekommen. Möglicherweise ist das ja falsch aber ich habe ja viele datenpunkte im Javascript Adapter dann aber in Unterordner..
// Funktion, die das Skript periodisch ausführt function updateDailyEnergy() { // Datenpunkt für die gesamte erzeugte Energie const totalEnergyDP = 'modbus.0.holdingRegisters.1086_Total_PV_Energy'; // Datenpunkt für die täglich erzeugte Energie const dailyEnergyDP = 'javascript.0.PV_Daily_Energy'; // Heutiges Datum const today = new Date(); today.setHours(0, 0, 0, 0); // Setze Zeit auf Mitternacht // Gestriges Datum const yesterday = new Date(today); yesterday.setDate(yesterday.getDate() - 1); // Datenpunktwerte lesen getState(totalEnergyDP, (err, state) => { if (err) { console.error('Fehler beim Lesen des Datenpunkts für die gesamte erzeugte Energie:', err); return; } const totalEnergy = state.val || 0; // Gesamte erzeugte Energie heute console.log('Gesamte erzeugte Energie heute:', totalEnergy); getState(dailyEnergyDP, (err, state) => { if (err) { console.error('Fehler beim Lesen des Datenpunkts für die täglich erzeugte Energie:', err); return; } const lastTotalEnergy = state.val || 0; // Gesamte erzeugte Energie gestern console.log('Gesamte erzeugte Energie gestern:', lastTotalEnergy); // Täglich erzeugte Energie berechnen const dailyEnergy = totalEnergy - lastTotalEnergy; console.log('Täglich erzeugte Energie:', dailyEnergy); // Täglich erzeugte Energie in den entsprechenden Datenpunkt schreiben setState(dailyEnergyDP, dailyEnergy, true, (err) => { if (err) { console.error('Fehler beim Schreiben des Datenpunkts für die täglich erzeugte Energie:', err); return; } console.log('Täglich erzeugte Energie erfolgreich aktualisiert:', dailyEnergy); }); }); }); } // Funktion periodisch ausführen (alle 30 Minuten) updateDailyEnergy(); // Sofortiges Ausführen beim Start setInterval(updateDailyEnergy, 30 * 60 * 1000); // Alle 30 Minuten wiederholen@teletapi sagte in Javascript Adapter Frage:
wollte nur nochmal versuchen einen datenpunkt unter dem Rootverzeichnis javascript.0.XX zu erstellen
Dann lass den Namespace
javascript.0.in der ID weg.Dein Script legt aber nirgendwo einen neuen State an, sondern liest und schreibt nur diesen State?!
-
Jetzt im Moment hatte ich garkein script dazu ich wollte nur nochmal versuchen einen datenpunkt unter dem Rootverzeichnis javascript.0.XX zu erstellen. Gestern hatte ich mir mithilfe von Chatgpt ein script erstellen lassen um aus einem wert die differenz pro tag erstellen zu lassen Chatgpt hatte dazu den Datenpunkt unter javascript.0.XXX erstellen wollen was aber nicht funktionierte weil der Datenpunkt dann immer unter javascrip.0.scriptproblem.XXXX auftauchte und somit das script nicht laufen konnte und ich auch nicht wirklich einen weg gefunden hatte das zu ändern. Irgendwie hab ich das wohl hinbekommen. Möglicherweise ist das ja falsch aber ich habe ja viele datenpunkte im Javascript Adapter dann aber in Unterordner..
// Funktion, die das Skript periodisch ausführt function updateDailyEnergy() { // Datenpunkt für die gesamte erzeugte Energie const totalEnergyDP = 'modbus.0.holdingRegisters.1086_Total_PV_Energy'; // Datenpunkt für die täglich erzeugte Energie const dailyEnergyDP = 'javascript.0.PV_Daily_Energy'; // Heutiges Datum const today = new Date(); today.setHours(0, 0, 0, 0); // Setze Zeit auf Mitternacht // Gestriges Datum const yesterday = new Date(today); yesterday.setDate(yesterday.getDate() - 1); // Datenpunktwerte lesen getState(totalEnergyDP, (err, state) => { if (err) { console.error('Fehler beim Lesen des Datenpunkts für die gesamte erzeugte Energie:', err); return; } const totalEnergy = state.val || 0; // Gesamte erzeugte Energie heute console.log('Gesamte erzeugte Energie heute:', totalEnergy); getState(dailyEnergyDP, (err, state) => { if (err) { console.error('Fehler beim Lesen des Datenpunkts für die täglich erzeugte Energie:', err); return; } const lastTotalEnergy = state.val || 0; // Gesamte erzeugte Energie gestern console.log('Gesamte erzeugte Energie gestern:', lastTotalEnergy); // Täglich erzeugte Energie berechnen const dailyEnergy = totalEnergy - lastTotalEnergy; console.log('Täglich erzeugte Energie:', dailyEnergy); // Täglich erzeugte Energie in den entsprechenden Datenpunkt schreiben setState(dailyEnergyDP, dailyEnergy, true, (err) => { if (err) { console.error('Fehler beim Schreiben des Datenpunkts für die täglich erzeugte Energie:', err); return; } console.log('Täglich erzeugte Energie erfolgreich aktualisiert:', dailyEnergy); }); }); }); } // Funktion periodisch ausführen (alle 30 Minuten) updateDailyEnergy(); // Sofortiges Ausführen beim Start setInterval(updateDailyEnergy, 30 * 60 * 1000); // Alle 30 Minuten wiederholen@teletapi
Es gibt 3 Möglichkeiten in Javascript per createState() einen Datenpunkt zu erstellen:createState('XXXX', 0, common); // erstellt DP "javascript.N.XXXX" (N = JS-Instanznr.) createState('javascript.0.XXXX', 0, common); // erstellt DP "javascript.0.XXXX" createState('0_userdata.0.XXXX', 0, common); // erstellt DP "0_userdata.0.XXXX"EDIT: Die 3. Version ist zu bevorzugen.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden