Caméras de sécurité type Arlo : Eufy

Eufy offre un écosystème type Arlo avec la même qualité de fabrication mais avec des avantages sur le prix, le cloud,…
En revanche, je ne vois aucune intégration Jeedom, quelqu’un sait si c’est possible ?
image

J’ai des cameras EufyCam 2 en test actuellement chez moi + des arlo pro3.

Aucune integration possible pour le moment sur Eufy en direct via plugin jeedom.
Juste le flux RTSP via le plugin camera.
Et encore… C’est la camera qui déclenche le flux sur mouvement.
Donc en gros c’est juste passif pour jeedom. Il ne pourra pas faire de demande d’image.

Les cameras sont compatibles Alexa, Google et Homekit depuis quelques semaines.

Il y a un gros débat au court d’IFTTT sur les forums US de la marque. C’était promi dans le kickstarter en 2019 mais ca n’a jamais vu le jour.
Selon les derniers échanges avec le support, ce n’est pas dans la roadmap à court terme. Voir abandonné.

J’ai gartouillé un peu les API qui ne sont pas documenté, mais a part recuperer les cameras inscrites sur le compte client rien n’est possible.

Sinon c’est du bon materiel, clairement au niveau arlo sur le hardware.
J’ai meme remarqué que la portée avait bien 15M de plus en exterieur que sur les arlos.

Bonjour,

Je possède depuis plus d’un an les excellente caméra Eufycam E et il existe enfin un moyen de les intégrer à Jeedom à l’aide de scripts python. Par contre l’intégration permet juste de choisir le mode de sécurité des caméras (Absent, Maison, Désarmé & Programme), mais c’est déjà bien et suffisant pour moi. De plus en intégrant le flux RTSP dans le plugin Motion, Jeedom détecte l’activation des caméras et exécute ensuite des scenarios ou envoie des notifications par sms ou par mail avec photo.

Donc pour faire l’intégration des caméras, j’ai suivi la solution expliquée sur le forum Domoticz https://www.domoticz.com/forum/viewtopic.php?t=33241, que je rappel ci-dessous en adaptant à Jeedom:

1- Installer python version 3.6 mini. J’ai installé la version 3.7.3 en suivant le tuto suivant https://community.jeedom.com/t/recherche-dev-pour-un-nouveau-plugin-lg-smart/2932/88

2- Avec Putty, se connecter à la box Jeedom et télécharger la bibliothèque python eufy security avec la commande:

wget https://github.com/keshavdv/python-eufy-security/archive/p2p.zip

3- Extraire le fichier zip par la commande:

unzip p2p.zip

4- lancer l’installation à l’aide des 2 commandes :

sudo pip3 install python-eufy-security
sudo pip3 install -r requirements_test.txt

5- Aller dans le dossier /usr/local/lib/python3.7/site-packages/ et renomer le dossier eufy_security en eufy_security.OLD

6- Copier le dossier eufy_security de l’archive de l’étape 3 dans le dossier /usr/local/lib/python3.7/site-packages/ avec la commande :

cp -R /"chemin du dossier telecharger"/eufy_security /usr/local/lib/python3.7/site-packages

7- Copier le dossier eufy_security de l’archive de l’étape 3 dans le dossier /usr/local/lib/python3.7/dist-packages (j’ai créer le dossier dist-packages car il n’éxistait pas chez moi, du coup je doute que cette étape soit indispensable)

8- Créer les scripts de sécurité des caméras et les copier dans le dossier /home/Eufy par exemple. Pour chaque script, précisé l’adresse mail et mot de passe d’un compte invité Eufy lié à votre compte principale Eufy.

**** Script Maison.py

import asyncio
import logging
import os

from aiohttp import ClientSession

from eufy_security import async_login
from eufy_security.types import GuardMode

logging.basicConfig(level=logging.DEBUG)


EUFY_EMAIL = "your_email_eufy"
EUFY_PASSWORD = "your_password"

