Debian 12.5 Jeedom Alpha 4.4.2 Plugin Airzone Beta -> Erreur détection Zone

Test sur VM Synology avec Fresh install Debian 12.5 et Jeedom Alpha 4.4.2 sur plugin AirZoneWeb beta

Pas beaucoup de log mais le bouton « Scan Zones » donne un « 500 : Internal Server Error »

et Log en debug :

[2024-03-14 19:36:57] INFO  : Début d'activation du plugin
[2024-03-14 19:36:58] INFO  : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2024-03-14 19:38:49] INFO  : REQUETEINTEGRATION :  {"driver":"AirZone"}
[2024-03-14 19:38:49] INFO  : REPONSE REQ INTEGRATION :  { 	"driver":	"AirZone" }
[2024-03-14 19:42:41] INFO  : REQUETEINTEGRATION :  {"driver":"AirZone"}
[2024-03-14 19:42:42] INFO  : REPONSE REQ INTEGRATION :  { 	"driver":	"AirZone" }

Rien d’autres…

Bonjour,

Pour une erreur 500 il faut toujours le log http.error

MErci mais je laisse tomber les tests sur DEbian 12 vu que le Core Alpha n’est pas pret sur python

vu qu’ici c’est pas un problème python on s’en fiche …

JE reprends mes tests en DEbian 12.5, mon core est maintenant en 4.4.8 alpha
Log du plugin :

2024-06-13 14:01:54] INFO  : Début d'activation du plugin
[2024-06-13 14:01:55] INFO  : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2024-06-13 15:08:33] INFO  : REQUETEINTEGRATION :  {"driver":"airzone"}
[2024-06-13 15:08:33] INFO  : REPONSE REQ INTEGRATION :  { 	"driver":	"airzone" }

errors:

airZone	Erreur sur airZone::SyncAirzone() : Non-static method airZone::SyncAirzone() cannot be called statically	Log airZone

c’est un problème php, erreur de syntax
php7 était tolérant sur ce genre d’erreur, php8 ne l’est plus.

y a deux plugins airzone web, c’est lequel? l’officiel ou le tiers?

L’erreur vient de l’officiel.

Sur dEbian 11 j’avais l’ancien le tout premier qui a ensuite était repris par Jeedom que je n’avais jamais mis à jour et qui fonctionne toujours avec le dernier core sur une 4.4.x

YA peut etre un mélange entre les deux du coup, je vois deux répertoires Airzone dans les plugins.

A mon avis il y a un mélange oui car cette méthode n’existe pas dans le nouveau

pas nommé pareil? majuscule/minuscule? pcq sinon ce n’est pas possible

Oui j’ai le nouveau plugin « airzone web » qui s’est installé dans le repertoire « airzone » et l’ancien qui s’appelait « airZone » qui est dans le repertoire « airZone »

Mais ce qui est bizarre c’est que mes 3 anciens équipements apparaissent dans le nouveau plugin
et le airZone::SyncAirzone() je le vois dans le fichier de l’ancien repertoire

si les 2 plugins utilisent la même class « airZone » cela va créer des problèmes, il ne faut en garder qu’un seul

JE viens de supprimer le nouveau que je n’utilisais pas avant. Il me reste donc celui d’origine.

Je lancer des ordres cela passe. Mais j’ai pas les retours d’états ni les remontées de températures/humidités…

Je pense que cela vient du problème de synchronisation avec le CRON qui ne fonctionne pas d’où le message (je le vois en error) :
airZone::SyncAirzone() : Non-static method airZone::SyncAirzone() cannot be called statically
du coup j’ai plus les valeurs qui remontent

dans le fichier install.php j’ai

function airZone_install() {
    /*$cron = cron::byClassAndFunction('airZone', 'SyncAirzone');
	if (!is_object($cron)) {
		$cron = new cron();
		$cron->setClass('airZone');
		$cron->setFunction('SyncAirzone');
		$cron->setEnable(1);
		$cron->setDeamon(0);
		$cron->setDeamonSleepTime(2);
		$cron->setSchedule('*/5 * * * *'); // Toutes les 5 minutes
		$cron->save();
	}
*/
	airZone::SyncAirzone();
}

function airZone_update() {
   /* $cron = cron::byClassAndFunction('airZone', 'SyncAirzone');
	if (is_object($cron)) {
		$cron->setDeamon(0);
		$cron->setSchedule('*/5 * * * *'); // Toutes les 5 minutes
		$cron->save();
	}
	log::add('airZone', 'info', "update");*/
	airZone::SyncAirzone();
}

function airZone_remove() {
    while (1) {
		$eqLogics = eqLogic::byType('airZone');

		if (count($eqLogics) == 0) {
			break;
		}

		$eqLogics[0]->remove();
	}

	$cron = cron::byClassAndFunction('airZone', 'SyncAirzone');
	if (is_object($cron)) {
		$cron->remove();
	}
}

?>

Dans le fichier ajax je vois ca

	
	if (init('action') == 'SyncAirzone') {
	airZone::SyncAirzone();
	ajax::success();
	}

et dans le fichier class l’appel de la fonction statique

class airZone extends eqLogic {
    /*     * *************************Attributs****************************** */
    /*     * ***********************Methode static*************************** */
    
     // Fonction exécutée automatiquement toutes les minutes par Jeedom
      public static function cron() {
			airZone::SyncAirzone();
      }
      public static function cron5() {
			airZone::SyncAirzone();
      }
      public static function cron15() {
			airZone::SyncAirzone();
      }
	

Il est bugge, faut demander à son auteur.
J’ai assez de mes plugins pour en plus faire de la maintenance sur des plugins tiers payant :wink:

En fait c’est le seul plugin tiers Airzone gratuit. Il a existé en premier avant les payants. Ensuite il me semble que Jeedom soit parti dessus pour son officiel.

Le plugin avait était développé par « Bernidouille » en 2019 j’avais passé beaucoup de temps avec lui pour le rendre fonctionnel.
https://bernidouille.github.io/airZone/fr_FR/changelog.md

Je met le plugin là (a renommer en zip) si quelqu’un aurait la gentillesse et le temps de regarder pour voir si l’on peut l’adapter à PHP8

airZone.txt (94,3 Ko)

Ah c’est pas celui du market?

Pour le problème « static… » il faur rajouter le mot static entre public et function de la méthode SyncAirZone (et des autres si d’autres erreurs)

Pour la petite histoire de ce plugin.

Au départ on l’installait le plugin à la mano par le Github de Bernidouille

puis ensuite par le Market en direct

puis en 2021 SEKIRO la repris pour la partie WIFI par le Cloud celui de Bernidouille utilisait uniquement la version Local du serveur


Par sur d’avoir compris ce que que je dois faire exactement pour ajouter le mot static entre public et function de la méthode SyncAirZonetic
→ Si tu pouvais me donner un exemple que je tente ca serait super sympa :slight_smile:

L’exemple est plus haut, comme pour les fonctions cron, cron5, …

MAis c’est déja le cas pour les cron ? et dans les autres je n’ai pas la notion de public

En fait j’avais pas vu qu’on était dans un sujet plugin officiel
Donc on est hors sujet.

Ensuite l’erreur concerne syncairzone comme indiqué par l’erreur et comme je répète deux messages plus haut.

Je ne comprends pas pq tu as montré les fonctions airzone_… c’est hors propos

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.