hallo, ich würde gerne die zwei Befehle zusammenfügen, ich komme aber mit den klammern noch nicht klar.
Es geht hier darum die P I D Werte auf 0 0 0 zu setzen wenn das Fenster auf ist, und zurück zu setzen auf die Werte 12 3 5 wenn Fenster wider geschlossen ist.
Damit erreiche ich dass die Heizung ausschaltet da pFactor=0 iFactor=0 dFactor=0 sind und eine Multiplikation mit 0 = 0 ist, und somit der PID den Stellantrieb auf 0% Stellt
Als zwei separate befehle funktioniert schon :-)
währe dankbar um Hilfe
define Fenster_AUF_Heizung_ZU_Kinderzimmer notify FS20_0dde00:on {fhem ("set heizung.2 factors 0 0 0")}
define Fenster_ZU_Heizung_AUF_Kinderzimmer notify FS20_0dde00:off {fhem ("set heizung.2 factors 12 3 5")}
grüße Andreas
Ungetestet aber sollte so (ähnlich) klappen.
define Fenster_Heizung_Kinderzimmer notify FS20_0dde00:.* {
if ("%" eq "on") {
fhem ("set heizung.2 factors 0 0 0");
}
else {
fhem ("set heizung.2 factors 12 3 5");
}
}
Hab mal ne rein akademische Frage:
Warum
notify FS20_0dde00:.*
?
Wenn der Wert sowieso mit if ("%" ...) abgefragt wird (um später ELSE verwenden zu können)
warum dann FS20_0dde00 qualifizieren? (sofern man .* = beliebige Zeichenfolgen als qualifizieren bezeichnen kann)
Ich denke
define Fenster_Heizung_Kinderzimmer notify FS20_0dde00
reicht.
Oder irre ich mich da?
habe es jestzt so in die CFG eigefügt
define Fensterzustand_Heizung_Kinderzimmer notify FS20_0dde00:.* {if ("%" eq "on") {fhem ("set heizung.2 factors 0 0 0") } else { fhem ("set heizung.2 factors 12 3 5") }
die werte endern sich aber nicht :(
Fensterzustand_Heizung_Kinderzimmer return value: Missing right curly or square bracket at (eval 621) line 2, at end of line
syntax error at (eval 621) line 2, at EOF
define Fensterzustand_Heizung_Kinderzimmer notify FS20_0dde00 {if ("%" eq "on") {fhem ("set heizung.2 factors 0 0 0") } else { fhem ("set heizung.2 factors 12 3 5") } }
(du hast mindestens die letzte } vergessen, sagt er ja auch:
Missing right curly or square bracket)
Hast recht Zrrronggg!
.* kann man hier auch weglassen
Jouuuuuuuuuuuuu das Funktioniert ;)
kann mir von euch jemand sagen wie ich die Klammern Strichpunkte usw. anwende, oder fo ich es vertändlich nachlesen kann ?
basten Dank Andreas
Naja.
Klammern ist einfach.
Soviele du aufmachst musst du auch wieder schliessen.
( ) { }
Und die Strichpunkte -- welche?
; ist Abschluss von fhem-Zeilen
: ist ein Trenner
. ist ein beliebiges Zeichen
* und alles hinten dran
Ich hoff ich hab nix vergessen ;-)
Grüße
hmmm
wann benutze ich ( ) und wann { }? einfach so wie früher im Matteuntericht ?
warum schrieben machne leute in mehreren Zeilen ?
Ich mach gern mehrere Zeilen weil es für mich übersichtlicher wird.
Geschmackssache sach ich mal
ok, dann werde ich mich jetzt mit den Klammern auseinandersetzn müssen ;-)
habe aber noch eine Frage
ich würde gerne einen Schalter einschalten wenn der Stellantrieb größer 0% ist, und wider Ausschalten sobalt der Wert gleich 0% ist.
Dafür vermute ich, muss ich nicht den PID verstellen so wie eben, sonder den PID auslesen.... hast du da eine Idee ?
Grüße Andreas
Du willst einen Schalter switchen wenn
a)der PID ungleich 0 ist oder
b)der Stellantrieb?
Da ich die 8v nicht direkt anspreche weiss ich nicht wie du die Ventilstellung abfragen kannst.
Wenn es aber ein Reading gibt wäre ReadingsVal dein Freund ;-)
DEF 1234
NAME stellantrieb.2
NR 49
STATE 6 %
TYPE FHT8V
addr 1234
idx 02
set geht nur pair oder valve
ReadingsVal giebt es soweit ich es als Anfänger sehen kan nicht :(
Brauchts auch nicht.
Wenn das der STATE ist den du auslesen kannst dann müsste das mit Value auch gehen vermute ich mal.
Ein vorsichtiges if (Value("stellantrieb.2") = "0%)
sollte dann passend sein um auf 0%-Ventilstellung reagieren zu können.
Evtl. muss in die Abfrage ein %% rein - so FHEM/PERL versiert bin ich noch nicht.
Analog dann if (Value("stellantrieb.2") > "20%)
für über 20% Ventilöffnung.
Aber alles nur ne Vermutung.
Achso und mit den Klammern ...
ein notify bekommt immer eine { wenns in die zweite Zeile geht und daher auch gleich eine }
und jedes if verlangt auch nach einer { und daher auch einer }
fhem-Befehle oder Logeinträge kommen in () und IN jeder if wird auch ( und ) verwendet.
Ist also garnicht so schwer und ich hab sicher auch einige vergessen aber das sind die gängigsten mit denen ich arbeite.
Ein at bekommt natürlich auch ( ) spendiert wenn es sein muss.
der Ventilator soll direkt angehen wen der Heizkörper Startet, und am besten 30 Minuten nachlaufen nachdem das Ventil wider ouf 0% ist...
ich will damit die messrörchen am heizkörper Manipulieren, da durch die Zugluft sozusagen die Heizkörperoberfläche größer wird.
ps. der Schalter ist Eine IT Steckdose namens Steckdose_M3
:):):):):)
:-) Puschel74 ich versuche es gerade mit den klammer anzuwenden, klappt aber noch nicht so ganz ;)
Jep.
Wenn alles sauber in fhem eingebunden ist sollte das ja kein Problem sein ;-)
ja, aber leider hab ich gerade festgestelt, dass die PID Werte zwar wie gewünscht verändert werden, also 0 0 0 zu 12 3 5 und 12 3 5 zu 0 0 0, aber leider stellt sich der Stellantrieb trotz PID 0 0 0 auf einen Wert von über 0% :(
schei*e da hab ich wohl etwas falsch überlägt :(
junge, junge, mann mann,... ich binn schon total durcheinander... ich glaube es funktioniert doch mit den 0 0 0 Stell Antrieb =0%
ich muss mahl in ruhe probieren