async def main() -> None:
    """Create the aiohttp session and run the example."""
    async with ClientSession() as websession:
        # Create an API client:
        api = await async_login(EUFY_EMAIL, EUFY_PASSWORD, websession)

        for station in api.stations.values():
            print("------------------")
            print(f"Station Name: {station.name}")
            print(f"Serial Number: {station.serial}")
            print(f"Station params: {station.params}")
            print(f"Station type: {station.device_type}")

            async with station.connect() as session:
                await station.set_guard_mode(GuardMode.HOME, session)
                await asyncio.sleep(10)
             


asyncio.get_event_loop().run_until_complete(main())

**** Script Absent.py

import asyncio
import logging
import os

from aiohttp import ClientSession

from eufy_security import async_login
from eufy_security.types import GuardMode

logging.basicConfig(level=logging.DEBUG)


EUFY_EMAIL = "your_email_eufy"
EUFY_PASSWORD = "your_password"

async def main() -> None:
    """Create the aiohttp session and run the example."""
    async with ClientSession() as websession:
        # Create an API client:
        api = await async_login(EUFY_EMAIL, EUFY_PASSWORD, websession)

        for station in api.stations.values():
            print("------------------")
            print(f"Station Name: {station.name}")
            print(f"Serial Number: {station.serial}")
            print(f"Station params: {station.params}")
            print(f"Station type: {station.device_type}")

            async with station.connect() as session:
                await station.set_guard_mode(GuardMode.AWAY, session)
                await asyncio.sleep(10)
             


asyncio.get_event_loop().run_until_complete(main())

**** Script Desarme.py

import asyncio
import logging
import os

from aiohttp import ClientSession

from eufy_security import async_login
from eufy_security.types import GuardMode

logging.basicConfig(level=logging.DEBUG)


EUFY_EMAIL = "your_email_eufy"
EUFY_PASSWORD = "your_password"

async def main() -> None:
    """Create the aiohttp session and run the example."""
    async with ClientSession() as websession:
        # Create an API client:
        api = await async_login(EUFY_EMAIL, EUFY_PASSWORD, websession)

        for station in api.stations.values():
            print("------------------")
            print(f"Station Name: {station.name}")
            print(f"Serial Number: {station.serial}")
            print(f"Station params: {station.params}")
            print(f"Station type: {station.device_type}")

            async with station.connect() as session:
                await station.set_guard_mode(GuardMode.DISARMED, session)
                await asyncio.sleep(10)
             


asyncio.get_event_loop().run_until_complete(main())

**** Script Programme.py

import asyncio
import logging
import os

from aiohttp import ClientSession

from eufy_security import async_login
from eufy_security.types import GuardMode

logging.basicConfig(level=logging.DEBUG)


EUFY_EMAIL = "your_email_eufy"
EUFY_PASSWORD = "your_password"

async def main() -> None:
    """Create the aiohttp session and run the example."""
    async with ClientSession() as websession:
        # Create an API client:
        api = await async_login(EUFY_EMAIL, EUFY_PASSWORD, websession)

        for station in api.stations.values():
            print("------------------")
            print(f"Station Name: {station.name}")
            print(f"Serial Number: {station.serial}")
            print(f"Station params: {station.params}")
            print(f"Station type: {station.device_type}")

            async with station.connect() as session:
                await station.set_guard_mode(GuardMode.SCHEDULE, session)
                await asyncio.sleep(10)
             


asyncio.get_event_loop().run_until_complete(main())

9- Dans le plugin Script de Jeedom créer 4 scripts type action/defaut pointant sur les 4 scripts de sécurité:

absent.sh :	/usr/local/bin/python3.7 /home/Eufy/absent.py
maison.sh :	/usr/local/bin/python3.7 /home/Eufy/maison.py
desarme.sh :	/usr/local/bin/python3.7 /home/Eufy/desarme.py
programme.sh :	/usr/local/bin/python3.7 /home/Eufy/programme.py

Et voilà, avec ça vous êtes en mesure de choisir le mode de sécurité des caméras.
N’y connaissant rien en programmation, j’ai bien galéré à faire l’intégration mais au final ça marche et j’en suis bien content car ça fait un moment que je cherchais une solution.

