Caster votre interface Home Assistant sur votre Google Nest Hub.

Plublié par : https://hacf.fr/caster-votre-interface-home-assistant-sur-google-nest-hub/

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 : < 1 / 15 min – Difficulté : Faible.

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

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

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)
3 J'aime

Bonjour,

Super article et c’est exactement ce que je recherchais. Ayant acheter un Nest pendant les soldes, la méthode officielle ne me permet pas d’afficher les customs cards et je n’ai que ça ! :sweat_smile:

La méthode fonctionne parfaitement et depuis que Home Assistant intègre plusieurs dashboard, un vrai régale.

Le seul hic,ce que le Nest coupe la connection au bout d’un certain temps, (>5min <10min).

Je passe donc par l’intégration IFTTT pour afficher lovelace mais entre la commande et l’affichage, il se passe au moins 30s. :innocent:

Je sais ce n’est rien, et je m’en contente, mais ce serais bien que le cast soit permanent…

En tout cas encore merci ! :heart_eyes:

Avec plaisir content que ça serve.

J’utilise le nest hub comme réveil et donc cast quelques minutes me convient parfaitement…

J’avais pourtant vu ce « soucis » et la.parade que j’ai trouvé c’est de lancé via node red toutes les xminutes le cast afin que cela reste permanent.

Je ne l’ai pas testé mais ça devrait le faire…

Merci de ta réponse.
Ca le fait effectivement.
Le seul truc ‹ moche ›, c’est que l’état du Nest qui cast Home Assistant n’est pas remontélorsque l’on affiche le status à l’aide de la commande ‹ catt ›.

Du coup, une fois, en pleine utilisation de mon Nest, en navigant dans mes lovelaces, ça m’a relancé le cast alors que pas nécessaire…

J’ai donc augmenter le temps pour être sûr.

Mais bon, la commande vocale qui prend 30sec est plus utile pour moi du coup.

:ok_hand:

Oui pareil… Il faut malheureusement s’adapter mais j’ai plein de custom cards aussi donc le cast de ha laisse tomber

Oui, les customs cards et le lancement de la version officielle sont affreux, j’avoue.

C’est pour ça que je suis bien content d’être tombé sur ce topic.

Encore merci :smiling_face_with_three_hearts:

[{"id":"d15a457d.41ec68","type":"bigssh","z":"797e40da.11773","name":"Cast NestHub","commandLine":"/usr/bin/catt -d 'Garage' cast_site \"http://192.168.100.245:8123/lovelace-mobile/accueil\"","commandArgs":"","minError":1,"minWarning":1,"noStdin":false,"format":"","payloadIsArg":false,"myssh":"d585ef1b.9dac","x":600,"y":860,"wires":[[],[],[]]},{"id":"348396e9.66f81a","type":"bigssh","z":"797e40da.11773","name":"Stop Cast","commandLine":"/usr/bin/catt -d 'Garage' stop","commandArgs":"","minError":1,"minWarning":1,"noStdin":false,"format":"","payloadIsArg":false,"myssh":"d585ef1b.9dac","x":580,"y":920,"wires":[[],[],[]]},{"id":"5c9c5312.f34bcc","type":"switch","z":"797e40da.11773","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":350,"y":900,"wires":[["d15a457d.41ec68"],["348396e9.66f81a"]]},{"id":"170647ad.83d5a8","type":"inject","z":"797e40da.11773","name":"on","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"on","payloadType":"str","x":190,"y":860,"wires":[["5c9c5312.f34bcc"]]},{"id":"9a10e9d6.c89938","type":"inject","z":"797e40da.11773","name":"off","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"off","payloadType":"str","x":190,"y":920,"wires":[["5c9c5312.f34bcc"]]},{"id":"d585ef1b.9dac","type":"SSH_Credentials","host":"192.168.100.245","port":"22","userlabel":"root@192.168.100.245"}]

Pour Titusdam, le flow simplifié
mon ha 192.168.100.245, l’autre ip est mon nesthub

1 J'aime

Nickel, merci DcJona!

Alors mon problème venait du port dans la config du BigSSH, je mettais 8123 au lieu de 22, en pensant que je devais mettre celui d’accès de HA.

Par contre maintenant, ça semble bien caster mais je tombe sur la page d’identification.
Tu m’as dit avoir eu le même problème, comment le résoudre?

Je voudrais également lancer le cast via commande vocale, est-ce possible dans nodered?

Par ailleurs, dans ta config, je vois que t’as mis page mobile (lovelace-mobile), quel est l’avantage?

Merci beaucoup pour ton aide.

Alors une chose à la fois :smiley:

Etant donné qu’il n’y a pas de clavier on ne peut pas s’authentifier comme sur une tablette android traditionnelle.

Dans ton fichier configuration.yaml rajoute ceci :

homeassistant:
  auth_providers:
  - type: trusted_networks
    trusted_networks:
      - 127.0.0.1
      - 192.168.x.0/24

la dernière ligne autorise tout ton réseau si tu veux une seul ip tu peux modifier…

Pour le cast via commande vocale il faudrait voir sur nodered comment récupérer l’info et l’action mais cela doit être possible oui.

Lovelvace-mobile est un dashboard pour mes tablettes et lovelace-compute pour mon pc tout simplement car les résolutions d’écrans sont bien différentes de 7" sur le nesthub contre 34"’ sur mon desktop

1 J'aime

Parfait, merci pour ces éclaircissements.

Effectivement, la résolution. Va falloir que je fasse un peu de recherches là dessus pour savoir comment ça fonctionne!

Idem pour la commande vocale nodered, en attendant d’avoir un bouton.

Pour le auth_providers, ca m’a redémarré en mode sans échec, j’ai copié collé ta ligne pourtant en enlevant le doublon de homeassistant

essaye comme ca en adaptant ton range ip :

auth_providers:
    - type: homeassistant
    - type: trusted_networks
      trusted_networks:
        - 127.0.0.1
        - 192.168.x.0/24
    #  allow_bypass_login: true
1 J'aime

Pareil, même erreur… Mode sans échec.

je dois remplacer le x dans l’ip?

ah ben oui lol pas ton range :smiley:

Nickel ça fonctionne, merci beaucoup!
Me reste à créer un nouvel utilisateur pour le cast!

Oui ou utiliser ton user habituel comme tu veux… Ensuite sur le nesthub tu cliques sur trusted. Il t’affiche ton user et ensuite tu te log…a faire juste une fois.

Yes c’est bon ça fonctionne parfaitement, j’ai déjà refait les dashborads spécifiques.
Me reste à trouver comment modifier la résolution. Il semblerait que Custom header soit déprécié; faut que je trouve autre chose.
T’utilises quoi toi?

il est intégré maintenant :wink:

Je reviens encore vers toi.
Tout fonctionnait à merveil.
Mais depuis depuis quelques jours, impossible de lancer la commande
J’ai une erreur 127 sous le Big SSH.
Je n’ai absolument rien changé à la config pourtant.
Je sais qu’il y a eu des MAJ du Nest Hub mais c’est tout.
Pareil j’ai fait les MAJ de HA.
Du coup j’ai réinstallé sur un Snapshot de 10j mais ça n’a rien changé…

Je suis un peu dépité.

Ça fonctionne toujours chez toi?

Erreur 127 signifie qu’il ne trouve pas la commande que tu lui fourni…

Verifie en te connectant en SSH que catt est toujours présent.