Seite 1 von 5

Container zur Steuerung des Sonos-Systems

Verfasst: Di Nov 19, 2019 10:43 pm
von alexbeer
Hallo zusammen,

ich bin erst mit dem TWS mit Docker in Kontakt gekommen. Finde das Konzept klasse und habe gestern das Image mkshb/sonoshttpapi:amd64-latest gefunden und in einen Container deployed.
Dieses Image funktioniert super.
Leider habe ich den Container ohne eine Konsole deployed.

Versuche ich nun den deployten Container zu editieren, dann bekomme ich in der Browser-Console folgenden Fehler:

Code: Alles auswählen

TypeError: Cannot read property 'MacAddress' of undefined
- zusätzlich:

Code: Alles auswählen

The Docker registry for the mkshb/sonoshttpapi:amd64-latest image is not registered inside Portainer, you will not be able to create a container. Please register that registry first.
Als mögliche Lösung habe ich https://github.com/portainer/portainer/issues/1140 gefunden:
WTFKr0 commented on 22 Aug 2017 •
It's not really a fix as we cannot create a container from an unknow registry using the current registry management implementation in Portainer

I think you can
In my tests, I do that for example when creating a container :
Registry : Let default dockerhub
Image: set full path with registry (quay.io/coreos/etcd for example)


Meines Erachtens ist die richtige Registry ja hinterlegt. Habt ihr eine Idee, was hier schief ist?
Andernfalls lösche ich den Container und deploye den neu - ich würde nur gerne verstehen, was ich hier so veranstalte :doh:

VG Alex

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Di Nov 19, 2019 10:48 pm
von gbglace
Hab es erstmal auf Frage gesetzt. Auch daraus kann man ja nen Bug, machen falls es einer ist.

Den Workaroaund hast ja schon beschrieben, Neuaufsatz.

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 9:41 pm
von alexbeer
Ich habe den Container gelöscht und neu angelegt. Jetzt funktioniert alles tadellos und kann auch einwandfrei editiert werden.
Obiges Verhalten konnte ich nicht mehr reproduzieren.
Ich habe es leider nicht geschafft, mich via Putty / WinSCP auf den Container zu verbinden. Über die Console im Portainer ging es einwandfrei.

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 9:44 pm
von Robert_Mini
Klingt spannend.

Wenn sonos bei dir läuft, wäre eine Kurzbeschreibung mit ein paar Screenshots eine tolle Sache für die KB.

Danke und lg
Robert

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 10:20 pm
von Gecks
Dicke Finger Robert 😉?

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 10:29 pm
von Robert_Mini
Den Spruch verstehe ich jetzt nicht...

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 10:32 pm
von Gecks
Robert_Mini hat geschrieben: Mi Nov 20, 2019 9:44 pm Kuezbeschreibung mut ein pasr screenshots
Oder ist das Niederländisch?

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 10:42 pm
von Robert_Mini
Aaaah-aber man versteht offensichtlich immer noch was ich meinte!

Danke!

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Mi Nov 20, 2019 11:27 pm
von alexbeer
Hi,

hier mein Entwurf für die KB:

Steuerung des Sonos-Systems


Mit der Einarbeitung in den TWS habe ich das Konzept der Container schätzen gelernt. Schon seit längerer Zeit gibt es für das Sonos-System die auf Node.js basierende offene API Sonos HTTP API.
Jedoch habe ich keinen Server in meinem Netzwerk, der node.js unterstützt. Nach etwas Recherche habe ich das Image mkshb/sonoshttpapi gefunden. Es werden hier sowohl arm, als auch amd64 Versionen bereitgestellt. Somit konnte ich im Sinne einer microservice archictecture die API als Docker-Container auf dem TWS betreiben.

Setup
  • Volume anlegen
    Bild
  • Image herunterladen
    Image: mkshb/sonoshttpapi:amd64-latest - hier den entsprechenden Tag aus dem Docker-Hub für den eigene TWS auswählen
    Bild
  • Container bauen
    hier nun das zuvor angelegte Volume eintragen und das Image auswählen
    Bild
    wie die Sonos HTTP API später im Netzwerk erreichbar sein soll, wird über den Reiter "Network" gesteuert.
    Ich habe mir unter "Networks" einen eigenen Eintrag geschaffen, um für jeden Container eine separate IP zu erzeugen, und dieser IP im lokalen DNS einen eigenen host zuweisen können - mit bridge funktioniert es aber auch.
  • Container Betrieb
    nach ein paar Momenten Wartezeit, sollte der Container "laufen", bzw im Status "healthy" sich befinden
    Bild
API Aufruf
Die API ist nun unter der angegeben IP - Port 5005 erreichbar:
Bild

Mit der URL

Code: Alles auswählen

http://192.168.1.3:5005/Wohnzimmer/play
wird auf den Sonos-Lautsprechern im Raum "Wohnzimmer" die zuletzt ausgewählte Audio-Quelle abgespielt.
Ausführliche Doku der API unter: http://jishi.github.io/node-sonos-http-api/

Beliebige Sprachausgabe via TTS
Die API unterstützt auch verschiedene TTS (Text-to-speech)-Engines. :dance:
In der offiziellen Doku wird http://www.voicerss.org/ erwähnt. Es soll laut unterschiedlichen Quellen auch die TTS-Engine von Microsoft und Amazon Polly unterstützt werden..

Hier das Vorgehen für voicerss:
  • Unter http://www.voicerss.org/registration.aspx einen Account registieren und aktivieren
  • API Key unter http://www.voicerss.org/personel/default.aspx kopieren
  • Im Portainer den sonoshttpapi-Container aufrufen und dort die Console öffnen - mir ist es bislang nicht gelungen von extern via Putty o.ö. auf den Container zuzugreifen.
    Bild
    Die Console mit User root aufrufen
    Bild
    Nun folgende Befehle absetzen, um den Ordner settings und darin die Datei settings.json anzulegen:

    Code: Alles auswählen

    mkdir settings
    cd settings
    > settings.json
    Nun die Datei settings per Editor VI anpassen:
    vi settings.json
    Hier nun folgenden Eintrag reinkopieren:

    Code: Alles auswählen

    {
      "voicerss": "<Hier dein API key von voicerssorg"
    }
    Mit :w die Änderungen speichern und die Konsole beenden
Nun sind Sprachausgaben wie

Code: Alles auswählen

http://192.168.1.3:5005/B%C3%BCro/say/Der%20TWS%20rockt%20meine%20Sonos/de-de
möglich :lol:

Sobald der TWS http Requests absetzen kann, kann diese API z.B. in die TWS Logiken integriert werden.

Ich freue mich schon, was für Ideen ihr hier noch habt.

VG Alex

Re: [Portainer] image is not registered inside Portainer, you will not be able to create a container.

Verfasst: Do Nov 21, 2019 3:21 am
von gbglace
Ohh, dann brauchst jetzt noch einen nodered Container damit sollte sich bis zur TWS Integration ein kleiner Umweg KNX zu http-Request realisieren lassen.

Danke für den Beitrag.

Wovon ich noch nicht so Recht ne Ahnung habe, bei Snips werden ja auch IP-Telehramme erzeugt die man auf ein Audiomodul per Netzwerk verteilen kann. Hier wäre interessant ob man einen solchen Sonos auch damit befeuern kann. Dann hätte man wohl auch ne Lösung statt der integrierten Alexas ne lokale Sprachsteuerung bzw erstmal davon die Ausgabe zu realisieren.