Autor Thema: Doppelte Readings nach Neustart  (Gelesen 761 mal)

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Doppelte Readings nach Neustart
« am: 19 Mai 2019, 13:57:48 »
Ein herzerfrischendes "Moin" vom hntern-Deich vorweg!

Ich habe ein neues Modul für den DoorBird programmiert und habe dort zwei seltsame Verhalten entdeckt, welches ich mir nicht erklären kann.
Vielleicht könnt ihr mir ja einen Wink geben:

Problem 1
Vor einem Neustart habe ich folgende und richtige Readings im DeviceÖ
RelayAddr_01 1 2019-05-17 21:18:17
RelayAddr_02 2 2019-05-17 21:18:17
RelayAddr_03 ghcbml@1 2019-05-17 21:18:17
RelayAddr_04 ghcbml@2 2019-05-17 21:18:17
RelayAddr_05 ghcbml@3 2019-05-17 21:18:17

Nach dem Neustart hingegen habe ich die Readings doppelt mit leeren Einträgen:
RelayAddr_01 2019-05-17 08:25:48
RelayAddr_01 1 2019-05-17 21:18:17
RelayAddr_02 2019-05-17 08:25:48
RelayAddr_02 2 2019-05-17 21:18:17
RelayAddr_03 2019-05-17 08:25:48
RelayAddr_03 ghcbml@1 2019-05-17 21:18:17
RelayAddr_04 2019-05-17 08:25:48
RelayAddr_04 ghcbml@2 2019-05-17 21:18:17
RelayAddr_05 2019-05-17 08:25:48
RelayAddr_05 ghcbml@3 2019-05-17 21:18:17

und im Log bekomme ich folgenden Eintrag
2019.05.17 21:18:20 1: ./log/fhem.save:
Unknown command 1, try help.
Unknown command 2, try help.
Unknown command ghcbml@1, try help.
Unknown command ghcbml@2, try help.
Unknown command ghcbml@3, try help.

Wie kommen denn diese doppelten Readings zustande bzw. wie verhindert man diesen Fehler?

Problem 2

Ich bekomme ausserdem folgenden Eintrag im Log:
2019.05.19 13:37:29 1: PERL WARNING: Prototype mismatch: sub main::memcmp: none vs ($$;$) at /usr/local/share/perl/5.24.1/Sub/Exporter.pm line 445.
Kann sich Jemand einen Reim drauf machen, welcher Teil meines Programms den Exporter mismatch auslöst?

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 661
    • GitHub Projekte
Antw:Doppelte Readings nach Neustart
« Antwort #1 am: 19 Mai 2019, 17:06:45 »
Ohne den Modulcode muss man spekulieren.

Problem1: Die Logeinträge deuten darauf hin, dass es bereits beim Schreiben der Readings Probleme gibt.
Problem2: Vermutlich ein formales Problem im Modulkopf. FHEM braucht keine Perl-Moduldefinitionen, stört sich aber auch nicht daran. Wenn man sie verwendet, müssen sie aber dem Perl-Standard entsprechen.

Wie wäre es mit Codeausschnitten?

Grüße,
Jens
FHEM 5.9 - RPi 2.0 Raspbian 9 + PiTFT - OPi Zero Armbian 5.35
RPi/I2C: MMA845X - CUL/FS20 - RTL2882/SDR: Oregon, Alecto - EnOcean - LAN/Firmata: BMP180, TSL2561, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - Bluetooth

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2805
    • HMCCU
Antw:Doppelte Readings nach Neustart
« Antwort #2 am: 20 Mai 2019, 07:39:23 »
Vielleicht in einem Fall ein unsichtbares Zeichen im Reading Name?

Du verwendest die Standardfunktionen wie readingsingleupdate für das Setzen der Readings?
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Antw:Doppelte Readings nach Neustart
« Antwort #3 am: 20 Mai 2019, 09:53:19 »
Hi ZAP

Vielleicht in einem Fall ein unsichtbares Zeichen im Reading Name?
Du verwendest die Standardfunktionen wie readingsingleupdate für das Setzen der Readings?

DANKE! Das wars!!!

meine fehlerhafte Befehlszeile:
readingsBulkUpdate($hash, "RelayAddr_" . sprintf("%02d\n", $RelayNumber), $RelayAddress);

Super!

Bleibt nur noch Problem 2.
Da helfen auch keine Auszüge der Codezeilen, wenn mann nicht weiss an welcher Stelle das provoziert wird...
Der gesamte Code ist im /opt/fhem/FHEM/73_DoorBird.pm zu finden

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20721
Antw:Doppelte Readings nach Neustart
« Antwort #4 am: 20 Mai 2019, 10:18:55 »
Bei Deinem Problem 2 scheinst Du ein eigenes Perl zu verwenden. Sprich keines aus der Distribution. Ist das korrekt?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2805
    • HMCCU
Antw:Doppelte Readings nach Neustart
« Antwort #5 am: 22 Mai 2019, 08:29:06 »
In Exporter.pm wird die Funktion memcmp offensichtlich nicht wie deklariert aufgerufen oder neu deklariert.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Antw:Doppelte Readings nach Neustart
« Antwort #6 am: 22 Mai 2019, 08:42:07 »
Hallo CoolTux

Bei Deinem Problem 2 scheinst Du ein eigenes Perl zu verwenden. Sprich keines aus der Distribution. Ist das korrekt?

Nicht, das mir bewusst wäre.
Ich habe ein jungfräuliches Raspian Jessi aufgesetzt und für fhem noch zusätzlich

sudo apt-get install perl libdevice-serialport-perl
 sudo apt-get install libio-socket-ssl-perl
 sudo apt-get install libwww-perl
 sudo apt-get install libio-socket-inet6-perl

 sudo apt-get install sqlite3
 sudo apt-get install libdbd-sqlite3-perl
 sudo apt-get install libtext-diff-perl
 sudo apt-get install libjson-perl
 sudo apt-get install libcgi-pm-perl

 
 wget  http://fhem.de/fhem-5.8.deb
 sudo apt-get install -f
 sudo dpkg -i fhem-5.8.deb
 Open Browser http://192.168.178.9:8083/fhem
 Enter "shutdown"

 cd /opt
 sudo chmod -R a+w fhem
 sudo usermod -a -G tty pi
 sudo usermod -a -G tty fhem
 
 sudo nano /etc/init.d/fhem
 Change/add as follows
 # Required-Start:       $local_fs $remote_fs ntp

 sudo update-rc.d -n fhem defaults
 sudo update-rc.d -f fhem remove
 sudo update-rc.d fhem defaults
 sudo reboot

sowie die folgenden für mein Modul notwendigen Pakete


sudo apt-get install sox
sudo apt-get install libsox-fmt-all
sudo apt-get install libsodium-dev
sudo cpan Crypt::Argon2
sudo cpan Alien::Base::ModuleBuild
sudo cpan Alien::Sodium
sudo cpan Crypt::NaCl::Sodium

Ansonsten bin ich mir keiner Schuld bewusst.

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Antw:Doppelte Readings nach Neustart
« Antwort #7 am: 22 Mai 2019, 08:43:23 »
Hallo zap

In Exporter.pm wird die Funktion memcmp offensichtlich nicht wie deklariert aufgerufen oder neu deklariert.

Mag ja sein, aber wo verwende ich denn die exporter.pm in der 73_DoorBird.pm?
Dann könnte ich mich ja nach Alternativen umschauen.

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20721
Antw:Doppelte Readings nach Neustart
« Antwort #8 am: 22 Mai 2019, 08:46:59 »
 /usr/local/share/perl/5.24.1/Sub/Exporter.pm line 445.

Also dieser path kommt mir sehr ungewöhnlich vor.
Eventuell von eines der Module welche Du über cpan installiert hast.
Vielleicht ruft eines von denen die Funktion in Exporter auf.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Antw:Doppelte Readings nach Neustart
« Antwort #9 am: 22 Mai 2019, 21:52:52 »
/usr/local/share/perl/5.24.1/Sub/Exporter.pm line 445.

Also dieser path kommt mir sehr ungewöhnlich vor.
Eventuell von eines der Module welche Du über cpan installiert hast.
Vielleicht ruft eines von denen die Funktion in Exporter auf.

