FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Wolfi am 27 August 2017, 15:23:13

Titel: Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 15:23:13
Ich habe eine sub in der 99_myutils die einen Mittelwert aus logs berechnet.
Der Aufruf als Kommando Zeile in Fhem funktioniert einwandfrei.

{myAverage("86400"*30, "FileLog_AktuellerVerbrauch_cumDay" , "4:::")}
Das Ergebnisse ist korrekt.
Aber wie bekomme ich das Resultat bzw. Wie lautet der Syntax
Wenn ich das Ergebnis dieser Funktion in einer reading Gruppe oder eines dummy anzeigen möchte..?

Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 15:29:08
Der Mittelwert steht in der sub in einer Variable, dann kannst du mit fhem "set <name des dummy> $var" das Ergebnis in ein dummy schreiben.

P.S. oder poste mal die sub

VG
Frank
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 15:48:22
Ja die variable habe ich  gefunden.
$avg
Kannst du mir mal kurz den den Syntax schreiben.
Also Definition des dummy  Aufruf der sup innerhalb des Dummy und Zuweisung bzw. Anzeige des Ergebnisses.
Bekomme es nicht hin.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 15:52:29
Ist doch ganz einfach, lege ein dummy an:

define <name> dummy

und dann, in der sub

fhem "set <name> $avg";
mehr ist das nicht  ;)

VG
Frank
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 16:11:34
Das muss in die sub??  fhem "set <name> $avg";
Nicht in die fhem.cfg
Und wie erfolgt dann der Aufruf der sub in der fhem.cfg bzw. Dummy
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 16:18:21
Grundlagen lesen!!
Die sub über notify oder ein at triggern, die fhem.cfg nicht editieren, lässt sich alles im Webif machen! In die sub gehöhrt nur die Zeile mit der Variablen.

Und die nächste Frage kenne ich jetzt auch schon, "wie rufe ich die sub auf?", mit {name der sub}

https://fhem.de/Heimautomatisierung-mit-fhem.pdf

VG
Frank
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 16:43:06
Also so?

sub
myAverage($$$)
{
my ($offset,$logfile,$cspec) = @_;
my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset);
my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime;
my $oll = $attr{global}{verbose};
$attr{global}{verbose} = 0;
my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
$attr{global}{verbose} = $oll;
my ($cnt, $cum, $avg) = (0)x3;
foreach (@logdata){
  my @line = split(" ", $_);
  if(defined $line[1] && "$line[1]" ne ""){
   $cnt += 1;
   $cum += $line[1];
  }
}
if("$cnt" > 0){$avg = sprintf("%0.1f", $cum/$cnt)};
Log 4, ("myAverage: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, Count: $cnt, Cum: $cum, Average: $avg");
return $avg;
fhem "set test $avg";
}
##########################################################

Gute Grundlagen zum Lesen hast du einen Tipp.?
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 16:49:11
ZitatGute Grundlagen zum Lesen hast du einen Tipp.?

oben im Link.
Was passiert denn wenn du jetzt in der Komandozeile von fhem {myAverage} eingibst?
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 17:00:27
Das Ergebniss wird unterhalb der Kommandozeile angezeigt. So wie vorher.
Jetzt muss ich das mit der Definition des dummy in der cfg noch irgendwie hinbekommen.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 17:27:21
Du weist aber das es average auch als "fertigen" fhem Befehl/Hilfs- Erweiterungsmodul gibt?

https://fhem.de/commandref.html#average
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: CoolTux am 27 August 2017, 17:34:59
Zitat von: Wolfi am 27 August 2017, 17:00:27
Das Ergebniss wird unterhalb der Kommandozeile angezeigt. So wie vorher.
Jetzt muss ich das mit der Definition des dummy in der cfg noch irgendwie hinbekommen.

Lass doch mal bitte die Finger von der cfg. Was willst du da?

define dummyName dummy

In der Kommandozeile des FHEMWEB eingeben und das Teil ist angelegt. Speichern nicht vergessen. Links oben rotes Fragezeichen.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 17:35:10
ZitatDas Ergebniss wird unterhalb der Kommandozeile angezeigt. So wie vorher.
Jetzt muss ich das mit der Definition des dummy in der cfg noch irgendwie hinbekommen.

Das dummy device must du natürlich vorher anlegen oder wo soll der fhem "set ...." sonst hin schreiben??
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 17:36:31
@CoolTux

ZitatLass doch mal bitte die Finger von der cfg. Was willst du da?

Ja, ja, hatte ich ihm oben auch schon geschrieben...  :o

VG
Frank
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: CoolTux am 27 August 2017, 17:41:09
Zitat von: Wolfi am 27 August 2017, 16:43:06
Also so?

