Define funktioniert aber sobald neustart, fehlermeldung

Begonnen von Jumbo, 28 Mai 2015, 20:34:31

Vorheriges Thema - Nächstes Thema

Jumbo

@JoWiemann

DANKE DANKE !!

Genau das wars. Problem ist jetzt behoben und es geht.


dadoc

Obacht: Im Modul ist das Intervall nun anscheinend in Zeile 33 auf 300 sec hardgecodet, also egal, was man bei der Definition eingibt:
  my $name = $a[0];
  my $url = $a[2];
  my $user = $a[3];
  my $pass = $a[4];
  my $inter = 300;
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

charlie71

Hallo

ich würde gerne das myPoolcontroller.pm Modul ein wenig überarbeiten.

Folgende Probleme habe ich entdeckt:
* es werden keine Events generiert (Die readings werden falsch gesetzt), somit kann kein anderes Modul auf Änderungen reagieren
* Leerzeichen im ReadingName mach Probleme (zumindest bei mir: manchmal Zeilenumbrüche, verschieben von Bezeichnungen in den Messwertbereich)
* Probleme bei der Codierung wenn Bereichungen Sonderzeichen enthalten

Gibts sonst noch Wünsche?

@dadoc: in der Zeile 33 befindet sich nur ein default Wert, der in den nächsten Zeilen danach überschrieben wird.


lg
Charlie71

PS: Sollen wir einen neuen Thread eröffenn?

dadoc

Hi Charlie21,
sorry für die späte Antwort, war unterwegs (u.a. Besuch beim Pool ;))
Was ich seinerzeit (teilweise mit Unterstützung des fhem-Forums)  gemacht habe ist:
1. Leerzeichen aus den übernommenen Namen durch Unterstriche ersetzen, damit das Log übersichtlicher wird:
  my @POOLnames  = split(",", $names);
    for (@POOLnames)
     {
      s/\s/_/g;
     }

2. Events für Logfile erzeugt, auf deren Basis man Plots oder Visualisierungen mit Tablet UI realisieren kann:
  my $wert = 0;
  for (my $i=1;$i<$#POOLvalue+1;$i++)
  {
    ### fertigen Messwert berechnen
    $wert = @POOLoffset[$i] + (@POOLgain[$i] * @POOLvalue[$i]);

    ### Messwert auf 2 Nachkommastellen runden
    $wert = sprintf("%.2f", $wert);

    ###Ausgeben
#    $hash->{READINGS}{@POOLnames[$i]}{VAL} = "$wert @POOLunits[$i]";
#    $hash->{READINGS}{@POOLnames[$i]}{TIME} = TimeNow();
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,@POOLnames[$i],"$wert @POOLunits[$i]");
readingsEndUpdate($hash, 1);
}
  $hash->{STATE} = "OK";

... und in der Definition natürlich noch hinzugefügt:
define FileLog_Pool FileLog ./log/Pool-%Y.log Pool.*
attr FileLog_Pool logtype text

Damit bekomme ich nun Logfiles wie:
2016-01-20_12:30:19 Pool Wassersensor: -6.53 V
2016-01-20_12:30:19 Pool Grr: 116.94 mV
2016-01-20_12:30:19 Pool Kesseldruck: -398.08 mBar
2016-01-20_12:30:19 Pool Brr: 2.88 mV
2016-01-20_12:30:19 Pool CPU_Temp: 40.25 C
2016-01-20_12:30:19 Pool Redox: 705.38 mV
2016-01-20_12:30:19 Pool pH: 7.20 pH
2016-01-20_12:30:20 Pool Wassertmp.: 13.62 C
2016-01-20_12:30:20 Pool Lufttmp.: 13.56 C
2016-01-20_12:30:20 Pool n.a.: 0.00 C
2016-01-20_12:30:20 Pool n.a.: 0.00 C
2016-01-20_12:30:20 Pool n.a.: 0.00 C
2016-01-20_12:30:20 Pool n.a.: 0.00 C
2016-01-20_12:30:20 Pool n.a.: 0.00 C
2016-01-20_12:30:20 Pool n.a.: 0.00 C
2016-01-20_12:30:20 Pool Polaritaet: 0.00 --
2016-01-20_12:30:20 Pool Zelle: 0.00 --
2016-01-20_12:30:20 Pool ph-: 0.00 --
2016-01-20_12:30:20 Pool Pumpe: 0.00 --
2016-01-20_12:30:20 Pool Hilfsrelais: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool TASTER1: 0.00 --
2016-01-20_12:30:20 Pool TASTER2: 0.00 --
2016-01-20_12:30:20 Pool TASTER3: 0.00 --
2016-01-20_12:30:20 Pool TASTER4: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool n.a.: 0.00 --
2016-01-20_12:30:20 Pool CL_Rest: 14.70 %
2016-01-20_12:30:20 Pool pH-_Rest: 92.60 %
2016-01-20_12:30:20 Pool pH+_Rest: 100.00 %

Was ich dann noch machen wollte, woran ich aber (als nicht Programmierer) grandios gescheitert bin war das Umschreiben auf Non-Blocking, was bei pollenden Modulen eigentlich Pflicht ist. Die Abfrage der Daten von einem entfernten Server (dem des Poolcontroller, der bei mir UMTS-angebunden rund 1500 km entfernt werkelt und von dem die Daten per VPN Tunnel abgeholt werden) erzeugen zumindest bei mir spübare Freezes.
Vielleicht kann ja hierbei jemand helfen?
Eigener Thread wäre nicht schlecht, da hier noch viel Potenzial drin steckt.
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

charlie71

Hallo Martin,

Ich denke, das umschreiben auf non blocking werde ich hin bekommen.
Ein paar verbesserungspunkte in deinen Änderungen habe ich auch schon gesehen.
Vorschlag: Poste mal dein aktuelles Modul und wir verwenden dieses als Basis und eröffnen einen neuen Thread.
Lg
Charlie71

dadoc

#35
Hier meine aktuelle Version. Hatte im vorigen Post eine weitere Ergänzung zu erwähnen vergessen:
       { "myPoolcontroller.*" => { ATTR => "event-min-interval:.*:300 event-on-change-reading:.*",
                     FILTER => "%NAME",
                     GPLOT => "4:Pool.Pool"} };

Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

Ergänzend noch eine Visualisierung der Pool-Befindlichkeiten mit TabletUI, vorerst noch Rumspielerei zum Testen der besten (unter den zahlreichen) Darstellungsmöglichkeiten.
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

charlie71

Hallo Leute,

ich hab ein neues Modul erstellt:
http://forum.fhem.de/index.php/topic,23129.msg396555.html#msg396555

ich werde die Diskussion in dortigen Thread fortführen.

lG
Charlie71