Eufy : PHP Warning

Bonjour,

J’utilise l’image jeedom/jeedom:latest (qui embarque le php8 j’imagine que c’est lié)

J’ai dans le fichier de log http.error ces lignes qui remontent :

log http.error
0064|[Fri Jan 17 13:16:31.465862 2025] [php:warn] [pid 6700:tid 6700] [client 192.168.1.20:50218] PHP Warning:  Array to string conversion in /var/www/html/plugins/eufy/core/php/jeeeufy.php on line 31
0065|[Fri Jan 17 13:16:31.467733 2025] [php:warn] [pid 6700:tid 6700] [client 192.168.1.20:50218] PHP Warning:  mkdir(): File exists in /var/www/html/plugins/eufy/core/class/eufy.class.php on line 400
0066|[Fri Jan 17 13:16:33.026512 2025] [php:warn] [pid 150045:tid 150045] [client 192.168.1.20:39840] PHP Warning:  Array to string conversion in /var/www/html/plugins/eufy/core/php/jeeeufy.php on line 31
0067|[Fri Jan 17 13:16:33.028708 2025] [php:warn] [pid 150045:tid 150045] [client 192.168.1.20:39840] PHP Warning:  mkdir(): File exists in /var/www/html/plugins/eufy/core/class/eufy.class.php on line 400
0068|[Fri Jan 17 13:16:34.522518 2025] [php:warn] [pid 150046:tid 150046] [client 192.168.1.20:40306] PHP Warning:  Array to string conversion in /var/www/html/plugins/eufy/core/php/jeeeufy.php on line 31
0069|[Fri Jan 17 13:16:34.524679 2025] [php:warn] [pid 150046:tid 150046] [client 192.168.1.20:40306] PHP Warning:  mkdir(): File exists in /var/www/html/plugins/eufy/core/class/eufy.class.php on line 400

Pour identifier ce qui poserait pb, j’ai mis en debug le plugin pour essayer d’identifier ce qu’il se passe lors de la remonté d’info :

log eufy
0000|[2025-01-17 13:16:33] DEBUG  : >>> Event received from daemon: serialNumber: T8210Txxxxxxxxxx, property: snoozeChime, value:
0001|[2025-01-17 13:16:33] DEBUG  : >>> Event received from daemon: serialNumber: T8210Txxxxxxxxxx, property: snoozeMotion, value:
0002|[2025-01-17 13:16:33] DEBUG  : >>> Event received from daemon: serialNumber: T8210Txxxxxxxxxx, property: picture, value: Array
0003|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: name, value: Jardin
0004|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: model, value: T8113-V
0005|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: serialNumber, value: T8113Txxxxxxxxxx
0006|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: present, value: 1
0007|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: hardwareVersion, value: P1
0008|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: type, value: 8
0009|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: stationSerialNumber, value: T8010Txxxxxxxxxx
0010|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: softwareVersion, value: 3.0.6.4
0011|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: lastChargingDays, value: 0
0012|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: battery, value: 71
0013|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: batteryTemperature, value: 5
0014|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: lastChargingRecordedEvents, value: 0
0015|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: lastChargingTotalEvents, value: 0
0016|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: batteryUsageLastWeek, value: 0
0017|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: lastChargingFalseEvents, value: 0
0018|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: antitheftDetection, value:
0019|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: nightvision, value: 1
0020|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: enabled, value: 1
0021|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: wifiRssi, value: -70
0022|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: statusLed, value: 1
0023|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: motionDetection, value: 1
0024|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: wifiSignalLevel, value: 3
0025|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: motionDetectionType, value: 2
0026|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: personDetected, value:
0027|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: motionDetectionSensitivity, value: 4
0028|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: personName, value:
0029|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: motionDetected, value:
0030|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: rtspStreamUrl, value:
0031|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: rtspStream, value:
0032|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: state, value: 1
0033|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: watermark, value: 0
0034|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: speakerVolume, value: 93
0035|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: speaker, value: 1
0036|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: microphone, value: 1
0037|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: powerSource, value: 1
0038|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: audioRecording, value: 1
0039|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: light, value:
0040|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: powerWorkingMode, value: 1
0041|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: chargingStatus, value: 1
0042|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: recordingEndClipMotionStops, value:
0043|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: recordingRetriggerInterval, value: 5
0044|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: recordingClipLength, value: 60
0045|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: lightSettingsBrightnessManual, value: 100
0046|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: snoozeTime, value: 0
0047|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: snoozeStartTime, value: 0
0048|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: notificationType, value: 2
0049|[2025-01-17 13:16:34] DEBUG  : >>> Event received from daemon: serialNumber: T8113Txxxxxxxxxx, property: picture, value: Array
0050|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: present, value: 1
0051|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: serialNumber, value: T8010Txxxxxxxxxx
0052|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: name, value: Homebase
0053|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: model, value: T8010
0054|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: type, value: 0
0055|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: hardwareVersion, value: P0
0056|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: macAddress, value: 10:2C:B1:43:3D:E2
0057|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: timeFormat, value: 1
0058|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: timeZone, value: CET-1CEST,M3.5.0,M10.5.0/3|1.1403
0059|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarm, value:
0060|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: softwareVersion, value: 3.3.5.3h
0061|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmVolume, value: 26
0062|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmArmed, value:
0063|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmDelay, value: 0
0064|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmDelayType, value: 0
0065|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: notificationSwitchModeSchedule, value: 1
0066|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmType, value: 0
0067|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmArmDelay, value: 0
0068|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: notificationSwitchModeApp, value: 1
0069|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: notificationSwitchModeGeofence, value: 1
0070|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: sdStatus, value: 0
0071|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: alarmTone, value: 1
0072|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: promptVolume, value: 17
0073|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: notificationSwitchModeKeypad, value: 1
0074|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: notificationStartAlarmDelay, value: 1
0075|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: guardMode, value: 1
0076|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: lanIpAddress, value: 192.168.1.42
0077|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: currentMode, value: 1
0078|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: sdCapacityAvailable, value: 2291
0079|[2025-01-17 13:16:35] DEBUG  : >>> Event received from daemon: serialNumber: T8010Txxxxxxxxxx, property: sdCapacity, value: 14791

J’utilise l’image bropat/eufy-security-ws dans un container distant.

Si qqn a une piste de correction, je suis ok pour faire un test (ou plusieurs)

Merci


Informations Jeedom

Core : 4.4.19 (master)
DNS Jeedom : non

Plugin : Eufy
Version : 2024-11-04 01:21:01 (stable)
Statut Démon : Démarré - (2025-01-17 13:16:24)

Bonjour @Heliospeed

Je ne reproduis pas sur ma VM de test debian 12 php 8.2.20.
De toute manière ce sont des warning ca doit pas empecher le plugin de fonctionner, je vais quand même corriger ca.

Pourrais tu me montrer ta page santé?

Merci

A part que tu utilises docker et moi une VM je vois pas…

Bonsoir,

J’essaye de corriger dans le fichier :

jeeeufy.php (bloc de la ligne 31)

          /*if ($result['type'] == 'event') {
              log::add('eufy', 'debug', '>>> Event received from daemon: serialNumber: '. $result['serialNumber'] . ', property: ' 
		. $result['property'] . ', value: ' . $result['value']);
	      eufy::updateDeviceInfo($result['serialNumber'], $result['property'], $result['value']);
          }*/
          if ($result['type'] == 'event') {
            // Vérification et conversion des valeurs potentielles
            $serialNumber = isset($result['serialNumber']) ? $result['serialNumber'] : 'unknown';
            $property = isset($result['property']) ? (is_array($result['property']) ? json_encode($result['property']) : $result['property']) : 'unknown';
            $value = isset($result['value']) ? (is_array($result['value']) ? json_encode($result['value']) : $result['value']) : 'unknown';

            // Log du message avec des valeurs sûres
            log::add('eufy', 'debug', '>>> Event received from daemon: serialNumber: ' . $serialNumber . ', property: ' . $property . ', value: ' . $value);

            // Appel de la méthode updateDeviceInfo
            eufy::updateDeviceInfo($serialNumber, $property, $value);
          }

Dans le fichier eufy.class.php (ligne 400) j’ai ajouté un test d’existence du répertoire :

    //mkdir ($dirName,0755,true);
    if (!file_exists($dirName)) {
    	mkdir($dirName,0755,true);
	}

Puis dans le même fichier j’ai une une erreur 8 lignes plus bas $bytes = $a['data']['data']

    //$bytes = $a['data']['data'];
    if (isset($a['data']) && isset($a['data']['data'])) {
      $bytes = $a['data']['data'];
    } else {
      $bytes = null; // Ou une valeur par défaut appropriée
      log::add('eufy', 'debug', 'Clé manquante dans le tableau $a : ' . json_encode($a));
    }

Avec ces motifs, je n’ai plus d’info qui remonte dans le fichier http.error, mais j’ai le warning ajouté qui ressort ce type d’info (que je vais commenter c’est plus pour du debug) :

0000|[2025-01-17 22:00:10]DEBUG : Clé manquante dans le tableau $a : ["{\"data\":{\"type\":\"Buffer\",\"data\":[255,216,255,224,0,16,74,70,[...],147,181,20,80,3,125,105,59,209,69,0,52,245,164,52,81,64,31,255,217]},\"type\":{\"ext\":\"jpg\",\"mime\":\"image\\\/jpeg\"}}"]

Cela ne corrige certainement pas une anomalie mais permet de ne plus remonter de warning avec ma config.

Ok merci je regarderai tout ca quand j’ai un moment

1 « J'aime »

Hello,
Je pense pas que cela soit la peine de prendre en compte mes corrections car Mips m’a fait remarquéer que l’image latest dans docker était en deb12 et jeedom 4.4 et que deb12 sera supporté avec jeedom 4.5. Après faudrait faire un test en 4.5 mais la j’ai pas trop le temps je dois restaurer ma prod rapidement.
Du coup je repasse sur la bonne image (indiqué dans la doc que j’avais pas bien lu) :


Merci

1 « J'aime »

Re,

Finalement je pensais le sujet clos mais j’ai de nouveau une anomalie qui remonte :

0009|[Sat Jan 18 14:02:53.677390 2025] [php7:warn] [pid 383:tid 383] [client 192.168.1.20:47836] PHP Warning:  mkdir(): File exists in /var/www/html/plugins/eufy/core/class/eufy.class.php on line 400

Du coup j’ai remis uniquement le test vérifiant l’existance du répertoire avant de le créer.

Dans le fichier eufy.class.php (ligne 400) j’ai ajouté un test d’existence du répertoire :

    //mkdir ($dirName,0755,true);
    if (!file_exists($dirName)) {
    	mkdir($dirName,0755,true);
	}

ok j’ai intégré ta dernière modif

1 « J'aime »

Bonjour,

Si tu veux que je teste une version beta dis moi, pour le moment j’ai la version stable d’installer du coup, je ne vois pas les betas passer. Et sur git j’ai vu qu’une seule branche sur ce repo : GitHub - lxrootard/eufy: Jeedom eufy plugin.

Bonne soirée

Salut

Effectivement je n’ai qu’une branche dans le repo. J’ai rien publié encore vu que tu as réglé ton problème tout seul et que la modif est mineure et non bloquante. Je te confirme que le fix sera dans la prochaine version mais je ne sais pas te dire quand

1 « J'aime »