Stránka 1 z 2

Mikrotik sms pri výpadku

Napsal: 24 Nov 2018 20:17
od pavelsiman
Zdravím .

Potreboval by som poradiť ako by mal vyzerať skript na mikrotik aby pri poklese napájania poslalo cez usb modem sms a pri obnovení poslalo ďalšiu sms . posielanie smsm už mám odskúšané ale pokiaľ poklesne napájanie posiela sms stále keď sa spustí script ja potrebujem aby pri zmene poslalo len jednu sms .

Vopred Ďakujem

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 08:50
od mirek.k
V rámci scriptu "pokles" je možné nastavit nějakou proměnnou a posílat jen pokud není nastavena.
A v "obnovení" pak tu proměnou resetovat.

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 09:00
od okoun
pozor pokud bude sms hodně tak operátoři i když máš neomezené smsky to velmi neradi vidí a najendou zjistíš že neomezené sms nejsou neomezené :D

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 09:08
od pavelsiman
Pôjde to ku známemu a on ma firemné paušály. Otestované na čínskom alarme 2000 sms za noc. Nevie niekto poradiť ako by mal vyzerať ten skript?

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 09:37
od funny102
Niečo ako toto, len je potrebne upraviť. No podmeinka je tam. Miesto emailu daj sms a miesto status portu monitoruj čo je potrebné.

:global oldStatus
/interface ethernet monitor ether1 once do={
# $status -> no-link, link-ok
:if ( $status != $oldStatus ) do={
:if ( $status = "link-ok" ) do={
/tool e-mail send to="xxxx@gmail.com" subject="port je aktivni" body="";
} else {
/tool e-mail send to="xxxx@gmail.com" subject="port je neaktivni" body="";
}
:set oldStatus $status;
}
}

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 11:50
od mpcz
Našel jsem rozpracovaný skript z vývoje několik let starý (ale funkční na 6.42.5 - ověřeno) z baterie 12V. Polovina řádků je tam navíc, což je při vývoji běžné u začátečníků, ale není problém je zaremovat.
Co je pro tebe v tuto chvíli důležité, je vidět princip blokace trvalého odesílání postavením flagu (proměnné "vypadek"). Odesílání je emailem, protože na všech malých bodech je zbytečné udržovat a platit GSM šulek. V průběhu mnoha let provozu se ukázalo, že i odeslání emailem plně vyhovuje svou rychlostí, pokud se vybere dobrý poskytovatel. Varianty "neomezených" SMS bych se rozhodně v tomto případě neobával, není pro to jediný důvod. Mnoho let odesílám na větších bodech hromady dat po SMS a zatím s tím nebyl nejmenší problém (OSKAR).
Ve skriptu se dá udělat jednoduše i korekce zobrazení napětí, pokud RB ukazuje s odchylkou od skutečnosti.
Záměna řádku pro odeslání po GSM je jednoduchá, příklad:

:if ([/ping 192.168.0.248 count=6 ] = 0) \
do={\
tool sms send usb channel="0" phone-number=+420774xxxxxx message=("" . [/system clock get time] . "- no ping!-0.248 BATERIE") }

V šeduleru si pak ten skript spouštíš v periodě, které ti bude pasovat.
mpcz, 25.11.2018

# uuu-smtp.volny.cz
/log info ("skript START: ". [/system health get voltage]." V")
:global vypadek
:global email "xxxxxxxx@volny.cz"
:global nn [/system health get voltage]
:global nnn ($nn/10)
:global vvv (nn."@192.168.0.25.xxxxxxx.cz")
:global vvv ([/system health get voltage] . "@192.168.0.25.xxxxxxxx.cz")

:global napeti "120"
:global napetiOK "123"
# hranice porovnani je 120 , napeti je v prumeru 12.9V

:if ( [/system health get voltage] < $napeti ) do={
set vypadek "1"
/log info $vypadek
tool e-mail
#set address=xxxxxxxxxxxxxxx
set address=smtp.xxxxxxxxxxxxx.cz
# smtp.xxxxxxxxxxxxxx.cz
set port=25
set from=xxxxxxxxxxxxx@volny.cz
set user=xxxxxxxxx@volny.cz
set password=xxxxxxxxxx
send to="xxxxxxxxxxx@volny.cz" subject=([/system identity get name]."-".[/system clock get date]."-".[/system clock get time]."=".$nn." V - EON KO") start-tls=yes
/log info ("e-mail odeslan - napeti je KO:".$vvv)
}

