Home Assistant & WebRTC

Comme d'aucuns ont pu le remarquer, le flux des caméras sous Home Assistant à tendance parfois à laguer et ne pas être très réactif. On pourrait penser que ça vient de la qualité des caméras, pourtant j'utilise un système Unifi Protect très bien intégré à Home Assistant et parfois j'ai l'impression d'avoir les mêmes lags que sur une chinoiserie achetée pas cher sur Ali ! En fait Home Assistant utilise le protocole RSTP afin de communiquer avec les caméras ou dans mon cas le NVR et en l'état le résultat n'est pas à la hauteur de ce que j'obtiens avec l'appli Unifi Protect. Sauf que je veux avoir ça dans HA car ça m'apporte plein d'options intéressantes. Voir la version simple à la fin !

Afin de contourner ce problème il y a WebRTC que les développeurs connaissent bien. Et l'un d'eux, Alex, qui est également l'auteur d'autres très bonnes intégration, a développé Go2RTC qui va de façon transparente nous permettre d'utiliser WebRTC pour visualiser nos caméras.

J'avais déjà lu quelques sujets sur WebRTC et HA, mais ce qui m'a donné subitement envie de l'intégrer est la vidéo de ce jeune homme :

Ceux qui me suivent savent que je ne suis pas fan des tutoriaux vidéo, surement une question de génération (je suis vieux !), mais passer du temps à faire play / pause m'agace et me fait perdre du temps. Ceci étant il explique clairement l'essentiel que je vais reprendre ici en l'adaptant à l'infrastructure Unifi Protect.

Le problème est documenté et sera probablement corrigé dans une prochaine version de Go2RTC, en attendant il faut le contourner. L'intégration Unifi Protect intègre les caméras en se basant sur le flux RSTPS, ce qui va nous donner ça :

"url": "rtsps://192.168.10.1:7441/2sgdfdsgdfgf3DNu5F?enableSrtp"

Sauf que Go2RTC ne supporte pas SRTP, et donc c'est le bug ! La bonne URL est donc celle ci :

"url": "rtsps://192.168.10.1:7441/2sgdfdsgdfgf3DNu5F"

Je n'ai pas trop cherché, mais je n'ai pas trouvé ou faire la modification et comme Go2RTC recrée les liens lors de chaque démarrage, j'ai contourné le problème en créant dans HA des caméras génériques basées sur la bonne URL (on pense à décocher la vérification du certificat car il est généralement bidon et on n'entre pas d'authentification puisque le lien est open bar).

On répète ça sur toutes les caméras et on pense à les renommer proprement.

L'étape suivant va consister à installer l'addon Go2RTC. Pour ça on va dans les addons HA et on ajoute l'adresse du dépôt idoine dans les sources et on installe :

https://github.com/AlexxIT/hassio-addons

Une fois cet addon installé et lancé on va ajouter l'intégration RTSPtoWebRTC à Home Assistant que l'on fera pointer sur :

http://localhost:1984

Et c'est presque tout, miracle vos caméras sont maintenant bien plus réactives !

A ce stade les barbus vont me dire, oui, mais tous ces ports passent bien en local, mais depuis l'extérieur ? Ouvrir des ports n'étant pas conseillé (j'utilise Nabu Casa ou Cloudflared), on va tuneliser en utilisant le service Ngrok sur lequel on va devoir créer un compte. Une fois le compte créé et validé , on récupère le token d'authentification que l'on vient coller dans la console de Go2RTC :

ngrok:
  command: ngrok tcp 8555 --authtoken <token>
   
webrtc:
  listen: ":8555" # external TCP/UDP port
  candidates:
    - stun:8555

Ensuite on va configurer l'option dans l'intégration RTSPtoWebRTC :

stun.l.google.com:19302

Voilà, c'est fini. La suite de la vidéo nous parle de Frigate et Fully Kiosk. Deux sujets que j'aborderais une autre fois.

Version simple

A la base je voulais juste un affichage plus fluide de mes caméras et j'ai installé toute cette usine qui a certainement un intérêt dans un contexte Frigate. Mais si l'on souhaite uniquement un peu de fluidité dans l'affichage et profiter de WebRTC simplement, et bien il y a plus simple.

Dans ce cas le seul composant à installer est l'intégration WebRTC Camera depuis HACS et de le configurer en l'ajoutant aux intégrations.

Ensuite on peu ajouter une carte Lovelace très simplement :

type: 'custom:webrtc-camera'
url: 'rtspx://192.168.6.1:7441/3jurvIekaWvpee222'

Ou aller plus loin avec quelques option :

type: custom:webrtc-camera
streams:
- url: ''
- url: 'rtspx://192.168.6.1:7441/3jurvIekaWee222'
shortcuts:
  - name: Privacy
    icon: mdi:cctv-off
    service: switch.toggle
    service_data:
      entity_id: switch.terrasse_nord_privacy_mode
ui: true
poster: https://demo.home-assistant.io/stub_config/bedroom.png
muted: true

La doc est très complète et ça remplacera efficacement la carte Picture Glance pour afficher les caméras. Ca fonctionne mais ça reste un peu pauvre, alors même si vous n'utilisez pas Frigate rien n'empêche d'utiliser leur carte qui est bien plus riche et permettra par exemple de caster le rendu vers un téléviseur...

Commentaires (33) -

  • 121396 912382Amaze! Thank you! I constantly wished to produce in my internet web site a thing like that. Can I take element with the publish to my blog? 715286
  • 853157 103496Should you have been injured as a result of a defective IVC Filter, you must contact an experienced attorney practicing in medical malpractice cases, specifically someone with experience in these lawsuits. 980460
  • 963516 791977Spot on with this write-up, I truly think this web site needs significantly a lot more consideration. I�ll probably be again to read a lot a lot more, thanks for that info. 781751
  • 395351 365597Thank you pertaining to giving this exceptional content on your web-site. I discovered it on google. I could check back once more in the event you publish extra aricles. 20543
  • 254999 967886Hey! I�m at work surfing around your weblog from my new apple iphone! Just wanted to say I love reading through your blog and look forward to all your posts! Keep up the outstanding work! 710944
  • 339554 448887As I web internet site possessor I believe the content material matter here is rattling great , appreciate it for your efforts. You should keep it up forever! Great Luck. 51326

Ajouter un commentaire

Loading