NEWS
einfaches Script will nicht.... [solved]
-
Hallo,
kann mir bitte jemand sagen, warum dieses Script nicht will?:
Der Teil mit dem Zeitprogramm funktioniert also ein um 11:15 und aus um 18:15 aber der Teil mit dem Verbrauch will nicht.
const id_Verbrauch1 = '0_userdata.0.Verbräuche.Differenzverbrauch'; const idWarmwasser = '0_userdata.0.Variablen.Warmwasser'; //Variable ein per Zeitprogramm schedule('15 11 * * *', function ein() {setState(idWarmwasser, true); sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});}); //Variable aus per Zeitprogramm schedule('15 18 * * *', function ein() {setState(idWarmwasser, false); sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});}); //Variable ein per Verbrauch on (id_Verbrauch1, function () { var Verbrauch = getState(id_Verbrauch1).val; if (Verbrauch < -500) {setState(idWarmwasser, true);} }); //Ein - Aus per Variable on (idWarmwasser, function () { var Warmwasser = getState(idWarmwasser).val; if (Warmwasser = true) {setState('sonoff.0.S4 Warmwasser.POWER', true); sendTo('telegram.0', 'send', {text: 'Wasser ein'})} else if (Warmwasser = false) {setState('sonoff.0.S4 Warmwasser.POWER', false); sendTo('telegram.0', 'send', {text: 'Wasser aus'})} }); -
Hallo,
kann mir bitte jemand sagen, warum dieses Script nicht will?:
Der Teil mit dem Zeitprogramm funktioniert also ein um 11:15 und aus um 18:15 aber der Teil mit dem Verbrauch will nicht.
const id_Verbrauch1 = '0_userdata.0.Verbräuche.Differenzverbrauch'; const idWarmwasser = '0_userdata.0.Variablen.Warmwasser'; //Variable ein per Zeitprogramm schedule('15 11 * * *', function ein() {setState(idWarmwasser, true); sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});}); //Variable aus per Zeitprogramm schedule('15 18 * * *', function ein() {setState(idWarmwasser, false); sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});}); //Variable ein per Verbrauch on (id_Verbrauch1, function () { var Verbrauch = getState(id_Verbrauch1).val; if (Verbrauch < -500) {setState(idWarmwasser, true);} }); //Ein - Aus per Variable on (idWarmwasser, function () { var Warmwasser = getState(idWarmwasser).val; if (Warmwasser = true) {setState('sonoff.0.S4 Warmwasser.POWER', true); sendTo('telegram.0', 'send', {text: 'Wasser ein'})} else if (Warmwasser = false) {setState('sonoff.0.S4 Warmwasser.POWER', false); sendTo('telegram.0', 'send', {text: 'Wasser aus'})} });@johannes-bauerstatter Durch was wird denn id_Verbrauch1 aktualisiert? Ein anderes Script? Nur wenn sich das ändert, wird ja der untere Teil aufgerufen.
-
Hallo,
kann mir bitte jemand sagen, warum dieses Script nicht will?:
Der Teil mit dem Zeitprogramm funktioniert also ein um 11:15 und aus um 18:15 aber der Teil mit dem Verbrauch will nicht.
const id_Verbrauch1 = '0_userdata.0.Verbräuche.Differenzverbrauch'; const idWarmwasser = '0_userdata.0.Variablen.Warmwasser'; //Variable ein per Zeitprogramm schedule('15 11 * * *', function ein() {setState(idWarmwasser, true); sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});}); //Variable aus per Zeitprogramm schedule('15 18 * * *', function ein() {setState(idWarmwasser, false); sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});}); //Variable ein per Verbrauch on (id_Verbrauch1, function () { var Verbrauch = getState(id_Verbrauch1).val; if (Verbrauch < -500) {setState(idWarmwasser, true);} }); //Ein - Aus per Variable on (idWarmwasser, function () { var Warmwasser = getState(idWarmwasser).val; if (Warmwasser = true) {setState('sonoff.0.S4 Warmwasser.POWER', true); sendTo('telegram.0', 'send', {text: 'Wasser ein'})} else if (Warmwasser = false) {setState('sonoff.0.S4 Warmwasser.POWER', false); sendTo('telegram.0', 'send', {text: 'Wasser aus'})} });@johannes-bauerstatter sagte in einfaches Script will nicht....:
if (Warmwasser = true)Vergleiche mit "==" oder bei bool ganz weglassen:
if (Warmwasser) { setState('sonoff.0.S4 Warmwasser.POWER', true); sendTo('telegram.0', 'send', {text: 'Wasser ein'}) } else { setState('sonoff.0.S4 Warmwasser.POWER', false); sendTo('telegram.0', 'send', {text: 'Wasser aus'}) } -
@johannes-bauerstatter Durch was wird denn id_Verbrauch1 aktualisiert? Ein anderes Script? Nur wenn sich das ändert, wird ja der untere Teil aufgerufen.
@ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.
@ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.
-
@ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.
@ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.
@johannes-bauerstatter Hast Du mal einen log-Block eingebaut in die
on (id_Verbrauch1, function () {Funktion? Damit man sieht, ob das überhaupt alle 5 Sek getriggert wird? Es sieht für mich so aus, als ob das nicht passiert...
-
@ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.
@ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.
@johannes-bauerstatter said in einfaches Script will nicht....:
@ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.
@ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.
Das sind die Tücken von Javascript
Durch das = wird der Wert true der variable Warmwasser zugewiesen.
Diese Zuweisung erzeugt in Javascript einen truthy-Wert
https://developer.mozilla.org/de/docs/Glossary/Truthy
Daher der Wahrteil dieser Prüfung wird immer,immer,immer ausgeführtif (Warmwasser = true)falls es dann immer noch nicht funktioniert, musst du schauen ob im Datenpunkt Warmwasser wirklich der bool-Wert true/false steht oder evtl nur der Text "true" / "false"

-
@johannes-bauerstatter said in einfaches Script will nicht....:
@ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.
@ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.
Das sind die Tücken von Javascript
Durch das = wird der Wert true der variable Warmwasser zugewiesen.
Diese Zuweisung erzeugt in Javascript einen truthy-Wert
https://developer.mozilla.org/de/docs/Glossary/Truthy
Daher der Wahrteil dieser Prüfung wird immer,immer,immer ausgeführtif (Warmwasser = true)falls es dann immer noch nicht funktioniert, musst du schauen ob im Datenpunkt Warmwasser wirklich der bool-Wert true/false steht oder evtl nur der Text "true" / "false"

Danke an Alle für die Tips und Hinweise.
Habs jetzt umgestellt und es läuft:
const id_Verbrauch = '0_userdata.0.Verbräuche.Differenzverbrauch'; const id_Warmwasser = 'sonoff.0.S4 Warmwasser.POWER'; //Variable ein per Zeitprogramm schedule('15 11 * * *', function() {setState(id_Warmwasser, true); sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});}); //Variable aus per Zeitprogramm schedule('15 18 * * *', function() {setState(id_Warmwasser, false); sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});}); //Variable ein per Verbrauch on (id_Verbrauch, function () { var Verbrauch = getState(id_Verbrauch).val; if (Verbrauch < -500) {setState(id_Warmwasser, true);} }); -
Danke an Alle für die Tips und Hinweise.
Habs jetzt umgestellt und es läuft:
const id_Verbrauch = '0_userdata.0.Verbräuche.Differenzverbrauch'; const id_Warmwasser = 'sonoff.0.S4 Warmwasser.POWER'; //Variable ein per Zeitprogramm schedule('15 11 * * *', function() {setState(id_Warmwasser, true); sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});}); //Variable aus per Zeitprogramm schedule('15 18 * * *', function() {setState(id_Warmwasser, false); sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});}); //Variable ein per Verbrauch on (id_Verbrauch, function () { var Verbrauch = getState(id_Verbrauch).val; if (Verbrauch < -500) {setState(id_Warmwasser, true);} });damit es bei komplexeren skripten besser lesbar (auch für andere) ist
schau dir mal den style guide für javascript an.
Deiner Klammersetzung ist nicht so optimal
https://www.w3schools.com/js/js_conventions.asp
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