Hallo,
Eine meiner DOIF Definitionen gibt Cmd1 aus (also ist Bedingung erfüllt).
Doch das Angesprochene Divice schaltet nicht.
Das Device ist RPI_GPIO als Ausgang definiert.
Hier das List meines DOIF:
Internals:
CFGFN FHEM/systemmonitor.cfg
DEF ([sysmon:cpu_temp] > 46) (set Raspberry_Ventilator on) DOELSEIF ([sysmon:cpu_temp] < 35) (set Raspberry_Ventilator off)
NAME RaspberryVent
NR 213
NTFY_ORDER 50-RaspberryVent
STATE cmd_1
TYPE DOIF
READINGS:
2017-11-06 11:03:35 Device sysmon
2017-10-31 05:40:21 cmd 1
2017-10-31 05:40:21 cmd_event sysmon
2017-10-31 05:40:21 cmd_nr 1
2017-11-06 11:03:35 e_sysmon_cpu_temp 45.62
2017-10-31 05:40:21 state cmd_1
condition:
0 ReadingValDoIf($hash,'sysmon','cpu_temp') > 46
1 ReadingValDoIf($hash,'sysmon','cpu_temp') < 35
devices:
0 sysmon
1 sysmon
all sysmon
do:
0:
0 set Raspberry_Ventilator on
1:
0 set Raspberry_Ventilator off
2:
helper:
event stat_cpu_percent: 3.66 0.00 0.48 95.77 0.08 0.00 0.02,cpu_temp_avg: 44.9,cpu_temp: 45.62,loadavg: 0.24 0.32 0.21,eth0_diff: RX: 0.04 MB, TX: 0.10 MB, Total: 0.14 MB,ram: Total: 923.35 MB, Used: 292.05 MB, 31.63 %, Free: 631.30 MB
globalinit 1
last_timer 0
sleeptimer -1
timerdev sysmon
timerevent cpu_freq: 600
triggerDev sysmon
timerevents:
cpu_freq: 600
timereventsState:
cpu_freq: 600
triggerEvents:
stat_cpu_percent: 3.66 0.00 0.48 95.77 0.08 0.00 0.02
cpu_temp_avg: 44.9
cpu_temp: 45.62
loadavg: 0.24 0.32 0.21
eth0_diff: RX: 0.04 MB, TX: 0.10 MB, Total: 0.14 MB
ram: Total: 923.35 MB, Used: 292.05 MB, 31.63 %, Free: 631.30 MB
triggerEventsState:
stat_cpu_percent: 3.66 0.00 0.48 95.77 0.08 0.00 0.02
cpu_temp_avg: 44.9
cpu_temp: 45.62
loadavg: 0.24 0.32 0.21
eth0_diff: RX: 0.04 MB, TX: 0.10 MB, Total: 0.14 MB
ram: Total: 923.35 MB, Used: 292.05 MB, 31.63 %, Free: 631.30 MB
internals:
itimer:
readings:
0 sysmon:cpu_temp
1 sysmon:cpu_temp
all sysmon:cpu_temp
regexp:
0:
1:
all:
state:
STATE:
trigger:
Attributes:
group Ventilator_Raspberry
room 9.03_System
sortby 5
Und das List des RPI_GPIO
Internals:
CFGFN FHEM/systemmonitor.cfg
DEF 12
GPIO_Basedir /sys/class/gpio
NAME Raspberry_Ventilator
NR 205
RPI_pin 12
STATE off
TYPE RPI_GPIO
WiringPi_gpio /usr/bin/gpio
READINGS:
2017-11-06 11:05:04 Pinlevel low
2017-11-05 19:15:57 state off
fhem:
interfaces switch
Attributes:
direction output
group Ventilator_Raspberry
room 9.03_System
sortby 2
Eigenartig ist, dass es immer funktioniert hat, aber seit ein paar Tagen nicht mehr.
Ich finde den Fehler nicht.
Händisch schalten kann ich, das läuft der Ventilator.
Hi,
der steht seit dem 31.10 auf cmd1
von daher ist für den DOIF das device noch an.
evtl die Hysterese enger stellen. Wenn er die 35 Grad nicht erreicht schaltet er sonst nie selbst über cmd2 ab.
Danke,
Habe das DOIF per set mal cmd2 gesetzt.
mal sehen was passiert.
Heisst das, man sollte Schalter die per DOIF bedient werden nie per Hand schalten?
kannst du schon.
musst dann nur bedenkebn dass ohne "do always" der DOIF dann steckenbleiben kann bis die jeweils andere Bedingung wahr wird.
Das ist ein guter Tipp.
Jedenfalls hat das DOIF in der Zwischenzeit wieder geschaltet. :)
Habe das Attribut zwischenzeitlich gesetzt!
Zitat von: maci am 06 November 2017, 13:33:02
Das ist ein guter Tipp.
Jedenfalls hat das DOIF in der Zwischenzeit wieder geschaltet. :)
Habe das Attribut zwischenzeitlich gesetzt!
Bei zyklisch sendenden Sensoren (hier: sysmon:cpu_temp) sollte do always nicht gesetzt werden, sonst wird ständig der selbe DOIF-Zweig ausgeführt.
würde aber in diesem Fall evtl sogar nützlich sein.
Der Lüfter wird immer wieder angeschaltet, auch wenn er mal versehentlich von hand ausgeschaltet wird.
würde dann eher mit cmdpause die Häufigkeit limitieren. oder?
Aber prinizipell hast Du da natürlich Recht. :-)
Zitat von: Frank_Huber am 06 November 2017, 14:05:44
würde aber in diesem Fall evtl sogar nützlich sein.
Der Lüfter wird immer wieder angeschaltet, auch wenn er mal versehentlich von hand ausgeschaltet wird.
würde dann eher mit cmdpause die Häufigkeit limitieren. oder?
Aber prinizipell hast Du da natürlich Recht. :-)
Klingt einleuchtend.
Habe ein cmdpause von 3600 gesetzt (= 60 min)
Ansonsten hätte ich mir überlegt, dass ich andere DOIFs ein cmd2 per at um Mitternacht setze. Vorausgesetzt es passt zum Ablauf.
Zitat von: maci am 06 November 2017, 14:18:53
Klingt einleuchtend.
Habe ein cmdpause von 3600 gesetzt (= 60 min)
Ansonsten hätte ich mir überlegt, dass ich andere DOIFs ein cmd2 per at um Mitternacht setze. Vorausgesetzt es passt zum Ablauf.
cmdpause ist eine Notlösung, denn damit verpasst man ggf. wichtige Events, die zum Schalten führen würden - im schlimmsten Falle hier eine ganze Stunde! lang.
Zitat von: Damian am 06 November 2017, 14:24:15
cmdpause ist eine Notlösung, denn damit verpasst man ggf. wichtige Events, die zum Schalten führen würden - im schlimmsten Falle hier eine ganze Stunde! lang.
Ich hier passt das cmdpause, denn schlimmstenfalls schaltet der Ventilator des Raspberry nicht ein bzw aus.
So heiß wird der Raspberry nicht, dass er nicht ohne Kühlventilator sein könnte.
Es ist einfach eine Sicherheitsmaßnahme.
Mach doch einfach einen dritten Zweig mit einer noch höheren Temp auf, welcher auch nur den Lüfter einschaltet. Und vllt. noch eine Meldung absetzt.