Werte aus log-Datei schaltet Heizung?

Begonnen von Guest, 19 September 2011, 16:14:34

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo,

ich nutze Fhem seit einigen Monaten auf einem Alix-Board zur
Heizungssteuerung und Gas Verbrauchsmessung.
Das System funktioniert sehr stabil.

Nebenbei schreibe ich die Vorlauf- u. Rücklauftemperatur meines
Kaminofens mit Wassertasche mittels DS1820 und Digitemp in eine log-
Datei. Die Anzeige (Plot) der Temperatur und die Berechnung der
augenblicklichen Leistung des Kamins in Fhem, funktioniert auch sehr
gut.

Nun möchte ich in Abhängigkeit der Vorlauftemperatur des Kamins meinen
Heizkörper (im Aufstellraum des Kamins, FHT/CUL)  Ausschalten. D.h.
ich möchte den aktuellen Wert aus der log-Datei (TXT) auslesen und
wenn der z.B. > 30C ist, den FHT auf z.B. 5.5C (OFF) einstellen.

Hat das schon mal jemand gemacht oder kann mir jemand einen Tip geben,
wie ich vorgehen soll?

Vielen Dank.

Toralf

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

rudolfkoenig

                                                   

> ich möchte den aktuellen Wert aus der log-Datei (TXT) auslesen und
> wenn der z.B. > 30C ist, den FHT auf z.B. 5.5C (OFF) einstellen.

Logdatei ist falsch :)

Entweder notify oder at mit ReadingsVal().

Siehe auch http://fhem.de/commandref.html#perl

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

Guest

Originally posted by: <email address deleted>

Danke für den Tip. Ich werd's mal versuchen.

> Logdatei ist falsch :)

Ja, also die Datei mit den Temp-Werten ;-)

Toralf

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

rudolfkoenig

                                                   

> > Logdatei ist falsch :)
>
> Ja, also die Datei mit den Temp-Werten ;-)

Das meine ich ja. Nicht regelmaessig die Datei einlesen, und bestimmte Werte
suchen, sondern mit einem notify direkt auf die Nachricht reagieren.

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

Guest

Originally posted by: <email address deleted>

> Das meine ich ja. Nicht regelmaessig die Datei einlesen, und bestimmte Werte
> suchen, sondern mit einem notify direkt auf die Nachricht reagieren.

Naja, ich Digitemp schreibet die aktuellen Temperaturen (Vorlauf/
Ruecklauf) in eine Textdatei. Fhem holt die Daten ab und erstellt dann
ein Diagramm.
Wie kann ich denn direkt auf die Nachricht reagieren? Ich wollte den
letzten Wert der Datei auslesen.

Das steht in meiner config:

define K_log FileLog /mnt/nas/log/K_temp.log Kamin

define w1_10 weblink fileplot K_log:oregon_wind:CURRENT
attr w1_10 label sprintf("Power  %.2f KW",\
        ($data{currval2}-$data{currval1})*0.74)
attr w1_10 room Kamin VL/RL

"oregon_wind" habe ich modifiziert. Die Berechnung am Schluss
berechnet die aktuelle Waermeleistung des Kamins anhand der
Pumpenfoerdermenge und dem dT zwischen Vorlauf und Ruecklauf.

Toralf

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

rudolfkoenig

                                                   

> define K_log FileLog /mnt/nas/log/K_temp.log Kamin

So aehnlich:

  define temp_ntfy notfy Kamin:T:.* {\
    if(%EVTPART1 > 30 &&\
       ReadingsVal("FHT", "desired-temp", 5.5) ne 5.5) {\
      fhem("set FHT desired-temp 5.5");;\
    }
  }

Bitte wirklich die Doku lesen, versuchen zu verstehen, das alles steht zwar
nicht direkt so, aber drin. Und wenn man unsicher ist, auf der Telnet Zeile mit
irgendwelchen Ausdrucken direkt experimentieren, z.Bsp.:

fhem> { ReadingsVal("FHT", "desired-temp", 5.5) ne 5.5) }

bzw. in das notify Log Meldungen einbauen, und via trigger testen:

  define temp_ntfy notfy Kamin:T:.* {\
    Log 1, "EVTPART1: %EVTPART1";
    Log 1, ReadingsVal("FHT", "desired-temp", 5.5);
    if(%EVTPART1 > 30 &&\
       ReadingsVal("FHT", "desired-temp", 5.5) ne 5.5) {\
      fhem("set FHT desired-temp 5.5");;\
    }
  }

fhem> trigger Kamin T: 35

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

Guest

Originally posted by: <email address deleted>

Vielen Dank! Das hilft wir weiter. Mir fehlte der Ansatz in der ersten
Zeile.

Toralf

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

Guest

Originally posted by: <email address deleted>

Bin leider doch noch nicht weiter gekommen.
Wie kann ich auf den letzten Eintrag einer log Datei (Format:
2011-09-24_03:58:06 Sensor1: 19.44) zugreifen. Die "19.44" möchte ich
auslesen und im Notify verwenden, um ein FHT auf 5.5C zu setzen.

Vielen Dank!
Toralf

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

Guest

Originally posted by: <email address deleted>

Weiss niemand wie das geht? Oder kann ich direkt auf die Werte eines
one wire Temperatursensor reagieren ohne den OWFS Server zu verwenden?

Danke,
Toralf

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

Guest

Originally posted by: <email address deleted>

Moin Toralf

Ich schalte zwar keine Heizung mit Digitemp, aber ich verwende Digitemp
direkt mit einer selbgebastelten Schnittstelle (OWFS zu installieren war
mir zu kompliziert und mit perl den aktuellen Wert auslesen ist nicht
mein Ding).

Die Logdaten verwende ich um damit einen Graphen in/mit zu erstellen.
Den letzen Datensatz mit der aktuellen Temperatur hole ich mir mit
"php". Aus diesem Temperaturwert und anderen Digitemp.- bzw.
FHT80b-werten erstelle ich wieder mit "php" ein Bild welches ich auf
meine Fritzbox übertrage und im Fritz!Fon als Hintergrundbild anzeigen
lasse.

Alles läuft auf einem Dockstar und wird mittels cronjob ausgeführt.
Wenn Du den Wert hast

Vielleicht ein Tip, denn viele Umwege fuehren nach ...

Reinhard

Am 25.09.2011 19:12, schrieb ToKa5:
> Weiss niemand wie das geht? Oder kann ich direkt auf die Werte eines
> one wire Temperatursensor reagieren ohne den OWFS Server zu verwenden?
>
> Danke,
> Toralf
>

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

rudolfkoenig

                                                   

On Sun, Sep 25, 2011 at 10:12:10AM -0700, ToKa5 wrote:
> Weiss niemand wie das geht? Oder kann ich direkt auf die Werte eines
> one wire Temperatursensor reagieren ohne den OWFS Server zu verwenden?

Ich habe gehofft, dass jemand anderes das schon beantwortet, da es "standard
fhem knowhow" ist, es traut sich aber keiner. Da ich auf lange Sicht nicht
alles selber beantworten will, muss ich mir irgendeine Strategie ueberlegen,
wie ich das hinkriege. Vorschlaege?

Wenn ich es richtig verstehe, Du moechtest die Logs parsen, die mit einem
FileLog geschrieben wurden, das ist aber unnoetig und man sollte es nicht so
machen.

FileLog kriegt seine Information auch nur ueber die gleichen Events, die man
per notify anzapfen kann. Man schaut also eine weile lang im telnet mit
aktivierten "inform timer" zu, welche Events vorbeikommen, und man baut dazu
ein notify, der das Schalten uebernimt. Vorteil: sofortige Reaktion und weniger
Systemlast.

Eine kleine Einfuehrung dazu ist auch in http://fhem.de/commandref.html#perl,
weitere CodeSchnipsel sind in der fhemwiki.

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

Guest

Originally posted by: <email address deleted>

> Wenn ich es richtig verstehe, Du moechtest die Logs parsen, die mit einem
> FileLog geschrieben wurden, ...

Nicht ganz. Die log-datei wird durch digitemp erzeugt und nicht durch
FileLog, in Fhem dann über weblink dargestellt.
Konfig:

define K_log FileLog /mnt/nas/log/K_temp.log fakelog
(Ich habe "Kamin" ,siehe oben, durch fakelog ersetzt, da die Datei ja
nicht durch ein Device erzeugt wird.)

> FileLog kriegt seine Information auch nur ueber die gleichen Events, die man
> per notify anzapfen kann.

Das wäre natürlich der beste weg. Ich kann aber keine Events
anzapfen?! Soweit ich verstanden habe, kann man den OWFS Server
verwenden, um die one-wire detektoren in Fhem auszulesen. Allerdings
möchte ich den OWFS nicht installieren nur um zwei Temperaturen zu
messen. Das geht mit digitemp und einem cronjob ja ganz gut.

> Man schaut also eine weile lang im telnet mit
> aktivierten "inform timer" zu, welche Events vorbeikommen, und man baut dazu
> ein notify, der das Schalten uebernimt. Vorteil: sofortige Reaktion und weniger
> Systemlast.

Das habe ich versucht. Allerdings kommen keine entsprechenden Events
an. Ist ja auch klar, oder?

Ich freue mich über weitere Tips.
Vielen Dank.

Toralf

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

rudolfkoenig

                                                   

> Nicht ganz. Die log-datei wird durch digitemp erzeugt und nicht durch
> FileLog, in Fhem dann über weblink dargestellt.

Aah. Dann hilft nix, man muss pollen:

define checkKamin at +*00:01  { \
  my @a = split(" ", `tail -1 /mnt/nas/log/K_temp.log`);;
  if($a[2] > 30 &&\
     ReadingsVal("FHT", "desired-temp", 5.5) ne 5.5) {\
       fhem("set FHT desired-temp 5.5");;\
  }\
}

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

Guest

Originally posted by: <email address deleted>

Ok. Vielen Dank. Ich werde mal sehen, ob es klappt und beriechten.
Sorry, für die etwas unklare Beschreibung am Anfang.

Toralf

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

Guest

Originally posted by: <email address deleted>

Super, es funktioniert! --->

define checkKamin at +*00:01  { \
    my @a = split(" ", `tail -1 /mnt/nas/log/K_temp.log`);; \
    if (($a[2]) > 30.00 && ($a[2]) != 85.00 && \
       (ReadingsVal("WohnZ", "desired-temp", 5.5)) ne 5.5) {\
         fhem("set WohnZ desired-temp 5.5") ;; \
    } \
  }

Die 85 Grad habe ich noch eingefügt, um Fehlermeldungen der Sensoren
zu filtern. Manchmal kommt es zu 85Grad Meldungen und ich will nicht,
dass dann meine Heizung ausgestellt wird.

Vielen Dank!

Toralf

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