Hi Boris & Tobias!
Ich möchte den den "original" titel des theads wieder aufwärmen.... weil das für mich ein sehr interessantes Thema ist.
Ich hab versucht, die SQL Abfrage insofern zu ändern, dass es mit mySQL funktioniert.
1)Auszug aus der Konfiguration:
define my_DbLog DbLog /opt/etc/fhem_mhdb.cfg .*:(temperature|humidity|pressure|wind|wind_condition).*
attr my_DbLog comment record all temp and humidity events (incl. avg) to mysql
define testwl weblink dbplot my_DbLog:AussenTempHum_db
attr testwl fixedrange 2012-08-01 2012-08-30
attr testwl label "AussenTemperatur/Humidity current Month T-min: $data{min1} T-max: $data{max1}"
2)AussenTempHum_db.gplot
...
#DbLog AussenTempHum:temperature:10:
#DbLog AussenTempHum:humidity:50:
....
wobei mich die Erkenntniss, das das #DbLog heissen muß (statt #FileLog) einige Stunden gekostet hat....
3) Modifikationen der 93_DbLog.pm
sorry, ich kann kein diff anbieten, weil ich noch etliche andere Modifikationen im DbLog drin hab, die mit diesem Problem nichts zu tun haben....
Ich poste den relevanten Teil, basierend auf der
SVN Version UND dem diff in diesem Thread.
......
##MHy1 prepare IN string for SQL
my $jstring = "";
if (int(@readings) > 0) {
$jstring = join(",", @readings);
} else {
$jstring = "\'dummy\'";
}
my $dbh= $hash->{DBH};
my $stm= "SELECT REPLACE(TIMESTAMP,' ','_'), DEVICE, READING, VALUE
FROM history
WHERE 1 =1
AND CONCAT(DEVICE,'|',READING) IN ($jstring)
AND TIMESTAMP BETWEEN '$from' AND '$to'
ORDER BY DEVICE, READING, TIMESTAMP";
# Log 1, "STM_result=$stm ";
my $sth= $dbh->prepare($stm) ||
return "Cannot prepare statement $stm: $DBI::errstr";
my $rc= $sth->execute() ||
return "Cannot execute statement $stm: $DBI::errstr";
#return "<result of execution $stm: $rc $DBI::errstr";
#$retval .= "$stm \n";
my ($aktrow, $lastrow) = ("", "");
while( ($sql_timestamp,$sql_dev,$sql_reading,$sql_value)= $sth->fetchrow_array) {
$aktrow = "#".$sql_dev.":".$sql_reading."::\n";
if ($lastrow ne $aktrow && $lastrow ne "") {
$retval .= $lastrow;
}
$retval .= "$sql_timestamp $sql_value\n";
$lastrow = $aktrow;
}
$retval .= $lastrow;
if($internal) {
$internal_data = \$retval;
return undef;
}
return $retval;
}
################################################################
1;
Damit läuft ein
get my_DbLog - - 2012-08-20 2012-08-22 AussenTempHum:temperature und auch der weblink funktioniert.
Ich kann mir denken, daß Ihr dzt. viel zu tun habt, mit der 5.3 Release, aber vielleicht ergibt sich ja irgendwann die Möglichkeit, das einzubauen.
l.g. erwin