NEWS
Sonos-HTTP-API Installation für Newbies, Dummies und mich
-
@dwm sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Tag zusammen,
ich hab mal versucht, die Funktionalität der Sonos REST API über ein Script wieder auf Datenpunkte im ioBroker abzubilden.
https://github.com/dwm66/iobroker-scripts/tree/master/SonosAPIKlappt bis jetzt ganz gut
Hi. Ich wollte dein Script mal testen und bekomme folgende Fehlermeldung:
javascript.0 2020-01-16 14:12:15.348 error (21635) ReferenceError: dwmlog is not defined
Hast Du Dir da Dein eigenes Logging global definiert?
-
@eumats sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Hast Du Dir da Dein eigenes Logging global definiert?
Genau so ist es.
Findet man entweder hier (https://github.com/dwm66/iobroker-scripts/blob/master/debug-log/global/dwmlog.js), oder wenn man das nicht global definieren will, einfach die kleine Funktion mit in das sonos script reinkopieren.
Ich benutz das halt in allen meinen Scripten, dann kann ich beim Entwickeln debug-Ausgaben reinbauen und dann einfach abschalten ... (und wieder einschalten, wenn man einen Fehler sucht ) -
Ich hänge mich an das Thema gerade einfach mal ran. Bei mir funktioniert die API nach ein paar Stunden einfach nicht mehr. Es reicht allerdings den Service neu zu starten mit
sudo systemctl restart sonosapi.service
Das würde ich jetzt gerne alle 60 Minuten automatisiert durchführen. Könnte mir jemand sagen, wie ich das mit Blockly oder wenn das nicht möglich ist mit Javascript hinbekomme?
-
@Markus84
Ich bin jetzt nicht der Linux Crack, und das was Du möchtest ist sicherlich möglich.
Aber warum suchst Du nicht den Fehler warum die API nach Stunden ausfällt ?
In meinen Augen würde das mehr Sinn machen, ich denke auch mal, dass sich hier jemand meldet der Dir helfen kann. -
@skokarl said in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Aber warum suchst Du nicht den Fehler warum die API nach Stunden ausfällt ?
Da hast du natürlich vollkommen recht. Ich bin nur leider auch kein Linux-Experte und habe dahernach einer einfachen Lösung gesucht. Auf github und hier im Forum war leider nichts zu finden. Ich bin natürlich für jede Hilfe dankbar! Wenn mir jemand helfen könnte den Fehler zu finden wäre das klasse.
Hier die Fehlermeldung:
{"status":"error","error":"No system has yet been discovered. Please see https://github.com/jishi/node-sonos-http-api/issues/77 if it doesn't resolve itself in a few seconds."}
-
Hast Du mal unter dem Link nachgelesen ?
Was für eine Installation hast Du ?
Sieht aus als stimmt was mit Deiner Installation nicht. -
@skokarl
ioBroker läuft bei mir auf einem RPI4. Als Lautsprecher verwende ich den Ikea Symfonisk.Den Link hatte ich mir angesehen. Der Fehler scheint aber nicht vergleichbar zu sein. Ich kann nach wie vor die IP 192...:5005 aufrufen. Wenn ich allerdings versuche über Blockly oder über eine URL eine Sprachausgabe zu machen, kommt die Fehlermeldung.
Hast du irgendeine Idee, wie ich den Fehler eingrenzen könnte?
-
@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
über Blockly oder über eine URL eine Sprachausgabe zu machen,
wie sieht das Blockly aus?
-
@Homoran
das interessiert mich jetzt aber auch. -
@Homoran said in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
über Blockly oder über eine URL eine Sprachausgabe zu machen,
wie sieht das Blockly aus?
Das Blockly sieht wie folgt aus:
Zusammengesetzt sieht der Aufruf dann wie folgt aus: http://192.168.xxx.xxx:5005/sayall/bla bla bla/en-us/50
Ich habe bis auf den Text alles in Datenpunkte gelegt, damit ich es einfach global ändern kann und nicht jedes Skript durchgehen muss.
Es funktioniert solange einwandfrei, solange auch der URL-Aufruf funktioniert. Am Blockly-Skript kann es daher eigentlich nicht liegen.
-
@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Am Blockly-Skript kann es daher eigentlich nicht liegen.
und womit triggerst du das Skript?
-
@Homoran said in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
und womit triggerst du das Skript?
Das kommt ganz darauf an. Zum Beispiel verwende ich es für die Warnung bei zu lange geöffneten Fenstern. Ich habe aber auch zeitgesteuerte Trigger. Ich habe noch eine Box über den Sayit Adapter und Klinkenstecker direkt am RPI angebunden. Da die direkt angeschlossene Box funktioniert und die Blöcke im Skript direkt untereinander stehen, kann es am Trigger nicht liegen. Ich gehe davon aus, dass deine Frage darauf abzielt?
-
https://github.com/Homoran/iobroker.sonos_api#beispiel-fenster-offen-meldung
So einen Trigger vermisse ich bei dir
-
@Homoran said in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
https://github.com/Homoran/iobroker.sonos_api#beispiel-fenster-offen-meldung
Danke, aber mein Skript funktioniert ja perfekt. Zumindest solange bis es auf einmal aufhört nicht mehr zu funktionieren... Und das ohne ersichtlichen Grund. Und dann geht auch der Aufruf über die URL nicht mehr. Es kann also nicht am Skript liegen.
-
@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Es kann also nicht am Skript liegen.
Solange nicht die Ursache gefunden ist kann es überall dran liegen.
Also nochmal:
womit startet (oder eben nicht) dein Blockly?
hast du mal mit debug-Bausteinen gearbeitet um es einzugrenzen? -
Erst einmal vielen Dank für deine Hilfe.
Das Skript funktioniert nach einem Neustart des RPI oder auch nur nach einem Neustart des Services mit
sudo systemctl restart sonosapi.service
einwandfrei. Ebenso funktioniert die Sprachausgabe, wenn ich im Browser die URL http://192.168.100.10:5005/sayall/test/en-us/30 aufrufe.
Nach einigen Stunden funktioniert dann weder das Skript, noch der direkt Aufruf der URL. Von daher würde ich den Fehler nicht im Skript suchen. Bitte sei so gut und erklär mir, wenn hier meine Logik schon falsch sein sollte.
Die Fehlermeldung bei Aufruf der URL im Browser lautet:
{"status":"error","error":"No system has yet been discovered. Please see https://github.com/jishi/node-sonos-http-api/issues/77 if it doesn't resolve itself in a few seconds."}
-
@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
erklär mir, wenn hier meine Logik schon falsch sein sollte.
weil auf dem Weg zum Lautsprecher jeder Teilnehmer in der Kette ein Problem haben könnte, ODER irgendetwas zu dem notwendigen restart des services führt, weil es den Service ggf. blockiert
Daher wäre es sinnvoll nicht nach der Symptombekämpfung sondern nach einer Ursache zu suchen.
-
Hier ein Beispiel aus Blockly:
Der Trigger ist der Neustart des RPI. Einen weiteren Trigger gibt es in diesem Fall nicht. Funktioniert immer einwandfrei und auch nach Anhalten und Neustarten des RPI bzw. bei nutzen des restart Pfeils in Blockly ohne Probleme. Nach ein paar Stunden funktioniert es einfach nicht mehr.
-
@Markus84
Irgendwas verstehe ich nicht.@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Der Trigger ist der Neustart des RPI.
könnte funktionieren, wenn nach 30 sekunden nach Starten von ioB auch alles andere schon stabil läuft
gut soweit@Markus84 sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Nach ein paar Stunden funktioniert es einfach nicht mehr.
Wie oft startest du denn den RasPi in der Zeit neu?
bist du sicher, dass sich dadurch nicht einiges aufgehängt hat?
Deswegen auch meine pentrante Frage nach dem Trigger.js ist eine ereignisbasierte Schriftsprache, da wird nichts gestartet oder rebootet.
Da wird ein Trigger(Baustein) gesetzt, der durch das IMMER laufende skript auf ein Ereignis lauscht und daraufhin eine Aktion auslöst.ich könnte mir gut vorstellen, dass sich der js-Adapter bei so einer Aktion auch mal aufhängt, stecke da aber nicht tief genug in der Materie.
-
@Homoran said in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:
Wie oft startest du denn den RasPi in der Zeit neu?
Überhaupt nicht. Alles läuft absolut stabil. Daher starte ich den RPI eigentlich nie neu. Nur weil die Box irgendwann nicht mehr funktioniert hat, habe ich den RPI neugestartet. Da dies das Problem vorübergehend gelöst hatte, habe ich den Fehler weiter gesucht. Mir ist dann aufgefallen, dass auch ein Neustart des sonosapi.service ausreichend ist und der RPI nicht neu gestartet werden muss.
Alle anderen Trigger funktionieren auch wenn die Box nicht mehr funktioniert. Unter anderem funktioniert die im gleichen Skript mit gleichem Trigger ausgelöste per Klinke am RPI hängende Box immer und ohne Probleme.