1 J'aime

Enfin une solution merci !
Savez vous si cela fonctionne avec les autres versions (eufycam 2c ?)

Je pense que oui, les versions 2 et 2C apparaissent dans les scripts, mais je ne peux pas vous le garantir comme j’ai la version E. Normalement ça doit marcher avec tous les appareils compatible avec l’application EufySecurity (caméras, sonnette…).

Bonjour.
Très intéressant.
On y parle de « Python » : j’imagine qu’il n’y a pas de risque de collision avec openzwave par exemple ?

Maintenant, il faudrait idéalement qu’une bonne âme veuille bien faire un plugin :slight_smile: Evidemment, je ne me pas compte du tout du travail pour transformer ces scripts en plugin…

En tout cas, cela est génial à mes yeux :slight_smile:

J’ai suivi exactement le tuto pour l’installation de Python 3.7.3, et ça ne pose aucun problème avec Openzwave, tout fonctionne parfaitement.

1 J'aime

Je vais essayer très rapidement alors. Cela nécessite des connaissances particulières ? Merci :blush:

Pas de connaissance particulière, juste savoir se connecter en ssh à la box jeedom à l’aide de Putty par exemple, puis exécuter les commandes. A la base je ne connaissait rien au ssh, mais en faisant des recherche sur le net et en galérant un peu, j’y suis parvenu.

Bonjour.
J’ai fait l’install sur ma jeedom de DEV : pas de souci, sauf que je possède des indoor 2k qui sont autonomes (connectées directement au wifi sans homebase) et les scripts ne finctionnent pas avec ce type de caméras. Je pense que ça ne fonctionne qu’avec les équipements connectés à une homebase.
J’ai essayé de modifier les scripts, mais sans succès : j’arrive à lister mes caméras indoor 2k lié à mon compte Eufy mais je n’arrive pas à modifier le « guard mode ». Il faut avouer que sans connaissance de python, tout ceci est une black box : j’ai cherché des tutos avec des exemples bien documentés et j’ai pas trouvé grand chose.
Voilà.

C’est bien possible qu’il faut une homebase. Par contre il faut bien se connecter à l’aide d’un nouveau utilisateur rattaché au compte principale Eufy (dans l’appli aller dans « Famille et invités » et ajouté un utilsateur avancé).

Quelqu’un a réussi à le installer sur autre chose qu’un raspberry pi ?
Perso sur une machine x64 ça échoue quand j’arrive à l’étape:
sudo pip3 install python-eufy-security

SI je regrarde ce qui a été fait sur le forum domoticz il semblerait que ce soit pour des raspberry étant donné qu’ils parlent de pi user.

Pour le fait que ça ne fonctionne pas avec les caméras indoor je voulais tester avec les miennes (1 ptz et 4 fixes). De ce que j’ai compris en regardant les différents call à faire ça devrait fonctionner tel quel.

Voilà l’erreur que j’ai:
Could not find a version that satisfies the requirement python-eufy-security (from versions: )
No matching distribution found for python-eufy-security

Si je lance le script du post en lien plus haut il me dit bien que je suis sous python 3.7.3

J’ai la box Jeedom Smart et ça marche parfaitement.
Pour ton erreur, je ne sait pas. Il me semble pas l’avoir eu, et je ne suis pas assez calé pour t’aider.

