[Altes Modul] GoogleCast (98_GOOGLECAST.pm)

Begonnen von dominik, 10 Dezember 2015, 22:43:49

Vorheriges Thema - Nächstes Thema

michaelw

#465
Zitat von: dominik am 23 Februar 2018, 21:36:35
Danach läuft das Modul mit PyChromecast 2.0.0.

Kannst du nicht das Modul anweisen Python3 zu nutzen, statt das ganze Systemweit umzustellen? So mit #!/usr/bin/python3 oder sowas?


EDIT: Bei mir scheint funktioniert zu haben (nach den wie von Dominik angegebenen Befehlen)

sudo cpanm --reinstall Inline::Python (<-- Hierbei sollte nach meinem Verständnis das Inline Modul neuinstalliert werden und mit dem symbolischen Link auf Pyhton 3 umgestellt werden (also evtl. nicht nötig, bei mir war es das jedoch)...)
sudo ln -sf /usr/bin/python2.7 /usr/bin/python (<-- ...und das System mit ursprünglichen Python Version zu laufen)

Das Perl-Skript, das Dominik oben zum Test der Python Version angegeben hat, spuckt in meinem Fall nach der Prozedur Version 3 aus.

gbomacfly

Zitat von: dominik am 23 Februar 2018, 21:36:35
Aktualisiert auf Version 2.1.0. Das Problem mit den offenen Verbindungen sollte nun behoben sein.

ACHTUNG: Wer PyChromecast auf Version 2.0.0 aktualisiert muss folgendes tun...

- sudo cpanm -U Inline::Python
- sudo pip uninstall pychromecast
- sudo apt install python3-pip
- sudo pip3 install pychromecast
- sudo ln -sf /usr/bin/python3 /usr/bin/python => Vorsicht: Danach verwenden alle Applikationen Python3! Es könnte also Auswirkungen auf andere Applikationen haben die Python verwenden.
- sudo cpanm Inline::Python

Danach läuft das Modul mit PyChromecast 2.0.0.

Hmm, ich hab diese Änderungen jetzt gemacht und bei einem Neustart schmeisst mir FHEM folgendes ins Log:2018.02.27 20:23:03 1: reload: Error:Modul 98_GOOGLECAST deactivated:
Error -- py_eval raised an exception at /usr/local/lib/x86_64-linux-gnu/perl/5.24.1/Inline/Python.pm line 221.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 657.

2018.02.27 20:23:03 0: Error -- py_eval raised an exception at /usr/local/lib/x86_64-linux-gnu/perl/5.24.1/Inline/Python.pm line 221.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 657.

2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Initialize redefined at ./FHEM/98_GOOGLECAST.pm line 133, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Define redefined at ./FHEM/98_GOOGLECAST.pm line 150, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_findChromecasts redefined at ./FHEM/98_GOOGLECAST.pm line 170, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_initDevice redefined at ./FHEM/98_GOOGLECAST.pm line 185, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_findChromecastsResult redefined at ./FHEM/98_GOOGLECAST.pm line 194, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Attribute redefined at ./FHEM/98_GOOGLECAST.pm line 228, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Set redefined at ./FHEM/98_GOOGLECAST.pm line 240, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setVolume redefined at ./FHEM/98_GOOGLECAST.pm line 286, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setWebsite redefined at ./FHEM/98_GOOGLECAST.pm line 296, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setSpeak redefined at ./FHEM/98_GOOGLECAST.pm line 305, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayType redefined at ./FHEM/98_GOOGLECAST.pm line 321, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayType_String redefined at ./FHEM/98_GOOGLECAST.pm line 338, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayMedia redefined at ./FHEM/98_GOOGLECAST.pm line 349, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayMedia_String redefined at ./FHEM/98_GOOGLECAST.pm line 357, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayMediaBlocking redefined at ./FHEM/98_GOOGLECAST.pm line 371, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayYtDl redefined at ./FHEM/98_GOOGLECAST.pm line 393, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayYtDlBlocking redefined at ./FHEM/98_GOOGLECAST.pm line 401, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setStop redefined at ./FHEM/98_GOOGLECAST.pm line 414, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlayFavorite redefined at ./FHEM/98_GOOGLECAST.pm line 425, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPlay redefined at ./FHEM/98_GOOGLECAST.pm line 432, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setPause redefined at ./FHEM/98_GOOGLECAST.pm line 455, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setRewind redefined at ./FHEM/98_GOOGLECAST.pm line 466, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setSkip redefined at ./FHEM/98_GOOGLECAST.pm line 477, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_setQuitApp redefined at ./FHEM/98_GOOGLECAST.pm line 488, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Undef redefined at ./FHEM/98_GOOGLECAST.pm line 498, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Get redefined at ./FHEM/98_GOOGLECAST.pm line 507, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_updateReading redefined at ./FHEM/98_GOOGLECAST.pm line 511, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_newChash redefined at ./FHEM/98_GOOGLECAST.pm line 524, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_addSocketToMainloop redefined at ./FHEM/98_GOOGLECAST.pm line 547, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_checkConnection redefined at ./FHEM/98_GOOGLECAST.pm line 559, <$fh> line 1293.
2018.02.27 20:23:03 1: PERL WARNING: Subroutine GOOGLECAST_Read redefined at ./FHEM/98_GOOGLECAST.pm line 582, <$fh> line 1293.
2018.02.27 20:23:03 1: reload: Error:Modul 98_GOOGLECAST deactivated:
Error -- py_eval raised an exception at /usr/local/lib/x86_64-linux-gnu/perl/5.24.1/Inline/Python.pm line 221.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 657.

2018.02.27 20:23:03 0: Error -- py_eval raised an exception at /usr/local/lib/x86_64-linux-gnu/perl/5.24.1/Inline/Python.pm line 221.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 657.


Das Testscript wirft ne 3, scheint also zu funktionieren.
Bevor ich das gemacht hab, ist mir fhem regelmäßig abgeschmiert, wegen "Found and deleted bad fileno for GOOGLECAST-Chromecast"
FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT

DerKoerper

#467
Einen schönen guten Abend,
ich bin recht neu mit FHEM (sieht man ja sicher auch bei der Postanzahl). Ich probiere mit dem Googlecast Modul nun schon ein paar Tage rum und habe eine Lösung für das Python2 & Python3 Problem gefunden. Habe ich übrigens rausbekommen, nachdem ich mir meinen DHCP-Server und noch ein paar andere zerschossen haben beim Versuch hart auf python3 umzustellen (konnte zwar den Chromecast definieren im FHEM aber leider hat der keine IP mehr bekommen  ;D )

Kurzversion der Lösung: Man kann beim Installieren von Inline::Python angeben welche Python version genutzt werden soll.

Hier mal der vollständige Installationsweg von mir:

btw.: Ich benutze einen BananaPi mit dem aktuellen armbian

sudo apt-get install libwww-perl python-enum34 python3-dev libextutils-makemaker-cpanfile-perl python3-pip cpanminus
sudo pip3 install wheel
sudo pip3 install enum34 --upgrade <-- hier bin ich mir nicht sicher obs notwendig ist, schaden kann es nicht
sudo pip3 install pychromecast --upgrade
sudo pip3 install youtube-dl --upgrade
sudo INLINE_PYTHON_EXECUTABLE=/usr/bin/python3.5 cpanm Inline::Python <-- hier entsprechend den Pfad zum gewünschten Python
sudo shutdown -r now

Bitte beachten: Ich musste python3-dev installieren, python-dev hat nicht funktioniert (was auch irgendwie Sinn macht in meinem Kopf)
Wer Inline::Python schon installiert hat muss vorher noch folgendes ausführen:
sudo cpanm --uninstall Inline::Python

