Varianta teploměru TM vhodná přímo pro RouterBOARDy Mikrotik. Teploměr se připojuje přímo k sériovému portu RouterBoardu ze kterého je i napájen. Možnost měření dvou teplot nebo sledování stavu spínacího kontaktu.
Varianta teploměru TM Mikrotik vychází ze standardního sériového teploměru TM.
Vlastnosti teploměru pro Mikrotik

- Teploměr pro RouterBoardy Mikrotik.
- Napájení přímo z COM portu RouterBoardu - extrémně nízká spotřeba.
- Integrovaný teplotní senzor.
- Externí vstup: Pro druhý teplotní senzor nebo pro sledování stavu kontaktu.
- Externí senzor na kabelu délky až 20 metrů.
- Po zapnutí teploměr posílá aktuální údaje (teploty a stav kontaktu) do RouterBoardu jednou za 10 sec.
- Komunikační rychlost 9,6 kBd nebo 115,2 kBd.
- Měření teploty ve stupních Celsia nebo ve Fahrenheitech.
- Možnost připojení externího napájení.
- Možnost připojené sériové linky nestandardním kabelem.
- Rozsah měřených teplot: -55 až +125 °C, rozlišení 0,1 °C
- Rozsah pracovních teplot elektroniky: -20 až +70 °C
- Teploměr je součástí programu Made for Mikrotik - získali jsme označení MikroTik Certified Integrators.
- Tento teploměr nahrazuje předchozí verzi, kterou až do vyprodání skladu najdete ve Výprodeji.
Použití teploměru
- Pro připojení k RouterBOARDu Mikrotik
Teploměr připojený k RouterBoardu RB411 (kliknutím lze zvětšit)
Přenos a publikování teploty na webový server
Následující návod je ukázkou jak je možné TM Mikrotik použít k odesílání teploty na server a zobrazit ji v grafu. Autorem návodu i skriptů je lwq.cz. Děkujeme za spolupráci.
Příklad teploty měřené TM Mikrotik, připojeným k RouterBoardu - online na teploty.lwq.cz/hostivar
Obecný postup, aneb Co je potřeba?
- Mít RouterBoard s RS232 nebo PC s nainstalovaným RouterOS verze 4.x a novější (testováno na verzi 5.9 na RB411U).
- TM_Mikrotik je třeba správně nastavit pomocí jumperu dle dokumentace teploměru.
- Po připojení teploměru k RS232 by měla být činnost signalizována pomocí příslušné kontrolky.
- Pro připojení teploměru je potřeba použít neobsazený RS232 (tedy port, který není softwarově využitý). Jelikož běžné RB typu 411 mají například jen jeden RS232 a na ten je v základu nasměrovaná systémová konzole, je potřeba konzoli vypnout.
- Následně se nastaví remote-access s logováním pro serial0 a příslušné skripty.
- Na server v Internetu se přes FTP nahrává datový soubor a druhý skript v RB dává skriptu na serveru pokyn ke zpracování dat.
- Data jsou uložena do MySQL databáze a poté prezentována - to vše například v aplikaci multi.tricker.cz
Konkrétní postup nastavení RouterOS na RouterBoardu:
Níže uvedené skripty je nutné provádět buď přes ssh/telnet a nebo terminál RouterBoardu. Je možné je i "naklikat", ale může při tom snadněji dojít k chybnému zadání.
- Vypnutí systémové konzole na serial0 (při /system console print je serial0 číslo 0):
/system console set 0 disabled="yes"
- Nastavení remote-access možnosti na serial0 s logováním provozu. Jde o malou "berličku" jak obejít omezení RouterOS v nakládání s daty z RS232:
/port remote-access add allowed-addresses=0.0.0.0/0 channel=0 disabled="no" log-file="tm.dat" port="serial0" protocol="raw" tcp-port=0
- Vytvoření dvou pravidelně spouštěných úloh:
První skript - spouštění jednou za den
První obsluhuje vypnutí remote-access na port teploměru, smazání datového souboru a znovu spuštění logování. Spouští se jednou za den. Lze častěji, ale význam to má jen u velmi pomalých datových linek. Jde o odesílání jednoho souboru o maximální velikosti do 150kB, který se za den naloguje (velikost postupně roste - přenos největších souborů je v noci, tedy při nejmenším vytížení Internetu). Při častějším spouštění by byl přenášený soubor menší, ale zase by se více plnil log na RouterBoardu a více se zapisovalo do nastavení. Oprávnění jsou nastavena na nejmenší nutná pro fungování.
02 |
add disabled= no interval=1d name=Refresh_TM on-event="/port remote-access set 0 d\ |
07 |
\n/file remove tm.dat\r\ |
11 |
\n/port remote-access set 0 disabled= no " policy=\ |
12 |
read , write ,test start-date=mar/27/2012 start- time =01:00:03 |
Druhý skript - spouštění např. jednou za minutu
Druhý skript má na starosti pravidelné odesílání dat například každou minutu, přes FTP na vzdálený server a poté spuštění zde umístěného skriptu pro zpracování dat (vložení do MySQL atd.):
02 |
add disabled= no interval=1m name=Send_TM on-event="/tool fetch mode=\"ftp\" \ |
03 |
address=\"ftp.example.com\" user=\"user_tm\" password=\"tm_user_pwd\" src-pat\ |
04 |
h=\"tm.dat\" dst-path=\"tm_factory0086.dat\" upload=\"yes\" ascii=\" no \" keep\ |
10 |
hp\? do =factory0086\ " keep-result=\"no\"" policy=\ |
11 |
ftp, read , write ,test start-date=mar/27/2012 start- time =23:03:57 |
Nyní máme nastaveno odesílání dat z RouterBoardu a na serveru je možné jejich další zpracování.
Zpracování teplot z RouterBoardu na serveru
V níže uvedeném příkladu implementace je využita upravená aplikace TMEP 4.2, která zpracovává data z teploměru. Příklad skriptu maker.php:
<?php
//"factory0086" is unique ID of each TM_Mikrotik (security reasons etc.)
if ($_GET["do"] == "factory0086") {
$aFile = @file("./tm_hostivar.dat"); //change path to *.dat file if you need so
if (count($aFile) > 1) { // something wrong ? do nothing
// go line by line (here you can add much more useful cmds)
for ($i = 0; $i < count($aFile); $i++) {
// ignore lines shorter then 5 chars (+5.5C is needed minimum)
if (strlen($aFile[$i]) < 4) continue;
$aTMP = explode(";", trim($aFile[$i])); // trim off useless chars etc.
// make array of LAST measured temperatures (converted to valid float values)
$aTemp = array("temp_1" => floatval(substr($aTMP[0], 0, strlen($aTMP[0])-1)), "temp_2" => floatval(substr($aTMP[1], 0, strlen($aTMP[1])-1)));
}
// the URL for TMEP 4.2 input file
$sUrl = "http://temp.example.com/index.php?temp_factory0086=";
// a little of debug response (to receive this on Mikrotik, you would need to change keep-result to "yes" at fetch http command
?>
<html>
<body><?php echo "Success ! (".$aTemp["temp_2"]."C)"; ?></body>
</html>
<?php
@file($sUrl.$aTemp["temp_2"]); // call input file of TMEP 4.2
};
} else {
// security feature - if is this script called by browser or some unexpected way then redir to some web starts
Header("Location: http://temp.example.com/", TRUE, 301);
};
?>
Získání aktuálních měřených hodnot ze souboru s logem
Následující skript umožňuje ze souboru s logem hodnot získat aktuální měření jako proměnné. S těmi se dá dále pracovat a například je vyhodnotit a odeslat případně hlášení o překročení teploty nebo sepnutí kontaktu. Skript je z fóra Mikrotiku zde.
:global content [/file get [/file find name=tm.txt] contents] ;
:global contentLen [ :len $content ] ;
:global lineEnd 0;
:global line "";
:global lastEnd 0;
:do {
:set lineEnd [:find $content "\n" $lastEnd ] ;
:set line [:pick $content $lastEnd $lineEnd ] ;
:set lastEnd ( $lineEnd +2 ) ;
:global entry [:pick $line 0 $lineEnd ]
} while ($lastEnd < ( $contentLen -2 ) )
:log info [:pick $line 2 7 ]
:log info [:pick $line 8 ]
Katalogový list teploměru TM pro Mikrotik.
Velikost souboru: 161,05 kB
Datum: 22.11.2011
Stáhnout