NEWS
[gelöst] Umwandlung von Objekt in String
-
@claus1985-0 Wenn Brightness gesetzt ist - wird doch ON im Flow ignoriert oder werden da 2 Nachrichten gesendet? Sprich wenn im Objekt Brightness und On gesetzt ist, wird doch ignoriert. Ich verstehe es nicht - da kommt keine 100 hinter her.
-
Er sendet da direkt nacheinander On und 100 bzw. On und 73 (siehe Anhang).
Das Ergebnis ist zwar gleichzeitig aber für ihn sind es zwei einzelne Nachrichten. -
@claus1985-0 Na ganz habe ich es noch nicht verstanden:
Also egal ob Du einschaltest oder dimmst - es kommt immer
eine Nachricht mit
- ON
und - Brightness
Das heißt die Brightness kommt als 2. und überschreibt immer was davor gesetzt wurde, nur OFF schickt keine Nachricht mehr hinterher?
- ON
-
@mickym Ist etwas seltsam was Homekit da schickt. Folgendes:
Wenn ich die Lampe einschalte (also einfach an) kommt ON = true und Brightness = 100.
Wenn ich die Lampe ausschalte kommt nur ON = False
Wenn ich die Lampe mit 73% einschalte (vorher aus) dann kommt ON = true und Brightness = 73
Wenn ich die Lampe von 73% auf 80% ändere kommt nur Brightness = 80Rein von der Perspektive aus müsste Deine Logik funktionieren denn Du fängst ja vorher das Brightness ab.
Es scheint aber so zu sein, dass obwohl der Zeitstempel der Nachrichten gleich ist, sie im Hintergrund leicht
versetzt kommen. Dadurch greift es dann nicht. -
@claus1985-0 Ok das letzte hilft - im Prinzip hat das Teil im Hinterkopf ob die Lampe ein- oder ausgeschaltet ist. Man muss halt nur wissen, dass bei ON halt Brightness folgt, oder nur Brightness - Off wird halt immer 0.
-
@mickym Hi, bei der Abfrage payload.Brithness ist nicht Null (switch), flutscht die msg.payload.On noch mit durch, die muss noch abgefangen werden.
-
@mickym Gute Idee, danke Dir! Habs mit einem zusätzlichen Switch gelöst.
OK also irgendwie scheint die Ausgabe von Homekit auch eher zufällig zu sein.
Jetzt gibt er mir beim Einschalten auch teilweise nur ON = true ohne Brightness aus..
Es gibt also wohl beide Fälle. -
Genau - so wird nun On=true komplett ignoriert und damit müsste es nach der Logik gehen:
Man muss nur den siwtch das true mit abfragen, aber lässt es ins leere laufen. Off wird auf 0 gesetzt. On wird ignoriert, da entweder Brightness folgt - oder ON eh nicht geschickt wird und nur Brightness.
-
@claus1985-0 sagte in Umwandlung von Objekt in String:
Jetzt gibt er mir beim Einschalten auch teilweise nur ON = true ohne Brightness aus..
Es gibt also wohl beide Fälle.Ok dann kannst auch die Brightness setzen - dann wird sie mit der nächsten Brightness ggf. auf den richtigen Wert über schrieben. Dann macht man einen Trigger hinten dran. Ich machs mal kurz.
Wenn man das mit Inject Nodes testen will muss man es halt auf 1 s hoch setzen. Wenn aber von der Node 2 Nachrichten kommen, sollten 100s vielleicht ausreichen - ansonsten den Wert halt auf 250 ms erhöhen.
-
@mickym Hi, ich hätte eigentlich eher gedacht es reicht die msg.payload.On in der Change node zu löschen, da auf dem Weg ja eh nur die Brithness ausgegeben werden soll.
-
@frankyboy73 sagte in Umwandlung von Objekt in String:
e eicht die msg.payload.On in der Change node zu löschen
Nee das ist unnötig - da ich ja in der Change node - die komplette payload mit Brightness überschreibe - damit ist die payload ja ein skalares Objekt - sprich Zahl - sprich alle Eigenschaften des payload Objektes sind ja sowieso weg.
Aber egal - ich glaube Du kannst es nur mit der Trigger Node machen - da unser TE ja inzwischen alle Möglichkeiten, ON mit Brightness, nur Brightness, nur ON hatte. Ursprünglich dachte ich ja dann wie Du ich kann auch ON komplett verzichten - aber dem ist ja auch nicht so,.
-
@mickym Funktioniert perfekt, danke Dir!!
-
@claus1985-0 sagte in Umwandlung von Objekt in String:
@mickym Funktioniert perfekt, danke Dir!!
Freut mich! Vielleicht ist NodeRed ohne 20 Programmzeilen doch einfacher.