[GELÖST] Logging nur nach Intervall oder Werteänderung OREGON Sensoren

Begonnen von Master_Nick, 29 Dezember 2016, 14:57:43

Vorheriges Thema - Nächstes Thema

Master_Nick

Guten Tag,

ich habe meine Anfrage mal hier eingesetzt, da es denke ich kein Zeichen dafür ist, dass ich mittlerweile alles verstanden habe, auch wenn FHEM bei mir bereits seit 2 1/2 Jahren arbeitet.

Ich habe einen nanoCUL und lese mit diesem meine 3  Oregon Scientific Sensoren aus.
Diese geben aber alle par Sekunden laut und es wird über ein FileLog (define FileLog_Kinderzimmer_Sensor_2 FileLog ./log/Kinderzimmer_Sensor_2-%Y.log THGR228N_b7_1) gesammelt was das Zeug hält.
Ich hatte nun schon einige Ideen dazu gefunden über dummys etc. Aber eigentlich müsste es ja auch über event-min-interval:.*:900 und event-on-change-reading:.* gehen oder ein verbose:2.

Nichts von all Dem greift aber. Muss ich das Log anders definieren als mit FileLog damit es klappt? Oder wo liegt mein Fehler :-)

Hier ein Auszug vom Log:
2016-12-29_14:51:01 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
2016-12-29_14:51:01 Kinderzimmer_Sensor_2 temperature: 22.3
2016-12-29_14:51:01 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_14:51:01 Kinderzimmer_Sensor_2 battery: ok
2016-12-29_14:51:01 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
2016-12-29_14:52:58 Kinderzimmer_Sensor_2 temperature: 22.3
2016-12-29_14:52:58 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_14:52:58 Kinderzimmer_Sensor_2 battery: ok
2016-12-29_14:52:58 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
2016-12-29_14:54:16 Kinderzimmer_Sensor_2 temperature: 22.3
2016-12-29_14:54:16 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_14:54:16 Kinderzimmer_Sensor_2 battery: ok
2016-12-29_14:54:16 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
2016-12-29_14:57:31 Kinderzimmer_Sensor_2 temperature: 22.3
2016-12-29_14:57:31 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_14:57:31 Kinderzimmer_Sensor_2 battery: ok
2016-12-29_14:57:31 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 temperature: 22.3
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 battery: ok
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 temperature: 22.3
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 battery: ok
2016-12-29_14:58:10 Kinderzimmer_Sensor_2 T: 22.3 H: 47 BAT: ok
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

Ich glaube der einfachste weg ist zwischen Sensor und Log ein notify zu bauen oder?
Hier http://fhem.de/commandref_DE.html#FileLog habe ich auch keine Möglichkeit gefunden dem Log zu sagen nur Änderungen zu loggen und bei den möglichen Attributen greift keines.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

KölnSolar

Da bin ich ja jetzt in der Pflicht. Nicht nur, dass ich um ein neues Thema bat, ICH hatte gedacht die Meldungen stünden im Syslog :-[

Verstehe nicht so recht wie Du auf dieses device THGR228N_b7_1 loggst und Kinderzimmer_Sensor_2-Logeinträge bekommst  ???

Zuerst solltest Du entscheiden, welche events Du überhaupt loggen willst. Eigentlich machen ja nur temperature und humidity Sinn, um sie später plotten zu können. Dann müsste die def so aussehen
define FileLog_Kinderzimmer_Sensor_2 FileLog ./log/Kinderzimmer_Sensor_2-%Y.log Kinderzimmer_Sensor_2:(temperature|humidity).*
Der Rest müsste funktionieren.
Grüße Markus
Edit: Und wenn es wider Erwarten doch nicht klappt, stell doch bitte ein list des devices hier ein.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Master_Nick

Ich habe den Sensor der per Autocreate angelegt wurde mit rename umbenannt in Kinderzimmer_Sensor_2.
Das Device dahinter heißt halt weiterhin THGR228N_b7_1 aber FHEM benennt dann alles so wie im rename genannt ;-)

Die Definition passt soweit - ja die Batterie kann man weg lassen, ich hatte sie tatsächlich nun mit in die Graphen eingebaut, wollte es später aber noch in eine WhatsApp oder E-Mail Benachrichtigung um münzen.

