NEWS
Blockly in Verbindung mit einer "dynamischen" Vari. [gelöst]
-
Hallo, ich würde mir gerne über Telegram eine Information schicken lassen sobald der Benzinpreis ein bestimmtes Limit erreicht hat. Mit einer "festen" Zahl in Blockly bekomme ich das hin. Jetzt bin ich dazu übergegangen eine Variable (Benzinlimit) zu erzeugen welche ich über Telegram / text2command dynamisch setzten kann. Das funktioniert auch. Ich habe jetzt den festen Wert im Blockly gegen die Variable getauscht, leider geht es jetzt nicht mehr und ich bekomme bei jeder Änderung des Benzinpreises (Variable wird falsch oder gar nicht geprüft) eine Nachricht geschickt.
Bei der Variable "Benzinlimit" handelt es sich um eine "Zahl".
Den aktuellen Benzinpreis frage ich alle 15 Min per "Tankerkönig" ab. (tankerkoenig.0.stations.cheapest.diesel.short)Blockly:
Hat jemand von euch eine Idee was ich falsch mache?
-
@smarteshome2020 Schön!
du hast debug Bausteine drin.in der Message hast du auch die Werte, wie sehen diese aus?
Außerdem brauchst du im UND beim Falls wahrscheinlich den "Wert von" Benzinlimit, so wie du es auch in der Message hast.
Die ID wird dir nichts nutzen -
@smarteshome2020 sagte:
Bei der Variable "Benzinlimit" handelt es sich um eine "Zahl".
Bist Du sicher ? Auch wenn der Datenpunkt vom Typ "Zahl" ist, muss der tatsächliche Wert nicht auch eine Zahl sein.
Teste, ob es mit Wert von Objekt und Wandlung "nach Zahl" funktioniert. -
@Homoran, leider sehe ich keine Werte. Ich schaue ins LOG vom iobroker. Muss ich evtl. noch woanders schauen? Deinen anderen Hinweis prüfe ich gerade noch
javascript.0 2021-01-02 18:45:15.692 info (23866) script.js.common.Dieselpreisalarm: Telegram wird initiert
javascript.0 2021-01-02 18:45:15.689 info (23866) script.js.common.Dieselpreisalarm: Änderung erkannt -
@smarteshome2020 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
leider sehe ich keine Werte
die müsstest du dann noch in die debug-Bausteine einbauen, so wie du es in der Message machst.
-
@Homoran, Danke. Mit der Änderung auf "Wert von Objekt" geht es.
Zwei Fragen hätte ich aber noch.
- trotz "Debug" sehe ich keine Werte im Log
- Wenn ich per text2command bzw Telegram z.B. 1.20 schicke wird nur 1.2 in die Variable geschrieben. Ist nur eine Schönheitskorrektur
-
@smarteshome2020 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
trotz "Debug" sehe ich keine Werte im Log
du hast in deinen debug-Bausteinen ja auch keine Werte definiert
-
@smarteshome2020 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
trotz "Debug" sehe ich keine Werte im Log
du hast in deinen debug-Bausteinen ja auch keine Werte definiert, in der telegram-Message schon.
Kopier doch einfach die Message und klinke sie in den debug Baustein ein -
@Homoran, Danke läuft.
Sehe jetzt im LOG die Werte:
javascript.0 2021-01-02 19:36:46.588 info (23866) script.js.common.Dieselpreisalarm: Benzinpreisinformation:1.08, Limit steht bei: 1.1
javascript.0 2021-01-02 19:36:46.586 info (23866) script.js.common.Dieselpreisalarm: Änderung erkannt
javascript.0 2021-01-02 19:36:35.281 info (23866) script.js.common.Dieselpreisalarm: registered 1 subscription and 0 schedules
javascript.0 2021-01-02 19:36:35.241 info (23866) Start javascript script.js.common.Dieselpreisalarm
javascript.0 2021-01-02 19:36:35.215 info (23866) Stop script script.js.common.DieselpreisalarmHast du noch eine Tipp für mich warum die Variable bei einer Zahl mit Endung=0 nur zweistellig beschrieben wird? z.B. 1.10, 1.20 usw.
-
@smarteshome2020 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
Sehe jetzt im LOG die Werte:
und wenn du damals den Wert aus deinem falls genommen hättest, hättest du nicht 1.1 sondern die ID des DPs erhalten.
Deswegen sind sinnvoll eingerichtete debug-Blöcke bei der Suche nach Fehlern Gold wert!
@smarteshome2020 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
Hast du noch eine Tipp für mich warum die Variable bei einer Zahl mit Endung=0 nur zweistellig beschrieben wird? z.B. 1.10, 1.20 usw.
erstens ist es keine Variable sondern der Wert eines Datenpunkts
zweitens: kannst du mir den mathematischen Unterschied zwischen 1.1 und 1.10 erklären? -
@Homoran sagte in
zweitens: kannst du mir den mathematischen Unterschied zwischen 1.1 und 1.10 erklären?
Hi, es ist nur ein "Schönheitsfehler" da mir bei der Abfrage bzw Telegrammeldung 1.1€ und nicht 1.10€ ausgegeben wird. Mathematisch natürlich kein Unterschied
-
@smarteshome2020 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
bei der Abfrage bzw Telegrammeldung 1.1€ und nicht 1.10€ ausgegeben wird.
dann nimm doch den Block "runden auf 2 Nachkommastellen" vor "Wert von Benzinlimit"
-
@Homoran sagte:
Block "runden auf 2 Nachkommastellen"
Der verkürzt nur auf 2 Nachkommastellen, denn das Ergebnis ist eine Zahl.
-
@paul53 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
Der verkürzt nur auf 2 Nachkommastellen, denn das Ergebnis ist eine Zahl.
Ich war mir ziemlich sicher, dass ich damit auch schon eine weitere 0 dranhängen konnte.
Muss ich mich wohl irrenEDIT:
Vielleicht war das auch in einem number Widget in vis -
@Homoran sagte:
damit auch schon eine weitere 0 dranhängen
Nein, das geht nur bei Wandlung in einen String: Zahl.toFixed(2)
-
@paul53 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
@Homoran sagte:
damit auch schon eine weitere 0 dranhängen
Nein, das geht nur bei Wandlung in einen String: Zahl.toFixed(2)
Dann muss hier bei Blockly in Text gewandelt werden und über eine Zeichenverkettung eie
0
angehängt werden?Ich glaube das ist ein wenig oversized
-
@Homoran sagte:
über eine Zeichenverkettung eie 0 angehängt werden?
Ich würde eine einfache Javascript-Funktion verwenden, die auch rundet:
return zahl.toFixed(stellen);
-
@paul53 sagte in Blockly in Verbindung mit einer "dynamischen" Variable:
Ich würde eine einfache Javascript-Funktion verwenden, die auch rundet:
War mir klar
während ich auf absenden ging
-
@paul53 @Homoran Das geht leider nicht da ich mit text2command die Variable abfrage bzw beim setzen eine Quittung bekomme.
Ich verstehe aber nicht wirklich wo die "0" verloren geht denn wenn ich die Zahl über den Browser eintrage geht es, nur wenn die 1.10 über Telegram setze geht die "0" verloren und es steht 1.1 drin.text2Command, Bei der Quittung des Wertes fehlt bereits die "0".
Quittung:
text2command.0 2021-01-03 17:47:13.110 info (507) Response: 1.1 € wurde als Limit gesetztIch vermute das es sich evtl mehr um ein text2command Thema handelt.
-
@smarteshome2020 sagte:
Das geht leider nicht da ich mit text2command
Die Wandlung in einen String mit 2 Nachkommastellen macht auch nur bei der Telegram-Meldung Sinn.