...und tada, keine Fehler mehr im Logfile, ich konnte problemlos das define ausführen - ich kann den Chromecast auch leiser, lauter machen...ABER leider spielt er nix ab wenn ich ihm einen Link mitgebe... Es kommt das Plümplüm vom CC, aber es wird leider nix abgespielt... Wo da jetzt das Problem liegt verstehe ich noch nicht so richtig... Aber am Python wird es vermutlich nicht mehr liegen.

Vielleicht hilft es einigen, die wie ich Python2 nicht so hardcore ersetzen können/wollen wie Dominik es vorgeschlagen hat.

Grüße
Richard

edit:@michaelw - Nein Inline versteht sowas nicht, da es bereits die Python Version geladen hat bevor es überhaupt anfängt die Datei zu lesen. Bzw. wie an meiner Anleitung ersichtlich legt es sich bei der Installation schon fest.
FHEM aufm Cubietruck (armbian inkl. Samba, DHCP, DNS & VPN) für eine Wohnung.
1x CUL für WMBUS, 1x nanoCUL für MAX

Kaum Ahnung... aber hartnäckig!

dominik

@Richard, vielen Dank für den Hinweis mit Python3! Ich hatte lange nach Möglichkeiten gesucht es nicht systemweit umstellen zu müssen, aber diese hatte ich nicht gefunden. Ich nehme das gleich mit in die CommandRef auf.

@all, es gibt noch einen Bug der leider bei Connection Fehlern FHEM zum Crash bringen kann. Ich bringe heute noch einen Fix dafür raus.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

DerKoerper

Hab auch ewig gesucht - hab die Variable in der Makefile von Inline::Python gefunden... Stand leider nicht mal in der Doku dazu drin.

Du hattest geschrieben, dass play & speak mit pychromecast 2.0.0 wahrscheinlich Probleme macht, ist da eine Lösung in Sicht? Bei mir scheint es ja auch nicht zu funktionieren.
FHEM aufm Cubietruck (armbian inkl. Samba, DHCP, DNS & VPN) für eine Wohnung.
1x CUL für WMBUS, 1x nanoCUL für MAX

Kaum Ahnung... aber hartnäckig!

pfefferkeks

Guten Abend zusammen,

ich hatte ähnliche Probleme bzw. habe noch genau das gleiche Problem wie Richard.


  • Das python Problem habe ich wie unter dem folgenden Link beschrieben gelöst und einfach als "Standard" python3 gewählt ggf. hilft es dem einen oder anderen. Danach konnte ich mein Google Mini, Chromcast und Audiocast ohne Fehler definieren.
    https://linuxconfig.org/how-to-change-default-python-version-on-debian-9-stretch-linux
  • Leider habe ich an allen drei Geräten das "Plümplüm" Problem wie es Richard beschrieben hat, hat hier jemand eine Idee wie man das in den Griff bekommen könnte?

@dominik: Danke für das Modul und deine Arbeit!

BG
Pfeffer

dominik

Den Fix für den Crash beim Reconnect habe ich nun mit 2.1.1 released.

Bzgl. des "Plümplüm" Problems (was für ein super Name :D) bin ich noch auf Fehlersuche.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

b4r7

#472
Hi,

