Introduction.

Tout d’abord, il existe la méthode officielle ICI, mais pour ma part elle ne prenait pas en charge les custom cards, ce qui est plutôt embêtant non?

Mais avant tout un peu d’explication, caster c’est quoi ?
Il s’agit simplement d’afficher le contenu, dans notre cas, de votre lovelace sur votre Google NestHub car ce n’est pas une tablette Android où il suffit d’ouvrir un navigateur et se rendre sur l’url de votre Home Assistant pour visualiser la page de lovelace. Dans notre cas, la manœuvre est plus complexe et demande un peu plus de manipulation. C’est néanmoins possible et ne demande pas d’énorme connaissance.

Nous allons, dans cet article, découvrir comment il est possible de les afficher et de gérer cela via node-red et un détecteur de présence.

S’il y a des manques, des questions, des points que vous souhaitez voir abordés en plus, n’hésitez pas ! Si nous pouvons répondre et apporter un plus nous le ferons !

Mise à jour : 27/07/2020 – Temps de lecture / alisation : 5 / 15 min – Difficulté : Moyenne.

To do :

  • RAS

Prérequis.

  • Avoir installé l’addon Node-Red ou une vm séparée comprenant Node-red.
  • Les pallettes :
    – node-red-contrib-bigssh
    – node-red-contrib-home-assistant-websocket
    – node-red-contrib-time-range-switch

Matériels nécessaires.

  • Un actionneur, dans notre cas un détecteur de présence Xiaomi, mais vous avez le choix pour celui-ci.

Matériels utilisés.

  • Détecteur de présence Xiaomi
  • Google Nesthub

Installation / configuration.

Tout d’abord il vous faudra vous connecter en ssh ou en local si vous disposez d’un clavier et souris sur la machine hébergeant home assistant pour installer quelques pré-requis.
Personnellement j’utilise MobaXtrem mais putty fait l’affaire.

Code a exécuter pour installer les pré-requis

Installation de catt qui permettra de caster (lien vers github)

  - apk add --no-cache python3
  - apk add --update py-pip
  - python3 -m pip install catt

Dans votre fichier configuration.yaml :

homeassistant:
  auth_providers:
    - type: trusted_networks
      trusted_networks:
        - 192.168.0.0    # -> ip de votre nesthub
        - 127.0.0.1
     # allow_bypass_login: true  -> pas toujours nécessaire si cela ne fonctionne pas ajoutez cette ligne

J’ai choisi personnellement de gérer cela avec Node-red (vous pouvez retrouver d’excellent guide pour débuter sur notre blog).

Le flow se compose de la manière suivante :


La partie Nextion n’est pas à prendre en compte (elle me permet de gérer l’allumage de mon Nextion sur détection de présence, celle ci n’est pas incluse dans le flow ci-dessous).

Un peu de détail sur le fonctionnement :

Le node event state contrôle l’état du capteur (Pres ch xiaomi), si celui-ci passe à ON, j’active un input_boolean sur ha


Simplement défini dans mon fichier config.yaml ou input_boolean.yml ( attention à définir la ressource)

input_boolean:
  cast_dashboard:
    name: cast_dashboard

Au passage à OFF du détecteur, je fais un reset du switch (turn off).

Ce qui permet au final de gérer mon node Switch, entre 7h et 22h ( choix personnel à définir).
Je fais ensuite un set du volume a 0% pour ne pas avoir la notification sonore sur votre Google NestHub à chaque cast.
Vient ensuite le node Bigssh (veillez à configurer vos informations de connexion ssh, celles de votre home assistant).
La commande à envoyer pour le cast est la suivante :

/usr/bin/catt -d 'nomdevotrenesthub' cast_site "http://ip_de_ha:8123/lovelace/nomdevorepagelovelace"

Pour stopper le cast : 

/usr/bin/catt -d 'nomdevotrenesthub' stop

Remarque : nomdevotrenesthub = nom connu sous google et pas sous HA sauf si renommé façon identique

