Sonos Staus abfangen
Moderator: Co-Administratoren
Sonos Staus abfangen
Hallo zusammen
Wie kann ich mit Node Red einen Sonos Status abfangen. Ich möchte gerne in der CCu einen Status setzten "Alle Sonos Aus". Nun wenn ich aber über das iPhone das Sonos starte wird dies in der CCU nicht gesehen.
Gibt es da eine Möglichkeit den Status jedes Sonos abzufragen also ob es an oder aus ist ? anhand von dem würd ich dann eine variable in der CCU setzten.
Vielen Dank für eure Hlfe.
Thomas
Wie kann ich mit Node Red einen Sonos Status abfangen. Ich möchte gerne in der CCu einen Status setzten "Alle Sonos Aus". Nun wenn ich aber über das iPhone das Sonos starte wird dies in der CCU nicht gesehen.
Gibt es da eine Möglichkeit den Status jedes Sonos abzufragen also ob es an oder aus ist ? anhand von dem würd ich dann eine variable in der CCU setzten.
Vielen Dank für eure Hlfe.
Thomas
-
- Beiträge: 210
- Registriert: 22.09.2012, 20:56
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 11 Mal
Re: Sonos Staus abfangen
Sonos sind nie 'aus', falls sie am Stromnetz hängen. Ich Frage die Geräte auf den Playbackstatus ab. Hierzu kannst du node-red-contrib-sonos-plus nehmen.
Im Excel Sheet unter Examples sind die Status beschrieben: playing, transition,..
Im Excel Sheet unter Examples sind die Status beschrieben: playing, transition,..
Re: Sonos Staus abfangen
Hmm danke für deine Antwort
Da ich neu bin in Red Node. Kannst du mir nicht einen screenshot zeigen wie verknüpfen. ? Danke dir
Da ich neu bin in Red Node. Kannst du mir nicht einen screenshot zeigen wie verknüpfen. ? Danke dir
-
- Beiträge: 210
- Registriert: 22.09.2012, 20:56
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 11 Mal
Re: Sonos Staus abfangen
Da ich nicht genau weiß, was du machen willst starten wir mit diesem generellen flow. Da musst du nichts installieren.
Prinzip: Wir senden einen http request an den SONOS player und schauen, ob der player mit der üblichen Antwort (header Sonos) reagiert. Wenn ja, ist das Gerät erreichbar.
Beim http Request dauert der time out etwas. Deshalb habe ich einen 2. Strang eingebaut, in welchen du den Timeout (über delay node) sozusagen verkürzen kannst. Bei mir lief es mit 10 ms ganz gut - mit 1 ms nicht mehr.
Die Catch node fängt alle Fehler ab - unter anderem den, dass das Gerät im Netz nicht erreichbar ist. In diesem Fall kommt die delay node und sendet ein false.
Prinzip: Wir senden einen http request an den SONOS player und schauen, ob der player mit der üblichen Antwort (header Sonos) reagiert. Wenn ja, ist das Gerät erreichbar.
Beim http Request dauert der time out etwas. Deshalb habe ich einen 2. Strang eingebaut, in welchen du den Timeout (über delay node) sozusagen verkürzen kannst. Bei mir lief es mit 10 ms ganz gut - mit 1 ms nicht mehr.
Die Catch node fängt alle Fehler ab - unter anderem den, dass das Gerät im Netz nicht erreichbar ist. In diesem Fall kommt die delay node und sendet ein false.
Code: Alles auswählen
[{"id":"3cedf51f.6bc98a","type":"inject","z":"62cdb70e.b8cc78","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"192.168.178.37","payloadType":"str","x":140,"y":1797,"wires":[["7016e2fb.bf8a7c"]]},{"id":"8d947f7e.94d8e","type":"http request","z":"62cdb70e.b8cc78","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","x":530,"y":1797,"wires":[["61f44fa1.b9466"]]},{"id":"61f44fa1.b9466","type":"switch","z":"62cdb70e.b8cc78","name":"","property":"headers.server","propertyType":"msg","rules":[{"t":"cont","v":"Linux UPnP/1.0 Sonos/","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":670,"y":1797,"wires":[["75075933.593828","9e3b8c2a.de538"]]},{"id":"75075933.593828","type":"change","z":"62cdb70e.b8cc78","name":"true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":809,"y":1797,"wires":[["bf626131.b2648"]]},{"id":"52ddc88d.0acb28","type":"change","z":"62cdb70e.b8cc78","name":"false","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":809,"y":1897,"wires":[["bf626131.b2648"]]},{"id":"bf626131.b2648","type":"debug","z":"62cdb70e.b8cc78","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":978,"y":1796,"wires":[]},{"id":"7de6f721.3469d8","type":"delay","z":"62cdb70e.b8cc78","name":"delay","pauseType":"delayv","timeout":"50","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":666,"y":1897,"wires":[["52ddc88d.0acb28"]]},{"id":"9e3b8c2a.de538","type":"change","z":"62cdb70e.b8cc78","name":"reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":667,"y":1858,"wires":[["7de6f721.3469d8"]]},{"id":"7016e2fb.bf8a7c","type":"change","z":"62cdb70e.b8cc78","name":"","rules":[{"t":"set","p":"url","pt":"msg","to":"'http://' & $.payload & ':1400/info'","tot":"jsonata"},{"t":"set","p":"delay","pt":"msg","to":"10","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":1797,"wires":[["8d947f7e.94d8e","7de6f721.3469d8"]]},{"id":"d5547acb.0c58a8","type":"inject","z":"62cdb70e.b8cc78","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"192.168.178.27","payloadType":"str","x":140,"y":1857,"wires":[["7016e2fb.bf8a7c"]]},{"id":"1ebdcaff.449b95","type":"inject","z":"62cdb70e.b8cc78","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"192.168.178.24","payloadType":"str","x":140,"y":1917,"wires":[["7016e2fb.bf8a7c"]]},{"id":"90b9692.7e68098","type":"catch","z":"62cdb70e.b8cc78","name":"","scope":["8d947f7e.94d8e"],"uncaught":false,"x":510,"y":1757,"wires":[[]]},{"id":"42232be.d3a09d4","type":"comment","z":"62cdb70e.b8cc78","name":"adjust msg.delay","info":"The delay should be more then the time needed to process the http request plus reset delay.","x":340,"y":1760,"wires":[]}]
Re: Sonos Staus abfangen
Hallo Henning
Ich möchte über einen Node einen Status in der CCU setzen. Also wenn Sonos an dann setze „Status Sonos an“ in der CCU.
Dies kann ich irgendwie über den Node „Mute“ auslesen. Sonos gibt mir dann „stopped“ „playing“ oder „paused“. Jedoch bringe ich dies dann nicht in den status er ccu rein
Ich möchte über einen Node einen Status in der CCU setzen. Also wenn Sonos an dann setze „Status Sonos an“ in der CCU.
Dies kann ich irgendwie über den Node „Mute“ auslesen. Sonos gibt mir dann „stopped“ „playing“ oder „paused“. Jedoch bringe ich dies dann nicht in den status er ccu rein
Re: Sonos Staus abfangen
Bei mir sieht dies nun wie folgt aus auf dem Bild. Ev liege ich da total falsch.
Also die Überlegung wäre wie folgt:
Der Inject Node sendet alle paar Sekunden einen Anstoss an mein Sonsos. Dieses gibt dann den Status raus und gibt diesen weiten an den Switch Node. Dort werden die 3 Staten "Playing", "Stopped" und "Pausen" sortiert und an den Wechsel Node weiter gegeben. Diesen sendet dann "True" oder "False" an den CCU Status.
Liege ich da total falsch mit meiner Idee?
Danke für eure Hilfe.
Also die Überlegung wäre wie folgt:
Der Inject Node sendet alle paar Sekunden einen Anstoss an mein Sonsos. Dieses gibt dann den Status raus und gibt diesen weiten an den Switch Node. Dort werden die 3 Staten "Playing", "Stopped" und "Pausen" sortiert und an den Wechsel Node weiter gegeben. Diesen sendet dann "True" oder "False" an den CCU Status.
Liege ich da total falsch mit meiner Idee?
Danke für eure Hilfe.
-
- Beiträge: 210
- Registriert: 22.09.2012, 20:56
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 11 Mal
Re: Sonos Staus abfangen
Ist der Sonos Player immer am Stromnetz? Das macht die Sache einfacher und du kannst ein anderes Paket nehmen: node-red-contrib-notify. Du musst damit nicht ständig abfragen sondern erhältst eine Nachricht, wenn sixh der Status ändert.
[https://flows.nodered.org/node/node-red ... nos-notify]
[https://flows.nodered.org/node/node-red ... nos-notify]
And from 0.1.7, this node supports more events like Volume and PlayState
Re: Sonos Staus abfangen
OK. Wie muss ich dies genau verlinken? Probiere es am Abend aus. Sonos ist immer am Strom. Danke dir
Re: Sonos Staus abfangen
Also ich schaffe es nun mal dass das true und false ankommt. Wie kann ich aber die Systemvariable ändern. Dachte dies geht mit true und false wie bei den Autoren.
Kann mir da jemand helfen?
Kann mir da jemand helfen?
-
- Beiträge: 210
- Registriert: 22.09.2012, 20:56
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 11 Mal
Re: Sonos Staus abfangen
1. In ccu die sysvar vom type logic value definieren
2. in Node-RED die node sysvar nutzen und dort die obige sysvar auswählen
3. an die node deinen Wert true/false als msg.payload senden.
Hier ist die Doku im Wiki:
https://github.com/rdmtc/RedMatic/wiki/ ... ysvar-node
PS: Bildschirmfotos geben nur einen Teil der Informationen wieder. Bitte exportiere den Flow und packe ihn in </> code anzeigen.
Dann kann man ihn importieren und genauer sehen, was du machst.
2. in Node-RED die node sysvar nutzen und dort die obige sysvar auswählen
3. an die node deinen Wert true/false als msg.payload senden.
Hier ist die Doku im Wiki:
https://github.com/rdmtc/RedMatic/wiki/ ... ysvar-node
PS: Bildschirmfotos geben nur einen Teil der Informationen wieder. Bitte exportiere den Flow und packe ihn in </> code anzeigen.
Dann kann man ihn importieren und genauer sehen, was du machst.