Plugin Eufy

Bonjour à tous

Je crée un nouveau thread pour le beta test du nouveau plugin Eufy.
Comme certains d’entre vous le savent déjà j’ai repris et finalisé les devts commencés par @a.berton (merci à toi)

Ce plugin permet de commander les devices de sécurité Eufy (bases, cameras, sonnettes…)
[EDIT] le plugin est maintenant dispo en stable sur le market
Il utilise docker, lib bropat/eufy-security-ws

Il manque plusieurs devices que je n’ai pas testé. Si vous êtes dans ce cas envoyez moi le resultat de la commande python3 resources/test_eufy.py et j’ajouterai le support votre modèle à la liste.

Si vous avez des problèmes lisez bien le README et la doc avant de me faire un retour:

Merci d’avance aux volontaires :wink:

2 « J'aime »

Salut.
J’ai installé le plugin. Pas de soucis particuliers à l’installation. Au niveau des tests de communication, j’ai un NOK rouge et un OK vert, mais tout fonctionne bien. C’est vrai qu’au départ j’ai mis l’IP par défaut 127.0.0.1 mais que j’ai modifié ensuite par l’IP de mon Raspberry PI sur lequel tourne Jeedom. Au niveau container, j’utilise le plugin Docker management de Jeedom.
Mais tout fonctionne bien, même si j’ai ce NOK, donc pas de soucis. J’ai une T8113-Z et les commandes fonctionnent mais je crois que des commandes apparaissent alors qu’elles ne sont pas ce modèle de caméras (antivol par exemple). Du coup, je te mets le test_eufy au cas ou :


*** Create connexion to 127.0.0.1:3000***
{"type":"version","driverVersion":"2.4.2","serverVersion":"1.3.4","minSchemaVersion":0,"maxSchemaVersion":16}

*** Start listening ***
{"type":"result","success":true,"result":{"state":{"driver":{"version":"2.4.2","connected":true,"pushConnected":true},"stations":[{"name":"BaseCamera","model":"T8010","serialNumber":"T8010NXXXXXXX","hardwareVersion":"P0","softwareVersion":"3.2.6.7h","lanIpAddress":"192.168.0.11","macAddress":"8C:85:80:FA:C4:4D","currentMode":1,"guardMode":2,"connected":true}],"devices":[{"name":"Entree","model":"T8113-Z","serialNumber":"T8113NXXXXXXX","hardwareVersion":"T8113-Z","softwareVersion":"3.3.8","stationSerialNumber":"T8010NXXXXXXX","enabled":true,"state":1,"battery":97,"batteryTemperature":7,"lastChargingDays":23,"lastChargingTotalEvents":0,"lastChargingRecordedEvents":0,"lastChargingFalseEvents":0,"batteryUsageLastWeek":0,"motionDetected":false,"personDetected":false,"personName":"","antitheftDetection":false,"motionDetection":true,"rtspStream":false,"watermark":2,"wifiRSSI":-51,"pictureUrl":"T8010NXXXXXX~/media/mmcblk0p1/video/20230117164300_c01.jpg","ledStatus":true},{"name":"Salon","model":"T8113-Z","serialNumber":"T8113NXXXXXX","hardwareVersion":"T8113-Z","softwareVersion":"3.3.8","stationSerialNumber":"T8010NXXXXXX","enabled":true,"state":1,"battery":96,"batteryTemperature":24,"lastChargingDays":23,"lastChargingTotalEvents":0,"lastChargingRecordedEvents":0,"lastChargingFalseEvents":0,"batteryUsageLastWeek":0,"motionDetected":false,"personDetected":false,"personName":"","antitheftDetection":true,"motionDetection":true,"rtspStream":false,"watermark":2,"wifiRSSI":-24,"pictureUrl":"T8010NXXXXXX~/media/mmcblk0p1/video/20230107230227_c00.jpg","ledStatus":true}]}}}

