[erledigt] PERL WARNING. Was ist hier falsch?

Begonnen von arthur_dent_2015, 11 März 2018, 22:32:51

Vorheriges Thema - Nächstes Thema

arthur_dent_2015


2018.03.11 22:21:46 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 99030) line 1.
2018.03.11 22:21:46 3: eval: {my @a = split(/\./,ReadingsNum($name,"temperature","none")); "$a[0] Komma $a[1]"}


Listing vom device:

Internals:
   CFGFN     
   CHANGED   
   DEF        28
   IODev      jeelinkcross
   LASTInputDev jeelinkcross
   LaCrosse_lastRcv 2018-03-11 22:31:03
   MSGCNT     3548
   NAME       Thermo_Balkon
   NR         63
   STATE      T: 15.4 H: 67
   TYPE       LaCrosse
   addr       28
   battery_new 0
   corr1      0
   corr2      0
   jeelinkcross_MSGCNT 3548
   jeelinkcross_RAWMSG OK 9 40 1 4 130 67
   jeelinkcross_TIME 2018-03-11 22:31:03
   previousH  67
   previousT  15.4
   sensorType 0=T(H)
   Helper:
     DBLOG:
       humidity:
         fhemlogDB:
           TIME       1520802823.41327
           VALUE      67
       temperature:
         fhemlogDB:
           TIME       1520800838.41588
           VALUE      15.4
   READINGS:
     2018-03-11 22:31:03   battery         ok
     2018-03-11 22:31:03   humidity        67
     2018-03-11 22:13:43   state           T: 15.4 H: 67
     2018-03-11 22:31:03   temperature     15.4
     2018-03-11 22:31:03   ttstemp         15 Komma 4
Attributes:
   DbLogInclude .*
   IODev      jeelinkcross
   event-on-change-reading battery,humidity,temperature
   room       Wetter
   userReadings ttstemp {my @a = split(/\./,ReadingsNum($name,"temperature","none")); "$a[0] Komma $a[1]"}


Das Ergebnis ist jedenfalls korrekt.

Otto123

Kein Beitrag zu Deiner eigentlichen Frage, aber war das bei Dir auch so, dass manche zahlen komisch angesagt werden?
fünf komma einen Grad

War bei mir manchmal so und da habe ich das userreadings umgestellt:
{ my $val = ReadingsVal($name,"temperature","Fehler"); $val =~ s/\./,/; $val;}

Jetzt wird in 99% der fälle alles ordentlich gesagt  ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

arthur_dent_2015

Moin Otto,
die Ansagen hab ich noch nicht eingerichtet, wollte erst mal die Grundlage mit Komma statt Punkt irgendwie realisieren. Werde Deinen Ansatz aber mal probieren, sieht ganz gut aus. Aber müsste nicht ReadingNum statt ReadingVal gesetzt werden?
Gruß
Arthur

Otto123

Moin Arthur,
Ich sage mal ja...
Aber bei mir ist es egal, es ist nur eine Zahl. ReadingsNum würde bei 9.8 % die 9.8 zurückliefern, ReadingsVal liefert die 9.8 %
Ich glaube bei 9.8 ohne was ist da Ergebnis ReadingsNum  oder ReadingsVal gleich.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

arthur_dent_2015

stimmt, letztendlich kommt es nur darauf an das es halbwegs korrekt angesagt wird  :D

arthur_dent_2015

Hallo Otto,
da niemand ne Lösung für meinen Ansatz hat, hab ich mal Deine Lösung übernommen. TTS kommt damit anscheinend gut zurecht  8)
Gruß
Arthur

Otto123

Arthur,
ich hatte Deine Variante bis vor einiger Zeit auch. Das lief seit 2015 genau so gut. Irgendwann voriges Jahr hatte ich immer mal das Gefühl, ich habe mich verhört. Dann hab ich das umgebaut. Gestern habe ich sogar beim schreiben den Code mit etwas neuem Wissen noch etwas kürzer gemacht.
Das ist schon ne gute Variante. Warum der Fehler kam - die Lösung ist philosophisch. Da kommen neue Aufgaben. ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz