Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pfischi
    antwortet
    Kleines Beta-Release-Update (v0.8b1):

    - kleinere Updates
    - Deezer-Titel werden jetzt korrekt angezeigt (da hatte Sonos was geändert)
    - Sonos-Kommandozeilen-Tool kann jetzt mit Parametern gestartet werden ("sonos_cmd -h" für Hilfe)

    HIER gibts die neue Version.


    Grüsse,

    Stefan

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Ist schon wirklich verlockend...
    Den Raspberry behalten, Sonos, Logitech Harmoney, etc. sind bei openHAB mittlerweile auch dabei.

    Bei Callidomus kommt halt auch noch die Anschaffung neuer Hardware dazu. Nochmal 300 Euro +/- für einen NUC o.ä.

    Haaach....

    Einen Kommentar schreiben:


  • blutwurst
    antwortet
    Zitat von RoyalTS Beitrag anzeigen


    Ich bin gerade hin und her gerissen, ob ich auf Callidomus oder doch gleich komplett auf OpenHAB wechsel.

    Grüße
    Thorsten
    Hallo,

    Stehe auch grade vor dieser Qual der Wahl.....eigentlich mag ich ja mein Sh.py.
    So wie ich das sehe, wird es woh openHAB werden.
    Aber wenn ich sehe, was openHAB alles schon mitbringt..... hätte ich wohl früher etwas mehr Schlaf haben können.

    mhh, mal sehen, wo die Reise hingeht.
    Daher hab ich mein kleines "sonos discover Problemchen" momentan mal etwas weiter hinten angesiedelt....


    Gruß

    AXL

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Ich bin in Kontakt mit Marcus. Nach der L+B weiß ich auch mehr. Prinzipiell kann das Grundgerüst so bleiben, der Broker ist ja Plattform unabhängig. Jedoch weiß ich nicht, wie weit der Broker als eigener Daemon auf dem gleichen System laufen kann. Jedenfalls ist eine Umsetzung fest geplant. Im schlimmsten Fall kann der Broker auf einem Raspi laufen.

    Grüsse,

    Stefan
    Zuletzt geändert von pfischi; 11.03.2016, 11:29.

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Hallo Stefan!

    Hast du dir schon Gedanken bzgl. Port zum "neuen" Callidomus gemacht?
    Ich bin gerade hin und her gerissen, ob ich auf Callidomus oder doch gleich komplett auf OpenHAB wechsel.

    Grüße
    Thorsten

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    In dem dev-branch des Brokers gibt es wieder ein relativ großes Update des Brokers. Wie immer bleibt es ca. 3-4 Wochen im Developer-Zweig, danach gibt es ein Release.

    Hier kurz die Änderungen neben zahlreichen Bugfixes:
    • GoogleTTS neu implementiert, funktioniert nun zuverlässig ohne nervige Captchas
    • nur noch der "locale"-Mode wird unterstützt, d.h. es muss ein entsprechender Pfad für den Broker vorhanden sein, wo dieser die lokal gespeicherten mp3 abruft (siehe Doku)
    • Playlisten wurden nun komplett auf die sogenannten "Sonos-Playlists" umgestellt
    • neues Sonos_item-Attribute "sonos_playlists", damit erhält man alle Playlisten durch ',' getrennt (diese Listen muss man noch auf einem entsprechenden Sonos-Client, wie z.B. iPad erstellen, hier überlege ich mir noch was)
    • neue Funktion "load_sonos_playlist" zum Laden einer Playlist hinzugefügt (siehe Doku zur Implementation)
    • die alten Aufrufe "set_playlist" und "get_playlist" wurden entfernt

    Ich habe die entsprechenden Beispiele der Items bereinigt und ergänzt. Bei Fragen zur Implementation stehe ich gerne mit Rat und Tat zur Seite.


    Sonos Broker v0.8b
    sh-Plugin v1.8b


    Grüsse,

    Stefan
    Zuletzt geändert von pfischi; 06.03.2016, 16:30.

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von Astrafahrer Beitrag anzeigen
    Hallo zusammen,
    ich habe heute mit der Sonoseinbindung weitergemacht. Play, Stopp und Mute funktioniert schon mal. Bei play_snippet verstehe ich die Syntax nicht wirklich. Ich bekomme mit sonos_cmd und track_url leider nur immer einen leeren Eintrag.

    Hat jemand ein Beispiel aus der Praxis mit play_snippet für mich?

    Dankeschön!

    Grüße
    Dieter
    Also wenn du play_snippet per sonos_cmd aufrufst, dann kannst du eine direkte URL einfügen und abspielen.

    1. direkt als Links aus dem Netz oder von einem deiner Server (z.B. als vordefinierte Ansage. Beispiel: http://192.168.178.2/snippets/Warnung.mp3)
    2. als Sonos-spezifischer Link. Den kann man nur bekommen, wenn man einen entsprechenden Titel sich normal anhört (z.B. von Deezer) und sich den entsprechenden Link aus dem Attribute "track_url" notiert (z.B. x-sonos-spotify:spotify%3atrack%3a3xCk8npVehdV55KuPdjrmZ?s id=9&flags=3

    "play_snippet" und "play_tts" setzen nach Abspielen des Samples die vorhergespielte Playlist / Musik an der Stelle fort, wo sie unterbrochen wurde. "play_uri" (von den Parameter identisch zu "play_snippet", tut das nicht.

    Grüße,

    Stefan

    Einen Kommentar schreiben:


  • DerTomsn
    antwortet
    Astrafahrer Ein Beispiel für play_snippet ist in der Doku: https://github.com/pfischi/shSonos#p_snippet. Den Zusammenhang mit sonos_cmd bzw. track_url verstehe ich leider nicht.
    pfischi Hast du eine Idee, was mein Problem beim Cover auslösen könnte?

    Danke!
    Grüße,
    Thomas

    Einen Kommentar schreiben:


  • Astrafahrer
    antwortet
    Hallo zusammen,
    ich habe heute mit der Sonoseinbindung weitergemacht. Play, Stopp und Mute funktioniert schon mal. Bei play_snippet verstehe ich die Syntax nicht wirklich. Ich bekomme mit sonos_cmd und track_url leider nur immer einen leeren Eintrag.

    Hat jemand ein Beispiel aus der Praxis mit play_snippet für mich?

    Dankeschön!

    Grüße
    Dieter

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von DerTomsn Beitrag anzeigen
    Hallo liebes Forum,

    die Sonos Anbindung läuft bei mir mit Smarhome.py und SmartVISU super.
    Lediglich das Album Cover will nicht.
    Ich habe alles installiert und konfiguriert wie beschrieben (kann jeder sagen )
    Das SmartVISU Widget will aber irgendwie das Album nicht auflösen.

    Diese Zeile im sonos.html
    {{ sonos.cover(id~'cover', gad_cover) }}
    wird bei mir in ein broken Image mit der Adresse "http://<IP>/smartVISU/SONOS_Testboard.track_album_art" aufgelöst.

    Wenn ich gad_cover im sonos.html testweise per {{ basic.value(id~'test',gad_cover) }} ausgebe, bekomme ich die richtige Cover URL.

    Hat jemand eine Ahnung woran das liegen kann?

    Vielen lieben Dank,
    Thomas
    Leider (noch) nicht so wirklich. Am Wochende hab ich das neue Release fertig, dann schau ich mir mal das Widget an. Bisher hatte ich das private noch nicht im Einsatz. Falls sich hier aus dem Forum jemand berufen fühlt, beim Widget zu helfen, dann immer her damit

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • DerTomsn
    antwortet
    Hallo liebes Forum,

    die Sonos Anbindung läuft bei mir mit Smarhome.py und SmartVISU super.
    Lediglich das Album Cover will nicht.
    Ich habe alles installiert und konfiguriert wie beschrieben (kann jeder sagen )
    Das SmartVISU Widget will aber irgendwie das Album nicht auflösen.

    Diese Zeile im sonos.html
    {{ sonos.cover(id~'cover', gad_cover) }}
    wird bei mir in ein broken Image mit der Adresse "http://<IP>/smartVISU/SONOS_Testboard.track_album_art" aufgelöst.

    Wenn ich gad_cover im sonos.html testweise per {{ basic.value(id~'test',gad_cover) }} ausgebe, bekomme ich die richtige Cover URL.

    Hat jemand eine Ahnung woran das liegen kann?

    Vielen lieben Dank,
    Thomas

    Einen Kommentar schreiben:


  • 2pi
    antwortet
    Hi Stefan,

    bin seit dem Wochenende auch dabei, mir deine Sonos Integration anzusehen - super Sache.

    Bei play_tts ist mir allerdings wieder das capcha von Google dazwischen gekommen - kein Feedback von Google Seite und damit kein mp3 file. Die Anpassung mit dem User-Agent hat bei mir nicht gewirkt, Google war wohl der Meinung, ich wär ein Robot...

    Hatte ein wenig mit Alternativen experimentiert und bin auf gTTS (https://pypi.python.org/pypi/gTTS) gestossen und das Paket dann installiert. Habe mal quick and dirty in utils.py die Erzeugung des files geändert:

    Code:
    from gtts import gTTS
    
    ...
    
        try:
            tts = gTTS(text=(tts_string), lang=tts_language)
            tts.save(abs_fname)
        except Exception as e:
            raise ("Couldn't obtain TTS from Google.\nError: {}".format(e.errno))
    Damit funktionierte die Erzeugung des mp3's zumindest ohne Probleme. Mit gTTS sind auch Texte mit mehr als 100 Zeichen möglich.

    Gruss
    Holger

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    @blutwurst

    würde es dir etwas ausmachen mir deinen kompletten smarthome Ordner zukommen zu lassen (gerne auch als PM). Dann kopier ich den mal in meine Entwicklungsumgebung, dann finde ich den Fehler schneller.

    Gruss,
    Stefan

    Einen Kommentar schreiben:


  • blutwurst
    antwortet
    Zitat von pfischi Beitrag anzeigen



    Kannst du mal den class_name in der plugin.conf auf "Sonos" (Großbuchstabe am Anfang) setzten.


    Gruss,

    Stefan
    ...Hallo Stefan,

    scheint nun zu klappen, hab nur den Anfangsbuchstaben geändert.
    Wenn das weiter stabil läuft, bist Du unser Februarheld ...... Danke, DANKE
    ....was war ich am verzweifeln.
    Verdammt und es steht sogar noch so in Deinem read.me.
    (nee,nee,nee.......)

    ...nächste mal wird kopiert...
    Sorry!

    ich beobachte es mal und nochmals Danke

    Gruß

    Axl


    kleiner Nachtrag:
    leider zu früh gefreut.....Problem besteht weiterhin.


    Das Ursprungsproblem, das der Broker einen restart braucht, besteht leider auch noch.
    Ich werde es aber mal auf einem frisch installierten System testen.
    Es scheint wohl nur bei längeren spannungslosen Phasen der Sonos Lautsprecher aufzutreten.

    anbei noch das erzeugte Log:
    Code:
     [FONT=Menlo][SIZE=14px]_SmartHome__children[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_SmartHome__event_listeners[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_SmartHome__item_dict[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_SmartHome__items[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_SmartHome__logs[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__class__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__delattr__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__dict__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__doc__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__eq__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__format__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__ge__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__getattribute__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__gt__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__hash__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__init__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__iter__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__le__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__lt__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__module__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__ne__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__new__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__reduce__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__reduce_ex__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__repr__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__setattr__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__sizeof__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__str__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__subclasshook__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]__weakref__[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_cache_dir[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_elev[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_env_dir[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_env_logic_conf[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_excepthook[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_garbage_collection[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_items_dir[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_lat[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_log_buffer[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_logfile[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_logic_conf[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]2016-02-03 21:26:41,150 DEBUG    Main         knx: 1.1.106 set 1/3/98 to 01 -- __init__.py:parse_telegram:181[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_logic_dir[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_logics[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_lon[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_maintenance[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_object_refcount[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_plugin_conf[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_plugins[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_starttime[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_tzinfo[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]_utctz[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]add_event_listener[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]add_item[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]add_log[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]alive[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]aussen[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]base_dir[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]carport[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]cli[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]connections[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]denon[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]dreambox[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]eg[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]ema[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]env[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]example[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]find_children[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]find_items[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]fritzbox[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]funk[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]garage[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]heizung[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]irtrans_senden[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]item_count[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]jalousie[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]knx[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]log[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]mail[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]match_items[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]moon[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]myradio[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]netzwerk[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]now[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]object_refcount[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]og[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]ow[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]pushbullet[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]reload_logics[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_event_listeners[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_item[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_items[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_logic[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_logics[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_logs[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]return_plugins[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]rrd[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]runtime[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]scheduler[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]sonos[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]sonos_thread_lock[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]sql[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]start[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]steuer[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]stop[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]string2bool[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]sun[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]tools[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]trigger[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]tz[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]tzinfo[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]ug[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]utcinfo[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]utcnow[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]uzsu[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]version[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]visu[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]wp[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]ws[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]2016-02-03 21:26:41,255 DEBUG    sonos_bad_an On_Off triggered by sonos.bad.on_off -- sonos_pending_bad.py:<module>:51[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]Exception in thread Thread-8:[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]Traceback (most recent call last):[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]  File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]    self.run()[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]  File "/usr/lib/python3.2/threading.py", line 693, in run[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]    self._target(*self._args, **self._kwargs)[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]  File "/usr/smarthome/logics/sonos_pending_bad.py", line 25, in discover[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]    getattr(sh, plugin_name).discover()[/SIZE][/FONT]
      [FONT=Menlo][SIZE=14px]AttributeError: 'Item' object has no attribute 'discover'[/SIZE][/FONT]
    Zuletzt geändert von blutwurst; 03.02.2016, 21:30.

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von mwagner Beitrag anzeigen

    Das klingt super!

    Mittlerweile habe ich per sh.py Logic den SoCo separat angesprochen und aktiviere direkt die auf dem Sonos hinterlegten Playlisten. Funktioniert gut, vielleicht ist das auch eine schöne Funktion für den Broker (clear_queue(), add_to_queue(playlist)).

    Ehrlich gesagt, ist das sogar eher die Funktion die ich suche: Bearbeiten von Playlists über die vorhandenen Sonos Apps, danach brauche ich nur die gewünschten Playlists über einen Taster im Raum laden und los gehts. Beispiel: Unterschiedliche Playisten für Männlein und Weiblein für's Bad morgens...

    VG,
    Marcus
    Die Jungs vom SoCo-Team haben tatsächlich die Playlist-Funktionalität start erweitert. Deswegen nehme ich deinen Vorschlag gerne auf und stelle das ganze auf die Sonos-Playlist-Verwaltung um.

    Gruss,

    Stefan

    Einen Kommentar schreiben:

Lädt...
X