Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FROLL / Nodered Problem ( Cache geht nicht mit allen Geräten die 2 Kanäle für Soll / Ist haben und per Hand bedient werden ) #151

Open
vigeland opened this issue Apr 2, 2021 · 17 comments

Comments

@vigeland
Copy link

vigeland commented Apr 2, 2021

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.

@Sineos
Copy link
Contributor

Sineos commented Apr 2, 2021

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

@vigeland
Copy link
Author

vigeland commented Apr 2, 2021

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.

@Sineos
Copy link
Contributor

Sineos commented Apr 2, 2021

Versuchs mal mit der rpc-event-node

@vigeland
Copy link
Author

vigeland commented Apr 4, 2021

rpc-event-node ist die falsche Richtung, ich will ja eine Postion anfahren.
Der Node hat keinen Eingang.

@Sineos
Copy link
Contributor

Sineos commented Apr 4, 2021

Stell doch mal deinen Flow hier ein

@vigeland
Copy link
Author

vigeland commented Apr 5, 2021

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.

image
flows-2.json.zip

@Sineos
Copy link
Contributor

Sineos commented Apr 5, 2021

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?

@vigeland
Copy link
Author

vigeland commented Apr 7, 2021

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.

@vigeland
Copy link
Author

Schon was rausbekommen?

@vigeland
Copy link
Author

vigeland commented Apr 14, 2021

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_')) {
...

@vigeland vigeland changed the title FROLL / Nodered Problem FROLL / Nodered Problem ( Cache geht nicht mit allen Geräten die 2 Kanäle für Soll / Ist haben und per Hand bedient werden ) Apr 14, 2021
@vigeland
Copy link
Author

Ist das nicht grundsätzlich falsch ?
const currentValue = this.values[datapointName] && this.values[datapointName].value;
Wird es nicht immer true oder false ( 0/1 ) ?

@Sineos
Copy link
Contributor

Sineos commented Apr 14, 2021

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

@vigeland
Copy link
Author

vigeland commented Apr 14, 2021

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

@Sineos
Copy link
Contributor

Sineos commented Apr 14, 2021

Wenn das so funktioniert, was spricht dann dagegen, Chan 3 für etwaige Stati zu benutzen und 4 fürs Steuern?

@vigeland
Copy link
Author

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.

@Sineos
Copy link
Contributor

Sineos commented Apr 14, 2021

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.

@vigeland
Copy link
Author

vigeland commented Apr 14, 2021

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants