Hallo,
ich bräuchte mal wieder einen Rat, könnte jemand der sich mit perl auskennt und nicht nur wie ich per copy/paste arbeitet da mal drüber schauen.
Zum Thema, ich habe mit mit Rak zusammen ein "Szenen" Scipt sprich "button" entworfen, also ich habe es gefordert
, er hat es geschrieben
, wenn ich jetzt die interne MH GA "clicke" führt er auch das Scipt aus, allerdings durchläuft er dieses oder meine pl zeile zweimal! 
Hintergrund der ganzen Sache ist das mich das bei einem Szenenaufruf ja nicht stören würde, aber wenn ich den IR-Sender damit anfahre um meine Anlage zu steuern bedeutet dieses das es gleich zweimal lauter oder zwei Sender weiter geschaltet wird.
Ich hänge mal das entsprechende Script sowie meine .pl und Screenshoots an, wobei die im HTML eingebunden Grafiken nicht mehr per SzenenItem angesprochen werden sonder direkt im HTML code die "push" buttons von mh schon:
Vielen Dank schonmal für Hilfe.
Christoph
ich bräuchte mal wieder einen Rat, könnte jemand der sich mit perl auskennt und nicht nur wie ich per copy/paste arbeitet da mal drüber schauen.
Zum Thema, ich habe mit mit Rak zusammen ein "Szenen" Scipt sprich "button" entworfen, also ich habe es gefordert



Hintergrund der ganzen Sache ist das mich das bei einem Szenenaufruf ja nicht stören würde, aber wenn ich den IR-Sender damit anfahre um meine Anlage zu steuern bedeutet dieses das es gleich zweimal lauter oder zwei Sender weiter geschaltet wird.
Ich hänge mal das entsprechende Script sowie meine .pl und Screenshoots an, wobei die im HTML eingebunden Grafiken nicht mehr per SzenenItem angesprochen werden sonder direkt im HTML code die "push" buttons von mh schon:
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:
#Szenen definitionen in Misterhouse tie_event $Wasserbedienung 'if ($state eq ON) {set $Wasserbedienung OFF; set $Wasser ON}'; 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}'; tie_event $Test 'if ($state eq ON) {set $Test OFF; set $Arbeitszimmer ON; set $Kueche_wert 150; set $Essen_Rollladen 150}'; tie_event $Pioneer_Taster 'if ($state eq ON) {set $Pioneer_Taster OFF; set $AnlagePioneer_S ON}'; tie_event $Pioneer_lauter 'if ($state eq ON) {set $Pioneer_lauter OFF; set $AnlagePioneer_laut ON}'; tie_event $Pioneer_leiser 'if ($state eq ON) {set $Pioneer_leiser OFF; set $AnlagePioneer_leise ON}'; tie_event $Pioneer_Aux 'if ($state eq ON) {set $Pioneer_Aux OFF; set $AnlagePioneer_mAux ON}'; tie_event $Pioneer_Radio 'if ($state eq ON) {set $Pioneer_leiser OFF; set $AnlagePioneer_R ON}'; tie_event $Pioneer_Sender 'if ($state eq ON) {set $Pioneer_Sender OFF; set $AnlagePioneer_Sender ON}'; tie_event $Pioneer_Aux 'if ($state eq ON) {set $Pioneer_Aux OFF; set $AnlagePioneer_mAux ON}'; tie_event $Pioneer_Radio 'if ($state eq ON) {set $Pioneer_leiser OFF; set $AnlagePioneer_R ON}'; tie_event $Fernseher_schalten 'if ($state eq ON) {set $Fernseher_schalten OFF; set $Grundig_ein ON}'; tie_event $Fernseher_1 'if ($state eq ON) {set $Fernseher_1 OFF; set $ard ON}'; tie_event $Fernseher_2 'if ($state eq ON) {set $Fernseher_2 OFF; set $zdf ON}'; tie_event $Fernseher_3 'if ($state eq ON) {set $Fernseher_3 OFF; set $wdr ON}'; tie_event $Fernseher_4 'if ($state eq ON) {set $Fernseher_4 OFF; set $rtl ON}'; tie_event $Fernseher_5 'if ($state eq ON) {set $Fernseher_5 OFF; set $sat1 ON}'; tie_event $Fernseher_6 'if ($state eq ON) {set $Fernseher_6 OFF; set $kika ON}'; tie_event $Fernseher_7 'if ($state eq ON) {set $Fernseher_7 OFF; set $pro7 ON}';
Christoph
Kommentar