[Altes Modul] GoogleCast (98_GOOGLECAST.pm)

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

Vorheriges Thema - Nächstes Thema

duke-f

vielleicht hab' ich's überlesen, vielleicht fehlt aber im Eingangspost der Hinweis auf die Notwendigkeit von

sudo apt-get install python-setuptools

Musste ich auf jeden Fall noch durchführen.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Ma_Bo

Ich habe das Modul noch nicht in Betrieb, evtl. kann mir jemand meine Fragen beantworten.

Wenn ich am Google Home die Lautstärke verändere, wird mir das direkt in einem Reading angezeigt..?

Wenn ich über den Google Home Musik z.B. von Spotify wiedergebe, wird mir das als Reading angezeigt...?

Grüße Marcel


Tapatalk iPhone, daher kurz gehalten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

b4r7

Zitat von: Ma_Bo am 08 Januar 2018, 00:17:18
Ich habe das Modul noch nicht in Betrieb, evtl. kann mir jemand meine Fragen beantworten.

Wenn ich am Google Home die Lautstärke verändere, wird mir das direkt in einem Reading angezeigt..?

Wenn ich über den Google Home Musik z.B. von Spotify wiedergebe, wird mir das als Reading angezeigt...?

Grüße Marcel


Tapatalk iPhone, daher kurz gehalten.

kurz gefasst:

ja und ja.

FHEM auf Debian VM (FreeNAS bhyve)
HMUart + ZME-UZB1 über RPi2/ser2net

scooty

#363
Hallo,

danke erst einmal für das Modul, sieht so aus, also ob Alexa bei mir in Kürze obsolet wird.

Bei mir (98_GOOGLECAST.pm 15818 2018-01-07 19:02:40Z dominik) sind auch noch folgende Auffälligkeiten zu beobachten:
1) Nach einem FHEM "shutdown restart" gehen die Homes und der Cast nur auf Status "initialized" und nicht von selbst auf "online".
Behelfe mir derzeit mit folgendem DOIF:
defmod XXXX_GlobalInitialized DOIF ([global:"INITIALIZED"]) \
   (defmod XXDG_GHOME01 GOOGLECAST Dachgeschoss,\
    defmod WZOG_GCCAST01 GOOGLECAST WohnzimmerCast,\
    defmod XXXX_GHOMEM01 GOOGLECAST Wohnzimmer,\
    defmod XXXX_GHOMEM02 GOOGLECAST Badezimmer,\
   )\
   (save)
attr XXXX_GlobalInitialized wait 120,15

Code als "Raw definition"
Wartet 2 Minuten nach FHEM Start und führt dann ein "defmod"-Befehl auf meine definierten GOOGLECAST-Devices aus. Leider wird dadurch, obwohl eigentlich keine Änderung erfolgte, die FHEM Konfiguration geändert, so dass auch noch ein "save"-Befehl erfolgen muss.
Kurz nach Ausführung des "defmod"-Befehls gehen die GOOGLECAST-Devices dann auf Status "online".

2) Bei Nutzung des "speak" Befehls beendet sich FHEM. Anbei Logeinträge aus 2 Versuchen mit "verbose 5" auf die GOOGLECAST-Devices und global:
2018.01.08 18:33:42.713 4: WEB_2a02:908:671:b520:6d13:2b3b:c62e:9c85_3299 POST /fhem&detail=XXXX_GHOMEM01&dev.setXXXX_GHOMEM01=XXXX_GHOMEM01&cmd.setXXXX_GHOMEM01=set&arg.setXXXX_GHOMEM01=speak&val.setXXXX_GHOMEM01=%22Dies+ist+ein+Hund%22; BUFLEN:0
2018.01.08 18:33:42.716 5: Cmd: >set XXXX_GHOMEM01 speak "Dies ist ein Hund"<
Undefined subroutine &main::uri_escape called at /opt/fhem/FHEM/98_GOOGLECAST.pm line 302.
2018.01.08 18:33:43.531 1: BlockingInformParent (BlockingStart): Can't connect to localhost:35049: IO::Socket::INET: connect: Connection refused
2018.01.08 18:33:43.533 1: BlockingInformParent (GOOGLECAST_findChromecastsResult): Can't connect to localhost:35049:


