[Altes Modul] GoogleCast (98_GOOGLECAST.pm)

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

Vorheriges Thema - Nächstes Thema

hillbicks

Wie sucht das Modul eigentlich nach verfuegbaren Chromecast Devices? Per MDNS?

Mein Setup sieht momentan vor das die fhem Instanz in einem anderen subnetz laeuft als die Chromecast Devices. Ich hatte eh geplant eine zweite Instanz aufzusetzen die dann die im gleichen Subnetz ist, aber mich wuerde das doch interessieren wie das Modul hier funktioniert.

neo_owl

#226
Hallo,

ich versuche mit dem Googlecast Modul meine Chromecast und mein Google Home zu steuern,
leider ohne erfolg. Ich bin nach der Anleitung vorgegangen erhalte aber beim define meines Chromecast
folgende Meldung 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 12, in <module>
    from .config import *  # noqa
  File "/usr/local/lib/python2.7/dist-packages/pychromecast/config.py", line 6, in <module>
    import requests
  File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 97, in <module>
    from . import utils
  File "/usr/local/lib/python2.7/dist-packages/requests/utils.py", line 42, in <module>
    if platform.system() == 'Windows':
  File "/usr/lib/python2.7/platform.py", line 1288, in system
    return uname()[0]
  File "/usr/lib/python2.7/platform.py", line 1255, in uname
    processor = _syscmd_uname('-p','')
  File "/usr/lib/python2.7/platform.py", line 990, in _syscmd_uname
    rc = f.close()
IOError: [Errno 10] No child processes
2017.08.14 20:34:04 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 553.

2017.08.14 20:34:04 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 553.



Bin ich einfach nur blind oder habe ich was vergessen, OS ist Debian Stretch auf einem Banana Pi.

Vielen Dank für Ratschläge im Voraus.

dominik

#227
@chtischer, kannst du mal bei den beiden Chromecast Device verbose=5 einstellen und mir das Log posten?

@buki, neo_owl, der Fehler liegt wohl irgendwo bei der Inline::Python Installation. Den gleichen Fehler hatte schon mal jemand hier im Thread, aber da konnte ich noch keine Lösung dazu finden.
Könnt ihr mal "uname" auf der Konsole ausführen? Da ist nämlich das Command, welches in diesen Teil versucht wird auszuführen. Bitte auch prüfen welche $PATH Variable der fhem User nutzt und ob dort auch "uname" ausführbar ist.

@hillbicks, für das Discovery der Cast Devices wird mDNS verwendet. Die Grundlage dafür stellt jedoch die pychromecast Library in welcher die Suche ausgeführt wird.

Gruß
Dominik
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

chtischer

#228
2017.08.15 07:14:54.244 4: GOOGLECAST: search result: ccShield|CCDEVICE|192.168.1.150|8009|aaaaaaaa-9018-24e7-d623-c127bf9a4b3f|SHIELD Android TV|Wohnzimmer|CCDEVICE|192.168.1.251|8009|bbbbbbbb-e8d2-a130-5fdd-680b9c10cae5|Google Home|Quasselstrippe
2017.08.15 07:14:54.244 4: GOOGLECAST: search result: ccHome|CCDEVICE|192.168.1.150|8009|aaaaaaaa-9018-24e7-d623-c127bf9a4b3f|SHIELD Android TV|Wohnzimmer|CCDEVICE|192.168.1.251|8009|bbbbbbb-e8d2-a130-5fdd-680b9c10cae5|Google Home|Quasselstrippe

2017.08.15 07:24:53.328 1: BlockingInformParent (BlockingStart): Can't connect to localhost:7072: IO::Socket::INET: connect: Connection refused
2017.08.15 07:24:53.330 1: BlockingInformParent (GOOGLECAST_findChromecastsResult): Can't connect to localhost:7072: IO::Socket::INET: connect: Connection refused
2017.08.15 07:24:53.369 1: BlockingInformParent (BlockingStart): Can't connect to localhost:7072: IO::Socket::INET: connect: Connection refused
2017.08.15 07:24:53.371 1: BlockingInformParent (GOOGLECAST_findChromecastsResult): Can't connect to localhost:7072: IO::Socket::INET: connect: Connection refused

ccHome --> 192.168.1.251
ccShield --> 192.168.1.150

