Spiele Musik mit Squeezelite-X App funktioniert nicht

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Norick
Beiträge: 229
Registriert: 31. Jan 2022 06:35

Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von Norick »

Hallo
ich habe dem LMS und die Squeezelite-X Applikation auf einem Win11 Rechner installiert. Mit OH4.x kann ich diesen Player auch starten, stoppen etc.
Nun habe ich eine Rule erstellt die bei einem Trigger einen Radiosender welcher in den Favoriten ist abspielt und nach x Minuten wieder stoppt.

Ich habe folgende Rule erstellt:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      command: ON
      itemName: PowerSqueezebox_chn3
    type: core.ItemCommandTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      volume: 30
      sink: squeezebox:squeezeboxplayer:23787f5cb4
      sound: http://opml.radiotime.com/Tune.ashx?id=s2773&formats=aac,ogg,mp3,wmpro,wma,wmvoice&partnerId=16
    type: media.PlayAction
  - id: "3"
    configuration:
      itemName: SqueezeBox_Player_Sleep
      command: "60"
    type: core.ItemCommandAction
Nun ich bekomme dazu folgende Error im Logfile:

Code: Alles auswählen

2023-11-29 16:49:35.518 [ERROR] [ule.media.internal.PlayActionHandler] - Error playing sound 'http://opml.radiotime.com/Tune.ashx?id=s2773&formats=aac,ogg,mp3,wmpro,wma,wmvoice&partnerId=16
- Kann ich nicht einfache unter "sound" den Radiosender so angeben?
- Kann man hier auch direkt einen "Win-Pfad" einfügen?
- Kann ich den Squeezebox Channel "Sleep" so verwenden dass dieser nach 60min abschaltet?

Danke

Benutzeravatar
udo1toni
Beiträge: 13696
Registriert: 11. Apr 2018 18:05
Answers: 221
Wohnort: Darmstadt

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von udo1toni »

Nein, Du kannst hier meines Wissens lediglich eine Datei angeben, welche im Dateisystem des openHAB Servers angelegt sein muss.
Für Streams solltest Du im LMS eine passende Adresse hinterlegen und in einer Rule (mit "echtem" Code) die passende Playlist aufrufen.
Du kannst auch direkt die Streamadresse setzen, das ist aber vergleichsweise umständlich :)
openHAB4.1.1 stable in einem Debian-Container (bookworm) (Proxmox 8.1.4, LXC), mit openHABian eingerichtet

Norick
Beiträge: 229
Registriert: 31. Jan 2022 06:35

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von Norick »

udo1toni hat geschrieben: 29. Nov 2023 21:56 Nein, Du kannst hier meines Wissens lediglich eine Datei angeben, welche im Dateisystem des openHAB Servers angelegt sein muss.
Ja so funktioniert es tatsächlich. Man kann so nur lokal gespeicherte Soundfiles abspielen!

udo1toni hat geschrieben: 29. Nov 2023 21:56 Für Streams solltest Du im LMS eine passende Adresse hinterlegen und in einer Rule (mit "echtem" Code) die passende Playlist aufrufen.
Du kannst auch direkt die Streamadresse setzen, das ist aber vergleichsweise umständlich :)
Das wäre noch interessant. Du meinst mit echtem Code ein Script aus der UI erstellen? Hättest du ein Beispiel wie man diese Adresse anlegt? Ich sehe in der Squeezebox lediglich die Streamadresse welche dem Radiosender zugeordet ist.

Benutzeravatar
udo1toni
Beiträge: 13696
Registriert: 11. Apr 2018 18:05
Answers: 221
Wohnort: Darmstadt

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von udo1toni »

Du legst in den Favoriten die Stationen mit Namen und Streaming Adresse an, z.B. die URL http://opml.radiotime.com/Tune.ashx?id= ... c519e581ca für SWR3, als Namen gibst Du dann swr3 an.
Anschließend kannst Du an den Channel playFavorite den String swr3 schicken und der Player schaltet auf den Stream unter der angegebenen URL um.
Es gibt auch ein Widget für Squeezeboxen, in dem Du die Favoriten direkt per Dropdown Liste auswählen kannst. Dafür steht ein Channel zur Verfügung, über den das Squeezebox Binding automatisch die Favoriten vom Logitechmediaserver lädt. Das ist der einzige Channel, den die LMS Bridge kennt :)
openHAB4.1.1 stable in einem Debian-Container (bookworm) (Proxmox 8.1.4, LXC), mit openHABian eingerichtet

