sub Funktion in 99_Utils.pm funktioniert nicht

Begonnen von Guest, 28 November 2012, 00:30:15

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

hallo,

ich versuche bestimmte Werte (Zustände von dummy Heizungen) in ein Logfile
zu schreiben um daraus dann einen Plot mit den Vorgegebenen Temperaturen zu
zeichen. Dies möchte ich dann später gerne den tatsächlichen
Raumtemperaturen gegenüber zu stellen. Dazu habe ich in fhem.cfg eine
Trigger erzeugt, der alle 5 Minuten (zum Testen) die Sub Funktion aufruft.
Nur tut sie dass nicht und ich sehe einfach nicht wo's klemmt...

Findet jemand den Fehler oder liege ich mit dem was ich möchte komplet
daneben?!?


fhem.cfg
#############
# schreibt alle 5 Minuten die "desired temp" in ein logfile für plots
define schreib_desired_temp_wohnzimmer at +*00:05:00 {schreib_des_temp()}
attr schreib_desired_temp_wohnzimmer alignTime 00:00:00

99Utils.pm
############
sub
schreib_des_temp()
{
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
  my ($logtime) = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year+1900,
$mon+1, $mday, $hour, $min, $sec);
  my ($aaa) = { fhem
{ReadingsVal("Heizkoerper_wohnzimmer_desired_temp","state",15)} };
  system "echo $logtime desired_temp_wohnzimmer $aaa\n
>>/opt/fhem/log/schreib_desired_temp_wohnzimmer.log";
}

danke!
/alex

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

kud

                                                 

Auf die schnelle nicht.
Aber probier doch mal jede, von Dir generierte Variable mit :

Log 3, $logtime;
oder
Log 3, $aaa;

in das fhem.....log zu schreiben.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Alex,
ich bin zwar auch ein Perljunior, aber das hier sollte zu mindestens
funktionieren.

99Utils.pm
############
sub
schreib_des_temp($$$$)
{
 
  my $device = $_[0];
  my $reading = $_[1];
  my $default = $_[2];
  my $logname = $_[3];
   
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
  my ($logtime) = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year+1900,
$mon+1, $
  my ($aaa) = ReadingsVal($device, $reading, $default);
  open(STATE,">>$logname");
  print STATE "$logtime state $device - $reading : $aaa\n";
  close(STATE);
}

1;

define schreib_desired_temp_wohnzimmer at +*00:05:00
{schreib_des_temp("Heizkoerper_wohnzimmer_desired_temp","state",15,"/opt/fhem/log/schreib_desired_temp_wohnzimmer.log";)}


LG

RueBe



Am Mittwoch, 28. November 2012 00:30:15 UTC+1 schrieb Alexander Kuehnel:
>
> hallo,
>
> ich versuche bestimmte Werte (Zustände von dummy Heizungen) in ein Logfile
> zu schreiben um daraus dann einen Plot mit den Vorgegebenen Temperaturen zu
> zeichen. Dies möchte ich dann später gerne den tatsächlichen
> Raumtemperaturen gegenüber zu stellen. Dazu habe ich in fhem.cfg eine
> Trigger erzeugt, der alle 5 Minuten (zum Testen) die Sub Funktion aufruft.
> Nur tut sie dass nicht und ich sehe einfach nicht wo's klemmt...
>
> Findet jemand den Fehler oder liege ich mit dem was ich möchte komplet
> daneben?!?
>
>
> fhem.cfg
> #############
> # schreibt alle 5 Minuten die "desired temp" in ein logfile für plots
> define schreib_desired_temp_wohnzimmer at +*00:05:00 {schreib_des_temp()}
> attr schreib_desired_temp_wohnzimmer alignTime 00:00:00
>
> 99Utils.pm
> ############
> sub
> schreib_des_temp()
> {
>   my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
> localtime(time);
>   my ($logtime) = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year+1900,
> $mon+1, $mday, $hour, $min, $sec);
>   my ($aaa) = { fhem
> {ReadingsVal("Heizkoerper_wohnzimmer_desired_temp","state",15)} };
>   system "echo $logtime desired_temp_wohnzimmer $aaa\n
> >>/opt/fhem/log/schreib_desired_temp_wohnzimmer.log";
> }
>
> danke!
> /alex
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

hallo,

hab es soweit gestern? noch hinbekommen mit

fhem.cfg
#########
# schreibt alle 5 Minuten die "desired temp" in ein logfile für plots
define schreib_desired_temp_wohnzimmer at +*00:05:00 {\
   my $des_temp =
ReadingsVal("Heizkoerper_wohnzimmer_desired_temp","state",15) ;;\
   my $logtime = berechne_zeit();;\
   system "echo $logtime desired_temp_wohnzimmer $des_temp >>
/opt/fhem/log/schreib_desired_temp_wohnzimmer.log";;\
}

99_Utils.pm
#########
sub
berechne_zeit()
{
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
  my $logtime = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year+1900,
$mon+1, $mday, $hour, $min, $sec);
  return $logtime;
}

Jetzt habe ich dann das Logfile im Format
...........
012-11-28_05:40:00 desired_temp_wohnzimmer 17
2012-11-28_05:45:00 desired_temp_wohnzimmer 17
2012-11-28_05:50:00 desired_temp_wohnzimmer 17
2012-11-28_05:55:00 desired_temp_wohnzimmer 17
2012-11-28_06:00:00 desired_temp_wohnzimmer 17
2012-11-28_06:05:00 desired_temp_wohnzimmer 20
2012-11-28_06:10:00 desired_temp_wohnzimmer 20
2012-11-28_06:15:00 desired_temp_wohnzimmer 20
...........

Nur dadurch dass ich nicht via "Filelog" ins Logfile schreibe, kann ich
dann auch nicht via "weblog fileplot" plotten, oder??

lg

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

UliM

                                                 

Hi,
meist steht im log auch derGerätename, vll fügst Du das noch ein.
Plotten mit weblink fileplot sollte gehen, Du musdt Dir nur passende .gplot-Definitionen bauen.
Die Stamdard-.gplot s  lesen Daten aus der vierten Spalte, dadurch dass bei Dir der devicename fehlt müsstest Du m.E? aus der dritten Spalte lesen.
Gruß Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Guest

Originally posted by: <email address deleted>

Es geht! Ich glaube es war der Apache ! Nach einem restart waren alle Grafiken da

Thx

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi Alex,
bin mir nicht sicher, ob es och andere Lösungen gibt, aber meiner Meinung
ach müsste es funktionieren, wenn du die einfach einen Filelog definierst
und für die RegExp etwas vorgibts, das  nie eintritt.
Dann hast du ein Fileplot der auf deine Datei verweisst und kannst ein
weblog anlegen.
Ich glaube im Wiki gibt es einen Eintrag, welcher so etwas am Rande
beschreibt. (glaube Fritzbox Werte in eine Datei schreiben)

VG

Am Mittwoch, 28. November 2012 07:36:13 UTC+1 schrieb Alexander Kuehnel:
>
> hallo,
>
> hab es soweit gestern? noch hinbekommen mit
>
> fhem.cfg
> #########
> # schreibt alle 5 Minuten die "desired temp" in ein logfile für plots
> define schreib_desired_temp_wohnzimmer at +*00:05:00 {\
>    my $des_temp =
> ReadingsVal("Heizkoerper_wohnzimmer_desired_temp","state",15) ;;\
>    my $logtime = berechne_zeit();;\
>    system "echo $logtime desired_temp_wohnzimmer $des_temp >>
> /opt/fhem/log/schreib_desired_temp_wohnzimmer.log";;\
> }
>
> 99_Utils.pm
> #########
> sub
> berechne_zeit()
> {
>   my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
> localtime(time);
>   my $logtime = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year+1900,
> $mon+1, $mday, $hour, $min, $sec);
>   return $logtime;
> }
>
> Jetzt habe ich dann das Logfile im Format
> ...........
> 012-11-28_05:40:00 desired_temp_wohnzimmer 17
> 2012-11-28_05:45:00 desired_temp_wohnzimmer 17
> 2012-11-28_05:50:00 desired_temp_wohnzimmer 17
> 2012-11-28_05:55:00 desired_temp_wohnzimmer 17
> 2012-11-28_06:00:00 desired_temp_wohnzimmer 17
> 2012-11-28_06:05:00 desired_temp_wohnzimmer 20
> 2012-11-28_06:10:00 desired_temp_wohnzimmer 20
> 2012-11-28_06:15:00 desired_temp_wohnzimmer 20
> ...........
>
> Nur dadurch dass ich nicht via "Filelog" ins Logfile schreibe, kann ich
> dann auch nicht via "weblog fileplot" plotten, oder??
>
> lg
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com