Fév 2018
23

Depuis la version 6.0 RC4 de Routeros certains switchs Mikrotik ont la possibilité de détecter les problèmes sur les câbles éthernet (/interface ethernet cable-test).

En utilisant un port éthernet libre, on peut aussi se servir de cette fonctionnalité pour traiter des alarmes d’équipements environnants, mais ce pourrait être de simples contacts d’ouverture de portes par exemple.

On peut ainsi traiter quatre boucles d’alarme sur une seule prise éthernet.

Il faut toutefois veiller à ne ramener que des ‘boucles sèches’, sans tension parasite, ce qui est le cas quand elle est ramenée par les contacts d’un relais.

Dans notre cas, la paire 3 du câble éthernet est connecté aux broches COM et NC du chargeur Victron alimentant le site.


connexion skylla

Ci-dessous un exemple de script permettant de tester l’alarme et d’envoyer un SMS si besoin :

# Script Alarme_Victron
# Acquisition de l'alarme d'un chargeur Victron
# En fonctionnement normal le chargeur Victron presente une boucle entre les broches NC et COM
# sur la paire 3 du cable ethernet de 5 metres, cette boucle disparait en cas de faute (tension
# trop basse ou tension trop elevee).
# Marc Dilasser, Le Net du Kermeur, Fevrier 2018 
:local TT 
:local PST1 
:local PST2 
:local STA1 
:local LEN1 
:local STA2 
:local LEN2 
:local PAIR 
:local MSG 
:local NUMTEL 
:local PORT 
:local IJ 
:local STAS [:toarray (p1="x", p2="x", p3="x", p4="x")] 
:local LENS [:toarray (p1=0, p2=0, p3=0, p4= 0)] 
:local STAT 
:local INTF "ether5" 
:local STATOK "short" 
:local LENMIN 4 
:local LENMAX 6 
:local DEBUG 0 
# Acquisition des infos des paires de l'interface ether5 
:set TT [:tostr [/interface ethernet cable-test $INTF as-value]] 
:if ($DEBUG > 0) do={ :put $TT; } 
:set PST1 [:find $TT "=" 0 ] 
:set PST2 [:find $TT ";status" $PST1 ] 
:set STAT [:pick $TT ($PST1 + 1) ($PST2 - $PST1) ] 
:if ($DEBUG > 0) do={ :put "$PST1 $PST2 $STAT"; } 
:for IJ from 1 to 4 step 1 do={ 
   :set PST1 [:find $STAT ":" 0 ]
   :set PST2 [:find $STAT ";" 0 ] 
   :set PAIR [:tostr ("p" . $IJ)]
   :set ($STAS->$PAIR) [:pick $STAT 0 $PST1] 
   :set ($LENS->$PAIR) [:pick $STAT ($PST1 + 1)] 
   :if ($DEBUG > 0) do={ :put ("Paire " . $IJ . " : " . $STAS->$PAIR . " , " . $LENS->$PAIR); } 
   :set STAT [:pick [:tostr $STAT] ($PST2 + 1) 50] 
} 
# Etat normal : boucle sur la paire 3, la mesure de distance peut un peu fluctuer, il faut se donner
# de la marge, d'ou une distance comprise entre 4 et 6m. 
# Si le test n'est pas Ok, envoi d'un SMS d'alerte 
:if (($STAS->"p3" != $STATOK) || ($LENS->"p3" < $LENMIN) || ($LENS->"p3" > $LENMAX)) do={ 
   :set MSG ("Le chargeur Victron est en faute\nDatas : " . $STAS->"p3" . ", d=" . $LENS->"p3" . "m") 
   :if ($DEBUG = 0) do={ 
      :set PORT [/tool sms get port] 
      :if ([:len $NUMTEL] = 0) do={ 
         :set NUMTEL [/tool sms get allowed-number] 
      } 
     :do { 
         /tool sms send $PORT $NUMTEL message=$MSG 
     } on-error={ 
        :log error ("Alarme_Victron en envoi de SMS") 
     } 
     :log info ($MSG) 
  } else={ 
     :put ("Erreur : " . $MSG) 
  } 
}

Source Alarme_Victron.rsc.

Répondre

*