Textdatei einlesen und Werte in readingsGroup anzeigen

Begonnen von waldo, 22 Mai 2019, 13:23:15

Vorheriges Thema - Nächstes Thema

waldo

Die Textdatei wird von WEEWX erstellt. Von der Textdatei soll z.B. in der Zeile "inTemp: 18.25" der Wert übernommen werden. Dies mache ich mit dem sub in "99_myUtils.pm" wie folgt:
sub SetMeinWetter($) {
  my ($obj) = @_;

  # read data from file
  unless (open (my_metdata, "/opt/fhem/weewx/weewxfhem.txt")){
    die ("Missing input file");
  }   
  my @mydata = <my_metdata>;
  close (my_metdata);

  # get the weather data in float
  my @lastread = split(/ /, $mydata[2] ,2);
  my $myintemp = $lastread[1] * 1;
 
  # allocate the data in fhem
  fhem("setreading $obj inTemp $myintemp"); 
}
1;

In FHEM wird der Wert wie folgt angezeigt:
define MeinWetter at +*00:00:01 {SetMeinWetter("MeinWetter")}
attr MeinWetter group Meteo
attr MeinWetter room Station
attr MeinWetter sortby 2

define WetterJetzt readingsGroup MeinWetter:<%temp_temperature>,<Innentemperatur>,inTemp MeinWetter:<%temp_temperature>,<Aussentemperatur>,outTemp
attr WetterJetzt alias Wetterdaten
attr WetterJetzt valueFormat { inTemp => '%1.f &deg C', outTemp => '%1.f &deg C' }
attr WetterJetzt group Meteo
attr WetterJetzt room Wetter
attr WetterJetzt sortby 1

Der Haken:
- Damit beim Start schon ein Wert angezeigt wird muss die "at"-Zeit zwischen 1 bis 4 Sek liegen
- Es wird jede 1, oder 4, Sek eingelesen

Hat jemand einen Lösungsansatz bei dem der Wert
- beim Start in der "readingsGroup" angezeigt wird
und dann
- mit dem Intervall von 30Min neu angezeigt wird

Vielen Dank für die Unterstützung.

TomLee

Bin kein Experte, hab das mit dem "Start" nicht ganz verstanden, aber zu

Zitat- mit dem Intervall von 30Min neu angezeigt wird

hätte ich den Vorschlag -vorausgesetzt die Datei wird nicht sekündlich von WEEWX aktualisiert- es mit inotify anzugehen und hiermit bei jeder Änderung der Textdatei die Daten zu holen.

Gruß

Thomas

waldo

Hallo Thomas
Danke für den Tip, aber  nicht das wirkliche Problem.

Mit "start" = Start von FHEM im Browser.

Das Hauptproblem ist: wie die Werte beim Browser Start anzeigen.
Einlesen geht, nur die automatische Anzeige im Browser Dashboard nicht.

Gruss
Walter

waldo

Die Lösung gefunden:

In "99_myUtils.pm" den Rückgabewert geändert:
# allocate the data in fhem
fhem("sleep 0.1; setreading $obj inTemp $myintemp");

In fhem.cfg wie folgt angepasst
define MeinWetter CustomReadings
attr MeinWetter readingDefinitions mymetdata:{SetMeinWetter("MeinWetter")}


Nun werden die Werte beim Start eingelesen und wie gewünscht im "WetterJetzt" angezeigt.

Grüsse
Walter