finde den Fehler nicht

Begonnen von Guest, 10 Mai 2012, 23:08:04

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo Leute!

Ich habe hier bei mir das Prinzip vom Heimstatus umgesetzt (lt Wiki)
und wollte das nun erweitern um einen Heizung ein/aus Status, damit
mir die Thermostate nicht immer von "off" auf ne Temperatur springen -
dies hätte ich versucht wie folgt umzusetzten ( beispiel HeimStatus 1
= zuhause)

define Zuhause notify whg_HomeStat1 set HomeStatus 1;;\
{if \
($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer desired-temp 21";;\
fhem "set Heizung_Bad desired-temp 18" \
}\
if(sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) { \
  fhem "set wz_Philips on" \
}\
}\
}

Leider bekomme ich hier immer folgenden Fehler:
OK 2012.05.10 22:54:20 2: FS20 set whg_HomeStat1 on
OK 2012.05.10 22:54:20 2: dummy set HomeStatus 1
ERROR 2012.05.10 22:54:20 3: Zuhause return value: Unknown command
{if, try help
Unknown command fhem, try help

Für das zweite IF habe ich diese Vorlage verwendet:
http://fhemwiki.de/wiki/Licht_bei_Bedingungen_einschalten

Das soll bewirken, dass eine Lampe eingeschaltet wird, wenn wir
zuhause nach Sonnenuntergang heim kommen (Lampe schaltet sonst bei
Sonnenuntergang automatisch ein, wenn Heimstat=1)

Wäre super wenn mir da jemand helfen könnte.
Vielen Dank im Voraus

Steeeve

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Ps: Die Leerzeilen sind in der Config nicht vorhanden

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> define Zuhause notify whg_HomeStat1 set HomeStatus 1;;\
> {if \

Das Problem ist, dass fhem Kommandos und Perl-Einzeiler gemischst werden.  Das
funktioniert solange, bis man in dem Perl-Einzeiler keine ;; verwendet.  Der
Fhem Befehlsparser ist zu primitiv, und trennt in diesem Fall nach ;; ,  was
falsch ist. Bin aber unsicher, ob ich das fixen, und solche Mischprogramme
ermuntern will.

Weiterhin ist ein } zuviel im Programm.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Zrrronggg!

                                                     

> Bin aber unsicher, ob ich das fixen, und solche Mischprogramme
> ermuntern will.

Da ich das auch schon mal machen wollte ( habe dann erschlossen dass
das wohl nicht geht) mal die Frage: Was spricht dagegen?
(un)übersichtlichkeit?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Guest

Originally posted by: <email address deleted>

OK, danke - da kann ich lang probieren ;)

Dann ist das offensichtlich die (nicht ganz so schöne) Lösung:

define Zuhause notify whg_HomeStat1 set HomeStatus 1;;\
{if \
($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer desired-temp 21"\
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Bad desired-temp 18" \
}\
if(sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) { \
  fhem "set wz_Philips on" \
}\
}

Es bringt mir mal keinen Fehler und wenn ich das IF für den
Sonnenuntergang mit 1==1 ersetzte, dann schaltet auch die Lampe...

Danke nochmal für die Hilfe!

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Dann ist das offensichtlich die (nicht ganz so schöne) Lösung:

Etwas schoener waere gewesen das erste "set HomeStatus 1" auch nach perl zu
verfrachten, auf die Idee, ein perl skript ganz ohne Trenner zu bauen bin ich
selber nicht gekommen.  Falls es nicht viel Aufwand bedeutet, werde ich den Bug
fixen und hier melden.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> Da ich das auch schon mal machen wollte ( habe dann erschlossen dass
> das wohl nicht geht) mal die Frage: Was spricht dagegen?
> (un)übersichtlichkeit?

Nee, eher Mangel an (meinem) Verstand :) Folgendes soll funktionieren:
  set a on;; { ..;; ...} ;; set a off
Dazu muesste der Parser in der Lage sein zum { den passenden } zu finden, und
das habe ich mir bisher erspart, weil ich fhem einfach halten, und nicht Tage
mit dem Loesen des Problems verbringen will.  Wenn jemand eine _einfache_
Loesung hat, her damit.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Das hatte ich probiert, hat aber nicht funktioniert...

> Etwas schoener waere gewesen das erste "set HomeStatus 1" auch nach perl zu
> verfrachten, auf die Idee, ein perl skript ganz ohne Trenner zu bauen bin ich
> selber nicht gekommen.  Falls es nicht viel Aufwand bedeutet, werde ich den Bug
> fixen und hier melden.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Ömmm, in irgendeinem post hab ich letztens mitgelesen, dass jemand vier
Semikola gesdetzt hat. Geht's damit? Oder hab ich jetzt das Thema verfehlt
;-)

  set a on;; { ..;;;; ...} ;; set a off


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo!

Hat sich hier zufällig schon etwas getan, weil langsam wirds etwas
unübersichtlich ;)


define Zuhause notify whg_HomeStat1 set HomeStatus 1;;\
{if \
($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer desired-temp 21"\
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Bad desired-temp 20" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Kinderzimmer desired-temp 20" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer mode auto" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Schlafzimmer mode auto" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Bad mode auto" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Kinderzimmer mode auto" \
}\
if(sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) { \
  fhem "set wz_Philips on" \
}\
}

Danke

Steeeve

On Saturday, May 12, 2012 10:29:11 AM UTC+2, Rudolf Koenig wrote:
>
> > Da ich das auch schon mal machen wollte ( habe dann erschlossen dass
> > das wohl nicht geht) mal die Frage: Was spricht dagegen?
> > (un)�bersichtlichkeit?
>
> Nee, eher Mangel an (meinem) Verstand :) Folgendes soll funktionieren:
>   set a on;; { ..;; ...} ;; set a off
> Dazu muesste der Parser in der Lage sein zum { den passenden } zu finden,
> und
> das habe ich mir bisher erspart, weil ich fhem einfach halten, und nicht
> Tage
> mit dem Loesen des Problems verbringen will.  Wenn jemand eine _einfache_
> Loesung hat, her damit.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Ich bastel gerade das gleiche, etwas "komprimierter klappt scheinbar schon,
folgendes sollte auch gehen:

define Zuhause notify whg_HomeStat1 set HomeStatus 1;;\
{if \
($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer desired-temp 21"\
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Bad,Heizung_Kinderzimmer desired-temp 20" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer,Heizung_Schlafzimmer mode auto" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Bad,Heizung_Kinderzimmer mode auto" \
}\
if(sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) { \
  fhem "set wz_Philips on" \
}\
}

also mit Komma kombinieren klappt, ich habs noch nicht getestet, weil ich
von unterwegs aus programmiere FHEM meckert bei mir nicht und führt die
Befehle aus, hab aber noch nicht die FHTs gesehen obs klappt.
Wobei ich ;; schon auch praktisch fände. könnte man nicht auch sowas wie
\;\; machen?! das es vom Perl Interpreter ignoriert wird?

Man FHEM macht schon echt Spa, vorallem habe ich festgestellt, das ich vor
10 Jahren das letzte mal Perl programmiert habe :-(.... woran merkt man das
man alt wird ;-).

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

ch ich sehe gerade die letzte beiden gehen auch noch zusammen also:

define Zuhause notify whg_HomeStat1 set HomeStatus 1;;\
{if \
($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Wohnzimmer desired-temp 21"\
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set Heizung_Bad,Heizung_Kinderzimmer desired-temp 20" \
}\
if ($value{HeizungEinAus} eq "ein"){\
fhem "set
Heizung_Wohnzimmer,Heizung_Schlafzimmer,Heizung_Bad,Heizung_Kinderzimmer
mode auto" \
}\
if(sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min)) { \
  fhem "set wz_Philips on" \
}\
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Super, danke für den Tipp.
ja, macht voll Spaß. echt toll was man alles machen kann. hab's jetzt am Pi laufen und haut Super hin!

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Sorry bin gerade im Wahn: Das schöne, wie hässliche an Perl ist man kann
auch alles in einer Zeile programmieren, gibt kompakten Code aber auch
etwas schwerer zu lesen für jemanden der es nicht kennt, du könntest auch
schreiben:

define Zuhause notify whg_HomeStat1 set HomeStatus 1;;{ if
($value{HeizungEinAus} eq "on") {fhem("set Heizung_Wohnzimmer desired-temp
21")} };;{ if ($value{HeizungEinAus} eq "on") {fhem("set
Heizung_Bad,Heizung_Kinderzimmer desired-temp 20")} };;{ if
($value{HeizungEinAus} eq "on") {fhem("set
Heizung_Wohnzimmer,Heizung_Schlafzimmer,Heizung_Bad,Heizung_Kinderzimmer
mode auto")} };;if(sunset_abs(1800) lt sprintf("%%02d:%%02d", $hour, $min))
{fhem "set wz_Philips on")} }

Dann würde ich es aber denke ich Kommentieren :-).

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

na gut, das rentiert sich nicht. um webinterface werden Zeilenumbrüche eh korrekt umgesetzt, von daher...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com