Stránka 1 z 4

Návod - Měření teploty na Mikrotiku

Napsal: 18 May 2008 16:17
od hafieror
Ná základě diskuze viewtopic.php?f=7&t=1721&p=10209&hilit=m%C4%9B%C5%99en%C3%AD+teploty#p10209
nasměrování od kamarádů se mě podařilo udělat funkční řešení, jak dostat do grafu průběh teplot z teploměru pro seriový port http://www.papouch.com/shop/scripts/_de ... cislo=0038

Netvrdím, že moje řešení je nějaké ideální, ale funguje. Tak předem prosím rýpaly, co tu začnou vykřikovat, že je to blbě napsaný, ať buď ukáží svoji funkční verzi, nebo mlčí. Vyčítání funguje pouze z PC, z rb133 nefunguje viz diskuze uvedená výše a jinde jsme to zatím nezkoušel.

Pro vyčítání budete potřebovat linuxovej stroj s nainstalovaným expect, rrdtool, librrds-perl a 2 skripty:

hafi_temp_dw.sh

Kód: Vybrat vše

#!/usr/bin/expect
set username [lindex $argv 1]
set password [lindex $argv 2]
spawn telnet [lindex $argv 0]
expect "Login:"
send "$username\r"
expect "Password:"
send "$password\r"
expect "> "
send "/system serial-terminal serial0\r"
expect "+"
set timeout 5000
send \001
expect " "
send \0121


a rrd_logger.pl (co dělá tento soubor se mě neptejte, ten je staženej někde z netu a lehce upravenej)

Kód: Vybrat vše

#!/usr/bin/perl
#
use RRDs;

sub CreateGraph
{

        my $rrd = $_[1];
        my $img = $_[2];

        RRDs::graph "$img/logger-$_[0].png",
                "--lazy",
                "-s -1$_[0]",
                "-t Leiden temperature ",
                "-h", "200", "-w", "600",
                "-a", "PNG",
                "-v degrees C",

                "DEF:intemp=$rrd/logger.rrd:in-temp:AVERAGE",
                "LINE2:intemp#FF0000:Room    Temperature",
                "GPRINT:intemp:MIN:  Min\\: %2.lf",
                "GPRINT:intemp:MAX: Max\\: %2.lf",
                "GPRINT:intemp:AVERAGE: Avg\\: %4.1lf",
                "GPRINT:intemp:LAST: Current\\: %2.lf degrees C\\n";


        if ($ERROR = RRDs::error) { print "$0: unable to generate $_[0] graph: $ERROR\n"; }
}

# location of rrdtool databases
my $rrd = '/var/www/temp';
# location where the images should go
my $img = '/var/www/temp';

my $tempIN  = `/usr/local/bin/hafi_temp_dw.sh ip_adresa username heslo | grep + | cut -d C -f 1`;
print $tempIN;
chop($tempIN);
# if rrdtool database doesn't exist, create it
if (! -e "$rrd/logger.rrd")
        {
                print "creating rrd database ...\n";
                RRDs::create "$rrd/logger.rrd",
                        "-s 300",
                        "DS:in-temp:GAUGE:600:-20:100",
#                       "DS:out-temp:GAUGE:600:-20:100",
                        "RRA:AVERAGE:0.5:1:576",
                        "RRA:AVERAGE:0.5:6:672",
                        "RRA:AVERAGE:0.5:24:732",
                        "RRA:AVERAGE:0.5:144:1460";
        }
# insert value into rrd
RRDs::update "$rrd/logger.rrd", "-t", "in-temp", "N:$tempIN";
if ($ERROR = RRDs::error) { print "$0: unable to update $rrd/logger.rrd: $ERROR\n"; }

# create graphs
&CreateGraph("day",$rrd,$img);
&CreateGraph("week",$rrd,$img);
&CreateGraph("month",$rrd,$img);
&CreateGraph("year",$rrd,$img);
# Aktualni teplota se bude zapisovat do /tmp/neco.txt
my $teplota = $tempIN; $teplota = 0 + $teplota; `echo $teplota°C > /tmp/motyl.txt`  ;
# print $teplota;


První skript slouží pro vytažení teploty, druhý ho spustí a vygeneruje grafy. V druhém si upravte cesty k adresáři pro ukládání obrázků a rrd databáze a pak doplňte ip adresu, jméno a heslo pro přihlášení k mikrotiku.
Ještě je třeba zajistit pravidelné spouštění rrd_logger.pl třeba zapsáním řádku do cronu

Kód: Vybrat vše

*/5 *     * * *   root    /usr/local/bin/rrd_logger.pl >> /var/log/temp.log 2>&1


A teď kdyby se do toho pustil někdo znalejší a upravil skripty tak, aby existoval konfigurační soubor, kam by se psaly ip adresy mikrotiku v siti a grafy by se generovaly pro více mikrotiku za použití jednoho skriptu.

Pro ty co se s linuxem perou, tak vytvořeným skriptům musíte přiřadit atribut pro spouštění třeba

Kód: Vybrat vše

