Autor Thema: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen  (Gelesen 997 mal)

Offline ArminK

  • Jr. Member
  • **
  • Beiträge: 99
AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« am: 08 August 2012, 11:37:20 »
                                                           

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:

define NETIO_01 ECMD telnet 192.168.1.111:2701
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

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

Guest

  • Gast
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #1 am: 08 August 2012, 12:00:32 »
Originally posted by: <email address deleted>

Hallo Armin,
 
vielleicht hilft dir das:
http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
 weiter.
 
Grüße
 
Jörg

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Offline ArminK

  • Jr. Member
  • **
  • Beiträge: 99
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #2 am: 08 August 2012, 13:33:03 »
                                                           

Hallo Jörg,

 vielen Dank für den Tipp, bin ich auch schon einmal drüber gestolpert hab
dann aber den Baum (vor lauter Wald drum rum) nicht erkannt…ich lass das
mal wirken bin mir aber nicht sicher ob ich das so einfach hinkriege….

Portstatus nach Binär umwandeln (ohne printf?) dann ausparsen (wie auch immer)
müsste eigentlich klappen….mal sehen...ich berichte

Am Mittwoch, 8. August 2012 12:00:32 UTC+2 schrieb JoWiemann:
>
> Hallo Armin,
>  
> vielleicht hilft dir das:
> http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
>  weiter.
>  
> Grüße
>  
> Jörg
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

Guest

  • Gast
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #3 am: 02 November 2012, 15:27:35 »
Originally posted by: <email address deleted>

Hallo Armin,

ich habe ähnliches vor wie du.
Kannst du deine classdef für die Abfrage der Eingänge und deine
Definitionen aus der fhem.cfg posten?

beste Grüße

Thorsten

Am Mittwoch, 8. August 2012 13:33:03 UTC+2 schrieb Armink:
>
> Hallo Jörg,
>
>  vielen Dank für den Tipp, bin ich auch schon einmal drüber gestolpert hab
> dann aber den Baum (vor lauter Wald drum rum) nicht erkannt…ich lass das
> mal wirken bin mir aber nicht sicher ob ich das so einfach hinkriege….
>
> Portstatus nach Binär umwandeln (ohne printf?) dann ausparsen (wie auch immer)
> müsste eigentlich klappen….mal sehen...ich berichte
>
> Am Mittwoch, 8. August 2012 12:00:32 UTC+2 schrieb JoWiemann:
>>
>> Hallo Armin,
>>  
>> vielleicht hilft dir das:
>> http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
>>  weiter.
>>  
>> Grüße
>>  
>> Jörg
>>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Offline ArminK

  • Jr. Member
  • **
  • Beiträge: 99
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #4 am: 02 November 2012, 17:23:58 »
                                                           

Hallo Jörg,

habe es (wenn auch sicher sehr umständlich, hoffentlich schlägt mich
niemend) hinbekommen und zwar so:

Meine contacts.classdef:

get ip01 cmd {"io set ddr 0 F0\nio get pin 0"}
get ip01 postproc {\
my $retval = "closed";\
my $ipwert=substr($_, 13, 2);\
   $ipwert = hex($ipwert) & 0x01;\
$retval = "open" if ($ipwert > 0);\
 \
 $retval;\
 }

get ip02 cmd {"io set ddr 0 F0\nio get pin 0"}
get ip02 postproc {\
my $retval = "closed";\
my $ipwert2=substr($_, 13, 2);\
   $ipwert2 = hex($ipwert2) & 0x02;\
$retval = "open" if ($ipwert2 > 0);\
 \
 $retval;\
 }
get ip03 cmd {"io set ddr 0 F0\nio get pin 0"}
get ip03 postproc {\
my $retval = "closed";\
my $ipwert3=substr($_, 13, 2);\
   $ipwert3 = hex($ipwert3) & 0x04;\
$retval = "open" if ($ipwert3 > 0);\
 \
 $retval;\
 }
get ip04 cmd {"io set ddr 0 F0\nio get pin 0"}
get ip04 postproc {\
my $retval = "closed";\
my $ipwert4=substr($_, 13, 2);\
   $ipwert4 = hex($ipwert4) & 0x08;\
$retval = "open" if ($ipwert4 > 0);\
 \
 $retval;\
 }

Die Definition dazu in der fhem.cfg:

define NETIO_01 ECMD telnet 192.168.1.111:2701
attr NETIO_01 classdefs
RELAIS=/usr/share/fhem/FHEM/relais.classdef:CONTACT=/usr/share/fhem/FHEM/contacts.classdef
attr NETIO_01 room hidden

Dann am Beispiel einer Tür, deren Reedkontakt an Eingang 1 angeschlossen
ist:

define k_tuer1 ECMDDevice CONTACT
attr k_tuer1 room Haus

dazu ein Status-Dummy:

define k_tuer1_stat dummy
attr k_tuer1_stat loglevel 6
attr k_tuer1_stat room hidden


das notify ist zweigeteilt, damit nur auf Statusänderungen reagiert wird:
Teil 1:
define act_on_k_tuer1 notify k_tuer1 {\
 if ("%" eq "ip01: closed") {\
   fhem("set k_tuer1_stat off")\
   }\
   else {\
   fhem("set k_tuer1_stat on")\
 }\
}
Teil2:
define act_k_tuer1_stat notify k_tuer1_stat {\
 if ("%" eq "on") {\
    if ($value{sa_7} eq "off") {\
               fhem("set sa_7 on")\
        }\
   }\
   else {\
    if ($value{sa_7} eq "on") {\
               fhem("set sa_7 off")\
        }\
 }\
}

sa_7 ist bei mir ein Kanal eines FS20 S8M, an den eine LED angeschlossen
ist. Steht die Tür länger als 2 Minuten auf, geht sie an.

Damit die Eingänge auch alle zwei Minuten gelesen werden ist noch folgender
Eintrag in die fhem.cfg notwendig:

define k_tuer1_check at +*00:02:00 get k_tuer1 ip01
attr k_tuer1_check loglevel 6

Hatte noch keine Zeit dies zu verbessern und zu dokumentieren, deshalb
bislang auch noch keine Info dazu. Ich hoffe das hilft Dir, falls Du noch
Fragen hast, einfach melden!

Grüße aus Heidelberg
Armin


Am Freitag, 2. November 2012 15:27:35 UTC+1 schrieb Totte1210:
>
> Hallo Armin,
>
> ich habe ähnliches vor wie du.
> Kannst du deine classdef für die Abfrage der Eingänge und deine
> Definitionen aus der fhem.cfg posten?
>
> beste Grüße
>
> Thorsten
>
> Am Mittwoch, 8. August 2012 13:33:03 UTC+2 schrieb Armink:
>>
>> Hallo Jörg,
>>
>>  vielen Dank für den Tipp, bin ich auch schon einmal drüber gestolpert
>> hab dann aber den Baum (vor lauter Wald drum rum) nicht erkannt…ich lass
>> das mal wirken bin mir aber nicht sicher ob ich das so einfach hinkriege….
>>
>> Portstatus nach Binär umwandeln (ohne printf?) dann ausparsen (wie auch immer)
>> müsste eigentlich klappen….mal sehen...ich berichte
>>
>> Am Mittwoch, 8. August 2012 12:00:32 UTC+2 schrieb JoWiemann:
>>>
>>> Hallo Armin,
>>>  
>>> vielleicht hilft dir das:
>>> http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
>>>  weiter.
>>>  
>>> Grüße
>>>  
>>> Jörg
>>>
>>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

Guest

  • Gast
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #5 am: 02 November 2012, 20:33:41 »
Originally posted by: <email address deleted>

Danke. Ich werde das auch mal testen!

beste Grüße

Thorsten

