Hallo zusammen,
habe an einer, vom Fhem-Server weit entfernten Stelle, ein AVR NET-IO mit Relaiskarte K8IO von Pollin im Einsatz um den Zustand von Türen zu überprüfen (und diese im Bedarfsfall auch elektrisch öffnen zu können, dies ist hier aber nicht das Thema, das funktioniert schon). Auf der Relaiskarte sind auch Anschlussklemmen für 4 Eingänge (PA0..PA3 des AVR) vorhanden, an die ich Türkontakte anschliessen möchte. Habe in meiner classdef (contacts.classdef) folgenden Eintrag: get ip cmd {"io set ddr 0 F0\nio get pin 0"} (warum die Maske F0 und nicht wie nach meinem Verständnis 0F für die 4 niederwertigen Bits sein muss hab ich nur durch Probieren herausgefunden)
in der fhem.cfg wird das ganze so definiert:
attr NETIO_01 classdefs ONEWIRE=./FHEM/onewire.classdef:RELAIS=./FHEM/relais.classdef:CONTACT=./FHEM/contacts.classdef
attr NETIO_01 room hidden
desweiteren zum Testen folgender Eintrag:
define k_tuer1 ECMDDevice CONTACT
attr k_tuer1 room Keller
zum einfachen Testen habe ich 4 von den Relaiskontakten (Schliesser) mit den 4 Eingängen verbunden, so dass ich die später vorhandenen Türkontakte simulieren kann. Wenn die Tür offen ist, liegt am entsprechenden Pin PAx (x = 0...3) high-Pegel an, wenn die Tür geschlossen ist low-Pegel.
wenn ich nun in die Kommandozeile (fhem)
get k_tuer1 ip
eintippe bekomme ich als Antwort z.B.: ip: OK;port 0: 0x07.
wie komm ich da am Besten an die Zustände der einzelnen Bits ran um festzustellen ob ein Eingang high oder low bzw. die Tür auf oder zu ist, um dies in fhem zu visualisieren, bzw über FS20-angesteuerte LEDs zu visualisieren?
Per Assembler würde ich den zurückgelieferten Wert einfach mit einer entsprechenden Maske (0x01 für PA0 ... 0x08 für PA3) "ver-und-en" und schauen ob das Ergebnis von Null verschieden ist, aber in Perl scheint mir das (zumindest für mich als Perl-Anfänger ("Einführung in Perl" für meinen Kindle ist gerade gekauft worden)) ziemlich kompliziert.
Hat jemand einen Schubs in die richtige Richtung parat? Über Suchfunktion/Wiki hab ich leider nichts gefunden.
Bin für jeden "Schubs" dankbar.
Grüße aus Heidelberg
Armin