NEWS
Node-Red mit Alexa - Dimmer
-
Hallo,
ich habe es hinbekommen im ioBroker mit Node-Red Befehle zu schicken um Lampen (Hue) ein bzw. auszuschalten.
Jetzt versuche ich mich daran es zu dimmen.
Habe dazu eine parallele Funktion erstellt mit:
var newMsg = {payload: msg.level};
return newMsg;
Aber irgendwie funktioniert das nicht.
Ich weiß auch nicht genau wie ich sagen muss.
Alexa schalte Licht Flur ein - geht
Alexa setze Flur Licht auf 50% –- oder wie muss man es sagen?
Denke aber das die Konfig nicht stimmt.
Vielen Dank!
-
Ohne deinen konkreten Flow wird man da wohl nicht helfen können.
Gesendet von iPhone mit Tapatalk
-
so habe ich das im Moment > geht auf level
-
Und so sieht die change rule aus für AN/AUS - das funktioniert:
-
Du hättest besser einen Export deines Flow gepostet.
Du verwendest offenbar das Alexa-local-node.
Zum Ein-/Ausschalten der Lampe nimmst du offenbar nur den iobroker-state für die Helligkeit (0=aus / 100=ein)
Ok, kann man so machen.
Das Alexa-local-node hat getrennte Output-Properties für:
ON/OFF
msg.payload "on/off"
Helligkeit
msg.bri 0-100
Du brauchst also nur einen 2.ten change-node für die Helligkeit:
Was mir bei deinem change-node noch aufgefallen ist, du wandelst "on" in "100" und "off" on "0". Wahrscheinlich solltest du besser in Zahlen konvertieren, also "on" in 100 und "off" in 0.
-
Vielen lieben Dank für die Antwort!
Ich denke habe es hinbekommen.
Kurze andere Frage. Jedesmal wenn ich das ganze deploye stürzt node-red ab und es dauert ca 1-2 Minuten bis es wieder läuft.
Ist das normal? Läuft unter Windows 10.
Log:
node-red.0 2018-12-18 17:55:21.973 info Starting node-red: –max-old-space-size=128 C:\ioBroker\node_modules\iobroker.node-red/node_modules/node-red/red.js -v --settings C:\ioBroker\node_modules\iobroker.node-red/userdata/settings.js
node-red.0 2018-12-18 17:55:17.239 info Save C:\ioBroker\node_modules\iobroker.node-red/userdata/flows.json
node-red.0 2018-12-18 17:55:16.957 info node-red exited with 1
node-red.0 2018-12-18 17:54:05.754 info Save C:\ioBroker\node_modules\iobroker.node-red/userdata/flows.json
node-red.0 2018-12-18 17:53:23.911 warn
node-red.0 2018-12-18 17:53:23.911 warn 18 Dec 17:53:23 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
node-red.0 2018-12-18 17:53:23.911 warn 18 Dec 17:53:23 - [info] User directory : C:\ioBroker\node_modules\iobroker.node-red\userdata/
node-red.0 2018-12-18 17:53:23.895 warn
node-red.0 2018-12-18 17:53:23.895 warn 18 Dec 17:53:23 - [warn] –----------------------------------------------------
node-red.0 2018-12-18 17:53:23.895 warn 18 Dec 17:53:23 - [warn] [node-red-node-feedparser/feedparse] Error: Cannot find module 'sax'
node-red.0 2018-12-18 17:53:23.895 warn 18 Dec 17:53:23 - [warn] [node-red/tail] Not currently supported on Windows.
node-red.0 2018-12-18 17:53:23.895 warn
node-red.0 2018-12-18 17:53:23.895 warn 18 Dec 17:53:23 - [warn] –----------------------------------------------------
node-red.0 2018-12-18 17:53:20.286 warn
node-red.0 2018-12-18 17:53:20.286 warn 18 Dec 17:53:20 - [warn] rpi-gpio : Raspberry Pi specific node set inactive
node-red.0 2018-12-18 17:53:14.098 info Starting node-red: –max-old-space-size=128 C:\ioBroker\node_modules\iobroker.node-red/node_modules/node-red/red.js -v --settings C:\ioBroker\node_modules\iobroker.node-red/userdata/settings.js
node-red.0 2018-12-18 17:53:09.082 info node-red exited with 1
node-red.0 2018-12-18 17:53:08.864 warn
node-red.0 2018-12-18 17:53:08.864 warn 18 Dec 17:53:08 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
node-red.0 2018-12-18 17:53:08.864 warn 18 Dec 17:53:08 - [info] User directory : C:\ioBroker\node_modules\iobroker.node-red\userdata/
node-red.0 2018-12-18 17:53:08.848 warn
node-red.0 2018-12-18 17:53:08.848 warn 18 Dec 17:53:08 - [warn] –----------------------------------------------------
node-red.0 2018-12-18 17:53:08.848 warn 18 Dec 17:53:08 - [warn] [node-red-node-feedparser/feedparse] Error: Cannot find module 'sax'
node-red.0 2018-12-18 17:53:08.848 warn 18 Dec 17:53:08 - [warn] [node-red/tail] Not currently supported on Windows.
node-red.0 2018-12-18 17:53:08.848 warn
node-red.0 2018-12-18 17:53:08.848 warn 18 Dec 17:53:08 - [warn] –----------------------------------------------------
node-red.0 2018-12-18 17:53:05.395 warn
node-red.0 2018-12-18 17:53:05.395 warn 18 Dec 17:53:05 - [warn] rpi-gpio : Raspberry Pi specific node set inactive
…
Übringes reicht ein Change node.
Kann sagen ..Alexa Schlafzimmer licht aus.. dann macht er es auch aus:
-
Super!
Jedesmal wenn ich das ganze deploye stürzt node-red ab und es dauert ca 1-2 Minuten bis es wieder läuft.
Ist das normal? `
Da kann ich auch nur rätseln. Hab seit 10Jahren nix mehr mit Windows zu tun :lol:
Aber da sind einmal die Warnings " [warn] rpi-gpi". Die deuten darauf hin, dass du eine NR Installation gemacht hast, die eigentlich für den raspberry Pi gedacht ist.
Dann hast du ein Problem mit einem node: "[node-red-node-feedparser/feedparse] / [warn] [node-red/tail] Not currently supported on Windows." Hängt ebenfalls mit der Installation zusammen.
Näheres findest du hier: https://nodered.org/docs/getting-started/running
` > Install PM2
sudo npm install -g pm2
Note : sudo is required if running as a non-root user on Linux or OS X. If running on Windows, you will need to run in a command shell as Administrator, without the sudo command.
If running on Windows, you should also ensure tail.exe is on your path, as described here. `
-
Danke dir !
Bei Node-red kann man eigentlich ja nicht viel falsch machen da ich es einfach als Adapter über die iobroker
Konsole installiert habe. Dann sollte es eigentlich passen.
-
Muss doch nochmal fragen.
So 100% klappt es noch nicht.
Wenn ich sage 'Alexa Stehlampe 50' > setzt er es richtig.
Alexa aus, geht auch.
Bei Alexa 'Stehlampe ein' > Schaltet er sie zwar ein, jedoch immer auf eine undefinierte, teilweise die letzte Helligkeit, aber nicht auf 100% wie ich es eigentlich möchte. Was mache ich hier falsch?
Danke!
[
{
"id": "ff41b356.eda65",
"type": "tab",
"label": "Lichter",
"disabled": false,
"info": ""
},
{
"id": "fa8c3d66.255e9",
"type": "alexa-local",
"z": "ff41b356.eda65",
"devicename": "Stehlampe",
"inputtrigger": false,
"x": 110,
"y": 57,
"wires": [
[
"26e02aef.786fe6",
"1a6ff2c1.dc502d",
"73caa55.6b0ed5c"
]
]
},
{
"id": "26e02aef.786fe6",
"type": "change",
"z": "ff41b356.eda65",
"name": "msg.bri -> msg.payload",
"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": 370,
"y": 57,
"wires": [
[
"3cace69a.b1f98a",
"40516257.b2fd4c"
]
]
},
{
"id": "3cace69a.b1f98a",
"type": "ioBroker out",
"z": "ff41b356.eda65",
"name": "Philips_hue.Wohnzimmer.Stehlampe.level",
"topic": "hue.0.Philips_hue.Wohnzimmer.Stehlampe.level",
"ack": "false",
"autoCreate": "false",
"x": 720,
"y": 57,
"wires": []
},
{
"id": "1a6ff2c1.dc502d",
"type": "debug",
"z": "ff41b356.eda65",
"name": "Stehlampe Input Payload",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 370,
"y": 153,
"wires": []
},
{
"id": "40516257.b2fd4c",
"type": "debug",
"z": "ff41b356.eda65",
"name": "Stehlampe Output Bri",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 660,
"y": 140,
"wires": []
},
{
"id": "73caa55.6b0ed5c",
"type": "debug",
"z": "ff41b356.eda65",
"name": "Stehlampe Input Bri",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "bri",
"x": 350,
"y": 193,
"wires": []
}
]
-
-
Also interessant wäre mal, wie die Nachricht aussieht, wenn du "Alexa ein" sagst.
Dazu solltest du aber nicht 2 debug nodes an Stehlampe klemmen, sondern Sur eines mit der Einstellung 'complete msg object'
"Alexa ein" sollte ja nur EIN msg-object erzeugen und das hat eine payload-eigenschaft und ggf eine bri-eigenschaft.
Interessant ist jetzt, gibt es da die bri-eigenschaft und falls ja, was hat die für Inhalt. Dazu die das Object im Debug Panel kopieren und hier posten.
-
Wieder was gelernt. Danke!
Wenn ich nur 'Alexa Stehlampe Ein' sage > Kommt Payload mit 'On' und Bri mit dem letzten Wert z.b. '50'
Eigentlich kann ich damit leben. Bedeutet bei 'Alexa ein' schaltet er die Lampe ein mit der letzten Helligkeit.
Hätte es nur gerne, dass ich bei 'Ein' die Lampe auf 100% bekomme.
Das scheint sich nur zu beißen weil bei 'Ein' eben immer .payload = on und .bri = [letzter Wert] kommt.
Wüsste nicht wie ich das hinbekomme dann auf 100% zu gehen.
Wenn ich sage 'Alexa Stehlampe 75' kommt ja auch .paylod = on und .bri = 75
Danke!
-
` > Wenn ich nur 'Alexa Stehlampe Ein' sage > Kommt Payload mit 'On' und Bri mit dem letzten Wert z.b. '50'…
Wenn ich sage 'Alexa Stehlampe 75' kommt ja auch .paylod = on und .bri = 75 `
Da hat das change-node keine change, woher soll es dann wissen, ob Alexa "on" oder "bri" meint?
Auszug aus der node Info
` > ..payload string | on/off
"on" or "off" trigger from Alexa.
when dimming command is issued, this payload stays "on" as long as bri > 0. In other words, payload == "off" only when bri == 0. `
Da hast du eigentlich keine change, das könnte nur der Entwickler des Alexa-node ändern. Da wirst du auch nicht tricksen können;-( Jedenfalls nicht in diese Konstellation NR/Alexa-local-node.
Das node trennt praktisch nicht zwischen on und bri.
-
Da war ich wohl nicht gründlich. Wer lesen kann ist klar im Vorteil :lol:
Sollte doch gehen.
` > on_off_command boolean | true/false
indicate whether the command was an on/off command or a dimming/brightness command
eg. Alexa turn on/off light -> true
Alexa set light to 39% -> false
Alexa set light to 0% -> false `
Sollte so gehen (Pseudocode): Wenn msg.on_off_command dann msg.payload -> 0/100 msg.payload Sonst msg.bri -> msg.payload
Das Ganze ist leicht in einen JSONata-Ausdruck gepackt. Ersetze mal dein Change-node durch Dieses:
[ { "id": "a07b6c76.f86d2", "type": "change", "z": "2262a318.45ba74", "name": "on/off or bri to payload", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "(\t on_off_command = true ? (\t payload = \"on\" ? 100 : 0\t \t ) : (\t bri\t )\t\t)", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 680, "y": 760, "wires": [ [ "747a10d.f6d8ef" ] ] } ]
-
Ja cool
das geht..super und vielen vielen dank!
auch wenn ich es gerade noch nicht ganz verstehe wie es funktioniert
-
Können wir nicht gleich noch die Farbe hinzufügen
Daran hapert es derzeit bei mir.
Leider brauch Phillips Hue einen "HUE" wert den weder der UI Colorpicker auswirft noch Alexa
-
..auch wenn ich es gerade noch nicht ganz verstehe wie es funktioniert
`
Das kommt mit der Zeit :lol:
Im Grunde eine 1:1 Umsetzung des Pseudocodes.
Der Trick war, dass das Alexa-local-node noch eine Eigenschaft on_off_command kennt. Und diese wird auf true gesetzt, wenn es sich um einen ON oder OFF Befehl handelte und NUR dann.
Damit ist es dann möglich zu unterscheiden, ob die 100 (ON/OFF-Befehl=true UND payload="on") oder der Helligkeitswert (bri) (ON/OFF-Befehl=false) zu setzen ist.
Der JSONata-Ausdruck ist vlt. von der Syntax nicht gleich verständlich;-( JSONata ist KEIN Javascript! auch wenn es ähnlich aussieht.
Muss man sich halt einlesen: http://jsonata.org/
Und die paar node-red Besonderheiten dazu: https://github.com/node-red/cookbook.no … ta-Recipes
Natürlich kann das ähnlich einfach mit Javascript gemacht werden, aber das steht im Change-node nicht zur Verfügung. Müßte man einen functions-node nehmen.
Ja, da weis ich auch erstmal nicht wie das gehen kann. Hab leider keine Hue
Mit welchem Adapter betreibst du denn das Teil? Kennt das Ding in den Objekten eine HUE-Eigenschaft ?
-
Es gibt diese Datenpunkte vom HUE Adapter.
-
Da gibt es doch einen hue-state. Was will der denn für Werte haben ?
Trag doch mal manuell welche ein und poste, wie die aussehen müssen.
-
Den Hue Adapter würde ich nicht nutzen wenn du eh Node-Red nutzt denn da gibt's ja das HueMagic
und dieses ist Flexibel, es nimmt RGB oder HEX entgegen.. aber leider gibt Alexa nur HSB/HSL Werte als HUE (Hue: 0, Saturation: 1, Brightness:1) für Rot zum Beispiel. Man müsste also einen Converter von HSB/HSL zu HEX oder RGB haben.
derzeit Steuer ich Rot / Blau / Weiss so.. was echt nicht toll ist.
if ((msg['command']) == 'SetColorRequest') { if ((msg['payload']['hue']) == '0' && (msg['payload']['saturation']) == '1') { msg['payload']['hex'] = '#ff0000'; } else if ((msg['payload']['hue']) == '240') { msg['payload']['hex'] = '#3366ff'; } else if ((msg['payload']['hue']) == '0' && (msg['payload']['saturation']) == '0') { msg['payload']['hex'] = '#ffffff'; } msg['payload']['brightness'] = '100'; msg['payload']['saturation'] = '100'; return msg; } else { }