Am Freitag, 2. November 2012 17:23:58 UTC+1 schrieb Armink:
>
> Hallo Jörg,
>
> habe es (wenn auch sicher sehr umständlich, hoffentlich schlägt mich
> niemend) hinbekommen und zwar so:
>
> Meine contacts.classdef:
>
> get ip01 cmd {"io set ddr 0 F0\nio get pin 0"}
> get ip01 postproc {\
> my $retval = "closed";\
> my $ipwert=substr($_, 13, 2);\
>    $ipwert = hex($ipwert) & 0x01;\
> $retval = "open" if ($ipwert > 0);\
>  \
>  $retval;\
>  }
>
> get ip02 cmd {"io set ddr 0 F0\nio get pin 0"}
> get ip02 postproc {\
> my $retval = "closed";\
> my $ipwert2=substr($_, 13, 2);\
>    $ipwert2 = hex($ipwert2) & 0x02;\
> $retval = "open" if ($ipwert2 > 0);\
>  \
>  $retval;\
>  }
> get ip03 cmd {"io set ddr 0 F0\nio get pin 0"}
> get ip03 postproc {\
> my $retval = "closed";\
> my $ipwert3=substr($_, 13, 2);\
>    $ipwert3 = hex($ipwert3) & 0x04;\
> $retval = "open" if ($ipwert3 > 0);\
>  \
>  $retval;\
>  }
> get ip04 cmd {"io set ddr 0 F0\nio get pin 0"}
> get ip04 postproc {\
> my $retval = "closed";\
> my $ipwert4=substr($_, 13, 2);\
>    $ipwert4 = hex($ipwert4) & 0x08;\
> $retval = "open" if ($ipwert4 > 0);\
>  \
>  $retval;\
>  }
>
> Die Definition dazu in der fhem.cfg:
>
> define NETIO_01 ECMD telnet 192.168.1.111:2701
> attr NETIO_01 classdefs
> RELAIS=/usr/share/fhem/FHEM/relais.classdef:CONTACT=/usr/share/fhem/FHEM/contacts.classdef
> attr NETIO_01 room hidden
>
> Dann am Beispiel einer Tür, deren Reedkontakt an Eingang 1 angeschlossen
> ist:
>
> define k_tuer1 ECMDDevice CONTACT
> attr k_tuer1 room Haus
>
> dazu ein Status-Dummy:
>
> define k_tuer1_stat dummy
> attr k_tuer1_stat loglevel 6
> attr k_tuer1_stat room hidden
>
>
> das notify ist zweigeteilt, damit nur auf Statusänderungen reagiert wird:
> Teil 1:
> define act_on_k_tuer1 notify k_tuer1 {\
>  if ("%" eq "ip01: closed") {\
>    fhem("set k_tuer1_stat off")\
>    }\
>    else {\
>    fhem("set k_tuer1_stat on")\
>  }\
> }
> Teil2:
> define act_k_tuer1_stat notify k_tuer1_stat {\
>  if ("%" eq "on") {\
>     if ($value{sa_7} eq "off") {\
>                fhem("set sa_7 on")\
>         }\
>    }\
>    else {\
>     if ($value{sa_7} eq "on") {\
>                fhem("set sa_7 off")\
>         }\
>  }\
> }
>
> sa_7 ist bei mir ein Kanal eines FS20 S8M, an den eine LED angeschlossen
> ist. Steht die Tür länger als 2 Minuten auf, geht sie an.
>
> Damit die Eingänge auch alle zwei Minuten gelesen werden ist noch
> folgender Eintrag in die fhem.cfg notwendig:
>
> define k_tuer1_check at +*00:02:00 get k_tuer1 ip01
> attr k_tuer1_check loglevel 6
>
> Hatte noch keine Zeit dies zu verbessern und zu dokumentieren, deshalb
> bislang auch noch keine Info dazu. Ich hoffe das hilft Dir, falls Du noch
> Fragen hast, einfach melden!
>
> Grüße aus Heidelberg
> Armin
>
>
> Am Freitag, 2. November 2012 15:27:35 UTC+1 schrieb Totte1210:
>>
>> Hallo Armin,
>>
>> ich habe ähnliches vor wie du.
>> Kannst du deine classdef für die Abfrage der Eingänge und deine
>> Definitionen aus der fhem.cfg posten?
>>
>> beste Grüße
>>
>> Thorsten
>>
>> Am Mittwoch, 8. August 2012 13:33:03 UTC+2 schrieb Armink:
>>>
>>> Hallo Jörg,
>>>
>>>  vielen Dank für den Tipp, bin ich auch schon einmal drüber gestolpert
>>> hab dann aber den Baum (vor lauter Wald drum rum) nicht erkannt…ich lass
>>> das mal wirken bin mir aber nicht sicher ob ich das so einfach hinkriege….
>>>
>>> Portstatus nach Binär umwandeln (ohne printf?) dann ausparsen (wie auch immer)
>>> müsste eigentlich klappen….mal sehen...ich berichte
>>>
>>> Am Mittwoch, 8. August 2012 12:00:32 UTC+2 schrieb JoWiemann:
>>>>
>>>> Hallo Armin,
>>>>  
>>>> vielleicht hilft dir das:
>>>> http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
>>>>  weiter.
>>>>  
>>>> Grüße
>>>>  
>>>> Jörg
>>>>
>>>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

  • Gast
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #6 am: 03 November 2012, 16:16:03 »
Originally posted by: <email address deleted>

