NEWS
Zwei Datenpunkte vergleichen, grösser als...
-
Hallo, ich brauche mal Hilfe, ich raffe es nicht.
Folgendes Problem:
Wenn sich der Wert des Triggers ändert, soll der Triggerwert mit einem anderen Wert verglichen werden.
Falls dieser Triggerwert größer ist als der Vergleichswert soll eine Ansage per Alexa kommen.
Und das ganze nur zwischen 7:20 und 20:00 und wenn das Fenster offen ist.Allerdings kommt die Alexa Ansage, sobald sich der Triggerwert ändert.
Die beiden Werte werden scheinbar gar nicht auf "Größer" verglichen.
Zeit und Fenster werden aber berücksichtigt.Wo ist mein Fehler ?
Bzw könnte man das nicht auch ohne Trigger aufbauen, dass es halt während der Zeitspanne läuft ? -
@darkblu dein timeout wird mehrfach gestartet, wenn die Werte innerhalb von 15 Minuten jeweils größer als der Referenzwert sind.
Anschließend kann der Timeout nicht mehr gestoppt werden.Setze noch ein stop timeout vor den Timeout, dann verlängert sich die Frist (bis ins unendliche) oder prüfe im falls zusätzlich auf ...und nicht timeout
-
@homoran
erledigt, aber das ändert ja nix daran, dass die beiden Werte nicht auf "größer" verglichen werdenwie schon oben geschrieben, sobald sich der Triggerwert ändert, kommt die Ansage von Alexa,
egal ob der Triggerwert grösser oder kleiner ist als der Vergleichswert. -
@darkblu sagte in Zwei Datenpunkte vergleichen, grösser als...:
das ändert ja nix daran, dass die beiden Werte nicht auf "größer" verglichen werden
ist das so???
woher weisst du das?
Hast du dir mal per debug Block die aktuellen Werte ausgeben lassen?Wie kommt den sonst die Sprachausgabe ins Rollen, wenn das falls nicht zuträfe?
-
@homoran
ok, per Debug Block habe ich nicht geschaut, ich starre auf die Werte in den Objekten.
Und der Triggerwert ist kleine als der Vergleichswert.
Ich baue mal den Debug Block ein. -
@darkblu
Versuche es mal so:Kontrolle per Debug-Block hilft meistens, wenn etwas nicht so funktioniert wie erwartet.
-
@paul53
ich habe es jetzt nach deinem Vorbild umgebaut (und das Zimmer gewechselt)muss beim Kringel nicht "größer" hin ?
Zumindest scheint es jetzt zu funktionieren (mit dem "größer)Allerdings verstehe ich nicht warum meins nicht funktioniert
Ich verstehe auch das hier nicht:sonst falls der Wert vom Fenster Badezimmer... was denn ? da wird doch gar nicht gefragt/verglichen ob auf oder zu ?
Egal, es löppt jetzt scheinbar.
Ganz herzlichen Dank @paul53
-
@darkblu sagte in Zwei Datenpunkte vergleichen, grösser als...:
da wird doch gar nicht gefragt/verglichen ob auf oder zu ?
doch! ohne Zusatz = true, ein false wäre in der Schreibweise
nicht Wert von OID Fensterxy
@darkblu sagte in Zwei Datenpunkte vergleichen, grösser als...:
Allerdings verstehe ich nicht warum meins nicht funktioniert
was passiert denn jetzt mit dem zusätzlichen stop timeout?
ich denke da hat es bisher die timeout Verwaltung bei dir zerschossen@darkblu sagte in Zwei Datenpunkte vergleichen, grösser als...:
muss beim Kringel nicht "größer" hin ?
nein, der vorherige Wert sollte kleiner sein und der aktuelle damit grösser
wenn das mit größer funktioniert, interessieren mich jetzt erst recht die debug-Bausteine mit den Werten!
-
@darkblu sagte: muss beim Kringel nicht "größer" hin ?
Nein, die Bedingung ist: Außenfeuchte >= Innenfeuchte (sonst) UND vorherige Außenfeuchte < Innenfeuchte, also erstmaliges Überschreiten der Innenfeuchte.
Es muss im Prinzip so aussehen: -
sodele,
nachgebaut nach @paul53 mit debug output:
hier das Log
7.7.2024, 20:30:39.267 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.test: 7.914482682678163Badezimmer10.21 7.7.2024, 20:33:28.477 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.test: 7.865026527843053Badezimmer10.21 7.7.2024, 20:33:28.527 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.test: 8.012551461048739Badezimmer10.21
Man sieht, Triggerwert ist immer kleiner als der Vergleichswert.
Und trotzdem kommt die Alexameldung. Das ist doch verrücktEs soll doch genau anders herum sein.
Wenn Trigger grösser als der Vergleichswert ist soll Alexa doch labern -
@darkblu sagte in Zwei Datenpunkte vergleichen, grösser als...:
Man sieht, Triggerwert ist immer kleiner als der Vergleichswert.
ja! in dem entsprechenden Teil steckt auch der debug block.
im entscheidenden Teil ist leider kein debug
-
@darkblu sagte: trotzdem kommt die Alexameldung.
Wenn die Alexameldung kommt, kann die Log-Ausgabe nicht erfolgen und umgekehrt.
Enthalten die Datenpunkte Zahlen oder Strings? Bei einem Stringvergleich ist "7" größer als "10". Wandle mal beide Vergleichswerte in eine Zahl.
Außerdem ist das "stop timeout1" vor dem "Ausführen timeout1" zu viel.
-
@paul53 , da bin ich wieder
habs nach deinem Bauplan nachgebaut:
Log nach Änderung vom Datenpunkt Feuchtegehalt Garten:
8.7.2024, 15:37:01.819 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.Test_Keller: vorher aussen:8.97 , jetzt aussen:9.018749301038769 , innen:10.78 8.7.2024, 15:37:01.830 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.Test_Keller: vorher aussen:9.018749301038769 , jetzt aussen:9.02 , innen:10.78 8.7.2024, 15:37:01.839 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.Test_Keller: vorher aussen:9.02 , jetzt aussen:9.465383347754388 , innen:10.78 8.7.2024, 15:37:01.850 [info ]: javascript.0 (888) script.js.Luftfeuchtigkeit.nicht_Lüften.Test_Keller: vorher aussen:9.465383347754388 , jetzt aussen:9.47 , innen:10.78
Die Alexaansage kam nicht, ist ja auch richtig.
Jetzt muss ich auf ordentlich Regen warten, damit aussen größer wird als innen.
Übermorgen soll ordentlich was runterkommen, dann sollte sich aussen zu innen ja umkehren.
Aber eigentlich sollte es jetzt funktionieren.Die Datenpunkte sind vom Type gemischt (mixed).
Kann man die hier einfach umstellen ?
Oder Finger von lassen, da es ja scheinbar jetzt löppt ?Ich werde anschliessend berichten
Vielen Dank @paul53
-
@darkblu sagte: Die Datenpunkte sind vom Type gemischt (mixed).
Deshalb meckert der js-controller nicht, wenn ein String geschrieben wird. Wenn mit den Werten gerechnet werden soll, müssen Zahlen in die DP geschrieben werden.