DIOF "Device Overviev" bestimmte Anzeige bei unlogischen "state" Attr...

Begonnen von misux, 25 Januar 2022, 20:07:38

Vorheriges Thema - Nächstes Thema

misux

Hi!

Ich habe einen DOIF der mit in die Device Overviev durch einen "state" attribut eine durchschnittstemperatur von 3 Thermometern zaubert. Das funktioniert gut.

Miene Frage: Ist es irgendwie möglich bei einen z.B. einem Syntaxerro im Attribut "state" einfach XXX im stateausgibt?

Ich frage weil ich die Durschnittstemperatur im FTUI anzeigen lasse. Heute ist die Wetterstation ausgefallen und der Wert war ??? dadurch hatte ich im state einen mega langen Syntaxerror welcher meine Anzeige im FTUI völlich "zerschossen" hat... Ich bräuchte einfach z.b. XXX als Ausgabe wenn das was mächtig nicht stimmt in der sprint Berechnung im state...

Geht sowas? Und wenn ja, wie?

Danke!

Internals:
   DEF        ##
   FUUID      603c9baf-f33f-e7ed-47cf-2e4fd7e902138c5f
   FVERSION   98_DOIF.pm:0.253860/2021-12-28
   MODEL      FHEM
   NAME       DOIFTempDurschnitt
   NOTIFYDEV  TempAussenEingang,TempAussenCarport,WetterStation,global
   NR         138
   NTFY_ORDER 50-DOIFTempDurschnitt
   STATE      3.53
   TYPE       DOIF
   VERSION    25386 2021-12-28 22:19:25
   READINGS:
     2021-03-01 08:45:51   cmd             0
     2021-03-01 08:47:37   mode            enabled
     2022-01-25 19:58:27   state           3.53
   Regex:
     STATE:
       TempAussenCarport:
         STATE:
           temperature ^TempAussenCarport$:^temperature:
       TempAussenEingang:
         STATE:
           temperature ^TempAussenEingang$:^temperature:
       WetterStation:
         STATE:
           ACTUAL_TEMPERATURE ^WetterStation$:^ACTUAL_TEMPERATURE:
     accu:
     collect:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$|^WetterStation$|^TempAussenCarport$|^TempAussenEingang$
     NOTIFYDEV  global|WetterStation|TempAussenCarport|TempAussenEingang
     event      battery: ok,temperature: 3.5
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev TempAussenCarport
     DOIF_eventa:
       3.53
     DOIF_eventas:
       state: 3.53
     triggerEvents:
       battery: ok
       temperature: 3.5
     triggerEventsState:
       battery: ok
       temperature: 3.5
   perlblock:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   event-min-interval 300
   room       Astro & Wetter,DOIF,LaCrosse
   state      {(sprintf("%.2f",([TempAussenCarport:temperature]+[TempAussenEingang:temperature]+[WetterStation:ACTUAL_TEMPERATURE])/3))}

Damian

Die sollten im FTUI N/A für solche Fälle einbauen. Oder du steigst auf ring um, da ist es schon drin  :D

Spaß bei Seite, im state hast du ja schon Perlcode, da musst du einfach eine if-Abfrage einbauen, die statt der Berechnung einfach N/A zurückgibt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

Zitat von: Damian am 25 Januar 2022, 20:39:34
Die sollten im FTUI N/A für solche Fälle einbauen. Oder du steigst auf ring um, da ist es schon drin  :D

Spaß bei Seite, im state hast du ja schon Perlcode, da musst du einfach eine if-Abfrage einbauen, die statt der Berechnung einfach N/A zurückgibt.

Was ist denn Ring?  :o

Habe von Perl wirklich exakt 0 Ahnung... Wie müsste der Code aussehen?

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF