Aus 99_MyUtils.pm in eigenes Log schreiben

Begonnen von dkalass, 09 Mai 2019, 10:09:23

Vorheriges Thema - Nächstes Thema

dkalass

Hallo zusammen,
ich habe ein Dummy Device erstellt, welches einen Wert der Regenmenge pro Tag enthält.
Der Notify setzt diesen Wert:
Wetterstation {fhem("set Regenmenge ". (ReadingsVal("Wetterstation", "rain", 0) - ReadingsVal("RegenmengeOffset", "state", 0)))}

Mein At Job berechnet diesen Wert alle 5 Minuten neu und setzt um 00:00:00 Uhr den neuem Offset.
+*00:05:00 {BestimmeRegenmengeProTag()}

99_MyUtils.pm
sub BestimmeRegenmengeProTag()
{
   my $logfile = @_;
   my $menge = "";
   my $tagmenge = "";
   my $offset = "";
   # my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
   my $Stunde = (strftime("%H",localtime(time())));
   my $Minute = (strftime("%M",localtime(time())));
   my $Sekunde = (strftime("%S",localtime(time())));
   # Log 3, "Uhrzeit: $Stunde:$Minute:$Sekunde Uhr";
   if($Stunde == 00 && $Minute < 06 && $Sekunde < 59)
     {
        $offset .= ReadingsVal("Wetterstation", "rain", 0);
        Log 4, "File: $logfile, RegenmengeOffset: $offset";
        { fhem("set RegenmengeOffset $offset") };
        Log 4, "File: $logfile, Bedingung Reset erfüllt: $Stunde:$Minute:$Sekunde Uhr";
     }
     else
     {
        $menge .= (ReadingsVal("Wetterstation", "rain", 0) - ReadingsVal("RegenmengeOffset", "state", 0));
        $tagmenge .= (ReadingsVal("Wetterstation", "rain", 0));
        Log 4, "File: $logfile, Regenmenge gesamt: $menge mm";       
        Log 4, "File: $logfile, RegenmengeTag: $tagmenge mm";
        { fhem("set RegenmengeTag $tagmenge");
        # Log 4, "File: $log, Bedingung nicht erfüllt: $Stunde:$Minute:$Sekunde Uhr";
      }
        return $tagmenge;
   }
}

Ich möchte gerne den durch das Sub errechneten Wert direkt in das Logfile "./log/Regenmege_Pro_Tag-%Y.log Regenmenge_Tag" schreiben.

Ich habe das mit AddLog versucht, leider ohne Erfolg:

##########################################################
#### Log-abriss vermeiden
# called by
# define addLog notify addLog {addLog("ez_Aussensensor","state");;\
#            addLog("ez_FHT","actuator");;\
#            addLog("MunichWeather","humidity");;\
#            addLog("MunichWeather","pressure");;\
#            addLog("MunichWeather","temperature");;\
#            addLog("MunichWeather","wind_chill");;}
# define a_midnight1 at *23:59 trigger addLog
# define a_midnight2 at *00:01 trigger addLog
sub
addLog($$) {
  my ($logdevice, $reading) = @_; # device and reading to be used
  my $logentry = ReadingsVal($logdevice,$reading,"addLog: invalid reading");
  if ($reading =~ m,state,i) {
    fhem "trigger $logdevice $logentry   << addLog";
  } else {
    fhem "trigger $logdevice $reading: $logentry   << addLog";
  }
}

Wo muss ich AddLog einbinden und wie?
Oder kann ich mit einen Perl Befehl direkt in das Log schreiben?

Vielen Dank

rabehd

Wieso schreibt RegenmengeTag nicht in das Log?
Das geht doch über die Definition des Log.
Auch funktionierende Lösungen kann man hinterfragen.

Otto123

Warum willst Du es kompliziert machen?
Vorschlag einfach direkt in FHEM? Was spricht dagegen?
define FileLog_Regenmenge FileLog ./log/Regenmenge-%Y.log Regenmenge.*
attr FileLog_Regenmenge logtype text


Hinweis: bitte CodeTags verwenden https://forum.fhem.de/index.php/topic,71806.0.html

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Frage:
Gab's für diese Art der Datenerfassung nicht statistics (https://wiki.fhem.de/wiki/Statistics)?

Und allg. der Hinweis: Log verwendet intern Log3. Es wäre mir neu, dass damit in was anderes als das fhem-log geschrieben werden könnte.
Dafür müßtest du "normale" Dateioperationen verwenden...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

dkalass