Läuft ohne Probleme!

Am Freitag, 2. November 2012 20:33:41 UTC+1 schrieb Totte1210:
>
> Danke. Ich werde das auch mal testen!
>
> beste Grüße
>
> Thorsten
>
> Am Freitag, 2. November 2012 17:23:58 UTC+1 schrieb Armink:
>>
>> Hallo Jörg,
>>
>> habe es (wenn auch sicher sehr umständlich, hoffentlich schlägt mich
>> niemend) hinbekommen und zwar so:
>>
>> Meine contacts.classdef:
>>
>> get ip01 cmd {"io set ddr 0 F0\nio get pin 0"}
>> get ip01 postproc {\
>> my $retval = "closed";\
>> my $ipwert=substr($_, 13, 2);\
>>    $ipwert = hex($ipwert) & 0x01;\
>> $retval = "open" if ($ipwert > 0);\
>>  \
>>  $retval;\
>>  }
>>
>> get ip02 cmd {"io set ddr 0 F0\nio get pin 0"}
>> get ip02 postproc {\
>> my $retval = "closed";\
>> my $ipwert2=substr($_, 13, 2);\
>>    $ipwert2 = hex($ipwert2) & 0x02;\
>> $retval = "open" if ($ipwert2 > 0);\
>>  \
>>  $retval;\
>>  }
>> get ip03 cmd {"io set ddr 0 F0\nio get pin 0"}
>> get ip03 postproc {\
>> my $retval = "closed";\
>> my $ipwert3=substr($_, 13, 2);\
>>    $ipwert3 = hex($ipwert3) & 0x04;\
>> $retval = "open" if ($ipwert3 > 0);\
>>  \
>>  $retval;\
>>  }
>> get ip04 cmd {"io set ddr 0 F0\nio get pin 0"}
>> get ip04 postproc {\
>> my $retval = "closed";\
>> my $ipwert4=substr($_, 13, 2);\
>>    $ipwert4 = hex($ipwert4) & 0x08;\
>> $retval = "open" if ($ipwert4 > 0);\
>>  \
>>  $retval;\
>>  }
>>
>> Die Definition dazu in der fhem.cfg:
>>
>> define NETIO_01 ECMD telnet 192.168.1.111:2701
>> attr NETIO_01 classdefs
>> RELAIS=/usr/share/fhem/FHEM/relais.classdef:CONTACT=/usr/share/fhem/FHEM/contacts.classdef
>> attr NETIO_01 room hidden
>>
>> Dann am Beispiel einer Tür, deren Reedkontakt an Eingang 1 angeschlossen
>> ist:
>>
>> define k_tuer1 ECMDDevice CONTACT
>> attr k_tuer1 room Haus
>>
>> dazu ein Status-Dummy:
>>
>> define k_tuer1_stat dummy
>> attr k_tuer1_stat loglevel 6
>> attr k_tuer1_stat room hidden
>>
>>
>> das notify ist zweigeteilt, damit nur auf Statusänderungen reagiert wird:
>> Teil 1:
>> define act_on_k_tuer1 notify k_tuer1 {\
>>  if ("%" eq "ip01: closed") {\
>>    fhem("set k_tuer1_stat off")\
>>    }\
>>    else {\
>>    fhem("set k_tuer1_stat on")\
>>  }\
>> }
>> Teil2:
>> define act_k_tuer1_stat notify k_tuer1_stat {\
>>  if ("%" eq "on") {\
>>     if ($value{sa_7} eq "off") {\
>>                fhem("set sa_7 on")\
>>         }\
>>    }\
>>    else {\
>>     if ($value{sa_7} eq "on") {\
>>                fhem("set sa_7 off")\
>>         }\
>>  }\
>> }
>>
>> sa_7 ist bei mir ein Kanal eines FS20 S8M, an den eine LED angeschlossen
>> ist. Steht die Tür länger als 2 Minuten auf, geht sie an.
>>
>> Damit die Eingänge auch alle zwei Minuten gelesen werden ist noch
>> folgender Eintrag in die fhem.cfg notwendig:
>>
>> define k_tuer1_check at +*00:02:00 get k_tuer1 ip01
>> attr k_tuer1_check loglevel 6
>>
>> Hatte noch keine Zeit dies zu verbessern und zu dokumentieren, deshalb
>> bislang auch noch keine Info dazu. Ich hoffe das hilft Dir, falls Du noch
>> Fragen hast, einfach melden!
>>
>> Grüße aus Heidelberg
>> Armin
>>
>>
>> Am Freitag, 2. November 2012 15:27:35 UTC+1 schrieb Totte1210:
>>>
>>> Hallo Armin,
>>>
>>> ich habe ähnliches vor wie du.
>>> Kannst du deine classdef für die Abfrage der Eingänge und deine
>>> Definitionen aus der fhem.cfg posten?
>>>
>>> beste Grüße
>>>
>>> Thorsten
>>>
>>> Am Mittwoch, 8. August 2012 13:33:03 UTC+2 schrieb Armink:
>>>>
>>>> Hallo Jörg,
>>>>
>>>>  vielen Dank für den Tipp, bin ich auch schon einmal drüber gestolpert
>>>> hab dann aber den Baum (vor lauter Wald drum rum) nicht erkannt…ich lass
>>>> das mal wirken bin mir aber nicht sicher ob ich das so einfach hinkriege….
>>>>
>>>> Portstatus nach Binär umwandeln (ohne printf?) dann ausparsen (wie auch immer)
>>>> müsste eigentlich klappen….mal sehen...ich berichte
>>>>
>>>> Am Mittwoch, 8. August 2012 12:00:32 UTC+2 schrieb JoWiemann:
>>>>>
>>>>> Hallo Armin,
>>>>>  
>>>>> vielleicht hilft dir das:
>>>>> http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
>>>>>  weiter.
>>>>>  
>>>>> Grüße
>>>>>  
>>>>> Jörg
>>>>>
>>>>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Offline ArminK

  • Jr. Member
  • **
  • Beiträge: 99