Lege ich ccHome neu an wird außerdem GOOGLECAST-ccHome definiert im hidden room. Dieser ist nach shutdown restart verschwunden.

Lucky2k12

#229
Hallo, und danke für das  Modul. 8)

Ich habe hier je einen Chromecast Audio und einen Video und konnte ein device nach einigem hin und her anlegen, aber leider bleibt das presence reading auf "offline" und das device reagiert natürlich nicht auf "set play" Kommandos  :-[

device
defmod chromecast GOOGLECAST Fernseher
attr chromecast favoriteURL_1 http://swr-mp3-m-swr3.akacast.akamaistream.net:80/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3
attr chromecast favoriteURL_2 https://www.youtube.com/watch?v=tERRFWuYG48
attr chromecast room Wohnzimmer

setstate chromecast initialized
setstate chromecast 2017-08-15 09:14:28 presence offline


pychromecast erkennt beide Geräte:

>>> pychromecast.discover_chromecasts()
[('192.168.178.61', 8009, UUID('xxxxxx-6585-d7ff-16ec-yyyyy'), u'Chromecast', u'Chromecast Wozi'), ('192.168.178.65', 8009, UUID('xxxxxxx-d3eb-d669-26f4-yyyyy'), u'Chromecast Audio', u'ChromecastAudio7777')]



Hinweise zum weiteren Vorgehen wären willkommen.  ;)
Danke.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

buki

Hallo Dominik,

ein "uname" ist ausführbar und gibt "Linux" zurück.
Die $PATH  Variable vom fhem-User ist "/opt/fhem"

Ich hoffe, das ist das was du wolltest.

Gruß Sven

neo_owl

Hallo Dominik,

uname gibt "Linux" aus und /opt/fhem ist in PATH vorhanden.

Gruß
   Patrick

dominik

@chtischer, aktiver mal telnet. Blocking.pm benutzt nämlich die telnet Funktionalität. Wieso es aber durch ein normales Anlegen funktioniert, verstehe ich nicht ganz. Das müsste man den Blocking.pm Entwicklern mal mitteilen.

@Lucky2k12, bitte um Log mit verbose=5 für die Cast Devices.

@Patrick, Sven, wenn man nach "python popen no child processes" googelt kommen einige Einträge. Habe leider noch nichts passendes gefunden. Vielleicht findet ihr da was. Es dürften aber irgendwas mit popen in Python zu tun haben, welches uname aufruft und der Aufruft schlägt fehl.

Gruß
Dominik
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Lucky2k12

@dominik:

2017.08.15 20:39:21 3: GOOGLECAST: Fernseher initializing...
2017.08.15 20:39:30 4: GOOGLECAST: search result: chromecast|CCDEVICE|192.168.178.61|8009|xxxxxxx-6585-d7ff-zzz-yyyyyyyyyyy|Chromecast|Chromecast Wozi|CCDEVICE|192.168.178.65|8009|xxxxxx0-d3eb-d669-26f4-yyyyyyyy|Chromecast Audio|ChromecastAudio7777
2017.08.15 20:39:30 4: GOOGLECAST: Fernseher not found, retry in 10s.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

dominik

Heißt dein Device auch Fernseher? Laut Suche wären es "Chromecast Wozi" und "ChromecastAudio7777". Hast du noch einen 3. Chromecast der Fernseher heißt?

//Edit: Es könnte sein, dass Chromecast Wozi nicht gefunden wird - aufgrund des Leerzeichens. Bitte mal Testen und wenn möglich das Leerzeichen vorerst entfernen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Lucky2k12

Super, Danke. Das war's.
Den Audio-Chromecast kann ich sehen, den Video "Chromecast Wozi" krieg ich wegen des Leerzeichens nicht angelegt. Macht nix, den werd ich umbenennen.

Gruß
HP T610, HM, Jeelink, LGW, mapleCUL868+434

dominik

@Patrick, Sven, könnt ihr bitte folgendes testen:
pi@raspberrypi ~ $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

buki

pi@nuc:~$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux

dominik

Erstell mal folgende Datei
testpython.pl
use Inline Python => << "ENDE";

print "inline python is working"

ENDE


Danach ausführen mit
perl testpython.pl
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

buki

pi@nuc:~$ perl testpython.pl
inline python is working