Rechercher dans la communauté
Affichage des résultats pour les étiquettes 'chromecast'.
1 résultat trouvé
-
Salut à tous, je suis équipé d une chromecast, même 2 chromecast et j aimerais bien piloter ses 2 équipement avec ce notre box préféré. Je suis pas doué en mua et voici ce que j ai pu trouver sur le net: #!/usr/bin/env python import pychromecast import time import requests import logging import sys import daemon # Delay between each search for new chromecasts delay = 60 # Values needed to connect to Fibaro HC2 hostname = "<FIBARO HOSTNAME>" username = "<FIBARO USERNAME>" password = "<FIBARO PASSWORD>" logger = None class DeviceStatusUpdater: def __init__(self, device): self.device = device self.thumbnail = "" self.sendDeviceStatus() self.device.media_controller.register_status_listener(self) def new_media_status(self, status): self.sendDeviceStatus() def addDeviceInfo(self, topic, payload): logger.info("%s info: %s - %s", str(self.device.name), topic, payload) return {topic: payload} def sendDeviceStatus(self): deviceInfo = {} deviceInfo.update(self.addDeviceInfo("name", self.device.name)) deviceInfo.update(self.addDeviceInfo("host", self.device.host)) if len(str(self.device.app_display_name)): deviceInfo.update(self.addDeviceInfo("app", self.device.app_display_name)) else: deviceInfo.update(self.addDeviceInfo("app", "None")) if self.device.media_controller is not None: if self.device.media_controller.status is not None: if self.device.media_controller.status.player_state in [pychromecast.controllers.media.MEDIA_PLAYER_STATE_PLAYING, pychromecast.controllers.media.MEDIA_PLAYER_STATE_BUFFERING]: deviceInfo.update(self.addDeviceInfo("is_playing", "True")) else: deviceInfo.update(self.addDeviceInfo("is_playing", "False")) deviceInfo.update(self.addDeviceInfo("title", self.device.media_controller.status.title)) deviceInfo.update(self.addDeviceInfo("series_title", self.device.media_controller.status.series_title)) logger.info("Updating cc_%s with play status %s" % (deviceInfo['name'].replace(' ', '_'), deviceInfo['is_playing'])) hc2Url = 'http://%s/api/globalVariables/cc_%s' % (hostname, deviceInfo['name'].replace(' ', '_')) hc2Data = '{"value":"%s","invokeScenes":true}' % deviceInfo['is_playing'] logger.debug(hc2Url) logger.debug(hc2Data) req = requests.put(hc2Url, data=hc2Data, auth=(username, password)) if req.status_code is not 200: logger.error("HC2 connection status code is %d" % req.status_code) def chromecast_loop(): global logger myDevices = [] while True: ccNames = [o.device.name for o in myDevices] devices = pychromecast.get_chromecasts(tries=3) for device in devices: logger.info("Discovered device: %s (%s) - %s", device.device.friendly_name, device.host, device.model_name) if device.device.friendly_name not in ccNames: logger.info("%s is not in myDevices", device.device.friendly_name) myDevices.append(DeviceStatusUpdater(device)) else: logger.debug("Disconnecting unused socket") device.disconnect() newCcNames = [o.device.friendly_name for o in devices] for device in myDevices: if device.device.name not in newCcNames: logger.info("%s no longer exists!", device.device.name) try: device.disconnect() myDevices.remove(device) except: logger.info("Exception caught") logger.debug("Sleeping for %d seconds...", delay) time.sleep(delay) def run(): global logger fh = logging.FileHandler("./cc2hc2.log") formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) logger = logging.getLogger('cc2hc2') logger.setLevel(logging.INFO) logger.addHandler(fh) context = daemon.DaemonContext( files_preserve = [ fh.stream, ], ) with context: chromecast_loop() if __name__ == "__main__": run() quelqu un pourrait il m expliquer ou quelqu un aurait il un VD pour contrôler chromecast? Merci d avance et bonne journée. PS: c est mon anniversaire today