FHEM Forum

FHEM => Sonstiges => Thema gestartet von: alec_osborne am 30 Juni 2015, 22:03:53

Titel: manuellen Eintrag mit DBLOG erzeugen
Beitrag von: alec_osborne am 30 Juni 2015, 22:03:53
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?
Titel: Antw:manuellen Eintrag mit DBLOG erzeugen
Beitrag von: justme1968 am 30 Juni 2015, 22:21:10
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
Titel: Antw:manuellen Eintrag mit DBLOG erzeugen
Beitrag von: alec_osborne am 30 Juni 2015, 23:07:22
Danke für die schnelle Reaktion. Das probiere ich mal aus.
Titel: Antw:manuellen Eintrag mit DBLOG erzeugen
Beitrag von: rapster am 14 Juli 2015, 01:52:26
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ß
Titel: Antw:manuellen Eintrag mit DBLOG erzeugen
Beitrag von: saturus am 03 Januar 2016, 17:16:13
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