NEWS
Bräuchte Hilfe bei Alexa - Tasmota Integration
-
Guten Tag,
Ich bräuchte mal ein wenig Hilfe.
Ich wollte meine Wohnzimmerbeleuchtung (Shelly Dimmer 2 mit Tasmota) über den Alexa und Tasmota Node einbinden.Leider wird nur An/Aus geändert aber Dimmwerte werden nicht übermittelt.
Wenn ich im ioBroker die Werte im MQTT Adapter ändere sehe ich diese auch in Node Red.( Sieht man ja unter dem Tasmota Node)Ich habe den Debug Node mal mit ins Bild genommen. Dort kommt ja aus dem Alexa Node ein "Percentage" -Wert raus aber dieser kann anscheinend nicht Tasmota Node Verwendet werden.
-
@hahne Der Dimmwert ist doch unter Percentage. Setze die payload Eigenschaft auf die percentage Eigenschaft:
Manchmal ist es auch sinnvoll, mal die Nachbarthreads anzuschauen, selbst wenn man die Suche nicht benutzen will:
https://forum.iobroker.net/post/996978
Also einfach die Change Node hinter Deine Alexa Node klemmen und msg.payload auf msg.percentage setzen.
-
@mickym
Genau den Thread hatte ich mir vorher angeschaut und das Versucht was du dort beschreibst. Leider bringt das bei mir einen Fehler.
Habe auch schon die suche benutzt aber leider bin ich kein Stück weiter gekommen.
Das licht geht dann weder An/Aus noch lässt es sich Dimmen.
-
@hahne na dann musst dir halt die Beschreibung zu der zielnode anschauen. Ich kenne die auch nicht. Wenn man damit nur das Licht ein und ausschalten kann, dann musst du die msg.payload halt auf msg.on setzen. Deswegen hab ich dir ja auch die Grafik anschauen, wie man durch das kopieren des Pfades eine bestimmte Eigenschaft extrahiert.. ob man mit der Node auch Dimmen kann, schau den Hilfetext zu der Node an bzw. Woher stammt denn die? Entweder gibts zum Dimmen eine andere Node oder man muss ein anderes Objekt übergeben.wie gesagt zum Ein- und Ausschalten die msg.payload auf msg.on setzen.
-
@hahne Na ich hab schon gesehen, welche Nodes du verwendest:
https://flows.nodered.org/node/node-red-contrib-tasmotaso und da steht alles drin - man muss sich bisschen mit Objekten auskennen -
Also Du hast die Licht - Node auf 3 verschiedene Arten steuern.
1. Simple Mode: Mit einer simplen payload dann geht on/off, true/false etc.
das heißt Du setzt einfach die payload Eigenschaft auf die on Eigenschaft:
2. Topic Mode: Wenn man nur dimmen will - dann kann man das extra senden bzw. muss vielleicht auch erst einschalten und dann nur dimmen.
also erst wie 1 einschalten und anschliessend den Dimmwert setzen:
Welchen Wert Du setzen willst, also Farbe, Dimmen, Ein und Aus ergibt sich aus der Beschreibung:So um also zu Dimmen setzt Du eine eingeschaltete Lampe wie gehabt auf msg.percentage, MUSST aber noch das topic dazu setzen.
Also hier zusätzlich noch topic Eigenschaft des Nachrichtenobjektes definieren.
3. Object Mode: Im Objektmode kannst Du alles in einem Befehl absetzen in dem Du wieder ein ganzes Objekt schickst. Da versteht das Ding ja das komplette Array - aber Du musst das topic löschen. Willst Du also nicht nur den Dimmwert, sondern auch gleichzeitig mit einem Befehl Dimmen, Farbesetzen und Aus- und Einschalten dann schickst Du Objekte OHNE topic in die Tasmota Node.
Um zu mappen musst Du halt erst mal schauen, welche Eigenschaft welcher entspricht:
Ein- und Ausschalten:
Alexa: on heißt auch auf Tasmota: on (aber in payload)
Dimmen
Alexa: percentage heißt auf Tamota: bright (aber in payload)
Farbe:
ist in beiden Fällen zum Bespiel ein RGB - Array. (aber in payload)Wenn die zusätzlichen Parameter nicht stören, kannst Du also bis auf das Dimmen die Eigenschaften des Alex einfach belassen und die payload neu aufbauen. Hier hast Du wieder 2 Möglichkeiten:
- Herkömmliche Methode:
oder
- mit JSONATA:
falls die alten Eigenschaften die Tasmota Node stören müsste man die wiederum löschen - was dann den Aufwand wieder erhöht, so dass man auch bei der 1. Methode bleiben kann.
Hier mal der Flow zum Import - um zu testen - mit der Inject Node kann man ja direkt testen:
Beschäftigt Euch damit wie ein JSON Objekt aufgebaut ist - das ist das A und O.
https://www.w3bai.com/de/js/js_json.html#gsc.tab=0
Es ist wirklich nicht schwer. Ein Objekt wird immer durch geschweifte Klammern definiert und die Eigentschaftsnamen in Anführungszeichen gesetzt, gefolgt von einem Doppelpunkt mit dem entsprechenden Wert. Mehrere Eigenschaften innerhalb eines Objektes werden durch Komma getrennt:
Und zum Schluß - schaut Euch immer bitte die Hilfe und die Beschreibung zu einer Node an - das ist einer der Riesenvorteile gegenüber Blockly wo ihr Euch alles aus den Fingern saugen müsst, weil zu den Puzzleteilen keine Beschreibung existiert:
Klickt die Node an - über die ihr was wissen wollt, dann den Hilfetab öffnen. In den meisten Fällen steht in dieser Hilfe, wie die Node funktioniert.
- Herkömmliche Methode:
-
@mickym
Danke für die Sehr ausführliche Erklärung. Setze mich nach dem Feierabend gleich dran.
Ich hab auch versucht es selber hinzukriegen, wenn ich dann aber 2h sitze und dann immer noch nichts geht, gebe ich auf.
Mir fehlen die Grundlagen bzw. das Grundverständnis.
Ich hatte z.B. auch versucht einfach mit einem Change node "bri" in "bright" zu ändern. Dann hätte er ja theoretisch im 2 Stellingen Bereich den Wert weiter geben müssen. Aber hat nicht funktioniert. Wie gesagt da fehlen mir Komplett die Grundlagen. -
@hahne verstehe. Deshalb habe ich ja versucht etwas Grundlagenwissen zu vermitteln und auch auf andere Quellen verlinkt. Ich kann Dir nur jetzt den Rat geben, falls Dir an meinen Erklärungen was nicht klar sein sollte, solange zu fragen, bis es klar ist. Wenn du nur die Lösung verwendest wirst du beim nächsten Problem wieder Stunden brauchen. Lieber einmal Zuviel gefragt, als gefrustet zu sein. Also scheu Dich nicht Fragen zu stellen, es wird ein Haufen Leser geben, die mitlenken und ggf. Um jede Deiner Fragen froh sind.
-
@mickym
habe es so nachgebaut. Funktioniert auch jetzt mit dem Dimmen.
Leider ist nun das Problem wenn ich einen "Aus" Befehl Sende er ja als Payload :{"on":false,"bright":50,"rgb":[254,0,0]} ausgibt.
Er schickt in dieser Payload dann das Kommando das die Lampe ausgehen soll ("on":false) und gleichzeitig wieder ein Kommando das sie wieder angeht da der Dimmwert wieder mit übermittelt wird. Daraus resultiert das die Lampe kurz ausgeht und dann wieder angeht.
Bekomme ich ihn dazu das er bei einem "false" wert einfach den Dimmwert weg lässst.
-
@hahne Du überprüfst einfach vorher mit einer Switch Node -ob on = false ist und dann sendest Du nur false.
-
@mickym vielen Dank
Funktioniert.
Muss ich mich mehr mit beschäftigen. Finde NodeRed im ersten Moment bisschen schwerer zu verstehen wie Blockly . Mit den verschiedenen Nachrichten Typen usw. Aber das wird schon.
Vielen Dank nochmal . -
@hahne Das ist eigentlich einfacher. Es ist nur EIN Nachrichtenobjekt, das verschiedene Eigenschaften haben kann.
Du kannst ja mal ein Blockly nehmen und das versuchen in NodeRed umzusetzen.