FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: matze85 am 31 Dezember 2018, 14:19:17

Titel: DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 31 Dezember 2018, 14:19:17
Servus habe folgendes mit DOIF vor:

Solarpume soll einschalten wenn meine Solarmatte 1°c über der Pooltemperatur liegt und ausschalten wenn die Temperatur gleich ist.
Hab schon folgenden Code aber leider funktionierte mein Testaufbau damit nicht.

([1wire_1:temperature] =1> ) (set Heizungs_Pumpe on) DOELSE ([1wire_2:temperature] =< ) (set Heizungs_Pumpe off)"

danke schonmal für euere Hilfe
gruß matze
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Jogi am 31 Dezember 2018, 17:28:14
Hallo,
bin kein Profi, aber aus meiner Sicht kann das so nicht funktionieren. 
Ich würde es mal so probieren und von da aus weiterarbeiten.


([1wire_2:temperature]>([1wire_1:temperature]+1)) (set Heizungs_Pumpe on)
DOELSEIF ([1wire_2:temperature] <=[1wire_1:temperature]) (set Heizungs_Pumpe off)
 
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 01 Januar 2019, 14:01:52
hi jogi danke für deine antwort leider bleibt die pumpe nach wie vor aus
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Frank_Huber am 01 Januar 2019, 14:08:38
Poste mal bitte ein list des DOIF.

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 01 Januar 2019, 14:18:05
DEVICEOVERVIEW
pool_solar
cmd_1
pool_solar INTERNALS
CFGFN
DEF
([1wire_2:temperature]>([1wire_1:temperature]+1)) (set Heizungs_Pumpe on)
DOELSEIF ([1wire_2:temperature] <=[1wire_1:temperature]) (set Heizungs_Pumpe off)
MODEL
FHEM
NAME
pool_solar
NR
353
NTFY_ORDER
50-pool_solar
STATE
cmd_2
TYPE
DOIF
READINGS
Device
1wire_2
2019-01-01 14:00:43
cmd
1
2019-01-01 14:05:55
cmd_event
1wire_1
2019-01-01 14:05:55
cmd_nr
1
2019-01-01 14:05:55
e_1wire_1_temperature
31.875
2019-01-01 14:00:42
e_1wire_2_temperature
17.125
2019-01-01 14:00:43
mode
enabled
2019-01-01 13:58:21
state
cmd_1
2019-01-01 14:05:55
pool_solar
test
ATTRIBUTES
room
test
deleteattr
PROBABLY ASSOCIATED WITH
1wire_1
T: 31.875
GPIO4
1wire_2
T: 17.125
GPIO4
Heizungs_Pumpe
off
RPI_GPIO
Select icon Extend devStateIcon Raw definition Delete this device (pool_solar) Device specific help
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Frank_Huber am 01 Januar 2019, 14:21:08
Gib mal den Befehl "list solar_pool" ein. Das ist es was ich meinte.
Mir scheint aber du hast Temp_1 und Temp_2 verwechselt.

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 01 Januar 2019, 14:28:11
Internals:
   DEF        ([1wire_1:temperature] => ) (set Heizungs_Pumpe on) DOELSE ([1wire_2:temperature] =< ) (set Heizungs_Pumpe off)"
   MODEL      FHEM
   NAME       pool_solar
   NR         46
   NTFY_ORDER 50-pool_solar
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2019-01-01 14:27:16   Device          1wire_1
     2019-01-01 14:05:55   cmd             1
     2019-01-01 14:05:55   cmd_event       1wire_1
     2019-01-01 14:05:55   cmd_nr          1
     2019-01-01 14:27:16   e_1wire_1_temperature 16.812
     2019-01-01 14:03:45   e_1wire_2_temperature 17.125
     2019-01-01 13:58:21   mode            enabled
     2019-01-01 14:05:55   state           cmd_1
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'1wire_1','temperature') =>
   devices:
     0           1wire_1
     all         1wire_1
   do:
     0:
       0          set Heizungs_Pumpe on
     1:
       0          [1wire_2:temperature] =<
       1          set Heizungs_Pumpe off
   helper:
     event      T: 16.812,temperature: 16.812
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   1wire_1
     timerevent T: 16.812,temperature: 16.812
     triggerDev 1wire_1
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: 1wire_1
       state: cmd_1
     timerevents:
       T: 16.812
       temperature: 16.812
     timereventsState:
       state: T: 16.812
       temperature: 16.812
     triggerEvents:
       T: 16.812
       temperature: 16.812
     triggerEventsState:
       state: T: 16.812
       temperature: 16.812
   internals:
   itimer:
   perlblock:
   readings:
     0           1wire_1:temperature
     all         1wire_1:temperature
   trigger:
   uiState:
   uiTable:
