[gelöst] define benutzt falsches Modul

Begonnen von Stumpf, 27 Oktober 2016, 11:02:48

Vorheriges Thema - Nächstes Thema

Stumpf

Hallo zusammen,

ich habe mir mein eigenes Modul geschrieben das mir aktuelle Daten meiner Raumsensoren aus meiner mySql Datenbank liest und die Daten als Readings bereitstellt.
Das funktioniert auch soweit wunderbar.
Nun wollte ich weitere Werte aus der der Heizungsventile aus der Datenbank holen. Dazu habe ich das Modul der Raumsensoren genommen, kopiert und alle Namen des Moduls mit dem neuen ersetzt. Anpassungen der SQL Abfrage und Anpassung der Readings.

Wenn ich aber nun die defines des neuen Moduls einbinde, scheinen sich die Module zu stören.

So lege ich sie an:

define KZ.Raumsensor Raumsensor 142
attr KZ.Raumsensor room Termostate

define WohnzimmerHeizkreis Heizkreise WohnzimmerHeizkreis
attr WohnzimmerHeizkreis room Termostate


Angelegt werden die defines richtig.
2016.10.27 10:33:49 1: Raumsensor SZ.Raumsensor: Define.55  aufgerufen param[0}]:SZ.Raumsensor und param[2]:134
2016.10.27 10:33:49 1: Raumsensor MX.Raumsensor: Define.55  aufgerufen param[0}]:MX.Raumsensor und param[2]:132
2016.10.27 10:33:49 1: Raumsensor KZ.Raumsensor: Define.55  aufgerufen param[0}]:KZ.Raumsensor und param[2]:142
2016.10.27 10:33:49 1: Heizkreise WohnzimmerHeizkreis: Define.53  aufgerufen param[0}]:WohnzimmerHeizkreis und param[2]:WohnzimmerHeizkreis



Hier die Fehlermeldung des Log's:

2016.10.27 10:34:13 2: Raumsensor WohnzimmerHeizkreis: LeseDaten.269 Es konnten keine Daten von Adresse: WohnzimmerHeizkreis gelesen werden.
2016.10.27 10:34:17 2: Raumsensor WohnzimmerHeizkreis: LeseDaten.269 Es konnten keine Daten von Adresse: WohnzimmerHeizkreis gelesen werden.
2016.10.27 10:34:55 2: Raumsensor WohnzimmerHeizkreis: LeseDaten.269 Es konnten keine Daten von Adresse: WohnzimmerHeizkreis gelesen werden.


Man sieht hier wie das Modul Raumsensor auf das define des Heizkreises zugreift.

Nun die Frage....... was habe ich übersehen bzw. was mache ich falsch?

Im Anhang sind noch die zwei Module die ich benutze.

Danke

Gruß
Stumpf


Stumpf

Keiner eine Ahnung?  :(

Ich habe gestern nochmals die Doku für Development durchgelesen. Auch da gibt es keine Hinweise was falsch läuft.
ich denke das hier irgendwie was mit dem $def falsch läuft und so der falsche hash aufgerufen wird.
Allerdings habe ich nichts gefunden das es mir erklären würde.

Kein erfahrener Entwickler im Anfänger Forum? :-(

Gruß
Stumpf


igami

Zitat von: Stumpf am 28 Oktober 2016, 08:50:34
Keiner eine Ahnung?  :(
Hier gibt es keine Hotline, da muss man sich schon mal einen Moment gedulde.

Ich vermute es liegt an den Zeilen

my $MODUL = "Raumsensor";
my $MODUL = "Heizkreise";

es ist in beiden Modulen die selbe Variable. Wofür brauchst du die überhaupt?

$hash->{TYPE}

liefert den TYPE des device
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

CoolTux

Achtung. Moduldateien mit einer 99 werden immer automatisch geladen. Solltest du vielleicht ändern falls du das Modul mal nicht brauchst.
Es gibt auch ein Developer Guide im Wiki, vielleicht hilft es Dir.
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

Markus Bloch

Hallo Stumpf,

der Grund ist recht einfach. Du definierst in beiden Modulen eine sub LeseDaten(). Diese wird beim Laden von Heizkreise mit der Variante aus Heizkreise überschrieben.

Daher solltest du deine Funktion LeseDaten() genauso wie bei den anderen Modulfunktion den Modulnamen als Präfix voranstellen. Also Heizkreise_LeseDaten() und Raumsensor_LeseDaten().

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

justme1968

mal was ganz anderes: warum machst du zwei module draus wenn die beiden so ähnlich sind?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Stumpf

 ::) Ja klar.

Gültigkeitsbereich von Variablen und Funktionen.......... ach verdammt.
Komme aus der c++ Welt und war hier am Klassen denken  :o

Die Developer Guide habe ich gelesen, aber das Problem war ja auf Perl ebene.

Es war die Funktion LeseDaten die in zwei Modulen gleich hieß...... Name mit Präfix und schon geht es.

Klar könnte man es in ein Modul packen, aber ob das übersichtlicher ist, ist die Frage.

Dacht die Variablen:

$hash->{TYPE}
$hash->{name}

müssen immer beschrieben werden damit FHEM sie auseinander halten kann...?

Also vielen Dank fürs helfen.

@CoolTux: Auch danke an deine UI Demo. Hab mir da auch die ein oder andere Inspiration holen können.

Top Forum und Community

Danke

Markus Bloch

Die genannten Variablen werden durch FHEM selber erzeugt und sind in der DefineFn bereits existent und korrekt befüllt. Diese sollte man nicht überschreiben da sie intern durch fhem.pl verwaltet werden.

Gruß Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Stumpf