sub
myAverage($$$)
{
my ($offset,$logfile,$cspec) = @_;
my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset);
my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime;
my $oll = $attr{global}{verbose};
$attr{global}{verbose} = 0;
my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
$attr{global}{verbose} = $oll;
my ($cnt, $cum, $avg) = (0)x3;
foreach (@logdata){
  my @line = split(" ", $_);
  if(defined $line[1] && "$line[1]" ne ""){
   $cnt += 1;
   $cum += $line[1];
  }
}
if("$cnt" > 0){$avg = sprintf("%0.1f", $cum/$cnt)};
Log 4, ("myAverage: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, Count: $cnt, Cum: $cum, Average: $avg");
return $avg;
fhem "set test $avg";
}
##########################################################

Gute Grundlagen zum Lesen hast du einen Tipp.?

Ist der Code von Dir? Sieht mir nach ziemlich alten Code aus. Denke mal so vor 2015.
Einige FHEM Sachen werden so nicht mehr gehandhabt. Zum Beispiel ist es nicht mehr erwischt die Hash's direkt zu manipulieren. Dafür möge man bitte Routinen aus der fhem.pl verwenden.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 17:47:54
Zitat von: franky08 am 27 August 2017, 17:35:10
Das dummy device must du natürlich vorher anlegen oder wo soll der fhem "set ...." sonst hin schreiben??

Habe ich doch so gemacht via Kommandozeile aber der Dummy bleibt leer bzw. ???
Nach Ausführung der sub
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: CoolTux am 27 August 2017, 17:55:38
Oh man wo fängt man da an.
Heißt Dein Dummy auch Test? Nimm das Return raus. Nach einem return ist eine Sub zu Ende. Dein set Dummy steht nach dem return
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 17:58:53
Sorry ihr müsst Geduld haben mit mir.
Ich möchte lernen.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: tiroso am 27 August 2017, 18:03:50
Ich glaube CoolTux du hat recht...Vielleicht sogar 2013
https://forum.fhem.de/index.php/topic,11622.0/wap2.html

@Wolfi.
Wie stehts denn mit Perl Grundlagen?
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 18:09:11
Das ist von 2013, war eine meiner ersten subs die ich damals in die utils gebaut hatte. Das das fhem set... Nach dem return steht, hatte ich völlig übersehen, mittlerweile gibt es das ja als Hilfsmodul.

VG
Frank
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 18:10:41
O man das Return.
Das weis ich eigentlich.
Total übersehen.
Wenn man vor lauter Bäumen den.........
Danke an alle.
Die nächten Fragen kommen bestimmt.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 18:15:57
Zitat von: franky08 am 27 August 2017, 18:09:11
Das ist von 2013, war eine meiner ersten subs die ich damals in die utils gebaut hatte. Das das fhem set... Nach dem return steht, hatte ich völlig übersehen, mittlerweile gibt es das ja als Hilfsmodul.

VG
Frank

Ja aber das Modul funktioniert.
Und für mich Grundlage zum lernen.

Danke
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: franky08 am 27 August 2017, 18:19:33
P.S. die sub ist aber nicht von mir, ich habe die damals auch nur irgendwo gefunden  :) ;)

VG
Frank
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: CoolTux am 27 August 2017, 18:25:53
Ich schlage vor wir machen mal folgendes. Damit sie wenigstens ein bisschen den neuen Kreterien von FHEM entspricht, schreibe ein zwei Zeilen anders und klebe den Code dann hier an.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 27 August 2017, 21:27:24
Zitat von: CoolTux am 27 August 2017, 18:25:53
Ich schlage vor wir machen mal folgendes. Damit sie wenigstens ein bisschen den neuen Kreterien von FHEM entspricht, schreibe ein zwei Zeilen anders und klebe den Code dann hier an.

https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen#Gleitender_Mittelwert_f.C3.BCr_beliebige_Readings
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 28 August 2017, 14:55:13
So und schon die Nächte Frage.
Mein Dummy gibt den richtigen Wert aus   nun möchte ich die Einheit kWh anhängen.
Das müsste über den stateFormat attr gehen.
Finde allerdings keine vernünftige Beschreibung des Syntax?

Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: CoolTux am 28 August 2017, 15:01:25
Du kannst ja im set Befehl das kWh mit anhängen.
stateFormat formatiert Dir nur das Internal STATE
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: Wolfi am 28 August 2017, 15:13:38
Habe ich gemacht Danke.
Aber der stateFormat Syntax würde mich trotzdem interessieren. (verstehen und lernen)
Commandref gibt nicht  wirklich was.
Titel: Antw:Ergebnisse einer sup in Fhem anzeigen?
Beitrag von: CoolTux am 28 August 2017, 15:35:13
READINGNAME kWh

Das sollte reichen. Erscheint aber wie gesagt nur als STATE