{ "name": "Alertes Infra - Com et Batteries", "isActive": "1", "group": "Gestion infra domotique", "mode": "schedule", "schedule": "35 * * * *", "trigger": [ "" ], "timeout": "0", "isVisible": "0", "display": { "name": "", "icon": "<\/i>" }, "order": "9999", "description": "", "configuration": { "timeDependency": 0, "has_return": 0, "logmode": "default", "allowMultiInstance": "0", "syncmode": "0", "timeline::enable": "0", "timeline::folder": "" }, "elements": [ { "name": null, "type": "action", "options": [], "order": "0", "subElements": [ { "name": null, "type": "action", "subtype": "action", "options": { "collapse": "0", "enable": "1" }, "order": "0", "expressions": [ { "type": "element", "subtype": null, "expression": "697", "options": [], "order": "0", "element": { "name": null, "type": "comment", "options": [], "order": "0", "subElements": [ { "name": null, "type": "comment", "subtype": "comment", "options": { "collapse": "1" }, "order": "0", "expressions": [ { "type": "comment", "subtype": null, "expression": "Paramétrages généraux", "options": [], "order": "0" } ] } ] } }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "eqVirtuel", "value": "#[Infra St Etienne][JC - Battery - Com Verif]#" }, "order": "1" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "plugins", "value": "zigbee2mqtt, jMQTT, enedis, networks, grdfConnect, JeedomConnect" }, "order": "2" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "eqIdExclude", "value": "1058,1066,1155,1415,1461,1400,1457,1458,1407,1408, 1409,1462, 1405" }, "order": "3" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "checkBatteryEnable", "value": "1" }, "order": "4" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "checkComEnable", "value": "1" }, "order": "5" }, { "type": "element", "subtype": null, "expression": "698", "options": [], "order": "6", "element": { "name": null, "type": "comment", "options": [], "order": "0", "subElements": [ { "name": null, "type": "comment", "subtype": "comment", "options": { "collapse": "1" }, "order": "0", "expressions": [ { "type": "comment", "subtype": null, "expression": "Paramétrages pour JeedomConnect", "options": [], "order": "0" } ] } ] } }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "enableNotifJC", "value": "1" }, "order": "7" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "cmdNotifJC", "value": "#[Norbert][JC_Norbert][Notif_Defaut_Infra]#" }, "order": "8" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "alertPageIdJC ", "value": "94" }, "order": "9" }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "heureNotifJC", "value": "9" }, "order": "10" } ] } ] }, { "name": null, "type": "code", "options": [], "order": "0", "subElements": [ { "name": null, "type": "code", "subtype": "action", "options": { "collapse": "0", "enable": "1" }, "order": "0", "expressions": [ { "type": "code", "subtype": null, "expression": "\/\/ version bloc code\n$version = '20\/04\/2023 20:00' ;\n$scenario->setLog('┌──────────── Logs bloc code - version du '.$version);\n\n\/\/ Recupération des tags\n$tags = $scenario->getTags(); \/\/récupère la liste des tags\n$eqVirtuelId = str_replace(array(\"#\", \"eqLogic\"),array(\"\", \"\"),$tags['#eqVirtuel#']);\n$plugins = explode(',',str_replace(' ','',$tags['#plugins#']));\n$eqIdExclude = explode(',',str_replace(' ','',$tags['#eqIdExclude#']));\n$checkBatteryEnable = $tags['#checkBatteryEnable#'];\n$checkComEnable = $tags['#checkComEnable#'];\n$checkComEnable = $tags['#checkComEnable#'];\n$enableNotifJC = $tags['#enableNotifJC#'];\n$alertPageIdJC = $tags['#alertPageIdJC#'];\n$heureNotifJC = $tags['#heureNotifJC#'];\n$cmdNotifJC = cmd::byId(str_replace('#','',$tags['#cmdNotifJC#']));\n\n\/\/Seuils d'alerte\n$seuilBatteryWarning = config::byKey('battery::warning', 'core'); \/\/ recupéré de la page equipement de la config générale Jeedom\n$seuilBatteryDanger = config::byKey('battery::danger', 'core'); \/\/ recupéré de la page equipement de la config générale Jeedom\n$seuilComWarning = 86400; \/\/ 86400 = 1 jour\n$seuilComDanger = 86400 * 2; \/\/ 2 jours\n\n\/\/initialisation des variables\n$nbBatteryOK = 0;\n$nbBatteryWarning = 0;\n$nbBatteryDanger = 0;\n$nbBatteryTotal = 0;\n$listBatteryWarning = '';\n$listBatteryDanger = '';\n$nbComOK = 0;\n$nbComWarning = 0;\n$nbComDanger = 0;\n$nbComTotal = 0;\n$listComWarning = '';\n$listComDanger = '';\n\nfunction convertDuree($_second) {\n if ( $_second < 60 ) return \"< 1min\" ;\n elseif ( $_second < 3600 ) return round($_second \/ 60).'min' ;\n elseif ( $_second < 86400 ) return round($_second \/ 3600).'h' ;\n else return round($_second \/ 86400).'j' ;\n}\n\n\n\/\/$eqVirtuelBatteryWarning = '#' . $eqVirtuel . '[Batterie Warning]#';\n$cmdBatteryWarning = cmd::byEqLogicIdCmdName($eqVirtuelId,'Batterie Warning');\n$cmdBatteryDanger = cmd::byEqLogicIdCmdName($eqVirtuelId,'Batterie Danger');\n$cmdBatteryNbOK = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Batterie OK');\n$cmdBatteryNbWarning = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Batterie Warning');\n$cmdBatteryNbDanger = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Batterie Danger');\n$cmdBatteryNbTotal = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Equipements batterie');\n$cmdComWarning = cmd::byEqLogicIdCmdName($eqVirtuelId,'Com Warning');\n$cmdComDanger = cmd::byEqLogicIdCmdName($eqVirtuelId,'Com Danger');\n$cmdComNbOK = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Com OK');\n$cmdComNbWarning = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Com Warning');\n$cmdComNbDanger = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Com Danger');\n$cmdComNbTotal = cmd::byEqLogicIdCmdName($eqVirtuelId,'NB Equipements Com');\n\n$checksEnable = 1 * $checkBatteryEnable + 2 * $checkComEnable ; \/\/ 0 - pas de check, 1 - check batt, 2 ; check com, 3 check batt + com\n\nif ( $checksEnable >= 1 ) {\nforeach ($plugins as $plugin) { \/\/ Pour chaque plugin\n $scenario->setLog('| Plugin : '.$plugin);\n foreach (eqLogic::byType($plugin, true) as $eqLogic) { \/\/ pour chaque equipement du plugin\n $eqId = $eqLogic->getId();\n\n if (in_array($eqId, $eqIdExclude) == false) { \/\/ Si l'equipememnt n'et spas dans les equipements exclus des verifs\n $eqLogicName = $eqLogic->getName();\n $eqId = $eqLogic->getId();\n $eqLogicHumaneName = $eqLogic->getHumanName();\n $eqLogicId = $eqLogic->getId();\n $eqLogicType = $eqLogic->getEqType_name();\n $objID = $eqLogic->getObject_id();\n switch ($plugin) {\n case \"zigbee\":\n $deviceModel = $eqLogic->getConfiguration('device');\n break;\n case \"openzwave\":\n $deviceModel = $eqLogic->getConfiguration('product_name');\n break;\n case \"jMQTT\":\n $deviceModel = $eqLogic->getConfiguration('commentaire');\n break;\n case \"JeedomConnect\":\n $deviceModel = $eqLogic->getConfiguration('deviceName');\n break;\n default:\n $deviceModel = $eqLogic->getConfiguration('device_model');\n break;\n }\n\n \/\/ Calcul des niveau d'alarmes des batteries\n if ($checkBatteryEnable) {\n $batteryStatus = \"\" ;\n \/\/if (!empty($deviceModel)) { \/\/ si il n'y a pas de numero de model, on considere que ce n'est pas un equipement matériel, donc pas de batterie !!\n switch ($deviceModel) {\n case 'TS0601_thermostat': \/\/ je fais un test dans ma sitution perso sur ce modele qui ne renvoie pas un % de batterie, mais un booleen batterie faible, ous pouvez integrer des exceptions de gesiton de batterie ici\n $batteryLowBinaire = cmd::byEqLogicIdCmdName($eqId,'Batterie faible')->execCmd();\n if ($batteryLowBinaire) $batteryStatus = 0;\n else $batteryStatus = 100;\n break;\n default:\n $batteryStatus = $eqLogic->getStatus('battery');\n break;\n }\n\n if (isset($batteryStatus) and $batteryStatus !== \"\")\n { \/\/ comptabilisation des batteries OK ou en warning ou en critical\n $nbBatteryTotal++;\n if ($batteryStatus <= $seuilBatteryDanger)\n {\n $nbBatteryDanger++;\n $listBatteryDanger = $listBatteryDanger . \"\" . $eqLogicHumaneName . \"<\/b> (\" . $eqLogicType . \"): \" . $batteryStatus . \"%
<\/span>\";\n }\n elseif ($batteryStatus <= $seuilBatteryWarning)\n {\n $nbBatteryWarning++;\n $listBatteryWarning = $listBatteryWarning . \"\" . $eqLogicHumaneName . \"<\/b> (\" . $eqLogicType . \"): \" . $batteryStatus . \"%
<\/span>\";\n }\n else\n {\n $nbBatteryOK++;\n }\n }\n \/\/}\n }\n\n \/\/ calcul des niveaux d'alarme des lastCom\n if ($checkComEnable) {\n $lastCom = strtotime($eqLogic->getStatus('lastCommunication'));\n $elapsedTime = time() - $lastCom;\n\n if (isset($lastCom) and $lastCom !== \"\")\n { \/\/ comptabilisation des LastCom OK ou en warning ou en critical\n $nbComTotal++;\n if ($elapsedTime >= $seuilComDanger)\n {\n $nbComDanger++;\n $listComDanger = $listComDanger . \"\" . $eqLogicHumaneName . \"<\/b> (\" . $eqLogicType . \"): \" . convertDuree($elapsedTime) . \"
<\/span>\";\n }\n elseif ($elapsedTime >= $seuilComWarning)\n {\n $nbComWarning++;\n $listComWarning = $listComWarning . \"\" . $eqLogicHumaneName . \"<\/b> (\" . $eqLogicType . \"): \" . convertDuree($elapsedTime) . \"
<\/span>\";\n }\n else\n {\n $nbComOK++;\n }\n }\n }\n if ( $checksEnable != 0 ) {\n $log = \"|\t \" . $eqLogicHumaneName ;\n if ( $deviceModel != '' ) $logDeviceModel = \" (\" . $deviceModel . \")\" ;\n else $logDeviceModel = \"\" ;\n \tswitch ($checksEnable) {\n case 1:\n if ( isset($batteryStatus) and $batteryStatus !== \"\" ) {\n $log .= $logDeviceModel . \" => batterie : \" . $batteryStatus . \"%\" ;\n $scenario->setLog($log) ;\n }\n break;\n case 2:\n $log .= $logDeviceModel . \" => Last com : \" . convertDuree($elapsedTime) ;\n $scenario->setLog($log) ;\n break;\n case 3:\n if ( isset($batteryStatus) and $batteryStatus !== \"\" ) $log .= $logDeviceModel . \" => batterie : \" . $batteryStatus . \"% , Last com : \" . convertDuree($elapsedTime);\n else $log .= $logDeviceModel . \" => Pas de batterie , Last com : \" . convertDuree($elapsedTime);\n $scenario->setLog($log) ;\n break;\n }\n\n } \n }\n }\n}\n\n\/\/ Affichage-formatage des resultats dans les virtuels\nif ($checkBatteryEnable) {\n if ($nbBatteryWarning == 0) $listBatteryWarning = \"Aucun équipement en warning<\/b><\/span>\";\n if ($nbBatteryDanger == 0) $listBatteryDanger = \"Aucun équipement en critical<\/b><\/span>\";\n $cmdBatteryNbOK->event($nbBatteryOK);\n $cmdBatteryNbWarning->event($nbBatteryWarning);\n $cmdBatteryNbDanger->event($nbBatteryDanger);\n $cmdBatteryNbTotal->event($nbBatteryTotal);\n $cmdBatteryWarning->event($listBatteryWarning);\n $cmdBatteryDanger->event($listBatteryDanger);\n}\nelse $scenario->setLog(\"| Check batterie desactivé\");\n\nif ($checkComEnable) {\n if ($nbComWarning == 0) $listComWarning = \"Aucun équipement en warning<\/b><\/span>\";\n if ($nbComDanger == 0) $listComDanger = \"Aucun équipement en critical<\/b><\/span>\";\n $cmdComNbOK->event($nbComOK);\n $cmdComNbWarning->event($nbComWarning);\n $cmdComNbDanger->event($nbComDanger);\n $cmdComNbTotal->event($nbComTotal);\n $cmdComWarning->event($listComWarning);\n $cmdComDanger->event($listComDanger);\n}\nelse $scenario->setLog(\"| Check Last Communication desactivé\");\n\n\/\/ Envoi d'une notif JC\nif ($enableNotifJC && date(\"G\") == $heureNotifJC) {\n if ($nbBatteryDanger >= 1 || $nbComDanger >= 1) {\n switch ($checksEnable) {\n case 1:\n $cmdNotifJC->execCmd($options = array('title' => 'title=Defaut infrastructure | gotoPageId=' . $alertPageIdJC, 'message' => \"Batteries -> OK : \" . $nbBatteryOK . \",<\/span> Warning : \" . $nbBatteryWarning . \", <\/span>Critical : \" . $nbBatteryDanger . \"<\/span>\"), $cache = 0);\n break;\n case 2:\n $cmdNotifJC->execCmd($options = array('title' => 'title=Defaut infrastructure | gotoPageId=' . $alertPageIdJC, 'message' => \"Com -> OK : \" . $nbComOK . \",<\/span> Warning : \" . $nbComWarning . \", <\/span>Critical : \" . $nbComDanger . \"<\/span>\"), $cache = 0);\n break;\n case 3:\n $cmdNotifJC->execCmd($options = array('title' => 'title=Defaut infrastructure | gotoPageId=' . $alertPageIdJC, 'message' => \"Batteries -> OK : \" . $nbBatteryOK . \",<\/span> Warning : \" . $nbBatteryWarning . \", <\/span>Critical : \" . $nbBatteryDanger . \"<\/span>
Com -> OK : \" . $nbComOK . \",<\/span> Warning : \" . $nbComWarning . \", <\/span>Critical : \" . $nbComDanger . \"<\/span>\"), $cache = 0);\n break;\n }\n }\n}\nelseif ( $enableNotifJC ) $scenario->setLog(\"| Pas de notif, prochaine notif à \" . $heureNotifJC . \"h\");\nelse $scenario->setLog(\"| Pas de notif paramétrée\");\n}\nelse $scenario->setLog('| Aucun check n\\'est paramétré, sortie sans actions');\n$scenario->setLog('└───────────────────────────');\n\n", "options": [], "order": "0" } ] } ] } ] }