NEWS
Node Red und Blockly Scripte
-
@labamba Nun falls das Blockly nun spinnt (was auch immer das bedeutet), weil 2 mal true kommt und es doppelt getriggert wird, dann kannst Du das zwar wieder zurück ändern, aber dann hatte quasi Dein Datenpunkt einen falschen Initialwert, weil wurde geändert ja nur dann triggert wenn false auf true geschaltet wird.
Grundsätzlich triggert Dein Flow ja nun.
Wie gesagt untersuche noch warum die Alexa Node 2 mal triggert, wenn es keinen Unterschied zwischen den beiden Nachrichten gibt , dann muss man halt wieder zeitlich entprellen. Aber letztlich musst Du untersuchen, warum er spinnt. Kannst ja manuell den DP - sprich den Button 2 mal betätigen, ob Du damit das gleiche Verhalten hast und ob es mit einmal drücken besser ist. -
@mickym said in Node Red und Blockly Scripte:
@labamba Nun falls das Blockly nun spinnt (was auch immer das bedeutet)
Das heisst er fährt etwas runter, dreht sich, wieder ein stück hoch und wiederholt das mehrfach.
-
@labamba Nun ich war ja der Meinung, dass das mit Deinem Timer abgefangen wird. Nun wie gesagt - wenn Du es wie ursprünglich auf geändert lässt, dann war entweder der Initialwert nicht in Ordnung, aber man kann den Flow natürlich auch so basteln, dass nur eine Nachricht kommt und grundsätzlich einmal das Gegenteil von dem gesetzt wird, als im Moment gesetzt ist.
Wie gesagt, dann ändern das Blockly halt wieder auf geändert und dann muss halt im Moment der Datenpunkt auf false stehen, bevor Du mit NodeRed auf true setzt.
Wie gesagt kann man alles machen - nur im Moment sieht es für mich so aus, dass sich anfangs nichts getan hat, weil sich der Datenpunkt nicht geändert hat, aber auch nicht mit mehrfachen Triggern umgehen kann, weil sonst das Raffrolo spinnt.
Jedenfalls triggert der NodeRed Flow richtig - nur wenn sich nichts tut und Du das Blockly wie am Anfang umstellst, dann muss sich halt auch der Inhalt des Datenpunktes ändert.
Ich kann Dir zwar einen Flow basteln, der immer das Gegenteil in den Datenpunkt setzt und das zeitlich entkoppelt aber sauber ist das halt alles nicht.
Ich weiß auch nicht, wie die Alexa Node den aktuellen Status ermittelt, vielleicht hast Du dadurch auch eine Endlosschleife.
Wie gesagt im Prinzip funktioniert das Deines Blocklies so, aber das Gesamtkonstrukt oder die Gesamtlogik passt nicht.
-
@mickym said in Node Red und Blockly Scripte:
@labamba Also grundsätzlich ist das alles was ich sage, nicht als Kritik gemeint und wenn ich vermeintliche Verbesserungsvorschläge oder Alternativen vorschlage, habe ich vielleicht all Deinen Erfahrungsschatz nicht berücksichtigt.
Deine ursprüngliche Frage was ja wie Du NodeRed mit den Blocklies verbinden kannst und das habe ich ja am Anfang beantwortet und damit können wir es ja bewenden lassen.
Vielleicht habe ich halt nur ein Verständnisproblem oder keine Erklärung?
Also wenn ich sowas schrieb, wie:
Im Prinzip ist ja für ein Gerät die URL gleich und nur der Prozentwert ist halt anders. Deswegen verstehe ich auch nicht, warum man da zig Buttons macht, anstelle einfach eine Prozentzahl in einen Datenpunkt zu schreiben bzw. auch bei Sprachbefehl halt - stelle auf x %
Dann verstehe ich es halt nicht.
Wie gesagt, Du musst da nichts ändern oder gar als Angriff auf Deine Lösung sehen. Wenn Du zu Deiner Handsteuerung schreibst:
Handsteuerung:
Jedoch habe ich auch ein Tablet oder ein Handy. Hier habe ich mir zur Steuerung Buttons angelegt. Hinter diesen Buttons liegt ein Skript das ausgelöst wird.Funktioniert top seit 1 Jahr!
Die Rückantwort habe ich auch wieder über mqtt als Anzeige zwischen 0-100%.
dann meinte ich ja - ist doch gut, wenn Du aus Gründen der Bedienung hier Button nimmst, aber hätte man hinter diese Buttons nicht einfach Prozentzahlen in einen Datenpunkt schreiben können und das dann auswerten, anstelle für jeden Button in Deiner VIS einen eigenen Datenpunkt zu machen? Gibt ja vielleicht Gründe, die ich nicht verstehe.
Nun was ich auch nicht verstanden habe, wenn Du schreibst:
Allgemein: Für das Skript war es für mich sehr einfach den http Befehl für die Position, auf und ab zu verwenden. Läuft auch sehr zuverlässig!
Jedoch verwende ich grundsätzlich mqtt für die Shellys.
Liegt das generell daran, dass Du keine Kommandos über mqtt an Deine Shellies verschickst. Wie gesagt ist kein Problem wenn Du das über HTTP zu machen.
Über mqtt wäre es halt:
mit stop,close,open über das Topic:
shellies/shellyswitch25-<deviceid>/roller/0/command
bzw.
shellies/shellyswitch25-<deviceid>/roller/0/command/pos
gegangen - aber wie gesagt, es gibt mehrere Wege nach Rom und man kann das auch über http machen, dafür gibt es ja diese API.
So grundsätzlich gibt es für das Problem des Drehwinkels keine fertige Lösung, sondern ist ja gut, wie Du das mit Deinem Skript gelöst hast und ich habe ja Dein Skript nur in Node Red abgebildet (weil es Dich ja interessiert hat - ansonsten kannst Du ja wie gesagt über die Buttons einfach Deine Blocklies triggern, wie ursprünglich geplant).
Im Prinzip ist es - und das kann ich dann zum 2. Teil sagen - völlig egal, ob Du per Hand oder Sprachsteuerung Dein Raffstore steuerst, denn das Script wird ja durch den stop Status getriggert, um dann die Lamellen durch ein zeitliches Fahren in die Gegenrichtung die Lamellen auszurichten. Das habe ich schon verstanden und soweit auch mit dem Flow 1:1 umgesetzt - bis auf die Abprüfung eines Buttons. Das lässt sich, denke ich, auch nicht anders lösen.Ich sehe es ja nicht als Angriff! Finde es sogar toll das du mir helfen willst.
Ich werde mich mal in deine Vorschläge bzgl. Node-RED weiter einarbeiten.
Ich glaube meine Lösung mit dem Auslösen des Scriptes ist nicht gerade perfekt. -
@labamba
Das mit dem Blockly war auch verkehrt - ändere das mal wieder auf geändert zurück. Das war schon richtig. Das ist ja der 2. Teil mit dem state des Shellies der hier triggert und nicht der Button. - Sorry mein Fehler.Wenn das beim ersten Mal nicht funktioniert hat, dann hat das andere Ursachen - und ich glaube auch nicht, dass das was mit NodeRed zu tun hat.
Mach in Dein Blockly ein Debug Baustein um zu sehen, ob das Blockly getriggert wurde:
So wenn das Triggert - dann funktioniert das Zusammenspiel von NodeRed und Blockly. Wenn sich dann nichts tut - ist es aber ein reines Problem Deines Blocklies.
Was stand denn bei Dir da ursprünglich drin, wahr oder geändert? Beim Triggern des Buttons.
-
@mickym said in Node Red und Blockly Scripte:
So ich habe mal dein Node Red Skript eingefügt. Das mit dem Sub-Flow ist richtig gut.
-
@mickym said in Node Red und Blockly Scripte:
@labamba
Das mit dem Blockly war auch verkehrt - ändere das mal wieder auf geändert zurück. Das war schon richtig. Das ist ja der 2. Teil mit dem state des Shellies der hier triggert und nicht der Button. - Sorry mein Fehler.Wenn das beim ersten Mal nicht funktioniert hat, dann hat das andere Ursachen - und ich glaube auch nicht, dass das was mit NodeRed zu tun hat.
Mach in Dein Blockly ein Debug Baustein um zu sehen, ob das Blockly getriggert wurde:
So wenn das Triggert - dann funktioniert das Zusammenspiel von NodeRed und Blockly. Wenn sich dann nichts tut - ist es aber ein reines Problem Deines Blocklies.
Was stand denn bei Dir da ursprünglich drin, wahr oder geändert? Beim Triggern des Buttons.
Wahr ist richtig!
-
@labamba OK, wenn das wahr war - dann war das was ich zu den Blocklies gesagt hatte am Anfang des heutigen Abends gesagt hatte natürlich Käse- Sorry nochmal.
Wie gesagt dann machst einfach noch ein Debug Baustein in das Blockly und siehst ja ob der NodeRed Flow triggert. Wenn sich dann nichts bewegt, dann hast Du halt mit Deinen Blockly Skripts noch irgendein Problem, weil dann wurde das Blockly ja getriggert.
-
Wahrscheinlich ist es besser die Trigger Node in den subflow und nur in den stop Ast aufzunehmen
Aber ohne halt Hardware zur Verfügung zu haben, ist das immer etwas schwierig - sich vorzustellen.
-
@mickym Falls Du übrigens das Ganze wie in Deinem Blockly machen willst, dass das nur ausgeführt wird, wenn ein Button gefdrückt wird - der sich nach 5 s immer selbst auf false stellt, dann machst das halt auch mit einer trigger Node und entweder eine Flow Variablen oder Datenpunkt.
-
@mickym
Die einfache Varainte mit dem auslösen des Skriptes funtkioniert jetzt.
Ehrlich gesagt weiss ich aber auch nicht warum. -
@labamba Na dann ist ja gut - und das Thema gelöst. Wie gesagt - ich denke eher dass auf der Blockly Seite was nicht richtig initialisiert war.
Mach wie ich vorgeschlagen habe direkt am Anfang einen Debug Baustein in Deine Blocklies und dann siehst ob es getriggert wurde oder nicht. Wenn getriggert wurde und dann trotzdem nichts passiert ist es auf jeden Fall auf der Blockly Seite zu suchen.
-
@mickym
Werde es jetzt mal versuchen mit node-red umzusetzen.
Bin gerade dabei deine Vorlage zu verstehen.
Ich verstehe aber noch nicht wie ich den Alexa befehl dort einbinden muss. -
@labamba Nun der Subflow entspricht ja nur dem 2. Teil des Blocklies, da ja als Trigger der state des Shellies dient.
Bei der Alexa Node kommt entweder eine Zahl raus, wenn Du eine Prozentzahl sagst oder auf und zu und setzt es in einen http-Request um.
Das hatte ich ja alles hier beschrieben: https://forum.iobroker.net/topic/51385/node-red-und-blockly-scripte/28
Du musst halt nur den http Node aktivieren.
Und wie gesagt, warum Du es über http und nicht über mqtt steuerst, weiss ich immer noch nicht.
-
Und wie gesagt, warum Du es über http und nicht über mqtt steuerst, weiss ich immer noch nicht.
Ganz einfach. Ich wusste nicht wie ich mqtt in das script bekomme. ..und mit http hat es super funktioniert.
-
@labamba sagte in Node Red und Blockly Scripte:
Und wie gesagt, warum Du es über http und nicht über mqtt steuerst, weiss ich immer noch nicht.
Ganz einfach. Ich wusste nicht wie ich mqtt in das script bekomme. ..und mit http hat es super funktioniert.
OK ich dachte, Du hast den mqtt-Adapter installiert, aber wahrscheinlich nutzt Du den Shelly Adapter mit dem mqtt Protokoll. Also vergiß was ich sagte. Ich nutze den Shelly Adapter nicht.
-
@mickym said in Node Red und Blockly Scripte:
@labamba sagte in Node Red und Blockly Scripte:
Und wie gesagt, warum Du es über http und nicht über mqtt steuerst, weiss ich immer noch nicht.
Ganz einfach. Ich wusste nicht wie ich mqtt in das script bekomme. ..und mit http hat es super funktioniert.
OK ich dachte, Du hast den mqtt-Adapter installiert, aber wahrscheinlich nutzt Du den Shelly Adapter mit dem mqtt Protokoll. Also vergiß was ich sagte. Ich nutze den Shelly Adapter nicht.
Genau ich nutze den Shelly Adapter mit dem mqtt Protokoll.
-
@labamba Wie gesagt um HTTP Kommandos aus NR zu senden, nutzt Du die http Request Node - wie gesagt die Flows sind unten beschrieben,
-
@mickym said in Node Red und Blockly Scripte:
@labamba Wie gesagt um HTTP Kommandos aus NR zu senden, nutzt Du die http Request Node - wie gesagt die Flows sind unten beschrieben,
Unten beschrieben?
-
@labamba sagte in Node Red und Blockly Scripte:
@mickym said in Node Red und Blockly Scripte:
@labamba Wie gesagt um HTTP Kommandos aus NR zu senden, nutzt Du die http Request Node - wie gesagt die Flows sind unten beschrieben,
Unten beschrieben?
https://forum.iobroker.net/topic/51385/node-red-und-blockly-scripte/34?_=1642255680958