[Modul] Bose SoundTouch

Fix für die legacy console ist online.

Uli

Gesendet von iPhone mit Tapatalk

Prima, bei mir funktioniert das Update.

Danke :slight_smile:

Hmm zu früh gefreut. Die Konsole funktioniert, aber der Rest leider nicht :frowning:

19.09.2018 21:53:16 | 39760 | ERROR | ScriptEngine | Ergebnis für Ereignis 27344
<br />
<b>Warning</b>: include_once(…/modules/SymconBoseSoundTouch/Bose/bose_soundtouch_api.php): failed to open stream: Datei oder Verzeichnis nicht gefunden in <b>/var/lib/symcon/scripts/39760.ips.php</b> on line <b>106</b><br />
<br />
<b>Warning</b>: include_once(): Failed opening ‚…/modules/SymconBoseSoundTouch/Bose/bose_soundtouch_api.php‘ for inclusion (include_path=’.:’) in <b>/var/lib/symcon/scripts/39760.ips.php</b> on line <b>106</b><br />
<br />
<b>Fatal error</b>: Uncaught Error: Class ‚BoseSoundTouchAPI‘ not found in /var/lib/symcon/scripts/39760.ips.php:107
Stack trace:
#0 /var/lib/symcon/scripts/39760.ips.php(22): getDeviceInformation()
#1 {main}
thrown in <b>/var/lib/symcon/scripts/39760.ips.php</b> on line <b>107</b><br />

Hi,

ich habe eine „Media“ Ton-Datzei hochgeladen, bin dann im Modul auf „(4) Mediendatei veröffentlichen“ und habe sie ausgewählt.

Danach hab ich die Änderungen übernommen.

Wenn ich jetzt auf den Button „Mediendatei veröffentlichen“ klicke passiert nichts.

der Ordner „user“ -> „media“ würde auch nicht angelegt.

Ich habe den Ordner dann selber von Hand angelegt, aber die Datei wird nicht drin gespeichert.

Viele Grüße
Markus

Hast du nur das Modul aktualisiert?

Gesendet von iPhone mit Tapatalk

Welches Betriebssystem?

Gesendet von iPhone mit Tapatalk

Hast du nur das Modul aktualisiert?

Ja. Sonst habe ich nichts verändert.

Ich würde hier ganz klar empfehlen den User Ordner im WebFront nicht dafür zu benutzen!
Es gibt schon lange die Webhooks, darüber kann z.b. auch eine Audiodatei welche in IPS angelegt über das Modul ausgeliefert werden.
Wofür ist das Veröffentlichen wichtig? Es kopiert doch jetzt nicht wirklich noch die Media Objekte als mp3 auf das Dateisystem, oder?
Dann liegen die Daten ja doppelt vor.
Michael

Warum bist du dann nicht nach dieser Vorgehensweise vorgegangen?:

Wer IP-Symcon 5.0 nutzt und aktualiseren will sollte folgende Vorgehensweise einhalten:

  1. IP-Symcon Backup erstellen.
  2. Das Modul in der Modulverwaltung zunächst löschen.
  3. Alle Bose SoundTouch Instanzen löschen.
  4. Alle existierenden BST Profile im Profilmanager löschen (ab der neuen Version wird dies automatisch erledigt).
  5. IP-Symcon neu starten.
  6. Bose SoundTouch Instanzen neu anlegen und konfigurieren.

Dies ist leider notwendig, denn deine alten Instanzen / Skripte greifen auf die neuen Funktionen zu, die alten gibt es nicht mehr.

Uli

Hallo Michael,

danke für den Hinweis, mit den Webhooks schaue ich mir nochmal an.

Es wird nichts kopiert, es wird nur ein Hardlink erzeugt, damitt auf die „Freigabe“ zugegriffen werden kann.

Das SoundTouch System braucht eine URL zur Audio Datei.

Uli

Also ich habe es eben nochmal auf meinem Mac und der Symbox probiert. Dort wird der Ordner media angelegt und ein Hardlink der ausgewählten Datei abgelegt.

Nenne mir doch mal bitte dein Betriebssystem.

Eigentlich habe ich es für Windows, Mac, Symbox und RPi getestet.

Uli

Media Dateien liegen aber nicht zwangsläufig (aktuell) auf dem Dateisystem.
Die können auch nur in RAM liegen und werden beim shutdown von IPS gesichert (siehe IPS_SetMediaCached).
Dann würde der Hardlink auf keine oder auf eine veraltete Datei zeigen.
Michael
PS: SetVisualisation nutzt ja IPS_SetHidden. Sollte man auch lassen; siehe 2 ii.
Best Practice zur PHP-Modul Erstellung · GitHub

Mit den WebHooks gucke ich mir noch einmal an, das Bose System braucht eine URL, um die Audiobenachrichtigung abspielen zu können.

zu siehe 2 ii. Das ist mir bekannt, ich braucht es aber für ein Projekt, welches nur die Audiobenachrichtigung benötigt. Den anderen Funktionen hätte den User nur verwirrt. Der User in meinem Projekt hat keinen Zugriff auf die Console. Ausserdem werden die Werte standardmässig auf true gesetzt, d.h. es wird alles angezeigt. Ob der User nun manuell Variablen ausblendet oder er es über das Modul macht, da kann man drüber streiten. Ich finde die „Best Practise“ schon wichtig, dennoch sollte dem Entwickler ein bisschen Freiraum gegeben werden. Gerade bei dem Set_Hidden halte ich das nicht so für tragisch.

Uli

Dabei ist das eine der wichtigsten Eigenschaften eines Objektes. Zumal diese Eigenschaften nicht vererbt wird, wenn man einen Link darauf setzt.
Da sollte man eher als Entwickler dem User die Freiheit überlassen. Nicht umgekehrt :smiley:
Habe mir nicht angesehen wann du sie veränderst; einfach diese Statusvariablen nicht anzulegen ist keine Option? Wozu wird sie den angelegt wenn sie nicht angezeigt wird? Dann wäre sie doch eh komplett unnötig…?
Michael

Der Ansatz ist ein anderer:
Es werden alle Variablen die für das Modul nötig sind angelegt. Auch wenn der User bestimmte Funktionen nicht nutzt.
Es blendet im Webfront für bestimme Bereiche die Variablen aus. D.h. wenn ein User es übersichtlicher haben möchte und z.B. die Einschalt- oder Ausschaltautomatik nicht nutzen möchte, dann blendet er diese einfach aus. Und bei mir hat ja der User die Freiheit es selber ein- bzw. auszublenden. Ober das nun im Objektbaum selbständig macht, in dem er die Visualisierung auf „false“ setzt oder im Instanzkofigurator->(3) Visualisierung den Schiebeschalter nutzt, führt dann zum gleichen Ergebnis. Also überlasse ich es ja dem User, er hat halt die Möglichkeit das aktiv in der Instanzkonfiguration zu tun.
Ich lasse das jetzt mal so stehen.

Da gehe ich lieber auf deinen Vorschlag der Webhooks ein. Ich wollte es dem User einfach machen, dass er die Audiodatei nicht auf sein NAS oder WebSpace ablegen muss, sondern direkt in IP-Symcon. Ich gebe zu, dass ist nicht der eleganteste Weg, aber man lernt ja immer noch dazu.

Uli

Unbenannt.JPGNächster Versuch…

Welchen Sender wolltest du anlegen?

Gib mir mal die Daten.

Ich vermute das in dem Feld Quellenangabe nix steht. In der legacy console ist das sehr klein, da der Wert für diese Spalte auf „auto“ steht. Warum nutzt du nicht die Web-Console zur Konfiguration, bzw. probierst es dort noch einmal?

Gruß

Uli

@Gosef

Sehe gerade, dass du Amazon einbinden willst. Das ist nicht ganz einfach, da die unterschiedliche Parameter nutzen.

Lass den Sender mal über die Bose App auf deinem gerät abspielen. Dann gehst du in den Instanzkonfigurator und drückst den Button „Wiedergabeinformationen anzeigen“. Das wird auf ins Message Log geschrieben. Den Output brauche ich mal, gerne dann auch per PN.

Sehe mir das dann an.

Gruß

Uli

Hallo Uli,

spielt keine Rolle was man einträgt. Das kommt bereits beim hinzufügen…

Ich werde am Wochenende mal näher testen. In der Woche ist die Zeit immer knapp :wink:

Gruß

Markus

Hallo Markus,

melde dich einfach, ich schaue mir das in der legacy console auch an.

Uli