Anders kann ich mir das auch nicht erklären.
Mal schauen, vielleicht bringt ja ein Update in der nahen Zukunft Abhilfe... Die Hoffnung stirbt zuletzt!

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2805
    • HMCCU
Antw:Doppelte Readings nach Neustart
« Antwort #10 am: 24 Mai 2019, 07:42:30 »
Exporter.pm bietet eine export/import Funktion an, damit Module ihre Funktionen und Variablen für andere Module bereitstellen können.
Siehe https://metacpan.org/pod/Exporter, Module Description.

Eines der Module, die Dein Doorbird Modul verwendet, scheint wiederum Exporter.pm zu verwenden.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Antw:Doppelte Readings nach Neustart
« Antwort #11 am: 24 Mai 2019, 09:16:52 »
Hi zap

Exporter.pm bietet eine export/import Funktion an, damit Module ihre Funktionen und Variablen für andere Module bereitstellen können.
Siehe https://metacpan.org/pod/Exporter, Module Description.
Eines der Module, die Dein Doorbird Modul verwendet, scheint wiederum Exporter.pm zu verwenden.

Dann kann ich den Fehler eh nicht beheben...

Gibt es eine Möglichkeit den Fehler abyufangen, so dass er nicht im Log erscheint.
Ist ja nur Nerv-Kram, bei dem man eh nichts machen kann.

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 661
    • GitHub Projekte
Antw:Doppelte Readings nach Neustart
« Antwort #12 am: 25 Mai 2019, 21:56:18 »
Den Exporter muss eigentlich jedes Perl-Modul verwenden und auch einige FHEM-Module tun das (ohne Nebenwirkungen), obwohl sie im engeren Sinne keine Perl-Module sind. Für ein Perl-Modul ist es Grundvorraussetzung, um von anderen Modulen genutzt werden zu können - es ist also für sich kein Problem.

2019.05.19 13:37:29 1: PERL WARNING: Prototype mismatch: sub main::memcmp: none vs ($$;$) at /usr/local/share/perl/5.24.1/Sub/Exporter.pm line 445.
Ich habe diesen Fehler selbst noch nicht gehabt, aber wenn ich die ersten Antworten aus der Suchmaschine richtig interpretiere, dann ist da nicht nur irgendein Formfehler in der Export-Deklaration, es ist auch schlechter Stil überhaupt etwas nach main zu exportieren.

Vielleicht kannst du herausfinden, welches Modul eine sub mit memcmp hat. Dann entweder dieses Modul selbst in Ordnung bringen, dessen Autor ansprechen oder auf ein anderes Modul zurückgreifen. Es wird wahrscheinlich nicht möglich sein, die Fehlermeldung aus dem Log zu verbannen - es ist schließlich ein Fehler.

Grüße,
Jens
FHEM 5.9 - RPi 2.0 Raspbian 9 + PiTFT - OPi Zero Armbian 5.35
RPi/I2C: MMA845X - CUL/FS20 - RTL2882/SDR: Oregon, Alecto - EnOcean - LAN/Firmata: BMP180, TSL2561, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - Bluetooth

Online herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4975
Antw:Doppelte Readings nach Neustart
« Antwort #13 am: 25 Mai 2019, 22:24:29 »
eigentlich sind das c support Funktionen, also eher so XS.

Das scheint mir irgendwas grundlegendes nicht in Ordnung. Tritt das denn auch bei anderen usern auf ?
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1438
  • und es werden immer mehr...
Antw:Doppelte Readings nach Neustart
« Antwort #14 am: 26 Mai 2019, 11:06:18 »
Hallo Herrmann

eigentlich sind das c support Funktionen, also eher so XS.
Das scheint mir irgendwas grundlegendes nicht in Ordnung. Tritt das denn auch bei anderen usern auf ?

Zumindest bei jedem User, der die Bibliotheken einbindet, die ich für mein 73_DoorBird.pm - Modul benötige.

Gruss
    Sailor
******************************
Raspberry Pi mit DbLog, HomeMatic HMLAN
13x HM-SEC-SC; 11x HM-TC-IT-WM-W-EU; 13x HM-CC-RT-DN; 03x HM-Sec-SD; 01x HM-WDS10-TH-O; km200 mit Buderus GB172

 

decade-submarginal