FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Deckoffizier am 21 August 2017, 10:27:30

Titel: Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: Deckoffizier am 21 August 2017, 10:27:30
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
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: Shojo am 21 August 2017, 11:04:19
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?!
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: pc1246 am 21 August 2017, 12:28:09
Moin
Also ich sehe da nicht mal eine richtige Bedingung!
Gruss Christoph
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: Frank_Huber am 21 August 2017, 13:22:20
Das ist in die cfg manuell eingetragen. Der webeditor hätte das so nicht angenommen...

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: pc1246 am 21 August 2017, 13:24:58
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
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: Deckoffizier am 21 August 2017, 13:58:57
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
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: pc1246 am 21 August 2017, 14:48:48
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
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: amenomade am 21 August 2017, 15:38:15
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.



Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: Deckoffizier am 21 August 2017, 17:53:45
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
Titel: Antw:Fehlermeldung DOIF unklar in Web Ansicht
Beitrag von: amenomade am 22 August 2017, 13:05:23
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?