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