Entschuldige bitte meine blöde Frage, aber dann müsste es doch theoretisch möglich sein aus den beiden bit-Objekten jeweils ein Byte zu machen.
Hintergrund meiner Annahme ist das Ralf mir mal ein Szenen-Sript aus dem EIB6 geschrieben hat und dieses bei mir unter eib6_1 hinterlegt ist welches weiderum dem Objekt EIBSZ zugeordnet ist um Byte werte per Button für Szenenaufrufe zu verwenden.
EIB61_Item:
eib61_test.pl
szenen.pl
oder liege ich da komplett falsch?
Also wenn ich diese Objekt benutze könnte ich damit definierte Byte Werte an die KONNEX GA´s zum Betriebsmodi senden.
Danke
Christoph
Hintergrund meiner Annahme ist das Ralf mir mal ein Szenen-Sript aus dem EIB6 geschrieben hat und dieses bei mir unter eib6_1 hinterlegt ist welches weiderum dem Objekt EIBSZ zugeordnet ist um Byte werte per Button für Szenenaufrufe zu verwenden.
EIB61_Item:
Code:
# EIB61_Item: "scaling". Relative values 0-255 with 8 bit resolution package EIB61_Item; @EIB61_Item::ISA = ('EIB_Item'); sub eis_type { return '6.1'; } sub decode { my ($self, @data) = @_; my $res; unless ($#data == 1) { &main::print_log("Not EIS type 6.1 data received for $self->{groupaddr}: \[@data\]") if $main::config_parms{eib_errata} >= 2; return; } $res = sprintf("%.0f", $data[1] ); return $res; } sub encode { my ($self, $state) = @_; my $newval; if ($state =~ /^(\d+)$/) { $newval = $1; } elsif ($state =~ /^\+(\d+)$/) { $newval = $self->{state} + $1; $newval = 255 if ($newval > 255 ); } elsif ($state =~ /^\-(\d+)$/) { if ($self->{state} < $1) { $newval = 0; } else { $newval = $self->{state} - $1; } } elsif ($state =~ /^(\d+)\%$/) { $newval = $1; } else { print "Invalid state for EIS type 6: \'$state\'\n"; return; } my $byte = sprintf ("%.0f", $newval ); return([0, int $byte]); } # set receive -- detected a "read" or "write" message on the bus. For # readable actuators, don't trust the values in "write" messages, as # they may not have been accepted by the actuator. So if it is a # write, and the actuator is readable, generate a read request to # obtain the actual value from the actuator sub set_receive { my ($self, $state, $set_by, $target, $read) = @_; if (!$read && $self->{readable}) { $self->delayed_read_request(); } else { $self->SUPER::set_receive($state, $set_by, $target); } }
Code:
# noloop=start use EIB61_Item; # noloop=stop # GA anpassen! $Szeneneingang = new EIB61_Item('0/5/23'); $SzeneneingangTS2_ohnekinder = new EIB61_Item('0/5/20');
Code:
#Szenen definitionen in Misterhouse tie_event $TV 'if ($state eq ON) {set $TV OFF; set $Szeneneingang 2}'; tie_event $Schlafen 'if ($state eq ON) {set $Schlafen OFF; set $SzeneneingangTS2_ohnekinder 1}'; tie_event $Nachtruhe 'if ($state eq ON) {set $Nachtruhe OFF; set $SzeneneingangTS2_ohnekinder 0}';
Also wenn ich diese Objekt benutze könnte ich damit definierte Byte Werte an die KONNEX GA´s zum Betriebsmodi senden.
Danke
Christoph
Kommentar