This page has been translated from Italian

rb750up Le Routerboard Mikrotik RB750UP est un routeur / commutateur 5 portes avec quelques fonctionnalités très agréable. En plus d'avoir dans les RouterOS, avec toutes ses caractéristiques étonnantes , possède aussi une particularité supplémentaire.

En plus d'être plug-in via POE (œil, passive et donc pas 802.3af) avec une puissance qui se trouve sur le câble LAN, a des portes qui sont de 2 à 5 ports POE injecteur qui est, à son tour, peut nourrir 4 équipements POE jusqu'à un maximum absorption pour le port 1 A.

Ceci, ajouté à la capacité de surveiller la consommation de courant de charge et la tension sur chaque port, ainsi que la possibilité de créer des scripts d'automatisation, le rend idéal pour les environnements où 220V n'est pas toujours disponible, comme exemple, sur les systèmes d'éclairage public.

Un RB750UP combiné avec un système de tampon de batteries permet, au besoin, pour désactiver n'importe quel équipement nécessaire pour augmenter la durée du temps de fonctionnement du système si la 220 n'est pas disponible pendant une longue période.

L'objectif de développement qui a été fait à la maison Micso par moi-même était de définir une tension de seuil des batteries et un Vbatalert Vbatoff et commencer les appareils alimentés par le RB750UP si la tension a été entre ces deux valeurs, ne laissant que RB750UP sur la tension valeurs inférieures à Vbatoff.

Voyons comment il a été conçu et développé cette solution en analysant en détail les deux scripts créés pour l'occasion d'arracher la logique de fonctionnement.

Le premier script appelé PoeControl, éteindre et allumer les ports Ethernet dell'RB750Up sur commande. Il reçoit

  • PoePort un paramètre qui indique le numéro du port du commutateur sur lequel vous souhaitez modifier le statut de POE, et si cette valeur est 0 (zéro), elle agit sur tous les ports,
  • PoeMode un paramètre qui peut être «auto-on" pour activer l'appareil connecté à ce port ou "off" pour désactiver
  • PoeDelay un paramètre de retarder les opérations sur les portes si PoePort est égal à 0.
:global PoePort
:global PoeMode
:global PoeDelay
:local ptr
:local from
:local to
:local step

Il parametro PoeDelay è utile, ad esempio, in fase di accensione delle porte in modo che gli apparati non vengono accesi tutti contemporaneamente ma con un ritardo di, ad esempio, 10 secondi l'uno dall'altro al fine di non avere picchi di corrente richiesti sulla batteria tampone.

Continuando l'analisi dello script vediamo che si verifica il valore di PoePort. Se esso è zero allora dobbiamo lavorare su tutte le porte. Se le dobbiamo accendere, le accenderemo dalle seconda alla quinta, se le dobbiamo spegnere, agiamo al contrario spegnendole dalla quinta alla seconda. Altrimenti, se PoePort è un valore ben definito, impostiamo from e to al numero della singola porta su cui agire.

 

