[idée plugin Zwave] vérification des ordres

Bonjour @Bison,

Voici ma version pour mes fil pilote Qubino.
J’appelle la fonction « sendQubinoFilPiloteOrder([parent][objet][ordre]) » et le reste est calculé automatiquement.
Merci pour le travail que tu as fait, il m’a vraiment inspiré (la page blanche, c’est pas mon truc)
Merci pour l’utilisation de LogManager :wink:

Diff avec ta version:

  • Je n’envois pas d’ordre si l’équipement est déjà dans le bon état.
  • spécifique Qubino Fil Pilote
  • attends sleep x execution au lieu de sleep
  • usage de fonctions php
  • pas d’accents parce que moche dans mes logs serveur :frowning:
	public static function zwaveGetQueueSize() {
		//return 0; //si tout va bien dans le reseau
		// Information sur l'etat de la Queue Zwave
		$networkState = openzwave::callOpenzwave('/network?type=info&info=getStatus');
		$queueSize=$networkState['result']['outgoingSendQueue'];
		log::add('zwaveordercheck', 'debug', '[Debug] -> queueSize : '.$queueSize);
		return $queueSize;
	}

	public static function isQubinoFilPiloteStatusOk ($_mycmd) {
		$arraycmd = explode("][",$_mycmd);
		$mystate = '#'.trim($arraycmd[0]).']['.trim($arraycmd[1]).'][Etat]#';
		$mystateName = cmd::byString($mystate)->getHumanName();
		$state = cmd::byString($mystate)->execCmd();
		log::add('zwaveordercheck', 'info', '[Etat] -> '.$mystateName.' : '.$state);
		$cmd = substr($arraycmd[2], 0, $arraycmd[2].length-1);
        switch ($cmd) {
			case "Arret":
				$ret = ($state == 0) ? 1 : 0;
				break;
			case "Hors Gel":
				$ret = ($state == 20) ? 1 : 0;
				break;
			case "Eco":
				$ret = ($state == 30) ? 1 : 0;
				break;
			case "Confort -2":
				$ret = ($state == 40) ? 1 : 0;
				break;
			case "Confort -1":
				$ret = ($state == 50) ? 1 : 0;
				break;
			case "Confort":
				$ret = ($state>=100) ? 1 : 0;
				break;
		}
        return $ret;
	}

	public static function sendQubinoFilPiloteOrder($_mycmd, $_mysleep='5') {
		$_mycmd = trim($_mycmd);
		$cmd = '#'.$_mycmd.'#';
		try {
			$mycmdName = cmd::byString($cmd)->getHumanName();
        } catch (Exception $e) {
    		log::add('zwaveordercheck', 'info', 'Exception recue : '.  $e->getMessage());
            $mycmdName = $_mycmd;
		}
		log::add('zwaveordercheck', 'info', '[Action demandee] -> '.$mycmdName);
		$i = 0;
		while (!userFunction::isQubinoFilPiloteStatusOk($_mycmd) && $i < 4) { // Tant que la valeur de l'etat ne colle pas la commande, on recommence
			if (userFunction::zwaveGetQueueSize() == 0) {
				if ($i > 1) {
					log::add('zwaveordercheck', 'warning', '[Action] -> '.$mycmdName.' [execution '.$i.']');
				} else {
					log::add('zwaveordercheck', 'info', '[Action] -> '.$mycmdName);
				}
				cmd::byString($cmd)->execCmd(); // Execution de la commande demandee
				sleep($_mysleep*($i + 1)); // Stoppe pour $_mysleep * execution secondes
				$i++;
			} else {
				sleep(1);
			}
		}
		if ($i == 4) {
			log::add('zwaveordercheck', 'warning', '[Info] -> '.$mycmdName. ' ne semble pas avoir ete executee');
			return 0;
		} else {
			log::add('zwaveordercheck', 'info', '[Action executee] -> '.$mycmdName);
			return 1;
		}
	}
2 « J'aime »