neues Modul 98_readingsWatcher , war 98_ReadingsSupervision

Begonnen von Wzut, 15 Februar 2016, 20:49:53

Vorheriges Thema - Nächstes Thema

Wzut

a. ich habe im ersten Post eine neue Version des Moduls angehängt
b.  foreach (keys %{$hash->{READINGS}})   ist so drin
c . Events :
@Frank : ja Timeout,, stellt sicher das das reading unverändert bleibt und kein Event erzeugt wird. Egal wie das neue Attribut client-event gesetzt ist.
Neues Attribut client-event 0 oder 1 (default 0)
Bei client-event 0 wird das zu überwachende Device keinen Event erzeugt auch wenn der Wert des Readings durch das Modul überschieben wird.
Damit lässt sich z.B das Problem von Feurerdrache recht einfach lösen, d.h. ersetzen des Wertes bei Timeout ja aber kein Event und damit auch keine "Zacken" im Logfile.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

frank

hallo wzut,

jetzt habe ich hiermit ein problem.

use Date::Parse;

ZitatCan't locate Date/Parse.pm in @INC (@INC contains: /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2 /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2 /opt/lib/perl5/site_perl/5.12.2/mips-linux /opt/lib/perl5/site_perl/5.12.2 /opt/lib/perl5/5.12.2/mips-linux /opt/lib/perl5/5.12.2 . ./FHEM) at ./FHEM/98_ReadingsSupervision.pm line 35.
BEGIN failed--compilation aborted at ./FHEM/98_ReadingsSupervision.pm line 35.

$Timestamp = str2time($TimestampString);
hm....

geht das vielleicht auch anders?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Feuerdrache

Hallo Wzut,
danke für die schnelle Reaktion, hab es gerade eingespielt.

Gruß FD
FHEM auf Raspberry PI B2
- CUL V3.4 mit culfw 1.65 für HM
- nanoCUL mit culfw 1.66 für KOPP FreeControl

Wzut

Zitat von: frank am 24 Februar 2016, 20:06:22
geht das vielleicht auch anders?

tztz , diese Fritzboxen ....
ja der alte Weg steht noch auskommentiert im Modul :

#($date, $time)        = split( ' ', $TimestampString );
#($year, $month, $day) = split( '-', $date );
#($hour, $min, $sec )  = split( ':', $time );
#$Timestamp = timelocal( $sec, $min, $hour, $day, $month-1, $year );
$Timestamp = str2time($TimestampString);

wirf das use und Zeile $Timestamp = str2time($TimestampString); raus und entferne bei den anderen vier Zeilen den #
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

frank

hallo wzut,

wie wäre es hiermit:
time_str2num("YYYY-MM-DD HH:MM:SS") returns a numerical value, which makes computation of time differences easier
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Wzut

ok, Weg Nr 47 von 99 nach Rom :)
schaut man in die Funktion reduziert sie lediglich die drei einzel splits von HCS auf einen :
@a = split("[- :]", $str);
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

frank

mein server sagt danke.
der chef hat ein herz für schwache maschinen, so wie du wohl auch.  :)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Feuerdrache

Hi Wzut,
wollte dir mal eine kurze Rückmeldung geben. Das Modul läuft bei mir wunderbar und macht überhaupt keine Probleme.

TOP

Gruß FD
FHEM auf Raspberry PI B2
- CUL V3.4 mit culfw 1.65 für HM
- nanoCUL mit culfw 1.66 für KOPP FreeControl

Sheridan

Hallo zusammen,

danke für das Modul, genau sowas habe ich gesucht!

Wäre es möglich, dass man die devices mittels Wildcard und/oder als Typ spezifiziert? Wenn man für alle Temperatursensoren die Überwachung anmachen will, muss man sehr viele auflisten, da wäre z.B. lacTH.* oder LaCrosse als Angabe schon super angenehm...

Bin leider nicht tief genug in FHEM, um sowas selbst hinzubasteln...

Viele Grüße,
-Sheridan
FHEM auf RasPi 4 mit CUL (MAX), CUL (IT), JeeLink (LaCrosse), JeeLink (EC3000), DuoFern, Razberry (ZWave) sowie Fritz!Box, Enigma2, Squeezebox, Google Assistant (inkl. Nest Hub 2)
FHEM auf RasPi 3 mit CUL (MAX), TUL (KNX), CUBe (MAX), EnOceanPi (EnOcean)

Wzut