*** Device commands: ***
{"type":"result","success":true,"result":{"properties":{"motionDetected":false,"personDetected":false,"personName":"","name":"Entree","model":"T8113-Z","serialNumber":"T8113NXXXXXX","type":8,"hardwareVersion":"T8113-Z","softwareVersion":"3.3.8","stationSerialNumber":"T8010NXXXXXX","rtspStreamUrl":"","lastChargingDays":23,"lastChargingFalseEvents":0,"lastChargingRecordedEvents":0,"lastChargingTotalEvents":0,"batteryUsageLastWeek":0,"pictureUrl":"T8010NXXXXX~/media/mmcblk0p1/video/20230117164300_c01.jpg","recordingClipLength":60,"recordingRetriggerInterval":5,"recordingEndClipMotionStops":false,"lightSettingsBrightnessManual":100,"snoozeTime":0,"snoozeStartTime":0,"powerSource":0,"statusLed":true,"nightvision":1,"speaker":true,"wifiRssi":-51,"wifiSignalLevel":4,"motionDetectionType":0,"rtspStream":false,"watermark":2,"antitheftDetection":false,"chargingStatus":2,"microphone":true,"audioRecording":true,"motionDetectionSensitivity":6,"powerWorkingMode":0,"batteryTemperature":7,"light":false,"state":1,"notificationType":3,"battery":97,"speakerVolume":93,"enabled":true,"motionDetection":true}}}

*** Device metadata: ***
{"type":"result","success":true,"result":{"properties":{"name":{"key":"device_name","name":"name","label":"Name","readable":true,"writeable":false,"type":"string"},"model":{"key":"device_model","name":"model","label":"Model","readable":true,"writeable":false,"type":"string"},"serialNumber":{"key":"device_sn","name":"serialNumber","label":"Serial number","readable":true,"writeable":false,"type":"string"},"type":{"key":"device_type","name":"type","label":"Type","readable":true,"writeable":false,"type":"number","states":{"0":"Station","1":"Camera","2":"Sensor","3":"Floodlight","4":"Camera E","5":"Doorbell","7":"Battery Doorbell","8":"Camera 2","9":"Camera 2c","10":"Motion Sensor","11":"Keypad","14":"Camera 2 Pro","15":"Camera 2c Pro","16":"Battery Doorbell 2","30":"Indoor Camera","31":"Indoor Camera PT","32":"Solo Camera","33":"Solo Camera Pro","34":"Indoor Camera 1080","35":"Indoor Camera PT 1080","37":"Floodlight 8422","38":"Floodlight 8423","39":"Floodlight 2","44":"Outdoor Camera 1080P No Light","45":"Outdoor Camera 2k","46":"Outdoor Camera 1080P","50":"Lock Basic","51":"Lock Advanced","52":"Lock Basic No Finger","53":"Lock Basic Advanced No Finger","54":"Lock 8503","55":"Lock 8530","56":"Lock 85A3","57":"Lock 8592","58":"Lock 8504","60":"Solo Camera Spotlight 1080p","61":"Solo Camera Spotlight 2k","62":"Solo Camera Spotlight Solar","90":"SmartDrop, Smart Delivery Box","91":"Video Doorbell Dual","93":"Video Doorbell Dual (Wired)"}},"hardwareVersion":{"key":"main_hw_version","name":"hardwareVersion","label":"Hardware version","readable":true,"writeable":false,"type":"string"},"softwareVersion":{"key":"main_sw_version","name":"softwareVersion","label":"Software version","readable":true,"writeable":false,"type":"string"},"stationSerialNumber":{"key":"station_sn","name":"stationSerialNumber","label":"Station serial number","readable":true,"writeable":false,"type":"string"},"battery":{"key":1101,"name":"battery","label":"Battery percentage","readable":true,"writeable":false,"type":"number","unit":"%","min":0,"max":100},"batteryTemperature":{"key":1138,"name":"batteryTemperature","label":"Battery Temperature","readable":true,"writeable":false,"type":"number","unit":"°C"},"wifiRssi":{"key":1142,"name":"wifiRssi","label":"Wifi RSSI","readable":true,"writeable":false,"type":"number","unit":"dBm"},"wifiSignalLevel":{"key":"custom_wifiSignalLevel","name":"wifiSignalLevel","label":"Wifi Signal Level","readable":true,"writeable":false,"type":"number","min":0,"max":4,"states":{"0":"No signal","1":"Weak","2":"Normal","3":"Strong","4":"Full"}},"enabled":{"key":99904,"name":"enabled","label":"Camera enabled","readable":true,"writeable":true,"type":"boolean","commandId":1035},"antitheftDetection":{"key":1015,"name":"antitheftDetection","label":"Antitheft Detection","readable":true,"writeable":true,"type":"boolean"},"nightvision":{"key":1277,"name":"nightvision","label":"Nightvision","readable":true,"writeable":true,"type":"number","states":{"0":"Off","1":"B&W Night Vision","2":"Color Night Vision"}},"statusLed":{"key":1045,"name":"statusLed","label":"Status LED","readable":true,"writeable":true,"type":"boolean","commandId":6014},"motionDetection":{"key":1011,"name":"motionDetection","label":"Motion Detection","readable":true,"writeable":true,"type":"boolean"},"rtspStream":{"key":1145,"name":"rtspStream","label":"RTSP Stream","readable":true,"writeable":true,"type":"boolean"},"rtspStreamUrl":{"key":"custom_rtspStreamUrl","name":"rtspStreamUrl","label":"RTSP Stream URL","readable":true,"writeable":false,"type":"string","default":""},"watermark":{"key":1214,"name":"watermark","label":"Watermark","readable":true,"writeable":true,"type":"number","states":{"0":"Off","1":"Timestamp","2":"Timestamp and Logo"}},"state":{"key":1131,"name":"state","label":"State","readable":true,"writeable":false,"type":"number","states":{"0":"Offline","1":"Online","2":"Manually disabled","3":"Offline low battery","4":"Remove and readd","5":"Reset and readd"}},"lastChargingDays":{"key":"charging_days","name":"lastChargingDays","label":"Days since last charging","readable":true,"writeable":false,"type":"number","default":0},"lastChargingFalseEvents":{"key":"charging_missing","name":"lastChargingFalseEvents","label":"False Events since last charging","readable":true,"writeable":false,"type":"number","default":0},"lastChargingRecordedEvents":{"key":"charging_reserve","name":"lastChargingRecordedEvents","label":"Total Recorded Events since last charging","readable":true,"writeable":false,"type":"number","default":0},"lastChargingTotalEvents":{"key":"charing_total","name":"lastChargingTotalEvents","label":"Total Events since last charging","readable":true,"writeable":false,"type":"number","default":0},"batteryUsageLastWeek":{"key":"battery_usage_last_week","name":"batteryUsageLastWeek","label":"Battery usage last week","readable":true,"writeable":false,"type":"number","unit":"%","min":0,"max":100,"default":0},"motionDetected":{"key":"custom_motionDetected","name":"motionDetected","label":"Motion detected","readable":true,"writeable":false,"type":"boolean","default":false},"personDetected":{"key":"custom_personDetected","name":"personDetected","label":"Person detected","readable":true,"writeable":false,"type":"boolean","default":false},"pictureUrl":{"key":"cover_path","name":"pictureUrl","label":"Last Camera Picture URL","readable":true,"writeable":false,"type":"string"},"microphone":{"key":1240,"name":"microphone","label":"Microphone","readable":true,"writeable":true,"type":"boolean"},"speaker":{"key":1241,"name":"speaker","label":"Speaker","readable":true,"writeable":true,"type":"boolean"},"speakerVolume":{"key":1230,"name":"speakerVolume","label":"Speaker Volume","readable":true,"writeable":true,"type":"number","states":{"90":"Low","92":"Medium","93":"High"}},"audioRecording":{"key":1288,"name":"audioRecording","label":"Audio Recording","readable":true,"writeable":true,"type":"boolean"},"motionDetectionSensitivity":{"key":1210,"name":"motionDetectionSensitivity","label":"Motion Detection Sensitivity","readable":true,"writeable":true,"type":"number","min":1,"max":7},"motionDetectionType":{"key":1252,"name":"motionDetectionType","label":"Motion Detection Type","readable":true,"writeable":true,"type":"number","states":{"0":"Humans only","2":"All motions"}},"powerSource":{"key":1293,"name":"powerSource","label":"Power Source","readable":true,"writeable":true,"type":"number","states":{"0":"Battery","1":"Solar Panel"}},"powerWorkingMode":{"key":1246,"name":"powerWorkingMode","label":"Power Working Mode","readable":true,"writeable":true,"type":"number","states":{"0":"Optimal Battery Life","1":"Optimal Surveillance","2":"Custom Recording"}},"chargingStatus":{"key":2111,"name":"chargingStatus","label":"Charging Status","readable":true,"writeable":false,"type":"number","states":{"1":"Charging","2":"Unplugged","3":"Plugged","4":"Solar charging"}},"recordingClipLength":{"key":1249,"name":"recordingClipLength","label":"Recording Clip Length","readable":true,"writeable":true,"type":"number","min":5,"max":120,"default":60,"unit":"sec"},"recordingRetriggerInterval":{"key":1250,"name":"recordingRetriggerInterval","label":"Recording Retrigger Interval","readable":true,"writeable":true,"type":"number","unit":"sec","min":5,"max":60,"default":5},"recordingEndClipMotionStops":{"key":1251,"name":"recordingEndClipMotionStops","label":"Recording end clip early if motion stops","readable":true,"writeable":true,"type":"boolean","default":true},"notificationType":{"key":1289,"name":"notificationType","label":"Notification Type","readable":true,"writeable":true,"type":"number","states":{"1":"Most Efficient","2":"Include Thumbnail","3":"Full Effect"},"commandId":6020},"lightSettingsBrightnessManual":{"key":1401,"name":"lightSettingsBrightnessManual","label":"Light Brightness Manual","readable":true,"writeable":true,"type":"number","min":40,"max":100,"default":100},"light":{"key":1400,"name":"light","label":"Light","readable":true,"writeable":true,"type":"boolean"},"snooze":{"key":1271,"name":"snooze","label":"Snooze","readable":true,"writeable":false,"type":"boolean"},"snoozeTime":{"key":1271,"name":"snoozeTime","label":"Snooze Time","readable":true,"writeable":false,"type":"number","default":0,"unit":"sec"},"snoozeStartTime":{"key":1271,"name":"snoozeStartTime","label":"Snooze Start Time","readable":true,"writeable":false,"type":"number","default":0},"personName":{"key":"custom_personName","name":"personName","label":"Person Name","readable":true,"writeable":false,"type":"string","default":""}}}}

