FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ext23 am 10 Juli 2013, 10:43:44

Titel: Ich bräuchte mal Hilfe in sachen Perl...
Beitrag von: ext23 am 10 Juli 2013, 10:43:44
Guten Morgen,

kann mir hier bitte jemand helfen. Ich habe am AVR-NET-IO ein Feuchtigkeitssensor am digitalen Eingang. Abfragen kann ich diesen Port und ich bekomme ein "port 0: 0x80" oder "port 0: 0x81" zurück je nach Zustand am Bit 0 (PA0).

Wie bekomme ich das jetzt in die Postproc der classdef Datei so verpackt, dass ich am Ende eine 1 oder 0 zurück bekomme, bzw ein Voll oder Leer? Die Kontrolle sollte aber nur auf das niederwertigste Bit erfolgen da ich bei Verwendung der anderen Eingänge natürlich auch komplett andere Hex Rückgaben erhalte.

/Daniel
Titel: Aw: Ich bräuchte mal Hilfe in sachen Perl...
Beitrag von: ext23 am 12 Juli 2013, 21:20:14
Da ja leider keine Reaktionen kamen, habe ich das dank albundy118 mittlerweile hinbekommen, schaut dann so aus:

params IOPort IOPin

get status cmd {"io get pin %IOPort"}
get status postproc {\
 my @@fullport = split(/ /,trim($_));\
 my @@hexport = split(/x/,$fullport[2]);\
 my $binport = sprintf( "%%b", hex( $hexport[1] ) );\
 my $binlength = length($binport);\
 while ($binlength < 8){\
  $binport = "0".$binport;\
  $binlength = length($binport);\
 }\
 my @@pinarray = split('',$binport);\
 my %%hash = (\
  1 => '7',\
  2 => '6',\
  3 => '5',\
  4 => '4',\
  5 => '3',\
  6 => '2',\
  7 => '1',\
  8 => '0',\
 );\
 my $pinvalue = $pinarray[$hash{%IOPin}];\
 $pinvalue;\
}


Gruß
Daniel