NEWS
Flow für Auslösung auf Änderung, nicht auf Aktualisierung
-
Hallo zusammen,
Leider habe ich was JS Programmierung angeht nicht viel Ahnung (habe bis jetzt nur unter Bascom / Basic IC's Programmiert), deswegen bitte ich um Hilfe aus der Runde
folgendes Beispiel Szenario habe ich:
Ich möchte die Außentemperatur auslesen und bei Unterschreitung von +4°c eine Benachrichtigung (Frostwarnung) via Pushover bekommen.
Soweit habe ich das auch umsetzen können.
Mein Problem ist folgendes:
Alle x Minuten wird der Status durch ioBroker Aktualisiert.
Deswegen bekomme ich auch alle x Minuten eine Benachrichtigung via Pushover.
Beholfen habe ich mir bis jetzt mit dem http://flows.nodered.org/flow/9410e4cebcc4b68fae73.
Dort habe ich nur die Zeit eingegeben wie lange er alle eingehenden Meldungen ignorieren soll, toll ist diese Umsetzung mangels Kenntnisse leider nicht
Was ich umsetzen möchte ist, dass etwas nur bei Änderung (True auf False etc.) ausgelöst wird, nicht auf Aktualisierung.
-
Hallo Nippy,
Ich bin auch Änfänger sehe es aber so (nicht verbindlich
da ebenfalls Anfänger)
ich habe das über eine Java Skript gelöst. Aber in Function bei Node Red schreibst du ja auch ein Java Skript. Du kann ja mein Skript aber Basisgerüst nehmen und das in der Funktion verwenden.
Sonst poste doch bitte den Flow mit Menu (3 horizontale Balken oben rechts) / Export / Clipboard. Dann kan man sich den runterkopieren und berichtigen und dir wieder zurücksenden.
createState('javascript.0.Temperatur.Temperatur_Ostseite'); createState('javascript.0.Temperatur.Temperatur_Ostseite_Frost'); function Temp_Ostseite(obj) { // oder ist das hier dann (obj)anstatt(level)? var Temperatur = getState("hm-rpc.0.KEQ0121727.1.TEMPERATURE").val; if (Temperatur > 0) { setState('javascript.0.Temperatur.Temperatur_Ostseite', Temperatur); setState('javascript.0.Temperatur.Temperatur_Ostseite_Frost', true); log("---> Ostseite hat es keinen Frost bei: " + Temperatur +" °C", "info"); } else { setState('javascript.0.Temperatur.Temperatur_Ostseite', Temperatur); setState('javascript.0.Temperatur.Temperatur_Ostseite_Frost', false); log("---> Ostseite hat es Frost bei: " + Temperatur +" °C", "info"); sendTo("email", { from: "test@test.com", to: "friedhelm.kuehnle@hoerauf.com", subject: "Eisgefahr", text: ("Gefahr von Eis bei " + Temperatur +" °C") }); } } on("hm-rpc.0.KEQ0121727.1.TEMPERATURE"/*Aussensensor Ost.TEMPERATURE*/, function() { //oder!! soll entweder ausgelöst werden beihm-rpc.0.KEQ0040908.1.TEMPERATURE log("===>Ausgelöst durch Temperaturänderung!"); Temp_Ostseite(); }); schedule("*/10 * * * *", function () { //oder!! soll entweder ausgelöst werden alle 10 Minuten log("===>Will be triggered every 10 minutes!"); Temp_Ostseite(); });
-
Hallo Freddy,
vielen Dank für deinen Codeschnipsel.
Ich werde die nächsten Tage versuchen deinen Code umzubasteln.
Halte Dich auf dem laufenden..
Danke nochmals, stehe jetzt wenigstens nicht mehr ganz im Dunkeln
-
Hey All,
ich schaue mir auch gerade die Skriptingmöglichkeiten an.
Ich komme aktuell von ScriptGUI von ccu.io und würde jetzt bei node-red de ganzen Trigger-Möglichkeiten sehr vermissen … und "Auslösen auf Änderung" ist da der natürlich interessanteste ... EIgentlich sollte man das als Feature in die "iobroker"-Input-Node einbauen ... Oder ?!
-
Hi,
Die einfachste Lösung ist die Verwendung des rbe Nodes.
Diesen kann man so konfigurieren, dass er nur dann auslöst, wenn der Wert sich geändert hat oder eine Mindestabweichung hat.
http://flows.nodered.org/node/node-red-node-rbe
Wenn man auf eine Mindestabweichung testen will muss msg.payload aber zuerst von string in einen numerischen Wert konvertiert werden, da der ioBroker in Node immer strings liefert (z.b. in einem Function Node).
Gruß
Markus
-
cool … das würde schonmal viel helfen. Danke!!
Ich teste das mal heute Abend ...
Ich hatte vorhin im Github vom node-red Adapter mal ein Issue aufgemacht das als "Standardfeature" vllt so einzubauen das es den Triggermöglichkeiten von CCUio entspricht - also auch größer, kleiner, größer-gleich, kleiner-gleich, gleich, ungleich ... Das wäre halt echt super weil man sich dann Nodes im Prozess spart.
Oder kennst Du vllt andere Nodes die das könnten?
Gibts eigentlich "Typ-Konvertier"-Nodes? Hatte mal gesucht aber nix gefunden ...
Wäre auch interessant für so einige "true"/"false" State Werte ...
-
Gibts eigentlich "Typ-Konvertier"-Nodes? Hatte mal gesucht aber nix gefunden …
Wäre auch interessant für so einige "true"/"false" State Werte ... `
Du muss nicht die Typen zu konvertieren, die sind alle "string" in node-red -
Super!
ich war schon langsam am verzweifeln..
Danke nobody 8-)
Das node-rbe war genau das, was ich gesucht habe.
Vielen Dank nochmals
-
Du muss nicht die Typen zu konvertieren, die sind alle "string" in node-red `
Das dachte ich mir. Die Idee war eher die in Zahlen konvertieren zu können um mit diesen Datentypen dann weiterarbeiten zu können … oder ist das dann nur sinnvoll in eigenem Functions möglich und das Ergebnis ist dann wieder ein String?
-
Ich hab grad das folgende erfahren: In node-red 0.13 wird die Switch-Node wohl auch Vergleiche auf Basis des letzten Wertes erlauben