:if ( ( [/system health get voltage] > $napeti ) && ( vypadek = "1") ) do={
set vypadek "0"
/log info $vypadek
tool e-mail
#set address=xxxxxxxxxxxxxxx
set address=smtp.xxxxxxxxxxx.cz
# smtp.sloane.cz
set port=25
set from=xxxxxxxxxxx@volny.cz
set user=xxxxxxxxxxxx@volny.cz
set password=xxxxxxxxxxx
send to="xxxxxxxxxxxx@volny.cz" subject=([/system identity get name]."-".[/system clock get date]."-".[/system clock get time]."=".$nn." V - EON OK") start-tls=yes
/log info ("e-mail odeslan - napeti je OK:".$vvv)
}

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 12:55
od milan.zelina
Od hapi na ISPForum.cz:
-----------------------
(7.9.2009)

včera mě napadla jedna věc a tak vám jí přináším. RB433AH umí měřit napětí na napájení tak proč toho nevyužít.
Vtip je v tom, že pokud člověk má někde například záložní zdroj od flajzara nebo emka, nebo nějaký jiný
kde s vybíjející se baterií klesá napětí, jde podle toho nastavit chování a tim pádem i sledování stavu baterie.

Měření napětí tušim funguje i u RB333, RB600 a RB433AH. Pozná se podle toho, že použijete script na vyčítání napětí
a bude tam něco kromě 0V.

Script sleduje napětí na napájení a podle toho provádí jednotlivé úkony. Např: pokud jde elektřina, napětí je
maximální možné, v případě 12V záložních zdrojů 13.5-13.8. Pokud ale elektřina nejde, nedozvíme se o tom a pak
za pár hodin podlehne i záloha. Ovšem při přepnutí na zálohu klesne napětí a to klidně i o 0,5V a toho využijem.

Ve scriptu se dá nastavit napětí této hranice, hranice před vybitím baterie, čas spoždění a pípání RBčka jako UPS zdroje.

Jaké hodnoty doplnit?

vTime (1-...) udává počet minut do nějaké akce při změně. Např: když se přepne na napájení z baterie tak za minutu se pošle mail (sms).
vBeep (0,1) zapne nebo vypne pípání při výpadku elektřiny.
vNormal udává hranici nad kterou je napájení v pořádku, jde o hodnotu napětí vynásobenou x10 (13.7V je 137)
vLow udává hranici pod kterou je už baterie téměř vybitá, jde o hodnotu napětí vynásobenou x10 (13.7V je 137)

Jak postupovat při nastavování správné hodnoty u napětí (vNormal, vLow)

Nejlépe je provádět nastavování při finální instalaci kdy už máme napájecí kabely tak dlouhé jak potřebujem a tedy úbytky
napětí už jsou konečné. Zapneme vše, i záložní zdroj připojíme do elektřiny tak, aby na napájení bylo maximální možné napětí.
Vyčteme hodnotu napětí v mikrotiku a odečteme od ni 0,3V (script na vyčtení napětí, klikací system healt neobnovuje údaje,
aspoň v v3.28 to nedělal). Tuto hodnotu dosadíme do vNormal. Timto jsme nastavili hranici kdy elektřina funguje a napájeni
neprobíhá z baterií.

Script umožňuje ještě nastavení hranice, pod kterou už v baterii nezbývá moc kapacity. Nejlépe je možné toto vyzkoušet tak,
že vypnete elektřinu a počkáte na hodnotu napětí která je naposledy vidět než se odpojí baterie a k ní přičtete 0,3V.
Druhý způsob je, že pokud máme 12V baterii a víme, že plně nabitá baterie má 13.7V a mikrotik ukazuje například 13.5V
(úbytky v napájecí cestě nebo nepřesnost měření), můžeme při 11V vyvolat akci (poslat email o tom, že brzo dojde k odpojení bateri
z důvodu vybití) a ve scriptu jako hodnotu doplníme 108 (10.8V). 0.2V rozdílu (13.7-13.5). Druhý způsob lze použít za předpokladu,
že zdroj nepodpojí baterii dříve než při poklesu pod 11V. Většinou zdroje odpojují baterii až pod 10.8V takže by to neměl být problém.
Pokud nechcete tuto funkci použít, nastavte hodnotu na 001.

