Hallo,
In meiner Web Ansicht(Opera Browser) taucht poppt an einer Stelle mal diese Fehlermeldung auf
fhem?detail=og_wohnzi_wunschtemp line 1:
Uncaught SyntaxError: Unexpected token U in JSON at position 0
anbei mal ein list vom DOIF
Internals:
DEF ([Wunschtemp_temp_og_wz])
NAME og_wohnzi_wunschtemp
NR 250
NTFY_ORDER 50-og_wohnzi_wunschtemp
STATE Manuell inaktiv
TYPE DOIF
READINGS:
2017-08-21 09:34:28 mantemp 0
condition:
0 InternalDoIf($hash,'Wunschtemp_temp_og_wz','STATE')
devices:
0 Wunschtemp_temp_og_wz
all Wunschtemp_temp_og_wz
do:
0:
0
1:
helper:
globalinit 1
last_timer 0
sleeptimer -1
internals:
0 Wunschtemp_temp_og_wz:STATE
all Wunschtemp_temp_og_wz:STATE
itimer:
regexp:
all:
state:
STATE:
Attributes:
alias OG-Wohnz-Wunschtemp-Temporär
do always
group Heizung und Temperatur
icon temp_control
readingList mantemp
room OG_Wohnzi
setList mantemp:12,17,18,19,20,21,21.5,22,22.5,23,23.5,24,26
sortby 3
webCmd mantemp
Im FHEM Log selber ist kein Eintrag.
Kann mir bitte jemand sagen was es eventuell damit auf sich hat.
Danke vorweg
Hans-Jürgen
DEF ([Wunschtemp_temp_og_wz])
Da fehlt doch noch etwas ;)
Du hast doch folgt Defeniert:
define <name> DOIF (<Bedingung>)
Und nicht:
define <name> DOIF (<Bedingung>) (<Befehle>)
Oder übersehe ich da was?!
Moin
Also ich sehe da nicht mal eine richtige Bedingung!
Gruss Christoph
Das ist in die cfg manuell eingetragen. Der webeditor hätte das so nicht angenommen...
Gesendet von meinem S3_32 mit Tapatalk
Moin Frank
Doch ich meine das wird angenommen. Man kann es aber unter Umstaenden nicht editieren, da die DEF nicht sichtbar ist!?
Ich hatte schon mal so einen Fall!
Gruss Christoph
Hallo,
in Punkto editieren der cfg. hatte ich mir schon lange abgewöhnt, da FHEM bei mir wächst und wächst.
Will es aber nicht beschwören für diesen Fall.
Gerade probiert das DOIF lässt sich editieren.
Habe es analog zur Temperatureinstellung für andere Räume in Benutzung.
Ist aus Tagelangen versuchen hervorgegangen Text statt devStateIcon vor dem List Feld angezeigt zu bekommen.
Wie Manuell aktiv oder Manuell inaktiv oder Fenster offen und Temp Auswahl in der Liste bleibt auf 12 sozusagen als Verriegelung.
Komisch in meinem Webeditor ließ sich eben ein DOIF ohne Ausführungsteil anlegen.
Werde die Sache weiter beobachten.
Gruß an Alle Hans-Jürgen
Moin
Irgendwie ist es so schwierig Dir zu helfen. Wir wissen nicht so richtig, was Dein DOIF machen soll. Das was Du angelegt hast, hat ja noch nicht mal eine richtige Bedingung (IF) und der Ausfuehrungsteil (DO) fehlt komplett. Wenn Du eine Auswahlliste fuer Deinen Thermostaten brauchst, dann ist das bestimmt nicht der richtige Weg, oder Du unterschlaegst uns noch etwas!
Gruss Christoph
Man kann doch ein leeres DOIF anlegen, dann wird es aber nicht möglich, auf DEF zu klicken. Um ein editierbares DOIF anzulegen, sollte man folgendes schreiben:
define doifname DOIF ##
([Wunschtemp_temp_og_wz]) ist doch eine richtige Bedingung. Das Doif wird damit bei jedem Event des Devices Wunschtemp_temp_og_wz getriggert. Allerdings wird das entspr. (hier felhende) Befehl ohne weiteres nur einmal durchgeführt, da es danach kein Zustandwechsel erfolgen kann (die Bedingung wird immer wahr, egal welches Event triggert). Mit do always aber ok.
Allerdings ist die Fehlermeldung doch merkwürdig. Aber anscheinend hast Du nicht "nur" ein leeres DOIF kreiert, sondern schon damit gespielt, da Readings wie "mantemp" oder Attributes wie setList und webCmd zu sehen sind, und das STATE auf "Manuell inaktiv" steht, was für ein DOIF nicht standard ist. Und es fehlt das Reading "cmd". Deswegen ist die Vermutung nach manuell Editieren von fhem.cfg schon nicht mal schlecht. Oder eine gekraschte Konfiguration.
Auf jeden Fall ist das DOIF nicht "normal" und es wundert mich nicht, wenn die Weboberfläsche falsch reagiert.
Hallo amenomade,
hmmm, also auf dieses DOIF kann ich auf DEF klicken und editieren.
Mit meinen geschmeichelt bescheidenen Kenntnissen halte ich es als Art dummy Ersatz ??
Wie schon lange ist in FHEM der Code und die gewünschte Anzeige(Optik) für mich ein Minenfeld.
Hier nochmal zwei von 4 DOIF die im Zusammenhang für die Anzeige stehen vielleicht macht es meinen unnormalen Weg besser Verständlich?
Internals:
DEF ([HC_OG_WZ] and [TK_OG_WZ_l:state] eq "off" and [TK_OG_WZ_r:state] eq "off")
(setstate og_wohnzi_wunschtemp Manuell inaktiv)
(setreading og_wohnzi_wunschtemp mantemp 0)
(set og_wohnzi_wunschtemp mantemp 0)
(trigger WEB JS:location.reload(true))
## loest aus wenn Schaltzeitpunkt von HeatingControl oder Fenster zu
NAME wunscht_og_wz_stat1
NR 247
NTFY_ORDER 50-wunscht_og_wz_stat1
STATE cmd_1
TYPE DOIF
READINGS:
2017-08-21 09:34:28 Device HC_OG_WZ
2017-08-21 09:34:28 cmd 1.4
2017-08-21 09:34:28 cmd_event HC_OG_WZ
2017-08-21 09:34:28 cmd_nr 1
2017-08-21 09:34:28 cmd_seqnr 4
2017-08-21 09:34:28 e_HC_OG_WZ_STATE 22
2017-08-18 18:21:05 e_TK_OG_WZ_l_state off
2017-08-21 09:34:22 e_TK_OG_WZ_r_state off
2017-08-21 09:34:28 state cmd_1
condition:
0 InternalDoIf($hash,'HC_OG_WZ','STATE') and ReadingValDoIf($hash,'TK_OG_WZ_l','state') eq "off" and ReadingValDoIf($hash,'TK_OG_WZ_r','state') eq "off"
devices:
0 HC_OG_WZ TK_OG_WZ_l TK_OG_WZ_r
all HC_OG_WZ TK_OG_WZ_l TK_OG_WZ_r
do:
0:
0 setstate og_wohnzi_wunschtemp Manuell inaktiv
1 setreading og_wohnzi_wunschtemp mantemp 0
2 set og_wohnzi_wunschtemp mantemp 0
3 trigger WEB JS:location.reload(true)
1:
helper:
event nextUpdate: 2017-08-21 20:00:00,nextValue: 23,currValue: 22,22
globalinit 1
last_timer 0
sleeptimer -1
timerdev HC_OG_WZ
timerevent nextUpdate: 2017-08-21 20:00:00,nextValue: 23,currValue: 22,22
triggerDev HC_OG_WZ
timerevents:
nextUpdate: 2017-08-21 20:00:00
nextValue: 23
currValue: 22
22
timereventsState:
nextUpdate: 2017-08-21 20:00:00
nextValue: 23
currValue: 22
state: 22
triggerEvents:
nextUpdate: 2017-08-21 20:00:00
nextValue: 23
currValue: 22
22
triggerEventsState:
nextUpdate: 2017-08-21 20:00:00
nextValue: 23
currValue: 22
state: 22
internals:
0 HC_OG_WZ:STATE
all HC_OG_WZ:STATE
itimer:
readings:
0 TK_OG_WZ_l:state TK_OG_WZ_r:state
all TK_OG_WZ_l:state TK_OG_WZ_r:state
regexp:
0:
all:
state:
STATE:
trigger:
Attributes:
do always
icon helper_doif
und Nummer 2
Internals:
DEF ([og_wohnzi_wunschtemp:mantemp:d] > 0 and [TK_OG_WZ_l:state] eq "off" and [TK_OG_WZ_r:state] eq "off")
(setstate og_wohnzi_wunschtemp Manuell aktiv)
({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set heizung_wohnzi_oben desired $neuer_wert")})
({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("setreading og_wohnzi_wunschtemp mantemp $neuer_wert")})
({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set og_wohnzi_wunschtemp mantemp $neuer_wert")})
NAME wunscht_og_wz_stat2
NR 248
NTFY_ORDER 50-wunscht_og_wz_stat2
STATE cmd_1
TYPE DOIF
READINGS:
2017-08-21 09:34:28 Device og_wohnzi_wunschtemp
2017-08-20 20:42:08 cmd 1.4
2017-08-20 20:42:08 cmd_event og_wohnzi_wunschtemp
2017-08-20 20:42:08 cmd_nr 1
2017-08-20 20:42:08 cmd_seqnr 4
2017-08-18 18:21:05 e_TK_OG_WZ_l_state off
2017-08-21 09:34:23 e_TK_OG_WZ_r_state off
2017-08-21 09:34:28 e_og_wohnzi_wunschtemp_mantemp 0
2017-08-20 20:42:08 state cmd_1
condition:
0 ReadingValDoIf($hash,'og_wohnzi_wunschtemp','mantemp','','d') > 0 and ReadingValDoIf($hash,'TK_OG_WZ_l','state') eq "off" and ReadingValDoIf($hash,'TK_OG_WZ_r','state') eq "off"
devices:
0 og_wohnzi_wunschtemp TK_OG_WZ_l TK_OG_WZ_r
all og_wohnzi_wunschtemp TK_OG_WZ_l TK_OG_WZ_r
do:
0:
0 setstate og_wohnzi_wunschtemp Manuell aktiv
1 {my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set heizung_wohnzi_oben desired $neuer_wert")}
2 {my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("setreading og_wohnzi_wunschtemp mantemp $neuer_wert")}
3 {my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set og_wohnzi_wunschtemp mantemp $neuer_wert")}
1:
helper:
event mantemp: 0
globalinit 1
last_timer 0
sleeptimer -1
triggerDev og_wohnzi_wunschtemp
triggerEvents:
mantemp: 0
triggerEventsState:
mantemp: 0
internals:
itimer:
readings:
0 og_wohnzi_wunschtemp:mantemp TK_OG_WZ_l:state TK_OG_WZ_r:state
all og_wohnzi_wunschtemp:mantemp TK_OG_WZ_l:state TK_OG_WZ_r:state
regexp:
0:
all:
state:
STATE:
trigger:
Attributes:
do always
icon helper_doif
Weiß es leider nicht besser also lasst Gnade walten.
Vielleicht ist in diesem Fall ein Bild nicht schlecht ?
Gruß Hans-Jürgen
Mit meinen geschmeichelt bescheidenen Kenntnissen halte ich es als Art dummy Ersatz ??
Dann nimm lieber ein dummy. Ein DOIF ist kein dummy. Er reagiert auf Events, testet Bedingungen, und führt entspr. Befehle aus.
Zitat(trigger WEB JS:location.reload(true)
Wofür dieser Befehl?
Zitat({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set heizung_wohnzi_oben desired $neuer_wert")})
könntest Du durch folgendes ersetzen:
(set og_wohnzi_wunschtemp desired [og_wohnzi_wunschtemp:mantemp])[
Das gleiche gilt für die anderen Befehle. Aber bist Du sicher, dass man deine Thermostate so steuert? "set thermostat desired nn"? Oder wäre es nicht lieber "set thermostat nn"?
Aber das gesamte hier hat wenig Sinn:
Zitat1. (setstate og_wohnzi_wunschtemp Manuell aktiv)
2. ({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set heizung_wohnzi_oben desired $neuer_wert")})
3. ({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("setreading og_wohnzi_wunschtemp mantemp $neuer_wert")})
4. ({my $neuer_wert = ReadingsVal("og_wohnzi_wunschtemp","mantemp","0");; fhem("set og_wohnzi_wunschtemp mantemp $neuer_wert")})
1. Du setzt den state auf "Manuell aktiv"
4. Du setzt den state wieder auf "mantemp nnn"
Inzwischen hast Du mit 3. das Reading mantemp auf seinem eigenen Wert gesetzt. Das kannst du dir m.A. ruhig sparen.
Ausserdem hast Du 2 (sogar vielleicht 4) DOIFs, die das selbe Device steuern. Du wirst bald nicht mehr wissen, wer letztens gesteuert hat. Pack die lieber in einem DOIF mit DOELSEIF Bedingungen.
Und noch folgendes:
ZitatDEF ([HC_OG_WZ] and [TK_OG_WZ_l:state] eq "off" and [TK_OG_WZ_r:state] eq "off")
Ist es wirklich gewünscht, dass ALLE Events auf HC_OG_WZ das DOIF triggern?
ZitatDEF ([og_wohnzi_wunschtemp:mantemp:d] > 0 and [TK_OG_WZ_l:state] eq "off" and [TK_OG_WZ_r:state] eq "off")
Kann es sein, dass mantemp etwas anderes als numerische Werte enthält? Würde nicht "[og_wohnzi_wunschtemp:mantemp] > 0 and .... " reichen?