2018.01.08 19:17:27.362 4: WEB_2a02:908:671:b520:6d13:2b3b:c62e:9c85_3687 POST /fhem&detail=XXXX_GHOMEM01&dev.setXXXX_GHOMEM01=XXXX_GHOMEM01&cmd.setXXXX_GHOMEM01=set&arg.setXXXX_GHOMEM01=speak&val.setXXXX_GHOMEM01=%22Dies+ist+ein+Hund%22; BUFLEN:0
2018.01.08 19:17:27.364 5: Cmd: >set XXXX_GHOMEM01 speak "Dies ist ein Hund"<
Undefined subroutine &main::uri_escape called at /opt/fhem/FHEM/98_GOOGLECAST.pm line 302.


Die GOOGLECAST-Devces sind im Status "online", die alte Version mit Übergabe eines Links zur Sprachausgabe funktioniert weiterhin.

3) Auch möchte ich mich dem Wunsch anschließen beim "speak"-Befehl keine Anführungszeichen für den Text verwenden zu müssen, wäre einfach einheitlicher, weil in anderen FHEM-Modulen zur Sprachausgabe dies auch so implementiert ist.

Wo kann ich noch unterstützen bei der Fehlersuche?

Vielen Dank nochmals,
Andreas

Edit: Versionsangabe für 98_GOOGLECAST.pm hinzugefügt.
Edit2: Meinen GOOGLECAST-Devices werden auch alle als Player für den Logitech Media Server eingesetzt, hoffe es hat nichts damit zu tun?
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

Det20

Kann ich nicht bestätigen, nach einem Neustart dauert es ein wenig, aber dann sind meine 3 Googles online. Die ich nicht sehr häufig neu starte, kann ich damit leben.

dominik

@br4t, scooty
Bzgl. TTS, hab den Bug im SVN behoben. Es fehlte noch ein "use URI::Escape" im Code.

Bzgl. der Anführungszeichen:
Es gibt in FHEM leider noch keine klare Definition wie mit Leerzeichen in Argumenten umgegangen werden soll. Ich habe die Anführungszeichen eingeführt, da ich gerne die Möglichkeit habe auch weitere Argumente mit aufzunehmen. Z.B. habe ich bei BOSEST die Lautstärke für die TTS Ansage noch als Argument hinten mit dran gemacht (set dev speak "Hallo" +5) um für TTS die Lautstärke zu erhöhen. Meiner Meinung nach sind Anführungszeichen als Definition für EIN zusammenhängendes Argument die passende Wahl. Alles andere führt dazu, dass man Argumente in Code nochmals zusammenführen muss. Generell fehlt aber leider noch eine klare Regelung - oder ich kenne diese nicht? :)

@scooty, bleibt das Device auf "initialized" oder geht es auf "offline"?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

scooty

Zitat von: dominik am 08 Januar 2018, 20:58:39
@br4t, scooty
Bzgl. TTS, hab den Bug im SVN behoben. Es fehlte noch ein "use URI::Escape" im Code.
Alles klar, ich teste dann morgen, vielen Dank für die prompte Reaktion.

Zitat von: dominik am 08 Januar 2018, 20:58:39
Bzgl. der Anführungszeichen:
Es gibt in FHEM leider noch keine klare Definition wie mit Leerzeichen in Argumenten umgegangen werden soll. Ich habe die Anführungszeichen eingeführt, da ich gerne die Möglichkeit habe auch weitere Argumente mit aufzunehmen. Z.B. habe ich bei BOSEST die Lautstärke für die TTS Ansage noch als Argument hinten mit dran gemacht (set dev speak "Hallo" +5) um für TTS die Lautstärke zu erhöhen. Meiner Meinung nach sind Anführungszeichen als Definition für EIN zusammenhängendes Argument die passende Wahl. Alles andere führt dazu, dass man Argumente in Code nochmals zusammenführen muss. Generell fehlt aber leider noch eine klare Regelung - oder ich kenne diese nicht? :)
OK, akzeptiert, kein Thema, hätte wohl auch besser schreiben sollen:
Zitat...weil in anderen FHEM-Modulen zur Sprachausgabe die ich kenne und nutze dies auch so implementiert ist.

Zitat von: dominik am 08 Januar 2018, 20:58:39
@scooty, bleibt das Device auf "initialized" oder geht es auf "offline"?
Die GOOGLECAST-Devices bleiben auf "initialized", "offline" habe ich ehrlich gesagt noch nicht gesehen (vielleicht müsste ich auch einfach noch länger warten?). Ich warte 'mal ab, Statusmeldung kommt dann morgen.

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

Grml

