Jahresverbauch berechnen verschiedene Fehlerim LOG

Begonnen von mister, 04 Dezember 2019, 20:53:34

Vorheriges Thema - Nächstes Thema

mister

Hallo zusammen,


ich habe mal grob folgendes immer wieder im LOG, wie kann ich genau die Stellen finden die es verursachen?

PERL WARNING: Useless use of string in void context at (eval 194) line 1.
2019.12.04 20:43:42 3: eval: my $EVTPART0='on';my $SELF='Jahreshochrechnung';my $NAME='Abfrage_Verbrauch';my $EVENT='on';my $TYPE='dummy';{my $Strom=Value("Verbrauch"); my $zeit1=Value("Zeit"); my $Jahresverbrauch=sprintf("%.2f",($Strom/($zeit1/60))*8760); my $kosten= $Jahresverbrauch*0.25;"Wert ist: $Jahresverbrauch"; fhem("set Jahresverbrauch $Jahresverbrauch kwh $kosten €")}
2019.12.04 20:43:42 1: PERL WARNING: Argument "531895 Minuten" isn't numeric in division (/) at (eval 194) line 1.
2019.12.04 20:43:42 3: eval: my $EVTPART0='on';my $SELF='Jahreshochrechnung';my $NAME='Abfrage_Verbrauch';my $EVENT='on';my $TYPE='dummy';{my $Strom=Value("Verbrauch"); my $zeit1=Value("Zeit"); my $Jahresverbrauch=sprintf("%.2f",($Strom/($zeit1/60))*8760); my $kosten= $Jahresverbrauch*0.25;"Wert ist: $Jahresverbrauch"; fhem("set Jahresverbrauch $Jahresverbrauch kwh $kosten €")}
2019.12.04 20:43:42 1: PERL WARNING: Argument "324.377 kw 81.09 �M-^B�" isn't numeric in division (/) at (eval 194) line 1.
2019.12.04 20:43:42 3: eval: my $EVTPART0='on';my $SELF='Jahreshochrechnung';my $NAME='Abfrage_Verbrauch';my $EVENT='on';my $TYPE='dummy';{my $Strom=Value("Verbrauch"); my $zeit1=Value("Zeit"); my $Jahresverbrauch=sprintf("%.2f",($Strom/($zeit1/60))*8760); my $kosten= $Jahresverbrauch*0.25;"Wert ist: $Jahresverbrauch"; fhem("set Jahresverbrauch $Jahresverbrauch kwh $kosten €")}
2019.12.04 20:43:42 1: PERL WARNING: "my" variable $Zeit masks earlier declaration in same scope at (eval 195) line 1.
2019.12.04 20:43:42 3: eval: my $NAME='Abfrage_Verbrauch';my $SELF='Stromverbrauch';my $EVTPART0='on';my $TYPE='dummy';my $EVENT='on';{my $test2=Value("Heimkino_Steckdose_Verbrauch"); my $Verbrauch=sprintf("%.3f",($test2-419977)/1000); my $Preis=sprintf("%.2f",($Verbrauch*0.25)); Log 3, "Wert ist: $Verbrauch"; fhem("set Verbrauch $Verbrauch kw $Preis €"); {my $test1=Value("Zeitintervall"); my $Zeit=Value("Zeit"); my $Zeit=$Zeit+$test1; "Wer ist: $Zeit";fhem("set Zeit $Zeit Minuten");} }
2019.12.04 20:43:42 1: PERL WARNING: Useless use of string in void context at (eval 195) line 1.
2019.12.04 20:43:42 3: eval: my $NAME='Abfrage_Verbrauch';my $SELF='Stromverbrauch';my $EVTPART0='on';my $TYPE='dummy';my $EVENT='on';{my $test2=Value("Heimkino_Steckdose_Verbrauch"); my $Verbrauch=sprintf("%.3f",($test2-419977)/1000); my $Preis=sprintf("%.2f",($Verbrauch*0.25)); Log 3, "Wert ist: $Verbrauch"; fhem("set Verbrauch $Verbrauch kw $Preis €"); {my $test1=Value("Zeitintervall"); my $Zeit=Value("Zeit"); my $Zeit=$Zeit+$test1; "Wer ist: $Zeit";fhem("set Zeit $Zeit Minuten");} }
2019.12.04 20:43:42 3: Wert ist: 324.385
2019.12.04 20:43:42 1: PERL WARNING: Argument "531895 Minuten" isn't numeric in addition (+) at (eval 195) line 1.
2019.12.04 20:43:42 3: eval: my $NAME='Abfrage_Verbrauch';my $SELF='Stromverbrauch';my $EVTPART0='on';my $TYPE='dummy';my $EVENT='on';{my $test2=Value("Heimkino_Steckdose_Verbrauch"); my $Verbrauch=sprintf("%.3f",($test2-419977)/1000); my $Preis=sprintf("%.2f",($Verbrauch*0.25)); Log 3, "Wert ist: $Verbrauch"; fhem("set Verbrauch $Verbrauch kw $Preis €"); {my $test1=Value("Zeitintervall"); my $Zeit=Value("Zeit"); my $Zeit=$Zeit+$test1; "Wer ist: $Zeit";fhem("set Zeit $Zeit Minuten");} }
2019.12.04 20:43:42 1: PERL WARNING: Useless use of string in void context at (eval 196) line 1.
2019.12.04 20:43:42 3: eval: my $EVTPART0='on';my $NAME='Abfrage_Verbrauch';my $SELF='Zeitberechnung';my $EVENT='on';my $TYPE='dummy';{my $test=Value("Zeit"); my $Tage=sprintf("%d", ($test/60)/24); my $zahl=$Tage; my $stunden=sprintf("%d", ($test/60-24*$zahl));"Wert ist: $Tage"; fhem("set Gesamtzeit $Tage Tag(e) $stunden Stunde(n)")}
2019.12.04 20:43:42 1: PERL WARNING: Argument "531900 Minuten" isn't numeric in division (/) at (eval 196) line 1.
2019.12.04 20:43:42 3: eval: my $EVTPART0='on';my $NAME='Abfrage_Verbrauch';my $SELF='Zeitberechnung';my $EVENT='on';my $TYPE='dummy';{my $test=Value("Zeit"); my $Tage=sprintf("%d", ($test/60)/24); my $zahl=$Tage; my $stunden=sprintf("%d", ($test/60-24*$zahl));"Wert ist: $Tage"; fhem("set Gesamtzeit $Tage Tag(e) $stunden Stunde(n)")}
2019.12.04 20:43:54 3: AmbilightRaspon return value: -1