ich hab nach einer Neuinstallation (chown -R www-data:www-data /)  :o >:( ;D :-X :-[
Nach langem hin und her das Modul zum laufen gebracht.

Ich bekomme jetzt aber ständig folgendes ins Log gemüllt:

2018.03.04 23:42:11 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:42:11 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:42:30 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:42:30 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:42:48 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:42:48 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:43:07 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:43:07 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:43:25 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:43:25 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:43:44 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:43:44 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:44:02 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:44:02 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:44:21 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:44:21 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:44:40 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:44:40 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:44:58 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:44:58 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:45:17 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:45:17 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:45:35 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:45:35 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:45:54 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:45:54 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:46:12 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:46:12 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.
2018.03.04 23:46:31 1: PERL WARNING: Use of uninitialized value $string in split at ./FHEM/98_GOOGLECAST.pm line 176.
2018.03.04 23:46:31 1: PERL WARNING: Use of uninitialized value $name in string at ./FHEM/98_GOOGLECAST.pm line 177.


Jemand ne Ahnung?

edit: Asche auf mein Haupt: Reboot tut gut.... ::)
FHEM auf Debian VM (FreeNAS bhyve)
HMUart + ZME-UZB1 über RPi2/ser2net

DaniM

Hallo zusammen,

ich bin absoluter Neuling hier und auch in FHEM.

Das Modul läuft bei mir ohne Probleme und Play, Pause, Skip funktionieren tadellos.

Jedoch geht bei mir auf Play gar nichts... Ziel wäre ein Internetradio laufen zu lassen. Jedoch passiert einfach nichts. Getestet habe ich es mit dem Youtube Link.

Im Log kommt folgender Fehler:
2018.03.05 18:05:52 3: GOOGLECAST(Party.chromecast): setPlayMedia_String, youtube-dl couldn't find video

Kann mir hier jemand helfen?

Danke
Daniel

Pr3mut05

Ja, Play (und Speak) funktionieren leider (noch?!) nicht :/
Wäre für mich eigentlich die primäre Funktion :/ Denn die Steuerung sehe ich als relativ unrelevant.

Solange diese Funktion nicht verfügbar ist, lohnt sich das einbinden für mich gar nicht.

Det20

Kann ich leider (oder zum Glück?) nicht bestätigen.


define Google_Wohnzimmer GOOGLECAST Wohnzimmer
attr Google_Wohnzimmer favoriteURL_1 http://edge.live.mp3.mdn.newmedia.nacamar.net/ps-radiolippe/livestream.mp3
attr Google_Wohnzimmer favoriteURL_2 http://www.ndr.de/resources/metadaten/audio/m3u/ndr2.m3u


Wenn ich nun fhem("set Google_Wohnzimmer playFavorite 1") abschicke, läuft alles korrekt. Auch die Sprachausgabe läuft:


  fhem("set Google_Wohnzimmer play http://translate.google.com/translate_tts?tl=de&client=tw-ob&q=Hallo%20Welt");

gbomacfly

Leider hab ich wieder massig Einträge im Log:2018.03.06 05:50:33 1: ERROR: Select error -1 (9), error count= 0
2018.03.06 05:50:33 1: Found and deleted bad fileno for GOOGLECAST-Chromecast
2018.03.06 05:55:33 1: ERROR: Select error -1 (9), error count= 0
2018.03.06 05:55:33 1: Found and deleted bad fileno for GOOGLECAST-Chromecast
FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT

Det20

#477
War Dein Internet zu dem Zeitpunkt down? Im Hintergrund baut pychromcast eine Verbindung auf, das Modul 98_GoogleCast greift darauf zurück und speichert sich diese Verbindung (Handle). FHEM-MainLoop erkennt, dass das Handle ungültig ist, weil z.B. Internet kurzfristig down war und gibt es frei.

acw81

#478
Hallo Dominik,

ich habe in letzter Zeit ungefähr im 2 Tagesrhythmus Abstürze meines FHEM und bin nun über deinen Post bzgl. einem Crash im GOOGLECAST Modul gestoßen (bzw. von CoolTux darauf aufmerksam gemacht worden  ;) ):

Zitat von: dominik am 03 März 2018, 22:22:45
Den Fix für den Crash beim Reconnect habe ich nun mit 2.1.1 released.

Bzgl. des "Plümplüm" Problems (was für ein super Name :D) bin ich noch auf Fehlersuche.

Dies letzen Zeilen in meinem FHEM Log sehen wie folgt nach dem Crash aus:


2018.03.06 03:08:02.065 1: ERROR: Select error -1 (9), error count= 0
2018.03.06 03:08:02.072 1: Found and deleted bad fileno for GOOGLECAST-ez_HomeMini
exceptions.AttributeError: 'NoneType' object has no attribute 'close' at line 491
Loaded private key file from ./log/otr.private_key-jabberclient-fhemjabber
otr: Heartbeat received from XXX.


Könnte mein Absturz mit deinem Fix behoben sein?

Grüße
Andreas

Det20