Modulfunktion Undef bzw. Delete

Begonnen von psycho160, 20 März 2025, 08:22:27

Vorheriges Thema - Nächstes Thema

psycho160

Hallo,

vielleicht kann mir jemand weiterhelfen, ich hab heut bei meinem Modul paar Dinge erweitert und im Zuge dessen ist mir aufgefallen, wenn ich das Device aus fhem lösche die Sub X_Undef bzw. X_Delete nicht aufgerufen werden.

Lt. DevelopmentModuleIntro soll bei einem delete ja die Sub aufgerufen werden...

Das hat aber ziemlich sicher vor einiger Zeit noch funktioniert, oder könnte das mit der configDb zusammenhängen?

Konkret geht es um dieses Modul: https://git.wolfmajer.at/Public/FHEM-Tado, aber die 2 genannten Subs sind ja fhem standard.

Irgend einen Tipp für mich?

lg
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)
- 2024@HomeAssistant, FHEM nur noch als legacy System per MQTT von HA versorgt

betateilchen

Zitat von: psycho160 am 20 März 2025, 08:22:27der könnte das mit der configDb zusammenhängen?

Und wenn es morgen regnet, ist bestimmt auch configDB schuld? Gehts noch?



Man sollte halt einigermaßen verstanden haben, wie ein "Modul" aufgebaut sein muss, damit es funktioniert.

xxx_Undef() und xxx_Delete() werden in der Initialisierung des genannten Moduls schlichtweg nicht definiert, deshalb weiß FHEM nichts davon, dass es diese Funktionen zu gegebener Zeit aufrufen soll.



---
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

psycho160

Zitat von: betateilchen am 20 März 2025, 08:28:09
Zitat von: psycho160 am 20 März 2025, 08:22:27der könnte das mit der configDb zusammenhängen?

Und wenn es morgen regnet, ist bestimmt auch configDB schuld? Gehts noch?



Man sollte halt einigermaßen verstanden haben, wie ein "Modul" aufgebaut sein muss, damit es funktioniert.

xxx_Undef() und xxx_Delete() werden in der Initialisierung des genannten Moduls schlichtweg nicht definiert, deshalb weiß FHEM nichts davon, dass es diese Funktionen zu gegebener Zeit aufrufen soll.



---

Nein aber das war die einzig größere änderung seitdem es nicht mehr funktioniert.. man weiß ja nie
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)
- 2024@HomeAssistant, FHEM nur noch als legacy System per MQTT von HA versorgt

psycho160

aber danke für den Tipp, jez weiß ich schon wo das Problem liegt.
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)
- 2024@HomeAssistant, FHEM nur noch als legacy System per MQTT von HA versorgt

betateilchen

#4
Zitat von: psycho160 am 20 März 2025, 08:31:04Nein aber das war die einzig größere änderung seitdem es nicht mehr funktioniert.. man weiß ja nie

Wenn das im code schon immer so aussieht wie aktuell, kann das noch nie funktioniert haben.

sub TadoAPI_Initialize {
    my $hash = shift;
    my $TYPE = "TadoAPI";

    $hash->{DefFn}    = \&TadoAPI_Define;
    $hash->{InitFn}   = \&TadoAPI_Init;
    $hash->{SetFn}    = \&TadoAPI_Set;
    $hash->{GetFn}    = \&TadoAPI_Get;
    $hash->{AttrList} = ""
      . "homeID "
      . "mobileID "
      . "showPosData:0,1 "
      . "updateIntervall "
      . "disable:0,1 "
      . $readingFnAttributes;

      return;
}

  • xxx_Init kenne ich nicht - was soll das sein?
  • xxx_Delete ist nicht definiert
  • xxx_Undef ist nicht definiert
  • den TYPE gibt man nicht explizit an. Die Variable wird ja in x_Initialize sowieso nirgends verwendet...

Die von Dir zitierten Guidelines in DevelopmentModuleIntro nochmal genau lesen, insbesondere den Teil zu xxx_Initialize(), könnte ziemlich sicher weiterhelfen.

ZitatFunktionsname
X_Initialize   

Kurzbeschreibung
Initialisiert das Modul und gibt den Namen zusätzlicher Modulfunktionen bekannt, sowie modulspezifische Einstellungen. Wird direkt nach dem erfolgreichen Laden des Moduls durch fhem.pl aufgerufen.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

psycho160

Danke @betateilchen, haut schon hin.

Der Teil aus dem Modul war uralt, hab ich damals in den ersten Schritten irgendwo übernommen. Dann muss das undef mal rausgeflogen sein, keine ahnung, hab jetzt nach einiger zeit was angepasst und da fiel mir das problem erst jetzt auf...

Trotzdem Danke!
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)
- 2024@HomeAssistant, FHEM nur noch als legacy System per MQTT von HA versorgt