#367
Zitat von: scooty am 08 Januar 2018, 19:23:58
Bei mir (98_GOOGLECAST.pm 15818 2018-01-07 19:02:40Z dominik) sind auch noch folgende Auffälligkeiten zu beobachten:
1) Nach einem FHEM "shutdown restart" gehen die Homes und der Cast nur auf Status "initialized" und nicht von selbst auf "online".
Behelfe mir derzeit mit folgendem DOIF:
defmod XXXX_GlobalInitialized DOIF ([global:"INITIALIZED"]) \
   (defmod XXDG_GHOME01 GOOGLECAST Dachgeschoss,\
    defmod WZOG_GCCAST01 GOOGLECAST WohnzimmerCast,\
    defmod XXXX_GHOMEM01 GOOGLECAST Wohnzimmer,\
    defmod XXXX_GHOMEM02 GOOGLECAST Badezimmer,\
   )\
   (save)
attr XXXX_GlobalInitialized wait 120,15

Code als "Raw definition"
Wartet 2 Minuten nach FHEM Start und führt dann ein "defmod"-Befehl auf meine definierten GOOGLECAST-Devices aus. Leider wird dadurch, obwohl eigentlich keine Änderung erfolgte, die FHEM Konfiguration geändert, so dass auch noch ein "save"-Befehl erfolgen muss.
Kurz nach Ausführung des "defmod"-Befehls gehen die GOOGLECAST-Devices dann auf Status "online".

Gerade mal eines der DEFMODs mit einem meiner GOOGLECAST-Devices getestet. Wenn ich einfach eingebe defmod GoogleAssistant.Keller GOOGLECAST Keller geht dieses Device auch endlich wieder online und kommuniziert mit FHEM! Heureka!
Danach ist das Device in der "Übersicht" wieder auf online (nicht "nur" auf "Initialized") und in der Detailansicht sowohl im state als auch in presence (wo es bisher offline war nach einem Reboot).
Damit komme ich zumindest bei mir etwas weiter :-)
(Und vielleicht hilft es ja auch dominik bei der Fehlersuche... ;-)). Danke scooty!

duke-f

Zunächst bedanke ich mich auch für das im Prinzip tolle Modul - auch wenn ich es bisher nicht zum Laufen bringe.

Seit gestern versuche ich nun die Installation. Zuerst Schritt für Schritt gemäß Post #1, danach alle im Laufe der Zeit genannten Änderungen. Leifder bekomme ich nach wie vor die Meldung:

Cannot load module GOOGLECAST

und im Log:

Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pychromecast/__init__.py", line 15, in <module>
    from .discovery import discover_chromecasts, start_discovery, stop_discovery
  File "/usr/local/lib/python2.7/dist-packages/pychromecast/discovery.py", line 5, in <module>
    from zeroconf import ServiceBrowser, Zeroconf
  File "/usr/local/lib/python2.7/dist-packages/zeroconf.py", line 155, in <module>
    @enum.unique
AttributeError: 'module' object has no attribute 'unique'
2018.01.08 22:53:13 1: reload: Error:Modul 98_GOOGLECAST deactivated:
Error -- py_eval raised an exception at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Inline/Python.pm line 177.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 644.

2018.01.08 22:53:13 0: Error -- py_eval raised an exception at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Inline/Python.pm line 177.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 644.


Das ganze nach mehreren Neustarts von FHEM. Dieses Läuft bei mir allerdings auf einem Cubietruck unter Debian GNU/Linux 9 (stretch)

Was mache ich falsch?
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Grml


duke-f

#370
Du meinst aus Post #278? Ja, habe ich. Jetzt habe ich nochmal die früheren Tipps aus #98durchgeführt:


sudo pip uninstall pychromecast
sudo pip install git+https://github.com/dominikkarall/pychromecast.git


und bekomme nun die Meldungen:


Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pychromecast/__init__.py", line 14, in <module>
    from . import socket_client
ImportError: cannot import name socket_client
2018.01.09 09:28:38 1: reload: Error:Modul 98_GOOGLECAST deactivated:
Error -- py_eval raised an exception at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Inline/Python.pm line 177.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 644.

2018.01.09 09:28:38 0: Error -- py_eval raised an exception at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Inline/Python.pm line 177.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 644.


Ist schon wesentlich kürzer ... ich nähere mich dem Ziel.

EDIT:
Obige Meldung bekomme ich, wenn ich enum34 deinstalliere und enum installiere.
Deinstalliere ich enum und installiere enum34 bekomme ich folgende Meldung:

Traceback (most recent call last):
  File "<string>", line 7, in <module>
ImportError: No module named dashcast
2018.01.09 10:02:32 1: reload: Error:Modul 98_GOOGLECAST deactivated:
Error -- py_eval raised an exception at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Inline/Python.pm line 177.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 644.

