NEWS
Lebensmittelwarnung per Telegram verschicken
-
Re: [Javascript] für Warnungen von Lebensmittelwarnung
Hallo,
ich habe versucht den blockly-Eintrag nachzubauen, um Lebensmittelwarnungen mir per Telegram zu verschicken. Doch leider funktioniert der Versand nicht. Wenn ich manuell in VIS auf den hacken klicke, kein Problem. Der Wert wird auf false danach gesetzt. Kommt aber eine neue Warnung rein (true), dann verschickt er keine Nachricht, obwohl das im Blockly-Eintrag so drinnen steht. Könnte mir bitte jemand helfen?<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on" id=".b3ISq:00=pzgFrG$VFP" x="-138" y="-187"> <field name="OID">javascript.0.VIS.Lebensmittelwarnung.neue_Warnung</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="|z01A=aMTfVF$Rx2Jv2!"> <value name="IF0"> <block type="logic_compare" id="c?(ab@FyGT99TxcFAM%}"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="^{Ph|ct]al+TKnIDF:uV"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="@2wjaAY6O@r%2rDd#u`|"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="03{{jPueElumvx**?=Ut"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="Dj}J/yJP=dd@dr,Vcg3!"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="JwfDgCEKUL}1B@_v+l6G"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="ZnrQnku9F^u1r|/.,[)u"> <field name="TEXT">Neue Lebensmittelwarnung</field> </block> </value> <value name="ADD1"> <block type="text_newline" id="6.UsKiFx^yeu$r9e~oW/"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="get_value" id="0OW6,w!U3PN4ObcpUk@r"> <field name="ATTR">val</field> <field name="OID">javascript.0.VIS.Lebensmittelwarnung.Nummer_0.Titel</field> </block> </value> </block> </value> <next> <block type="control" id="Kl|]1^ue9kn|,.oP4r_{"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.VIS.Lebensmittelwarnung.neue_Warnung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="d39faWWHj:`fz6bDOs#v"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@jwerlsdf sagte:
Kommt aber eine neue Warnung rein (true)
Wodurch wird der Datenpunkt "neue_Warnung" automatisch auf true gesetzt ?
-
@paul53 Wenn der Zeitstempel einer Warnung sich geändert hat. Ich habe aber vergessen den Acknowledge zu setzen...
@jwerlsdf ändere mal so um Zeile #64 im Javascript folgenden Block:
//neue Warnung? on({id: DP+".Nummer_0.Datum", change: "ne"}, function (obj) { console.log('Neue Warnmeldung vorhanden...'); setTimeout(function() { setState(DP+".neue_Warnung", 'true', true/*ack*/); }, 3000); });
Dann sollte dein Blockly auch korrekt reagieren.
-
@SBorg sagte:
Dann sollte dein Blockly auch korrekt reagieren.
Nein, es reagiert nicht auf den String "true". Besser so:
//neue Warnung? on(DP+".Nummer_0.Datum", function () { console.log('Neue Warnmeldung vorhanden...'); setTimeout(function() { setState(DP+".neue_Warnung", true, true/*ack*/); }, 3000); });
Wozu dient die Verzögerung um 3 s ?
@SBorg sagte in Lebensmittelwarnung per Telegram verschicken:
Ich habe aber vergessen den Acknowledge zu setzen...
Ist sinnvoll, aber nicht notwendig.
-
@jwerlsdf
Würde es nicht genügen, auf Änderung von "Nummer_0.Title" zu reagieren ? -
@paul53 sagte in Lebensmittelwarnung per Telegram verschicken:
Wozu dient die Verzögerung um 3 s ?
War mein erstes größeres JS und das übliche Problem mittels Timeout den Programmablauf zu steuern...
Dann kam async/await hinzu und ich habe es halt drin gelassen.@paul53 sagte in Lebensmittelwarnung per Telegram verschicken:
Ist sinnvoll, aber nicht notwendig.
Ich dachte mich zu erinnern da wäre was mit Blockly und Ack gewesen.
Allerdings war String true schon korrekt, denn es ist tatsächlich string und nicht bool. Hätte vielleicht besser Ja/Nein oä, wählen sollen.@paul53 sagte in Lebensmittelwarnung per Telegram verschicken:
Würde es nicht genügen, auf Änderung von "Nummer_0.Title" zu reagieren ?
Die Frage ging zwar nicht an mich, aber Jein. In 99% der Fälle ja, da es sich um anders lautende Meldungen handelt. Aber es gibt auch den Sonderfall eines Updates. Dann bleibt der Titel gleich und die Uhrzeit ändert sich.
...und jetzt darfst du "Haue" verteilen
-
@SBorg sagte:
Dann bleibt der Titel gleich und die Uhrzeit ändert sich.
Braucht man dann eine Telegramm-Meldung, wenn sich der Titel nicht ändert ? Falls ja, kann man auch auf "wurde aktualisiert" triggern.
@SBorg sagte in Lebensmittelwarnung per Telegram verschicken:
es ist tatsächlich string und nicht bool.
Dann muss das Blockly anders aussehen, denn @jwerlsdf ist offenbar der Ansicht, dass der Datenpunkt vom Typ "boolean" ist.
-
@paul53 said in Lebensmittelwarnung per Telegram verschicken:
Re: Lebensmittelwarnung per Telegram verschicken
Hallo,
ich habe das Skript angepasst://neue Warnung? on(DP+".Nummer_0.Datum", function () { console.log('Neue Warnmeldung vorhanden...'); setTimeout(function() { setState(DP+".neue_Warnung", true, true/*ack*/); }, 3000); });
Doch das brachte keinen Erfolg.
Habe dann diesen blockly-Eintrag nachgebaut und damit geht es (habe einfach die Datenpunkte manuell mal abgeändert)
Werde beobachten ob es so auch in Zukunft gehen wird.
Danke schonmal für eure Hilfe!