Intégration de matériel Eufy

Merci. Ça me rassure que ça fonctionne au moins chez toi. On va arriver à le faire tourner chez nous, il n’y a pas de raisons ! (même si les lois de l’informatique sont parfois impénétrables …).
Du coup, ça serait pas un problème de docker à la base, vu les logs que l’on a ?

Docker n’est pas en cause, c’est la bibliothèque dans le container qui renvoi « Connection refused ». J’en dirais plus des que j’en saurais un peu plus.

Si certains sont intéressés, le problème de @Elcho venait du fait que le container n’avait pas suffisamment de privilèges pour s’exécuter. C’est étroitement lié a raspbian et a l’utilisation de sudo du coup. Donc ceux qui utilisent des RPI avec Raspbian vous pouvez être concerné. Il faut ajouter l’argument « –privileged » dans la commande de connexion. Je le rajoute dans le tuto.

Résultat : -d --privileged --name Eufy-WS -e USERNAME=votreadresseemaileufy -e PASSWORD=votremotdepasseeufy -e COUNTRY=FR -e LANGUAGE=fr -p 3000:3000 bropat/eufy-security-ws

2 « J'aime »

Un GRAND merci ! Ça marche impec ! Si vous faites d’autres découvertes pour gérer ces caméras, n’hésitez pas à partager.

Merci à la communauté.

2 « J'aime »

A priori tout est faisable avec cette bibliothèque, la seule limite reste les besoins qu’on a :slight_smile:

1 « J'aime »

J’en profite pour ceux qui, comme moi, on un peu galéré avec le plugin Script. Pensez juste à bien nommer vos script avec l’extension .PY (en majuscules), sinon ça ne fonctionnera pas.

1 « J'aime »

Hello, merci à mcki2ler pour ton temps et la solution côté docker.

Et merci @Tiguy je suis en plein en train de galérer sur Script :slight_smile: Je vais tester car effectivement je l’ai sûrement mis en minuscule.

Mon objectif court terme c’est de récupérer le livestream sur une action manuelle sur Jeedom via RTSP, et de le couper après xx minutes afin de ne pas trop flinguer la batterie. Je ne sais pas si ça en inspire certains ?

Edit :
du coup j’ai créé 2 fichiers via putty dans le répertoire /var/www/html/data

Un pour lancer le stream cf ce que tu avais indiqué plus haut mcki2ler :

{
    "command": "device.start_rtsp_livestream",
    "serialNumber": "MonSerialNumber"
}

et un autre pour le stopper :

{
    "command": "device.stop_rtsp_livestream",
    "serialNumber": "MonSerialNumber"
}

et j’ai 0 message derrière. J’ai loupé une partie du tuto ? à un moment il était fait mention de « set_api_schema » ?

Bref j’avance aussi petit à petit :wink:

Bonne soirée à tous,

Salut,
Cela fait un moment que je voulais regarder pour manipuler mes périphériques eufy (caméras de différents modèles + doorbell).
Je penses que je vais commencer à regarder pour développer un plugin utilisant ce container.
Ne vous enflamez pas je n’ai pas beaucoup de temps de libre donc dans un premier temps je vais faire en local les fonctionnalités dont j’ai besoin :smiley: sans script de déploiement.

Je vais partir à priori sur un daemon en .net 6 étant donné que je suis dev C# :wink:

Pour le moment tout passe bien en postman et j’ai déjà une partie du code C# qui me permet de faire ce dont j’ai besoin.
Le plus long pour moi va clairement être l’intégration dans jeedom car PHP n’est pas un langage que j’affectionne particulièrement (même si j’ai déjà des plugins persos pour notamment récupérer en quasi temps réel les infos de ma passerelle envoy ce que ne permet pas de faire les plugins présent actuellement sur le market :D)

Je vous tiendrais au courant de mon avancé si je trouve le temps d’avancer dessus lol

Hello,

ça n’avance pas vraiment mon histoire pour récupérer le flux en direct via rtsp sur la base d’une action manuelle, + désactivation au bout de x minutes via scenario.

@mcki2ler si tu as quelques pistes sur l’utilisation des scripts pour remplir ce besoin comme on l’avait évoqué, je suis preneur :wink:

Merci !

et @a.berton welcome sur ce threat :slight_smile:

Salut @Elcho
Oui j’arrive à faire ça sans soucis via postman.
Je ne l’ai pas fait par script mais ça fonctionne bien sur une de mes caméras qui fonctionne sur batterie.
La première chose est d’activer la propriété rtsp sur ta caméra. Cette commande est à faire une seule fois. Tu peux vérifier en faisant un get property de ta caméra qu’il est bien à True.

Attention pour une raison que j’ignore au début le json m’affichait « True » et non pas True.
Le fait que ce soit une string j’avais systématiquement une erreur renvoyée lorsque je faisais mon start_rtsp_livestream.

{
    "command": "device.set_property",
    "serialNumber": "",
    "name": "rtspStream",
    "value": "True"
}

Ensuite tu start le flux live RTSP. Attention il existe deux commandes bien différente. Une te renois un flux RTPS et l’autre active le flux live RTSP de ta caméra (je me suis fait avoir au début et ça ne fonctionnait pas).

Donc tu lance cette commande:

{
    "command": "device.start_rtsp_livestream",
    "serialNumber": ""
}

Ensuite si tu ne le connais pas tu peux récupérer l’url de ton flux live via cette commande:

{
    "command": "device.get_properties",
    "serialNumber": ""
}

et tu utilise le champ: rtspStreamUrl

Si tu ouvre un flux réseau dans VLC avec cette url aura bien ta vidéo (ou via le plugin caméra de jeedom c’est ce que j’utilise.

Bien penser à faire la commande de stop après quelques secondes/minutes pour ne pas vider ta batterie :wink:

{
    "command": "device.stop_rtsp_livestream",
    "serialNumber": ""
}

Finalement pour le plugin j’ai bossé un peu dessus ce soir et j’avance plutôt bien. J’ai finalement fait le demon en python histoire de ne pas trop me prendre la tête avec les dépendances. Je commence à remonter doucement des infos sur mon jeedom.

Avec un peu de chance demain j’aurai la création des équipements qui sera fonctionnelle :smiley:

Les trucs les plus interessants à récupérer pour moi ce sont les events qui viennent de ma sonnette et de mes caméras. Je vais enfin pour faire sonner mes googles home quand quelqu’un sonne. J’avais acheté un echo juste pour ça… (la homebase est à l’exterieure à mi distance car le portail est à plus de 60m de la maison)…

Bonjour,

J’ai exactement le même problème que @Juanito3430eau .

J’ai désactivé la double authentification mais pas d’amélioration.
Je n’ai pas non plus eu de captcha en me connectant à mon compte eufy par mon navigateur internet.

Auriez-vous une piste de solution svp :slight_smile: ?

Merci !

Je n’ai pas fait de test avec la double authentification de mon côté pour le moment.
Je testerai ça plus tard une fois que les fonctions de base fonctionneront.

1 « J'aime »

Du coup je viens de trouver.
C’était bien la double authentification. Et je me suis fait piéger par le plugin docker : on a beau supprimer un équipement docker encore et encore, le conteneur qui est lancé ne redémarre pas pour autant… et donc le conteneur attendait toujours la validation de la double authent

Je l’ai donc redémarré manuellement

Maintenant c’est bon :slight_smile:

1 « J'aime »

Quand je lance cette commande par script via putty, je n’ai aucun retour.

Juste pour valider la méthodo, j’ai crée un fichier dans /var/www/html/data en « device-get-properties.PY », dans lequel j’ai mis ta commande avec le SerialNumber de la caméra.

Je lance le script avec un « sudo python3 device-get-properties.PY »

A ce niveau je ne loupe rien ?

Je n’ai de retours que lorsque je lance le script « get-eufyinfo.py » (sans MAJ)… et là je vois effectivement que « « rtspStream »:true ».

Je dois louper un truc mais je ne sais pas où…

Je n’ai pas regardé ce qu’il y avait dans le script get-eufyinfo.py mais dans ton script en plus de la commande il faut bien initialiser la connection.
Tu peux également ajouter avant cette commande la reception des logs celà pourra te donner des pistes:
{« command »: « start_listening »}
et
{
« command »: « driver.set_log_level »,
« level »: « trace »
}

Je remonte bien mes stations dans jeedom via mon plugin.
Pour les devices j’ai uniquement quelques lignes de codes à ajouter pour que cela fonctionne.

Prochaine étape c’est la création des commandes en auto suivant le type de device (cela va se limiter à ceux que j’ai actuellement) et je vous demanderai de l’aide pour les devices que je n’ai pas en ma possession :wink:

J’ai tous ces types de devices:

  • T8113 (EufyCam 2C)
  • T8400 (Indoor Cam 2k)
  • T8410 (Indoor Cam Pan&Tilt)
  • T8441 (Solo OutDoorCam C22)
  • T8442 (Solo OutDoorCam C24)
  • T8210 Doorbel HD 2k (avec ou sans fil)
  • T8910 (Détecteur de mouvement)

Config envoyée par des membres:

  • T8140-Z (EufyCam 2 Pro)

Si vous avez d’autre modèle pourriez vous m’envoyer une capture (sans les numéros de séries) du résultat d’une commande:

{
    "command": "device.get_properties",
    "serialNumber": ""
}

Avec le nom du device associé pour que à terme je puisse essayer de remonter l’image correspondante.

J’ai commandé un detecteur de présence aujourd’hui pour voir si c’est intégrable également via le code de la librairie (Je viens de le recevoir il est bien géré par la librairie)

1 « J'aime »

Hello,

beaucoup mieux effectivement avec l’initialisation de la connection :wink:

Au final c’est bien tout ce code qu’il faut mettre dans le script :

import json
from websocket import create_connection
ws = create_connection(« ws://[IP]:3000 »)
print(ws.recv())
ws.send(json.dumps({
« command »: « device.start_rtsp_livestream »,
« serialNumber »: « [serialNumber] »,
}))
print(ws.recv())
ws.close()

ça marche pour tout mis à part le plus important… les commandes « device.start_rtsp_livestream » et « device.stop_rtsp_livestream », j’ai un « errorCode »:« unknown_command »}

Tu peux activer les logs du container via cette commande.
Tu auras plus d’info sur le unknown_command:

{
« command »: « driver.set_log_level »,
« level »: « trace »
}

Perso je fais mes tests avec Postman c’est bien plus simple :wink:

Bienvenue a bord!

Merci.
Pour info j’ai un plugin qui commence à bien tourner :slight_smile:
Je suis en mesure de remonter les events des différents périphériques, de set le guard mode pour chacun d’entre eux et pour les caméras dont j’ai la config et qui le supportent de démarrer/arrêter le flux rtps pour qu’il soit exploitable depuis le plugin caméra.
Le seul truc pour le plugin caméra c’est que même si je créé manuellement des boutons sur ma caméra pour activer le flux RTSP je suis obligé de refresh la page et ça ça me dérange un peu.

Si certains d’entre vous veulent que je leur envois un package de beta n’hésitez pas à me demander par message privé directement :wink: