NEWS
Sonos-HTTP-API Installation für Newbies, Dummies und mich
-
Auswahl über Button, neue VIS Seite.....gewählte Playlist kriegt roten Rahmen,
Playlist wird in Userdata gespeichert ... -
das Cover hole ich mir über den Sonos State ....
setState("0_userdata.0.Sonos.absoluteAlbumArtUri", tablet.currentTrack.absoluteAlbumArtUri);
on({id: '0_userdata.0.Sonos.state', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.Sonos.state").val == true) { var tablet; var kueche; var wohnl; var wohnr; var test; try { require("request")('http://192.168.178.56:5005/tablet/state/', function (error, response, result) { tablet = JSON.parse(result); setState("0_userdata.0.Sonos.lautstaerke_tablet", tablet.volume); setState("0_userdata.0.Sonos.stationName", tablet.currentTrack.stationName); setState("0_userdata.0.Sonos.artist", tablet.currentTrack.artist); setState("0_userdata.0.Sonos.title", tablet.currentTrack.title); setState("0_userdata.0.Sonos.absoluteAlbumArtUri", tablet.currentTrack.absoluteAlbumArtUri); }).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } /* try { require("request")('http://192.168.178.56:5005/kueche/state/', function (error, response, result) { kueche = JSON.parse(result); setState("0_userdata.0.Sonos.lautstaerke_kueche", kueche.volume); }).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } try { require("request")('http://192.168.178.56:5005/wohnl/state/', function (error, response, result) { wohnl = JSON.parse(result); setState("0_userdata.0.Sonos.lautstaerke_wohnl", wohnl.volume); }).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } try { require("request")('http://192.168.178.56:5005/wohnr/state/', function (error, response, result) { wohnr = JSON.parse(result); setState("0_userdata.0.Sonos.lautstaerke_wohnr", wohnr.volume); }).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } */ setState("0_userdata.0.Sonos.state", false); } });
frag mich jetzt nicht .....ist soooolange her
probier einfach mal die State Funktion
-
seit ich deinen Code absetze:
http://192.168.1.253:5005/BÜRO/spotify/now/spotify:playlist:03QzL5uRB48iVZhSg3EGH1erhalte ich diese Fehlermeldung von der Sonos Api
{"status":"error","error":"Got status 500 when invoking /MediaRenderer/AVTransport/Control","stack":"Error: Got status 500 when invoking /MediaRenderer/AVTransport/Control\n at Object.invoke (/home/pi/node-sonos-http-api-master/node_modules/sonos-discovery/lib/helpers/soap.js:99:10)\n at Player.trackSeek (/home/pi/node-sonos-http-api-master/node_modules/sonos-discovery/lib/models/Player.js:552:15)\n at /home/pi/node-sonos-http-api-master/lib/actions/spotify.js:38:56\n at runMicrotasks (<anonymous>)\n at processTicksAndRejections (internal/process/task_queues.js:97:5)"}
und diese errors im spotify adapter debug log:
potify-premium.0 2021-01-29 17:19:51.793 error (8567) erron in request: 403 spotify-premium.0 2021-01-29 17:19:51.792 warn at processTicksAndRejections (internal/process/task_queues.js:79:11) spotify-premium.0 2021-01-29 17:19:51.792 warn at flush (/opt/iobroker/node_modules/asap/raw.js:50:29) spotify-premium.0 2021-01-29 17:19:51.792 warn at /opt/iobroker/node_modules/promise/lib/core.js:123:15 spotify-premium.0 2021-01-29 17:19:51.792 warn at tryCallOne (/opt/iobroker/node_modules/promise/lib/core.js:37:12) spotify-premium.0 2021-01-29 17:19:51.792 warn at /opt/iobroker/node_modules/iobroker.spotify-premium/main.js:262:38 spotify-premium.0 2021-01-29 17:19:51.792 warn (8567) Error spotify-premium.0 2021-01-29 17:19:51.791 warn at processTicksAndRejections (internal/process/task_queues.js:79:11) spotify-premium.0 2021-01-29 17:19:51.791 warn at flush (/opt/iobroker/node_modules/asap/raw.js:50:29) spotify-premium.0 2021-01-29 17:19:51.791 warn at /opt/iobroker/node_modules/promise/lib/core.js:123:15 spotify-premium.0 2021-01-29 17:19:51.791 warn at tryCallOne (/opt/iobroker/node_modules/promise/lib/core.js:37:12) spotify-premium.0 2021-01-29 17:19:51.791 warn at /opt/iobroker/node_modules/iobroker.spotify-premium/main.js:1580:20 spotify-premium.0 2021-01-29 17:19:51.791 warn at listenOnShuffleOn (/opt/iobroker/node_modules/iobroker.spotify-premium/main.js:1837:12) spotify-premium.0 2021-01-29 17:19:51.791 warn at listenOnShuffle (/opt/iobroker/node_modules/iobroker.spotify-premium/main.js:1820:12) spotify-premium.0 2021-01-29 17:19:51.791 warn at sendRequest (/opt/iobroker/node_modules/iobroker.spotify-premium/main.js:154:21) spotify-premium.0 2021-01-29 17:19:51.791 warn (8567) Error spotify-premium.0 2021-01-29 17:19:51.790 warn (8567) http request error not handled, please debug spotify-premium.0 2021-01-29 17:19:51.631 error (8567) erron in request: 403
Dann funktioniert bei mir der Spotify Player nicht mehr (keine Reaktion auf play, pause, ...) aber nur wenn von Spotify auf Sonos gespielt wird. Der Player in der VIS geht dann wieder, wenn andere Geräte außer Sonos gespielt werden.
Komisch ;(
-
@rehmosch
moin,
1.) vermutlich nix schlimmes, aber ich nutze nie umlaute ( büro = buero )2.) wofür brauchst du den Spotify Adapter, nehme ich nicht, den Spotify Account habe ich in der Sonos App, kann Dir
also nix zu den Fehler sagen3.) und zu dem Got status 500 when invoking /MediaRenderer/AVTransport/Control
google bitte mal, ist ein Fehler in der Sonos API, ist bekannt, und es gibt auch workaround's dazu
da kommt irgendwas durcheinander, ich meine hätte was mit den Ausgängen zu tun, hatte ich auch schonIch kann hier gerade keinen Link mehr einstellen, forbidden ??
-
@skokarl hey, wollte dir auch schon mehrmals antworten und war auch forbidden.
@skokarl said in Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Ich kann hier gerade keinen Link mehr einstellen, forbidden ??
War bei mir auch so, musste diesse domain auf meinen pihole auf die whitelist aktualisieren. Oder es ist irgendein Adblocker aktiv.
Ach ja, irgendwie kann ich nicht mehr spotify premium authorisieren, da der Link ins Nirvana geht. Werde es heute mal mit Vivaldi und Co (nach Installation) ausprobieren, da ich das Gefühl nicht loswerde das Chrome, Safari und Firefox hier mit Datenschutz und Sicherheit rumspinnen ;
Baue mir gerade meine Wlan Türklingel mit Xiaomi Fenstersensoren zusammen und es klappt ganz gut. Will jetzt noch Sonos (sayit), Hue, und Apple Nachrichten einbinden im Script
Schön das du hier so aktiv bist , Danke!
-
Ihr seid doch die Fachleute für Sprachausgaben mit say. Bei mir kommt es immer wieder vor, dass das Ende meines Satzes, der über AWS Polly gesagt werden soll, am Ende abgeschnitten wird.
Bin ich ein Einzelfall? Gab es das schon mal? Wie könnte ich das beseitigen? Danke für Eure Hilfe!
-
@skorpil
sorry, keine Ahnung -
Gibt es eine einfache Möglichkeit, aus dem JSON-State von einem Sonos einen Wert zu extrahieren?
Ich habe versucht, nachzuvollziehen, was DWM gemacht hat. Ich verstehe es so, dass er Sonos-Instanzen angelegt hat und über ein Script alle Sonos-States abfragt. Mir scheint es für meinen Zweck etwas zu viel, zum anderen übersteigt es sowohl meine JS und ioBroker-Fähigkeiten.
Was will ich? Ich möchte den Wert zu playbackState abfragen und abhänig von dem Ergebnis eine if else Funktion durchlaufen lassen. Ich habe mir ein Script zusammengebastelt, was zu einer festgelegten Uhrzeit einen Radio-Sender startet. Wenn allerdings schon ein Sender läuft, wechselt er den Radiosender nicht. Daher würde ich gerne wenn playbackState = !Stopped vorher die Wiedergabe stoppen lassen.
Mir fehlt aber ein Ansatz, die über http://192.168.66.111:5005/flur/state/ gelieferten JSON-Werte in Javascript zu bekommen. Oder ich verstehe die Lösungen nicht. Das könnte auch sein.
Zwischenzeitlich habe ich es gelöst bekommen. Allerdings war es weniger Try sondern mehr Error.
Ich hatte eigentlich gedacht, dass ich zwigend getState() brauche, ich habe mir jetzt aber zwischenzeitlich zusammengereimt, dass ich getState() nur brauche, wenn ich von irgendwo einen Wert holen will. Wenn ich die das Ergebnis über die request-Funktion mache wohl nicht?
const request = require('request'); request('http://192.168.66.111:5005/flur/state', (err, res, body) => { test = JSON.parse(body); //Controll-Log um JSON.parse Ergbnis zu sehen console.log(test); view = test.playbackState; console.log(view); console.log(test.volume); });
-
Ist es möglich einen Clip und einen say Befehl zu kombinieren? Möchte einen Gong gefolgt von TTS-Text ausgeben?
-
Kann es sein, dass die Restauration auf einer Sonos-Beam nicht funktioniert? Zumindest bei mir funktioniert sie nämlich nur auf der Play 1.
-
Nachdem meine neue FRITZ!Box den Sonos Speakern neue IP Adressen zugeteilt hat, läuft der Sonos Adapter bei mir leider auch nicht mehr zuverlässig und ich hab mich mit dem Thema Sonos API beschäftigt.
Soweit funktioniert das meiste, auch wenn jetzt deutlich mehr gescriptet werden muss als mit dem Sonos Adapter.Was mir fehlt (oder noch nicht gefunden) ist die Möglichkeit abzufragen ob in welcher Gruppe ein Speaker ist. Gibt es diese Möglichkeit?
-
@alle
Moin, moin."Trotz fast völliger Ahnungslosigkeit (only learning by doing)" habe ich 'SONOS-HTTP-API' und den
'webhook' auf meinem 'TinkerBoard S' eingerichtet bekommen.
Auf diesem Wege: "Großen Dank, für die SUPER Anleitungen hier."Mir sind die 'http Aufrufe' der 'API' zu 'umständlich' deshalb würde ich gerne nur die Datenpunkte
aus dem 'webhook' nutzen.2 Umstände bereiten mir allerdings noch 'Kopfschmerzen':
- alle 'say' Anweisungen über 'webhook Datenpunkte' werden in englisch augegeben.
Keine Ahnung wie ich auf deutsch umstelle, und das mit gewünschter Lautstärke.
Mit der Syntax eines 'http Aufruf' geht es jedenfalls nicht. - bei der '/state' Abfrage werden die 'Equalizer Einstellungen:' 'Bass', 'Treble' u. 'Loudness'
angezeigt, jedoch gibt es hierzu keine 'webhook Datenpunkte'.
Muss/kann ich mir diese selber erstellen? Wann ja, wie?
(Hintergrund: ich nutze 3 x Play:5 (Gen.1) und 4 x Play:1, die TTS Ansagen über Play:5 sind sehr
basslastig und dumpf, somit relativ unverständlich, würde gerne vor einer TTS Ansage den Bass
von xx auf -10 stellen, danach wieder zurück auf xx stellen.)
Sorry wegen meiner "Ahnungsloskeit"
- alle 'say' Anweisungen über 'webhook Datenpunkte' werden in englisch augegeben.
-
erstmal Danke für Dein Lob...... hoffe Du hast auch auf "gefällt mir" geklickt....unten rechts.
Aber mal im Ernst.....Was ist bei den http Aufrufen zu umständlich ? Willst Du alles über Sprache realisieren ?
Ich nutze alles über ein paar kleine Blocklys.... meine Frau will auch nicht mit dem Ding sprechen,
und mit IOBroker und Blocklys kannst Du sehr einfach verschiedenste http's ausführen. -
@skokarl
Nein, mit "Sprachsteuerung" hab ich nichts im Sinn, hab auch kein Alexa o.ä. im Betrieb.
Ich finde es einfach "geschmeidiger" für TTS einfach den Datenpunkt "say" mit dem
Text zubeschreiben. Leider bekomme ich dann alles auf englisch.
Habe mir in letzter Zeit etwas JavaScript angeeignet, mit Blockly hab ich mich noch
nicht beschäftigt.btw. Auf 'http://host_ip:1884/info' bekomme ich keine Antwort. In SonosAPI werden
die Änderungen aber angezeigt. In 'settings.json' habe ich def. den Port auf 1884
eingetragen.Ach ja, bis auf die TTS Funktion läuft mein Sonos-Adapter. Das das TTS nicht
funktioniert liegt evtl. auch an den Einstellungen hierfür, keine Ahnung was ich
hierfür wo alles eintragen muß, alle bisherigen Versuche blieben ohne Erfolg. -
Guten Morgen zusammen,
erstmal vielen Dank für die gute Arbeit. Ich bin erst seit kurzem dabei und verzweifele gerade. Ich versuche jetzt schon etwas länger die einzelnen Befehle nachzustellen. Leider ohne Erfolg.
Der Server läuft und ich komme auch mit der IP:5005 auf die Startseite.
Nur die einzelnen "http://192.168.XXX.XXX:5005/flur/play/sender" werden dann nicht umgesetzt.
Eigentlich wollte ich nur eine funktionierende Gruppe erzeugen und diese über den Master steuern. Alles andere funktioniert ja mit dem Adapter (für mich ausreichend gut und zuverlässig).
Kann mir jemand evtl. mal ein Blocklys zur Verfügung stellen mit welchem ich dieses Vorhaben umsetzten kann. -
mach bitte mal eins nach dem anderen, nicht alles auf einmal. ( Gruppen usw )
Probier erstmal eine Play Funktion.http://192.168.178.56:5005/tablet/tunein/play/144167
( "Tablet" ist ein Raum, Sender kommt von Tunein, 144167 ist RTL Radio )und auch wenn der Thread lang ist .... den mal komplett zu lesen hilft auch manchmal.
und bei einer Gruppe gibt es einen Master, dem Du dann den Sender schicken musst.
-
Vielen Dank,
leider funktioniert es bei mir nicht. Ich habe deinen Befehl mal angepasst und abgeschickt leider nichts. Bei mir sieht es so aus. http://192.168.1.6:5005/Garten/tunein/play/144167
Wie würde es denn aussehen wenn ich einen Sender aus den Favoriten abspielen möchte.....ich habe den Thread komplett gelesen, sonst hätte ich mich auch nicht gemeldet.
-
gib mal deinen Befehl in den Browser ein ....
Was kommt als Ergebnis ? ( error oder success ? )dann gib mal http://192.168.1.6:5005/state im Browser ein
Was kommt dann ?Ist Tunein in der Sonos APP (Dienste, Musik und Inhalte )
Wieviel Sonos Player hast Du ?
Gruppen angelegt ?...lösch die mal -
{"volume":14,"mute":false,"equalizer":{"bass":0,"treble":10,"loudness":false},"currentTrack":{"artist":"tunein","title":"Monrose - Even Heaven Cries","albumArtUri":"/getaa?s=1&u=x-sonosapi-stream%3aSTATION%253a14435%3fsid%3d264%26flags%3d8232%26sn%3d4","duration":0,"uri":"x-sonosapi-stream:STATION%3a14435?sid=264&flags=8232&sn=4","trackUri":"x-sonosapi-stream:STATION%3a14435?sid=264&flags=8232&sn=4","type":"radio","stationName":"tunein","absoluteAlbumArtUri":"http://192.168.1.76:1400/getaa?s=1&u=x-sonosapi-stream%3ASTATION%3a14435%3Fsid%3D264%26flags%3D8232%26sn%3D4"},"nextTrack":{"artist":"","title":"","album":"","albumArtUri":"","duration":0,"uri":""},"trackNo":1,"elapsedTime":173,"elapsedTimeFormatted":"00:02:53","playbackState":"PLAYING","playMode":{"repeat":"none","shuffle":false,"crossfade":false}}
-
Ich habe 4 Player, ich habe in der Sonos eine Gruppe angelegt. Ich werde die jetzt mal löschen. Darf der Sonos Adapter im Iobroker trotzdem laufen, oder muss ich diesen ausschalten.