Die Frage ist ja eher wie kann ich verhindern, dass GLEICHE Werter erneut geloggt werden. Dennoch soll aber in einem Intervall von (erstmal) 15 Minuten  immer ein Log-Eintrag geschrieben werden.

Ich AHNE warum es nicht so einfach geht:

Im Event Monitor sieht man folgendes:
2016-12-29 18:54:07 OREGON Kinderzimmer_Sensor_2 temperature: 21.8
2016-12-29 18:54:07 OREGON Kinderzimmer_Sensor_2 humidity: 47
2016-12-29 18:54:07 OREGON Kinderzimmer_Sensor_2 battery: ok
2016-12-29 18:54:07 OREGON Kinderzimmer_Sensor_2 T: 21.8 H: 47 BAT: ok

Somit ist jedes Event anderen Inhaltes und er loggt sie somit. Ich muss also das define des Logs ändern wie von dir vorgeschlagen, auf immer das gleiche und nicht unterschiedliche Messages - ob das nun aber vom Oregon Modul kommt oder nur über das Log machbar ist... muss ich mal eben testen. ODER aber das event-on-change-reading:.* auf die temperature und humidity eingrenzen. :-D
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

KölnSolar

ZitatIch habe den Sensor der per Autocreate angelegt wurde mit rename umbenannt in Kinderzimmer_Sensor_2.
Das Device dahinter heißt halt weiterhin THGR228N_b7_1 aber FHEM benennt dann alles so wie im rename genannt ;-)
Neenee, meine Edith(s.o.) noch nicht gesehen ? Mach bitte mal das list.
Hast Du evtl. 2 devices ? Hab ich nach nem Batteriewechsel auch schon mal. Es wird ein neues device angelegt und ich ändere meine def auf die neue Id. Das autocreate-device muss man löschen ! Renamen geht doch gar nicht  :o
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Master_Nick

Rename geht gar nicht weil pfui pfui?  ;D
Hehe ok dann muss ich die nochmal händisch definieren - bisher arbeiten alle drei Sensoren durch den vom Autocreate angelegten. :-D

Hier das List:
Internals:
   CODE       THGR228N_b7_1
   DEF        THGR228N_b7_1
   IODev      nanoCUL
   LASTInputDev nanoCUL
   MSGCNT     1269
   NAME       Kinderzimmer_Sensor_2
   NR         79
   STATE      T: 21.8 H: 47 BAT: ok
   TIME       2016-12-29 19:22:04
   TYPE       OREGON
   nanoCUL_DMSG 501A2D10B7802170443D72
   nanoCUL_MSGCNT 1269
   nanoCUL_RAWMSG mAAAAAAAB32D4CB3554D4ACB35552D53554AD4D4CCAB534AC13
   nanoCUL_TIME 2016-12-29 19:22:04
   Readings:
     2016-12-29 19:22:04   battery         ok
     2016-12-29 19:22:04   humidity        47
     2016-12-29 19:22:04   temperature     21.8
Attributes:
   IODev      nanoCUL
   event-min-interval .*:900
   event-on-change-reading .*
   group      Messinstrumente
   room       Kinderzimmer,Messungen

Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

KölnSolar

pfui pfui geht natürlich  ;D
Nur mach es bitte rund und wenns damit(möglichst nach einem reboot) nicht klappt stellst Du die defs nochmal ein  ;)
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Master_Nick

Unrund ist es weil der Name vom Autocreate noch vor kommt in DEF und nicht nur in CODE wo er sein muss?


Die Geschichte mit dem neu definierten Log funktrioniert soweit - es wird nun nur Temperatur und Luftfeuchtigkeit geloggt - aber eben JEDE und nicht nur abweichende Werte oder alle 15 Minuten generell.

Und ich will genau das hier verhindern mehrfache Einträge direkt nacheinander ohne Änderung der Werte:
2016-12-29_19:59:46 Kinderzimmer_Sensor_2 temperature: 21.7
2016-12-29_19:59:46 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_19:59:47 Kinderzimmer_Sensor_2 temperature: 21.7
2016-12-29_19:59:47 Kinderzimmer_Sensor_2 humidity: 47
2016-12-29_20:00:25 Kinderzimmer_Sensor_2 temperature: 21.7
2016-12-29_20:00:25 Kinderzimmer_Sensor_2 humidity: 47


