Bonjour,
j’avance bien dans ma domotique et maintenant je m’attaque à la surveillance des équipements.
.
je souhaiterais controler les dates de communication de mes équipements plugin-z2m.
Ayant aucune connaissance en code , j’essay de faire trés simple et donc de ne pas utiliser de bloc code que je ne serai pas maintenir et aussi eviter d’utiliser un plugin d’un dev tiers(qui pourrais ne plus etre maintenu). loins de moi de critiquer , j’ai des plugin de dev hors jeedom mais ils sont trés actifs sur le community. mais la je bute.
je voudrais eviter au maximum de devoir creer des virtuel pour transformer la derniere communication en info binaire
alors j’ai trouvé ce sujet mais il n’est pas comme je le voudrais
il utilise les scénario => ok
il verifier la date de derniere communication => ok
mais je voudrais afficher que les warnings et surtout envoyer en notification les warning.
Le code :
$idleMax = new DateTime("1 day ago"); // Délai maximum toléré dernière communication
$tsIdleMax = $idleMax->getTimestamp();
// Fonction de tri des équipements basée sur la date de communication
function lastCommunication_sort ($a, $b) {
if ($a["lastCommunication"] == $bl["lastCommunication"]) {
return 0;
}
return ($a["lastCommunication"] < $b["lastCommunication"]) ? -1 : 1;
}
$eqList = array();
foreach (eqLogic::all() as $eqLogic) {
// Récupération de tous les équipements z2m avec une date
if (in_array($eqLogic->getEqType_name(), ["z2m"]) && $eqLogic->getStatus("lastCommunication")) {
array_push($eqList, ["lastCommunication" => $eqLogic->getStatus("lastCommunication"), "eqLogic" => $eqLogic]);
}
}
usort($eqList, "lastCommunication_sort");
foreach (array_values($eqList) as $item) {
$eqLogic = $item["eqLogic"];
$tsLastCommunication = strtotime($eqLogic->getStatus("lastCommunication"));
$dateFR = date("d/m/Y \à H\hi", $tsLastCommunication);
$messageLevel = $tsLastCommunication < $tsIdleMax ? "[WARNING]" : "[INFO]" ;
$scenario->setLog("$messageLevel Dernière communication le $dateFR : ". $eqLogic->getHumanName());
}
le log resultat :
[2024-09-06 18:47:38][SCENARIO] -- Début : Scenario lance manuellement.
[2024-09-06 18:47:38][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-09-06 18:47:38][SCENARIO] Exécution d'un bloc code
[2024-09-06 18:47:38][SCENARIO] WARNING Dernière communication le 28/02/2024 à 23h13 : [CHAMBRE PARENT][Eclairage]
[2024-09-06 18:47:38][SCENARIO] WARNING Dernière communication le 28/02/2024 à 23h13 : [CHAMBRE 3][Eclairage]
[2024-09-06 18:47:38][SCENARIO] WARNING Dernière communication le 28/02/2024 à 23h13 : [CHAMBRE ARMAND][Eclairage]
[2024-09-06 18:47:38][SCENARIO] WARNING Dernière communication le 01/09/2024 à 06h25 : [SALON][Contact de fenêtre porte dentrée]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 17h46 : [CHAMBRE ARMAND][Bouton Lit]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 17h59 : [SALON][Contact de fenêtre Est Droite]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h02 : [WC][Contact de fenêtre]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h03 : [SALON][Contact de fenêtre Ouest droite]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h18 : [Cuisine][Contact de fenêtre Gauche]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h22 : [Cuisine][Contact de fenêtre Droite]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h44 : [SALLE DE BAIN][Volet Roulant]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h44 : [SALON][Contact de fenêtre Ouest Gauche]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h44 : [COULOIR ETAGE][Contact de fenêtre]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h44 : [2 Multimédia][Multiprise TV]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h46 : [SALLE DE BAIN][Contact de fenêtre Droite]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h46 : [CHAMBRE ARMAND][Contact de fenêtre]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h46 : [CHAMBRE PARENT][Volet roulant]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h46 : [CHAMBRE 3][Contact de fenètre]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h46 : [SALON][Eclairage]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [RPI Chauffage][Boost etage]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [SALON][Contact de fenêtre Est gauche]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [COULOIR ETAGE][Eclairage]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [SALON][PC Aspi Canapé]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [SALON][PC TV ASPI]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [Cuisine][Eclairage]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [2 Multimédia][Charge Tablette]
[2024-09-06 18:47:38][SCENARIO] INFO Dernière communication le 06/09/2024 à 18h47 : [RPI Chauffage][Arret PAC]
[2024-09-06 18:47:38][SCENARIO] Fin correcte du scénario
l’idée serais d’avour uniquement les warning dans les logs mais surtout les extraires vers une notification via un scénario.
ma page santé :
merci pour votre aide