Hi!
ich habe an einem Pi einen w1-Temp-Sensor und auf GPIO ein Relais. Ziel ist, das
Realis high zu schalten, wenn Raumtemp < Sliderwert bzw. low, wenn
Raumtemp >= Sliderwert.
Mein Ansatz
10 # GPIO einrichten
20 define RELAIS RPI_GPIO 22
30 attr RELAIS direction output
40 # Slider Temp
50 define Heizung.Slider dummy
60 attr Heizung.Slider setList state:slider,16,1,25
70 attr Heizung.Slider webCmd state
80 # Slider-Wert auslesen => $sliderwert
90 define Heizung.Slider.Notify notify Heizung.Slider:* {\
100 my $sliderwert = ReadingsVal("Heizung.Slider","state","on");\
110 }
120 # Relais-schalten
130 define Termostat notify Wohnzimmer:temperature:.* {\
140 my $rel = (int($EVTPART1) < $sliderwert ? "on" : "off");\
150 fhem "set RELAIS $rel";\
160 }
Das Problem wird im log-file dargestellt: Die Variable $sliderwert wird in Zeile
100 deifiniert, jedoch nicht an zeile 140 übergeben:
"Global symbol "$sliderwert" requires explicit package ..."
Ich habe es auch mit var versucht - kein erfolg.
Die Frage lautet: Wie vergleiche ich IST- mit SOLL-Temp und löse entsprechend einen
"fhem 'set ..'" aus?
greets
Variablen die mit my deklariert wurden sind nur innerhalb des notify gültig.
Das sagt aber auch die Meldung.
Entweder in jedem notify my verwenden oder Variablen global mit our deklarieren - dann aber auch bitte nur einmal.