NEWS
CD-Player an und aus mit Node-Red
-
Hallo!
Ich "Anfänger" habe mir das mal so zusammen gestellt, aber es funktioniert nicht.
Über Alexa kann ich zwar anschalten, aber aus funktioniert nicht. Da sagt sie zwar okay aber es passiert nichts.
Wo stimmts nicht?
4531_01.jpg
4531_02.jpg
4531_03.jpg
4531_04.jpg
4531_05.jpg
4531_06.jpg -
Hier noch ein Bild von den Szenen.
4531_zwischenablage01.jpg -
Bei deinem konkreten Problem kann ich dir nicht helfen, weil ich weder das Wemos-node noch deinen CD-Player im Einsatz habe.
Aber - deine Funktion-nodes senden konstant true oder false an den Ausgang (msg.payload = true/false), egal welches Signal am Eingang anliegt.
Das ist sicher nicht das was du willst.
Was das Memos-node anbetrifft, so arbeitet das schon prinzipiell. Aber eigentlich ist mir nicht klar, wozu das gut sein soll.
Nimm doch den Alexa2 Adapter, lege dir deine 3 states an und trigger die mit den iobrokerIn-nodes.
Also, konkret kann ich nicht helfen, aber ich könnte dir Zeigen, wie man da systematisch vorgeht, falls du das willst.
-
Ja es ist wahr ich möchte die CD Aus schalten.
Also wäre false nicht ok.
5230_martin_v1.jpg -
So wird das nichts;-)
1. verallgemeinere dein Problem
Eine_Nachricht_kommt_rein (Schalter/Alexa/what ever) --> (Nachricht evtl bearbeiten) --> Aktion (CD AN)
2. Lege fest, woher dein Input_Signal kommen soll (Input-node) und was deine Aktion auslösen soll (Output-node)
Ich bleib mal bei deinem Wemo
Wemo-node --> (node zum evtl bearbeiten) --> iobrokerOut node
3. Mach dir klar, wie das Signal am Input aussieht und wie es am Output aussehen muss
i.d.R ist das konfigurierbar
Da wir hier am Eingang und am Ausgang die selben Signale haben können(true/false) ist kein weiters node nötig.
ich lege fest: i.d.R: CD-ON = true true CD_OFF = false false Wemo-node ------> ioBokerOut state
4. Simuliere das Ganze
Für den Inputnode nimmt man einfach pro Signal(ON/OFF) einen Inject-node (dein Wemo erzeugt natürlich später beide Signale)
Für den Output-node nimmt man ein Debug-node
Erstelle den Flow und konfiguriere die nodes und teste das Ganze.
Im debug-panel kannst du die entsprechenden Nachrichten sehen, je nachdem ob du auf on oder off geklickt hast.
4. Ersetze Input / Outputnodes durch deine gewählten node (Wemos-node / ioBroker-Out) und konfigurieren diese. Den debug-node kannst du drin lassen, so siehst du, ob Daten von Alexa kommen oder nicht.
Lasse nun in der Alexa - App deine neuen Geräte suchen, da sollte jetzt ein cdPlayer auftauchen.
Wenn du alles richtig gemacht hast, kannst du nun mit deinen ioBroker state mit "Alexa, schalte cdPlayer an/aus" schalten, wobei dein ioBroker state auf true/false gesetzt wird.
5. Wenn alle klappt (und nur dann!) kannst du nun die beiden nodes kopieren und für die anderen Aktionen (spielen/hören) einfügen und entsprechend konfigurieren.
Das sollte es gewesen sein.
-
Danke für eure Hilfe.
Ich habe das jetzt so weit nachgemacht. Einschalten funktioniert auch.
Nur wir kriege ich jetzt das Ausschalten an das Node mit dran? Wenn ich es einfach mit dran hänge verwendet er zum ausschalten die Einschalten-Geschichte.
4531_zwischenablage01.jpg -
Hast du einen eigenen state für das Ausschalten?
Normalerweise gibt es nur einen, true=CD AN, false=CD AUS
Was soll den sonst dein "CD AN" bei true/false machen? das sind doch 2 Zustände
Du könntest natürlich auch 2 States benutzen:
State1(CD AN) = true -> player geht an
Aber wer setzt den dann wieder auf false? und was soll der planer dann machen?
-
Wenn du wirklich mit getrennten states arbeitest, musst du sowas machen:
True vom Input setzt deinen Output state, der automatisch nach einer Sekunde wieder auf false gesetzt wird (Impuls)
Naja, und das Ganze dann halt noch einmal für CD AUS
Hier der flow.
! ````
[
{
"id": "7a85b424.514b1c",
"type": "inject",
"z": "6afed17e.ffe838",
"name": "",
"topic": "",
"payload": "true",
"payloadType": "bool",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 170,
"y": 80,
"wires": [
[
"1ec05000.e86ef",
"9ca89a3c.bcbc6"
]
]
},
{
"id": "1ec05000.e86ef",
"type": "debug",
"z": "6afed17e.ffe838",
"name": "CD EIN",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 720,
"y": 80,
"wires": []
},
{
"id": "9ca89a3c.bcbc6",
"type": "delay",
"z": "6afed17e.ffe838",
"name": "after 1 sec",
"pauseType": "delay",
"timeout": "1",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"x": 330,
"y": 120,
"wires": [
[
"78ff3511.82a954"
]
]
},
{
"id": "78ff3511.82a954",
"type": "change",
"z": "6afed17e.ffe838",
"name": "true -> false",
"rules": [
{
"t": "change",
"p": "payload",
"pt": "msg",
"from": "true",
"fromt": "bool",
"to": "false",
"tot": "bool"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 510,
"y": 120,
"wires": [
[
"1ec05000.e86ef"
]
]
},
{
"id": "a4b6699c.0790e8",
"type": "comment",
"z": "6afed17e.ffe838",
"name": "CD EIN",
"info": "",
"x": 150,
"y": 40,
"wires": []
},
{
"id": "6bcbceba.4e489",
"type": "inject",
"z": "6afed17e.ffe838",
"name": "",
"topic": "",
"payload": "true",
"payloadType": "bool",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 170,
"y": 220,
"wires": [
[
"bb4ed84d.1ec32",
"6bf25011.74665"
]
]
},
{
"id": "bb4ed84d.1ec32",
"type": "debug",
"z": "6afed17e.ffe838",
"name": "CD AUS",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 720,
"y": 220,
"wires": []
},
{
"id": "6bf25011.74665",
"type": "delay",
"z": "6afed17e.ffe838",
"name": "after 1 sec",
"pauseType": "delay",
"timeout": "1",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"x": 330,
"y": 260,
"wires": [
[
"52e098a5.00a458"
]
]
},
{
"id": "52e098a5.00a458",
"type": "change",
"z": "6afed17e.ffe838",
"name": "true -> false",
"rules": [
{
"t": "change",
"p": "payload",
"pt": "msg",
"from": "true",
"fromt": "bool",
"to": "false",
"tot": "bool"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 510,
"y": 260,
"wires": [
[
"bb4ed84d.1ec32"
]
]
},
{
"id": "8fa26d7d.9a41e8",
"type": "comment",
"z": "6afed17e.ffe838",
"name": "CD AUS",
"info": "",
"x": 160,
"y": 180,
"wires": []
}
] -
Irgendwie kapier ichs nicht ganz.
Habe es jetzt so:
[ { "id": "3f0f046d.57e64c", "type": "wemo-emulator", "z": "b4ef89bd.1b7288", "name": "CD Player", "friendlyName": "CD Player", "serial": "22", "port": "1110", "onTopic": "CD AN", "onPayload": "true", "offTopic": "CD AUS", "offPayload": "false", "x": 157, "y": 1440, "wires": [ [ "17e6d863.f4dff8", "50a12ce1.70d6d4" ] ] }, { "id": "17e6d863.f4dff8", "type": "ioBroker out", "z": "b4ef89bd.1b7288", "name": "CD AN", "topic": "scene.CD_hören_AN", "ack": "false", "autoCreate": "false", "x": 698, "y": 1436, "wires": [] }, { "id": "496021cb.41c94", "type": "ioBroker out", "z": "b4ef89bd.1b7288", "name": "CD AUS", "topic": "scene.CD_hören_AUS", "ack": "false", "autoCreate": "false", "x": 681, "y": 1577, "wires": [] }, { "id": "eaf0267c.3e4ad8", "type": "debug", "z": "b4ef89bd.1b7288", "name": "Output-node", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 704, "y": 1494, "wires": [] }, { "id": "50a12ce1.70d6d4", "type": "delay", "z": "b4ef89bd.1b7288", "name": "after 1 sec", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "x": 330, "y": 1482, "wires": [ [ "e2d27b2e.d206f8" ] ] }, { "id": "e2d27b2e.d206f8", "type": "change", "z": "b4ef89bd.1b7288", "name": "true -> false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 510, "y": 1482, "wires": [ [ "17e6d863.f4dff8", "eaf0267c.3e4ad8" ] ] }, { "id": "3e56d627.8e56ea", "type": "comment", "z": "b4ef89bd.1b7288", "name": "CD EIN", "info": "", "x": 150, "y": 1402, "wires": [] }, { "id": "87b0de5.123d52", "type": "delay", "z": "b4ef89bd.1b7288", "name": "after 1 sec", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "x": 330, "y": 1622, "wires": [ [ "4b747b93.5a9cf4" ] ] }, { "id": "4b747b93.5a9cf4", "type": "change", "z": "b4ef89bd.1b7288", "name": "true -> false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 510, "y": 1622, "wires": [ [ "496021cb.41c94", "dc460f1d.e1a57" ] ] }, { "id": "aef51727.68db28", "type": "comment", "z": "b4ef89bd.1b7288", "name": "CD AUS", "info": "", "x": 160, "y": 1542, "wires": [] }, { "id": "57ed4c14.610084", "type": "wemo-emulator", "z": "b4ef89bd.1b7288", "name": "CD Player", "friendlyName": "CD Player", "serial": "22", "port": "1110", "onTopic": "CD AN", "onPayload": "true", "offTopic": "CD AUS", "offPayload": "false", "x": 159, "y": 1581, "wires": [ [ "496021cb.41c94", "87b0de5.123d52" ] ] }, { "id": "dc460f1d.e1a57", "type": "debug", "z": "b4ef89bd.1b7288", "name": "Output-node", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 697, "y": 1643, "wires": [] } ]
-
Hallo Martin,
der Wemo hatte bei mir nicht die Erwartung erfüllt.
Bin dann umgestiegen auf Alexa Local in Node Red.
Jetzt klappt das wunderbar mit dem Broadlink.
Probiere es mal so, siehe Bild.
5230_martin_v34.jpg -
> Irgendwie kapier ichs nicht ganz.
Nein, sieht aus als verstehst du wirklich nicht ganz was du da tust. Es hilft nichts, du must dir schon wenigstens die Infos zu den nodes durchlesen die du da einsetzt. Wenn du da mit dem Englischen Probleme hast, nimm einfach das hier: https://www.deepl.com/translate
Also
UniqueID = einzigartige ID = muss für jedes WEMO-node einzigartig sein! Nimm halt 33 für den 2.ten
Port siehe oben. Entweder leer lassen, dann sollte der einzigartig automatisch vergeben werden, oder besser selber fortlaufend nummerieren z.B. erstes Node 1110, 2.tes 1111 usw.
On Topic/Off Topic: Sollte zwar für die Funktion keine Rolle spielen, aber überleg dir was das heisst (soviel wie Thema/Bedeutung)
+--------------------------------------------------------------------------------------------------------------+ | Thema: CD ON | | egal, ob true oder false kommt. Es geht die ganze Zeit um CD ON | +--------------------------------------------------------------------------------------------------------------+ +-----------------------+ | | +------------+ +------------+ | Dein ioBroker | | "Alexa, | true | Wemo | true | state bekommt true | | schalte |+----->+ schaltet +--+---------------------------------------------^-> | und eine sec später | | CD ein" | | true | | | | false | | | | | | | | +----+ | +------------+ +------------+ | +--------------+ +---------------+ | | +-+ +---+ | | | warte 1sec | | | | | 1sec | | | und gib dann | |mach aus dem | | +-----------------------+ +---> true an den +----->true ein false +----+ true | Ausgang |true | |false | | | | +--------------+ +---------------+
Also lass on / off Topic weg oder benenne sie gleich.
-
Alexa local findest du hier, siehe Bild.
Mit dem Wemo Node hatten schon viele in der Vergangenheit schwierigkeiten.
Versuche es über Alexa local.
Zumindest bei mir hat der Wemo erst nach einem Konsole sudo reboot die Werte übernommen.
Im Debug konnte ich sehen das der Wemo immer eine String 1 oder String 0 ausgab.
Dieser wurde aber nie im nächsten Change oder Switch verarbeitet.
Egal was ich im Wemo geändert habe.
Jedes mal ein reboot zu machen fand ich zu aufwendig.
Bin dann auf Alexa local umgestiegen.
Geräte suchen in der Alexa App geht auch nur wenn der PI rebootet wird.
Dann findet die Alexa App neue Geräte.
5230_martin_v35.jpg -
Sorry, als blutiger Anfänger ist das alles ziemlich schwer.
Mit "Alexa Local" klappt bei mir gar nichts. Da findet Alexa nicht mal die Geräte.
Ich habe es jetzt mal ganz einfach gestrickt.
Jetzt funktioniert es bei AN schon wunderbar.
Nur bei AUS muss ich sagen "Schalte CD-Player aus an".
Kann ich das noch irgendwie vereinfachen?
Hilfe am Besten durch ändern des Flows:
[ { "id": "34fe4cce.62a8c4", "type": "wemo-emulator", "z": "b4ef89bd.1b7288", "name": "CD Player AN", "friendlyName": "CD Player AN", "serial": "22", "port": "1110", "onTopic": "CD AN", "onPayload": "true", "offTopic": "CD AUS", "offPayload": "false", "x": 116, "y": 1359, "wires": [ [ "97fdb9dd.d7bf88", "8a921b04.0f7b58" ] ] }, { "id": "97fdb9dd.d7bf88", "type": "ioBroker out", "z": "b4ef89bd.1b7288", "name": "CD AN", "topic": "scene.CD_hören_AN", "ack": "false", "autoCreate": "false", "x": 647, "y": 1355, "wires": [] }, { "id": "3b551ba6.1e2754", "type": "ioBroker out", "z": "b4ef89bd.1b7288", "name": "CD AUS", "topic": "scene.CD_hören_AUS", "ack": "false", "autoCreate": "false", "x": 630, "y": 1496, "wires": [] }, { "id": "8a921b04.0f7b58", "type": "debug", "z": "b4ef89bd.1b7288", "name": "Output-node", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 659, "y": 1304, "wires": [] }, { "id": "c39416d5.7f4e78", "type": "delay", "z": "b4ef89bd.1b7288", "name": "after 1 sec", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "x": 279, "y": 1401, "wires": [ [ "1b054236.6d945e" ] ] }, { "id": "1b054236.6d945e", "type": "change", "z": "b4ef89bd.1b7288", "name": "true -> false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 459, "y": 1401, "wires": [ [] ] }, { "id": "1190df6f.4497e1", "type": "comment", "z": "b4ef89bd.1b7288", "name": "CD EIN", "info": "", "x": 99, "y": 1321, "wires": [] }, { "id": "f5715e0b.27c1f", "type": "delay", "z": "b4ef89bd.1b7288", "name": "after 1 sec", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "x": 279, "y": 1541, "wires": [ [ "3cb1d77a.65c088" ] ] }, { "id": "3cb1d77a.65c088", "type": "change", "z": "b4ef89bd.1b7288", "name": "true -> false", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 459, "y": 1541, "wires": [ [] ] }, { "id": "3adcf41c.b174bc", "type": "comment", "z": "b4ef89bd.1b7288", "name": "CD AUS", "info": "", "x": 109, "y": 1461, "wires": [] }, { "id": "6f42ac2c.89d244", "type": "wemo-emulator", "z": "b4ef89bd.1b7288", "name": "CD Player AUS", "friendlyName": "CD Player AUS", "serial": "229", "port": "9822", "onTopic": "CD AUS", "onPayload": "true", "offTopic": "CD AN", "offPayload": "false", "x": 128, "y": 1500, "wires": [ [ "3b551ba6.1e2754", "3885d1f8.8ef27e" ] ] }, { "id": "3885d1f8.8ef27e", "type": "debug", "z": "b4ef89bd.1b7288", "name": "Output-node", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 640, "y": 1453, "wires": [] } ]
-
Ja ok bleibe locker,
einer von uns beiden,
es gibt verschiedene Wege, nimm mal den von rewenode.
Er muss aber sehen was der Wemo Node CD PLAYER AN und CD PLAYER AUS ausgibt.
Also ein Bild posten was den debug von Output-node-An und Output-node-AUS anzeigt.
Vorher hast du gesagt Alexa CD PLAYER AN und CD PLAYER AUS.
Bild 2.
Bin dann mal Weg,
Wemo ersetze duch Alexa local.
Klinke mich erst wieder ein bei " keiner mehr "
Für mich hat der Wemo Node ein Bug, da er den nächsten Change oder Switch nicht erreicht
obwohl dies im debug klar als String angezeigt wird.
@rewenode, bitte hier weiterführen.
Für einen Anfänger sind deine Hinweise zu hochtrabend.
Einfacher gestalten ist besser.
5230_martin_v55.jpg
5230_martin_v36.jpg -
> Nur bei AUS muss ich sagen "Schalte CD-Player aus an".
Es tut mir wirklich leid, das ich es offensichtlich nicht verständlicher ausdrücken kann. Allerdings beherzigst du auch meinen Rat nicht. Du must unbedingt lesen, was du da eigentlich konfigurierst.
Nehmen wir deinen wemo-node für AUS. Du gibst dem Ding also den Friendly Name: "CD Player AUS". Für Alexa heist das Teil nun "CD Player AUS". Nun willst du Alexa sagen, dass es das Ding einschalten soll.
Da erwartet Alexa einen Befehl wie "Alexa, schalte (Name_von_dem_Ding) an" Also bei dir: "Alexa, schalte CD Player AUS an" und das tut sie ja offenbar auch -)
Ich denke, du solltest erst mal selber etwas tüfteln. Ich bin sicher, du kommst schon dahinter.
@Ralla66, hatte ja weiter oben schon mal gesagt, dass ich den wemo-node in dieser Anwendung für überflüssig halte. Ich hab den eigentlich nur zum Test installiert um überhaupt zu sehen, was er falsch machen könnte und war auch nicht glücklich damit.
` > Für einen Anfänger sind deine Hinweise zu hochtrabend.Einfacher gestalten ist besser. `
Na, da warst du auch nicht erfolgreicher;-) - war ein Scherz!Man kann ja erstmal schlecht einschätzen, wie die Vorbelastung beim Fragenden ist.
Aber eines hab ich (für mich) gelernt. Am Anfang hilft nur lesen, lesen, lesen. Dann wird das schon.
-
So, nach vielen Versuchen, viel lesen und viel überlegen habe ich es geschafft.
Jetzt nur noch eine Frage. Warum erkennt Alexa das als "Color Light"? Kann man das irgendwie ändern?
4531_zwischenablage01.jpg