Arrosage zigbee

Bonjour,

J’ai automatiser mon arrosage à l’aide de 3 vannes Woox7060 (Zigbee3), connectées à une SmartBox par l’intermédiaire du plugin Zigbee et d’une clé Conbee2.
ça fonctionne très bien, même que les piles sont restées dans les vannes tout l’hiver et que ça fonctionne encore.
Mais, je m’inquiète quand même, car si une vanne ne répond plus à la fermeture quand le scénario dit que c’est finit, la note d’eau va être salée. J’ai d’ailleurs répété l’ordre de fermeture dans le scénario pour avoir une garantie supplémentaire.
Je cherche un moyen de ne pas me retrouver avec une vanne qui reste ouverte suite à usure des piles ou à un bug quelconque.
Il y a des des alertes d’absence de communication dans Zigbbee, mais j’imagine qu’il ne faut pas les planifier n’importe comment, sinon les autotests de communication pourraient user les piles ?
Peut-on planifier ces tests au moment précis où le scénario donne l’ordre de fermeture de vanne par exemple ?
Recevoir un SMS pour nous alerter sur une vanne qui est censée se fermer mais qui ne communique plus, pourrait nous éviter bien des déboires.

Merci pour votre aide.

Hello,
Je n’ai jamais essayé et il faudrait peut-être ouvrir un sujet dans une autre catégorie plus « générique » sur finalement la possibilité de relier une commande à seuil d’alerte des piles.

Dans le menu Jeedom > Analyse > Equipements > Batteries tu dois avoir le résumé de tous les niveaux de batteries. On doit avoir moyen de récupérer ce niveau de batterie et l’associer à un scénario récurrent qui check la batterie pour lancer une dernière commande à 1%.

Je suis très intéréssé également sur le principe mais j’avoue ne pas savoir comment récupérer le niveau de batterie en dehors de cet écran.

A suivre du coup si d’autres savent faire.

A bientôt,

1 « J'aime »

Bonjour,
tu peux peut être commencer par un test tout simple : Vanne ouverte, tu retires la pile et tu regardes ce qu’il se passe. Si ces vannes n’ont pas été trop mal conçues, elles devraient être normalement fermées, c’est à dire que la vanne est fermée en l’absence d’alimentation électrique, justement pour éviter de débiter en l’absence de courant.

Je n’ai pas les mêmes vannes, mais personnellement à la fin de mon scenario d’arrosage, je reçoit une notification avec l’état des électrovannes. Si l’un d’elle reste sur ON, je le vois tout de suite.

Hello
Avec ce bloc code tu peux via scenario récupérer les infos que tu as besoin.

Il va balayer tous les objets jeedom et pour chaque objets récupérer les équipements qui ont l’info batterie.

$scenario->setLog(json_encode(getBatteryInfo($scenario)));

function getBatteryInfo($scenario) {
      	$response=array();
      	$start_time = microtime(true);

        foreach(jeeObject::all() as $jeeObjet) {
          $arrayEquipement= array();
          $jeeObjectName=$jeeObjet->getName();

          foreach($jeeObjet->getEqLogic() as $eqlogic) {
            $eqLogicName = $eqlogic->getName();
            $eqLogicId=$eqlogic->getId();
            $eqLogicType=$eqlogic->getEqType_name();
            $objID=$eqlogic->getObject_id();

			$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($response,$arrayPieceToAdd);
          }


        }

      	return $response;  
      }
  
function manageClassicEquipment($scenario=null,$eq) {
	$batteryStatus = $eq->getStatus('battery');
	$batteryDanger= $eq->getStatus('batterydanger');
	$batteryWarning= $eq->getStatus('batterywarning');
	$batteryDateTime= $eq->getStatus('batteryDatetime');
	$batteryType= $eq->getConfiguration('battery_type', '');
	$changeBatteryDateTime= $eq->getConfiguration('batterytime', '');
	if (isset($batteryStatus) and $batteryStatus !== ""){ 
		$response=array("equipement"=>$eq->getName(),"batteryValue"=>$batteryStatus,"batteryCollectedDate"=>$batteryDateTime,"typePile"=>$batteryType,"changeBatteryDateTime"=>$changeBatteryDateTime);
	}
	return $response;
}

Il ressort un tableau avec comme info :

hésites pas si tu as besoin de plus d’info
@chris94440

Hello,

Ca rejoins un peu ma demande dans un autre sujet :

Comment récupérer facilement la batterie d’un objet dans les scénarios ou commandes. Avec une commande info de batterie, on peut ensuite utiliser cette commande partout dans jeedom, scénario, etc.

Bonne journée à tous,

Bonjour,

Merci pour le code, comment tu fais pour l’afficher comme tu le fais stp ?
Y a t-il un moyen de l’afficher un peu « mieux » dans le log ?

Possible de rajouter du code pour trouver les équipements inferieurs à une certaine valeur:
ex: if batterie<10, then nom équipement

Merci

Yes c’est ce que je fait au travers d’une notification …je te donne ça demain qd j’aurais un PC à porte de main