Merci pour ton retour
Les 2 checks concernent la dispo du container et le retour pushConnected du service.
As tu retesté quand le demon est lancé ?
Si tu as tjs du rouge envoies moi en MP une copie d’écran et tes logs en debug

Sinon tu peux vérifier si les propriétés existent dans le json que tu viens de me renvoyer pour get_properties, 3e ligne device commands. Si c’est pas le cas dis le moi

C’est possible que antitheftDetection ne fonctionne pas pourtant elle est bien dans les metadata de ce modèle cf tes logs:

"name":"antitheftDetection","label":"Antitheft Detection","readable":true,"writeable":true

J’ai remarqué que certaines commandes du container ne fonctionnent pas non plus chez moi comme trigger_alarm . Il faut ouvrir un ticket chez @bropat https://bropat.github.io/eufy-security-ws/#

Bonjour,
Bravo pour le boulot réalisé !
J’ai installé ton plugin sur la VM esxi 8 de mon Jeedom, et le docker sur une sutre VM égalament sous Debian 11.
Ma Homebase 2 (TN8010) et mes deux Eufycam 2C (TN8113) se pilotent sans problème, mais le log http.error enregistre les erreurs du genre :

[Wed Mar 01 10:18:56.634283 2023] [php7:error] [pid 10911] [client 127.0.0.1:58478] PHP Fatal error:  Uncaught Error: Call to a member function execCmd() on bool in /var/www/html/plugins/eufy/core/class/eufy.class.php:228
Stack trace:
#0 /var/www/html/plugins/eufy/core/class/eufy.class.php(220): eufy::sendEvent(false, 3)
#1 /var/www/html/plugins/eufy/core/php/jeeeufy.php(32): eufy::updateDeviceInfo('T8010Nxxxx...', 'currentMode', 3)
#2 {main}
  thrown in /var/www/html/plugins/eufy/core/class/eufy.class.php on line 228

