FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: dkalass am 09 Mai 2019, 10:09:23

Titel: Aus 99_MyUtils.pm in eigenes Log schreiben
Beitrag von: dkalass am 09 Mai 2019, 10:09:23
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
Titel: Antw:Aus 99_MyUtils.pm in eigenes Log schreiben
Beitrag von: rabehd am 09 Mai 2019, 10:32:57
Wieso schreibt RegenmengeTag nicht in das Log?
Das geht doch über die Definition des Log.
Titel: Antw:Aus 99_MyUtils.pm in eigenes Log schreiben
Beitrag von: Otto123 am 09 Mai 2019, 10:40:15
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
Titel: Antw:Aus 99_MyUtils.pm in eigenes Log schreiben
Beitrag von: Beta-User am 09 Mai 2019, 11:11:05
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...
Titel: Antw:Aus 99_MyUtils.pm in eigenes Log schreiben
Beitrag von: dkalass am 09 Mai 2019, 16:37:45
Danke Otto, geht!