Version beta 1.96s - eqpt Meross HS et plus aucun log

Bonsoir @bernardfr.caron,
j’ai installé ta dernière version beta 1.96s et malheureusement, mon équipement MEROSS n’est plus reconnu dans Santé (et ainsi ne fonctionne plus).

Par ailleurs, j’ai mis le plugin en debug et n’ai plus aucun message de mes équipements dans tous les logs wifilightv2…

Je suis donc revenu en stable où tous mes équipements fonctionnent correctement avec des logs (bien nourris :wink:).

En l’état, cette version beta n’est pas fonctionnelle :upside_down_face:
Merci de ton aide :slightly_smiling_face:

PS: si besoin et au vu de l’équipement, je ne pourrai faire des tests qu’en journée.

merci pour le retour
nouvelle beta à tester.
Pour les logs:

Bonjour @bernardfr.caron,
je viens de faire la mise à jour beta et modification du log par defaut en debug (à la place de erreur).
L’equipement Meross n’est toujours par reconnu et par contre, tous les plugins sont devenus bavards. J’ai voulu remettre le choix erreur mais malheureusement jeedom ne fonctionnait plus via son interface web mais réagissait toujours par https://@IP/index.php?v=d&p=system&rescue=1.

Faute de pouvoir relancer Jeedom après un arrêt électrique forcé, j’ai pris l’initiative de basculer sur mon SSD de sauvegarde et de réinstaller ma dernière sauvegarde (en cours…).
Est-ce que Jeedom passait son temps à écrire les logs de tous les plugins, est-ce un débordement faute d’espace mémoire… ?
En tout cas, je ne pouvais plus me connecter à Jeedom même avec Jeedom Connect et plusieurs navigateurs…

Je ne sais pas si c’est la cause. Mais pourrais-tu indiquer pourquoi il est maintenant nécessaire de choisir debug en log par défaut de Jeedom afin d’avoir les log de wifilightV2 ?

Merci

IL y a eu un souci avec la beta de ce matin pouvant provoquer une interface cassée.
Désolé
Je sais le changement de logs mais c’est un bogue du core ou du moins un cas non prévu avec les sous logs mais je veux être compatible 4.4 et 4.5
oui les logs sont bavards, il faut les effacer et revenir au niveau info après debug.

Pas de chance pour moi :crazy_face:

Je viens de finir les réinstallation et resauvegarde SSD et suis donc revenu en version stable :yum:

Avant de recharger la version beta, je souhaitais m’assurer que tu l’avais corrigé sur la partie casse de l’interface jeedom ?

Et si oui, je me demandais si tu l’avais aussi remodifié ce matin sur la partie Meross ?

Enfin, existe-t-il un moyen plus rapide de retrouver l’interface Jeedom (commandes en SSH…) sans tout réinstaller (au cas où !) ?

Merci de tes réponses @bernardfr.caron :wink:

Bonjour Bernard,
Depuis l’installation de la dernière bêta WifilightV2, je ne peux plus accéder à mon Jeedom.
Est ce que vous reproduisez ?
Si oui, est ce qu’il y a une solution plus simple que de réinstaller une image complète ?
Merci d’avance.
NB : pour info, je suis en v.4.4.17 (il me semble, mais je n’ai plus accès à mon Jeedom)

la dernière beta est OK.
Si souci en ssh supprimer le dossier wifilightV2 puis recharger le plugin

La solution fonctionne. Merci @bernardfr.caron

L’équipement MEROSS ne fonctionne pas dans cette beta

marche en stable et pas en beta ?
J’ai une prise meross qui est OK
Il me faudrait les logs _cmd lors d’actions avec le plugin en expliquant bien ce qui a été fait.
Pour les logs wifilightV2 :


Bien mettre niveau de logs par défaut : debug pour que les logs soient générés.

Bonjour @bernardfr.caron,
Effectivement, çà fonctionne dans la version stable et pas en beta.

En beta, mon équipement est directement dans le statut ‹ rouge › dans Santé et reste toujours dans cet état:

Voici le log après l’ouverture et fermeture de la porte:
wifilightV2_cmd_version BETA.txt (1,0 Ko)

