51_RPI_GPIO.pm: PERL WARNING: Use of uninitialized value in subtraction

Begonnen von alpha1974, 05 April 2016, 07:58:51

Vorheriges Thema - Nächstes Thema

alpha1974

Werte Mitstreiter,

seit einem FHEM-Update nach den Osterferien zeigt mir das Log-File für das RPI_GPIO-Module folgende Warnung an, wenn der Zustand des RPI_GPIO-Devices = Reed-Magnet-Kontakt, der am GPIO des Raspberry hängt, auf high wechselt:

PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/51_RPI_GPIO.pm line 524, <GEN33> line 13

Hier das dazugehörige Device:
Internals:
   CHANGED
   DEF        26
   EXCEPT_FD  34
   GPIO_Basedir /sys/class/gpio
   NAME       Terrassentuer_Magnet
   NR         126
   RPI_pin    26
   STATE      zu
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   lasttrg    1459794780.88888
   Helper:
     Dblog:
       Longpress:
         Logdb:
           TIME       1459795484.17733
           VALUE      off
       Pinlevel:
         Logdb:
           TIME       1459795484.17733
           VALUE      low
       State:
         Logdb:
           TIME       1459795484.17733
           VALUE      off
   Readings:
     2016-04-05 07:07:01   Dblclick        off
     2016-04-05 07:07:01   Longpress       off
     2016-04-05 07:53:33   Pinlevel        low
     2016-04-05 07:07:01   state           off
   Fhem:
     interfaces switch
Attributes:
   alias      Terrassentür Magnetsensor
   debounce_in_ms 20
   devStateIcon zu:fts_door_right auf:fts_door_right_open
   direction  input
   event-on-change-reading .*
   group      Wohnzimmer-Sensoren
   interrupt  both
   pud_resistor up
   room       Einbruch,Wohnzimmer
   stateFormat {if (ReadingsVal("Terrassentuer_Magnet","Pinlevel",0) eq "low") {"zu"} elsif (ReadingsVal("Terrassentuer_Magnet","Pinlevel",0) eq "high") {"auf"}}


Ist ja nur eine Warnung, aber vielleicht hat ein anderer Forist eine Idee, woran es liegen könnte bzw. ob ich etwas an meiner Konfiguration ändern muss.

Dank und Gruß
alpha1974
FHEM/Z-Wave USB-Dongle + div. Devices

blueberry63

Hallo,

ich kann alphas Aussage bestätigen. Außerdem kommt seit einigen Tagen/Wochen(?) nach jedem Update mit anschl. "shutdown restart" folgende Fehlermeldung im LOG:

Zitat
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 471.
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 473.

Ich muss dann immer manuell die Berechtigungen in "/sys/class/gpio" korrigieren.

Hat jemand eine Idee, was da passiert ist?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Wernieman

Dein System lässt fhem nicht auf "/sys/class/gpio"

Ich gehe davon aus, das Du mit chown/chmod die Berechtigungen anpasst und dann erst fhem funktioniert? D.h. Deine Config ist nicht bootsafe

Du hast jetzt (Unix-Typisch) mehrere Möglichkeiten:
1. im Startscript vom fhem (/etc/init.d/fhem) genau diese befehle eingeben
2. per udev-Regel (wiki, forum?) die Berechtigungen vom System sezten lassen
3. fhem einer Gruppe zuordnen, welche Zugreifen darf
4. .......
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

blueberry63

Hallo Wernieman,

in meiner "/etc/rc.local" habe ich die entsprechenden Befehle für die Berechtigungen auf /sys/class/gpio gesetzt - und nach einem Reboot ist auch alles OK. Was mich eben wundert ist, warum das Problem erst seit kurzem auftritt?

Trotzdem Danke für Deine Erklärung.

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Wernieman

rc.local .... da wird aber fhem vorher gestartet. rc.local ist eigentlich der letzte "Dienst", der gestartet wird. Besser ist wirklich, Du editiers die init-Datei, anstatt der rc.local. Alternativ startest Du fhem auch erst durch die rc.local, mußt es dann aber aus dem autostart des Servers rausnehmen.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

klausw

Zitat von: blueberry63 am 06 April 2016, 10:17:46
Hallo,

ich kann alphas Aussage bestätigen. Außerdem kommt seit einigen Tagen/Wochen(?) nach jedem Update mit anschl. "shutdown restart" folgende Fehlermeldung im LOG:

Ich muss dann immer manuell die Berechtigungen in "/sys/class/gpio" korrigieren.

Hat jemand eine Idee, was da passiert ist?

poste mal ein list vom Device
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

Zitat von: alpha1974 am 05 April 2016, 07:58:51
Werte Mitstreiter,

seit einem FHEM-Update nach den Osterferien zeigt mir das Log-File für das RPI_GPIO-Module folgende Warnung an, wenn der Zustand des RPI_GPIO-Devices = Reed-Magnet-Kontakt, der am GPIO des Raspberry hängt, auf high wechselt:

PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/51_RPI_GPIO.pm line 524, <GEN33> line 13

Kommt die Meldung jedes mal, oder nur nach einem Neustart?
Seltsamerweise findet in Zeile 524 keine Subtraktion statt.
Ich schaue mir das mal an.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Ellert

Ich habe eine ähnliche Warnung in Zeile 510, die kommt beim Neustart mit 51_RPI_GPIO.pm 11120 2016-03-23 23:49:16Z klauswitt
Zitat2016.04.06 13:41:17 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/51_RPI_GPIO.pm line 510, <GEN25> line 2.
2016.04.06 13:41:19 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/51_RPI_GPIO.pm line 510, <GEN29> line 2.

ZitatZeile 510:       my $testtt = (gettimeofday() - $hash->{lasttrg} );

klausw

Zitat von: Ellert am 06 April 2016, 18:35:56
Ich habe eine ähnliche Warnung in Zeile 510, die kommt beim Neustart mit 51_RPI_GPIO.pm 11120 2016-03-23 23:49:16Z klauswitt
das kann schon eher sein, da habe ich wohl was übersehen  8)
Wird demnächst behoben.
Die Fehlermeldung korreliert aber nicht ganz mit dem ersten Post.
@alpha, hast du die aktuellste Version drauf?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

alpha1974

Zitat von: klausw am 07 April 2016, 00:10:53
@alpha, hast du die aktuellste Version drauf?
Zum Zeitpunkt meines Ausgangs-Postings hatte ich die per update verfügbare Version drauf. Zwischenzeitlich ist die Warnung nicht mehr aufgetaucht, was allerdings auch damit zusammenhängen kann, dass der Status des betreffenden Device unverändert geblieben ist (diese Terrassentür wurde in den letzten Tagen nicht geöffnet..).
Ich achte aber weiterhin darauf und melde mich wieder, wenn es nochmal eine Warnung gibt.
FHEM/Z-Wave USB-Dongle + div. Devices

kirk1h

Hi,

ich hab auch die Warnung im Log:

PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/51_RPI_GPIO.pm line 524, <GEN14> line 3.

524          my $testtt = (gettimeofday() - $hash->{lasttrg} );

LG

klausw

RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

KölnSolar

Hallo Klaus,

ich hab gestern erstmalig das Modul eingesetzt. Ich bekomme beim auslösen Fehlermeldungen.

2016.09.04 19:36:28 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/47_OBIS.pm line 229, <GEN34> line 2.
2016.09.04 19:36:28 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/51_RPI_GPIO.pm line 524, <GEN34> line 3.
.
.
2016.09.04 19:36:29 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/47_OBIS.pm line 229, <GEN34> line 3.
2016.09.04 19:36:36 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/47_OBIS.pm line 229, <GEN34> line 4.
.
.
2016.09.04 19:36:36 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/47_OBIS.pm line 229, <GEN34> line 5.
.
. und so weiter...


Mit dem OBIS-Modul hat das definitiv nichts zu tun. Liegt wohl nur daran, dass dort ein anderer Fehler vorher(nur bei der Initialisierung/Reboot) mit PERL-Warnung "uninitialized String" gemeldet wurde
2016.09.04 19:35:34 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/47_OBIS.pm line 229.
2016.09.04 19:35:34 1: PERL WARNING: Use of uninitialized value $1 in hash element at ./FHEM/47_OBIS.pm line 491.
2016.09.04 19:35:34 1: PERL WARNING: Use of uninitialized value $v2 in substitution (s///) at ./FHEM/47_OBIS.pm line 521.


Das Device ist so angelegt:
Internals:
   CFGFN      includeOther.cfgPI
   DEF        18
   EXCEPT_FD  39
   GPIO_Basedir /sys/class/gpio
   NAME       Wassersensor
   NR         547
   RPI_pin    18
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/bin/gpio
   lasttrg    1473011574.23681
   Readings:
     2016-09-04 19:52:54   Dblclick        off
     2016-09-04 19:52:54   Longpress       off
     2016-09-04 19:52:54   Pinlevel        low
     2016-09-04 19:52:54   state           off
   Fhem:
     interfaces switch
Attributes:
   alarmDevice Sensor
   alarmSettings alarm4,|Wassersensor:on|�berschwemmung|on
   devStateIcon off:Wecker.Aus on:Wecker.Immer
   direction  input
   interrupt  both
   room       Keller


Version vom 22.8.16 wird genutzt.

Idee, was das ist ?

Grüße
Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

klausw

Zitat von: KölnSolar am 05 September 2016, 10:47:46

Version vom 22.8.16 wird genutzt.

Idee, was das ist ?

Stimmt OBIS sollte mit den GPIO Fehlern nix zu tun haben.

Wenn oben der erste Satz  nicht wäre, würde ich behaupten, das du eine alte Version einsetzt.
In der aktuellen Version gibt es in Zeile 524 keine Subtraktion.

was gibt denn die Eingabe von:
version 51_RPI_GPIO.pm
in FHEM aus?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

betateilchen

Zitat von: klausw am 06 September 2016, 14:22:06
In der aktuellen Version gibt es in Zeile 524 keine Subtraktion.

äh...

in der in svn aktuellen Version steht in Zeile 524

my $testtt = (gettimeofday() - $hash->{lasttrg} );

Für mich sieht das doch sehr nach einer Subtraktion aus ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!