FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Vladi2010 am 18 Januar 2013, 18:27:46

Titel: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 18:27:46
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
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 18:36:53
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");
  }
}

Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Zrrronggg! am 18 Januar 2013, 18:48:06

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?

Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 18:53:37
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
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Zrrronggg! am 18 Januar 2013, 18:55:17
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") }  }
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Zrrronggg! am 18 Januar 2013, 18:56:21
(du hast mindestens die letzte  }  vergessen, sagt er ja auch:
Missing right curly or square bracket)
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 18:59:52
Hast recht Zrrronggg!
.* kann man hier auch weglassen
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 19:03:44
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
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 19:09:03
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
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 19:12:25
hmmm

wann benutze ich ( ) und wann { }?    einfach so wie früher im Matteuntericht ?

warum schrieben machne leute in mehreren Zeilen ?
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 19:14:22
Ich mach gern mehrere Zeilen weil es für mich übersichtlicher wird.
Geschmackssache sach ich mal
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 19:19:49
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
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 19:51:54
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 ;-)
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 19:58:18
DEF   1234
NAME stellantrieb.2
NR 49
STATE 6 %
TYPE FHT8V
addr 1234
idx 02

set geht nur pair oder valve
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 20:00:35
ReadingsVal giebt es soweit ich es als Anfänger sehen kan nicht :(
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 20:08:17
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.
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 20:15:56
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.
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 20:17:19
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


:):):):):)  
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 20:20:49
:-)  Puschel74 ich versuche es gerade mit den klammer anzuwenden, klappt aber noch nicht so ganz ;)
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Puschel74 am 18 Januar 2013, 20:27:17
Jep.
Wenn alles sauber in fhem eingebunden ist sollte das ja kein Problem sein ;-)
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 20:33:50
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 :(
Titel: Aw: wie Befehle zusammenfügen
Beitrag von: Vladi2010 am 18 Januar 2013, 20:42:25
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