Hauptmenü

1-wire

Begonnen von Guest, 22 Mai 2011, 22:43:17

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Nachdem ein DS18B20 im FHEM Umfeld mit tatkräftiger Unterstützung von Willi
funktioniert,
möchte man natürlich etwas mehr. Da meine Perl Kenntnisse nicht ausgeprägt
sind, mich
aber weiterhin die Sache 1-Wire  interessiert, frag ich mich wie man  z.B.
mit der Auswertung
des State warnings vom DS18B20 einen FS20 Steckdose anschalten könnte

In den FHEM Exemples konnte ich dahingehend für mich nichts richtiges
finden.

Hier noch einige Angaben.

Der DS18B20 ist als 1W.KG.T_Buero definiert.

State warnings können folgende Werte annehmen none (alles OK)  temphigh
(Temp zu hoch) templow (Temp zu niedrig)



Gruß Klaus

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

Guest

Originally posted by: <email address deleted>

Nach einigen Überlegungen könnte das Schalten von FS20 Kompetenten z.B bei
zu hoher Temperatur
von1-Wire Sensoren auf Basis des Notify für den lime-protection erzeugt
werden.
______________________________________________________
define lime_reset notify .*lime-protection {\
  my $d = $defs{@}{READINGS}{"desired-temp"}{VAL};;\
  my $m = $defs{@}{READINGS}{"measured-temp"}{VAL};;\
  if($m > $d) {\
    fhem("set @ desired-temp 29");;\
    fhem("set @ desired-temp $d");;\
  }\
______________________________________________________

Etwas umgeschrieben komme ich zu folgenden Ergebnis.

define Temp_set notify .*present {\
  my $d = $defs{@}{READINGS}{"warnings"};;\
  my $date_time = scalar localtime;;\
  open (AUSGABE, ">>/mnt/ausgabe.txt");;\
  print AUSGABE "$date_time,def_$defs{@},_1wire_$d\n";;\
  close (AUSGABE);;\
 }

Dabei wollte ich den Inhalt von 'warnings' aus der 21_OWTEMP.pm dazu
benutzen FHEM
Befehle zu generieren. Es hat aber nicht funktioniert. Deshalb wollte ich
erst einmal die
Ergebnisse eine Datei schreiben lassen. Mit der oben dargestellten Routine
funktioniert
das aber leider nicht.

Schreibe ich die erste Zeile um, +++ define Temp_set notify .* {\ +++
kommt es zu folgender Ausgabe in die Datei: Mon Aug  1 15:21:33
2011,def_HASH(0x5ca360),_1wire_

Da meine Perl Kenntnisse sehr gering sind frage ich mich ob das was ich mir
hier vorstelle
überhaupt funktionieren kann.

Für eine Unterstützung bin ich sehr dankbar.


Gruß Klaus

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

rudolfkoenig

                                                   

> Etwas umgeschrieben komme ich zu folgenden Ergebnis.

Mit dem aktuellen fhem Version wuerde ich es so schreiben (wobei mir noch nicht
ganz klar ist, was gewuenscht ist :).

define Temp_set notify .*present {\
  my $d = ReadingsVal("@", "warnings", "");;\
  my $date_time = scalar localtime;;\
  open (AUSGABE, ">>/mnt/ausgabe.txt");;\
  print AUSGABE "$date_time,@,_1wire_$d\n";;\
  close (AUSGABE);;\
}

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

Guest

Originally posted by: <email address deleted>

Hallo Rudolf,

der 1-Wire Thermosensor liefert folgende Informationen (siehe Anhang).

Das State 'warnings' kann dabei unterschiedliche Werte beinhalten.
Z.B ' temphigh'. Wenn das der Fall ist möchte ich eine FS20 Komponente
(Steckdose) schalten. Nach dem Motto, Temperatur zu hoch, Wasser Marsch.

Hast Du für mich einen Ansatz in dieser Sache?


Gruß Klaus

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

Guest

Originally posted by: <email address deleted>

Moin, moin Zusammen.

Um meinem Ziel etwas näher zu kommen, kann mir einer mal kurz erklären wie
diese Routine funktioniert?

Ich meine nicht die Abfolge, sondern woraus wird die *lime-protection bzw.
desired-temp, measured-temp entnommen.

Sind das Variablen unter FHEM oder wird in eine LOG Datei geschaut ob dieser
String vorhanden ist?


define lime_reset notify .*lime-protection {\
  my $d = $defs{@}{READINGS}{"desired-temp"}{VAL};;\
  my $m = $defs{@}{READINGS}{"measured-temp"}{VAL};;\
  if($m > $d) {\
    fhem("set @ desired-temp 29");;\
    fhem("set @ desired-temp $d");;\
  }\


Danke für die Unterstützung.

Klaus

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

rudolfkoenig

                                                   

> Sind das Variablen unter FHEM oder wird in eine LOG Datei geschaut ob dieser
> String vorhanden ist?

Viele waehrend der Laufzeit empfangene Attribute eines Geraetes werden in den
"READINGS" Teil der internen Variablen gespeichert, die wiederum automatisch
beim save/shutdown in fhem.state landen. Man siet diese Daten in den Readings
Abschnit von "list ". Welche Attribute hier landen (oder welche als
Event verfuegbar sind) entscheidet der Modul-Autor.  Diese kann/sollte man als
Endanwender ab fhem 5.1 mit ReadingsVal("", ", "default"})
auslesen und nicht mehr ueber $defs{}{READINGS}{}{VAL}

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

Guest

Originally posted by: <email address deleted>

Hallo Rudolf,

ich muss da noch einmal nachfragen.

In der fhem.save steht nach dem Neustart folgender Eintrag für den Sensor.

#Thu Aug  4 15:26:49 2011
setstate 1W.T_Dach T: 22.0000  L: 20  H: 24  P: 1  A: 0  W: none
setstate 1W.T_Dach 2011-08-04 15:24:56 present 1
setstate 1W.T_Dach 2011-08-04 15:24:56 temperature 22.0000 (Celsius)
setstate 1W.T_Dach 2011-08-04 15:24:56 temphigh 24
setstate 1W.T_Dach 2011-08-04 15:24:56 templow 20
setstate 1W.T_Dach 2011-08-04 15:24:56 warnings none

Jetzt möchte ich abhängig von dem dem Status 'warnings' (none, temphigh,
templow) eine FS20 Befehl absetzen.

Wie müsste dann meine Anweisung für z.B.  'define Temp_set notify xxxxxxxx'
lauten,
um festzustellen welchen Wert bzw. Inhalt ''warnings' hat.

Kannst du mir ein kleines Beispiel bereit aufzeigen?

Danke.

Am 4. August 2011 08:51 schrieb Rudolf Koenig :

> > Sind das Variablen unter FHEM oder wird in eine LOG Datei geschaut ob
> dieser
> > String vorhanden ist?
>
> Viele waehrend der Laufzeit empfangene Attribute eines Geraetes werden in
> den
> "READINGS" Teil der internen Variablen gespeichert, die wiederum
> automatisch
> beim save/shutdown in fhem.state landen. Man siet diese Daten in den
> Readings
> Abschnit von "list ". Welche Attribute hier landen (oder welche als
> Event verfuegbar sind) entscheidet der Modul-Autor.  Diese kann/sollte man
> als
> Endanwender ab fhem 5.1 mit ReadingsVal("", ",
> "default"})
> auslesen und nicht mehr ueber $defs{}{READINGS}{}{VAL}
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
>

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

rudolfkoenig

                                                   

On Thu, Aug 04, 2011 at 08:41:00PM +0200, Klaus wrote:
> Hallo Rudolf,
>
> ich muss da noch einmal nachfragen.

Auch wenn diese Fragen an mich persoenlich gerichtet ist, bin ich nicht boese
wenn sowas jemand anderes aus dieser Gruppe beantwortet. Ich schaetze den
Anzahl der Leute die das koennen hier auf zwei- wenn nicht dreistellig.


> Jetzt möchte ich abhängig von dem dem Status 'warnings' (none, temphigh,
> templow) eine FS20 Befehl absetzen.

define n_high notify MySensor:warnings.temphigh set heater off;;set fan on
define n_low  notify MySensor:warnings.templow  set fan off;;set heater on
define nlow   notify MySensor:warnings.none     set fan,heater off

Falls auch noch der aktuelle Status abgefragt werden soll, um Funkverkehr zu
minimieren:

define n_high notify MySensor:warnings.temphigh {\
  fhem("set heater off") if($value{heater} ne "off");;\
  fhem("set fan off")    if($value{fan} ne "off");;\
}

usw.

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

Guest

Originally posted by: <email address deleted>

Hat mit folgendem Eintrag funktioniert:

define T_high notify T_Dach.*temphigh {\
 fhem("set Beleuchtung on") if($value{Beleuchtung} ne "on");;\
}

Danke.

Gruß Klaus

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