Norick
Beiträge: 229
Registriert: 31. Jan 2022 06:35

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von Norick »

Ok danke. Ich habe jetzt die Favoriten so in der Squeezebox gespeichert bzw. ich sehe auch den URL Link zu jedem Radiosender oder Musikstück. Jetzt wollte ich dazu folgende Rule machen die aber nicht funktioniert:

Code: Alles auswählen

rule "Musik"

when
    Item PowerSqueezebox_chn4 command
then
    if(receivedCommand==ON) {
        actions.Audio.playStream('squeezebox:squeezeboxplayer:23787f5cb4', 'file:///D:/Musik/Relax/Test.mp3', (35/100));
    } 
    else if(receivedCommand==OFF) {

    }
end
Eigentlich soll diese nur ein Lied aus den Favoriten abspielen sobald der Trigger kommt.

Benutzeravatar
udo1toni
Beiträge: 13696
Registriert: 11. Apr 2018 18:05
Answers: 221
Wohnort: Darmstadt

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von udo1toni »

Also erst Mal musst Du den korrekten Trigger verwenden.
Dann, es gibt nur exakt zwei mögliche Commands für ein Switch Item, das bedeutet, es bringt nichts, nach dem else noch eine weitere Prüfung vorzunehmen.
Außerdem verstehe ich nicht, warum Du nun mit der nächsten Action um die Ecke kommst. Ja, man kann das über Actions erledigen, aber nein, das hat keine Vorteile.
Der angegebene Pfad (D:/Musik/Relax/Test.mp3) ist ungültig. Entweder, es handelt sich um ein GNU/Linux-System, dann gibt es kein D:, oder es handelt sich um ein Windows System, dann besteht der Pfad aus Backslashes, also D:\Musik\Relax\Test.mp3.
Weiterhin sollte klar sein, dass Squeezelite-x keine lokalen Dateien abspielt, sondern ausschließlich solche, die der Server ausliefert. Der Pfad (file://) bezieht sich also immer auf das System, auf dem der LMS läuft, nicht auf den Rechner, auf dem squeezelite oder squeezelite-x läuft.

Die Favoriten spielst Du über den Channel playFavorite ab:

Code: Alles auswählen

rule "Musik"

when
    Item PowerSqueezebox_chn4 received command
then
    if(receivedCommand == ON) {
        playFavoriteSqueezebox_chn4.sendCommand("swr3")
        volumeSqueezebox_chn4.sendCommand(35)
    } else {
        controlSqueezebox_chn4.sendCommand("PAUSE")
    }
end
Dabei gilt, dass playFavoriteSqueezebox_chn4 ein String Item ist, welches mit dem playFavorite Channel des Players verknüpft ist. controlSqueezebox_chn4 ist ein Player Item, welches mit dem control Channel des Players verknüpft ist.
volumeSqueezebox_chn4 ist ein Dimmer Item, welches mit dem volume Channel verknüpft ist und die Lautstärke wählt.
Wahlweise könnte man auch noch stopSqueezebox_chn4 als Switch Item anlegen und dies mit dem stop Channel verknüpfen, womit man dann die Wiedergabe eines Titels stoppt (und den Titel auf den Anfang zurücksetzt). Der betreffende Befehl heißt stopSqueezebox_chn4.sendCommand(ON).
Und natürlich muss ein Element swr3 in den Favoriten existieren, dessen Wiedergabe dann unmittelbar startet.
Möchtest Du einen bestimmten Musiktitel abspielen, legst Du ihn entweder als Favoriten an oder Du erzeugst eine Playlist mit dem Titel als Favoriten. So oder so rufst Du den Favoriten auf, keinen Stream. Der LMS kümmert sich um den ganzen Rest.
openHAB4.1.1 stable in einem Debian-Container (bookworm) (Proxmox 8.1.4, LXC), mit openHABian eingerichtet

Norick
Beiträge: 229
Registriert: 31. Jan 2022 06:35

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von Norick »

Ok danke. Ich muss vielleicht noch vorweg schicken dass die Musikfiles lokal auf dem gleichen server sind (D:) wie auch der LMS und der Squeezelite player ebenfalls auf dem gleichen Server installiert sind bzw. OH.

Nun wenn ich deine Rule so nehme läuft es noch nicht und ich bekomme folgende Fehlermeldung:

Code: Alles auswählen

2023-12-03 11:17:08.176 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID '6fdc43c9b1' failed:  ___ rule  ___ "Einschlafmusik"

when
    Item PowerSqueezebox_chn4 re ___ ceive ___ d command
then
    if(receivedCommand == ON) {
        logInfo("SQUEEZE", "Received trigger ON")
        playFavoriteSqueezebox_chn4.sendCommand("swr")
        volumeSqueezebox_chn4.sendCommand(35)
    } else {
        controlSqueezebox_chn4.sendCommand("PAUSE")
    }
end
   1. The method or field rule is undefined; line 1, column 0, length 4
   2. The method or field when is undefined; line 3, column 23, length 4
   3. The method or field received is undefined; line 4, column 58, length 8
   4. The method or field command is undefined; line 4, column 67, length 7
   5. The method or field then is undefined; line 5, column 75, length 4
   6. The method or field playFavoriteSqueezebox_chn4 is undefined; line 8, column 170, length 27
   7. The method or field volumeSqueezebox_chn4 is undefined; line 9, column 228, length 21
   8. The method or field controlSqueezebox_chn4 is undefined; line 11, column 287, length 22
   9. The method or field end is undefined; line 13, column 337, length 3
   10. This expression is not allowed in this context, since it doesn't cause any side effects.; line 1, column 5, length 16
   11. This expression is not allowed in this context, since it doesn't cause any side effects.; line 4, column 32, length 4
   12. This expression is not allowed in this context, since it doesn't cause any side effects.; line 4, column 37, length 20
Mir scheint dass die Rule gar nicht ausgeführt wird oder?
Ich bekomme auch keinen LOG den ich noch eingefügt habe.

Benutzeravatar
peter-pan
Beiträge: 2535
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von peter-pan »

Kann es sein, dass die Rule-Datei nicht richtig abgespeichert ist ? Diese Unterstriche

Code: Alles auswählen

___ rule  ___ "Einschlafmusik"
Item PowerSqueezebox_chn4 re ___ ceive ___ d command
sind schon etwas komisch !

Hat die Rule-Datei auch das richtige Format ?
RasPi4b-4Gb-SSD_120Gb/OH 4.1.1-stable/Test Pi5/8GB(PiOS Lite 64-bit(bookworm) OH4.1.1 openhabian

Benutzeravatar
udo1toni
Beiträge: 13696
Registriert: 11. Apr 2018 18:05
Answers: 221
Wohnort: Darmstadt

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von udo1toni »

Du musst die Rule (in der Form, in der ich sie gepostet habe) als Datei abspeichern (in $OPENHAB_CONF/rules/ in einer Datei, deren Name auf .rules enden muss, z.B. meine.rules)

Alternativ kannst Du die Rule auch über die UI anlegen, dann muss allerdings klar sein:
Der Teil zwischen when und then sind alle Trigger, die die Rule auslösen. Das musst Du also als Trigger für die UI Rule definieren.
Der Teil zwischen then und end ist der auszuführende Code (die Schlüsselworte sind NICHT Teil des Codes)
Beim Code handelt es sich um eine DSL Rule, entsprechend musst Du als Action Script auswählen, und als Script Sprache die Rules DSL.
openHAB4.1.1 stable in einem Debian-Container (bookworm) (Proxmox 8.1.4, LXC), mit openHABian eingerichtet

Norick
Beiträge: 229
Registriert: 31. Jan 2022 06:35

Re: Spiele Musik mit Squeezelite-X App funktioniert nicht

Beitrag von Norick »

Dann bevorzuge ich die UI-Variante - ist für mich einfacher... Du schreibst dazu:
udo1toni hat geschrieben: 3. Dez 2023 19:39 Der Teil zwischen when und then sind alle Trigger, die die Rule auslösen. Das musst Du also als Trigger für die UI Rule definieren.
das heisst diese Zeile für den Trigger kann ich dann so lassen? Das heisst wenn das Item auf "ON" ist soll es ja triggern..

und...
udo1toni hat geschrieben: 3. Dez 2023 19:39 Beim Code handelt es sich um eine DSL Rule, entsprechend musst Du als Action Script auswählen, und als Script Sprache die Rules DSL.
was ändert sich den hier für den Code? Wäre doch auch hier wieder das gleiche oder?

Antworten