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

Begonnen von noansi, 07 Mai 2022, 11:36:50

Vorheriges Thema - Nächstes Thema

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.
2022.05.06 21:44:04.270 3: PIG2_WS433: Unknown code R01143C4150, RSSI -47, help me!


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,

ZitatIch habe es noch nicht begriffen, wofuer qr// notwendig ist. Kannst Du es mir bitte zeigen?
in Zeile 5227 ist es schon mal verwendet:
    my @cmRe = map { qr/^$_$/ } @mRe;  # 125292, precompile, speedup 5x for CUL

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
if($m =~ m/^$cmRe$/) {
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
if($m =~ $cmRe) {

wohl lauten:
if($m =~ /^$cmRe$/) {

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