Aller au contenu

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

megabubu

Chromecast et fibaro

Recommended Posts

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 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

ça, c'est un script écrit en python qui met à jour une variable globale et déclenche l'exécution des scènes l'utilisant comme trigger. En gros, ça fonctionne dans le sens Chromecast => HC2, pas HC2 => Chromecast.

 

Il faut trouver l'API du Chromecast, après tu pourras sans pb le piloter depuis le HC2.

Partager ce message


Lien à poster
Partager sur d’autres sites

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 7 heures, jojo a dit :

Estes-vous informé ce ceci :

Le Chromecast provoque des problèmes dans les réseaux wifi

moi qui voulais en acheter un, je suis refroidi ...

Tu vois pourquoi je suis un fervent défenseur du réseau Ethernet câblé.

Le Wi-Fi c'est pratique, mais arrive toujours un moment où ça sature...

Sinon, abandonner le Wi-Fi grand public, et passer sur du pro (Ubiquiti.....etc... ou Cisco)

 

Le bug Chromecast ne se produit que lorsque le Chromecast reste en veille trop longtemps. Google va le corriger je pense.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok je ne savais pas. J avais jamais remarqué cela. 

Sinon côté API, on peut contrôler la chromecast avec Fibaro? 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je sors la pelle et je re ouvre ce topic sur le chromecast, je l'utilisais plus depuis que j'ai une apple Tv qui me donne entière satisfaction mais depuis qq jour j'ai un google home mini pour tester car les commandes vocal via Sarah, ca n'a jamais pris.. et donc je regarde pour piloter la domotique via google assistant pour que ca soit plus WAF et à 30 / 45€, tu peut en coller un peu partout. Par contre l'audio dans la maison est tjs centralisé et relié à Sarah. Elle fait tjs bien le taff pour la musique et le TTS multi room, mais voila les GHM ca a pas un son de ouff et la maison est déja équipié. Donc je voudrais au lieu de relier un Chromecast audio sur l'ampli de Sarah, faire tourner un soft qui émule un récepteur chromecast sur Windows. Chose que je fais déja ac airplay et ca marche nikel.

 

Le but: 

Ok google, je veux écouter ma musique préférée sur Sarah -> musique dans toute la maison. Et ca sans acheter une chromecast audio + de quoi le relier au même niveau de l'UC de Sarah.

Je cherche donc un petit soft comme ca mais impossible de trouver, pourtant c'est pas bien sorcier. avant chrome remplissait cette tache via une extention mais mnt c'est en natif mais en émetteur  seulement.

 

Je sais pas si j'ai étais clair en fait :D

Partager ce message


Lien à poster
Partager sur d’autres sites

×