Une tentative de connexion à un docker local, bien que la config soit sur distant ?

Merci pour ton feedback

Peux tu me partager la log complete en MP?
Je regarderai quand j’ai un moment

2 « J'aime »

Je me suis un peu emballé ! :sweat_smile:
En fait, j’ai remis l’IP 127.0.0.1 et j’ai bien un OK vert partout. Donc nickel !
Pour l’antivol, oui, j’ai vu qu’il y était dans le eufy_test, et je suis rassuré si certaines commandes ne fonctionnent pas chez toi non plus même si elles sont présentes.
Donc, je continue de tester tout ça et je reviens vers toi si soucis.
Merci encore pour le dev, je pense que tu n’es pas loin d’une sortie officielle du plugin !

1 « J'aime »

@Domars j’ai corrigé le bug, rien à voir avec docker.
Nouvelle version postée à l’instant

1 « J'aime »

Merci @rootard, problème résolu !
Mais j’ai constaté un autre message d’erreur dans le log du démon, quand je (re)démarre celui-ci.

[2023-03-02 20:43:29]ERROR : error from callback : 'serialNumber'
[2023-03-02 20:43:29]ERROR : on_error: 'serialNumber'

Déjà rencontré dans la version précédente du plugin, il n’empêche pas son bon fonctionnement.
Je t’envoie le debug par MP, au cas où…

2 « J'aime »

merci @Domars vu aussi merci.
Je regarderai ca plus tard

2 « J'aime »

bonsoir, je testerai bien le plug in mais j’ai plusieurs questions.
Si ma camera est intégrée dans homekit c’est possible de l’intégrer également dans homekit ?
Concenrnat l’installation ,j’ai une atlas et j’ai le plug in docker, ca va s’installer automatiquement dans le plug in docker ?
Merci

Salut
Rien a voir avec homekit ca ne cassera pas tes associations
Oui le container s’installe dans un docker existant sans problèmes

2 « J'aime »

Ok donc je crée un container dans le plug in jeedom docker


Ensuite je ne sais pas quoi mettre ici pour installer dans le container créé

Je dois faire ceci directement sur le plug in docker ?


en mode docker compose ? run ? ou manuel ?

Il n’y a rien a faire dans le plugin docker sauf installerdocker ce quetu as deja du faire
As tu lu la doc???

Oui le plug in docker est déjà installé puisque j’ai nodered

Je pense avoir compris.
Dans Device on met le nom de la Caméra c’est ca ?
J’ai réussi a voir apparaitre le container dans le plug in Docker.

je n’arrive pas a avoir le flux video. pourtant j’ai bien mis ceci en mettant le bon login mot de passe

En fait il y a plusieurs flux possible d’apres le lien dans la doc…
Je vais tester.
Le plug in au depart a créé une camer dans le plug in caméra, je l’ai supprimé mais je n’ai pas trouvé comment recréer l’équipement.

Mets l’URL RTSP dans le champ URL du flux du plugin Camera
Tu peux aussi essayer avec VLC
As tu essayé les boutons start_rtsp et stop_rtsp?
Les commandes fonctionnent ?



J’ai essayé les 2
Dans le plug in camera j’ai bien mis activer flux RTSP
et sur le plug in eufy j’ai bien cliqué ici

et la commande fonctionne car j’arrive a la desactiver aussi
image
J’essayerai cet apres midi avec VLC pour voir depuis un VPN

Par contre dans les reglages de la caméra j’ai ceci :

ah c’est possible. je ne connais pas homekit je ne saurai pas t’aider désolé

1 « J'aime »

Salut @Domars

J’ai corrigé le 2e problème que tu m’as signalé au démarrage.
Peux tu vérifier que c’est OK chez toi?

Super, @rootard, plus de message d’erreur.
Testé sous debian 10 et 11.
Merci à toi !

2 « J'aime »