Et dans la version stable, l’équipement fonctionne correctement (ex pour l’ouverture qui se fait dans les 4 secondes après commande):
wifilightV2_cmd_version STABLE.txt (3,5 Ko)

nouvelle beta
mêmes logs pour cette beta uniquement

on est bien d’accord qu’entre stable et beta seule change la version du plugin, c’est la même machine.

C’est bien la même machine sur laquelle j’installe les versions beta et stable.

Toujours pareil avec l’équipement en rouge dans Santé:
wifilightV2_cmd.txt (1,2 Ko)

Je sèche complètement.
ta beta est sur un jeedom 4.4 et le même OS ?
poste ta page santé.
je ne vois vraiment pas
J’ai une prise meross qui fonctionne
tu as d’autres périphériques meross ?

Bonjour @bernardfr.caron ,
Voici la page Santé

Je n’ai que cet équipement Meross.

Il y a ‹ quelque chose › qui a changé ou qui ne se fait plus pour cet équipement d’ouverture de porte.
En comparant les premiers échanges, je vois une différence entre les versions stable et beta:
WifilightV2_comparaison.txt (3,1 Ko)

  • BETA: se termine directement par ‹ state>< › (serait-ce un état inconnu qui s’afficherait en rouge dans la page Santé du plugin ?)
  • STABLE: et tout un échange body qui se termine par l’état de la porte (Meross State: Chan:1 ON1 Door OFF par ex.)

Je ne sais pas si çà peut t’aider mais je suis à ta dispo pour des tests :blush:

C’est lors d’un ON/off que ça m’intéresse. mais je regarde l’interrogation de l’état c’est peut-être elle qui bloque. Et la page santé n’est pas la cause mais la conséquence que ça ne dialogue pas.

entre les 2 versions je suis passé de
Guzzlehttp à cURL pour les requêtes HTTP.
mais j’ai une prise en meross V2 qui elle est OK stable et beta et testé en debian 10 et 12 en Jeedom 4.4

En stable :

		$uuidV4 = $this->guidv4();	
		$messageId=str_replace('-', '',$uuidV4);
		$timestamp = time();
		$key = $this->_LocalKey;
		$sign = md5($messageId.$key.$timestamp);
		// $this->_log->debug(" sign=$sign");
		// $this->_log->debug(" timestamp=$timestamp");
		// $this->_log->debug(" messageId=$messageId");
		$url="http://".$this->_host.$path;
		$strLog = "    ";
		$strLog = $strLog.'Cmd : '.$cmd ;
		$strLog = $strLog.' - url : '.$url ;
		$strLog = $strLog.' - type : '.$type;
		try {
			$headers =array(
				'Content-Type' => 'application/json'
			);
			$body='{"header": {"from":"'.$url.'","messageId":"'.$messageId.'","method":"'.$method.'","namespace":"'.$namespace.'","payloadVersion":1,"sign":"'.$sign.'","timestamp":'.$timestamp.',"triggerSrc":"AndroidLocal"},"payload": {'.$cmd.'}}';
			//$body='{"header": {"from":"/appliance/2206242745222660120148e1e999d026/publish","messageId":"'.$messageId.'","uuid":"2206242745222660120148e1e999d026","timestampMs": 723,"method":"'.$method.'","namespace":"'.$namespace.'","payloadVersion":1,"sign":"'.$sign.'","timestamp":'.$timestamp.',"triggerSrc":"AndroidLocal"},"payload": {'.$cmd.'}}';

			$this->_log->debug(" body=$body");
			$strLog = $strLog.' - body : '.$body;
			$strLog = $strLog.' -  method: '.$method;
            usleep($this->_wait);
			$client = new GuzzleHttp\Client(
				array(
					'request.options' => array (
						'timeout' => 1,
						'connect_timeout' => 1 
					) 
				)
			);
			if  ($type == 'PUSH') $response = $client->push($url, [
				  'body' => $body,
				  'headers' => [
					'Content-Type' => 'application/json',
				  ],
				  'timeout' => 1
				]);
			if  ($type == 'PUT') $response = $client->put($url, [
				  'body' => $body,
				  'headers' => [
					'Content-Type' => 'application/json',
				  ],
				  'timeout' => 1
				]);
			if  ($type == 'POST') $response = $client->post($url,[
				  'body' => $body,
				  'headers' => [
					'Content-Type' => 'application/json',
				  ],
				  'timeout' => 1
				]);
				
			if  ($type == 'GET') $response = $client->get($url, [
				  'headers' => [
					'Content-Type' => 'application/json',
				  ],
				  'timeout' => 1
				]);

			$body = $response->getBody();
			$strLog = $strLog.' - Status:'. (string) $response->getStatusCode();
			if ($response->getStatusCode() == 204) {
				$strLog = $strLog.' - No response';
				$this->_log->debug($strLog);
				return NOSTATE;
			}
			$str="";
			for($i=0;$i<strlen($body);$i++) {
				$caractere=substr($body,$i,1);
				if (ord($caractere)>31 && ord($caractere)<127   && ord($caractere)!= 39  && ord($caractere)!= 92 && ord($caractere)!=96) $str=$str.$caractere;
				else $str=$str."[".ord($caractere)."]";
			}
			$this->_log->debug($strLog);
			$json_decoded_data = json_decode($body, true);
			$this->_log->debug("    Receive:".$str);		
			return $json_decoded_data;
		} 
		catch (Exception $e) {	
			$strLog = $strLog.' - Exception:'.$e->getMessage();		
			$strLog = $strLog.' - No Meross device @'.$url;
			$this->_log->debug($strLog);
		}
		return NOTCONNECTED;

