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