notify Verstndnisfrage: Wie muss der Pattern fr einen Homematc Temperatursensor aussehen?

Begonnen von Guest, 24 Juni 2012, 18:50:03

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo Gemeinde,

offensichtlich bin ich zu doof für fhem /Perl.

Ich möchte folgendes erreichen: Wenn die Temperatur im Außenkeller unter 3
Grad Celsiius sinkt, soll über einen Steckdosen- Schalter eine
Elektroheizung eingeschaltet werden, und wenn die Temperatur über 5 Grad
Celsius steigt, wieder aus.
Dazu habe ich folgendes gekauft:


   - CUL_HM_switch_19954C (Zwischenstecker)
   -
   
   CUL_HM_THSensor_19CB65
   
   
beide Teile sind sauber gepaired. Der Temperatur/Humidy Sensor sendet brav
seine Daten:

2012-06-24_17:59:09 CUL_HM_THSensor_19CB65 T: 19.4 H: 62
2012-06-24_18:01:09 CUL_HM_THSensor_19CB65 T: 19.3 H: 62
2012-06-24_18:03:59 CUL_HM_THSensor_19CB65 T: 19.3 H: 62
2012-06-24_18:06:35 CUL_HM_THSensor_19CB65 T: 19.3 H: 62


und der Zwischenstecker lässt sich auch mit set-Befehl schalten:


2012-06-23_21:04:29 CUL_HM_switch_19954C off
2012-06-24_17:21:03 CUL_HM_switch_19954C on
2012-06-24_17:21:04 CUL_HM_switch_19954C deviceMsg: on
2012-06-24_17:21:04 CUL_HM_switch_19954C on
2012-06-24_17:34:03 CUL_HM_switch_19954C off
2012-06-24_17:34:03 CUL_HM_switch_19954C deviceMsg: off
2012-06-24_17:34:03 CUL_HM_switch_19954C off


Ich möchte jetzt 2 notify "KH_an"und "KH_aus" haben. KH_an soll einschalten, wenn der untere Temperaturwert erreicht wird, KH_aus sollbei Erreichen des oberen Wertes wieder ausschalten. Die Beispiele in der commandreferenz (die ich verstehe) zeigen nur on/off Vorgänge, und das Wiki Beispiel "Heizungssteuerung einfach" ist einfach zu kompliziert für mich.


Wenn ich notify richtig verstanden habe geht das so


define ,


also


define KH_an set CUL_HM_switch_19954C on


und


define KH_aus set CUL_HM_switch_19954C on.


Ich habe es auch mal mit einem if versucht. Das meckert fhem zwar nicht an, allerdings funktioniert es auch nicht. BTW, die Schalttemperaturen sind so, dass ich es jetzt testen kann.


define KH_an notify \

 if Readingsval("CUL_HM_THSensor_19CB65","temperature" 30.0) < 20.0 \

 then set CUL_HM_switch_19954C on


define KH_aus notify \

 if Readingsval("CUL_HM_THSensor_19CB65","temperature" 10.0) > 21.0 \

 then set CUL_HM_switch_19954C off


Mir ist das ganze Patterngematsche (aka pattern matching) nicht geheuer. Ist das Ergebnis dann ein wahr / falsch? der wird nur der match-Wert weitergegeben? Im ersten Fall müsste es fuktionieren, im 2. Fall kann es nicht gehen.


Und vor allem: Hat jemand so was im Einsatz und kann mir helfen?


TIA, muellthos  




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

Guest

Originally posted by: <email address deleted>

define KH notify CUL_HM_THSENSOR {if (%EVTPART2 > 8 && value("CUL_HM_switch_19954C") ne "off") {fhem("set CUL_HM_switch_19954C off"} elsif (%EVTPART2 < 3 && value("CUL_HM_switch_19954C") ne "on") {fhem("set CUL_HM_switch_19954C on")} }

%EVTPART2 müsste die Temperatur sein, wenn's nicht geht versuch mal %EVTPART3

Nicht getestet, device-Namen kann ich auf dem iPad nicht so gut kopieren, so ähnlich sollte das klappen.

Viel Erfolg,
Uli

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

Guest

Originally posted by: <email address deleted>

Hallo Uli,

das tut nicht.

wenn ich richtig verstehe, ist die Regexp der Sensor? EVTPART eine
Struktur, in der die Temperatur und Feuchtigkeitswerte stehen, die jedesmal
gefüllt wird, wenn der Sensor sich meldet? mit dem if wird dann getestet,
ob der Wert grösser als der obere Schwellwert ist, und ob der Wert des
Schalters nicht "off" ist. Wenn das der Fall ist, wird der Befehl zum
Ausschalten gesendet? Das elseif prüft analog den unteren Schwellwert und
das der Schalter nicht schon an ist, und nur dann wird angeschaltet? Klingt
eigentlich logisch.

Nebenkriegsschauplatz:Ist die Funktion value("") richtig, oder
muss state verwendet werden? Wobei: Wenn dieser Wert "false" liefert, kann
die ganze Expression niemals wahr werden, vielleicht liegt da das Problem?

ratlos,

muellthos


DEF

CUL_HM_THSENSOR_19CB65
 {
 if (%EVTPART2 > 21 && value("CUL_HM_switch_19954C") ne "off")
   {fhem("set CUL_HM_switch_19954C off"}
 elsif (%EVTPART2 < 19 && value("CUL_HM_switch_19954C") ne "on")
   {fhem("set CUL_HM_switch_19954C on")}
 }

NAME
KH
NR
55
NTFY_ORDER
50-KH
REGEXP
CUL_HM_THSENSOR_19CB65
STATE
active
TYPE
notify


Am Sonntag, 24. Juni 2012 22:11:43 UTC+2 schrieb UliM:
>
> define KH notify CUL_HM_THSENSOR {if (%EVTPART2 > 8 &&
> value("CUL_HM_switch_19954C") ne "off") {fhem("set CUL_HM_switch_19954C
> off"} elsif (%EVTPART2 < 3 && value("CUL_HM_switch_19954C") ne "on")
> {fhem("set CUL_HM_switch_19954C on")} }
>
> %EVTPART2 müsste die Temperatur sein, wenn's nicht geht versuch mal
> %EVTPART3
>
> Nicht getestet, device-Namen kann ich auf dem iPad nicht so gut kopieren,
> so ähnlich sollte das klappen.
>
> Viel Erfolg,
> Uli


Am Sonntag, 24. Juni 2012 22:11:43 UTC+2 schrieb UliM:
>
> define KH notify CUL_HM_THSENSOR {if (%EVTPART2 > 8 &&
> value("CUL_HM_switch_19954C") ne "off") {fhem("set CUL_HM_switch_19954C
> off"} elsif (%EVTPART2 < 3 && value("CUL_HM_switch_19954C") ne "on")
> {fhem("set CUL_HM_switch_19954C on")} }
>
> %EVTPART2 müsste die Temperatur sein, wenn's nicht geht versuch mal
> %EVTPART3
>
> Nicht getestet, device-Namen kann ich auf dem iPad nicht so gut kopieren,
> so ähnlich sollte das klappen.
>
> Viel Erfolg,
> Uli


Am Sonntag, 24. Juni 2012 22:11:43 UTC+2 schrieb UliM:
>
> define KH notify CUL_HM_THSENSOR {if (%EVTPART2 > 8 &&
> value("CUL_HM_switch_19954C") ne "off") {fhem("set CUL_HM_switch_19954C
> off"} elsif (%EVTPART2 < 3 && value("CUL_HM_switch_19954C") ne "on")
> {fhem("set CUL_HM_switch_19954C on")} }
>
> %EVTPART2 müsste die Temperatur sein, wenn's nicht geht versuch mal
> %EVTPART3
>
> Nicht getestet, device-Namen kann ich auf dem iPad nicht so gut kopieren,
> so ähnlich sollte das klappen.
>
> Viel Erfolg,
> Uli


Am Sonntag, 24. Juni 2012 22:11:43 UTC+2 schrieb UliM:
>
> define KH notify CUL_HM_THSENSOR {if (%EVTPART2 > 8 &&
> value("CUL_HM_switch_19954C") ne "off") {fhem("set CUL_HM_switch_19954C
> off"} elsif (%EVTPART2 < 3 && value("CUL_HM_switch_19954C") ne "on")
> {fhem("set CUL_HM_switch_19954C on")} }
>
> %EVTPART2 müsste die Temperatur sein, wenn's nicht geht versuch mal
> %EVTPART3
>
> Nicht getestet, device-Namen kann ich auf dem iPad nicht so gut kopieren,
> so ähnlich sollte das klappen.
>
> Viel Erfolg,
> Uli

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

Guest

Originally posted by: <email address deleted>

Hi,
Deine Code-Interpretation ist korrekt :)
Zumindest hatte ich das so gedacht.
Die Value-Funktion (sorry, muss glaub ich mit großem V geschrieben werden) liest m.W. state aus, ist also alternativ zu ReadingsVal(", "state", )  Gehe davon aus dass das bei HM ebenso ist wie bei FS20.

Gibt's irgendwelche Fehlermeldungen?

Wenn nein, bau doch mal sowas ein wie
Log 1, "Part2 ist %EVTPART2";
Nicht dass EVTPART2 bloss das T: ist...

Sonst halt einfach ein wenig varrieren bis es geht ;-)
Also zB vorübergehend den check auf Value() rausschmeißen und schauen ob es dann geht.

Gruß Uli

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

Guest

Originally posted by: <email address deleted>

Hallo Uli,

variiert habe ich schon ein bisschen. Fehlermeldungen gibt es keine, was
mich eigentlich wundert.... Selbst als ich, um eine Fehlermeldung zu
provozieren, "value" mit "gnuelpft" ersetzt habe, kam keine. Das mit dem
log probiere ich, komme aber erst wieder an Wochenende dazu.

Danke einstweilen

muellthos

Am Montag, 25. Juni 2012 20:44:23 UTC+2 schrieb UliM:
>
> Hi,
> Deine Code-Interpretation ist korrekt :)
> Zumindest hatte ich das so gedacht.
> Die Value-Funktion (sorry, muss glaub ich mit großem V geschrieben werden)
> liest m.W. state aus, ist also alternativ zu ReadingsVal(",
> "state", )  Gehe davon aus dass das bei HM ebenso ist wie bei
> FS20.
>
> Gibt's irgendwelche Fehlermeldungen?
>
> Wenn nein, bau doch mal sowas ein wie
> Log 1, "Part2 ist %EVTPART2";
> Nicht dass EVTPART2 bloss das T: ist...
>
> Sonst halt einfach ein wenig varrieren bis es geht ;-)
> Also zB vorübergehend den check auf Value() rausschmeißen und schauen ob
> es dann geht.
>
> Gruß Uli
>

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