Flow complet :

[{"id":"6eb4b4ac.afd01c","type":"api-call-service","z":"6c5159ad.ac80a8","name":"Reset Cast Switch","server":"31e2ebaf.83d604","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.cast_dashboard","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1390,"y":340,"wires":[[]]},{"id":"a041d05f.2acb6","type":"api-call-service","z":"6c5159ad.ac80a8","name":"input bool cast","server":"31e2ebaf.83d604","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_on","entityId":"input_boolean.cast_dashboard","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1380,"y":280,"wires":[[]]},{"id":"cfd2d03b.b3cb","type":"server-state-changed","z":"6c5159ad.ac80a8","name":"Cast Input Boolean","server":"31e2ebaf.83d604","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.cast_dashboard","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":1170,"y":400,"wires":[["5f98882c.74ca18"]]},{"id":"5f98882c.74ca18","type":"switch","z":"6c5159ad.ac80a8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":1390,"y":400,"wires":[["2ca27fee.090aa"],[]]},{"id":"bed782e0.394","type":"server-state-changed","z":"6c5159ad.ac80a8","name":"Pres ch xiaomi","server":"31e2ebaf.83d604","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.pres_ch_parents","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"x":1140,"y":240,"wires":[["64e8e05d.2b353","a041d05f.2acb6"],["6eb4b4ac.afd01c"]]},{"id":"2ca27fee.090aa","type":"time-range-switch","z":"6c5159ad.ac80a8","name":"","lat":"50.4","lon":"4.2667","startTime":"7:00","endTime":"22:00","startOffset":0,"endOffset":0,"x":1570,"y":400,"wires":[["a4d0bdd9.b6485"],["85a04c5d.aeb2d"]]},{"id":"a4d0bdd9.b6485","type":"api-call-service","z":"6c5159ad.ac80a8","name":"Vol 0%","server":"31e2ebaf.83d604","version":1,"debugenabled":false,"service_domain":"media_player","service":"volume_set","entityId":"media_player.chambre_parents_3","data":"{\"volume_level\":0}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1700,"y":340,"wires":[["6d627062.3a944"]]},{"id":"6d627062.3a944","type":"bigssh","z":"6c5159ad.ac80a8","name":"Cast NestHub","commandLine":"/usr/bin/catt -d 'nesthub' cast_site \"http://192.168.100.76:8123/lovelace-compute/lumiere\"","commandArgs":"","minError":1,"minWarning":1,"noStdin":false,"format":"","payloadIsArg":false,"myssh":"d0744ad6.4efcd8","x":1880,"y":300,"wires":[[],[],[]]},{"id":"85a04c5d.aeb2d","type":"bigssh","z":"6c5159ad.ac80a8","name":"Stop Cast","commandLine":"/usr/bin/catt -d 'nesthub' stop","commandArgs":"","minError":1,"minWarning":1,"noStdin":false,"format":"","payloadIsArg":false,"myssh":"d0744ad6.4efcd8","x":1880,"y":420,"wires":[[],[],[]]},{"id":"31e2ebaf.83d604","type":"server","z":"","name":"Home Assistant ip","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true},{"id":"d0744ad6.4efcd8","type":"SSH_Credentials","z":"","host":"192.168.100.76","port":"22","userlabel":"root@192.168.100.76"}]

Conclusion

Voici un système simple à mettre en place, qui prend en charge les customs cards et fonctionne chaque jour chez moi depuis plusieurs semaines.

N’hésitez pas à me faire part de vos questions ou difficultés via le forum en ouvrant un topic dédié.

A bientôt ,

DCJona

Vous souhaitez signaler un erreur, partager votre configuration ou ajouter un matériel fonctionnant ? Cliquez sur les boutons ci-dessous.

Mise à jour : (détails)

28/07/2020 :

  • Publication (DCJona)
Caster votre interface Home Assistant sur votre Google Nest Hub.
Articles HACF Google Nest Hub