- Nom du scénario : sGestionDesisgnBattery - Mode du scénario : schedule - Programmation : 0 2 * * * CODE (code) $scenario->setLog("Start"); $arrayPiece= array(); foreach(jeeObject::all() as $jeeObjet) { $jeeObjectName=$jeeObjet->getName(); $scenario->setLog(" * Jeedom object Name : $jeeObjectName"); $jeeObjectEqLogic=$jeeObjet->getEqLogic(); $arrayEquipement= array(); $arraylisteEquipement=array(); foreach($jeeObjectEqLogic as $eqlogic) { $a=$eqlogic; $eqLogicName = $eqlogic->getName(); $eqLogicId=$eqlogic->getId(); $eqLogicType=$eqlogic->getEqType_name(); $objID=$eqlogic->getObject_id(); switch ($eqlogic->getEqType_name()) { case "naEnergie": $returnArray=manageEquipmentNaEnergie($scenario,$eqlogic,$arrayEquipement); if (isset($returnArray) and !empty($returnArray)) { $arrayEquipement=$returnArray; } break; default: $returnArray=manageClassicEquipment($scenario,$eqlogic); if (isset($returnArray) and !empty($returnArray)) { array_push($arrayEquipement,$returnArray); } break; } } if (isset($arrayEquipement) and !empty($arrayEquipement)){ $arrayPieceToAdd=array("piece"=>$jeeObjectName,"parentId"=>$objID,"listeEquipement"=>$arrayEquipement); array_push($arrayPiece,$arrayPieceToAdd); //createVirtualAndCmds($scenario,$arrayPieceToAdd); createVirtualAndOneCmd($scenario,$arrayPieceToAdd); } } $scenario->setLog(" * JSON infos batterie par piece : ". json_encode($arrayPiece)); $scenario->setLog("End"); function createVirtualAndCmds($scenario,$arrayPieceToAdd) { $scenario->setLog(" * Function createVirtualAndCmds Start"); $scenario->setLog(" - params : ".json_encode($arrayPieceToAdd)); $piece = $arrayPieceToAdd['piece']; $parentID=$arrayPieceToAdd['parentId']; $listEquipment=$arrayPieceToAdd['listeEquipement']; list($virtual, $virtualId)=createVirtual($scenario,$piece,$parentID); foreach($listEquipment as $equipment) { createCmd($scenario,$virtual,$virtualId,$equipment); } $scenario->setLog(" * Function createVirtualAndCmds End"); } function createVirtualAndOneCmd($scenario,$arrayPieceToAdd) { $scenario->setLog(" * Function createVirtualAndOneCmd Start"); $scenario->setLog(" - params : ".json_encode($arrayPieceToAdd)); $piece = $arrayPieceToAdd['piece']; $parentID=$arrayPieceToAdd['parentId']; list($virtual, $virtualId)=createVirtual($scenario,$piece,$parentID); createCmdInfoBatterie($scenario,$virtual,$virtualId,$arrayPieceToAdd); $scenario->setLog(" * Function createVirtualAndOneCmd End"); } function createVirtual($scenario,$piece,$parentID) { $scenario->setLog(" * Function createVirtual Start"); $scenario->setLog(" - params : $piece,$parentID"); $virtualName="vBattery".str_replace(' ', '_', $piece); $virtual = eqLogic::byLogicalId($virtualName, 'virtual'); if (!is_object($virtual)) { $scenario->setLog(" - Logic Equipment not exist $virtualName==> need to create with parent id $parentID "); $virtual = new virtual(); $virtual->setName($virtualName); $virtual->setLogicalId($virtualName); $virtual->setEqType_name('virtual'); $virtual->setObject_id($parentID); $virtual->setIsEnable(1); $virtual->setIsVisible(1); $virtual->save(); } else { $scenario->setLog(" - Logic Equipment exist $virtualName==> no need to create it"); } $vId=$virtual->getId(); $scenario->setLog(" * Function createVirtual End ==> $vId" ); return array($virtual,$vId); } function createCmdInfoBatterie($scenario,$virtual,$virtualId,$equipment) { $scenario->setLog(" * Function createCmdInfoBatterie Start"); $scenario->setLog(" - params : $virtualId,".json_encode($equipment)); $scenario->setLog(" - creation de la commande :$cmdName"); $virtuelCmd=$virtual->getCmd(null, "Battery_infos"); if (!is_object($virtuelCmd)) { $scenario->setLog(" - cmd do not exist ==> need to create it"); $virtuelCmd = new virtualCmd(); $virtuelCmd->setName("Battery_infos"); $virtuelCmd->setEqLogic_id($virtualId); $virtuelCmd->setLogicalId("Battery_infos"); $virtuelCmd->setType('info'); $virtuelCmd->setSubType('string'); $virtuelCmd->setTemplate('dashboard', 'customtemp::wBatteryJsonByColumn'); $virtuelCmd->setIsHistorized(1); $virtuelCmd->setUnite('%'); $virtuelCmd->setConfiguration("maxValue", "100"); $virtuelCmd->setConfiguration("minValue", "0"); $virtuelCmd->save(); } else { $scenario->setLog(" - cmd exist ==> no need to create it"); } $value=json_encode($equipment["listeEquipement"]); $scenario->setLog(" * Value : $value | " . json_encode($equipment)); $virtual->checkAndUpdateCmd("Battery_infos", $value); $scenario->setLog(" * Function createCmdInfoBatterie End"); } function createCmd($scenario,$virtual,$virtualId,$equipment) { $scenario->setLog(" * Function createCmd Start"); $scenario->setLog(" - params : $virtualId,".json_encode($equipment)); $cmdName=str_replace(array(' ','.'), '_', $equipment["equipement"]); $scenario->setLog(" - creation de la commande :$cmdName"); $virtuelCmd=$virtual->getCmd(null, $cmdName); if (!is_object($virtuelCmd)) { $scenario->setLog(" - cmd do not exist ==> need to create if"); $virtuelCmd = new virtualCmd(); $virtuelCmd->setName($cmdName); $virtuelCmd->setEqLogic_id($virtualId); $virtuelCmd->setLogicalId($cmdName); $virtuelCmd->setType('info'); $virtuelCmd->setSubType('string'); $virtuelCmd->setTemplate('dashboard', 'customtemp::wBatteryJson'); $virtuelCmd->setIsHistorized(1); $virtuelCmd->setUnite('%'); $virtuelCmd->setConfiguration("maxValue", "100"); $virtuelCmd->setConfiguration("minValue", "0"); $virtuelCmd->save(); } else { $scenario->setLog(" - cmd exist ==> no need to create if"); } $value=json_encode($equipment); $virtual->checkAndUpdateCmd($cmdName, $value); $scenario->setLog(" * Function createCmd End"); } function manageArrayEquipment($returnArray,$arrayEquipement) { if (isset($returnArray) and !empty($returnArray)) { array_push($arrayEquipement,manageClassicEquipment($scenario,$eqlogic)); } } function manageEquipmentNaEnergie($scenario,$eqNaEnergie,$arrayEquipement) { //$scenario->setLog(" * NaEnergie WidgetBattery : ".$eqNaEnergie->batteryWidget()); $eqNaEnergieName=$eqNaEnergie->getName(); $cmd = $eqNaEnergie->getCmd(null, 'eqmodules'); $cmdJSON = $cmd->execCmd(); $eqmodules = json_decode($cmdJSON, true); $cmdName = $cmd->getName(); $cmdId=$cmd->getId(); $batteryStatus = $eqNaEnergie->getStatus('battery'); $batteryDanger= $eqNaEnergie->getConfiguration('batterydanger'); $batteryWarning= $eqNaEnergie->getConfiguration('batterywarning'); $batteryDateTime= $eqNaEnergie->getStatus('batteryDatetime'); $batteryType= $eqNaEnergie->getConfiguration('battery_type', ''); foreach ($eqmodules as $eqmodule) { $batteryStatus = $eqmodule['battery_percent']; if (isset($batteryStatus) and $batteryStatus !== ""){ if ($eqmodule["type"] == "NATherm1") { $equipementName="Relais Netatmo"; } else if ($eqmodule["type"] == "NRV"){ if ($eqmodule["id"] == "09:00:00:05:3e:11") { $equipementName="Vanne salon côté rue"; $batteryType="2 x 1,5V LR06"; } else if ($eqmodule["id"] == "09:00:00:01:56:02") { $equipementName="Vanne salon côté jardin"; $batteryType="2 x 1,5V LR06"; } else if ($eqmodule["id"] == "09:00:00:12:43:40") { $equipementName="Vanne cuisine"; $batteryType="2 x 1,5V LR06"; } else { $equipementName="Vanne ". $eqNaEnergie->getName(); } } $scenario->setLog(" # [".$eqNaEnergie->getEqType_name()."] - id " . $eqmodule['id'] ." => batteryStatus : $batteryStatus |$batteryDanger | $batteryWarning | $batteryDateTime | $batteryType "); $array=array("equipement"=>$equipementName,"batteryValue"=>$batteryStatus,"batteryCollectedDate"=>$batteryDateTime,"typePile"=>$batteryType); array_push($arrayEquipement,$array); //$scenario->setLog(" # ".json_encode($array)); } } return $arrayEquipement; } function manageClassicEquipment($scenario,$eq) { $batteryStatus = $eq->getStatus('battery'); $batteryDanger= $eq->getStatus('batterydanger'); $batteryWarning= $eq->getStatus('batterywarning'); $batteryDateTime= $eq->getStatus('batteryDatetime'); $batteryType= $eq->getConfiguration('battery_type', ''); if (isset($batteryStatus) and $batteryStatus !== ""){ //$scenario->setLog(" * Other WidgetBattery : ".$eqNaEnergie->batteryWidget()); $scenario->setLog(" # [".$eq->getEqType_name()."] Equipment : " .$eq->getName() ." => battery : ". $batteryStatus . " |$batteryDanger | $batteryWarning | $batteryDateTime | $batteryType "); $array=array("equipement"=>$eq->getName(),"batteryValue"=>$batteryStatus,"batteryCollectedDate"=>$batteryDateTime,"typePile"=>$batteryType); } return $array; }