Autor Thema: Problem mit DevIO.pm  (Gelesen 2178 mal)

Offline HomeAuto_User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1024
Antw:Problem mit DevIO.pm
« Antwort #15 am: 06 Juni 2020, 12:20:39 »
Hallo,

ich selbst war hiervon auch betroffen und suchte mir den Wolf.

@roelleke: wieviele SIGNALduino Instanzen sind definiert? Wurde "beim" Absturz eine umbenannt?

Ich bin zwar nicht roelleke aber aufgrund des selben Fehlers melde ich mich mit zu Wort.

Bei mir waren diesbezüglich 2 definierte Instanzen betroffen. Beim Absturz konnte ich nicht verzeichnen das eine umbenannt wurde. FHEM war in einer Schleife dadurch bis ich von Hand eingegriffen hatte.
Diese Erkenntnis kann ich auch auf ein 2. Haushalt beziehen wo es ebenso war.

MfG
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22963
Antw:Problem mit DevIO.pm
« Antwort #16 am: 06 Juni 2020, 12:25:47 »
War einer der Instanzen per Netzwerk angebunden?

Offline Ralf9

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3372
Antw:Problem mit DevIO.pm
« Antwort #17 am: 06 Juni 2020, 14:59:40 »
Das Problem war, daß der sduino mit "by-path" und nicht wie üblich mit "by-id" angebunden war.
/dev/serial/by-path/platform-3f980000.usb-usb-0:1.1.2:1.0-port0@57600Die "by-path" Definition wurde als fehlerhafte IP abgelehnt:
2020.06.05 11:48:22 1: Signalduino2: Can't connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1: http:///dev/serial/by-path/platform-3f980000.usb-usb-0:1.1.2:1.0-port0: malformed or unsupported URL
Zitat
Ein Modul sollte keine InternalTimer definieren, wenn es define ablehnt.
Wie kann ich erkennen, wenn es define ablehnt?
Ist das am $ret von DevIo_OpenDev erkennbar? Wenn $ret defined und nicht leer?

Dann könnte man ein
RemoveInternalTimer("sduino_IdList:$name");machen, wenn es define ablehnt

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Offline HomeAuto_User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1024
Antw:Problem mit DevIO.pm
« Antwort #18 am: 06 Juni 2020, 15:02:39 »
War einer der Instanzen per Netzwerk angebunden?

Angeschlossen über USB mit DEF via path.

Das Problem war, daß der sduino mit "by-path" und nicht wie üblich mit "by-id" angebunden war.

Leider gibt es Fälle wo man mit by-id nicht auskommt. (Geräte mit selber ID)


Gesendet von iPhone mit Tapatalk Pro
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22963
Antw:Problem mit DevIO.pm
« Antwort #19 am: 06 Juni 2020, 15:17:24 »
Zitat
Wie kann ich erkennen, wenn es define ablehnt?
???
Ich meine nicht DevIo_OpenDev, sondern die Modul-Eigene DefFn.
Und da sollte der Maintainer schon wissen, in welchem Fall sie eine Fehlermeldung statt undef zurueckliefert.

Offline Ralf9

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3372
Antw:Problem mit DevIO.pm
« Antwort #20 am: 06 Juni 2020, 15:59:31 »
Zitat
Ich meine nicht DevIo_OpenDev, sondern die Modul-Eigene DefFn.
Und da sollte der Maintainer schon wissen, in welchem Fall sie eine Fehlermeldung statt undef zurueckliefert.

Ich meinte wie kann ich erkennen, wenn DevIo_OpenDev den connect z.B. wegen einem fehlerhaften define ablehnt?
Damit?
if ($ret) {
  ...

FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2546
Antw:Problem mit DevIO.pm
« Antwort #21 am: 06 Juni 2020, 16:22:54 »
Die Anzahl an Definitionen ist für den Fehler uninteressant.

Der Timer der gestartet wird ruft SIGNALduino_IdList auf.
Ob die Verbindung zum physischen Gerät besteht ist für die Funktion nicht relevant.

Relevant ist aber, ob $defs{<Name>} den Gerätehash liefert.

Das klappt nicht, weil im Core dieser Key gelöscht wird.

Dass der Key vom Core gelöscht wird, ohne das undefFn aufgerufen wird, war mir einfach nicht transparent.

Ich denke robuster Code kommt zu großen Teilen aus den Modules aber durchaus auch aus dem Core.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22963
Antw:Problem mit DevIO.pm
« Antwort #22 am: 06 Juni 2020, 16:47:26 »
Zitat
Ich meinte wie kann ich erkennen, wenn DevIo_OpenDev den connect z.B. wegen einem fehlerhaften define ablehnt?
Bei einem Problem wird die Fehlermeldung dem callback mitgeteilt, falls sie spezifiziert wurde (d.h. asynchroner Ablauf fuer http/websocket), ansonsten kommt die Fehlermeldung im Rueckgabewert.

Aber danke fuer den Denkanstoss: im aktuellen Code liefert DevIo_OpenDev _mit_ callback je nach Fehler (z.Bsp. DNS-Problem ohne gesetzten dnsServer) _auch_ als Rueckgabewert (und nicht nur im callback). Das ist mAn irrefuehrend, und fuehrte(?) in diesem Fall zum Problem, weil SIGNALduino_Define diesen Wert zurueckgeliefert hat.
Ich habe DevIo.pm angepasst, damit beim gesetzten callback _nie_ ein Fehler direkt zurueckgeliefert wird, sondern nur uebers callback.


Zitat
Ich denke robuster Code kommt zu großen Teilen aus den Modules aber durchaus auch aus dem Core.
Das ist vermutlich richtig, es hat aber einen Preis und diverse Nebeneffekte.

Offline roelleke

  • Jr. Member
  • **
  • Beiträge: 50
Antw:Problem mit DevIO.pm
« Antwort #23 am: 06 Juni 2020, 17:46:13 »
Hallo,
komme erst gerade wieder dazu ins Forum zu schauen.

Ich have 2 Signalduinos angeschlossen. Einer über USB und der andere über LAN (Signalesp).
Ich habe keinen von beiden umbenannt und ich habe auch nicht erkennen können ob so etwas automatisch passiert, aber meiner Meinung ist nichts umbenannt worden.

 

decade-submarginal