chmod +x soubor

Re: Návod - Měření teploty na Mikrotiku

Napsal: 20 May 2008 09:02
od michal.siman
muzu se zeptat na co to pouzivas ten teplomer? na mereni teploty mikrotiku a nebo na mereni venkovni teploty jako sluzby uzivatelum napr.?

ja bych chtel nabidnou uzivatelum nasi site na webu informaci o teplote, hodne lidi zajima kolik je a jak se teplota vyviji a bylo by zajimave sledovat to na ruznych castech mesta a v okolinich vesnicich.

Re: Návod - Měření teploty na Mikrotiku

Napsal: 20 May 2008 09:22
od hafieror
Pokud zavřeš počítač a spoustu apček do plechový skříně někam na komín, tak je dobrý vědět co se tam děje a případně skříň osadit nějakým větrákem.

Re: Návod - Měření teploty na Mikrotiku

Napsal: 20 May 2008 10:31
od michal.siman
hafieror píše:Pokud zavřeš počítač a spoustu apček do plechový skříně někam na komín, tak je dobrý vědět co se tam děje a případně skříň osadit nějakým větrákem.

aho, to chapu a souhlasim, jen me zajimalo jestli to pozivas na tohle nebo jako mereni teploty venkovni. diky

Re: Návod - Měření teploty na Mikrotiku

Napsal: 24 May 2008 11:03
od reset
teplomery jsem zakoupil, pripojil na seriovy port, v biosu povolil serial1

Kód: Vybrat vše

> /system serial-terminal serial0
port is already in use


zkouseno na MKv2.9.27

nevite proc ?

Re: Návod - Měření teploty na Mikrotiku

Napsal: 24 May 2008 11:11
od reset
tak jsem na to v zapeti prisel

Kód: Vybrat vše

/system console disable  <cislo portu>

vypnout seriovou konzoli pro ovladani MK

Re: Návod - Měření teploty na Mikrotiku

Napsal: 24 May 2008 19:19
od hafieror
A nastavit rychlost 9600

Re: Návod - Měření teploty na Mikrotiku

Napsal: 24 May 2008 21:06
od reset
to se nastavuje kde ?

Re: Návod - Měření teploty na Mikrotiku

Napsal: 24 May 2008 21:26
od hafieror

Kód: Vybrat vše

/system console
add disabled=yes port=serial0 term="vt102"


Kód: Vybrat vše

/port
set 0 baud-rate=9600 data-bits=8 flow-control=none name="serial0" parity=none \
    stop-bits=1

Re: Návod - Měření teploty na Mikrotiku

Napsal: 29 May 2008 09:10
od vencakubik
Zakoupil jsem TM teploměry, připojil na RB532 s MK 3.9, zkoušel vše možné od vašeho návodu a prd.

[admin@MikroTik] > system console print
Flags: X - disabled, U - used, F - free
# PORT TERM
0 X serial0 vt102

[admin@MikroTik] > system serial-terminal serial0 ;
[Ctrl-A is the prefix key]

[Q - quit connection] [B - send break]
[A - send Ctrl-A prefix] [R - autoconfigure rate]

nastaveno rychlost na 9600 data bit 8, parity none, stop bit 1

Re: Návod - Měření teploty na Mikrotiku

Napsal: 29 May 2008 09:25
od hafieror
Zřejmě má RB-532 stejně nestandardní seriový port jako RB-133 viz moje věta v první příspěvku

"Vyčítání funguje pouze z PC, z rb133 nefunguje viz diskuze uvedená výše a jinde jsme to zatím nezkoušel."

Re: Návod - Měření teploty na Mikrotiku

Napsal: 29 May 2008 10:09
od reset
problemy s com porty se resily tady
http://forum.ispforum.cz/viewtopic.php?f=7&t=1721&p=26283&hilit=teplota&sid=94f878c79be1c2b23530b7b7b26092b6&sid=94f878c79be1c2b23530b7b7b26092b6#p26283
RB masiny jsou sice fine, ale .... ma to dost much asi tak stejne jako MKv3rc10 (oficialni nazev MKv3.10)

Zkousel nekdo teplotni cislo na ALIX masinach ?

Re: Návod - Měření teploty na Mikrotiku

Napsal: 29 May 2008 10:31
od vencakubik
Dobrá, jdu zkusit nainstalit nějakej PC.. :) a zkusim teploměr tam.

Re: Návod - Měření teploty na Mikrotiku

Napsal: 29 May 2008 13:05
od vencakubik
Potvrzeno. Na PC funguje bez problémů.

[admin@MikroTik] > system serial-terminal serial0
[Ctrl-X is the prefix key]

+023.6C
[Q - quit connection] [B - send break]
[X - send Ctrl-X prefix] [A - autoconfigure rate]

Welcome back!
[admin@MikroTik] >

Re: Návod - Měření teploty na Mikrotiku

Napsal: 31 May 2008 15:14
od Laibir
Nevíte někdo v čem přesně je problém proč to na RBčkách nejede? Nebo to nejede jen s 133 a 532?