Ich glaube das Problem ist hier - das Log nimmt IMMER alles - es ist ja auch ein Log. Nur ein Notify was man dazwischen schaltet kann hier als Bremse agieren und dieses Notify füllt dann das Log.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

KölnSolar

ZitatUnrund ist es weil der Name vom Autocreate noch vor kommt in DEF und nicht nur in CODE wo er sein muss?
Auweia, jetzt wird's kompliziert. Wenn Du renamest wie Du nicht renamen sollst, sonst renamen aber nicht geht....  :-\ Ohh, da fällt mir gerade ein, es gibt ja noch den rename-Befehl und den hast Du benutzt :-[
Mit rund meinte ich nur, dass man dann an allen Stellen auch wirklich nur genau einen Namen für das Oregon-Device hat. Welcher ist ja egal.

Zurück zum Thema. Ich sehe noch 2 Möglichkeiten. Das Oregon-Modul unterstützt event-.... gar nicht. Dann hätte Ralf, der sich in letzter Zeit intensiver damit auseinandergesetzt hat, Dir vermutlich aber nicht den Vorschlag gemacht. Oder die .* Definitionen funktionieren nicht. Ich hab z.B. so, allerdings für ein anderes Modul,  definiert
attr device event-min-interval humidity:600,temperature:600
attr device event-on-change-reading humidity,temperature

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Ralf9

Es gibt auch noch die Möglichkeit, daß beim Oregon Modul das  event-min-interval nicht funktioniert. Das Oregon Modul ist ein recht altes Modul.
Wenn ich das richtig sehe, wurde es 2010 erstellt:
Zitat(c) 2010-2014 Copyright: Willi Herzig

Ich habe bei mir versucht es nachzustellen, bei mir hat das event-min-interval auch nicht funktioniert.

Ich werde mal hier nachfragen ob es bei jemand funktioniert
https://forum.fhem.de/index.php/topic,60170.msg547814.html#msg547814

@KölnSolar
ich ging davon aus, daß es funktioniert, da es bei allen anderen Modulen auch funktioniert.
Ich bin erstaunt, daß es damit Probleme gibt.
Wenn ich sicher wäre, daß es funktioniert, hätte ich es anders formuliert:
Zitatmit
event-min-interval:.*:300
und
event-on-change-reading:.*
sollte es eigentlich funktionieren.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Master_Nick

@KölnSolar
;) genau den hatte ich genutzt. Aber man lernt ja nur indem man Fehler macht ;-)
Nichts ist einfacher als das nochmal neu sauber anzulegen.  8)

Also die attr device event-min-interval humidity:600,temperature:600
attr device event-on-change-reading humidity,temperature
habe ich so übernommen - geht nicht.

Das in der 41_OREGON steht bei dem Sensor der von mir genutzt wird:
sub OREGON_common_temphydro {
  my $type = shift;
  my $longids = shift;
  my $bytes = shift;

  my $device = sprintf "%02x", $bytes->[3];
  #my $dev_str = $type.$DOT.$device;
  my $dev_str = $type;
  if (OREGON_use_longid($longids,$type)) {
  $dev_str .= $DOT.sprintf("%02x", $bytes->[3]);
  }
  if (OREGON_hi_nibble($bytes->[2]) > 0) {
  $dev_str .= $DOT.sprintf("%d", OREGON_hi_nibble($bytes->[2]));
  }

  my @res = ();
  OREGON_temperature($bytes, $dev_str, \@res);
  OREGON_humidity($bytes, $dev_str, \@res);
  OREGON_simple_battery($bytes, $dev_str, \@res);
  return @res;
}


In der ganzen Datei konnte ich nix zu on-event oder event finden... aber das ist auch für mich schon etwas drüber ich bin kein aktiver Programmierer aber auch nicht völlig ohne Kenntnis, nur bei FHEM fehlt mir da noch viel Wissen ;-)

@Ralf9 hey danke dir!  :D

Generell: Großartig wie man sich hier gegenseitig hilft! ;-) Hoffe ich kann auch bald was zurück geben.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

KölnSolar

Hi Ralf,

Willi ist ja schon urlange nicht mehr aktiv. Wenn ich es richtig in Erinnerung habe, hattest Du doch für Signalduino das Modul modifiziert. Ich meine mich auch zu erinnern, dass seitdem ein neuer maintainer gesucht wird. Wärst Du da nicht prädestiniert  8)
Wie ich das in den Sourcen verfolgen konnte war zuerst das Oregon-Modul entstanden und später daraus abgeleitet das TRX_WEATHER. Dort ist event-..... implementiert. Ich unterstütze gerne und kann insbesondere beim Test helfen, da ich einen 433CUL und den RFXTRX habe.

Was denkst Du ?
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Master_Nick

Hehe ich kann mit dem nanoCUL 433 testen :-)

Mit Softwaretest wiederum bin ich tatsächlich sogar im Arbeitsleben dabei (ISTQB Cert.).  ;)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Ralf9

Hallo Markus,

ich bin kein Developer und auch kein richtiger Programmierer.
Ich habe das Programmieren nicht gelernt, ich habe es mir selber beigebracht.
Mit meinen Perl Grundkenntnissen bin ich mittlerweile so weit, daß ich in den Modulen das was ich benötige einbauen kann.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Master_Nick

Nochmal zum Thema:

Ich hätte es nun erstmal über einen Workaround gelöst:

Der Sensor loggt nicht selber ist aber mit einem Notify gekoppelt und dieser setzt die Readings des Sensors bei einem Dummy (inkl. T: und H: als STATE im Dummy) und dort wird dann geloggt auf "event-min-interval:*:600" und "event-on-change-reading:humidity, temperature"

Soweit die Theorie...... aber er schreibt mir nix ins Log...

Sensor:
Internals:
   CFGFN
   CODE       THGR228N_b7_1
   DEF        THGR228N_b7_1
   IODev      nanoCUL
   LASTInputDev nanoCUL
   MSGCNT     95
   NAME       Kinderzimmer_Sensor_2
   NR         168
   STATE      T: 21.7 H: 46 BAT: ok
   TIME       2016-12-29 22:39:01
   TYPE       OREGON
   nanoCUL_DMSG 501A2D10B7702160443BB5
   nanoCUL_MSGCNT 95
   nanoCUL_RAWMSG mAAAAAAAB32D4CB3554D4ACB354ACD535552D4D4CB2B4CCB20D
   nanoCUL_TIME 2016-12-29 22:39:02
   Readings:
     2016-12-29 22:39:01   battery         ok
     2016-12-29 22:39:01   humidity        46
     2016-12-29 22:39:01   temperature     21.7
Attributes:
   IODev      nanoCUL
   group      Messinstrumente
   room       Kinderzimmer,Messungen


Notify:
Internals:
   CFGFN
   DEF        Kinderzimmer_Sensor_2 {
my $t= ReadingsVal("Kinderzimmer_Sensor_2","temperature",0);;
my $h= ReadingsVal("Kinderzimmer_Sensor_2","humidity",0);;
fhem("setreading Kinderzimmer_Sensor_2_Logger temperature $t ;
setreading Kinderzimmer_Sensor_2_Logger humidity $h ;
setstate Kinderzimmer_Sensor_2_Logger T: $t H: $h")
}
   NAME       Kinderzimmer_Sensor_2_Trigger
   NOTIFYDEV  Kinderzimmer_Sensor_2
   NR         256
   NTFY_ORDER 50-Kinderzimmer_Sensor_2_Trigger
   REGEXP     Kinderzimmer_Sensor_2
   STATE      2016-12-29 22:40:19
   TYPE       notify
   Readings:
     2016-12-29 22:17:06   state           active
Attributes:
   room       Messungen


Dummy:
Internals:
   CFGFN
   NAME       Kinderzimmer_Sensor_2_Logger
   NR         409
   STATE      T: 21.7 H: 46
   TYPE       dummy
   CHANGED:
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     temperature: 21.8
     humidity: 46
     humidity: 46
     humidity: 46
     temperature: 21.8
     humidity: 46
   Readings:
     2016-12-29 22:40:58   humidity        46
     2016-12-29 22:40:58   temperature     21.7
Attributes:
   event-min-interval *:600
   event-on-change-reading humidity,temperature
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)