Hi Stefan, Hi all,
also ich ich glaube ich bin jetzt sauber was die Übergabe in meinen Funktionen angeht. Ich übergebe überall den "$hash, meine Liste", sowohl bei GET als auch bei SET.
Dann habe ich die Initialize Methode... die sollte sauber sein.
sub Initialize($)
{
my ($hash) = @_;
$hash->{DefFn} = "Define";
$hash->{UndefFn} = "Undefine";
$hash->{GetFn} = "Get"; # aktuell nur Dummy
$hash->{SetFn} = "Set";
$hash->{AttrFn} = "Attr";
$hash->{AttrList} = "disable:0,1 ".
"allowSetParameter:0,1 ".
$readingFnAttributes;
}
Define - sollte passen, es wurde ja schonmal ein Gerät angelegt.
- hier wird der InternalTimer gelöscht und neu angelegt und
GetUpdatemit dem
$hash aufegrufen.
Undefine - ist c+p und sieht wie bei anderen auch aus. => Zumindest wie in Luxtronix
- RemoveInternalTimer und BlockingKill wird aufgerufen
Get - ist noch Dummy, aber reagiert auf die get Einträge des Devices... macht nur nix...
Set- Konnte ich noch nicht testen, baut aber die die
@Listen zusammen und sendet dann mit dem
$hash zusammen an die Funktionen, je nach Set des Device
Attr - ist c+p und sieht wie bei anderen auch aus...
GetUpdate- hier wird auch immer der InternalTimer gelöscht und neu angelegt und
GetUpdatemit dem
$hash wieder aufegrufen, quasi in einer Schleife(Intervallbasierend)
- gleichzeitig ruft BlockingCall die
DoUpdate und
UpdateAborted auf.
Warum wird DoUpdate nur mit dem Namen aufgerufen?!? Muss da der $hash nicht auch mit übrgeben werden?
Hab beides probiert, passiert nix...
DoUpdate- liest mit readingsBeginUpdate, readingsBulkUpdate und readingsEndUpdate die Readings in den $hash.
UpdateAborted- soll diesen RUNNING_PID

? löschen...
dann kommen meine Funktionen...
Soweit alles gut, aber wenn ich ein Device anlegen will, dann kommt diesemal kein Device, sonder Fhem restartet einfach...
Ich gebe zu, viel ist Copy+Paste aus Luxtronik, aber der Rumpf sollte doch jetzt passen... oder, ich seh den Wald nicht mehr und nach Stunden vor dem Code auch aktuell keinen Ansatz...
Ich glaube mein Problem liegt in meinem DoUpdate, ich habe einfach nicht verstanden warum in Luxtronix
$hash->{helper}{RUNNING_PID} = BlockingCall("LUXTRONIK2_DoUpdate", $name, "LUXTRONIK2_UpdateDone", 25, "LUXTRONIK2_UpdateAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
diesen Aufruf gibt, ich glaube in LUXTRONIK2_DoUpdate werden nur die Arrays erzeugt und in LUXTRONIK2_UpdateDone die Werte geladen...
Viell brauch ich das alles nicht...
Fhem log verbose 5:
2021.01.16 18:39:38 4: Connection accepted from WEB_192.168.178.127_56390
2021.01.16 18:39:38 4: WEB_192.168.178.127_56390 GET /fhem?; BUFLEN:0
2021.01.16 18:39:38 4: WEB: /fhem? / RL:1340 / text/html; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate
2021.01.16 18:39:38 4: WEB_192.168.178.127_56390 GET /fhem/pgm2/style.css?v=1610818736; BUFLEN:0
2021.01.16 18:39:38 4: WEB_192.168.178.127_56390 GET /fhem?XHR=1&inform=type=status;filter=;since=1610818777;fmt=JSON&fw_id=14×tamp=1610818780019; BUFLEN:0
2021.01.16 18:39:41 4: Connection closed for WEB_192.168.178.127_56390: EOF
2021.01.16 18:39:41 4: Connection accepted from WEB_192.168.178.127_56391
2021.01.16 18:39:41 4: WEB_192.168.178.127_56391 POST /fhem&fw_id=14&fwcsrf=csrf_305768141714800&cmd=define+AirUnit+AirUnit+192.168.178.9%3A30046+60; BUFLEN:0
2021.01.16 18:39:41 5: Cmd: >define AirUnit AirUnit 192.168.178.9:30046 60<
2021.01.16 18:39:41 5: Loading ./FHEM/98_AirUnit.pm
Undefined subroutine &main::Define called at fhem.pl line 3763.
2021.01.16 18:39:43 5: Initializing Type Library:
2021.01.16 18:39:43 1: Including fhem.cfg
2021.01.16 18:39:43 5: Cmd: >attr global userattr cmdIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride<
2021.01.16 18:39:43 5: Cmd: >attr global autoload_undefined_devices 1<
2021.01.16 18:39:43 5: Cmd: >attr global logfile ./log/fhem-%Y-%m.log<
2021.01.16 18:39:43 5: Cmd: >attr global modpath .<
2021.01.16 18:39:43 5: Cmd: >attr global motd SecurityCheck:
WEB is not password protected
Protect this FHEM installation by defining an allowed device with define allowed allowed
You can disable this message with attr global motd none<
2021.01.16 18:39:43 5: Cmd: >attr global statefile ./log/fhem.save<
2021.01.16 18:39:43 5: Cmd: >attr global verbose 5<
2021.01.16 18:39:43 5: Cmd: >define WEB FHEMWEB 8083 global<
2021.01.16 18:39:43 5: Loading ./FHEM/01_FHEMWEB.pm
Jemand ne Idee, was es jetzt ist?
VG+Danke
René