Originally posted by: <email address deleted>
Hallo,
ich möchte gern ein eigenes Modul zur Bedienung von AVR-Net-IOs von Pollin die mit Ethersex (http://ethersex.de/index.php/Ethersex) laufen, schreiben. Man kann über das ECMD Interface von Ethersex schön einzelne PINs am Atmega ein- und ausschalten. Gibt es irgendwo eine Anleitung oder ein Howto wie die Module aufgebaut werden "müssen". Bei der Durchsicht der Files tauchen immer wieder Funktionen wie XX_Set, XX_Get, usw. auf. Für eine kurze Erläuterung der Modulstruktur wäre ich dankbar.
Danke +lg
Mike
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
Hallo Mike,
> ich möchte gern ein eigenes Modul zur Bedienung von AVR-Net-IOs von Pollin
> die mit Ethersex (http://ethersex.de/index.php/Ethersex) laufen, schreiben.
Ich kenn jemanden, der sich ueber ein ethersex Modul auch freuen wuerde.
> Gibt es irgendwo eine Anleitung oder ein Howto wie die Module aufgebaut
> werden "müssen".
Nicht direkt, es ist in commandref.html und in mehreren Postings verstreut.
Ich versuche es hier zusammenzuschreiben:
Ein Modul wird von FHEM erkannt, indem man es ins Modulverzeichis kopiert
unter einem bestimmten Namen: NN_ModulName.pm. NN bezeichnet die Reihenfolge,
die wird beim auflisten aller Geraete verwendet, oder beim zuordnen einer
Nachricht einem logischen (s.u.) Geraet.
Das Modul muss eie Funktion "ModuleName_Initialize" enthalten, die nach dem
Laden aufgerufen wird. Die Name dieser Funktion (und nicht die der Datei)
spezifiziert die klein/Grossschreibung des Moduls.
Module mit der Reihenfolge 99 werden immer geladen (die enthalten generische
Hilfsfunktionen), alle anderen erst dann, wenn ein Geraet mit diesem Namen
definiert wird.
Es gibt zwei Arten von Geraeten, die man (wenn moeglich) nicht zu einem
zusammenfassen sollte:
- das Physische, was man also direkt am Rechner anschliesst, z.Bsp. FHZ/CUL
- das Logische, was ueber das physisch angeschlossene indirekt gesteuert wird
(FS20, FHT)
Im Initialize des Moduls spezifiziert man, welche Funktionen man unterstuetzt,
die sind je nach Art des Geraetes unterschiedlich.
Physische Geraete koennen folgendes setzen:
- FD: Filedescriptor, falls man die Daten per select pruefen kann (Unix)
Wird natuerlich erst nach dem "define" gesetzt.
- Readyfn: Zum pollen, ob Daten da sind (Windows), bzw. ob das ausgestoepselte
Geraet wieder eingesteckt wurde.
- ReadFn: Wird verwendet, falls das Geraet Daten meldet per select oder
ReadyFn. Holt die Daten ab, und stellt sie dem logischen Geraeten
zur Verfuegung, z.Bsp. via dem generischen Dispatch.
- WriteFn:Wird von den logischen Modulen verwendet, um Daten zu schreiben. Die
logischen sind ueber das Attribut IODev mit dem Physikalischen
verbunden
- Clients:Liste der moeglichen logischen Empfaenger. Die Daten werden allen
diesen Empfaengern angeboten
- MatchList:Zuordnung (via regexp) von Nachricht an logisches Modul.
Wird verwendet, um eine Nachricht der Sorte:
"Unknown XXXX device detected, define one to get detailed
information"
Die Module selber koennen ja nicht gefragt werden, wenn noch kein
Geraet von dieser Sorte definiert wurde.
Logische Geraete koennen folgendes setzen:
- Match: Regexp, um eine Nachricht vom Physischen entgegenzunehmen.
- ParseFn:wird aufgerufen, falls die Nachricht "matched".
Liefert zurueck den Namen des betroffenen Geraetes, und setzt in
"CHANGED" Feld des betroffenen Geraetes die "neuen" Nachrichten,
(diese wird fuers Trigger verwendet und geloescht), bzw. in READINGS
verewigt.
Funktionen fuer alle Geraete:
- DefFn: wird beim definieren oder umbenennen aufgerufen.
- UndefFn:wird beim loeschen aufgerufen.
- GetFn: Optional, liefert Daten zurueck. Die Usage Meldung ist "stadard",
moegliche get Argumente werden z.Bsp von fhemweb hieraus extrahiert.
- SetFn: Optional, liefert keine Daten zurueck. Die Usage Meldung ist
"stadard", moegliche get Argumente werden z.Bsp von fhemweb hieraus
extrahiert.
- StateFn:Setzt den Status des Geraetes, ohne irgendwelche Aktionen
auszufuehren, z.Bsp beim Hochfahren von fhem werden die zuletzt
gespeicherten Werte gesetzt.
- AttrList:Liste der moeglichen Attribute. Nach einem Doppelpunkt folgen die
moeglichen Werte.
- ShutdownFn: wird beim stoppen von fhem aufgerufen.
- AttrFn: Prueft ob des setzen/loeschen bestimmter Attribute ok ist, bzw.
passt Interne werte an.
Beispiel: Beim FS20 wandelt "set Lampe on" in einem langen hexadezimalen
String um und ruft ueber IOWrite z.Bsp FHZ_Write auf der aus dem Hex
Binaerdaten baut, und diese ans FHZ direkt schickt.
Gruss,
Rudi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
Originally posted by: <email address deleted>
Hallo Zusammen,
nach ´ne Frage dazu....
Kann es auch mehrere MatchFn/ParseFn-Kombies für eine Physischen
Nachricht geben ?
z.B.
11_FHT => ($hash->{Match} = "^81..(04|09|0d)..(0909a001|83098301|
c409c401)..";) => ParseFN
??_IrgendEinModul => ($hash->{Match} = "^81..(04|09|0d)..(0909a001|
83098301|c409c401)..";) => ParseFN
Ohne das sich dieModule sich dabei in die Quere kommen ??
Schöne Grüße
Axel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
Originally posted by: <email address deleted>
Hi,
> Hallo Zusammen,
>
> nach ´ne Frage dazu....
> Kann es auch mehrere MatchFn/ParseFn-Kombies für eine Physischen
> Nachricht geben ?
> z.B.
> 11_FHT => ($hash->{Match} = "^81..(04|09|0d)..(0909a001|83098301|
> c409c401)..";) => ParseFN
> ??_IrgendEinModul => ($hash->{Match} = "^81..(04|09|0d)..(0909a001|
> 83098301|c409c401)..";) => ParseFN
>
> Ohne das sich dieModule sich dabei in die Quere kommen ??
Ich denke mal nicht, da werden sich die Module in die Quere kommen. Ich bin gerade an dieser Stelle um den Output meines Ethersex Device zu parsen, habe damit aber meine Probleme...
In meinem Modul habe ich ganz global mal $hash->{Match} auf "^AVR" gesetzt. Das gefällt aber dem fhem anscheinend nicht:
2009.10.27 14:25:42 5: Cmd: >set p3 on<
2009.10.27 14:25:42 2: AVR set p3 on
2009.10.27 14:25:42 5: NETIO sending pin set p3 on
2009.10.27 14:25:42 5: Triggering p3 (1 changes)
2009.10.27 14:25:42 5: p3 trigger: Checking lime_reset for notify
2009.10.27 14:25:42 5: p3 trigger: Checking logdb for notify
.
.
2009.10.27 14:25:42 2: NETIO/RAW: on
2009.10.27 14:25:42 5: NETIO1 dispatch AVR:on
Use of uninitialized value in pattern match (m//) at /usr/local/fhem/fhem.pl line 2048.
Use of uninitialized value in pattern match (m//) at /usr/local/fhem/fhem.pl line 2048.
.
.
2009.10.27 14:25:42 3: NETIO1: Unknown code AVR:on, help me!
Any ideas was mache ich falsch?
Lg
Mike
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
> Kann es auch mehrere MatchFn/ParseFn-Kombies für eine Physischen
> Nachricht geben ?
Ja. Falls das ParseFn eines Moduls "undef" zurueckliefert, dann wird nach dem
naechsten Modul gesucht.
> In meinem Modul habe ich ganz global mal $hash->{Match} auf "^AVR" gesetzt.
> Das gefällt aber dem fhem anscheinend nicht:
Ich tippe eher auf einen fehlenden "Clients" Eintrag.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
Originally posted by: <email address deleted>
Hi,
[...]
> Ich tippe eher auf einen fehlenden "Clients" Eintrag.
Super, Danke... das wars auch.
Danke :)
Lg
Mike
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-