:if ($PoePort=0) do={
:if ($PoePort=0) do={
  :if ($PoeMode="auto-on") do={
    :set from 2
    :set to 5
    :set step 1
  } else={
    :set from 5
    :set to 2
    :set step -1
  }
} else={
    :set from $PoePort
    :set to $PoePort
    :set step 1
}

A questo punto si cicla su tutte le porte dalla più bassa alla più alta o viceversa o sulla singola porta a seconda della logica sopra definita, e se lo stato della porta è differente da quello richiesto

:for ptr from=$from to=$to step=$step do={
    :if ([/interface ethernet poe get "ether$ptr" poe-out] != $PoeMode) do={

se le dobbiamo accendere

        :if ($PoeMode="auto-on") do={

prima, per un bug del sistema di rilevamento della portante sulla porta, per un paio di secondi, invece di metterla in auto, la forziamo come porta accesa

        /interface ethernet poe set "ether$ptr" poe-out=forced-on
  	    :delay 2s
	  }

poi o che sia auto-on o che sia off, operiamo il cambiamento sullo stato della porta, ne informiamo il log e, prima eventualmente di passare alla porta succesiva, aspettiamo qualche secondo definito dal parametro PoeDelay

	  /interface ethernet poe set "ether$ptr" poe-out=$PoeMode
      :log info "PoE on port ether$ptr switched $PoeMode"
      :if ($PoePort=0) do {
        :delay ($PoeDelay."s")
      }
    }
  }

A questo punto possiamo testare lo script da console, spegnendo tutte le porte

[admin@POE Test] > :global PoeMode "off"
[admin@POE Test] > :global PoeDelay 10
[admin@POE Test] > :global PoePort 0
[admin@POE Test] > :execute PoeControl

accendendone una

[admin@POE Test] > :global PoeMode "auto-on"
[admin@POE Test] > :global PoePort 2
[admin@POE Test] > :execute PoeControl

accendendole tutte

[admin@POE Test] > :global PoeMode "auto-on"
[admin@POE Test] > :global PoeDelay 10
[admin@POE Test] > :global PoePort 0
[admin@POE Test] > :execute PoeControl

Siamo a questo punto pronti per scrivere lo script che controllerà la tensione di rete e accenderà e spegnerà le porte all'occorrenza.

Come prima cosa la definizione delle variabili globali da usare con PoeControl e di quelle in uso in questo script, in particolare (in milliVolt)

  • la tensione massima Vbathigh che supponiamo sia quella presente quando l'impianto è alimentato a 220V e la batteria è carica,
  • la tensione da cui iniziamo a spegnere le cose (Vbatalert)
  • la tensione sotto la quale spegnamo tutti gli apparati a valle (Vbatoff).
:global PoePort
:global PoeMode
:global PoeDelay
:global Vbathight 247
:global Vbatalert 220
:global Vbatoff 200
:global Vprevious

recuperiamo inoltre la tensione di rete (Vsystem), il nome dell'apparato (SystemName), per i messaggi di log, e ci calcoliamo gli step su cui, per ogni Vrange di diminuzione di corrente, spegnamo una porta

:global Vsystem [/system health get voltage]
:local SystemName [/system identity get name]
:local Vrange (($Vbatalert-$Vbatoff)/4)
:local ptr

Inizializziamo Vprevious se non precedenemente valorizzata

:if ($Vprevious="") do={:set Vprevious $Vsystem}

e iniziamo a controllare la tensione. Se questa sta risalendo ed è addirittura vicina a quella massima prevista vuol dire che c'è corrente, che la batteria si sta ricaricando

:if (($Vsystem > $Vprevious) && (($Vbathight-$Vsystem) < 5)) do={

e allora mandiamo dei messaggi di log

  :local emessage ("Alert " .$SystemName. " voltage is " . [:pick $Vsystem 0 2] . "." . [:pick $Vsystem 2 3]."V")
  :log info $emessage
  :local emessage ("Voltage increased by " . ($Vsystem-$Vprevious) . "mV. Powering on all ports...")
  :log info $emessage

e accendiamo tutto, ricordando che se le porte sono già accese la chiamata allo script PoeControl non produrrà nessun effetto.

  :set PoePort 0
  :set PoeMode "auto-on"
  :set PoeDelay 10
  :execute PoeControl
  :set Vprevious $Vsystem

se invece la tesione sta scendendo

} else={
  :if ($Vsystem < $Vprevious) do={

oltre a i soliti messaggi di errore

    :local emessage ("Alert " .$SystemName. " voltage is " . [:pick $Vsystem 0 2] . "." . [:pick $Vsystem 2 3]."V")
    :log info $emessage
    :local emessage ("Voltage decreaded by " . ($Vprevious-$Vsystem) . "mV.")
    :log info $emessage

controlliamo in che range si trova la differenza tra la tensione attuale e quella di alert e sulla base del risultato

    :local portDown (6-(($Vbatalert-$Vsystem)/$Vrange))
    :if ($portDown<6) do={
      :if ($portDown<2) do={:set portDown 2}

spegnamo fino alla porta relativa

      :for ptr from=5 to=$portDown step=-1 do={
        :set PoePort $ptr
        :set PoeMode "off"
        :execute PoeControl
	:delay 10s
      }
    }
  }
  :set Vprevious $Vsystem
}

Come ciliegina sulla torta, conclude il tutto uno scheduler che richiama quest'ultimo script ogni due minuti

/system scheduler add interval=2m name=checkVoltageSchedule on-event=checkVoltage \
    policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api

Per provare il tutto, predisponiamo il seguente ambiente di test con

  • una RB750UP
  • due antenne radio Ubiquiti Nanostation M5 POE a simulare due link wireless collegate alla ether2 e ether3 dell'RB750UP
  • due telecamere IP POE in modalità day (quindi con led spenti) collegate alla ether4 e ether5 dell'RB750UP
  • due batterie 12V, 12 A in serie
  • un alimentatore UPS

e accendiamo il tutto. Questo qui sotto è il log risultante.

09:54:01 script,info Alert voltage is 24.0V
09:54:01 script,info Voltage decreaded by 8mV.
09:56:01 script,info Alert  voltage is 23.8V
09:56:01 script,info Voltage decreaded by 2mV.
10:02:01 script,info Alert voltage is 23.7V
10:02:01 script,info Voltage decreaded by 1mV.
10:06:01 script,info Alert voltage is 23.6V
10:06:01 script,info Voltage decreaded by 1mV.
10:18:01 script,info Alert voltage is 23.5V
10:18:01 script,info Voltage decreaded by 1mV.
10:22:01 script,info Alert  voltage is 23.5V
10:22:01 script,info Voltage decreaded by 1mV.
10:30:01 script,info Alert  voltage is 23.4V
10:30:01 script,info Voltage decreaded by 1mV.
10:34:01 script,info Alert voltage is 23.4V
10:34:01 script,info Voltage decreaded by 1mV.
10:38:01 script,info Alert voltage is 23.3V
10:38:01 script,info Voltage decreaded by 1mV.
10:40:01 script,info Alert voltage is 21.1V
10:40:01 script,info Voltage decreaded by 22mV.
10:40:01 script,info PoE on port ether5 switched off
10:40:01 interface,info ether5 link down
10:52:01 script,info Alert voltage is 21.3V
10:52:01 script,info Voltage decreaded by 1mV.
10:58:01 script,info Alert voltage is 21.3V
10:58:01 script,info Voltage decreaded by 1mV.
11:14:01 script,info Alert voltage is 21.2V
11:14:01 script,info Voltage decreaded by 1mV.
11:34:01 script,info Alert voltage is 21.1V
11:34:01 script,info Voltage decreaded by 1mV.
12:00:01 script,info Alert voltage is 21.0V
12:00:01 script,info Voltage decreaded by 1mV.
12:00:11 script,info PoE on port ether4 switched off
12:00:11 interface,info ether4 link down
12:24:01 script,info Alert voltage is 21.1V
12:24:01 script,info Voltage decreaded by 1mV.
12:32:01 script,info Alert voltage is 21.1V
12:32:01 script,info Voltage decreaded by 1mV.
13:44:01 script,info Alert voltage is 21.0V
13:44:01 script,info Voltage decreaded by 1mV.
15:08:01 script,info Alert voltage is 20.9V
15:08:01 script,info Voltage decreaded by 1mV.
15:52:01 script,info Alert voltage is 20.8V
15:52:01 script,info Voltage decreaded by 1mV.
17:02:39 script,info Alert Tossicia POE Test voltage is 24.3V
17:02:39 script,info Voltage increased by 1mV. Powering on all ports...
17:02:41 script,info PoE on port ether4 switched auto-on
17:02:44 interface,info ether4 link up (speed 100M, full duplex)
17:02:53 script,info PoE on port ether5 switched auto-on
17:02:57 interface,info ether5 link up (speed 100M, full duplex)

Come si vede, la tensione è iniziata a scendere, poi probabilmente per la poca carica delle batterie, ha avuto un tracollo alle 10:40 scendendo sotto la prima soglia e portandosi molto vicino alla seconda soglia.

Questo ha comportato lo spegnimento della telecamera sulla ether5. Quindi la tensione è continuata a scendere raggiungendo alle 12:00 la seconda soglia e ciò ha comportato lo spegnimento della seconda telecamera.

A questo punto, la tensione è rimasta praticamente stabile per tutto la durata del test in quanto l'assorbimento delle sole antenne di backbone era minimo.

Alle 17:02 si è deciso di interrompere il test ridando corrente all'impianto. Questo ha comportato l'immediato innalzamento della tensione ai valori massimi e il sistema ha riacceso le due telecamere spente in precedenza.

Questo qui sotto è il grafico della tensione in uscita durante l'esperimento dove si nota la caduta di tensione alle 10:40 e il relativo piccolo innalzamento temporano successivo dovuto alla diminuzione del carico. Stessa cosa si nota alle 12:00 quando è stata staccata la seconda telecamera.

Tension sur RB750UP

Questo qui invece è il grafico di assorbimento in milliAmpere delle singole porte. In verde scuro l'assorbimento della telecamera su ether5 spenta alle 10:40, in verde chiaro la telecamera spenta alle 12:00 e due tracce sovrapposte in rosso e bordeaux delle due antenne. In arancione il carico totale prodotto da tali apparati. RB750UP actuelle sur Quello che segue è invece l'andamento della tensione per tutta la durata del test fino al rispristino della 220V

RB750UP tension sur (total)

Insomma, un bel prodottino che, in poco spazio, permette di alimentare 4 apparati POE e monitorare le tensioni e le correnti fornite.

Questo articolo è stato visto 68 volta

Lascia un commento

 

Questo articolo è stato visto 68 volta

Lascia un commento