|
 |

21.01.2013, 13:09
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
- √ - rrdfetch und Response
Hallo
Ich möchte in meinen CV-Diagram auch die RRDs vom FLUSKO anzeigen.
In der CV visu_config,xml habe ich folgendes Diagram erstellt.
Code:
<diagram height="300px" width="700px" period="24" refresh="300" series="hour" gridcolor="#707070" popup="true" previewlabels="true" tooltip="true" legendposition="nw">
<label>FLUSKO</label>
<axis position="right" unit=" W">temp</axis>
<rrd yaxis="temp" color="#ffff00" label="FLUSKO">flusko</rrd>
</diagram>
Diese RRDs kann man mit Hilfe von CURL von einer FLUSKO-API ausgeben lassen.
Dazu habe ich unter /usr/lib/cgi-bin/rrdfetch etwas erweitert.
Code:
#!/bin/sh
#echo Content-Type: text/plain
echo Content-Type: application/json
echo Content-Encoding: gzip
echo
#rrdtool fetch /var/www/rrd/Luftfeuchte_Bad_knx5-2-79.rrd AVERAGE -s-24h
RRD=`echo "$QUERY_STRING" | sed -n 's/^.*rrd=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
DS=`echo "$QUERY_STRING" | sed -n 's/^.*ds=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
START=`echo "$QUERY_STRING" | sed -n 's/^.*start=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
END=`echo "$QUERY_STRING" | sed -n 's/^.*end=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
RES=`echo "$QUERY_STRING" | sed -n 's/^.*res=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
#FIXME: check path traversal
# rrdtool fetchj /var/www/rrd/$RRD $DS -s$START -e$END -r$RES | gzip -c
if [ "$RRD" == "flusko.rrd" ]
then
#wget -O - http://wiregate544/flot/curl_abfrage.php
result=$(wget -qO- http://wiregate544/flot/curl_abfrage.php)
echo "$result"
echo "$result" >> /var/www/myhouse/log/flusko.txt
else
rrdtool fetchj /var/www/rrd/$RRD $DS -s$START -e$END -r$RES | gzip -c
fi
$result liefert nun die gleiche Antwort wie rrdfetch in Firebug Konsole allerdings wird mein Response in Firebug nicht angezeigt.
Ich schreibe zur Kontrolle mit
"echo "$result" >> /var/www/myhouse/log/flusko.txt"
die Antwort in eine Datei, dort kommt sie richtig an.
Wie kann ich denn eine Anwort an die CV senden?
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

21.01.2013, 14:23
|
|
Benutzer
|
|
Registriert seit: 14.01.2010
Ort: NRW
Beiträge: 36
|
|
Hi,
auf die Schnelle würde ich sagen dass du die Ausgabe noch mit GZIP komprimieren musst, also: echo "$result" | gzip -c .
Gruß
Carsten
|

21.01.2013, 15:04
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Ja jetzt ist die Antwort da, aber mein Diagram zeigt nicht an.
Der Timestamp in der Antwort muss wohl der Java-Script Timestamp in ms sein?
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

21.01.2013, 15:15
|
|
Benutzer
|
|
Registriert seit: 14.01.2010
Ort: NRW
Beiträge: 36
|
|
Ja der Timestamp muss in ms sein. Ich hatte ein ähnliches Problem mit dem Timestamp aus einer MySQL-DB. Hab dann einfach bei der Ausgabe "000" angehängt.
Allerdings wurde das Diagramm bei mir trotzdem schon angezeigt, nur mit einer falschen Zeiteinteilung. Vielleicht stimmt doch noch etwas an deinem Aufbau des JSON-Format nicht.
Gruß
Carsten
|

21.01.2013, 16:07
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Hier mal der API-Aufruf mit PHP.
Code:
function curl_abfrage($token,$url,$sensor_id,$interval,$unit){
$request = $url.$sensor_id."?interval=".$interval. "&unit=" . $unit;
$header=array();
$header[]="Accept: application/json";
$header[]="X-Version: 1.0";
$header[]='X-Token: '.$token;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$request);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$str=curl_exec($ch);
curl_close($ch);
# $str=json_decode($str);
# for($x = 0; $x < count($str); $x++) {
# $str[$x][0] = $str[$x][0]."000"; # Timestamp an JS-Timestamp anpassen
# }
# $str=json_encode($str);
return($str);
}
Wenn ich das so aufrufe bekomme ich das in Firebug so angezeigt.
Code:
GET http://wiregate544/cgi-bin/rrdfetch?rrd=flusko.rrd&ds=AVERAGE&start=end-24hour&end=now&res=60
200 OK
[IMG]chrome://firebug/content/blank.gif[/IMG] 1.61sjquery.js (Zeile 8434)
ParameterHeaderAntwortJSONCookies
[[1358693100,419],[1358694000,421],[1358694900,763],[1358695800,692],[1358696700,589],[1358697600,598],[1358698500,716],[1358699400,715],[1358700300,635],[1358701200,561],[1358702100,561],[1358703000,664],[1358703900,682],[1358704800,631],[1358705700,565],[1358706600,551],[1358707500,571],[1358708400,642],[1358709300,627],[1358710200,646],[1358711100,556],[1358712000,563],[1358712900,589],[1358713800,605],[1358714700,619],[1358715600,634],[1358716500,588],[1358717400,657],[1358718300,674],[1358719200,564],[1358720100,647],[1358721000,633],[1358721900,542],[1358722800,597],[1358723700,574],[1358724600,384],[1358725500,377],[1358726400,435],[1358727300,592],[1358728200,532],[1358729100,682],[1358730000,684],[1358730900,724],[1358731800,687],[1358732700,598],[1358733600,581],[1358734500,595],[1358735400,513],[1358736300,430],[1358737200,428],[1358738100,364],[1358739000,339],[1358739900,352],[1358740800,401],[1358741700,351],[1358742600,332],[1358743500,366],[1358744400,385],[1358745300,402],[1358746200,390],[1358747100,431],[1358748000,402],[1358748900,355],[1358749800,409],[1358750700,401],[1358751600,336],[1358752500,373],[1358753400,367],[1358754300,414],[1358755200,420],[1358756100,542],[1358757000,727],[1358757900,525],[1358758800,464],[1358759700,433],[1358760600,403],[1358761500,492],[1358762400,426],[1358763300,483],[1358764200,454],[1358765100,2189],[1358766000,470],[1358766900,449],[1358767800,465],[1358768700,419],[1358769600,404],[1358770500,573],[1358771400,483],[1358772300,485],[1358773200,398],[1358774100,365],[1358775000,476],[1358775900,539],[1358776800,496],[1358777700,444],[1358778600,667],[1358779500,"-nan"]]
Der Timestamp ist in sec.
Mache ich die Kommentare raus dann habe ich den Timestamp in ms,
aber er steht dann in der Firebug Ausgabe in ""
Code:
[["1358694000000",421],["1358694900000",763],["1358695800000",692],["1358696700000",589],
bei einem CV-Diagram sieht die Ausgabe so aus,
da ist vor jedem Timestamp eine [
und vor Value eine [
und hinter Value zwei ]].
und Value steht in "".
Code:
[[1358650500000,["23.40"]],[1358650800000,["23.40"]],[1358651100000,["23.40"]],
Wie stelle ich das an, da ich das gleiche Ausgabeformat bekomme?
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

21.01.2013, 16:27
|
|
Benutzer
|
|
Registriert seit: 14.01.2010
Ort: NRW
Beiträge: 36
|
|
Mit dieser Curl-Funktion kenne ich mich leider nicht aus. Ich hatte mir in C ein Programm geschrieben, dass anhand der Übergabeparameter die Daten aus einer MySQL-DB selektiert und diese in dem richtigen Format zusammenbaut.
Gruß
Carsten
|

21.01.2013, 16:58
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Ich werde das auch wohl zusammenbauen.
Vielen Dank
NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

21.01.2013, 17:37
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
So geht es.
Code:
$str=json_decode($str);
$time_value = "[";
for($x = 0; $x < count($str); $x++) {
$time_value = $time_value . "[" . $str[$x][0] . "000" . ",[" . '"' . $str[$x][1] . '"' . "]],";
}
$str = substr_replace($time_value,']',-1,1);
return($str);
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

24.01.2013, 03:28
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 07.07.2007
Beiträge: 11.779
|
|
Siehe auch - √ - Diagram_inline-Plugin zeigt keine Daten an
Es wäre mittelfristig sehr zielführend eine "Version" in den JSON-Output zu packen. Also bitte das auch alle -> rrdtool-devel schicken und das auch zu untermauern.
Makki
P.S.: Warum verwendet OpenWRT wohl rrdtool 1.0
__________________
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!
|
| 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 05:54 Uhr.
|