Zurück   KNX-User-Forum > Supportforen > CometVisu
knx-user-forum - International KNX Award Winner 2010


Links
Kalender
Spende

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.01.2013, 16:22
Benutzerbild von Michixx
Benutzer
 
Registriert seit: 05.08.2009
Ort: Hamburg
Beiträge: 393
Michixx ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #2  
Alt 13.01.2013, 17:56
Benutzerbild von Chris M.
Erfahrener Benutzer
 
Registriert seit: 14.12.2008
Beiträge: 4.828
Chris M. sorgt für eine eindrucksvolle AtmosphäreChris M. sorgt für eine eindrucksvolle AtmosphäreChris M. sorgt für eine eindrucksvolle AtmosphäreChris M. sorgt für eine eindrucksvolle Atmosphäre
Standard

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!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #3  
Alt 13.01.2013, 18:23
Benutzerbild von Michixx
Benutzer
 
Registriert seit: 05.08.2009
Ort: Hamburg
Beiträge: 393
Michixx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat von Chris M. Beitrag anzeigen
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. Beitrag anzeigen

Im WireGate Forum wurde gerade eben ein Thread gelöst, der auch genau das machen wollte: http://knx-user-forum.de/wiregate/24231-grafik-aus-gruppenadresse.html

Am einfachsten machst Du es wie dort per WireGate-Plugin.
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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #4  
Alt 13.01.2013, 19:08
Benutzerbild von Chris M.
Erfahrener Benutzer
 
Registriert seit: 14.12.2008
Beiträge: 4.828
Chris M. sorgt für eine eindrucksvolle AtmosphäreChris M. sorgt für eine eindrucksvolle AtmosphäreChris M. sorgt für eine eindrucksvolle AtmosphäreChris M. sorgt für eine eindrucksvolle Atmosphäre
Standard

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!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #5  
Alt 13.01.2013, 19:26
Benutzerbild von Bodo
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Ort: Zürich
Beiträge: 4.635
Bodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle Atmosphäre
Standard

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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #6  
Alt 21.02.2013, 20:44
Tqm Tqm ist gerade online
Benutzer
 
Registriert seit: 02.05.2011
Beiträge: 469
Tqm befindet sich auf einem aufstrebenden Ast
Standard

@ 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)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #7  
Alt 22.02.2013, 08:41
Benutzerbild von Michixx
Benutzer
 
Registriert seit: 05.08.2009
Ort: Hamburg
Beiträge: 393
Michixx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #8  
Alt 26.02.2013, 17:12
Tqm Tqm ist gerade online
Benutzer
 
Registriert seit: 02.05.2011
Beiträge: 469
Tqm befindet sich auf einem aufstrebenden Ast
Standard

@Michael

Besten Dank - funktioniert einwandfrei
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #9  
Alt 27.02.2013, 01:46
Benutzerbild von makki
Erfahrener Benutzer
 
Registriert seit: 07.07.2007
Beiträge: 11.779
makki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäre
Standard

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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #10  
Alt 28.02.2013, 19:08
Benutzerbild von lobo
Erfahrener Benutzer
 
Registriert seit: 14.08.2007
Ort: Mainz
Beiträge: 1.402
lobo wird schon bald berühmt werden
Standard

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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[WireGate-Plugin] ComfoAir Steuerung über RS232 swiss Code-Schnipsel 301 17.05.2013 07:35
Charts mal wieder...... :( yapon eibPC 54 24.02.2013 16:57
Probleme beim Konvertieren ttrepper eibPC 16 17.12.2012 16:23
Mehrere iPads, GA-Status aktualisert immer nur eines Xceno eibPC 37 16.09.2011 20:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:43 Uhr.



SEO by vBSEO