|
 |
|

13.01.2013, 16:22
|
 |
Benutzer
|
|
Registriert seit: 05.08.2009
Ort: Hamburg
Beiträge: 393
|
|
Wie Temperaturdaten über GA in eine RRD schreiben
Hallo Leute,
ich benötige mal Eure Unterstützung.
Ich suche jetzt schon seit zwei Tagen in allen möglichen Quellen nach einer Lösung, aber ich finde da irgendwie nicht den richtigen Ansatz, oder ich verstehe es nicht.
Eibd, CV und linknx sind installiert, allerdings habe ich mich mit linknx noch nicht auseinander gesetzt. OS ist Debian Wheezy auf einem Raspberry.
Das RRDtool habe ich installiert, nur mir ist echt unklar wie ich jetzt die Temperaturdaten von der GA 1/0/9 in die Datenbank schreiben kann.
Die Daten sollen hinterher mit der CometVisu und dem Diagramm-Plugin angezeigt werden.
Das erstellen der Datenbank funktioniert auch.
Code:
#!/bin/bash
rrdtool create database.rrd --start N --step 300 \
DS:temp:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:12 \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:12:168 \
RRA:AVERAGE:0.5:12:720 \
RRA:AVERAGE:0.5:288:365
Und hier der update database Script:
Code:
#!/bin/bash
cd /home/thomas/rrdtool
# Read temperature from sensor
tempread=`cat /home/owfs/10.4F7494010800/temperature`
temp=`echo $tempread | cut -c -4`
# Update database
rrdtool update database.rrd N:$temp
# Create graphs
rrdtool graph temp_h.png --start -1h DEF:temp=database.rrd:temp:AVERAGE LINE1:temp#0000FF:"Temperature [deg C]"
rrdtool graph temp_d.png --start -1d DEF:temp=database.rrd:temp:AVERAGE LINE1:temp#0000FF:"Temperature [deg C]"
rrdtool graph temp_w.png --start -1w DEF:temp=database.rrd:temp:AVERAGE LINE1:temp#0000FF:"Temperature [deg C]"
rrdtool graph temp_m.png --start -1m DEF:temp=database.rrd:temp:AVERAGE LINE1:temp#0000FF:"Temperature [deg C]"
rrdtool graph temp_y.png --start -1y DEF:temp=database.rrd:temp:AVERAGE LINE1:temp#0000FF:"Temperature [deg C]"
#0000FF means blue trace color in the graphs.
Das ist ein Beispiel was ich im Netzt gefunden habe, was so auch scheinbar funktioniert.
Wie kann ich nun der Variable tempread=`cat /home/ den Wert aus der GA 1/0/9 zuweisen?
Oder habe ich da grundsätzlich einen Gedankenfehler?.
Viele Grüße
Michael
|

13.01.2013, 17:56
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 14.12.2008
Beiträge: 4.828
|
|
Das ist kein CometVisu Thema - dort werden nur bestehende RRDs angezeigt...
Im WireGate Forum wurde gerade eben ein Thread gelöst, der auch genau das machen wollte: - √ - Grafik aus Gruppenadresse
Am einfachsten machst Du es wie dort per WireGate-Plugin.
__________________
TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!
|

13.01.2013, 18:23
|
 |
Benutzer
|
|
Registriert seit: 05.08.2009
Ort: Hamburg
Beiträge: 393
|
|
Zitat von Chris M.
Das ist kein CometVisu Thema - dort werden nur bestehende RRDs angezeigt...
|
Das ist mir schon klar, nur hier gibt es scheinbar die meisten User die damit umgehen.
Zitat von Chris M.
|
Habe ich doch geschrieben:
Ich suche jetzt schon seit zwei Tagen in allen möglichen Quellen nach einer Lösung, aber ich finde da irgendwie nicht den richtigen Ansatz, oder ich verstehe es nicht.
Und dieser Thread ist mir bekannt, habe aber kein WireGate.
Aber lass mal nach.
Gruß
Michi
|

13.01.2013, 19:08
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 14.12.2008
Beiträge: 4.828
|
|
Du brauchst halt einen Deamon der auf die KNX Gas hört und beim eintreffen eines Paketes eine Aktion auslöst.
Notfalls halt nur per cron z.B. alle 5 Minuten ausführen lassen und den letzten Wert aus dem eibd-Cache lesen - nicht sonderlich smart, da nicht Event gesteuert, aber für kontinuierliches wie eine Temperatur durchaus geeignet.
Eibd-Befehl wäre hier der groupchacheread.
Übersetzten des rohen Hex-Wertes in vernüntige Zahl bleibt dem geneigten Leser als Übung überlassen
__________________
TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!
|

13.01.2013, 19:26
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 27.09.2008
Beiträge: 4.635
|
|
Hoi
Deshalb hab' ich auch ein WG, weil ich da in einem Plugin eine Zeile eintrage und fertig.
Code:
$plugin_info{$plugname.'_cycle'} = $wg_config{''}{'rrd_interval'};
# Plugin liest Wert von KNX und legt ihn im RRD ab
update_rrd("egalwas","",knx_read("12/0/0",0,1));
Musst halt den wiregated daemon nachbauen...
__________________
Grüsse Bodo Nach bst. Wissen, ohne Gewähr; Fragen gehören ins Forum, und nicht in mein Postfach; EibPC-Fan; Wiregate-Fan; Alix1d mit eibd, linknx, knxweb, 30x 1-Wire, mjpg_streamer, e-mail, sms, growl-notif., CUL; Dreambox8000HD stream VLC's, TV-Browser start-record; Fritzbox 7270, voip; HP ProCurve 1810G 24 GE; Zotac ZBOX HD-ND22 mit SU2300 und Ubuntu 11.10 FullHD; MusicPal; SqueezeboxBoom; NEU Russound C5; iPhone 5 IOS6.1 JB PHP Lighty
|

21.02.2013, 20:44
|
|
Benutzer
|
|
Registriert seit: 02.05.2011
Beiträge: 469
|
|
@ Michixx
läuft´s nun bei Dir am Raspberry Pi?
(wenn ich das richtig verstehe ist das einfach ein Perl Script welches man über einen Cron-Job regelmäßig ausführen muss ...)
Geändert von Tqm (21.02.2013 um 20:46 Uhr)
|

22.02.2013, 08:41
|
 |
Benutzer
|
|
Registriert seit: 05.08.2009
Ort: Hamburg
Beiträge: 393
|
|
Ja,
das habe ich ganz einfach mit linknx und einem Bash-Skript gelöst, ist völlig easy.
Wie genau, das werde ich heute Nachmittag hier nachliefern.
PS: Hier nun wie ich es gelöst habe.
Der Temperaturwert wird nur bei Änderung der Temperatur in die Datenbank geschrieben
Code:
<objects>
<object id="Wohnzimmer_Temperature" gad="1/0/9" type="9.xxx" flags="cwu" init="persist" log="true">Wohnzimmer_Temperature</object>
</objects>
<rule id="Wohnzimmer_TEMP_LOG">
<condition type="object" id="Wohnzimmer_Temperature" trigger="true" />
<actionlist type="if-true">
<action type="shell-cmd" cmd="/home/rrdtool/update_database_wz.sh"/>
</actionlist>
</rule>
linknk ruft dann das Bash-Skript "update_database_wz. sh" auf und schreibt die Werte in die Datenbank
Code:
#!/bin/bash
cd /home/rrdtool
# Read temperature from sensor
tempread=`cat /var/lib/linknx/Wohnzimmer_Temperature`
temp=`echo $tempread | cut -c -4`
# Update database
rrdtool update database_wz.rrd N:$temp
Gruß
Michael
Geändert von Michixx (22.02.2013 um 16:35 Uhr)
Grund: Beitrag ergänzt
|

26.02.2013, 17:12
|
|
Benutzer
|
|
Registriert seit: 02.05.2011
Beiträge: 469
|
|
@Michael
Besten Dank - funktioniert einwandfrei
|

27.02.2013, 01:46
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 07.07.2007
Beiträge: 11.779
|
|
Nur der Vollständigkeit halber: bei Werten aus dem WG ist das nicht nötig und bei "fremden" ganz einfach via Plugin:
SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/rrd_graph.pl
Makki
__________________
EIB/KNX & HS3(+Lüfter+picoPSU80), Multiroom-AV mit Russound,mpd,vdr,DM8000, Profilux II+, N141 DALI, DMX, dez. Lüfter (RS485), Wärmepumpe (RS422), 30+ 1-Wire Temp,Luft&Bodenfeuchte,IRTrans
WireGate - Supportforum - bitte keine PN's!
Geändert von makki (27.02.2013 um 01:49 Uhr)
Grund: typo
|

28.02.2013, 19:08
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 14.08.2007
Beiträge: 1.402
|
|
Hallo,
Michixxs Lösung hat den Charme, dass die Werte direkt beim Senden auf den Bus auch als RRDs geschrieben werden (also quasi KNX-like eventgetriggert).
Das PL im Wiregate (funktioniert sehr gut - habe ich auch derzeit im Einsatz) speichert nur den letzten gesendeten Wert. Damit könnten ggf. wichtige Zwischenwerte verloren gehen.
Ich denke, es gibt gute Gründe, das Eine oder Andere zu verwenden (je nach Anforderung).
Viele Grüße,
Stefan
__________________
Mein Sammelsurium: TS2, Zennio Z38, BJ Raumpanel, Siemens LOGO!, Suntracer KNX, Weinzierl KNX ENO 620, Eibmarkt IP Router, Wiregate
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:43 Uhr.
|