Open vigeland opened 3 years ago
Die Logik, was passieren soll, musst du dir in Node-Red selber bauen. Vom Schalter kommt kommt ja nur "jemand hat mich gedrückt". Ein Beispiel hier: https://github.com/Sineos/redmatic-flow-misc/tree/master/CanvasBlind
Habe ich ja. Ich schicke dem CCU-value eine 1 ( Kanal 4 ), sehe ich in dem Debug Node der parallel zum ccu-value steht. Nur mir scheint der schickt scheinbar nichts an die CCU. Vermutung er glaubt das der FROLL schon auf 1 ist, da der echte Wert 8% ja im Kanal 3 steht. ( Es mit Homematic Manager sofort, wenn ich ein Setvalue 1 auf Kanal 4 sende ) Das gleiche passiert auch wenn ich übers Dashboard die 1 an die CCU-Value sende, keine Reaktion des Rollos.
Das ganz geht auch, Dash, HMIP-WRC2 usw. Nur sobald man per Hand eingreift und dann Kanal 4 und 3 nicht mehr synchron sind. Dann geht es schief.
a) Per Programm Ziel 100 % (Kanal) Ok. b) per Hand auf 50 % am Gerät. OK. c) per Programm Ziel 100 % . Rollo regt sich nicht.
Versuchs mal mit der rpc-event-node
rpc-event-node ist die falsche Richtung, ich will ja eine Postion anfahren. Der Node hat keinen Eingang.
Stell doch mal deinen Flow hier ein
Anbei der Flow. ( Nix kompliziertes )
Ablauf:
Taste Lang .z.b. Oben (HMIP-WRC2) unten drücken ( Könnte auch dashnode sein ). Rollo per Hand am Schalter vom Froll drücken, Rollo hält irgendwo.
Nun wieder Taste Lang .z.b. Oben (HMIP-WRC2) unten drücken, keine Reaktion. Der Debug Node zeigt an das, das Rollo angesteuert werde soll.
Sollte eigentlich so gehen. Hast du mal überprüft welche Werte NR für ACTIVITY_STATE, LEVEL und LEVEL_STATUS "sieht", z.B. über eine rpc-event-node?
Nach dem ich Stop am Froll gedrückt habe. Kanal 4: ( Steuerkanal im Node ) Level 0 (Zielwert über den Node der Taster ) Level_Status = Normal ACTIVITY_STATE = stable
Kanal 3: ( im Flow nicht verwendet ) Level 0,3 Entspricht dem Realen Status nach Stop am Froll Level_Status = Normal ACTIVITY_STATE = stable
Um den Froll zu Nutzen braucht man einen Kombi Node mit Kanal 3 und 4. Sonst wird das nichts vernünftiges mit dem Froll, das ist meine Meinung.
Kanal 4 als setzten und Kanal 3 als Status, alles andere ist Stückwerk.
Schon was rausbekommen?
Das ist das Problem (value !== currentValue) , hier wird geprüft ob der Value gleich dem bekannten Status ist. Beim Froll geht es nicht, sobald außerhalb von NodeRed agiert wird. (CCU, per Hand, direkt Verknüpfung ) Also im Grunde alle Geräte die Ziel und Ist-Wert getrennt verwalten.
Ob Feature oder Bug mal dahingestellt. Aber Queue ( wichtiges Feature ) und Froll kann nicht funktionieren. Zweieinhalb Lösungsansätze: a) Ein Kombinode für die const currentValue = ... ( 2*datapoint ) b.1) Workaround value !== currentValue raus b.2) ein Flag das nicht value !== currentValue geprüft wird. ( im Grunde Force = true ) Für Press machst du es ja auch schon, nur das man es per Hand Steuern kann. b.3) Das man currentValue von Extern setzten kann, ohne das gesendet wird. Oder ein Mix aus dem,. ..... setValueQueued(iface, address, datapoint, value, burst, force) { return new Promise((resolve, reject) => { this.setValueQueue = this.setValueQueue.filter(element => { return element.iface !== iface || element.address !== address || element.datapoint !== datapoint; }); const datapointName = iface + '.' + address + '.' + datapoint; const currentValue = this.values[datapointName] && this.values[datapointName].value; const cache = this.values[datapointName] && this.values[datapointName].cache; if (force || (value !== currentValue) || cache || datapoint.startsWith('PRESS')) { ...
Ist das nicht grundsätzlich falsch ? const currentValue = this.values[datapointName] && this.values[datapointName].value; Wird es nicht immer true oder false ( 0/1 ) ?
Ich hab nur HM-LC-Bl1PBU-FM und bei denen funktioniert die heutige Logik korrekt. LEVEL gibt bei mir den jeweils korrekten momentanen Wert aus
Es geht um Froll und um Geräte die 2 Kanäle nutzen. Kanal 3 für den Status und Kanal 4 für das setzten des Levels. Deiner hat nur einen Kanal für beides, da geht es.
siehe https://homematic-forum.de/forum/viewtopic.php?f=77&t=52037&sid=f08dcb93742e44e91d2a25e0e091ffce
Dort haben Sie es mit einen Read und Write Kanal gelöst. Vorschlag a) https://forum.iobroker.net/topic/36902/gelöst-hmip-froll-kanal-3-4-level-in-vis
Wenn das so funktioniert, was spricht dann dagegen, Chan 3 für etwaige Stati zu benutzen und 4 fürs Steuern?
Mich beschleicht das Gefühl, was du nicht das Problem verstehst oder nicht wirklich gelesen hast.
Da der Node über Kanal 4 ( level setzten ) eine 1 geschickt hat und man per Hand Stop gedrückt hat, steht im node immer noch die 1. Obwohl man bei 0,5 Stop gedrückt hat. Schickt man nun wieder eine 1, glaubt der Node er müsse nichts tun.
Ah, k. Dann schreib den realen Wert aus Chan 3 halt zurück auf 4: Den Übergang von WORKING true --> false per rpc event abfangen und den Aktor dann quasi nochmals auf den Wert fahren lassen, den er laut Chan 3 sowieso schon hat.
Geht nicht wirklich, siehe den oben verlinkten Artikel. https://homematic-forum.de/forum/viewtopic.php?f=58&t=51289
habe ich alles durch, für den Froll / Broll braucht es eine Anpassung.
Wie bekommt man den Froll richtig in den Griff?
Beispiel: Ich drücke auf HMIP-WRC2, der sendet Press was in NodeRed ankommt. Dann sendet Node Red ein 1 an den Froll ( Kanal 4 ). Rollo fährt. OK.
Nun fahre ich den Froll per Hand am Schalter auf z.b. 8 % ( Kanal 3 steht auf 8 % , 4 Weiter z.b. auf 100 % ) Drücke ich jetzt auf meine HMIP-WRC2 passiert mit ( ccu-value ) nichts mehr. Das Rollo bleibt wie es ist stehen. Am Funk kann es nicht liegen, mit dem Homematic Manager reagiert das Rollo sofort auf Kanal 4. Über den Debug Node kann ich sehen das die 1 im ccu-value node ankommt.
Im Node habe ich nur "Queue Commands" an. Es gibt keine Direktverknüpfung oder Programme in der CCU.
Danke für die Unterstützung.