Re: AVR NET-IO mit Relaiskarte K8IO Eingänge lesen
« Antwort #7 am: 07 November 2012, 14:15:27 »
                                                           

Na prima! Freut mich! Falls einer der Profis hier auch mal Eingänge über
das NETIO lesen möchte, können wir darauf hoffen das das Ganze noch ein
bisschen vereinfacht oder aufgehübscht wird....

Gruss
Armin

Am Samstag, 3. November 2012 16:16:03 UTC+1 schrieb Totte1210:
>
> Läuft ohne Probleme!
>
> Am Freitag, 2. November 2012 20:33:41 UTC+1 schrieb Totte1210:
>>
>> Danke. Ich werde das auch mal testen!
>>
>> beste Grüße
>>
>> Thorsten
>>
>> Am Freitag, 2. November 2012 17:23:58 UTC+1 schrieb Armink:
>>>
>>> Hallo Jörg,
>>>
>>> habe es (wenn auch sicher sehr umständlich, hoffentlich schlägt mich
>>> niemend) hinbekommen und zwar so:
>>>
>>> Meine contacts.classdef:
>>>
>>> get ip01 cmd {"io set ddr 0 F0\nio get pin 0"}
>>> get ip01 postproc {\
>>> my $retval = "closed";\
>>> my $ipwert=substr($_, 13, 2);\
>>>    $ipwert = hex($ipwert) & 0x01;\
>>> $retval = "open" if ($ipwert > 0);\
>>>  \
>>>  $retval;\
>>>  }
>>>
>>> get ip02 cmd {"io set ddr 0 F0\nio get pin 0"}
>>> get ip02 postproc {\
>>> my $retval = "closed";\
>>> my $ipwert2=substr($_, 13, 2);\
>>>    $ipwert2 = hex($ipwert2) & 0x02;\
>>> $retval = "open" if ($ipwert2 > 0);\
>>>  \
>>>  $retval;\
>>>  }
>>> get ip03 cmd {"io set ddr 0 F0\nio get pin 0"}
>>> get ip03 postproc {\
>>> my $retval = "closed";\
>>> my $ipwert3=substr($_, 13, 2);\
>>>    $ipwert3 = hex($ipwert3) & 0x04;\
>>> $retval = "open" if ($ipwert3 > 0);\
>>>  \
>>>  $retval;\
>>>  }
>>> get ip04 cmd {"io set ddr 0 F0\nio get pin 0"}
>>> get ip04 postproc {\
>>> my $retval = "closed";\
>>> my $ipwert4=substr($_, 13, 2);\
>>>    $ipwert4 = hex($ipwert4) & 0x08;\
>>> $retval = "open" if ($ipwert4 > 0);\
>>>  \
>>>  $retval;\
>>>  }
>>>
>>> Die Definition dazu in der fhem.cfg:
>>>
>>> define NETIO_01 ECMD telnet 192.168.1.111:2701
>>> attr NETIO_01 classdefs
>>> RELAIS=/usr/share/fhem/FHEM/relais.classdef:CONTACT=/usr/share/fhem/FHEM/contacts.classdef
>>> attr NETIO_01 room hidden
>>>
>>> Dann am Beispiel einer Tür, deren Reedkontakt an Eingang 1 angeschlossen
>>> ist:
>>>
>>> define k_tuer1 ECMDDevice CONTACT
>>> attr k_tuer1 room Haus
>>>
>>> dazu ein Status-Dummy:
>>>
>>> define k_tuer1_stat dummy
>>> attr k_tuer1_stat loglevel 6
>>> attr k_tuer1_stat room hidden
>>>
>>>
>>> das notify ist zweigeteilt, damit nur auf Statusänderungen reagiert wird:
>>> Teil 1:
>>> define act_on_k_tuer1 notify k_tuer1 {\
>>>  if ("%" eq "ip01: closed") {\
>>>    fhem("set k_tuer1_stat off")\
>>>    }\
>>>    else {\
>>>    fhem("set k_tuer1_stat on")\
>>>  }\
>>> }
>>> Teil2:
>>> define act_k_tuer1_stat notify k_tuer1_stat {\
>>>  if ("%" eq "on") {\
>>>     if ($value{sa_7} eq "off") {\
>>>                fhem("set sa_7 on")\
>>>         }\
>>>    }\
>>>    else {\
>>>     if ($value{sa_7} eq "on") {\
>>>                fhem("set sa_7 off")\
>>>         }\
>>>  }\
>>> }
>>>
>>> sa_7 ist bei mir ein Kanal eines FS20 S8M, an den eine LED angeschlossen
>>> ist. Steht die Tür länger als 2 Minuten auf, geht sie an.
>>>
>>> Damit die Eingänge auch alle zwei Minuten gelesen werden ist noch
>>> folgender Eintrag in die fhem.cfg notwendig:
>>>
>>> define k_tuer1_check at +*00:02:00 get k_tuer1 ip01
>>> attr k_tuer1_check loglevel 6
>>>
>>> Hatte noch keine Zeit dies zu verbessern und zu dokumentieren, deshalb
>>> bislang auch noch keine Info dazu. Ich hoffe das hilft Dir, falls Du noch
>>> Fragen hast, einfach melden!
>>>
>>> Grüße aus Heidelberg
>>> Armin
>>>
>>>
>>> Am Freitag, 2. November 2012 15:27:35 UTC+1 schrieb Totte1210:
>>>>
>>>> Hallo Armin,
>>>>
>>>> ich habe ähnliches vor wie du.
>>>> Kannst du deine classdef für die Abfrage der Eingänge und deine
>>>> Definitionen aus der fhem.cfg posten?
>>>>
>>>> beste Grüße
>>>>
>>>> Thorsten
>>>>
>>>> Am Mittwoch, 8. August 2012 13:33:03 UTC+2 schrieb Armink:
>>>>>
>>>>> Hallo Jörg,
>>>>>
>>>>>  vielen Dank für den Tipp, bin ich auch schon einmal drüber gestolpert
>>>>> hab dann aber den Baum (vor lauter Wald drum rum) nicht erkannt…ich lass
>>>>> das mal wirken bin mir aber nicht sicher ob ich das so einfach hinkriege….
>>>>>
>>>>> Portstatus nach Binär umwandeln (ohne printf?) dann ausparsen (wie
>>>>> auch immer) müsste eigentlich klappen….mal sehen...ich berichte
>>>>>
>>>>> Am Mittwoch, 8. August 2012 12:00:32 UTC+2 schrieb JoWiemann:
>>>>>>
>>>>>> Hallo Armin,
>>>>>>  
>>>>>> vielleicht hilft dir das:
>>>>>> http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/
>>>>>>  weiter.
>>>>>>  
>>>>>> Grüße
>>>>>>  
>>>>>> Jörg
>>>>>>
>>>>>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors