NEWS
Flow Optimieren
-
Gut, mein Ideengang war ja schonmal richtig, wusste nur nicht wie ich ne Variable Speicher.
Es funktioniert auch erstmal so wie es soll
ob umständlich oder nicht ^^immerhin gab es eine Lösung;-)
Danke dir dafür schonmal
EDIT:
mist jetzt kommt natürlich das Problem
Wenn ich am Switch auf "true" gehe und später das Licht per Handy ausmache.. weis der Lichtschalter das ja mal wieder nicht und würd beim nächsten einschalten "false" senden
arghh
-
Kannst es eigentlich so lassen. Du musst nur aufpassen, dass deine Flow-variablen eindeutig bleiben. Will sagen, kein anderes node auf dem flow sollte die für andere Zwecke verwenden! Flow-Variablen sind ja auf dem kompletten flow global.
Man kann dafür auch einen Subflow machen, dann ist der flow-scope auf den Subflow beschränkt.
-
mist jetzt kommt natürlich das Problem
Wenn ich am Switch auf "true" gehe und später das Licht per Handy ausmache.. weis der Lichtschalter das ja mal wieder nicht und würd beim nächsten einschalten "false" senden
arghh `
Normalerweise wandelt man bei solchen Sachen einen Switch zum Button. Man wertet also nicht mehr aus, ob der true oder false gesendet hat, sondern nur, das er gesendet hat.
Dann ist es egal. Schalten ändert dann immer den Status der Lampe. Egal woher der Schaltimpuls kommt.
Aber wie gesagt, ich kenn die Hue Dinger nicht und hab keine Ahnung, ob man das da so machen könnte.
-
Das ist richtig, nur wenn ich über 4 Geräten schalte möchte ich ja am Ende wissen ob es true oder false ist oder irre ich mich da ?
Ich wollte jetzt vor dem HomeKit reingehen um von da aus meinen Flow zu steuern. Damit am iPhone auch der tatsächliche status steht.
Das klappt ja soweit auch gut. Problem ist halt wenn ich am iPhone sage "Lampe aus" das der Taster immer noch denkt das die Lampe an ist und beim 1. Befehl mir ein "false" sendet.
Schon etwas blöd das man am ende für alles ein Response braucht
Was wäre denn wenn ich den UI schalter der als letztes im Glied ist abfrage ? ob true oder false ?
-
Also könnte ich das Change ersetzen durch etwas anders und setze true oder false im Gegensatz zu dem UI Schalter, denn der sendet ja auch immer nach dem schalten den Status.
-
Also könnte ich das Change ersetzen durch etwas anders und setze true oder false im Gegensatz zu dem UI Schalter, denn der sendet ja auch immer nach dem schalten den Status. `
Das sollte kein Problem sein. Dem 2. change (1002) ist ja schnurz ob im eingehen Payload true oder false drinsteht. Es negiert einfach nur flow.B1002 und kopiert das dann in den payload. Da kannst du natürlich deine eigene Logik zwischenschalten.
Erstmal würde ich genau festlegen, welche Schalter/Taster (inkl. Alexa) gibt es für die bestimmte Lampe und wie soll die auf die Schalter reagieren.
-
Echt schade, das jeder Entwickler verschiedene Argumente benutzt.. Alexa hat "Brightness", Hue hat "brightness", Homekit hat wieder nen anders Kommando
true, false, ON: 1, ON: 2, On:true, On:false…..........
Das alles in eine Reihe geschaltet zu bekommen entwickelt sich zu einem Mysterium mit vielen Switches und Changes
Und nur weil ich gerne die Farbe und Helligkeit dazu schalten wollte.
Bin schon kurz davor alles einzelne zu schalten und jeweils nen Response zu senden, das wird so mega Aufwendig.. hatte mir mit Node-Red eigentlich ne Vereinfachung gewünscht.
Falls du noch einen Tipp dazu hättest wie ich alles mit einander verknüpfen kann gerne her damit. ansonsten ist das Projekt "Helligkeit und Farbe" gestorben
-
> Falls du noch einen Tipp…
Ich glaub, ich kann da nicht mehr viel Erhellendes beitragen ;-( Vlt. solltest du dein spezielles HUE-Anliegen nochmal separat vortragen. Evtl. kann ja ein anderer HUE Nutzer weiterhelfen.Mir ist ehrlich gesagt das ganze Konzept diesbezüglich noch unklar.
Ich hab zwar auch ne ganze Reihe Zigbee Geräte am laufen, aber die steuere ich mit ioBroker und einem CC2231 Stick.
Generell sollte es ja etwa so laufen:
Du hast pro Aktor eine zentrale Instanz, die die aktuellen Werte exakt wiederspiegeln (Ist ja bei Zigbee durch die Rückmeldung eigentlich gewährleistet).
In ioB sind das dann die states des Aktors (An/Aus, Helligkeit usw.)
Ich schalte so eine Lampe mit den verschiedensten Aktoren (Programme (NR/JS), Alexa, mechanische Schalter (Zigbee oder Fremdsysteme) usw.)
Wenn ich die Lampe schalte, frage ich die zentrale Instanz nach dem Istwert und ändere die dann entsprechend. Programmen könne da auch automatisch reagieren, wenn sich der Zustand ändert.
Alle UIs bekommen den dann automatisch mitgeteilt (direkt oder per Abfrage), so dass sie zumindest vor einem Schaltvorgang den Istzustand kennen.
Ein Problem taucht da allenfalls bei mechanischen Schaltern (Kippschaltern) auf, wenn deren Kippstellung mit einem Zustand (An/Aus) gekoppelt sind.
Hier mal ein Bild von einer Testsite wo man das erkennt.
1 - sind nodes, die den aktuellen Status der Steckdosen automatisch aus ioB bekommen.
2 - sind die switches auf der Site. Die repräsentieren einmal den aktuellen Zustand (Eingang) und wenn sie (von Hand) geschaltet werden geben sie den Schaltbefehl an den ioB-State weiter (3)
Damit ist eigentlich immer alles aktuell. Egal ob (und von wo) sonst noch ein Schaltbefehl kommt, er wird durch die Nodes (1) erkannt und weitergereicht.
Aber ich fürchte fast, die prinzipielle Arbeitsweise ist dir längst bekannt und wir reden etwas aneinander vorbei
deshalb ziehe ich mich an dieser Stelle mal zurück.
-
Kannste mir nochmal auf die Sprünge helfen ?
habe jetzt versucht jedes Endgerät einzelnd anzugeben und Response direkt zu jedem Schalter zu legen.
Wenn ich jetzt von Alexa, Siri oder UI den Schalter stelle habe ich nen Dauerloop (An/AUS)
den ich mir nicht erklären kann..
! ````
[
{
"id": "a0c0d924.b3d988",
"type": "ioBroker out",
"z": "2bb0004a.cbc48",
"name": "SonOff_C POWER",
"topic": "sonoff.0.SonOff_C.POWER",
"ack": "false",
"autoCreate": "false",
"x": 1170,
"y": 270,
"wires": []
},
{
"id": "428031e2.f5977",
"type": "link in",
"z": "2bb0004a.cbc48",
"name": "O_Sonnoff_C",
"links": [
"8cfbf04a.7469e",
"388cdce9.cea744",
"8aa14f9a.3ce9b"
],
"x": 1025,
"y": 270,
"wires": [
[
"880915ca.448818",
"a0c0d924.b3d988"
]
]
},
{
"id": "388cdce9.cea744",
"type": "link out",
"z": "2bb0004a.cbc48",
"name": "",
"links": [
"428031e2.f5977"
],
"x": 955,
"y": 270,
"wires": []
},
{
"id": "bb4df350.ce077",
"type": "ioBroker in",
"z": "2bb0004a.cbc48",
"name": "SonOff_C.POWER",
"topic": "sonoff.0.SonOff_C.POWER",
"payloadType": "value",
"onlyack": "",
"func": "all",
"gap": "",
"x": 490,
"y": 270,
"wires": [
[
"e15f2113.366d5",
"c3494d91.0eabc"
]
]
},
{
"id": "e15f2113.366d5",
"type": "link out",
"z": "2bb0004a.cbc48",
"name": "I_Sonnoff_C",
"links": [
"a88ed9b7.0becd8",
"53976e2d.e28b1"
],
"x": 665,
"y": 270,
"wires": []
},
{
"id": "a88ed9b7.0becd8",
"type": "link in",
"z": "2bb0004a.cbc48",
"name": "",
"links": [
"e15f2113.366d5"
],
"x": 735,
"y": 270,
"wires": [
[
"501e6dc.e513994"
]
]
},
{
"id": "501e6dc.e513994",
"type": "ui_switch",
"z": "2bb0004a.cbc48",
"name": "",
"label": "Bett",
"tooltip": "",
"group": "77b38fe6.6da53",
"order": 1,
"width": 0,
"height": 0,
"passthru": true,
"decouple": "false",
"topic": "",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "",
"oncolor": "",
"offvalue": "false",
"offvalueType": "bool",
"officon": "",
"offcolor": "",
"x": 850,
"y": 270,
"wires": [
[
"388cdce9.cea744"
]
]
},
{
"id": "c3494d91.0eabc",
"type": "debug",
"z": "2bb0004a.cbc48",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 670,
"y": 370,
"wires": []
},
{
"id": "880915ca.448818",
"type": "debug",
"z": "2bb0004a.cbc48",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 1190,
"y": 480,
"wires": []
},
{
"id": "77b38fe6.6da53",
"type": "ui_group",
"z": "",
"name": "Schlafzimmer",
"tab": "69efe83c.6a7968",
"order": 4,
"disp": true,
"width": "4",
"collapse": false
},
{
"id": "69efe83c.6a7968",
"type": "ui_tab",
"z": "",
"name": "Wohnung",
"icon": "dashboard"
}
] -
Da dürfte dein Dauer-loop sein.
Mit diesem Haken sagst du, dass dass Signal am Eingang zum Ausgang durchgereicht wird.
Wenn nun ein Signal am State wechselt, landet es am switch-eingang wund wird zum switch-ausgang weitergereicht. Da hängt wiederum dein state dran und schon bist du im Loop;-)
Dieser Haken macht nur Sinn, wenn Eingangs- und Ausgabe-state unterschiedlich sind.
-
Verdammt, ich wusste das es einen Haken gibt
Danke jetzt läuft es Perfekt deine Tipps sind goldig
Hier mein Aktueller Flow, jetzt kann ich diese noch aufteilen in mehrere Flows und habe alles aktuell
-
Schade, dass es keinen Preis für Schönheit gibt ; den hättest du sicher :lol:
Hut Ab !
-
HAHA jetzt wollen wir aber mal nicht übertreiben
Ich gebe mir mühe das ich auch in 2 Jahren noch weiß was ich da getan habe
-
PS. einen Hinweis noch.
Ich geh mal davon aus, dass du ganz genau weist, wer da auf deinem Flow mit wem connected. Um das auch nach Wochen noch zu wissen, setze ich gerne comment-nodes ein.
Ich habe meinen ersten Post diesbezüglich nochmal ergänzt.
-
Japp genau, das mache ich dann kurz vorm Zerteilen in die einzelnen Flows.. jetzt für alles auf einmal war es einfacher in einem Flow.
Ich muss die ganzen Link`s auch noch beschriften und dann kommen später die Comments