FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Markus Bloch am 29 Oktober 2016, 15:57:18

Titel: Frage zu $hash->{Clients}
Beitrag von: Markus Bloch am 29 Oktober 2016, 15:57:18
Hallo zusammen,

ich bin aktuell dabei die Developer-Doku im Wiki zum Thema "zweistufiges Modulkonzept" zu überarbeiten (http://www.fhemwiki.de/wiki/DevelopmentModuleIntro#Zweistufiges_Modell_f.C3.BCr_Module).

Ich studiere momentan den Quellcode um selber zu verstehen wie das alles funktioniert.

Aktuell stocke ich jedoch bei der Client-List, welche ein physisches Modul entweder in %modules oder in $hash pro Definiton setzen muss, damit AssignIoPort() ein IO-Device finden kann. Ich habe auf meinem System mal ein "list .* Clients" durchgeführt und erhalte folgendes:
CUL                      :FS20:FHT.*:KS300:USF1000:BS:HMS: :CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: :ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: :STACKABLE_CC:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:
FritzBox_AHA             :FBDECT:
panStamp_Shield          :SWAP:


Nach meinem aktuellen Verständnis handelt es sich hierbei um eine durch Doppelpunkt getrennte Liste an regulären Ausdrücken, welche an das entsprechende physische Modul (CUL, FBAHA, panStamp) Daten per IOWrite() senden dürfen.

Das heißt, dass alle Definitionen, deren Modulname auf eines dieser Ausdrücke passt, können das physische Modul als IO-Device nutzen.

Nun wundert mich es, warum die Liste immer mit Doppelpunkt anfangt und endet, und dass Leerzeichen enthalten sind (leere Regexp?). Hat das einen tieferen Hintergrund? Ich konnte mir auf Basis des Source-Codes keinen Reim drauf bilden.

Oder habe ich das falsch interpretier? :/

Vielen Dank für die Hilfe.

Gruß
Markus
Titel: Antw:Frage zu $hash->{Clients}
Beitrag von: Dr. Boris Neubert am 29 Oktober 2016, 16:10:23
Hallo Markus,

einem (logischen) Client wird das zuletzt definierte physische Gerät, das das Modul des Clients in "Clients" listet, als IODev zugewiesen (kann durch attr vom Anwender überschrieben werden). Dann benutzt der logische Client die Routinen des physischen Gerätemoduls für IO.

So wie ich Zeile 4331 in fhem.pl lese, braucht man die Doppelpunkte am Anfang und Ende nicht.

Viele Grüße
Boris

Titel: Antw:Frage zu $hash->{Clients}
Beitrag von: Markus Bloch am 29 Oktober 2016, 16:15:10
Hallo Boris,

Zitat von: Dr. Boris Neubert am 29 Oktober 2016, 16:10:23
So wie ich Zeile 4331 in fhem.pl lese, braucht man die Doppelpunkte am Anfang und Ende nicht.

So sehe ich das auch. Die Doppelpunkte dienen lediglich als Trennzeichen. Die leeren Elemente aus Leerzeichen bzw am Anfang & Ende werden eh übergangen.

Ich möchte mich nur versichern, dass das korrekt ist, daher die Frage in die große Runde.

Gruß
Markus

Titel: Antw:Frage zu $hash->{Clients}
Beitrag von: justme1968 am 29 Oktober 2016, 16:22:25
ich meine die : an anfang und ende sind ein überbleibsel als es computeClientArray noch nicht gab und mehrfach direkt auf {Clients} zugegriffen wurde. da wurde dann per regex auf :$client: geprüft ohne anfang und ende der liste extra zu behandeln.

gruss
  andre
Titel: Antw:Frage zu $hash->{Clients}
Beitrag von: Markus Bloch am 29 Oktober 2016, 18:43:11
Hi Andre,

stimmt. Ich habe soeben mal in der SVN Historie gesucht und Revision 3236 gefunden in der die Funktion computeClientArray() eingeführt wurde. Vorher wurde es, wie Du schon sagst, direkt in Dispatch auf ":$mod:" geprüft.

Vielen Dank

Gruß
Markus