Guten Tag zusammen,
ich bin noch recht neu mit Redmatic unterwegs, deswegen ist es für euch wahrscheinlich einfach - ich steh aber wie der Ochse vor dem Berg.
Ich möchte gerne folgende Function-Node einbauen:
Wenn: Taster:2 = true
Und: Lampe1.on = true
Und Lampe2.on = true
Leider finde ich nicht so richtig den Anfang. Könnt ihr mir vielleicht einen Tipp geben?
Beste Grüße,
Alexander
Anmerkung: Es geht um Lampen, die per Huemagic angesprochen werden, weswegen der CCU Switch nicht klappt. Und ich hätte es gerne in einer Node, wenn es mal um mehrere Lampen geht
Hue-Lampe anhand aktuellem State ein/ausschalten [gelöst]
Moderator: Co-Administratoren
-
- Beiträge: 295
- Registriert: 12.07.2017, 21:08
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 14 Mal
Re: Frage zu Funktion mit If
Schau mal hier:
https://nodered.org/docs/user-guide/writing-functions
Da habe ich gelernt, wie Funktionen mit if else bei Redmatic funktionieren. Eigentlich ganz einfach, wenn man die Syntax kennt
https://nodered.org/docs/user-guide/writing-functions
Da habe ich gelernt, wie Funktionen mit if else bei Redmatic funktionieren. Eigentlich ganz einfach, wenn man die Syntax kennt
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
-
- Beiträge: 460
- Registriert: 06.01.2018, 12:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 57 Mal
- Danksagung erhalten: 39 Mal
Re: Frage zu Funktion mit If
In RedMatic macht man das am Besten mit einem Flow und nicht mit einer Function node:
Trigger: Taster:2 (Beispielsweise über die Value node oder rpc event) --> Switch Node Lampe1.on = true --> Switch Node Lampe2.on = true --> Ergebnis
Für den Function node ist die Syntax einfaches JavaScript. Da die Nachrichten in unterschiedlicher Reihenfolge eintreffen muss man da die einzelnen Stati (Lampe1, lampe2, ...) ablegen. Das kann man über die Contexte (context, flow, global) machen. Für die CCU Geräte/Kanäle kann man einstellen, das automatisch alle in einem Context abgelegt werden.
Beispielsweise kann das wie folgt aussehen:
Aber das muss auf den konkreten Fall natürlich angepasst werden.
Gruß
Trigger: Taster:2 (Beispielsweise über die Value node oder rpc event) --> Switch Node Lampe1.on = true --> Switch Node Lampe2.on = true --> Ergebnis
Für den Function node ist die Syntax einfaches JavaScript. Da die Nachrichten in unterschiedlicher Reihenfolge eintreffen muss man da die einzelnen Stati (Lampe1, lampe2, ...) ablegen. Das kann man über die Contexte (context, flow, global) machen. Für die CCU Geräte/Kanäle kann man einstellen, das automatisch alle in einem Context abgelegt werden.
Beispielsweise kann das wie folgt aussehen:
Code: Alles auswählen
let stateK1 = global.get('ccu-localhost.values["HmIP-RF.001E1AF0815E5A:1.STATE"].value', 'file'); // K1
let stateK2 = global.get('ccu-localhost.values["HmIP-RF.001E1AF0815E5A:2.STATE"].value', 'file'); // K2
if (stateK1 === true && stateK2 === true) {
// mache was
}
Gruß
Re: Hue-Lampe anhand aktuellem State ein/ausschalten
Danke für die Antworten! Ich habe auch den Betreff nochmal geändert, damit er aussagekräftiger ist und vielleicht jemand anderem auch hilft.
Eine Abfrage mittels CCU-Switch oder RPC Node hat nicht funktioniert, da ich die Lampen über Huemagic eingebunden habe.
Mit viel probieren, Zeit und Frust habe ich nun eine Lösung gefunden die ich hier kurz vorstellen wollte. Vielleicht fällt jemandem auch noch ein Verbesserungsvorschlag ein:
Der Payload wird auf "lights" gesetzt, und in der Funktion fetch steht nur:
um alle Lampen und deren Status von der Hue-Bridge als Array abzurufen.
Der Zauber passiert dann in der Funktion "Status abfragen"
Wenn alle Lampen an sind (true), dann wird ein false ausgegeben um diese auszuschalten.
Ist mindestens eine Lampe bereits aus wird ein true gesendet um alle einzuschalten.
Wie gesagt, ist vielleicht von hinten durch die Brust ins Auge, klappt aber. Ich arbeite jetzt erst seit wenigen Tagen mit Nore-Red bzw. Redmatic und würde mich über Verbesserungsvorschläge freuen!
Beste Grüße aus NRW,
Alexander
Eine Abfrage mittels CCU-Switch oder RPC Node hat nicht funktioniert, da ich die Lampen über Huemagic eingebunden habe.
Mit viel probieren, Zeit und Frust habe ich nun eine Lösung gefunden die ich hier kurz vorstellen wollte. Vielleicht fällt jemandem auch noch ein Verbesserungsvorschlag ein:
Der Payload wird auf "lights" gesetzt, und in der Funktion fetch steht nur:
Code: Alles auswählen
return { payload: { fetch: msg.payload}};
Der Zauber passiert dann in der Funktion "Status abfragen"
Code: Alles auswählen
var hinten = msg.lights[0].state.attributes.on;
var mitte = msg.lights[1].state.attributes.on;
var vorne = msg.lights[2].state.attributes.on;
if ((hinten == true ) && (mitte == true) && (vorne == true)) {
msg.payload = false;
} else {
msg.payload = true;
}
return msg;
Ist mindestens eine Lampe bereits aus wird ein true gesendet um alle einzuschalten.
Wie gesagt, ist vielleicht von hinten durch die Brust ins Auge, klappt aber. Ich arbeite jetzt erst seit wenigen Tagen mit Nore-Red bzw. Redmatic und würde mich über Verbesserungsvorschläge freuen!
Beste Grüße aus NRW,
Alexander
-
- Beiträge: 522
- Registriert: 07.01.2017, 16:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 66 Mal
Re: Hue-Lampe anhand aktuellem State ein/ausschalten
Hm, wirklich recht kompliziert. Warum packst du dir nicht alle Lampen im Flur in eine Gruppe und steuerst darüber?
Wenn du den node Hue Gruppe mit payload: "Status" ansteuerst, dann bekommst du sowas raus:
Wenn du den node Hue Gruppe mit payload: "Status" ansteuerst, dann bekommst du sowas raus:
Code: Alles auswählen
"on":true,
"allOn":true,
"anyOn":true,
...
Re: Hue-Lampe anhand aktuellem State ein/ausschalten [gelöst]
Wow, das ist natürlich noch viel einfacher! Vielen Dank für den Hinweis. Werde ich mir auf jeden Fall anschauen und etwas mit tüfteln