$type = 'linge' ; // linge pour le lave-linge, vaisselle pour le lave-vaisselle, seche pour le seche-linge // definition des commandes $item_prise = '[Cuisine][Lave-'.$type.']' ; // la commande de la prise $item_cycle = '[Cuisine][Cycle Lave-'.$type.']' ; // le virtuel pour les infos du cycle $notification = '[Norbert][JeedomConnect_Norbert][Notif_Electromenager]'; // la commande de notification $puissance = cmd::byString('#'.$item_prise.'[Puissance]#')->execCmd(); $etat = cmd::byString('#'.$item_cycle.'[Etat]#')->execCmd(); $heure = time() ; $heure_formatee = date('h:i', time()); // calcul de la puissance max sur 10min $cmdId = cmd::byString('#'.$item_prise.'[Puissance]#')->getId(); $debut = date("Y-m-d H:i:s", strtotime("-10 min")); $fin = date("Y-m-d H:i:s", strtotime("now")); $max_conso = history::getStatistique($cmdId, $debut, $fin)["max"]; if ( $puissance > 10 and $etat == 0 ) { // enregistrement des données initiales $scenario->setLog('Debut du cycle de lavage -> Enregistrement des données initiales du cycle'); cmd::byString('#'.$item_cycle.'[Etat]#')->event('1'); $consommation = cmd::byString('#'.$item_prise.'[Consommation]#')->execCmd(); $scenario->setData($type .'_conso_debut', $consommation ) ; // consomation $scenario->setData($type .'_debut', $heure ) ; // heure de debut $heure_formatee = date('h:i', time()); // envoi d'un message de demarrage de cycle $message = array('title'=>'Lancement lave-'.$type, 'message'=> '... à '.$heure_formatee); cmd::byString( '#'.$notification.'#' )->execCmd( $message, $cache=0 ); } elseif ( $max_conso <= 2 and $etat == 1 ) { $scenario->setLog('Fin du cycle de lavage -> Calcul des données du cycle'); // recuperation des données du cycle $conso_debut = $scenario->getData($type .'_conso_debut'); $scenario->setLog('Conso debut -> '.$conso_debut); $conso_fin = cmd::byString('#'.$item_prise.'[Consommation]#')->execCmd(); $scenario->setLog('Conso fin -> '.$conso_fin); $heure_debut = $scenario->getData($type .'_debut') ; $heure_fin = $heure - 600 ; // on enleve 600 car on attend qu'il n'y ai plu de conso pendant 10min pour considerer le cycle terminé $edf_tarif = $scenario->getData(EDF_Tarif_KWh) ; // recupération des totaux $conso_total = cmd::byString('#'.$item_cycle.'[Total Conso]#')->execCmd(); $cout_total = cmd::byString('#'.$item_cycle.'[Total Cout]#')->execCmd(); // calcul des durées $duree = $heure_fin - $heure_debut ; $scenario->setLog('Durée -> '.$duree); $dureeH = floor( ($duree / 3600) % 24); $dureeM = floor( ( ($duree - $dureeH * 3600) / 60) % 60) ; // Calcul des données du cycle $conso_cycle = $conso_fin - $conso_debut; $scenario->setLog('Conso cycle -> '.$conso_cycle); $cout_cycle = round($conso_cycle * $edf_tarif,2); $duree_cycle = sprintf("%'.02d", $dureeH ) .':'.sprintf("%'.02d", $dureeM ) ; $scenario->setLog('Durée cycle -> '.$duree_cycle); // calcul des totaux $conso_total = $conso_total + $conso_cycle ; $cout_total = round( $cout_total + $cout_cycle , 2 ) ; // envoi des valeurs cmd::byString('#'.$item_cycle.'[Cout]#')->event(round($cout_cycle,2)); cmd::byString('#'.$item_cycle.'[Consommation]#')->event(round($conso_cycle,2)); cmd::byString('#'.$item_cycle.'[Durée]#')->event($duree_cycle); cmd::byString('#'.$item_cycle.'[Total Conso]#')->event($conso_total); cmd::byString('#'.$item_cycle.'[Total Cout]#')->event($cout_total); cmd::byString('#'.$item_cycle.'[Etat]#')->event('0'); // envoi d'un message de fin $message = array('title'=>'Fin du cycle du lave-'.$type, 'message'=> 'Consommation : '.$conso_cycle.'kWh pour '.$cout_cycle.'€
Durée : '.$duree_cycle); cmd::byString( '#'.$notification.'#' )->execCmd( $message, $cache=0 ); } ;