Ich betriebe einen ubuntu-server und möchte diesen als rrd-server mit der wago nutzen. Leider konnte ich bis ahnin das Demoprogramm von oscat dazu nicht zum laufen bringen, hier einige Infos:
Server (ubuntu 11.04 server):
sudo apt-get install rrd-tool
-> rrd-Tool funktioniert, Apache2 ebenfalls
-> unter /var/www/rrd/ sind die drei scrips gemäss oscat.de abgelegt.
Wie müssen die Rechte auf dem Server sein, damit die Steuerung auch den php Aufruf machen kann?
Ich habe:
sudo chmod -R 777 /var/www/rrd
gemacht.
Der Aufruf auf der Konsole des Servers müsste ja eigentlich auch funktionieren, tut er aber leider nicht (test2 ist ein weiterer Versuch):
neonightmare@ubuntudellserver:/var/www/rrd$ ls -l
insgesamt 1028
-rwxr-xr-x 1 neonightmare neonightmare 1119 2011-05-25 22:52 chart_test_rrd2.php
-rwxrwxrwx 1 root root 1106 2011-05-24 21:16 chart_test_rrd.php
-rwxr-xr-x 1 neonightmare neonightmare 1242 2011-05-25 22:56 create_test_rrddb2.php
-rwxr-xr-x 1 neonightmare neonightmare 1385 2011-05-25 23:21 create_test_rrddb2.php.save
-rwxrwxrwx 1 root root 1385 2011-05-24 21:23 create_test_rrddb.php
-rwxrwxrwx 1 neonightmare neonightmare 127652 2011-05-29 17:35 test2.rrd
-rwxrwxrwx 1 neonightmare neonightmare 890132 2011-05-25 22:36 test.rrd
-rwxr-xr-x 1 neonightmare neonightmare 461 2011-05-25 23:11 test_rrd2.php
-rwxrwxrwx 1 root root 459 2011-05-24 21:16 test_rrd.php
neonightmare@ubuntudellserver:/var/www/rrd$ http://ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=98
[1] 12836
neonightmare@ubuntudellserver:/var/www/rrd$ -bash: http://ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd: Datei oder Verzeichnis nicht gefunden
neonightmare@ubuntudellserver:/var/www/rrd$ ^C
[1]+ Exit 127 http://ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd
neonightmare@ubuntudellserver:/var/www/rrd$ -bash: http://ubuntudellserver/rrd/test_rrd2.php?rrd_db=test2.rrd: Datei oder Verzeichnis nicht gefunden
[1]+ Exit 127 http://ubuntudellserver/rrd/test_rrd2.php?rrd_db=test2.rrd
neonightmare@ubuntudellserver:/var/www/rrd$
Hier meine test_rrd.php:
<?php
# wird von Steuerung so aufgerufen
# http://mein_server/test_rrd.php?rrd_db=test.rrd&value=10:20:30:40:50:60
$rrd_db = urldecode($_GET['rrd_db']); # Name der RRD Datenbank
$value = urldecode($_GET['value']); # übergebene Werte
# $array_value = explode(":",$value);
# echo "$rrd_db <br>";
# print_r($array_value);
# echo "<br>";
$commando = "/usr/bin/rrdtool update " . $rrd_db . " N:" . $value;
system($commando,$fehler);
echo $fehler . $commando;
?>
Leider werden auch von der Steuerung keine Daten übernommen, die Datenbank zeigt immer NaN (Not a Number).
Steuerung (Wago 750-841)
-> angepasstes Demo-Programm oscat.de
Baustein "Dlog_rrd_store" zeigt keine Fehlermeldungen an (Error_T & Error_C jeweils '0')
Wie kann ich weiter vorgehen, debuggen, wie kann ich die test.rrd am einfachsten betrachten bzw. überprüfen?
--> Ich werde am Ende ein kleines HowTo erstellen, um für andere die Einrichtung zu erleichtern.
Danke für Eure Hilfe
Neo
Hallo
Hast Du auf deinem Ubuntu Rechner MC (Midnight Commander)installiert.
Ist sowas wie der NortenComander und kann das Arbeiten in der Konsole erleichtern.
RRD-Tool ist manchmal recht zickig.
Bevor es mit der Wago läuft muss es erst mal von der Konsole aus gehen.
Wie sieht denn deine create_test_rrddb.php aus ?
Du kannst Dir dann aus der Konsole die DB mit
rrdtool dump filename.rrd > filename.xml ansehen.
Zum füllen der DB kannst Du dann aus der Konsole rrdtool update so aufrufen.
"rrdtool update test.rrd N:5:10:15:20:25:30:35"
Danach kannst Du mit rrdtool dump deine DB ansehen.
Wenn das geschafft ist machen wir weiter.
Gruß NetFritz
Hallo NetFritz
Danke für deine Unterstützung!
mc kenne ich und ist für mich auch ein muss auf der Konsole ;)
nano create_test_rrddb.php
#!/etc/php5/cli -q
<?php
error_reporting(E_ALL);
# ==================================
# Erstellt eine rrd-Datenbank
# wird einmal von der Console aufgerufen
# 12.11.2010 by NetFritz
# ==================================
# create wp.rrd legt die Datenbank test.rrd an
# --step 60 alle 60sec wird ein wert erwartet
# DS:t1:GAUGE:120:0:100 es wird eine Datenquelle mit dem Namen t1 angelegt,
# der Typ ist Gauge est wird 120sec gewartet auf neue Daten wenn nicht
# werden die Daten als UNKNOWN in die Datenbank geschrieben
# der minimale und Maximale Messwert
# RRA:AVERAGE:0.5:1:2160 Das ist rrd-Archiv AVERAGE=Mittelwert 0.5= Intervallabweichung
#
#36h Archiv jede Minute ein Wert, 1:2160 = 1h=3600sec 36h*3600=129600
#1Minute=60sec jede Minute ein Wert, 129600/60=2160 Einträge
#
#RRA:AVERAGE:0.5:5:2016 1Woche
#Archiv alle 5Minuten 3600*24h*7Tage=604800Sec / (5Minuten+60Sec=2016 Einträge 1Wert,
# RRA:AVERAGE:0.5:15:2880 30Tage Archiv alle 15Minuten 1Wert,
# RRA:AVERAGE:0.5:60:8760 1Jahr Archiv alle 60Minuten ein Wert
# jetzt geht es los
$command="rrdtool create test.rrd \
--step 60 \
DS:t1:GAUGE:120:0:100 \
DS:t2:GAUGE:120:0:100 \
DS:t3:GAUGE:120:0:100 \
DS:t4:GAUGE:120:0:100 \
DS:t5:GAUGE:120:0:100 \
DS:t6:GAUGE:120:0:100 \
DS:t7:GAUGE:120:0:100 \
RRA:AVERAGE:0.5:1:2160 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760";
Habe nun die Datenbank neu erstellt:
neonightmare@ubuntudellserver:/var/www/rrd$ php create_test_rrddb.php
update scheint ohne Fehler zu gehen
neonightmare@ubuntudellserver:/var/www/rrd$ rrdtool update test.rrd N:5:10:15:20:25:30:35
Dump in ein *.xml tut nun auch (Danke für den Tipp!)
neonightmare@ubuntudellserver:/var/www/rrd$ rrdtool dump test.rrd > test.xml
Leider sehe ich mittels mc im test.xml die Einträge nicht, hier ein Auszug aus der xml:
?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
<!-- Round Robin Database Dump -->
<rrd>
<version>0003</version>
<step>60</step> <!-- Seconds -->
<lastupdate>1306754963</lastupdate> <!-- 2011-05-30 13:29:23 CEST -->
<ds>
<name> t1 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>5</last_ds>
<value>1.2686960000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<ds>
<name> t2 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>10</last_ds>
<value>2.5373920000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<ds>
<name> t3 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>15</last_ds>
<value>3.8060880000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<ds>
<name> t4 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>25</last_ds>
<value>6.3434800000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<ds>
<name> t5 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>25</last_ds>
<value>6.3434800000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<ds>
<name> t6 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>30</last_ds>
<value>7.6121760000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<ds>
<name> t7 </name>
<type> GAUGE </type>
<minimal_heartbeat>120</minimal_heartbeat>
<min>0.0000000000e+00</min>
<max>1.0000000000e+02</max>
<!-- PDP Status -->
<last_ds>35</last_ds>
<value>8.8808720000e+01</value>
<unknown_sec> 21 </unknown_sec>
</ds>
<!-- Round Robin Archives -->
<rra>
<cf>AVERAGE</cf>
<pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
<params>
<xff>5.0000000000e-01</xff>
</params>
<cdp_prep>
<ds>
<primary_value>NaN</primary_value>
<secondary_value>NaN</secondary_value>
<value>NaN</value>
<unknown_datapoints>0</unknown_datapoints>
</ds>
<ds>
<primary_value>NaN</primary_value>
<secondary_value>NaN</secondary_value>
<value>NaN</value>
<unknown_datapoints>0</unknown_datapoints>
</ds>
<ds>
<primary_value>NaN</primary_value>
<secondary_value>NaN</secondary_value>
<value>NaN</value>
<unknown_datapoints>0</unknown_datapoints>
</ds>
In der datenbank sind übrall NaN..
Hat es evtl. etwas mit <unknown_sec> 21 </unknown_sec> zu tun bzw. mit der Zeitstempelung der Einträge ???
Hmm.... ???
THX
Neo
Hallo
Ich gehe mal davon aus das Du das Script "create_test_rrddb.php" nicht ganz hier rein gestellt hast.
am Ende fehlt
"system($command);
?>"
Habe mal das Script zum füllen der rrd-DB so umgestellt das es jede Minute die rrd-DB füllt.
#!/etc/php5/cli -q
<?php
while(1){
# wird zum Test der rrd-DB so aufgerufen
# "php ./test1_rrd.php"
# Script läuft in einer Schleife
# rrd-DB wir alle 60 s gefüllt
$rrd_db = "test.rrd";
$value = "10:20:30:40:50:60:70";
$commando = "rrdtool update " . $rrd_db . " N:" . $value;
system($commando,$fehler);
echo date("d.m.y H:i:s") . " Fehler=" . $fehler . " " . $commando . "\n";
sleep(60);
}
?>
Das Script was vom Browser aufgerufen wird um die Charts darzustellen
habe ich mal so umgestellt das Uhrzeit und Fehler mit ausgegeben werden.
<?php
// erstellt Chart fuer Test Werte
// wird vom Browser aufgerufen
// 02.10.2010
$command="/usr/bin/rrdtool graph test0.png \
--vertical-label=Test \
--start end-12h \
--width 600 \
--height 200 \
--alt-autoscale \
DEF:t1=test.rrd:t1:AVERAGE \
DEF:t2=test.rrd:t2:AVERAGE \
DEF:t3=test.rrd:t3:AVERAGE \
DEF:t4=test.rrd:t4:AVERAGE \
DEF:t5=test.rrd:t5:AVERAGE \
DEF:t6=test.rrd:t6:AVERAGE \
DEF:t7=test.rrd:t7:AVERAGE \
LINE1:t1#FF0000:Test1 \
LINE1:t2#6EFF00:Test2 \
LINE1:t3#CD04DB:Test3 \
LINE1:t4#008000:Test4 \
LINE1:t5#0000FF:Test5 \
LINE1:t6#0000FF:Test6 \
LINE1:t7#0000FF:Test7 \
COMMENT:'Die letzten 12h'";
system($command,$fehler);
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
echo " <head>\n";
echo " <title>Test</title>\n";
echo " </head>\n";
echo " <body>\n";
echo ("<center><img src='test0.png'></center>\n");
echo " <center>Die letzten 12h</center>\n";
echo date("d.m.y H:i:s") . " Fehler=" . $fehler;
echo " </body>\n";
echo "</html>\n";
?>
Bei mir läuft es so.
Es sind dann auch Values in der test.xml vorhanden.
Hier mal meine Ausgabe vom Verzeichnis rrd
ls -l
-rwxrwxrwt 1 fritz fritz 1196 2011-05-30 15:46 chart_test.php
-rwxrwxr-x 1 fritz fritz 1502 2010-11-19 10:22 create_test_rrddb.php
-rw-r--r-- 1 www-data www-data 13045 2011-05-30 16:46 test0.png
-rwxrwxr-x 1 fritz fritz 411 2011-05-30 15:49 test1_rrd.php
-rw-r--r-- 1 fritz fritz 890128 2011-05-30 16:56 test.rrd
-rwxrwxr-x 1 fritz fritz 501 2010-11-13 13:56 test_rrd.php
-rw-r--r-- 1 root root 2323627 2011-05-30 15:43 test.xml
wenn das läuft kann man das Script test_rrd.php
vom Browser so aufrufen.
"http://192.168.2.251/test_rrd.php?rrd_db=test.rrd&value=10|10|20|30|40|50"
Gruß NetFritz
Guten morgen NetFritz
Danke für die vielen wertvollen Tipps, step by step gehts vorwärts....
ZitatIch gehe mal davon aus das Du das Script "create_test_rrddb.php" nicht ganz hier rein gestellt hast.
am Ende fehlt
"system($command);
?>
Richtig, habe den Schluss "vergessen" zu kopieren.
Das Testprogramm funktioniert nun via Konsole. Die Daten werden alle 60s geschrieben und die Anzeige via char_test.php (Browseraufruf) stellt die Werte dar.
ZitatLeider funktioniert der Aufruf bzw. das Schreiben von Daten via Webbrowser immer noch nicht. Ich erhalte auch keine Fehlermeldung vom Browser:
http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
Ausgabe im Browserfenster:
127/usr/bin/rrdtool update test.rrd N:5|5|5|5|5|5|5
Es funktioniert nun:
http://localhost:8001/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
Ausgabe Browser:
0/usr/bin/rrdtool update test.rrd N:10:10:10:10:10:10:10
Die Lösung war der : statt der | !!!
Ich habe den Aufruf auch in der Konsole getestet (scheint immer noch nicht zu funktionieren):
neonightmare@ubuntudellserver:~$ http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
[1] 15225
-bash: http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd: Datei oder Verzeichnis nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
[1]+ Exit 127 http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd
neonightmare@ubuntudellserver:~$ localhost/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
[1] 15241
-bash: localhost/rrd/test_rrd.php?rrd_db=test.rrd: Datei oder Verzeichnis nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
5: Befehl nicht gefunden
[1]+ Exit 127 localhost/rrd/test_rrd.php?rrd_db=test.rrd
neonightmare@ubuntudellserver:~$
Wie kann ich das debuggen, ist es evtl. ein Rechteproblem auf dem Server da ich rrd unter /var/www/rrd abgelegt habe?
Jetzt fehlt nur noch das Update via Wago....
Danke und Gruss
Neo
Hallo
Das ja Klasse das Du soweit gekommen bist.
Den Netzwerksverkehr zwischen deiner Wago und den Ubuntu-PC
kannst du ewtl. mit Wireshark beobachten.
Gruß NetFritz
Hallo NetFritz
Anbei ein Screenschot aus Codesys des Codes. Mit tshrak auf dem Server (Konsole) konnte ich keine Verbindung zwischen Wago -> Server feststellen!
So wie es aussieht sendet die Wage keine Anfragen/Kommandos an den Server!
(http://dlog_store.jpg)
Ist bei den Funktionsbausteinen etwas falsch?
DAnke
neo
[gelöscht durch Administrator]
Hallo
Mit dem Funktionsbaustein kenne ich nicht aus.
Habe nur bei den Scripten für rrd-Tool mitgewirkt.
Vielleicht kann peewit sich dazu äußern .
Gruß NetFritz
bitte exportiere deinen test-baustein und stelle ihn online
mit einer bildschirmhardcopy wo man nicht alles sehen kann, vergeudet man nur zeit !
parameter DNS_IP4 ist 192.168.1.9 -> wem gehört diese ip-adresse ?
das muss die ip-adresse sein vom dem dns-server der den namen http:\\ubuntudellserver kennt !
wahrscheinlich ist die rrd-url nicht korrekt http:\\ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=
probiere doch mal von einen anderen pc aus "ping http:\\ubuntudellserver"
du solltest mal diese rrd-url in einem broswer probieren
http:\\x.x.x.x/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
und
http:\\ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
(x.x.x.x = ip adresse deines servers)
was geht und was nicht ?
im betrieb müsste beim baustein "dlog_store_rrd" bei parameter error_c und error_t etwas ausgegeben werden
wenn ja ... was ...
Guten Morgen
Vielen Dank für die Inputs
--> 192.168.1.9 ist mein eigener lokaler DNS-Server (dnsmasq), dieser kennt "ubuntudellserver" als 192.168.1.9.
Was mich irritiert, sind die Slash bzw. Backslash sowie : und | ASCII Dezimal 58 ist ja eigentlich ein ":", dieser ist als SEP definiert.
Zitathttp:\\ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
Zitathttp://localhost:8001/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
Wie müssten diese nun genau sein?
Kann ich als url auch anstelle des "ubuntudellserver" dessen fixe IP 192.168.1.9 angeben? Aus meiner Sicht müsste die Zeile wie folgt aussehen:
http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
bzw. als url des Bausteins "dlog_store_rrd"
rrd_url : STRING(STRING_LENGHT):='http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd&value=';
Zitatim betrieb müsste beim baustein "dlog_store_rrd" bei parameter error_c und error_t etwas ausgegeben werden
Diese beiden Error-Parameter zeigen im Betrieb immer "0" an!
Ich test nun weiter, sobald ich wieder an meiner Wago bin ;-) und werde die Resultate online stellen und falls ich immer noch keinen Erfolg habe werde ich den Baustein exportieren und online stellen!
Danke für die Hilfe ;)
THX Neo
hallo
das sollte natürlich so lauten (http:// ....)
http://localhost:8001/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
----------------------
du kannst natürlich auch direkt die ip anwenden, damit umgehst du eventuelle DNS-probleme
http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
das musss natürlich von einen browser aus, genauso funktionieren !!!!
am DLOG_RRD wird kein fehler gemeldet ?
ist dieser freigegeben, bzw. werden auch wirklich daten produziert ?
aber das wichtigste wäre das es von einen anderen rechner im netzwerk per browser auch funktioniert
Hallo peewit
Der Aufruf von einem Browser:
http://192.168.1.9/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
funktioniert!
Nach einigen Modifikationen funktioniert nun auch das schreiben bzw. der Aufruf via Wago!
-> Zeit (RTC) stimmte nicht, diese wird nun von der DCF-Uhr genommen
-> Aufruf via IP statt via DNS-Server
-> unter "column" keine Angaben bei den REAL-Zahlen
So, ich werde jetzt dies noch weiter ausbauen und anschliessend ein kleines HowTo schreiben!
:D :D ;D ;D ;D :D :D :D
tHx Neo
Zitat-> Zeit (RTC) stimmte nicht, diese wird nun von der DCF-Uhr genommen
es ist wichtig den baustein dlog_store_rrd mit der aktuellen uhrzeit über parameter "DTI" zu versorgen
ausser man verwendet nur den manuellen trigger "trigg_m"
Zitat-> unter "column" keine Angaben bei den REAL-Zahlen
bei den dlog_* bausteine sollte es völlig egal sein ob du bei "column" etwas hinschreibst, da dies vom dlog_store_rrd ignoriert werden sollte
Zitat-> Aufruf via IP statt via DNS-Server
eigentlich sollte das auch über den dnsnamen funktionieren, aber eventuell läuft hier etwas schief bei meinem dns_client baustein
ich gehe davon aus, das das datenübergeben mittels browser und dns-namen funktioniert, und du das nicht auf dem gleichen rechner
immer probierst.
geht das mit einem anderen rechner im lokalen netzwerk ?
http:\\ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
kannst du von so einem vorgang (abfrage von fremden rechner mittels browser)
eine aufzeichnung mittels etherreal bzw wireshark machen und mir zukommen lassen
denn dann kann ich erkennen was hier anders abläuft als angenommen.
gruss peewit
(gut ding braucht weile .....)
Guten Morgen
-> Den DNS-Baustein werde ich noch testen und Bescheid geben, aktuell arbeite ich direkt mit der IP.
Ich habe nun zwei separate Programme mit einem dlog_store geschrieben (Temperaturen, Umwelt). diese werden jeweils mittels dem Parameter trig_T (60) angesteuert.
Nun funktioniert das Schreiben via Wago nicht mehr. Im Testprogramm wurde die Speicherung mittels trig_M und einem CLK_PRG - Baustein (50s) getriggert.
Das Schreiben der Daten via Browser funktioniert einwandtfrei.
Wie ist der Parameter trig_T bzw. trig_M zu verstehen bzw. wie ist das Timingverhalten der RRD?
Die Definition:
#!/etc/php5/cli -q
<?php
error_reporting(E_ALL);
$command="rrdtool create temp.rrd \
--step 60 \
DS:kel:GAUGE:120:-25:50 \
DS:woh:GAUGE:120:-25:50 \
DS:bue:GAUGE:120:-25:50 \
DS:tk:GAUGE:120:-25:50 \
DS:ofe:GAUGE:120:-25:50 \
DS:k1:GAUGE:120:-25:50 \
DS:k2:GAUGE:120:-25:50 \
DS:elt:GAUGE:120:-25:50 \
DS:df:GAUGE:120:-25:50 \
DS:was:GAUGE:120:-25:50 \
DS:tec:GAUGE:120:-25:50 \
DS:aus:GAUGE:120:-25:50 \
RRA:AVERAGE:0.5:1:2160 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760";
system($command);
?>
Ist es evtl. ein Problem zwei Programme mit trig_T 60 anzusteuern?
THX NEo
solange du dein testprogramm mir nicht gibtst , kann ich kein problem finden .....
baustein exportieren und hier reinstellen
hast du beim dlog_store_rrd eine laufende Datum/uhrzeit übergeben ?
sonst kann auch der trig_t nicht funktionieren
Guten Morgen
Ja, die aktuelle Zeit wird übergeben.
THX Neo
Hallo peewit
Zitat
http:\\ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5
kannst du von so einem vorgang (abfrage von fremden rechner mittels browser)
eine aufzeichnung mittels etherreal bzw wireshark machen und mir zukommen lassen
denn dann kann ich erkennen was hier anders abläuft als angenommen.
hier das Resultat:
Aufruf via Firefos:
http://ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=10:10:10:10:10:10:10
Resultat:
0/usr/bin/rrdtool update test.rrd N:10:10:10:10:10:10:10
und anbei das Logging von Wireshark
THX Neo
PS: ich habe nun wieder auf trig_m mit einem Timer umgestellt und für beide Programme verschiedene Aufrufintervalle definiert. und nun funktionieren beide Programme einwandtfrei!!
;D ;D ;D
Jetzt fehlt noch eine anständige Grafik dazu und das Howto
[gelöscht durch Administrator]
1. wo ist die wireshark aufzeichnung ?
ist für mich wichtig , damit ich sehe was beim browser mit dns auflösung passiert
2. was heisst hier "beide programme ?"
hast du zweimal den DLOG_STORE_RRD verwendet , und die arbeiten noch dazu mit gleichen trigger
ich habe nun mit einer wago 750-841 zweimal das gleiche programm verwendet, das heisst
sie benutzen den gleichen trig_t und arbeiten somit parallel zur gleichen zeit auf den gleichen zielrechner und php-script
dabei sind bei mir keine probleme aufgetaucht !
somit wäre auch hier eine wireshark aufzeichnung sehr hilfreich !!!!
3. wenn du in deiner applikation mit zwei programmen arbeitest, warum gibst du mir dann ein anderes testprogramm
Zitat1. wo ist die wireshark aufzeichnung ?
ist für mich wichtig , damit ich sehe was beim browser mit dns auflösung passiert
siehe post oben, der upload funktionierte gestern nicht, dies ist aber die Aufzeichnung des entsprechenden Browseraufrufes und nicht der der Wago!
Zitat2. was heisst hier "beide programme ?"
hast du zweimal den DLOG_STORE_RRD verwendet , und die arbeiten noch dazu mit gleichen trigger
Ja, siehe beigefühten Export der Bausteine
Zitatich habe nun mit einer wago 750-841 zweimal das gleiche programm verwendet, das heisst
sie benutzen den gleichen trig_t und arbeiten somit parallel zur gleichen zeit auf den gleichen zielrechner und php-script
dabei sind bei mir keine probleme aufgetaucht !
Das war bei mir nicht so, es funktioniert nun mit dem trig_m und den Clk's.
Zitatsomit wäre auch hier eine wireshark aufzeichnung sehr hilfreich !!!!
Hier die Aufzeichnung mit tshrak auf dem Server (192.168.1.9), gefiltert nach den Anfragen von 192.168.1.44 (Wago)
58 17.735279 192.168.1.44 -> 192.168.1.9 TCP 32125 > http [SYN] Seq=0 Win=16000 Len=0 MSS=1460
59 17.735315 192.168.1.9 -> 192.168.1.44 TCP http > 32125 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460
61 17.736395 192.168.1.44 -> 192.168.1.9 TCP 32125 > http [ACK] Seq=1 Ack=1 Win=16000 Len=0
62 17.737267 192.168.1.44 -> 192.168.1.9 HTTP GET /rrd/test_rrd.php?rrd_db=amb.rrd&value=51:41:9:4:6:0:81:0:0 HTTP/1.1
63 17.737309 192.168.1.9 -> 192.168.1.44 TCP http > 32125 [ACK] Seq=1 Ack=96 Win=14600 Len=0
64 17.754097 192.168.1.9 -> 192.168.1.44 HTTP HTTP/1.1 200 OK (text/html)
66 17.954740 192.168.1.44 -> 192.168.1.9 TCP 32125 > http [ACK] Seq=96 Ack=249 Win=16000 Len=0
67 17.966820 192.168.1.44 -> 192.168.1.9 TCP 32125 > http [FIN, ACK] Seq=96 Ack=249 Win=16000 Len=0
68 17.966926 192.168.1.9 -> 192.168.1.44 TCP http > 32125 [FIN, ACK] Seq=249 Ack=97 Win=14600 Len=0
69 17.967416 192.168.1.44 -> 192.168.1.9 TCP 32125 > http [ACK] Seq=97 Ack=250 Win=16000 Len=0
114 34.747677 192.168.1.44 -> 192.168.1.9 TCP 64210 > http [SYN] Seq=0 Win=16000 Len=0 MSS=1460
115 34.747712 192.168.1.9 -> 192.168.1.44 TCP http > 64210 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460
116 34.748359 192.168.1.44 -> 192.168.1.9 TCP 64210 > http [ACK] Seq=1 Ack=1 Win=16000 Len=0
117 34.750399 192.168.1.44 -> 192.168.1.9 HTTP GET /rrd/test_rrd.php?rrd_db=temp.rrd&value=16:23:23:25:18:23:21:22:16:20:24:10 HTTP/1.1
118 34.750440 192.168.1.9 -> 192.168.1.44 TCP http > 64210 [ACK] Seq=1 Ack=112 Win=14600 Len=0
120 34.767588 192.168.1.9 -> 192.168.1.44 HTTP HTTP/1.1 200 OK (text/html)
122 34.967466 192.168.1.44 -> 192.168.1.9 TCP 64210 > http [ACK] Seq=112 Ack=265 Win=16000 Len=0
123 34.976941 192.168.1.44 -> 192.168.1.9 TCP 64210 > http [FIN, ACK] Seq=112 Ack=265 Win=16000 Len=0
124 34.977049 192.168.1.9 -> 192.168.1.44 TCP http > 64210 [FIN, ACK] Seq=265 Ack=113 Win=14600 Len=0
125 34.977569 192.168.1.44 -> 192.168.1.9 TCP 64210 > http [ACK] Seq=113 Ack=266 Win=16000 Len=0
237 72.734889 192.168.1.44 -> 192.168.1.9 TCP dyn-site > http [SYN] Seq=0 Win=16000 Len=0 MSS=1460
238 72.734930 192.168.1.9 -> 192.168.1.44 TCP http > dyn-site [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460
239 72.735444 192.168.1.44 -> 192.168.1.9 TCP dyn-site > http [ACK] Seq=1 Ack=1 Win=16000 Len=0
241 72.736148 192.168.1.44 -> 192.168.1.9 HTTP GET /rrd/test_rrd.php?rrd_db=amb.rrd&value=51:42:9:4:7:0:81:0:0 HTTP/1.1
242 72.736188 192.168.1.9 -> 192.168.1.44 TCP http > dyn-site [ACK] Seq=1 Ack=96 Win=14600 Len=0
243 72.750530 192.168.1.9 -> 192.168.1.44 HTTP HTTP/1.1 200 OK (text/html)
245 72.950808 192.168.1.44 -> 192.168.1.9 TCP dyn-site > http [ACK] Seq=96 Ack=249 Win=16000 Len=0
246 72.959936 192.168.1.44 -> 192.168.1.9 TCP dyn-site > http [FIN, ACK] Seq=96 Ack=249 Win=16000 Len=0
247 72.960045 192.168.1.9 -> 192.168.1.44 TCP http > dyn-site [FIN, ACK] Seq=249 Ack=97 Win=14600 Len=0
248 72.960483 192.168.1.44 -> 192.168.1.9 TCP dyn-site > http [ACK] Seq=97 Ack=250 Win=16000 Len=0
THX Neo
[gelöscht durch Administrator]
die aufzeichnung als text ist wertlos !
ich brauche die datei ungefiltert !
so wie der wireshark-text aussieht, gibt es ja gar kein problem
daten werden korrekt übermittelt, und auch quittiert, aber wie gesagt man sieht keine details .....
was du wieder nicht angegeben hast, sind die testbedingungen..
was hast du hier aufgezeichnet ?
etwas was deiner meinung nicht funktioniert hat, oder schon funktioniert ?
mit oder ohne dns-namen ?
2 parallele programme ?
mit trig_t oder mit trig_m
aufgaben:
1. wireshark starten
2. http:\\ubuntudellserver/rrd/test_rrd.php?rrd_db=test.rrd&value=5|5|5|5|5|5|5 über browser ausführen
3. aufzeichnung beenden , wireshark datei speichern und hier online stellen, oder mir als email schicken....
---------------------------------
das wiederholst du mit einem test mit der wago sps genau mit dieser url (nicht beide rrd-programme gleichzeitig laufen lassen)
wieder aufzeichnen und mir geben
dann sehe eventuell warum die dns auflösung in dem fall nicht klappt
---------------------------------
weiters noch einen test wo du dein testprogramm (2 programme gleichzeitig) mit gleichen trig_t laufen lässt
wieder aufzeichnen und mir geben
------------------------------------
alles andere bringt nichts...
funktioniert ein einzelnes programm mit trig_t ?
was ist wenn du bei 1.prg einen trig_t = 50 nimmst und bei 2.prg einen trig_t = 56 ?
Hallo peewit
Ich denke wir "reden" aneinander vorbei. Deshalb hier meine Statusmeldung:
Die beiden Programme mit jeweils einem DLOG_STore-Baustein (Umwelt, Temperatur) laufen parallel auf der Wago und werden via trig_m über einen CLK-PRG "manuell" getriggert, jeweils mit 50s und 56s. Dies funktioniert nun einwandtfrei. Der Aufruf der php-Datei auf dem Server (url des Bausteines DLOG_Store) erfolgt nun ohne DNS-Name direkt über die IP-Adresse.
Was ich für dich nun rekonstruieren und Loggen kann wäre folgendes:
- Beide Programme Umwelt und Temperatur parallel laufen lassen, aber mit trig_t automatisch triggern lassen.
Aufruf der PHP-Funktion via DNS-Name http://ubuntudellserver...
So könnten wir evtl. die Bausteine bzw. meine Fehler finden...
THX NEo
ok dann machen wir diesen schritt
aber es muss auch mit http://ubuntudellserver... funktionieren
da es im browser funktioniert, aber über sps nicht, würde mich das sehr interessieren
ich würde mich deswegen auch über einen ethernet-mitschnitt des http://ubuntudellserver... über browser freuen....
hallo neonightmare
wie siehts aus..... ?
ZitatWas ich für dich nun rekonstruieren und Loggen kann wäre folgendes:
Beide Programme Umwelt und Temperatur parallel laufen lassen, aber mit trig_t automatisch triggern lassen.
Aufruf der PHP-Funktion via DNS-Name http://ubuntudellserver...
So könnten wir evtl. die Bausteine bzw. meine Fehler finden...
Hallo peewit
ich war geschäfltich abwesend und konnte leider noch nicht den Test machen.
Mein Benutzername funktioniert leider nicht mehr, ich musste mich neu anmelden.
Ich melde mich, sobald ich die Logs gemacht habe.
THX Neo
Hallo peewit
Hier die Testumgebung:
rrdtool / DNS server: 192.168.1.9 (statische IP)
Wago: 192.168.1.44 (statische IP)
__________________________________
Testfall 1: TEST_DNS_1.EXP -> 2 Programme parallel mit trig_t=60 und DNS-Eintrag "http://ubuntuuserver..."
tshark Log: capture.cap
_______________________
Testfall 2: TEST_OHNE_DNS_2.EXP -> 2 Programme parallel mit trig_t=60 und kein DNS-Eintrag, sondern direkt 192.168.1.9
tshark-Log: capture2.cap
_____________________
bei beiden Testfällen wurde jeweils 1x manuell ein trig_m getastet, um eine manuelle Triggerung zu provozieren.
Aktuell ist bei mir der Testfall 2 in Betrieb, wobei die Triggerung mittels trig_t=60 nicht funktioniert. Eine manuelle Triggerung mittels trig_m funktioniert hingegen.
THX
Neo
[gelöscht durch Administrator]
hallo neonightmare
-------------------------------
Testfall 1: TEST_DNS_1.EXP -> 2 Programme parallel mit trig_t=60 und DNS-Eintrag "http://ubuntuuserver..."
tshark Log: capture.cap
bei diesen fall , kann ich nachvollziehen warum nichts passiert
dein dns-server liefert zwei adressen zurück
1. 127.0.1.1
2. 192.168.1.9
beide haben TimeToLive (TTL) = 0
der dns_client nimmt die ip-adresse mit der höchsten TTL
da die 127.0.1.1 als erstes kommt und beide eine Gültigkeitsdauer von 0 sekunden haben
ergibt sich hier das die ip 192.168.1.9 genommen wird
aber mein baustein meint bei einer TTL von 0 sekunden das eigentlich keine
gültige ip erkannt wurde, und genau in diesen fall gibt es weder eine positiv noch negativ meldung
also auch kein fehler und somit bleibt der ablauf wegen fehlenden ergebnis hängen
lösung
wenn du die TTL auf grösser 0 änderst und sicherstellst das die 127.0.1.1 immer die niedrigere TTL hat dann wird die dns-auflösung funktionieren
ich muss noch klären , inwieweit eine TTL = 0 überhaupt sinn macht, bzw wie ich diese verarbeiten soll, und muss noch eine kleine änderung
machen das im notfall immer ein fehler gemeldet wird.
problem1 = TTL = 0
problem2 = 127.0.1.1 (loopback-adresse wird als ip-adresse weitergegeben, obwohl diese nur lokal funktionieren kann)
(ich weiß noch nicht wie ich sicher erkennen kann, ob diese adresse sinn macht oder nicht bzw ob ich sie ignorieren soll oder nicht)
also der fall 1 ist theoretisch geklärt
ich habe auch aus einem anderen forum folgende info zu deinem dns-server verhalten bekommen
"Fehler in der Konfiguration. Beides wird im Zonefile (bzw je nach DNS-Server in der Datenbank) behoben"
so wie es aussieht hast du deinen dns-server nicht richtig konfiguriert ?
kannst du deine dns-server konfiguration hier online stellen, denn dann kann ich versuchen dies von anderen spezialisten
prüfen bzw korrigieren zu lassen
welche plattform, dns-server, konfiguration .......
------------------------------------------------------
fall 2
da habe ich noch nichts gefunden
man sieht nur das dlog_tmp den rrd-aufruf ohne fehler beendet, jeodch von dlog_amp fehlt jeglicher hinweis
wie gesagt bei mir funktioniert das ohne probleme
-----------------------
test:
trig_m := DT_TO_UDINT(DTI) MOD TRIG_T = 0;
einen manuellen trigger auslösen der genauso funktioniert wie der trig_t
------------------------
ich weiß nicht wie gut du dich auskennst ?
du könntest im baustein DLOG_STORE_RRD einen breakpoint setzen , und dann einen trig_t auslösen, und dann schauen was passiert
IF (TRIG_M AND NOT trig_m_last) OR ra OR X.ADD_DATA_REQ THEN (* manueller, automatischer oder externer Trigger *)
----> X.ADD_DATA := TRUE; (* Daten loggen *)
END_IF;
oder du machst eine trace aufzeichnung der dlog_store_rrd variablen von beiden instanzen
zb. variable 'ra' und 'step' aufzeichnen
Hallo peewitt
So, ich konnte nun wieder einiges Testen.
Zum DNS-Problem
---------------------
Ich habe einen Ubuntu dnsmasq-dienst http://wiki.ubuntuusers.de/Dnsmasq (http://wiki.ubuntuusers.de/Dnsmasq) installiert, dieser wurde von mir nicht weiter konfiguriert. Es kann also gut sein, dass einige Einstellungen nicht richtig bzw. optimal sind.
Zum RRD-Logging Problem
------------------------------
Die Zeit von meiner Wetterstation (DCF77) wird und wurde nicht immer von der Steuerung übernommen. D.h. für die Funktion
trig_m := DT_TO_UDINT(DTI) MOD TRIG_T = 0;
war der Wert DTI nicht immer vorhanden bzw. es konnte sein dass die Zeit sprang, also ein Nulldurchgang verfehlt wurde. Nun habe ich als Zeitbasis die "echte" SPS-Systemzeit genommen und nun funktioniert das Logging richtig!
Was ich noch nicht ganz verstehe, wie ich die SPS-Systemzeit auf Sommer- bzw. Winterzeit umstellen bzw. dies automatisieren kann.
THX neo
1. ich werde bei gelegenheit noch etwas am dns-baustein verbessern !
2. schön wenn es nun bei dir auch funktioniert.
nachdem es bei mir funktionierte, musste eigentlich bei dir etwas anders sein
3. lokalzeit - sommerzeit
dazu kannst du den baustein utc_to_ltc nehmen
oder du verwendest den baustein calendar_calc , der berechnet viele sachen automatisch
ist aber nicht ganz so einfach wie utc_to_ltc
wie sieht es mit deiner geplanten rrd-installations-anleitung aus ?
ich habe das mal mit WAMPP probiert (Paket für Windows) das machte überhaupt keine probleme, lief sofort !
Hallo peewit
Hast du eine Vorlage, wie die Anleitung aussehen sollte? Als Textrohfassung habe ich bereits etwas zusammengestellt.
PS: habe die Sache mit drraw nun auch super Visualisieren können!
Gruss Neo
du kannst mir deine textrohfassung auch genauso übergeben
um die formatierungen etc.. kümmere ich mich dann schon...
du kannst mir deinen entwurf per email schicken....
dankie schon mal vorab...