Hallo,

habe mal 4Byte float EIS9 für Misterhouse geschrieben. 2Byte hatte mir doch zuviele Rundungsfehler bei größeren Werten.

Hier der code für die Eib_Items.pm

Code:
# EIB9_Item: 32-bit float

package EIB9_Item;

@EIB9_Item::ISA = ('EIB_Item');

sub eis_type {
    return '9';
}

sub decode {
    my ($self, @data) = @_;
    my $res;

    unless ($#data == 4) {
        &main::print_log("Not EIS type 9 data received for $self->{groupaddr}: \[@data\]") if $main::config_parms{eib_errata} >= 2;
        return;
    }
    my $res = unpack "f", pack "L", (($data[1] << 24 ) | ($data[2] << 16 ) | ($data[3] << 8 ) | $data[4]);
    
#    &main::print_log("EIS9 for $self->{groupaddr}: >$res<");
    return $res;
}

sub encode {
    my ($self, $state) = @_;
    my $res;
    $res = unpack "L", pack "f", $state;
    #&main::print_log("Res: $res State: $state \n");
    return([0, ($res & 0xff000000) >> 24, ($res & 0xff0000) >> 16, ($res & 0xff00) >> 8, $res & 0xff]);
}
Gruß

Martin