Script je nastaven tak, že pokud je napájení v pořádku po dobu 2 minut (dvojnásobek hodnoty vTime), vypíše do logu "napájení v pořádku".
Pokud dojde k výpadku, tak za hodnotu u vedenou ve vTime (aktuálně tedy na minutu) pošle email (aktálně zakázán znakem # na začátku řádky).
Pokud napětí na baterii klesne pod vLow, tak se pošle ihned varovný email a do logu se sázeji hlášky po 10 sekundách.
Pokud dojde k nahození elektřiny, tedy napětí stoupne nad vNormal, hláška do logu o napájení se háže lo 120 sekundách a odkomentování
řákdy se i pošle mail o stavu.

script na vyčítání hodnoty napětí z terminalu:

Kód: Vybrat vše

:while (true) do={:put [/system health get voltage]; :delay 1;}


samotný script:

Kód: Vybrat vše

:global vTime "1";
:global vBeep "1";
:global vNormal "279";
:global vLow "261";

:global mailNormal "0";
:global mailBat "0";
:global mailLow "0";
:global mailSendedNormal "1";
:global mailSendedBat "0";
:global mailSendedLow "0";
:global vLoopNormal "10";
:global vLoopBat "0";
:global vLoopLow "0";

:while (true) do={
:global voltage [/system health get voltage];

:if ($voltage >= $vNormal) do={
    :if ($vLoopNormal = 10) do={
### rychly zapis do logu pri nahozeni elektriny
        :log info "napajeni v poradku";
###
        :beep frequency=1200; :delay 50ms; :beep frequency=1500;
    }
    :if ($vLoopNormal > (120 * $vTime)) do={
        :if ($mailSendedNormal = "0") do={
            :set mailSendedNormal "1";
### akce za interval uvedeny v vTime x 2 pri zapnuti elektriny
#            /tool e-mail send to="email@email.cz" body="napajeni v poradku";
###
        }
### zapis do logu za interval uvedeny v vTime pri zapnute elektrine
        :log info "napajeni v poradku";
###
        :set vLoopNormal "10";
    }
} else={
            :set vLoopNormal "0";
            :set mailSendedNormal "0";
}

:if ($voltage < $vNormal && $voltage > $vLow) do={
    :if ($vLoopBat = 10) do={
### rychly zapis do logu pri prepnuti na baterii
        :log info "napajeni z baterie";
###
    }
    :if ($vLoopBat > (60 * $vTime)) do={
        :if ($mailSendedBat = "0") do={
            :set mailSendedBat "1";
### akce za interval uvedeny v vTime pri prepnuti na baterii
#            /tool e-mail send to="email@email.cz" body="napajeni z baterie";
###
        }
### zapis do logu za interval uvedeny v vTime pri zapnute elektrine
#        :log info "napajeni z baterie";
###
        :set vLoopBat "10";
    }
    :if ($vBeep = "1") do={:beep frequency=1500 length=3;}
} else={
            :set vLoopBat "0";
            :set mailSendedBat "0";
}

:if ($voltage <= $vLow) do={
    :if ($vLoopLow > (1 * $vTime)) do={
        :if ($mailSendedLow = "0") do={
            :set mailSendedLow "1";
### akce za interval uvedeny v vTime pri nizkem napeti baterie
#            /tool e-mail send to="email@email.cz" body="napajeni z baterie - nizke napeti";
###
        }
        :set vLoopLow "10";
    }
### zapis do logu kazdych 10 sekund
#    :log info "napajeni z baterie - nizke napeti";
###
    :if ($vBeep = "1") do={:beep frequency=4000 length=3;}
} else={
            :set mailSendedLow "0";
            :set vLoopLow "0";
}

:set vLoopNormal ($vLoopNormal + 10);
:set vLoopBat ($vLoopBat + 10);
:set vLoopLow ($vLoopLow + 10);
:delay 10;
}

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 14:29
od KoZLiCeK
ispadmin to ma uz resene v sobe, takze kdo ma admina tak nemusi resit na kazdym mk scripty.

Re: Mikrotik sms pri výpadku

Napsal: 25 Nov 2018 15:51
od mpcz
Ještě jsem si vzpoměl, že po zkušenosti s přebitím baterie jsem do skriptu dodával test a email/SMS na U>28V. mpcz, 25.11.2018

Re: Mikrotik sms pri výpadku

Napsal: 16 Dec 2018 11:15
od basty
milan.zelina píše:Od hapi na ISPForum.cz:
-----------------------
(7.9.2009)

včera mě napadla jedna věc a tak vám jí přináším. RB433AH umí měřit napětí na napájení tak proč toho nevyužít.
Vtip je v tom, že pokud člověk má někde například záložní zdroj od flajzara nebo emka, nebo nějaký jiný
kde s vybíjející se baterií klesá napětí, jde podle toho nastavit chování a tim pádem i sledování stavu baterie.

Měření napětí tušim funguje i u RB333, RB600 a RB433AH. Pozná se podle toho, že použijete script na vyčítání napětí
a bude tam něco kromě 0V.

Script sleduje napětí na napájení a podle toho provádí jednotlivé úkony. Např: pokud jde elektřina, napětí je
maximální možné, v případě 12V záložních zdrojů 13.5-13.8. Pokud ale elektřina nejde, nedozvíme se o tom a pak
za pár hodin podlehne i záloha. Ovšem při přepnutí na zálohu klesne napětí a to klidně i o 0,5V a toho využijem.

Ve scriptu se dá nastavit napětí této hranice, hranice před vybitím baterie, čas spoždění a pípání RBčka jako UPS zdroje.

Jaké hodnoty doplnit?

vTime (1-...) udává počet minut do nějaké akce při změně. Např: když se přepne na napájení z baterie tak za minutu se pošle mail (sms).
vBeep (0,1) zapne nebo vypne pípání při výpadku elektřiny.
vNormal udává hranici nad kterou je napájení v pořádku, jde o hodnotu napětí vynásobenou x10 (13.7V je 137)
vLow udává hranici pod kterou je už baterie téměř vybitá, jde o hodnotu napětí vynásobenou x10 (13.7V je 137)

Jak postupovat při nastavování správné hodnoty u napětí (vNormal, vLow)

Nejlépe je provádět nastavování při finální instalaci kdy už máme napájecí kabely tak dlouhé jak potřebujem a tedy úbytky
napětí už jsou konečné. Zapneme vše, i záložní zdroj připojíme do elektřiny tak, aby na napájení bylo maximální možné napětí.
Vyčteme hodnotu napětí v mikrotiku a odečteme od ni 0,3V (script na vyčtení napětí, klikací system healt neobnovuje údaje,
aspoň v v3.28 to nedělal). Tuto hodnotu dosadíme do vNormal. Timto jsme nastavili hranici kdy elektřina funguje a napájeni
neprobíhá z baterií.

Script umožňuje ještě nastavení hranice, pod kterou už v baterii nezbývá moc kapacity. Nejlépe je možné toto vyzkoušet tak,
že vypnete elektřinu a počkáte na hodnotu napětí která je naposledy vidět než se odpojí baterie a k ní přičtete 0,3V.
Druhý způsob je, že pokud máme 12V baterii a víme, že plně nabitá baterie má 13.7V a mikrotik ukazuje například 13.5V
(úbytky v napájecí cestě nebo nepřesnost měření), můžeme při 11V vyvolat akci (poslat email o tom, že brzo dojde k odpojení bateri
z důvodu vybití) a ve scriptu jako hodnotu doplníme 108 (10.8V). 0.2V rozdílu (13.7-13.5). Druhý způsob lze použít za předpokladu,
že zdroj nepodpojí baterii dříve než při poklesu pod 11V. Většinou zdroje odpojují baterii až pod 10.8V takže by to neměl být problém.
Pokud nechcete tuto funkci použít, nastavte hodnotu na 001.

Script je nastaven tak, že pokud je napájení v pořádku po dobu 2 minut (dvojnásobek hodnoty vTime), vypíše do logu "napájení v pořádku".
Pokud dojde k výpadku, tak za hodnotu u vedenou ve vTime (aktuálně tedy na minutu) pošle email (aktálně zakázán znakem # na začátku řádky).
Pokud napětí na baterii klesne pod vLow, tak se pošle ihned varovný email a do logu se sázeji hlášky po 10 sekundách.
Pokud dojde k nahození elektřiny, tedy napětí stoupne nad vNormal, hláška do logu o napájení se háže lo 120 sekundách a odkomentování
řákdy se i pošle mail o stavu.

script na vyčítání hodnoty napětí z terminalu:

Kód: Vybrat vše

:while (true) do={:put [/system health get voltage]; :delay 1;}


samotný script:

Kód: Vybrat vše

:global vTime "1";
:global vBeep "1";
:global vNormal "279";
:global vLow "261";

:global mailNormal "0";
:global mailBat "0";
:global mailLow "0";
:global mailSendedNormal "1";
:global mailSendedBat "0";
:global mailSendedLow "0";
:global vLoopNormal "10";
:global vLoopBat "0";
:global vLoopLow "0";

:while (true) do={
:global voltage [/system health get voltage];

:if ($voltage >= $vNormal) do={
    :if ($vLoopNormal = 10) do={
### rychly zapis do logu pri nahozeni elektriny
        :log info "napajeni v poradku";
###
        :beep frequency=1200; :delay 50ms; :beep frequency=1500;
    }
    :if ($vLoopNormal > (120 * $vTime)) do={
        :if ($mailSendedNormal = "0") do={
            :set mailSendedNormal "1";
### akce za interval uvedeny v vTime x 2 pri zapnuti elektriny
#            /tool e-mail send to="email@email.cz" body="napajeni v poradku";
###
        }
### zapis do logu za interval uvedeny v vTime pri zapnute elektrine
        :log info "napajeni v poradku";
###
        :set vLoopNormal "10";
    }
} else={
            :set vLoopNormal "0";
            :set mailSendedNormal "0";
}

:if ($voltage < $vNormal && $voltage > $vLow) do={
    :if ($vLoopBat = 10) do={
### rychly zapis do logu pri prepnuti na baterii
        :log info "napajeni z baterie";
###
    }
    :if ($vLoopBat > (60 * $vTime)) do={
        :if ($mailSendedBat = "0") do={
            :set mailSendedBat "1";
### akce za interval uvedeny v vTime pri prepnuti na baterii
#            /tool e-mail send to="email@email.cz" body="napajeni z baterie";
###
        }
### zapis do logu za interval uvedeny v vTime pri zapnute elektrine
#        :log info "napajeni z baterie";
###
        :set vLoopBat "10";
    }
    :if ($vBeep = "1") do={:beep frequency=1500 length=3;}
} else={
            :set vLoopBat "0";
            :set mailSendedBat "0";
}

:if ($voltage <= $vLow) do={
    :if ($vLoopLow > (1 * $vTime)) do={
        :if ($mailSendedLow = "0") do={
            :set mailSendedLow "1";
### akce za interval uvedeny v vTime pri nizkem napeti baterie
#            /tool e-mail send to="email@email.cz" body="napajeni z baterie - nizke napeti";
###
        }
        :set vLoopLow "10";
    }
### zapis do logu kazdych 10 sekund
#    :log info "napajeni z baterie - nizke napeti";
###
    :if ($vBeep = "1") do={:beep frequency=4000 length=3;}
} else={
            :set mailSendedLow "0";
            :set vLoopLow "0";
}

:set vLoopNormal ($vLoopNormal + 10);
:set vLoopBat ($vLoopBat + 10);
:set vLoopLow ($vLoopLow + 10);
:delay 10;
}



Ten skript ma psat kazdych 10s do logu ze napeti je v poradku? Kdyz jsem to simuloval, tak ze pri napeti z baterie to tam nepsalo porad dokola...

Re: Mikrotik sms pri výpadku

Napsal: 16 Dec 2018 13:54
od milan.zelina
Nevim, co ti brání si to upravit.
Každopádně to byla pouze citace příspěvku od uživatele jménem hapi.
Já to s používám pro sebe a je to fajn.
MZ

Re: Mikrotik sms pri výpadku

Napsal: 16 Dec 2018 14:17
od basty
Však nic neříkám je to super nápad a skript, jen se ptám to tak má být....

Re: Mikrotik sms pri výpadku

Napsal: 16 Dec 2018 14:20
od ludvik
Abych pravdu řekl, nevím co máš za problém. V logu jsou informace o správném napětí. Informace o napájení z baterie tam jsou zakomentované.

Re: Mikrotik sms pri výpadku

Napsal: 16 Dec 2018 14:28
od basty
Resim to, že když je normal (což je skoro porad), tak co každých 10s se vypisuje do logu hláška napětí ok... Což mi přijde zbytečné, zaplňuje to log a přepisuje jiný důležitější logy. Možná i když budu brát opotřebování NAND paměti při použití logovani na disk tak je to na škodu....

Ale zase, jen se ptám...

Re: Mikrotik sms pri výpadku

Napsal: 16 Dec 2018 14:42
od ludvik
Kanál na začátku řádku (#) je komentář. Buď si řádky :log info zakomentuj, nebo odkomentuj ...