FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: derNeue am 24 November 2016, 19:46:53

Titel: DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 19:46:53
Hallo, habe heute meine Lacrosse Temp. mit meinem Eigenbau Jeelink installiert und Laufen sehr gut. :-)

Nun habe ich eine DOIf fürs Bad geschrieben.....

define HeizungBZAn DOIF ([19:00-21:00] and [Temp1:temperature] <21) (set SteckdoseBad on)
define HeizungBZAus DOIF ([19:00-21:00] and [Temp1:temperature] >22.5)(set SteckdoseBad off)

Ich möchte das zwischen der Uhrzeit wenn die Temp unter 21 ist die Heizung anschalten
und wieder  bei 22.5 aus.....

1. Das geht ja bestimmt auch noch kürzer (ich möchte das lernen)
2. das attribut  attr HeizungBZAn do always kann ich ja nicht schreiben habe ja 2 define ???
Titel: Antw:DOIF Frage ???
Beitrag von: Otto123 am 24 November 2016, 20:10:17
Ganz anderer Ansatz:
define HeizungBZ THRESHOLD Temp1:temperature:1.5:21.75 SteckdoseBad
define HeizungBZTime DOIF ([19:00-21:00]) (set HeizungBZ active,save) DOELSE (set HeizungBZ deactivated,save)