Sobald das Modul einmal definiert ist hat jedes deiner vorhanden Geräte ein neues userattr.
Das kannst du in der Kommandozeile auch für ganze Gruppen in einem Rutsch setzen , bsp
attr Temp\..* userattr readingsSupervision 900,,temperature
würde allen Geräten deren Namen mit Temp beginnt das userattr  readingsSupervison mit dem Wert 90,,temperatur belegen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Amenophis86

Was mache ich falsch, wenn das userattr nicht angelegt wird? Ich definiere das Device wie folgt:

define myRS ReadingsSupervision und wenn ich es richtig verstanden habe, dann müsste jetzt überall das userattr ReadingsSupervision auftauchen, oder nicht? Passiert aber nicht :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Wzut

#26
Vollkommen richtig , mehr gibt es beim define nicht anzugeben und das dann an allen geräten das neue Attribut sofort zur Verfügung steht hatte betateilchen auf Seite 1 ja als Mangel eingestuft. Ich habe das Ding ja selbst in Benutzung und hat bis jetzt immer ohne Probleme geklappt, aber ich probiere gern nochmal ein paar Varianten auf meinem Testsystem durch. 

Edit : habe es gerade aufs Testsystem kopiert und definiert. Das neue Attr ist sofort an allen Geräten verfügbar, aber schau mal genau in die Liste das attr nennt sich readingsSupervison , mit kleinem r zwischen icon & room
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Amenophis86

Aus mir unbekannten Gründen erscheint das Reading auf meinem Test System nicht. Habe es auch schon zwei mal gelöscht und auch einen anderen Namen für das userattr genutzt, hilft auch nix. Komisch.

Hier mal ein List des Device:
Internals:
   ATTR       readingsSupervision
   CFGFN     
   NAME       myRS
   NOTIFYDEV  global
   NR         45
   STATE      ok
   TYPE       ReadingsSupervision
   READINGS:
     2018-01-26 17:48:46   state           ok
Attributes:


Und ich gehe davon aus, dass im globel attr userattr das Reading readingsSupervison auftauchen müsste, oder? Da ist es auch nicht:

Internals:
   DEF        no definition
   NAME       global
   NR         1
   STATE      no definition
   TYPE       Global
   currentlogfile ./log/fhem-2018-01.log
   logfile    ./log/fhem-%Y-%m.log
Attributes:
   autoload_undefined_devices 1
   autosave   0
   configfile fhem.cfg
   exclude_from_update commandref fhemicon
   logfile    ./log/fhem-%Y-%m.log
   modpath    .
   motd       SecurityCheck:
  WEB is not password protected
  telnetPort is not password protected

Protect this FHEM installation by defining an allowed device with define allowed allowed
You can disable this message with attr global motd none
   statefile  ./log/fhem.save
   updateInBackground 1
   userattr   cmdIcon devStateIcon devStateStyle icon msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType:text,push,mail,screen,light,audio,queue sortby webCmd webCmdLabel:textField-long widgetOverride
   verbose    3
   version    fhem.pl:15804/2018-01-06
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Wzut

Zitat von: Amenophis86 am 26 Januar 2018, 17:53:20
Und ich gehe davon aus, dass im globel attr userattr das Reading readingsSupervison auftauchen müsste, oder? Da ist es auch nicht:
Richtig in der sub Initialize steht am Ende
addToAttrList("readingsSupervision");
das sorgt eigentlich dafür das die vorhandene Liste global attr userattr um diesen Eintrag  erweitert wird.
Wenn der Automatismus bei dir fehlschlägt dann füge den Eintrag doch händisch hinzu und du dann testen kannst ob wenigisten der Rest bei dir funktioniert.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Amenophis86

Joa den Fehler habe ich mir schon gedacht, als ich mir den Code angesehen habe und keine entsprechende Zeile gefunden habe. So sieht die Sub bei mir aus (PM aus dem ersten Post):

sub ReadingsSupervision_Initialize($)
{
   my ($hash) = @_;
   $hash->{GetFn}     = "ReadingsSupervision_Get";
   $hash->{SetFn}     = "ReadingsSupervision_Set";
   $hash->{DefFn}     = "ReadingsSupervision_Define";
   $hash->{UndefFn}   = "ReadingsSupervision_Undefine";
   $hash->{AttrList}  = "disable:0,1 interval client-event:0,1 ".$readingFnAttributes;
}


und auch nirgends sonst im Code kommt die addToAttrList() Funktion. Habe die Funktion jetzt mal händisch hinzugefügt und dann klappt es auch beim definieren.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...