FHEM - Entwicklung > FHEM Development

fehlende $hash->{'.clientArray'} Aktualisierung bei define von Clients

(1/2) > >>

noansi:
Hallo Rudolf,

mir ist aufgefallen, dass bei autocreate oder manuellem define von CUL Clients das {'.clientArray'} nicht bei allen das Clientmodul unterstützenden IOs aktualisiert wird, wenn das Clientmodul geladen werden muss.

Nur das IO, welches die message zuerst empfangen hat und den autocreate des Clients auslöst, bekommt ggf. via IODev assign eine Aktualisierung
oder bei manuellem define des Clients das IO, welches ggf. via IODev assign gewählt wird.

Damit werden in Multireceiverkonfiguration entsprechende Client Empfangsdaten nur bei Empfang durch dieses eine IO richtig verarbeitet. Die anderen jammern dann "grundlos" z.B.

--- Code: ---2022.05.06 21:44:04.270 3: PIG2_WS433: Unknown code R01143C4150, RSSI -47, help me!

--- Ende Code ---

Erst mit fhem Neustart haben dann alle IOs ein passendes {'.clientArray'}.

Mit dem angehängten kleinen patch wird in CommandDefine für einen Neuaufbau des {'.clientArray'} für alle das Clientmodul aktuell unterstüzende IOs gesorgt.

Gruß, Ansgar.

rudolfkoenig:
Habs eingebaut, allerdings mit einigen Aenderungen.
Ich habe es noch nicht begriffen, wofuer qr// notwendig ist. Kannst Du es mir bitte zeigen?

noansi:
Hallo Rudolf,


--- Zitat ---Ich habe es noch nicht begriffen, wofuer qr// notwendig ist. Kannst Du es mir bitte zeigen?
--- Ende Zitat ---
in Zeile 5227 ist es schon mal verwendet:

--- Code: ---    my @cmRe = map { qr/^$_$/ } @mRe;  # 125292, precompile, speedup 5x for CUL

--- Ende Code ---
also precompile.

Ist aber im patch nicht nötig, da die Re's nur ein mal in der foreach Schleife gebraucht werden.
Edit: aber muss es dann nicht

--- Code: ---if($m =~ m/^$cmRe$/) {
--- Ende Code ---
lauten?

Gruß und Danke, Ansgar.

noansi:
Hallo Rudolf,

ich vermute mal, Du hast meinen Edit im vorherigen Beitrag nicht mehr mitbekommen.

Ohne das großzügig entferne qr// sollte es statt

--- Code: ---if($m =~ $cmRe) {
--- Ende Code ---

wohl lauten:

--- Code: ---if($m =~ /^$cmRe$/) {
--- Ende Code ---

Sonst ist es vermutlich ungewollt mehrdeutig, habe aber noch keinen brauchbare Semantikbeschreibung für Deine Variante gefunden, die das bestätigt oder widerlegt.

Gruß, Ansgar.

rudolfkoenig:
Stimmt, danke fuer den Hinweis habs geaendert.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln