[gelöst] PERL WARNING sprintf in StateFormat / Formatstring - bin ich blind?

Begonnen von _hndrk, 15 Juli 2017, 14:16:30

Vorheriges Thema - Nächstes Thema

_hndrk

Hallo Leute,

ich bin mit meinem FHEM sehr weit gekommen und mache es nun "schön". Dabei stört mich eine Perl Warning, dir mir die Logs aufbläht. Ich sehe leider den Fehler überhaupt nicht.

Dies ist die Fehlermeldung:

2017.07.15 14:04:41 1: PERL WARNING: Missing argument in sprintf at (eval 2066) line 1.
2017.07.15 14:04:41 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 2066) line 1.
2017.07.15 14:04:41 1: PERL WARNING: Missing argument in sprintf at (eval 2069) line 1.
2017.07.15 14:04:41 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 2069) line 1.
2017.07.15 14:04:41 1: PERL WARNING: Missing argument in sprintf at (eval 2072) line 1.
2017.07.15 14:04:41 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 2072) line 1.

Sie betrifft ein MQTT Device, das ich mit einem eigenen stateFormat ausgestattet habe:

   stateFormat {sprintf("State: %s Temp.: %.1f°C Humid.: %.1f \%", ReadingsVal($name, "Power",0), ReadingsVal($name,"AM2301_Temperature",0), ReadingsVal($name,"AM2301_Humidity",0))}


Die Fehlermeldung sagt mir, dass ich falsche Formatstrings nutze. Ich nutze aber ein %s, also String für Power sowie ein %.1f für Temperatur und Feuchtigkeit. Die Anzeige ist auch korrekt. Ich komme mir blind vor....

Wäre super, wenn mir jemand die Augen öffnen könnte.. ;-)

Viele Grüße und Danke!
Hendrik

PS: das devStateIcon funktioniert übrigens auch nicht - ich vermute das liegt daran, dass man entweder stateFormat oder devStateIcon setzen darf?..

Anbei das komplette Device Listing

Internals:
   IODev      myBroker
   NAME       Sonoff_Cumulus
   NR         86
   STATE      State: OFF Temp.: 33.9°C Humid.: 40.2 %
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Helper:
     DBLOG:
       AM2301_Humidity:
         logdb:
           TIME       1500120582.05151
           VALUE      40.2
       AM2301_Temperature:
         logdb:
           TIME       1500120582.05151
           VALUE      33.9
       Power:
         logdb:
           TIME       1500120060.05027
           VALUE      OFF
       Sensor:
         logdb:
           TIME       1500120581.9547
           VALUE      {"Time":"2017-07-15T13:09:41", "AM2301":{"Temperature":33.9, "Humidity":40.2}, "TempUnit":"C"}
       TempUnit:
         logdb:
           TIME       1500120582.05151
           VALUE      C
       Time:
         logdb:
           TIME       1500120582.05151
           VALUE      2017-07-15T13:09:41
       state:
         logdb:
           TIME       1500107475.1682
           VALUE      off
       transmission-state:
         logdb:
           TIME       1500120581.86333
           VALUE      incoming publish received
   READINGS:
     2017-07-15 14:09:42   AM2301_Humidity 40.2
     2017-07-15 14:09:42   AM2301_Temperature 33.9
     2017-07-15 10:31:15   Power           OFF
     2017-07-15 14:09:41   Sensor          {"Time":"2017-07-15T13:09:41", "AM2301":{"Temperature":33.9, "Humidity":40.2}, "TempUnit":"C"}
     2017-07-15 14:09:42   TempUnit        C
     2017-07-15 14:09:42   Time            2017-07-15T13:09:41
     2017-07-15 10:31:15   state           off
     2017-07-15 14:09:41   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      cmnd/sonoff/power
       values:
         publishSet
         on
         off
   sets:
     off
     on
     publishSet
   subscribe:
     stat/sonoff/POWER
     tele/sonoff/SENSOR
     stat/sonoff/STATUS
   subscribeExpr:
     ^stat\/sonoff\/POWER$
     ^tele\/sonoff\/SENSOR$
     ^stat\/sonoff\/STATUS$
   subscribeReadings:
     stat/sonoff/POWER Power
     stat/sonoff/STATUS Status
     tele/sonoff/SENSOR Sensor
Attributes:
   IODev      myBroker
   alias      Cumulus
   devStateIcon on:humidity@red:off off:humidity@blue:on
   icon       sani_water_hot
   publishSet publishSet on off cmnd/sonoff/power
   room       MQTT,Pertinax
   stateFormat {sprintf("State: %s Temp.: %.1f°C Humid.: %.1f \%", ReadingsVal($name, "Power",0), ReadingsVal($name,"AM2301_Temperature",0), ReadingsVal($name,"AM2301_Humidity",0))}
   subscribeReading_Power stat/sonoff/POWER
   subscribeReading_Sensor tele/sonoff/SENSOR
   subscribeReading_Status stat/sonoff/STATUS