En beta :

		$uuidV4 = $this->guidv4();	
		$messageId=str_replace('-', '',$uuidV4);
		$timestamp = time();
		$key = $this->_LocalKey;
		$sign = md5($messageId.$key.$timestamp);
		$url="http://".$this->_host.$path;
		$body='{"header": {"from":"'.$url.'","messageId":"'.$messageId.'","method":"'.$method.'","namespace":"'.$namespace.'","payloadVersion":1,"sign":"'.$sign.'","timestamp":'.$timestamp.',"triggerSrc":"AndroidLocal"},"payload": {'.$cmd.'}}';
		$strLog = " Send";
		$strLog = $strLog.' - Cmd : '.$cmd ;
		$strLog = $strLog.' - url : '.$url ;
		$strLog = $strLog.' - type : '.$type;
		$strLog = $strLog.' - body : '.$body;
		$strLog = $strLog.' -  method: '.$method;
		usleep($this->_wait);
		$headers =array(
			'Content-Type:application/json'
		);
		$payload = $body;
		$ch = curl_init( $url );
		switch($type) {
			case 'POST':
				curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
				curl_setopt( $ch, CURLOPT_POST, true);
				curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
				break;
			case 'GET':
				curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
				curl_setopt( $ch, CURLOPT_HTTPGET, false);
				break;
			case 'PUT':
				curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
				curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
				curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
				break;
		}	
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
		curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 1);
		curl_setopt( $ch, CURLOPT_TIMEOUT, 1);
		$result = curl_exec($ch);		
		$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		if (curl_errno($ch)) {
			$strLog = $strLog.' - err : '.curl_error($ch);
			log::add($this->_logName,'debug',$strLog);
			curl_close($ch);
			return NOTCONNECTED;
		}
		if ((int) $httpCode != 200) {
			$strLog = $strLog.' - Rec:'.$result;
			$strLog = $strLog.' - http error : '.$httpCode;
			log::add($this->_logName,'debug',$strLog);
			curl_close($ch);
			return NOTCONNECTED;
		}
		curl_close($ch);
		$body = $result;
		$strLog = $strLog.' - response:'.$body;
		log::add($this->_logName,'debug',$strLog);
		$json_decoded_data = json_decode($body, true);		
		return $json_decoded_data;

Les commandes http sont des POST

code édité

Je ne serai pas d’une grande aide sur le code si ce n’est te dire que c’est une complète refonte :upside_down_face:

Voici les logs avec une ouverture suivi d’une fermeture:
wifilightV2_cmd_Stable.txt (7,0 Ko)
wifilightV2_cmd_Beta.txt (2,7 Ko)

:blush:

Je n’ai rien à proposer pour l’instant.