NEWS
Node-Red mit Alexa - Dimmer
-
Alexa wirft bei "Alexa Schalte Test auf ROT" dies aus:
"hue":0,"saturation":1,"brightness":1
dies schiebe ich in den Blocky und mache ein Array daraus damit dies kommt:
"hsv":[0,100,100]
Der Converter macht aber nun ein RGB Array und zwar so:
[3,3,3]
Es müsste aber für den HUE Adapter so kommen:
RGB [255,0,0]
-
Ich hoffe, ich habe richtig kapiert.
Das sollte auch ohne Blockly problemlos gehen:
hier der flow:
! ````
[
{
"id": "26dc88fe.708c5",
"type": "inject",
"z": "ca47e1d4.9f532",
"name": "Alexa Schalte Test auf ROT",
"topic": "",
"payload": "{"hue":0,"saturation":1,"brightness":1}",
"payloadType": "json",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 230,
"y": 140,
"wires": [
[
"ad83b521.77c65",
"7eb1492e.f3b3d8"
]
]
},
{
"id": "86870acf.2656c",
"type": "color-convert",
"z": "ca47e1d4.9f532",
"input": "hsv",
"output": "rgb",
"outputType": "array",
"x": 190,
"y": 300,
"wires": [
[
"a57a950f.248af8"
]
]
},
{
"id": "ad83b521.77c65",
"type": "change",
"z": "ca47e1d4.9f532",
"name": "{"hue":0,"saturation":1,"brightness":1} to [h,s,v]",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "[\t payload.hue,\t payload.saturation * 100,\t payload.brightness * 100\t]",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 300,
"y": 220,
"wires": [
[
"86870acf.2656c",
"a4ad7796.ecdb8"
]
]
},
{
"id": "ccb4443d.a17ce8",
"type": "comment",
"z": "ca47e1d4.9f532",
"name": "msg.payload ={"hue":0,"saturation":1,"brightness":1}",
"info": "",
"x": 940,
"y": 140,
"wires": []
},
{
"id": "3e66cbf2.9da13c",
"type": "comment",
"z": "ca47e1d4.9f532",
"name": "direct convert to rgb[r,g,b]",
"info": "",
"x": 830,
"y": 300,
"wires": []
},
{
"id": "bd23336d.d791e8",
"type": "comment",
"z": "ca47e1d4.9f532",
"name": "object hsv[h,s,v]",
"info": "",
"x": 800,
"y": 220,
"wires": []
},
{
"id": "a57a950f.248af8",
"type": "debug",
"z": "ca47e1d4.9f532",
"name": "rgb[r,g,b]",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 600,
"y": 300,
"wires": []
},
{
"id": "7eb1492e.f3b3d8",
"type": "debug",
"z": "ca47e1d4.9f532",
"name": "{"hue":0,"saturation":1,"brightness":1}",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 550,
"y": 140,
"wires": []
},
{
"id": "a4ad7796.ecdb8",
"type": "debug",
"z": "ca47e1d4.9f532",
"name": "hsv[h,s,v]",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 600,
"y": 220,
"wires": []
}
] Am Eingang bekommt das Teil ein Oblect```` {"hue":0,"saturation":1,"brightness":1}
Am Ausgang hast du ein Array````
[r,g,b]Wenn das lieber ein Object sein soll, der Form:```` {"rgb": [r,g,b]} ````ist eine minimale Änderung nötig.
-
Perfekt
dann hab ich nur den Converter falsch benutzt
danach noch nen Change to msg.payload.rgb und Alexa schaltet das ganze
Danke dir
-
-
Für alle die dann noch Bedarf daran haben
Ich mache es am Ende doch per Blockly denn es kommen ja noch Abfragen wie TurnOnRequest, TunOffRequest und was Alexa noch alles so bietet.
! ````
[
{
"id": "6a18e5be.c9abdc",
"type": "Blockly",
"z": "9433ac39.c5756",
"language": "en",
"func": "if ((msg['command']) == 'SetColorRequest') {\n msg['payload'] = [(msg['payload']['hue']), (msg['payload']['saturation']) * 100, (msg['payload']['brightness']) * 100];\n return [msg, null];\n} else if ((msg['command']) == 'TurnOffRequest') {\n msg['payload'] = false;\n return [null, msg];\n} else if ((msg['command']) == 'TurnOnRequest') {\n msg['payload'] = true;\n return [null, msg];\n}\n",
"workspaceXml": "<xml xmlns=""http://www.w3.org/1999/xhtml""><block id=""OegDmw1SSX]D=Pa(8G75"" type=""controls_if"" x=""-2037"" y=""-387""><mutation elseif=""2""></mutation><value name=""IF0""><block id=""GconiS<value name=""IF0""ihVrBvHEiKZu"" type=""logic_compare""><field name=""OP"">EQ</field><value name=""A""><block id=""qfEv5p}Q.6(4bAAhVY)t"" type=""node_object_get""><mutation action=""GET""></mutation><field name=""action"">GET</field><value name=""object""><shadow id=""8Rf40:s+-(Iix/~rpXuB"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""3K$0p{%[oP^XO:,{IhsI"" type=""text""><field name=""TEXT"">command</field></shadow></value></block></value><value name=""B""><block id=""Gu~Z4BXhmh4D%LOE{4s-"" type=""text""><field name=""TEXT"">SetColorRequest</field></block></value></block></value><statement name=""DO0""><block id=""Wz6Dr1k2)tZbJ[+?V+j{"" type=""node_object_set""><value name=""object_field""><shadow id=""N7nV^CQPdk8cxV}?9mWX"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""cZ6WgGkQ{3ya8z~VBE3\"" type="\"text\""><field name="\"TEXT\"">payload</field></shadow></value><value name="\"value_field\""><shadow id="\"sk?O05P5ma_5
vqc{!#)"" type=""text""></shadow><block id=""Md|@A(]N!kq$=b3)[SH!"" type=""lists_create_with""><mutation items=""3""></mutation><value name=""ADD0""><block id=""tu7-Qe3u+zsXsItw[,yY"" type=""node_object_get""><mutation action=""GET""></mutation><field name=""action"">GET</field><value name=""object""><shadow id=""4WDpncvt3q4gpN@S@MfM"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""@d+[0zA[c(D{jmlYd^%O"" type=""text""><field name=""TEXT"">payload.hue</field></shadow></value></block></value><value name=""ADD1""><block id=""!Q#d8F/fCDqPNsm,6Z+"" type=""math_arithmetic""><field name=""OP"">MULTIPLY</field><value name=""A""><shadow id=""bNOGt$4!S%VQ?:vfS1V."" type=""math_number""><field name=""NUM"">1</field></shadow><block id=""cl:38kKKmak%V3E!m2}T"" type=""node_object_get""><mutation action=""GET""></mutation><field name=""action"">GET</field><value name=""object""><shadow id=""8+vu8BKKc)fZo;rSk0[D"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""FzE=$C.cumV)e3g*!;0\"" type="\"text\""><field name="\"TEXT\"">payload.saturation</field></shadow></value></block></value><value name="\"B\""><shadow id="\"p$RJ=}@6=xX[Ekbiqfn^\"" type="\"math_number\""><field name="\"NUM\"">100</field></shadow></value></block></value><value name="\"ADD2\""><block id="\"K[@!p?t]Y]0YY,I]]Y=3\"" type="\"math_arithmetic\""><field name="\"OP\"">MULTIPLY</field><value name="\"A\""><shadow id="\"12luhGJPp}BppnOnCd]t\"" type="\"math_number\""><field name="\"NUM\"">1</field></shadow><block id="\"hu/B]c6@]lE@cn^qMa!I\"" type="\"node_object_get\""><mutation action="\"GET\""></mutation><field name="\"action\"">GET</field><value name="\"object\""><shadow id="\"$2{@U|#45m9O#sYMG_HL\"" type="\"node_msg\""></shadow></value><value name="\"field_name\""><shadow id="\"9q^k
;%a@6pz!wwSL[S\"" type="\"text\""><field name="\"TEXT\"">payload.brightness</field></shadow></value></block></value><value name="\"B\""><shadow id="\"H7P5:v+4jC%4eNSZg1b3\"" type="\"math_number\""><field name="\"NUM\"">100</field></shadow></value></block></value></block></value><next><block id="\"dj6-iR8:4O-+v*!D~,M-\"" type="\"node_return_message\""><field name="\"OUTPUT_NR\"">1</field><value name="\"MESSAGE_INPUT\""><shadow id="\"!e8R2#N8Jdu
(EAVQ{|"" type=""node_msg""></shadow></value></block></next></block></statement><value name=""IF1""><block id=""Gt#y.gqIL,qm)]{hhHC"" type=""logic_compare""><field name=""OP"">EQ</field><value name=""A""><block id=""N6$q19G#S0_xYH%PxSEI"" type=""node_object_get""><mutation action=""GET""></mutation><field name=""action"">GET</field><value name=""object""><shadow id=""x(P(iAF[acHUJa%K1WW0"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""401Ct:?6f$=h/.@%JFf="" type=""text""><field name=""TEXT"">command</field></shadow></value></block></value><value name=""B""><block id=""E:%o.01_qWbolte})n[}"" type=""text""><field name=""TEXT"">TurnOffRequest</field></block></value></block></value><statement name=""DO1""><block id=""6=mvJ%:D4qf|CDFfAg[z"" type=""node_object_set""><value name=""object_field""><shadow id=""ABbAcS^Mj_]u:G0bmbxl"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""to=(u!-hoz(ZB|X@F7;"" type=""text""><field name=""TEXT"">payload</field></shadow></value><value name=""value_field""><shadow id=""6?#earD4R8~?M5_1Y1va"" type=""text""></shadow><block id=""gSN[vp0Vp@iiKOCKXZxO"" type=""logic_boolean""><field name=""BOOL"">FALSE</field></block></value><next><block id=""8Lt@[lrf:,v#bz#My!,~"" type=""node_return_message""><field name=""OUTPUT_NR"">2</field><value name=""MESSAGE_INPUT""><shadow id=""ac^):!N/SuXK+m#l6G{e"" type=""node_msg""></shadow></value></block></next></block></statement><value name=""IF2""><block id="":%iB^77hKA%5#Y]m3(KI"" type=""logic_compare""><field name=""OP"">EQ</field><value name=""A""><block id=""bZZ%2UXkY4qB_Fmae68"" type=""node_object_get""><mutation action=""GET""></mutation><field name=""action"">GET</field><value name=""object""><shadow id=""O;dMHWtpMY{zN1](^WQa"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""C0O}w0bo=c,,_#.[I9Gf"" type=""text""><field name=""TEXT"">command</field></shadow></value></block></value><value name=""B""><block id=""e5e|,AqRBMdDQ|~s?uv9"" type=""text""><field name=""TEXT"">TurnOnRequest</field></block></value></block></value><statement name=""DO2""><block id=""|DY5/yaj[#aVyjA:qNS"" type=""node_object_set""><value name=""object_field""><shadow id=""ee@E0k_unaE#!Ss=xdAB"" type=""node_msg""></shadow></value><value name=""field_name""><shadow id=""h]@6ikfpmr#ni-9FWDmN"" type=""text""><field name=""TEXT"">payload</field></shadow></value><value name=""value_field""><shadow id=""6?#earD4R8~?M5_1Y1va"" type=""text""></shadow><block id=""c3@@`D0S$O}J_N]-B5lf"" type=""logic_boolean""><field name=""BOOL"">TRUE</field></block></value><next><block id=""%R}_.z4(NfAy?#=Gv44"" type=""node_return_message""><field name=""OUTPUT_NR"">2</field><value name=""MESSAGE_INPUT""><shadow id=""}z$f11Tsy#/HuS(JG_Z"" type=""node_msg""></shadow></value></block></next></block></statement></block></xml>",
"outputs": 2,
"name": "",
"x": 390,
"y": 1320,
"wires": [
[
"aeec5dac.065a9"
],
[
"7bd5f7d8.5e0f58"
]
]
},
{
"id": "7bd5f7d8.5e0f58",
"type": "hue-light",
"z": "9433ac39.c5756",
"name": "Lampe_Buero_LedStrip",
"bridge": "d5d520c8.c3118",
"lightid": "9",
"colornamer": true,
"x": 960,
"y": 1330,
"wires": [
[]
]
},
{
"id": "8259bb25.207dc8",
"type": "alexa-home",
"z": "9433ac39.c5756",
"conf": "b91f3657.228818",
"device": "43026",
"acknoledge": true,
"name": "Test",
"topic": "",
"x": 240,
"y": 1320,
"wires": [
[
"6a18e5be.c9abdc"
]
]
},
{
"id": "aeec5dac.065a9",
"type": "color-convert",
"z": "9433ac39.c5756",
"input": "hsv",
"output": "rgb",
"outputType": "array",
"x": 570,
"y": 1290,
"wires": [
[
"84d8358e.688908"
]
]
},
{
"id": "84d8358e.688908",
"type": "change",
"z": "9433ac39.c5756",
"name": "-> Converter ->",
"rules": [
{
"t": "move",
"p": "payload",
"pt": "msg",
"to": "payload.rgb",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 740,
"y": 1290,
"wires": [
[
"7bd5f7d8.5e0f58"
]
]
},
{
"id": "d5d520c8.c3118",
"type": "hue-bridge",
"z": "",
"name": "Philips hue",
"bridge": "1.2.3.103",
"key": "*****",
"interval": "1000"
},
{
"id": "b91f3657.228818",
"type": "alexa-home-conf",
"z": "",
"username": ""
}
]if ((msg['command']) == 'SetColorRequest') {
msg['payload'] = [(msg['payload']['hue']), (msg['payload']['saturation']) * 100, (msg['payload']['brightness']) * 100];
return [msg, null];
} else if ((msg['command']) == 'TurnOffRequest') {
msg['payload'] = false;
return [null, msg];
} else if ((msg['command']) == 'TurnOnRequest') {
msg['payload'] = true;
return [null, msg];
} -
Nur zu, im Prinzip weist du ja jetzt wie es geht
-
Hi,
ich habe ein Problem mit der Range des Dimmers. Der Dimmer möchte 0-100 und Alexa 0-1.
Hier ist mein "Flow" der HomeKit Dimmer kommt da anschl. auch noch dran….
[{"id":"40e9814d.216b7","type":"change","z":"e742a326.057cb","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"100","tot":"num"},{"t":"set","p":"payload","pt":"msg","to":"bri","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":507.4999694824219,"y":218.33334922790527,"wires":[["286a0677.93840a"]]}]
-
ich habe ein Problem mit der Range des Dimmers. Der Dimmer möchte 0-100 und Alexa 0-1. `
Was heisst Alexa 0-1 ? Alexa liefert dir einen Wert von 0-1 und der soll nach 0-100 umgesetzt werden?
-
Hi,
genau so…..
-
Hi,
genau so….. `
Na wie wäre es, wenn du den von Alexa kommenden Wert 0-1 einfach mit 100 multiplizierst ?
-
Hi,
ja auf die Idee bin ich auch gekommen, finde nur nirgendwo wie ich das mache.
Gruß
Lars
-
Sollte so gehen:
-
Range-node (Standard)
-
Range-node (Standard) `
Klar geht das. Der Sinn will sich mir aber nicht erschließen, wo er den change doch schon drin hat;-)