Merci pour vos réponse,
J’ai testé comme dit Yoskin90, en enlevant les piles quand la vanne est ouverte, elle reste ouverte.
Elle se ferme quand je remet les piles.
L’idéal serait pouvoir éviter qu’une vanne reste ouverte, sans être noyé de fausses alertes.
J’arrose la nuit, donc recevoir une notification de confirmation de fermeture c’est embêtant :yawning_face:.
Et même si c’était de jour, mes scénarios se lancent plus de 5 fois par semaine, donc je ne pourrai pas rester attentif à toute les notifications de fermetures de vannes.
L’idée de Chris94440 est intéressante, mais c’est pas évident à mettre en œuvre pour un débutant comme moi :grin:.
Je vois qu’il y a des améliorations en cours sur ce fil ! :+1: :+1:, je vais attendre que ça murisse.
Quelqu’un a une idée sur le seuil d’alerte à mettre sur les piles afin d’éviter les risques sans prendre une marge trop grande ?

Tous les jours j’ai un script qui tourne pour regarder l’état du pourcentage de batterie et si < 25 % une alerte … mais cela ne fonctionne pas car la remontée d’info de l’état de la batterie ne fonctionne pas correctement (je suis en zigbee xiaomi aqara, sonoff et legrand) … du coup depuis qq jours j’ai décidé de changer de manière d’appréhender le problème. Je pars du prédicat qu’une pile a une durée de vie de 1 an … tous les mois un script tourne pour m’avertir des équipements qui ont vu leur batterie changé il y a plus de 300 j … c’est à ce moment là que je changerais la batterie … dans mon cas c’est des cr2032, cr1632 et lr6 …je vais voir ce que cela va donner …

sinon le script ressemble à :

$delta=300;

$message.='<table cellspacing=\"3\" border=\"0\">';
$message.='<tbody>';
$message.='<tr>';
$message.='<td>Pièce</td>';
$message.='<td>Nom</td>';
$message.='<td>Date remplacement</td>';
$message.='<td>Type batterie</td>';
$message.='</tr>';

$response=getBatteryInfo($scenario);

$aResponse=json_decode($response,true);
$scenario->setLog('Nb result : ' . sizeof($aResponse['result']));
if (sizeof($aResponse['result']) > 0 ) {
	foreach($aResponse['result'] as $result) {
    	foreach($result['listeEquipement'] as $eq) {
            
            $date1 = date_create_from_format("Y-m-d H:i:s", $eq['changeBatteryDateTime']);
			$date2 = date_create_from_format("Y-m-d H:i:s", date("Y-m-d H:i:s"));
            
            $diff = (array) date_diff($date1, $date2);
            $scenario->setLog('Dif : ' .$diff['days'] . ' days');
            if ($diff['days'] > $delta) {
              	$message.='<tr>';
              	$message.='<td >'.$result['piece'].'</td>';
                $message.='<td >'.$eq['equipement'].'</td>';
                $message.='<td >'.$eq['changeBatteryDateTime'].'</td>';
              	$message.='<td>'.$eq['typePile'].'</td>';
                $message.='</tr>';
            }
        }
    }
  
  	$message.='</tr>';
    $message.='</tbody>';
    $message.='</table>';
    $scenario->setLog($message);
  	notificationFunction::sendJeedomConnectMessage($scenario,$receiver,'Notif_alerte',null,'Gestion changement des piles : ',$message);
} else {
  	$scenario->setLog('Toutes les batteries ont moins de ' . $delta . ' jours');
}

Le tout est envoyé en nofication via jeedom connect …le rendu est

@Mackile si tu souhaites travailler sur le pourcentage de batterie il faut remplacer le test

 if ($diff['days'] > $delta) {

par

if ( $eq['batteryValue'] < $tonSueilDeControl)

@chris94440

PS :
La fonction d’envoi de notification

notificationFunction::sendJeedomConnectMessage($scenario,$receiver,'Notif_alerte',null,'Gestion changement des piles : ',$message);

est une fonction perso … il faut la remplacert par l’appel de votre cmd de notification

2 « J'aime »

Pour une application similaire, j’avais utilisé une module bluetooth (mais qui ne se fait plus je crois) à qui on pouvait demander une ouverture pendant un certain temps. Cela avait le gros avantage de le rendre autonome si la connexion était perdue.

En Zigbee il y a la vanne SASWELL dont les gens se plaignent d’avoir une fermeture au bout du 10 minutes. C’est certes contraignant, mais inversement c’est aussi une sécurité.

Bonjour

Pour ma part j’utilise une pompe pour puiser l’eau d’une cuve ce qui me permet de sécuriser en coupant également la pompe (j’ai également des vannes Woox pour chaque zone).
Une solution serait peut être d’ajouter en amont une vanne alimenter en 220v qui coupe l’arrivée d’eau une fois le scénario d’arrosage terminé.

:+1: ça couperait court à tout problème !
Une vanne de ce genre reliée à une prise Zigbee Ikea à 9,90 € par exemple?
https://fr.aliexpress.com/item/4000100193774.html

Bonjour,

Pour info, quelques sujets en parlent:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.