So sieht Abfrage Verbrauch aus:
Abfrage_Verbrauch:on {my $Strom=Value("Verbrauch"); my $zeit1=Value("Zeit"); my $Jahresverbrauch=sprintf("%.2f",($Strom/($zeit1/60))*8760); my $kosten= $Jahresverbrauch*0.25;"Wert ist: $Jahresverbrauch"; fhem("set Jahresverbrauch $Jahresverbrauch kwh $kosten €")}

Otto123

Hi,

kannst Du bitte ein list von dem Device posten wo Abfrage_Verbrauch vorkommt?
Außerdem bitte
list Verbrauch
list Zeit

Das Detail in deinem Code erscheint mir irgendwie überflüssig:
Zitat;"Wert ist: $Jahresverbrauch";

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

mister

List Device:

Internals:
   DEF        fritzbox:4445452 powerMeter,tempSensor,switch
   FUUID      edw465865
   IODev      fritzbox
   LASTInputDev fritzbox
   MSGCNT     10
   NAME       Schaltsteckdose_Heimkino
   NR         24
   STATE      on
   TYPE       FBDECT
   fritzbox_MSGCNT 10
   fritzbox_TIME 2019-12-04 21:23:54
   id         52487453
   props      microphone,powerMeter,tempSensor,switch
   READINGS:
     2019-12-04 21:23:54   AIN             24655
     2019-12-04 21:23:54   FBNAME          FRITZ!DECT 200 #1 Heimkino Wohnzimmer
     2019-12-04 21:23:54   FBPROP          microphone,powerMeter,tempSensor,switch
     2019-12-04 21:23:54   FBTYPE          FRITZ!DECT 200
     2019-12-04 21:23:54   ID              16
     2019-12-04 21:23:54   devicelock      no
     2019-12-04 21:23:54   energy          744411 Wh
     2019-12-04 21:23:54   fwversion       04.16
     2019-12-04 21:23:54   locked          no
     2019-12-04 21:23:54   mode            manuell
     2019-12-04 21:23:54   power           64.73 W
     2019-12-04 21:23:54   present         yes
     2019-12-04 21:23:54   state           on
     2019-12-04 21:23:54   tempadjust      0.0 C
     2019-12-04 21:23:54   temperature     27.5 C (measured)
     2019-12-04 21:23:54   voltage         228.063 V
Attributes:
   IODev      fritzbox
   event-min-interval power:30
   event-on-change-reading state,power,energy
   room       Wohnzimmer


list Verbrauch
Internals:
   FUUID      4c978463
   NAME       Verbrauch
   NR         63
   STATE      324.427 kw 81.11 €
   TYPE       dummy
   READINGS:
     2019-12-04 21:23:42   state           324.427 kw 81.11 €
Attributes:
   room       Verbrauch


list Zeit

Internals:
   FUUID      eknlk2po
   NAME       Zeit
   NR         62
   STATE      531940 Minuten
   TYPE       dummy
   READINGS:
     2019-12-04 21:23:42   state           531940 Minuten
Attributes:

Otto123

Gut dann ist die Meldung erstmal verständlich
324.427 kw 81.11 € ist nicht numerisch ;)

Der andere Dummy auch nicht.

Und dieses Abfrage_Verbrauch sehe ich nicht?
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

mister

#4
Ja genau aber wie entgehe ich dieser Meldung?

Wie meinst du deine Frage?

es kommt hier her, falls du das meinst:


Abfrage_Verbrauch:on {my $test2=Value("Heimkino_Steckdose_Verbrauch"); my $Verbrauch=sprintf("%.3f",($test2-419977)/1000); my $Preis=sprintf("%.2f",($Verbrauch*0.25)); Log 3, "Wert ist: $Verbrauch"; fhem("set Verbrauch $Verbrauch kw $Preis €"); {my $test1=Value("Zeitintervall"); my $Zeit=Value("Zeit"); my $Zeit=$Zeit+$test1; "Wer ist: $Zeit";fhem("set Zeit $Zeit Minuten");} }

Otto123

#5
Es nutzt nichts wenn Du stoisch immer wieder einen Ausschnitt als eine Zeile postest.

Was ist das? Wo steht das?
Ein notify? Ein userreadings?

Warum schreibst Du nicht numerische Werte in den Dummy und willst anschließen damit rechnen? Nimm die Originalwerte zum rechnen!

Du kannst mit ReadingsNum("Verbrauch","state",99) arbeiten, der liefert nur die erste Zahl zurück.
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

Prof. Dr. Peter Henning

Da er nicht antwortet, hat er das möglicherweise noch nicht kapiert. Also fragen wir doch mal, was denn das Ergebnis der Rechnung

Zitat("324.427 kw 81.11 €" - 419977)/1000

sein sollte.

LG

pah

mister

e ich habe es leider tatsächlich noch nicht kapiert. Das ganze ist schon über 1 jahr her muss mich da auch erst wieder reindenken