TAS:esempi
Townet Alerting System : Esempi
Invio messaggio di Alert con Mirotik RouterOS
In questo esempio è riportato uno script che invia un messaggio ogni volta che la CPU sale oltre una certa soglia. Il messaggio non viene mandato in modo ripetuto se il valore persiste oltre la soglia ed è resettato qualora scende.
- global TASList MyList
- global TASAddress https://iot.mywaver.it/townetalert/message/
- global MessageSent;
/system resource
- global CPULoad ([get cpu-load]);
- if ($CPULoad > 50) do={
:if ($MessageSent = 0) do={
:local MessageToSend "CPU Load Over Limits";
:local Severity 2;
:local MessageEncoded
:for i from=0 to=([:len $MessageToSend] - 1) do={ :local char [:pick $MessageToSend $i] :if ($char = " ") do={ :set $char "%20" } :if ($char = "-") do={ :set $char "%2D" } :set MessageEncoded ($MessageEncoded . $char) }
:local url ($TASAddress."\?list=".$TASList."&message=".$MessageEncoded."&severity=".$Severity);
:put $url;
/tool fetch url=$url dst-path=TAS.txt; :set MessageSent 1; } } else={ :set MessageSent 0; }
- put $CPULoad;
- put $MessageSent;
Esempio di invio alert utilizzando la funzionalità Netwatch di Mikrotik
Host: [ip dell'host da controlare] Interval: 00:05:00 Timeout: 1000
UP
/tool fetch dst-path=netwatch.txt http-data="{\"message\":\"Telecamera up\",\"list\":\"ListaTEST\"}" url=https://iot.mywaver.it/townetalert/message/
DOWN
/tool fetch dst-path=netwatch.txt http-data="{\"message\":\"ATTENZIONE! Telecamera Down\",\"list\":\"ListaTEST\"}" url=https://iot.mywaver.it/townetalert/message/
Invio di un messaggio con Node-Red
Se nella rete sotto monitoraggio è presente un Control-Node basato su Node-Red il seguente esempio riporta come effettuare l'invio di un messaggi oalla cloudutilizzando un pulsante di iniezione.
Esempio completo
questo nodo permette di inizializzare il processo.
Nel nostro esempio è più che sufficente l'implementazione base con l'innesco eseguito ad ogni click. E' ovvio che in un ambiente di produzione dovremo prevedere un controllo ciclico di altra natura.
Questo nodo è usato per estrarre il timestamp dal nodo precedente e preparare la chiamata verso il server IoT.
Fare attenzione a come è composto il payload
var NewPayLoad = {"message":Message, "list":"townet12345"};
Che contiene il messaggio da inviare e il nome della lista a cui recapitare il messaggio.
Questo nodo effettua la chiamata vera e propria al server passando il contenuto del payload.
Il risultato dell'operazione può essere passato ad un nodo di debug per essere ispezionato.