Attributes:
   room       test
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Frank_Huber am 01 Januar 2019, 14:44:26
Do hast das vorgeschlagene DOELSEIF nicht drin.
DOELSE kennt keine Bedingung.
Weiter hat dein Doif doch ausgelöst, es steht auf cmd_1.

Also, DOELSE zu DOELSEIF ändern und testen.

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 01 Januar 2019, 15:20:05
supi ja fühler sind vertauscht gewesen *lach vielen dank es klappt frohes neues danke
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Per am 02 Januar 2019, 12:52:15
Zitat von: matze85 am 31 Dezember 2018, 14:19:17([1wire_1:temperature] =1> ) (set Heizungs_Pumpe on) DOELSE ([1wire_2:temperature] =< ) (set Heizungs_Pumpe off)"
Ist "=1>" eine Perl- oder eine DOIF-Spezialität? Oder wieso geht das?
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 02 Januar 2019, 17:44:10
keine Ahnung ehrlich gesagt aber es funktioniert oder  was ist falsch deiner Meinung nach = 1> ist gleich 1 °c größer  schalte die pumpe an .....????
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Damian am 02 Januar 2019, 19:57:31
Zitat von: matze85 am 02 Januar 2019, 17:44:10
keine Ahnung ehrlich gesagt aber es funktioniert oder  was ist falsch deiner Meinung nach = 1> ist gleich 1 °c größer  schalte die pumpe an .....????

Solche Vergleiche sind mir neu. ;)

Für einen Vergleich brauchst du einen Operator  ==, <=, >=, >, < und zwei Werte die du miteinander vergleichen möchtest.

z. B.

a > b oder  a == b oder a >= b
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 02 Januar 2019, 20:50:09
also du meinst > = 1...? aber warum funktioniert es auch so wie ich es im Moment habe ...?
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Damian am 02 Januar 2019, 20:57:15
Du wolltest doch Temperaturdifferenz vergleichen.

D. h. deine Angaben sind nicht nur syntaktisch, sondern auch semantisch falsch. Was da funktioniert oder nicht ist Zufall. Sinnvolle Vergleiche hat Jogi bereits vorgeschlagen.

Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: matze85 am 02 Januar 2019, 22:41:27
hab ich doch so gemacht wie jogi vorgeschlagen hat
das ist mein fertiger doif
([1wire_1:temperature]>([1wire_2:temperature]+1)) (set Heizungs_Pumpe on)
DOELSEIF ([1wire_1:temperature] <=[1wire_2:temperature]) (set Heizungs_Pumpe off)
Titel: Antw:DOIF Solarsteuerung Differenztemperaturregelung Hilfe
Beitrag von: Damian am 02 Januar 2019, 22:43:35
Zitat von: matze85 am 02 Januar 2019, 22:41:27
hab ich doch so gemacht wie jogi vorgeschlagen hat
das ist mein fertiger doif
([1wire_1:temperature]>([1wire_2:temperature]+1)) (set Heizungs_Pumpe on)
DOELSEIF ([1wire_1:temperature] <=[1wire_2:temperature]) (set Heizungs_Pumpe off)


dann hast du uns einen falschen List im Post 7 gestern gepostet.