Hallo,
ich würde gerne manuell einen Eintrag im DBLOG (sqlite) erzeugen.
Ist das nur über das userCommand möglich?
set logdb userCommand 'INSERT INTO HISTORY VALUES ('2015-06-30 21:20:26', 'Counter', Counter, 'value: 3', 'value',3 );'
mag er bei mir nicht.
Wahrscheinlich sind die '''' falsch. Oder?
wenn dein counter in der regex des dblog device enthalten ist kannst du mit trigger ein passendes event erzeugen das dann wie die events der normalen readings im log landet. etwa so:trigger Counter Value: 3
gruss
andre
Danke für die schnelle Reaktion. Das probiere ich mal aus.
Habe mir hierzu eine addDbLog() Funktion gebaut, da ich ohne ein Event auszulösen (oder dies in jedem notify abzufangen), den Plot-Abriss vermeiden wollte.
###############################################################################
sub addDbLog($$) {
my ($dev,$reading) = @_;
my $dbLogDevice = 'dbLog';
if ( $defs{$dev} ) {
if ( defined $defs{$dev}->{READINGS}->{$reading} ) {
my $sqlValues = "'".TimeNow()."','"
.$dev."','"
.uc($defs{$dev}->{TYPE})
."','".(($reading eq 'state') ? '' : $reading.": ").$defs{$dev}->{READINGS}->{$reading}->{VAL}."','"
.$reading."','"
.$defs{$dev}->{READINGS}->{$reading}->{VAL}."',''";
CommandSet(undef, $dbLogDevice.' userCommand INSERT INTO HISTORY VALUES ('.$sqlValues.');');
}else { Log 1, "addDbLog(): Reading '$reading' not found on device '$dev'"; }
}else { Log 1, "addDbLog(): Device '$dev' is not defined"; }
}
###############################################################################
Aufzurufen wie das normale addLog() mit addDbLog("deviceName","readingName")
In der Funktion muss noch die variable $dbLogDevice mit dem DbLog-DeviceNamen angepasst werden.
Sinn macht es hierbei ein 'attr <DbLogDevice> DbLogExclude userCommand' zu setzen, da sonst jeder addDbLog Befehl nochmal zusätzlich geloggt wird.
Gruß
Hallo rapster,
die Funktion addDbLog klingt sehr interessant. Sowas habe ich schon lange gesucht. Wie kann man diese in FHEM einbauen und verwenden?
Vielen Dank im Voraus, Saturus