@a.berton : ton problème est lié à la version de python installée sur ton serveur Jeedom. Il est nécessaire d’installer une version 3.6, 3.7 ou 3.8 pour que le tout soit fonctionnel (je te conseille par ailleurs cet article qui indique comment avoir différentes version de python installés sur son serveur : https://hackersandslackers.com/multiple-versions-python-ubuntu/)

@Benoit_50 : Merci pour toutes ces infos et ces scripts qui sont fort utiles. En attendant qu’Eufy propose des API pour la gestion de la détection, j’ai installé le plugin « Motion » mais n’arrive pas à obtenir les détections depuis ma caméra (la commande info retourne toujours 0). Pourrais-tu partager ta configuration côté plugin & caméra pour que je comprenne ce qui ne marche pas de mon côté ? (le plugin semblant pleinement fonctionnel côté daemon, dépendances etc.). D’avance, merci !

Du coté de l’application Eufysecurity, il faut bien activer le flux RTSP.

Et voilà ce que j’ai paramétré dans le plugin Motion:

Capture
Detection

Avec ça, lorsque le flux RTSP de la caméra s’activera suite à une détection, le plugin Motion assimilera le démarrage de la vidéo à un mouvement et la commande Détection passera à 1.

En espérant que ça va t’aider.

2 J'aimes

Bonjour
Je viens de lire vos posts … je trouve cela complexe et dès le départ je suis un peu perdu.
Je suis sur une jeedom Smart et à part utiliser et paramétrer les plugins je ne m’aventure pas trop.
J’ai 4 cameras Eufy et cela me dirait bien de pouvoir les mettre en marche quand je pars par des scenarios.
Est ce quelqu’un pourrait faire un tutoriel pour procéder à ça avec une manière en pas à pas. Cela serait sympa et servirait à tous les débutants.
Merci
Jluc

1 J'aime

Merci beaucoup @Benoit_50 ! Je me penche sur la config dès demain ou dimanche pour voir ce que ça donne ! Si je comprends bien côté Jeedom rien n’est capturé ou lu depuis les caméras si aucune détection n’est relevée par le system Eufy, est-ce bien cela ? Une de mes craintes justement était que le plugin Motion accède en permanence au flux RTSP diminuant ainsi considérablement la durée de vie des batteries.

Si la détection côté plugin passe à 1 seulement si le système Eufy détecte quelque chose alors c’est le top car j’avais peur également que la détection sur Jeedom ne soit régie que par le plugin et que donc la config était super minutieuse et complexe…

Il me tarde désormais de tester tout cela ! :wink:

@Juanito3430eau, il y a juste à suivre la procédure que j’ai indiqué mais effectivement c’est assez complexe pour un débutant. Je n’ai pas le temps de faire un tuto pas à pas, mais redis moi sur quoi tu bloque et j’essaierai de t’aider.

@Technizo, le plugin Motion ou Jeedom ne peux pas activer le flux RTSP de la caméra, c’est uniquement la caméra qui l’active suite à une détection de mouvement. Donc le plugin n’a aucune influence sur la durée de vie des batteries. Pour préserver la batterie, tu peux jouer sur la durée d’enregistrement des vidéos dans l’appli de la caméra et sur la sensibilité de détection. Tout durant qu’il n’y a pas de détection relevée par les caméras, il ne se passe rien sur Jeedom.

La détection sur Jeedom est bien régie que par le plugin Motion. En fait, lorsque le flux RTSP de la caméra s’activera suite à une détection, le plugin va démarrer le flux et va aussitôt considérer qu’il y a un mouvement puisque le nombre de pixel qui change au démarrage du flux est supérieur à 10 (paramètre que j’ai configuré très bas dans « règle la sensibilité de la détection de mouvement » de l’onglet détection du plugin).

Dans mon cas, ça marche très bien, la détection par le plugin marche super bien de jour comme de nuit, et me permet ensuite de m’envoyer un sms d’alerte (car mon tél n’est pas toujours connecté en 4g pour recevoir les alertes de l’appli), d’envoyer des captures par mail, de lancer des scénarios…

Bon courage :slight_smile:

Bonjour
Merci Benoit pour ton aide.En fait je butte sur le point
. : 1- Installer python version 3.6 mini. J’ai installé la version 3.7.3 en suivant le tuto suivant https://community.jeedom.com/t/recherche-dev-pour-un-nouveau-plugin-lg-smart/2932/88

J’ai une jeedom smart et je ne vois pas où cela se fait. Et où trouver le python 3.7.3. Dis moi si tu as le temps. Le reste je pense que cela peut le faire.
Autre question le fait d’installer python 3.7.3 ne fait pas prendre de risque sur le fonctionnement de jeedom en général ?
Merci de ton aide
Jluc