NEWS
Flow Problem mit node-red-contrib-amazon-echo
-
@frankyboy73 said in Flow Problem mit node-red-contrib-amazon-echo:
@amandus99
Durch das senden von on sollte die Lampe keinen anderen Dimmwert annehmen. Was braucht denn dein Wohnzimmer.bri für Werte 0-254 oder 0-100? Die Echo Node gibt 0-254 raus. Brauchst du jetzt aber 0-100, muss man das noch umrechnen. Sonst bekommst du ja bei 50% 127 oder so raus und das liegt ja über 100% und damit geht die Lampe auf 100%. Das geht auch mit ner Funktion Node.msg.payload = Math.round(msg.payload / 2.54); return msg;
Das in die Funktion Node rein machen und die Node dann vor deine Wohnzimmer.bri Ausgabe einfügen.
oder gleich den prozentwert im payload ausgeben
msg.payload = msg.percentage; return msg;
-
@t-master
Oh, das wusste ich ja noch gar nicht, habe ich gerade nachgeschaut, also gibt die Amazon Node doch nen Prozentwert für die Helligkeit raus, war das vor nem Jahr auch schon so? Da habe ich diesbezüglich noch nichts gefunden und rechne deshalb immer den Bri um.Danke für die Info.
-
so hatte wieder etwas Zeit
Aber ich verstehe es immer noch nicht. Egal ob ich Alexa sage mach an oder setze auf x% bekommen ich ja immer diese Antwort zurück{"on":true,"bri":128,"hue":0,"sat":254,"ct":199,"colormode":"ct","meta":{"insert":{"by":"alexa","details":{"ip":"::ffff:192.168.178.34","user_agent":"Dalvik/2.1.0 (Linux; U; Android 5.1.1; AEOBC Build/LVY48F)","date":"2020-03-06T20:09:27.030Z"}},"input":{"bri":128},"changes":{}},"rgb":[255,0,0],"percentage":50,"payload":"on","deviceid":"25ef4d323521d2","topic":"hue.0.Wohnzimmer","_msgid":"5646b44b.60277c"}
sprich einen bri Wert aber auch ein payload on. Entweder ich setze jetzt den bri, da erwartet die Node einen Wert von 0-255 oder ich setze den on State of true oder false. Klar könnte ich jetzt bei false den Bri Wert auf 0 setzen, aber so richtig elegant ist das doch nicht?
Wie macht ihr das denn? -
@amandus99, zeig doch mal deinen Flow, dann ist es eventuell einfacher dir zu helfen.
-
@amandus99
Also eigentlich brauchst du den Bri Wert nicht auf 0 setzten, bei nem bri Wert und gleichzeitig false sollte die Lampe eigentlich ausgehen.
Sollte das bei deiner Lampe nicht der Fall sein, würde ich mal testen den false Befehl zu verzögern. 100ms oder so sollte genügen. Dann sollte sie auf jeden Fall ausgehen. -
hier mein flow
[ { "id": "c65d3085.441b7", "type": "tab", "label": "Flow 1", "disabled": false, "info": "" }, { "id": "95dfb0f5.9c5c2", "type": "amazon-echo-hub", "z": "c65d3085.441b7", "port": "80", "processinput": 0, "x": 200, "y": 140, "wires": [ [ "25ef4d32.3521d2", "27b8f726.917898" ] ] }, { "id": "25ef4d32.3521d2", "type": "amazon-echo-device", "z": "c65d3085.441b7", "name": "Gartenzwerg", "topic": "hue.0.Wohnzimmer", "x": 430, "y": 160, "wires": [ [ "794abd8b.f2df44", "7b7827ed.f7de38", "acfcc678.839078" ] ] }, { "id": "acfcc678.839078", "type": "debug", "z": "c65d3085.441b7", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "x": 850, "y": 140, "wires": [] }, { "id": "a905b681.6d6718", "type": "ioBroker out", "z": "c65d3085.441b7", "name": "Wohnzimmer.on", "topic": "hue.0.Wohnzimmer.on", "ack": "false", "autoCreate": "false", "x": 880, "y": 360, "wires": [] }, { "id": "27b8f726.917898", "type": "amazon-echo-device", "z": "c65d3085.441b7", "name": "Staubi", "topic": "mihome-vacuum.0.control", "x": 190, "y": 460, "wires": [ [ "3f12c669.377bfa" ] ] }, { "id": "f4f20706.73c288", "type": "ioBroker out", "z": "c65d3085.441b7", "name": "", "topic": "mihome-vacuum.0.control.clean_home", "ack": "false", "autoCreate": "false", "x": 460, "y": 560, "wires": [] }, { "id": "794abd8b.f2df44", "type": "function", "z": "c65d3085.441b7", "name": "check", "func": "var newMsg = { payload: msg.on };\nreturn newMsg;", "outputs": 1, "noerr": 0, "x": 610, "y": 240, "wires": [ [ "a905b681.6d6718" ] ] }, { "id": "7b7827ed.f7de38", "type": "function", "z": "c65d3085.441b7", "name": "dimmer", "func": "var newMsg = { payload: msg.bri };\n\nreturn newMsg", "outputs": 1, "noerr": 0, "x": 620, "y": 120, "wires": [ [ "a143e95a.d6dbe8" ] ] }, { "id": "a143e95a.d6dbe8", "type": "ioBroker out", "z": "c65d3085.441b7", "name": "Wohnzimmer.bri", "topic": "hue.0.Wohnzimmer.bri", "ack": "false", "autoCreate": "false", "x": 940, "y": 240, "wires": [] }, { "id": "3f12c669.377bfa", "type": "function", "z": "c65d3085.441b7", "name": "", "func": "var newMsg = { \n payload: msg.on \n \n};\nreturn newMsg;", "outputs": 1, "noerr": 0, "x": 220, "y": 620, "wires": [ [ "f4f20706.73c288" ] ] }, { "id": "bdc18fa0.27776", "type": "ioBroker out", "z": "c65d3085.441b7", "name": "Wohnzimmer.on", "topic": "hue.0.Wohnzimmer.on", "ack": "false", "autoCreate": "false", "x": 760, "y": 740, "wires": [] }, { "id": "ef54d9da.6da7e8", "type": "ioBroker in", "z": "c65d3085.441b7", "name": "linke wippe", "topic": "zigbee.0.00158d00040b132e.left_click", "payloadType": "value", "onlyack": true, "func": "all", "gap": "", "x": 330, "y": 700, "wires": [ [ "991d55f3.9c6558", "bdc18fa0.27776" ] ] }, { "id": "1e5407ac.38cec8", "type": "hue-light", "z": "c65d3085.441b7", "name": "Stehlampe", "bridge": "20d300f2.69eca", "lightid": "1", "colornamer": true, "skipevents": false, "x": 830, "y": 500, "wires": [ [] ] }, { "id": "991d55f3.9c6558", "type": "change", "z": "c65d3085.441b7", "name": "", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "str", "to": "on", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 530, "y": 660, "wires": [ [] ] }, { "id": "20d300f2.69eca", "type": "hue-bridge", "z": "", "name": "Philips hue", "bridge": "192.168.178.22", "key": "3aE1Aer2vCcD3XAgg00IKKuaKyCYFc37rAPH07Af", "interval": "3000", "disableupdates": false } ]
den check um 100ms verzögern funktioniert fürs ausschalten aber bringt dann wieder andere Seiteneffekte mit sich...
Danke für eure Hilfe!
-
@amandus99
Hi, was für Seiteneffekte hast du denn dadurch?
Als alternative zu der Zeitverzögerung kannst du auch nen Switch vor die Dimmer funktion setzten und die Nachricht nur durchlassen wenn msg.on=true ist -
@amandus99,
ich habe leider keine HUE, aber versuche mal diesen Flow. Was passiert denn, wenn deine Lampe aus ist und du "Alexa, setze Gartenzwerg auf 50%" sagst. Geht dann deine Lampe mit 50% an?[ { "id": "316a9fa5.9dfd2", "type": "amazon-echo-hub", "z": "25a913b7.4acc5c", "port": "80", "processinput": 0, "x": 200, "y": 140, "wires": [ [ "9acf031c.7e3bc", "a0143bb6.1b0738" ] ] }, { "id": "9acf031c.7e3bc", "type": "amazon-echo-device", "z": "25a913b7.4acc5c", "name": "Gartenzwerg", "topic": "hue.0.Wohnzimmer", "x": 430, "y": 160, "wires": [ [ "cece3db1.828e3" ] ] }, { "id": "9687c7c0.76de88", "type": "ioBroker out", "z": "25a913b7.4acc5c", "name": "Wohnzimmer.on", "topic": "hue.0.Wohnzimmer.on", "ack": "false", "autoCreate": "false", "x": 880, "y": 140, "wires": [] }, { "id": "cece3db1.828e3", "type": "function", "z": "25a913b7.4acc5c", "name": "HUE", "func": "return [\n \n {payload: msg.payload.on},\n {payload: msg.payload.bri}\n ];", "outputs": 2, "noerr": 0, "x": 610, "y": 160, "wires": [ [ "9687c7c0.76de88" ], [ "b723ef53.d299a" ] ] }, { "id": "b723ef53.d299a", "type": "ioBroker out", "z": "25a913b7.4acc5c", "name": "Wohnzimmer.bri", "topic": "hue.0.Wohnzimmer.bri", "ack": "false", "autoCreate": "false", "x": 880, "y": 200, "wires": [] } ]
-
@Seb_123 @frankyboy73
sorry dass ich jetzt erst zum Antworten komme. Funktioniert leider beides nicht.
Wenn ich sagen Gartenzwerg auf 10% bekomme ich folgende Antwort{"on":true,"bri":26,"hue":0,"sat":254,"ct":199,"colormode":"ct","meta":{"insert":{"by":"alexa","details":{"ip":"::ffff:192.168.178.34","user_agent":"Dalvik/2.1.0 (Linux; U; Android 5.1.1; AEOBC Build/LVY48F)","date":"2020-03-19T14:55:14.491Z"}},"input":{"bri":26},"changes":{"bri":14}},"rgb":[255,0,0],"percentage":10,"payload":"on","deviceid":"88f0d35517da8","topic":"hue.0.Wohnzimmer","_msgid":"a5a44fa4.dbf53"}
somit stimmt der bri Wert, aber der "on" wert ist true bzw der payload ist immer "on" und der sorgt dann dafür dass der Gartenzwerg komplett an ist...
habs jetzt so gelöst, dass nur wenn "on" false ist, das command an den wohnzimmer.on Punkt geleitet wird. Der Rest wird dann über die bri geregelt. Nicht ganz schön aber funktioniert
-
Den inbound-payload kann man in diesem Fall ignorieren.
Je nach dem ob man percentage oder bri verwendet - wenn dieser Wert > 0 ist, bedeutet das "Lampe ein", bzw. wenn dieser Wert gleich 0 ist, dann bedeutet das "Lampe aus". Es reicht meisten inbound-payload rauszufiltern und nur percentage oder bri als payload an die Lampe zu schicken.