Doppelte Readings nach Neustart

Begonnen von Sailor, 19 Mai 2019, 13:57:48

Vorheriges Thema - Nächstes Thema

Sailor

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
******************************
Man wird immer besser...

jensb

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 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

zap

Vielleicht in einem Fall ein unsichtbares Zeichen im Reading Name?

Du verwendest die Standardfunktionen wie readingsingleupdate für das Setzen der Readings?
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Sailor

Hi ZAP

Zitat von: zap 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?

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
******************************
Man wird immer besser...

CoolTux

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.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

zap

In Exporter.pm wird die Funktion memcmp offensichtlich nicht wie deklariert aufgerufen oder neu deklariert.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Sailor

Hallo CoolTux

Zitat von: CoolTux 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?

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
******************************
Man wird immer besser...

Sailor

Hallo zap

Zitat von: zap am 22 Mai 2019, 08:29:06
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
******************************
Man wird immer besser...

CoolTux

 /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.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Sailor

Zitat von: CoolTux 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.

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
******************************
Man wird immer besser...

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.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Sailor

Hi zap

Zitat von: zap 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.

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
******************************
Man wird immer besser...

jensb

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.

Zitat von: Sailor am 19 Mai 2019, 13:57:48
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 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

herrmannj

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 ?

Sailor

Hallo Herrmann

Zitat von: herrmannj 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 ?

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

Gruss
    Sailor
******************************
Man wird immer besser...