fhempy: googlecast

Begonnen von dominik, 04 Dezember 2020, 23:33:53

Vorheriges Thema - Nächstes Thema

Atara

Das ist alles, was ich in der fhem.cfg habe:

define local_pybinding BindingsIo Python
attr local_pybinding room hidden
define FG_CAST PythonModule googlecast "Flur Erdgeschoss"
attr FG_CAST IODev local_pybinding
attr FG_CAST cmdIcon pause:rc_PAUSE play:rc_PLAY
attr FG_CAST icon gassistant
attr FG_CAST webCmd volume:play:pause

Ein Pythonbinding_15733 existiert nicht.


JF Mennedy

Schau mal im Raum hidden...

Atara

Hallo JF Mennedy,
da ist nur das local_pybinding.
Ich habe es mit list gemacht und alles gefunden, bis auf das Pythonbinding_15733.

Wenn es irgend etwas hilft, kann ich das Binding noch einmal löschen.
Allerdings muss ich doch scher auch irgend etwas mit Pip deinstallieren, oder?

Vielen Dank für die Hilfe!

Beste Grüße
Frank

JF Mennedy

Hi Franz,

schaut fast so aus als wenn Dominik dir da weiterhelfen muss.. Normalerweise sollte das Pythonbinding_15733 automatisch angelegt werden, wenn Du das local_binding definierst... Auch alle Abhängigkeiten sollten automatisch installiert werden.. Hast du es mit defmod oder define angelegt? Ich habe schon mal Probleme gehabt, wenn ich mit defmod gearbeitet habe...

Wo läuft dein python binding? Auf dem selben host wie fhem?

Gruss Jan

JF Mennedy

So schaut mein BindingsIo aus :


   BindingType Python
   DEF        Python
   DeviceName ws:127.0.0.1:15733
   FD         85
   FUUID      5fec57b2-f33f-7f5e-ad9f-350de361d7cfa081
   IP         127.0.0.1
   NAME       local_pybinding
   NR         1649
   NTFY_ORDER 50-local_pybinding
   PARTIAL   
   PORT       15733
   STATE      opened
   TYPE       BindingsIo
   WEBSOCKET  1
   localBinding 1
   nextOpenDelay 10
   READINGS:
     2021-04-06 05:51:19   info            ready
     2021-04-06 05:51:17   state           opened
     2021-04-05 09:10:28   version         0.1.57
   args:
     local_pybinding
     BindingsIo
     Python
   argsh:
Attributes:
   DbLogExclude .*
   alias      local_pybinding
   room       55_System,77_GoogleCast,hidden


Und das ist das zugehörige PythonBinding, welches dann angelegt wird:


Internals:
   DEF        0
   FD         68
   FUUID      5fec57b2-f33f-7f5e-48a5-43287e9c586a19be
   LAST_START 2021-04-06 05:51:12
   LAST_STOP  2021-04-06 05:51:12
   NAME       Pythonbinding_15733
   NR         1650
   NTFY_ORDER 50-Pythonbinding_15733
   PID        3695
   STARTS     4
   STATE      active
   TYPE       PythonBinding
   currentlogfile ./log/PythonBinding-2021-04-06.log
   logfile    ./log/PythonBinding-%Y-%m-%d.log
   CoProcess:
     cmdFn      PythonBinding_getCmd
     name       fhempy
     state      running FHEM/bindings/python/bin/fhempy
   READINGS:
     2021-04-06 05:51:12   fhempy          running FHEM/bindings/python/bin/fhempy
     2021-04-04 21:30:51   state           active
Attributes:
   DbLogExclude .*
   alias      Pythonbinding_15733
   logfile    ./log/PythonBinding-%Y-%m-%d.log
   nrarchive  10
   room       55_System,77_GoogleCast,hidden


Kannst du sehen, ob schon ein python instanz läuft oder dein Port 15733 benutzt wird? Versuch mal


sudo killall python3


Und schau danach, ob das Pythonbinding_15733 angelegt wird...

Atara

Hallo JF Mennedy,
deine Frage mit dem defmod vs. define hat mich auf was gestoßen.
Ob das die Ursache war weiß ich aber nicht.

Ich habe zwar nicht defmod verwendet aber das define per Editor in die fhem.cfg geschrieben und dann ein "rereadcfg" gemacht.
Ich habe die Netzdevices gerne oben im File.
Das war bisher auch kein Problem aber bisher hat auch kein Device bei seine Definition weitere Devices bei mir angelegt.

Auf jeden Fall habe ich alles noch mal rausgeschmissen, das fhempy im Binding-Verzeichnis umbenannt und anschließend noch einmal ein "update all" gemacht.
Anschließend das "define PYTHONBINDING_0 PythonBinding" über das Eingabefeld ausgeführt.
Dabei wurde nun auch das Pythonbinding_15733 angelegt und alles ist gut.

Mein vorheriges Vorgehen habe ich nicht versucht zu rekonstruieren.
Daher kann ich nicht sagen, ob es tatsächlich der Grund für das Fehlverhalten war.

Nun ist aber alles, wie es soll.

Vielen Dank für deine Hilfe und Grüße
von
Frank


JF Mennedy

Na prima, freut mich 👍👍👍

benm

Zitat von: dominik am 14 Februar 2021, 21:18:41
Kann es sein, dass das Device aus dem Container nicht gefunden werden kann? Eventuell Netzwerk Thema?

Für alle Docker-Anfänger, wie ich es einer bin: Wenn man FHEM im Docker laufen lässt, dann ist man in einem anderen Netz, deshalb läuft googlecast und Sonos z.B. nicht. Deshalb habe ich jetzt mein Docker mit --net=host laufen, damit geht es. Klar, damit ist es unsicher, war mein FHEM vorher ohne Docker aber ja auch...

Jetzt lief alles und ich habe mich ans Übertragen aller meiner Geräte mittels RAW gemacht. Das hat auch funktioniert, allerdings bekomme ich jetzt von fhempy folgende Fehlermeldungen:
2021-04-07 21:12:29,117 - INFO     - fhempy.lib.fhem_pythonbinding: Starting fhempy...
2021-04-07 21:12:29,149 - INFO     - fhempy.lib.fhem_pythonbinding: Waiting for FHEM connection
Traceback (most recent call last):
  File "FHEM/bindings/python/bin/fhempy", line 121, in <module>
    fpb.run()
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 468, in run
    pybinding, "0.0.0.0", port, ping_timeout=None, ping_interval=None
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/usr/lib/python3.7/asyncio/tasks.py", line 603, in _wrap_awaitable
    return (yield from awaitable.__await__())
  File "/opt/fhem/.local/lib/python3.7/site-packages/websockets/server.py", line 965, in __await_impl__
    server = await self._create_server()
  File "/usr/lib/python3.7/asyncio/base_events.py", line 1378, in create_server
    % (sa, err.strerror.lower())) from None
OSError: [Errno 98] error while attempting to bind on address ('0.0.0.0', 15733): address already in use


Diese wiederholt sich so ständig. Klar, irgendein Gerät von mir nutzt wohl auch '0.0.0.0', allerdings hab ich keine Ahnung welches...kann man das irgendwie raus bekommen?

Danke im Voraus für eure Hilfe.

Grüße, Benjamin

JF Mennedy

Zitat von: dominik am 04 April 2021, 20:07:43
Hi,

das mit Spotify dürfte wohl ein generelles Problem sein.

Kannst du mal folgendes probieren:
- define spotify_player PythonModule spotify
- Einloggen über den Link in den Readings
- set home_mini startSpotify
- set spotify_player update_devices
- DeviceID kopieren (nur die ID, nicht den Name)
- set spotify_player play https://spotifyurl DEVICEID

Sollte das gehen, dann muss ich wohl im Chromecast Modul den Spotify Login + sp_dc integrieren.

Hi Dominik,

baust Du den Login und sp_dc noch in das Modul ein? Ich würde mich da ja mal selber dran wagen, weiss aber nicht genau wie und wo ich da ansetzen soll...

Im Chromecast Modul sind ja schon der Login (sp_key) und sp_dc über die Attribute eingetragen, oder?

Gruss Jan

dominik

Zitat von: benm am 07 April 2021, 21:18:20
Für alle Docker-Anfänger, wie ich es einer bin: Wenn man FHEM im Docker laufen lässt, dann ist man in einem anderen Netz, deshalb läuft googlecast und Sonos z.B. nicht. Deshalb habe ich jetzt mein Docker mit --net=host laufen, damit geht es. Klar, damit ist es unsicher, war mein FHEM vorher ohne Docker aber ja auch...

Jetzt lief alles und ich habe mich ans Übertragen aller meiner Geräte mittels RAW gemacht. Das hat auch funktioniert, allerdings bekomme ich jetzt von fhempy folgende Fehlermeldungen:
2021-04-07 21:12:29,117 - INFO     - fhempy.lib.fhem_pythonbinding: Starting fhempy...
2021-04-07 21:12:29,149 - INFO     - fhempy.lib.fhem_pythonbinding: Waiting for FHEM connection
Traceback (most recent call last):
  File "FHEM/bindings/python/bin/fhempy", line 121, in <module>
    fpb.run()
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 468, in run
    pybinding, "0.0.0.0", port, ping_timeout=None, ping_interval=None
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/usr/lib/python3.7/asyncio/tasks.py", line 603, in _wrap_awaitable
    return (yield from awaitable.__await__())
  File "/opt/fhem/.local/lib/python3.7/site-packages/websockets/server.py", line 965, in __await_impl__
    server = await self._create_server()
  File "/usr/lib/python3.7/asyncio/base_events.py", line 1378, in create_server
    % (sa, err.strerror.lower())) from None
OSError: [Errno 98] error while attempting to bind on address ('0.0.0.0', 15733): address already in use


Diese wiederholt sich so ständig. Klar, irgendein Gerät von mir nutzt wohl auch '0.0.0.0', allerdings hab ich keine Ahnung welches...kann man das irgendwie raus bekommen?

Danke im Voraus für eure Hilfe.

Grüße, Benjamin

Da dürfte fhempy nochmals gestartet werden. Hast du vielleicht irgendwo konfiguriert, dass fhempy per Script gestartet wird? Weil eigentlich macht das das PythonBinding Modul.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Zitat von: JF Mennedy am 13 April 2021, 17:38:15
Hi Dominik,

baust Du den Login und sp_dc noch in das Modul ein? Ich würde mich da ja mal selber dran wagen, weiss aber nicht genau wie und wo ich da ansetzen soll...

Im Chromecast Modul sind ja schon der Login (sp_key) und sp_dc über die Attribute eingetragen, oder?

Gruss Jan

Ja, ist geplant. Ich muss da ein paar Teile aus dem spotify Modul verwenden und diese im googlecast Modul mit einbauen. Ich habe es mal auf meine Todo Liste gesetzt, kann aber durchaus noch 2-3 Wochen dauern, da ich gerade wenig Zeit habe.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

JF Mennedy

Hi Dominik,

kein Problem, bin im Moment auch total eingespannt bei der Arbeit...Mit dieser Anpassung im Code geht Spotify wieder:

            # Match active spotify devices with the spotify controller's device id
            spotify_device_id = None
            sp = SpotifyController(self.spotify_access_token, self.spotify_expires)
            self.cast.register_handler(sp)
            await utils.run_blocking(functools.partial(sp.launch_app))
            #spotify_device_id = None
            spotify_device_id = sp.device
            #for device in devices_available["devices"]:
            #    if device["id"] == sp.device:
            #        spotify_device_id = device["id"]
            #        break

            if not spotify_device_id:
                self.logger.error(
                    'No device with id "{}" known by Spotify'.format(sp.device)
                )
                self.logger.error(
                    "Known devices: {}".format(devices_available["devices"])
                )
                return



Kannst ja mal schaun, ob das auch in Deinem Sinne so ok ist....

Gruss Jan

Superposchi

Hallo Dominic,

ich habe seit geraumer Zeit Probleme mit Spotify. Es wird wieder einmal nichts auf einen Google-Nest abgespielt.
Der Lautsprecher reagiert zwar indem er einen Ping von sich gibt, aber danach kommt nichts mehr.

Das Fhempy-Log ist seit Tagen komplett leer. Im Nest-Device steht im Reading "spotify_user" nur "login required" drin.
Im Spotify-login-Reading steht "Connect Spotify account (new window/tab)"

Dachte zuerst das Problem hat eine andere Ursache, aber jetzt habe ich hier gelesen, dass es wohl generelle Probleme gegeben hat.

Was kann/muss ich tun damit es wieder läuft?

JF Mennedy

In der version 0.1.60 wurde das login geändert.. Du musst dich einmal neu anmelden auf deinen Geräten..

a_quadrat

Hallo Zusammen,

ich habe gestern ein Update auf die neue Version gemacht. Spotify geht wieder  :), aber seitdem funktioniert die Speak-Funktion nicht mehr.
Hat noch jemand das Problem? Oder liegt es an meinem System?

VG Andreas