2018.01.09 10:02:32 0: Error -- py_eval raised an exception at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Inline/Python.pm line 177.
BEGIN failed--compilation aborted at ./FHEM/98_GOOGLECAST.pm line 644.

Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

duke-f

#371
Hab jetzt auch mal das folgende durchgezogen - mit den jeweiligen Ergebnissen wie gezeigt. Dabei läuft ein TV mit Chromecast, der auch vom betreffenden Cubie aus problemlos angepingt werden kann (ping Chromecast).


root@cubie:/usr/local/lib/python2.7/dist-packages# python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pychromecast
>>> chromecasts = pychromecast.get_chromecasts()
>>> [cc.device.friendly_name for cc in chromecasts]
[]
>>> chromecasts = pychromecast.get_chromecasts()
>>> [cc.device.friendly_name for cc in chromecasts]
[]
>>> chromecasts = pychromecast.get_chromecasts()
>>> [cc.device.friendly_name for cc in chromecasts]
[]
>>> chromecasts = pychromecast.get_chromecasts()
>>> [cc.device.friendly_name for cc in chromecasts]
[]
>>>


Hätte eigentlich erwartet, in der eckigen Klammer den Namen "Chromecast" vorzufinden....
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

scooty

Zitat von: dominik am 08 Januar 2018, 20:58:39
@br4t, scooty
Bzgl. TTS, hab den Bug im SVN behoben. Es fehlte noch ein "use URI::Escape" im Code.
Funktioniert jetzt 1A, vielen Dank!

Zitat von: dominik am 08 Januar 2018, 20:58:39
@scooty, bleibt das Device auf "initialized" oder geht es auf "offline"?
Zitat von: scooty am 08 Januar 2018, 22:23:11
Die GOOGLECAST-Devices bleiben auf "initialized", "offline" habe ich ehrlich gesagt noch nicht gesehen (vielleicht müsste ich auch einfach noch länger warten?). Ich warte 'mal ab, Statusmeldung kommt dann morgen.
Nach 20h Stunden warten keine Änderung, GOOGLECAST-Devices bleiben auf "initialized" und gehen nicht auf "offline".
Hatte oben in meinem Beitrag noch ergänzt:
ZitatMeinen GOOGLECAST-Devices werden auch alle als Player für den Logitech Media Server eingesetzt, hoffe, es hat nichts damit zu tun?

Vielen Dank für Deine Unterstützung,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

b4r7

Zitat von: dominik am 08 Januar 2018, 20:58:39
@br4t, scooty
Bzgl. TTS, hab den Bug im SVN behoben. Es fehlte noch ein "use URI::Escape" im Code.

Bzgl. der Anführungszeichen:
Es gibt in FHEM leider noch keine klare Definition wie mit Leerzeichen in Argumenten umgegangen werden soll. Ich habe die Anführungszeichen eingeführt, da ich gerne die Möglichkeit habe auch weitere Argumente mit aufzunehmen. Z.B. habe ich bei BOSEST die Lautstärke für die TTS Ansage noch als Argument hinten mit dran gemacht (set dev speak "Hallo" +5) um für TTS die Lautstärke zu erhöhen. Meiner Meinung nach sind Anführungszeichen als Definition für EIN zusammenhängendes Argument die passende Wahl. Alles andere führt dazu, dass man Argumente in Code nochmals zusammenführen muss. Generell fehlt aber leider noch eine klare Regelung - oder ich kenne diese nicht? :)

@scooty, bleibt das Device auf "initialized" oder geht es auf "offline"?

Besten Dank. mit "" läufts perfekt. Ohne "" zerhauts mir das FHEM aber trotzdem. Kannst du dafür sorgen das es eine Fehlermeldung statt einem eingefrorenem FHEM gibt?

Das mit den Sockets ist definitiv behoben.
FHEM auf Debian VM (FreeNAS bhyve)
HMUart + ZME-UZB1 über RPi2/ser2net

dominik

@scooty, die Devices können eigentlich nur auf initialized bleiben, wenn kein Argument angegeben ist. Siehe Code hier:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/98_GOOGLECAST.pm#L148

@b4r7, danke für die Info, dass FHEM da crashed. Das werde ich noch beheben.

@duke-f, kann es sein, dass du von diesem Bug betroffen bist:
https://github.com/balloob/pychromecast/issues/36
Bitte nicht über github pychromecast installieren, sondern direkt über pip install pychromecast. Ich hatte nur vorübergehend eine eigene Version.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik