[Tutoriel] Intégration de la caméra Hub G3 d'Aqara

Pour ton 1er point j’ai bien le son de mon côté. Tu devrais donc toi aussi avoir le son. Faudrait que tu me montres le code que tu as mis dans ta carte webrtc. Essaie de rajouter aussi le paramètre muted: false dans la carte afin de voir ce que cela donne.

J’ai en revanche la solution pour toi pour ton 2ème point.

Le problème du mode Privacy qui se désactive quand tu arrives sur ton dashboard n’est pas lié à une configuration du côté de Home Assistant ou d’un quelconque module. C’est le fonctionnement qu’ont choisi les développeurs de la caméra : Si un flux en direct est en cours, le mode Privacy ne peut pas être activé. En l’occurrence, le mode Privacy ne désactive pas le flux, il cache juste l’objectif de la caméra. Mais dans tous les cas le flux est toujours actif. J’avais rencontré moi même ce problème en installant la caméra dans Home Assistant. Aqara expliquait dans un article de blog que ce n’était pas un bug mais le fonctionnement normal.

Le seul moyen de contourner ce problème est de créer une carte conditionnelle :

  • Quand le mode Privacy est désactivé (objectif non obstrué), on affiche la carte du flux
  • Quand le mode Privacy est activé (objectif obstrué), on affiche une image à la place de la carte.

Une image vaut plus que des mots :

Quand le mode Privacy est activé.

Quand le mode Privacy est déactivé.

type: vertical-stack
cards:
- type: conditional
conditions:
  - condition: state
    entity: switch.camera_g3_video_active
    state: "on"
    card:
      type: custom:webrtc-camera
      url: my-camera-room
      server: http://localhost:11984
      title: Ma camera

- type: conditional
    conditions:
      - condition: state
        entity: switch.camera_g3_video_active
        state: "off"
    card:
      type: picture
      tap_action:
        action: none
      image: /api/image/serve/d46c491c614cb8d3db6e5949910a61c0/512x512

L’image utilisée que j’ai crée (la carte picture te permet directement de télécharger l’image dans Home Assistant pour l’afficher dans la carte conditionnelle :

L’incrémentation du code n’est pas bonne dûe au copié-collé et donc faudra la remettre en place de ton côté.

Quand c’est l’image qui s’affiche, le flux s’arrête.

TIPS :
Avec le fix ci-dessus, quand tu clic sur le bouton pour activer le mode Privacy afin d’afficher l’image, il y a une latence de 10 secondes avant que l’objectif de la caméra soit obstrué. C’est pas terrible et je ne sais pas pourquoi il y a cette latence aussi longue. J’ai contourné le problème en appelant l’API Go2RTC. Une commande de l’API permet de couper le flux en direct immédiatement. Voici la code qui appelle cette commande :

##############################
# COMMANDES RESTFUL
##############################
rest_command:
  force_close_stream:
    url: "http://localhost:11984/api/exit?code=100"
    method: post
    username: ton-username
    password: "ton-mot-de-passe"
    verify_ssl: false

Le nom d’utilisateur et le mot de passe d’accès à l’API est normalement défini dans le fichier go2rtc.yaml. Si tu ne l’as pas défini, il faut le faire en ajoutant ces lignes dans le fichier :

api:
  username: ton-username
  password: ton-mot-de-passe
  listen: ":11984"

J’appelle ce code via une automatisation, au clic du bouton qui déclenche le mode Privacy :

automation:
  - alias: Cessation immédiate du flux de la caméra G3H
    id: force_camera_stream_stop
    description:
      Permet de contourner la tempo de 10s avant la cessation effective du
      flux et d'enclencher le Mode Privé dès que possible.
    triggers:
      - trigger: state
        entity_id:
          - switch.camera_g3_video_active
        from: "on"
        to: "off"
    conditions: []
    actions:
      - action: rest_command.force_close_stream
        data: {}
    mode: single

Si tu rencontres des problèmes redis moi.

1 « J'aime »

Bonjour,

Merci pour ce tutoriel très intéressant.
Je suis bloqué à l’étape 4 car m’est indiqué qu’il n’y a pas de mode appelé « requests ». Auriez-vous des pistes ?

MacBookPro:~ user$ wget -q https://raw.githubusercontent.com/sdavides/AqaraPOST-Homeassistant/main/generatejson/AqaraPOST-tokenGenerator.py --output-document=/tmp/AqaraPOST-tokenGenerator.py && chmod +x /tmp/AqaraPOST-tokenGenerator.py && /tmp/AqaraPOST-tokenGenerator.py
Traceback (most recent call last):
  File "/tmp/AqaraPOST-tokenGenerator.py", line 2, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

Merci d’avance.

Ca veut donc dire que le module python ‹ requests › n’est pas installé sur ta machine. Donc tu dois faire sudo pip3 install requests ou dans le cas où ça ne fonctionne toujours pas essaie sudo pip install requests. Et ensuite tu pourras lancer la commande précédente du tuto.

Merci pour ton retour. Cela a fait avancer le sujet, mais j’avoue que je n’y connait rien en Python …, suis un peu pommé :confused:

Nouvelle erreur qui se présente.

MacBookPro:~ user$ wget -q https://raw.githubusercontent.com/sdavides/AqaraPOST-Homeassistant/main/generatejson/AqaraPOST-tokenGenerator.py --output-document=/tmp/AqaraPOST-tokenGenerator.py && chmod +x /tmp/AqaraPOST-tokenGenerator.py && /tmp/AqaraPOST-tokenGenerator.py
Traceback (most recent call last):
  File "/tmp/AqaraPOST-tokenGenerator.py", line 2, in <module>
    import requests
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/__init__.py", line 42, in <module>
    "urllib3 v2.0 only supports OpenSSL 1.1.1+, currently "
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.1.0i  14 Aug 2018'. See: https://github.com/urllib3/urllib3/issues/2168

Tente

sudo pip uninstall urllib3
sudo pip install urllib3

Si cela ne fonctionne toujours pas, essaie

sudo pip uninstall urllib3
sudo pip install urllib3==1.26.20

Encore merci pour ton aide.
Cependant, encore une erreur :

Traceback (most recent call last):
  File "/tmp/AqaraPOST-tokenGenerator.py", line 7, in <module>
    from Crypto.PublicKey import RSA
ModuleNotFoundError: No module named 'Crypto'

Mais je vais arrêter de t’embêter avec cela et chercher/apprendre le nécessaire de mon côté :wink:

Je suis sur Linux et je ne rencontre pas ce type d’erreur. Je vois que tu es sur Mac et donc je ne sais pas comment sont gérés les modules Python sur Mac. Malheureusement je ne pourrais pas t’aider plus que ça mais quand tu rencontre ce type d’erreur, il suffit de taper la ligne du message d’erreur sur Google et là tu trouveras diverses solutions après un peu de recherches. Dans ton cas tu peux essayer une recherche avec ModuleNotFoundError: No module named 'Crypto'. Ca veut toujours dire que le module Crypto n’est pas installé sur ta machine et qu’il faut que tu l’installe.

1 « J'aime »

Hello @Tidjy,

Tout d’abord, merci pour ton aide. En réfléchissant (et cherchant un peu), il manquait quelques modules pour obtenir les infos nécessaires :sweat_smile:

WebRTC est bien installé/configuré, après quelques problèmes j’ai enfin accès à l’interface Go2RTC !

Cependant, lorsque je regarde les flux dispo dans l’onglet « ADD », j’ai uniquement le flux HomeKit et pas le HA (No Sources)
A noter que la caméra est connectée à Aqara et HomeKit. J’ai accès à tous les contrôles sur HA.

c’est ma création!
il est écrit dans le readme « pycryptodome ( pip3 install pycryptodome ) »

4 « J'aime »

Hello :wave:

J’ai tout supprimé et tout refait car j’avais des soucis de stabilité avec la caméra.
Du coup, j’ai bien tous les contrôles.

Cependant je n’arrive pas à accéder à l’interface de go2rtc sur http://homeassistant.local:11984 ou http://homeassistant.local:1984. J’ai supprimé l’ensemble des éléments (sur le config.yaml, les fichiers go2rtc présents dans le file editor, l’add-on webrtc, …) puis tout bien suivi le tuto (normalement).

Auriez-vous des pistes ?
Merci d’avance.

1 « J'aime »

Salut, je ne me suis pas reconnecté depuis un moment. As tu résolu ton problème depuis ? Sinon j’essaierai de regarder ce qui cloche de ton côté.

Hello

De mon côté je suis sous Windows. J’ai tenté de lancer les commandes depuis le terminal HA mais j’ai des erreurs car “requests” n’existe pas et impossible de l’installer.

Une idée ?

Première erreur

➜  ~ wget -q https://raw.githubusercontent.com/sdavides/AqaraPOST-Homeassistant/main/generatejson/AqaraPOST-tokenGenerator.py --output-document=/tmp/AqaraPOST-tokenGenerator.py && chmod +x /tmp/AqaraPOST-tokenGenerator.py && /tmp/AqaraPOST-tokenGenerator.py
Traceback (most recent call last):
  File "/tmp/AqaraPOST-tokenGenerator.py", line 2, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

Ensuite j’essaie de l’installer mais deuxième erreur

➜  ~ sudo pip install requests
error: externally-managed-environment

× This environment is externally managed
╰─> 
    The system-wide python installation should be maintained using the system
    package manager (apk) only.
    
    If the package in question is not packaged already (and hence installable via
    "apk add py3-somepackage"), please consider installing it inside a virtual
    environment, e.g.:
    
    python3 -m venv /path/to/venv
    . /path/to/venv/bin/activate
    pip install mypackage
    
    To exit the virtual environment, run:
    
    deactivate
    
    The virtual environment is not deleted, and can be re-entered by re-sourcing
    the activate file.
    
    To automatically manage virtual environments, consider using pipx (from the
    pipx package).

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

J’aurai bien tenté direct depuis le terminal windobe mais ça marche pas

Tente

mkdir test
cd test
python3 -m venv test_env
./test/test_env/bin/activate
pip install requests

Bonjour, quelqu’un à déjà eu un soucis avec le flux video go2rtc qui est tout noir ? (et oui la cam est ouverte :slight_smile: ). J’ai refais plusieurs fois la config. Je parviens à la piloter. l’integration homekit fonctionne (c’est par la que je récupère l’image pour le moment car je ne parviens pas à avoir une image dans go2rtc). Je ne sais plus trop quoi faire… si vous avez une idée… merci

Salut, tu peux peut être me venir en aide.
J’ai une Aqara G3, une box Home Assistant Green.
Historiquement j’utilisais la G3 via l’app Aqara Home.

J’ai suivi tout un tas de tutoriels sur le net; et la je me retrouve avec:

-la caméra utilisable sur l’app Aqara Home;

-rien dans Maison sur iOS (HomeKit, donc)

-la caméra utilisable dans Home Assistant (via GO2RTC/WEB2rtc): je peux afficher le flux en direct et contrôler la caméra.

Mon souhait: faire en sorte que la caméra apparaisse AUSSI dans HomeKit.
Je ne trouve pas de solution.
Aurais-tu une idée?

En te remerciant

Salut,

J’ai repris le tuto hier soir. Pour résumé :

  • AqaraPost_[Node-RED] : C’est tout bon, c’est synchro et j’ai mes entitées
  • WebRTC : C’est tout bon, j’ai accès à Go2RTC via l’ip local de mon HA

Seulement, la caméra n’apparaît ni dans la section Apple HomeKit ni Home Assistant, donc je me suis dis, je vais faire un factory reset et là surprise elle apparaît sous la section Apple HomeKit puis au bout de quelques minutes elle disparaît à nouveau… Je suppose qu’après un factory reset, elle expose temporairement le flux avant de le verrouiller à nouveau.

Du coup, je suis bloqué, je ne sais pas comment faire fonctionner étant donné que je n’ai pas d’appareil Apple à disposition.

Avez-vous une idée ?

@KorE8700 @Quentin57520 Je ne dispose pas d’appareils Apple et donc de l’app Homekit. Mais j’ai cru lire que si la caméra n’est pas encore associée dans l’app Homekit, il faut la rebooter pour qu’elle puisse entrer à nouveau en mode découverte. Apres quelques minutes, la caméra disparait si l’association n’a pas été faite à temps et n’est plus découvrable. Donc après reboot de la caméra vous avez un délai pour effectuer l’appareillage dans Homekit.

A vérifier aussi : Dans go2RTC, la caméra à utiliser doit être celle sur la ligne “Home Assistant” et non celle de la ligne “Homekit” qui risque justement d’entrer en conflit avec l’app Homekit pour la découverte.

Redites nous si le reboot a résolu votre problème :slight_smile:

Je pense que c’est le flux dans go2RTC que tu dois récupéré et non celui dans HomeKit. WebRTC fonctionne en concordance avec Go2RTC. Si tu ne vois pas ta caméra dans Go2RTC, je pense qu’il faut déjà voir par là où se situe le problème. Mais histoire de bien comprendre, quand tu dis que tu ne vois pas la caméra dans Go2RTC, c’est qu’elle n’est pas découverte tout court (en somme as tu déjà associé la caméra dans Go2RTC ?) ou c’est simplement que le flux te retourne un écran noir après association ?

Si tu n’as pas encore effectuée l’association dans go2RTC, tu dois rebooter ta caméra pour qu’elle passe en mode découverte et qu’elle soit détectée par go2RTC. Ensuite tu devrais la voir dans la section [Add] puis ligne “Home Assistant” de go2RTC pour l’associer. (Ne pas utiliser la caméra affichée dans la ligne “Homekit”).