Oder so wie hier  (http://fhem.de/commandref_DE.html#DOIF_Weitere_Anwendungsbeispiele)

Die Frage versteh ich nicht: 2. das attribut  attr HeizungBZAn do always kann ich ja nicht schreiben habe ja 2 define ???
Du musst doch attr HeizungBZAn do always und attr HeizungBZAus do always schreiben!?

Und lerne bitte Code Tags  ???

Gruß Otto
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 20:23:12
erst einmal Danke Otte....ja ich lerne hier jeden Tag, aber Arbeiten, Familie und mein ALter und noch  Fhem...ich glaube das ist zur Zeit etwas zu viel. Werde aber aber auf jeden Fall reinlesen und versuchen zu verstehen...Danke
Titel: Antw:DOIF Frage ???
Beitrag von: l2r am 24 November 2016, 20:42:02
du hast 2 DOIFs definiert, anstatt ein DOIF mit 2 Bedingungen. Ich glaube das hattest du in deinem ersten Post nicht ganz auf dem Schirm und warst deshalb ein bisschen verwirrt.
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 20:58:02
define HeizungBZ THRESHOLD Temp1:temperature:1.5:21.75 SteckdoseBad
define HeizungBZTime DOIF ([19:00-21:00]) (set HeizungBZ active,save) DOELSE (set HeizungBZ deactivated,save)


noch einmal Danke,

Ich define Heizung BZ mit dem Modul THRESHOLD mit dem Sensor und Aktor und gebe dann die Temperatur an . Aber wie verstehe ich jetzt 1.5;21,75 ???
und dann wird der Aktor SteckdoseBad Ohne on oder off geschrieben warum ???
zweite define ist mir klar....zwischen 19-21 Uhr Heizung BZ active und speichern und wenn das nicht zutrift dann HeizungBZ deactivated, save

ist beim Modul THRESHOLD active = on und deactivated =off ???

Titel: Antw:DOIF Frage ???
Beitrag von: Otto123 am 24 November 2016, 21:04:22
Hier wäre die Doku (http://fhem.de/commandref.html#THRESHOLD)

THRESHOLD weiß, dass es on und off setzen muss, das ist default. Wenn nicht müsste man es angeben.
21.75 ist der Mittelwert aus Deinen 22.5 und 21.0 Der ist die Solltemeperatur, wie bei Dir.
1.5 ist die Hysterese, also die Differenz aus Deinen Werten 22.5 minus 21.0
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 21:38:15
muss ich noch do always schreiben, die Heizung ist einmal an und ausgegangen und dann nicht mehr, habe auch bis 23:oo Uhr verlängert ?
Titel: Antw:DOIF Frage ???
Beitrag von: Otto123 am 24 November 2016, 21:42:23
THRESHOLD läuft autark. do always ist was DOIF spezifisches. Und für die Zeitsteuerung braucht es kein do always.

mach mal ein list HeizungBZ und poste das Ergebnis in Code tags (# Taste über den Smilies)

Gruß Otto
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 21:48:59
Internals:
   DEF        Temp1:temperature:1.5:21.75 SteckdoseBad
   NAME       HeizungBZ
   NR         310
   NTFY_ORDER 50-HeizungBZ
   STATE      disabled
   TYPE       THRESHOLD
   cmd1_gt    set SteckdoseBad off
   cmd2_lt    set SteckdoseBad on
   cmd_default 2
   hysteresis 1.5
   init_desired_value 21.75
   offset     0
   sensor     Temp1
   sensor_reading temperature
   Readings:
     2016-11-24 21:47:08   cmd             wait for next cmd
     2016-11-24 21:47:08   desired_value   21.75
     2016-11-24 21:47:08   mode            deactivated
     2016-11-24 20:58:36   sensor_value    20.9
     2016-11-24 21:47:08   state           disabled
     2016-11-24 21:47:08   threshold_max   21.75
     2016-11-24 21:47:08   threshold_min   20.25
Attributes:
   disable    1
   number_format %.1f
   state_cmd1_gt off
   state_cmd2_lt on
   state_format _m _dv _sc


Vielen Dank
Titel: Antw:DOIF Frage ???
Beitrag von: Otto123 am 24 November 2016, 22:01:40
Naja, da habe ich die Doku nicht bis zu Ende gelesen.  :-X
THRESHOLD sieht das anders als ich:
     2016-11-24 20:58:36   sensor_value    20.9
     2016-11-24 21:47:08   threshold_max   21.75
     2016-11-24 21:47:08   threshold_min   20.25

Er nimmt die Temperatur nicht als Mittelwert sondern als Maximum.
Er wartet jetzt das die Temperatur auf 20.25 sinkt und schaltet dann wieder ein.

Du gibst folgendes in die Kommandozeile ein:
set HeizungBZ offset 0.75

Damit bekommt er noch einen Offset von 0.75. Die Temperatur ist dann der Mittelwert wie ich es erklärt habe. Du wirst sehen das sich die Werte für max und min verändern.

Alternativ gibst Du set HeizungBZ desired 22.5 ein.
Damit setzt Du die obere Temperatur einfach wie bei in Deinem Ansatz auf 22.5°.

Gruß Otto
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 22:08:47
Internals:
   DEF        Temp1:temperature:1.5:21.75 SteckdoseBad
   NAME       HeizungBZ
   NR         310
   NTFY_ORDER 50-HeizungBZ
   STATE      disabled
   TYPE       THRESHOLD
   cmd1_gt    set SteckdoseBad off
   cmd2_lt    set SteckdoseBad on
   cmd_default 2
   hysteresis 1.5
   init_desired_value 21.75
   offset     0.75
   sensor     Temp1
   sensor_reading temperature
   Readings:
     2016-11-24 22:04:44   cmd             wait for next cmd
     2016-11-24 21:47:08   desired_value   21.75
     2016-11-24 21:47:08   mode            deactivated
     [u][b]2016-11-24 20:58:36   sensor_value    20.9 [/b][/u]
     2016-11-24 21:47:08   state           disabled
     2016-11-24 22:04:44   threshold_max   22.5
     2016-11-24 22:04:44   threshold_min   21
Attributes:
   disable    1
   number_format %.1f
   state_cmd1_gt off
   state_cmd2_lt on
   state_format _m _dv _sc


geht immer noch nicht an.....und ich bin auf T: 20.2 H: 47

Titel: Antw:DOIF Frage ???
Beitrag von: Otto123 am 24 November 2016, 22:16:55
Aber das Modul ist deaktiviert -->      2016-11-24 21:47:08   state           disabled

Gib set HeizungBZ active ein und er wird loswurzeln. Es dauert immer eine Minute oder so
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 22:19:45
define HeizungBZ THRESHOLD Temp1:temperature:1.5:21.75 SteckdoseBad
attr HeizungBZ disable 1
attr HeizungBZ number_format %.1f
attr HeizungBZ state_cmd1_gt off
attr HeizungBZ state_cmd2_lt on
attr HeizungBZ state_format _m _dv _sc
define HeizungBZTime DOIF ([19:00-23:00]) (set HeizungBZ active,save) DOELSE (set HeizungBZ deactivated,save)


meine Config.....ich habe aber nichts deaktiviert....

habe attr HeizungBZ disable 1 einmal geblockt....und schon ging die Heizung an...
Titel: Antw:DOIF Frage ???
Beitrag von: kumue am 24 November 2016, 22:26:07
siehst du im Eventmonitor Events von deinem Temperaturfühler ?
Irgendwelche event-Atrribute beim Fühler gesetzt ?
Titel: Antw:DOIF Frage ???
Beitrag von: Otto123 am 24 November 2016, 22:32:33
Zitat von: derNeue am 24 November 2016, 22:19:45
habe attr HeizungBZ disable 1 einmal geblockt....und schon ging die Heizung an...
Wie meinst Du das? geblockt?

Ich war aber auch nicht bei Dir und hab es deaktiviert! Ich meine im list stand es drin! Dein Pumuckl macht auch FHEM?  :o

Warum hast Du nicht set HeizungBZ active gemacht?
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 24 November 2016, 23:42:14
Habe jetzt einmal HeizungBZ auf aktiv gesetzt....danke für die Hilfe....werde mich bei Fragen wieder melden....Danke
Titel: Antw:DOIF Frage ???
Beitrag von: Per am 25 November 2016, 11:30:00
Zitat von: derNeue am 24 November 2016, 20:23:12ja ich lerne hier jeden Tag
Dann sei dir die Überschrift nochmal verziehen, aber "DOIF Frage" bei "DOIF"? Wäre schlimm, wenn es keine Frage zu DOIF wäre! Und drei Fragezeichen müssen auch nicht sein, zumal "DOIF Frage" selbst keine Frage ist.

Zum eigentlichen Problem: eigentlich warst du schon auf dem richtigen Weg, aber statt zwei reicht ein DOIF aus:
define HeizungBZAn DOIF ([19:00-21:00] and [Temp1:temperature] < 21) (set SteckdoseBad on)
DOELSEIF ([19:00-21:00] and [Temp1:temperature] > 22.5)(set SteckdoseBad off)

brauchst du auch kein extra THRESHOLD, so einfache Sachen kann DOIF noch alleine.
do always wäre hier sogar überflüssig, im GGteil, so wird die Steckdose nicht bei jeder neuen Temperaturmeldung wieder an- oder ausgeschaltet, obwohl sie diesen Zustand schon hat (Trägheit der Heizung).
Titel: Antw:DOIF Frage ???
Beitrag von: derNeue am 25 November 2016, 11:51:03
Vielen Dank für den DOIF befehl, ich werde mich bessern und bessere Betreff schreiben...