
hätte ich dich besser mal sie SuFu benutzt bevor ich das Plugin zusammengefrickelt hab.
Dankeschön!! Und Gruß
gesendet ohne Tapatalk aber mit dem Telefon

Funktioniert bei einigen meiner Plugins seit jahren problemlos
Wurde vor langer Zeit mal von makki als "Funktionsvorlage" geschrieben und kommt in allen Plugins mit Soket die von mir kommen zur Anwendung.
my $socknum = 118; # Eindeutige Nummer des Sockets +1
#Diese Einstellungen können normalerweise so belassen werden!
my $send_ip = "localhost"; # Sendeport (UDP, siehe in Socket-Einstellungen)
my $send_port = "50106"; # Sendeport (UDP, siehe in Socket-Einstellungen)
my $recv_ip = "localhost"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
my $recv_port = "50105"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
if (!$socket[$socknum]) { # socket erstellen
$socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
Proto => "udp",
LocalAddr => $recv_ip,
PeerPort => $send_port,
PeerAddr => $send_ip,
ReuseAddr => 1
)
or return ("open of $recv_ip : $recv_port failed: $!");
$socksel->add($socket[$socknum]); # add socket to select
$plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
return "opened Socket $socknum";
}
syswrite($socket[$socknum], $command);
...
} elsif ($fh) {
... code der beim erhalt eines IP Telegramm abgearbeitet werden soll.
}
#### Plugin für Radio mit Hilfe des Onkyo 414 #####
#### Vorraussetzung iscp ####
## TODO:
# Wenn Fernseher an nicht aus sondern umschalten
# Stati abfragen
# Firstboot
##### Radio on/off ###
my $Radio_GA = '13/1/40';
######################
#### Fernsehen Status ####
my $Fernsehen = '13/1/39';
##########################
#### Amp Status GA ######
my $onkyo = '13/1/31';
#########################
##### outputs ############
my $FM = '13/1/36';
my $Sat = '13/1/37';
my $Video = '13/1/38';
my $Game;
##########################
#### Zone2 Outputs ###
my $Z2FM = '13/1/41';
##### receive Volume #####
my $onkyo_volume = '13/1/33'; #DPT 5.001
my $faktor = 80/100;
##########################
##### Volume step up/down ######
my $onkyo_vol_up_down= '13/1/34';
my $vol_up_data = "01";
my $vol_down_data = "09";
################################
### 2nd Amp ###
my $verstaerker = '13/1/2';
########################
###### firstboot ############
my $start_volume = "19";
my $fernseher_start_volume = "22";
#############################
#### Bad Radio####
my $Bad_Radio = '13/1/9';
my $Bad_Volume = '13/1/44';
my $Bad_Status;
#### Kueche Radio ####
my $Kueche_Radio = '13/1/0';
my $Kueche_Volume = '13/1/43';
## definition für iscp, Onkyo Receiver
my $Port = "60128";
my $IP = "192.168.178.68";
my $folder = "/home/onkyo-iscp/./onkyo-iscp";
my $iscp_folder = "/home/onkyo-iscp/./onkyo-iscp 192.168.178.68";
# /home/onkyo-iscp/./onkyo-iscp 192.168.178.68
$plugin_subscribe{$Radio_GA}{$plugname}=1;
$plugin_subscribe{$onkyo_volume}{$plugname}=1;
$plugin_subscribe{$onkyo_vol_up_down}{$plugname}=1;
$plugin_subscribe{$FM}{$plugname}=1;
$plugin_subscribe{$Sat}{$plugname}=1;
$plugin_subscribe{$Video}{$plugname}=1;
$plugin_subscribe{$Fernsehen}{$plugname}=1;
$plugin_subscribe{$Z2FM}{$plugname}=1;
$plugin_subscribe{$Kueche_Radio}{$plugname}=1;
$plugin_subscribe{$Bad_Radio}{$plugname}=1;
$plugin_info{$plugname.'_cycle'} = 0;
my %commandlist = ("power", "PW",
"volume_main", "MVL",
"volume_down", "MVLDOWN",
"volume_up", "MVLUP",
"main_selector", "SLI",
"zone2", "ZPW",
"z2_selector", "SLZ",
"z2_vol", "ZVL",
"audio_selector", "LMD",
);
my %sources = (
"VIDEO", "10",
"SAT", "01",
"GAME", "02",
"FM", "24",
"PC", "05",
);
my %audio_mode = {
"stereo", "00",
"all_channel", "0C",
"studio_mix", "0A",
"pl2_movie", "80",
};
##### set Source ##############################
if (($msg{'dst'} eq ($FM)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $cmd = "$commandlist{'main_selector'}$sources{'FM'}";
command_exec($cmd);}}
if (($msg{'dst'} eq ($Sat)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $cmd = "$commandlist{'main_selector'}$sources{'SAT'}";
command_exec($cmd);}}
if (($msg{'dst'} eq ($Video)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $cmd = "$commandlist{'main_selector'}$sources{'VIDEO'}";
command_exec($cmd);}}
if (($msg{'dst'} eq ($Game)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $cmd = "$commandlist{'main_selector'}$sources{'GAME'}";
command_exec($cmd);}}
if (($msg{'dst'} eq ($Z2FM)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $cmd = "$commandlist{'z2_selector'}$sources{'FM'}";
command_exec($cmd);}}
#plugin_log($plugname, $cmd);}}
################################################
####### Volume step #################
if (($msg{'dst'} eq ($onkyo_vol_up_down)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{
if ($msg{'data'} eq $vol_up_data) {
my $cmd = "$commandlist{'volume_main'}$commandlist{'volume_up'}";
command_exec($cmd);}
if ($msg{'data'} eq $vol_down_data) {
my $cmd = "$commandlist{'volume_main'}$commandlist{'volume_down'}";
command_exec($cmd);}}}
#####################################
###### set volume DPT5 (receive Volume)##########
if (($msg{'dst'} eq ($onkyo_volume)))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{ my $volume1 = decode_dpt(0,$msg{'data'},5);
plugin_log($plugname, $volume1);
my $volume2 = ($faktor)*$volume1;
my $volume = sprintf("%02d", $volume2);
plugin_log($plugname, $volume2);
my $cmd = "$commandlist{'volume_main'}$volume";
plugin_log($plugname, $cmd);
command_exec($cmd);}}
###### End Volume receive ########################
##### Ein Ausschalten Kueche #######
if ($msg{'dst'} eq ($Radio_GA))
{ if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $Bad_Status = knx_read($Bad_Radio, 1,1);
# plugin_log($plugname, $Bad_Status);
if ($Bad_Status == 0)
{if ($msg{'data'} == 01 ) {
knx_write($verstaerker,1,1);
my $cmd = "$commandlist{'power'}01";
knx_write($onkyo,1,1);
knx_write($onkyo_volume,$start_volume,5);
knx_write($Kueche_Volume,53,5);
my $cmd3 = "$commandlist{'zone2'}01";
knx_write($FM,1,1);
knx_write($Z2FM ,1,1);
command_exec($cmd, $cmd3) ;
}
if ($msg{'data'} == 00 ) {
my $cmd = "$commandlist{'zone2'}00";
command_exec($cmd) ;
knx_write($verstaerker,0,1);
my $fernstat = knx_read($Fernsehen,1, 1.001);
#plugin_log ("Fernseher", $fernstat);
if ($fernstat == 01) {my $cmd = "$commandlist{'main_selector'}$sources{'SAT'}";
command_exec($cmd);}
if ($fernstat == 00) {my $cmd = "$commandlist{'power'}00";
command_exec($cmd);
knx_write($Kueche_Volume,0,5);
}}}}
if ($Bad_Status == 1)
{if ($msg{'data'} == 01 ) {
knx_write($Kueche_Volume, 53,5);
}
if ($msg{'data'} == 00 ) {
knx_write($Kueche_Volume, 0,5);
}}
}
############ Fernsehen #######################
if ($msg{'dst'} eq ($Fernsehen))
{
if ($msg{'apci'} eq 'A_GroupValue_Write')
{my $Radio_status = knx_read($Radio_GA, 1,1);
if ($Radio_status == 01) {
if ($msg{'data'} == 01 ) {
my $cmd = "$commandlist{'zone2'}00";
my $cmd2 = "$commandlist{'main_selector'}$sources{'SAT'}";
knx_write($onkyo_volume,$fernseher_start_volume,5.001);
my $cmd3 = "$commandlist{'audio_selector'}$audio_mode{'pl2_movie'}";
command_exec($cmd2, $cmd3);
}}
if ($Radio_status == 00) {
if ($msg{'data'} == 01 ) {
my $cmd = "$commandlist{'power'}01";
my $cmd = "$commandlist{'zone2'}00";
my $cmd2 = "$commandlist{'main_selector'}$sources{'SAT'}";
knx_write($onkyo_volume,$fernseher_start_volume,5.001);
my $cmd3 = "$commandlist{'audio_selector'}$audio_mode{'pl2_movie'}";
command_exec($cmd2, $cmd3);
}}
if ($msg{'data'} == 00 ) {
my $cmd = "$commandlist{'power'}00";
my $cmd2 = "$commandlist{'zone2'}00";
command_exec($cmd2, $cmd);}
}}
sub command_exec {
foreach (@_) {
my $cmd = $_;
plugin_log($plugname, $cmd);
use strict;
use IO::Socket;
# my $cmd="PWR01";
#my $cmd=$ARGV[0];
my @iscpPacket;
my $IP = "192.168.178.68";
my $Port = "60128";
$iscpPacket[0] = chr(0x49);
$iscpPacket[1] = chr(0x53);
$iscpPacket[2] = chr(0x43);
$iscpPacket[3] = chr(0x50);
$iscpPacket[4] = chr(0x00);
$iscpPacket[5] = chr(0x00);
$iscpPacket[6] = chr(0x00);
$iscpPacket[7] = chr(0x10);
$iscpPacket[8] = chr(0x00);
$iscpPacket[9] = chr(0x00);
$iscpPacket[10] = chr(0x00);
$iscpPacket[11] = chr(3+length($cmd));
$iscpPacket[12] = chr(0x01);
$iscpPacket[13] = chr(0x00);
$iscpPacket[14] = chr(0x00);
$iscpPacket[15] = chr(0x00);
$iscpPacket[16] = chr(0x21);
$iscpPacket[17] = chr(0x31);
for(my $a=18;$a<=18+length($cmd);$a++) #18
{
my $s = substr($cmd,$a-18,1); # 18
$iscpPacket[$a] = $s;
}
$iscpPacket[18+length($cmd)] = chr(0x0D); # 18
print @iscpPacket;#
my $host = $IP;
my $port = $Port;
my $SOCK = new IO::Socket::INET(PeerAddr => $host, PeerPort => $port, Proto => 'tcp', timeout => 3) || die "Socket Error: $!\n";
$SOCK->autoflush(1);
print $SOCK @iscpPacket;
my $datagram;
$SOCK->recv($datagram, 32);
close ($SOCK);
}}

2014-04-22 13:07:45.563,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:08:08.924,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:08:18.884,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:08:19.016,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:08:19.786,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:08:33.002,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:08:56.894,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:09:19.106,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:09:19.242,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:09:20.128,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:09:20.232,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:09:43.369,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:10:07.337,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:10:19.608,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:10:19.672,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:10:20.305,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:10:31.183,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:10:54.698,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:11:18.007,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:11:20.256,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:11:20.324,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:11:20.976,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:11:41.335,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:11:52.413,Wunderground_Weather,1,1.5s, 2014-04-22 13:12:04.796,beschienen,Grad gegen Norden: 181; Grad ueber Horizont: 54,0s, 2014-04-22 13:12:04.879,Temp Wohnzimmer RRD,Graphen wurden aktualisiert,0s, 2014-04-22 13:12:04.948,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:12:07.128,Verstaerker aus,aus,0s, 2014-04-22 13:12:20.376,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:12:20.443,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:12:21.398,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:12:29.139,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:12:52.658,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:13:15.733,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:13:21.363,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:13:21.499,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:13:22.224,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:13:39.843,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:14:02.969,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:14:22.675,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:14:22.817,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:14:23.493,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:14:26.943,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:14:51.424,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:15:14.760,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:15:23.890,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:15:24.034,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:15:24.783,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:15:37.892,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:16:01.365,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:16:25.147,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:16:25.302,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:16:26.067,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:16:26.158,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:16:49.913,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:17:05.466,beschienen,Grad gegen Norden: 183; Grad ueber Horizont: 54,0s, 2014-04-22 13:17:05.497,Temp Wohnzimmer RRD,Graphen wurden aktualisiert,0s, 2014-04-22 13:17:07.728,Verstaerker aus,aus,0s, 2014-04-22 13:17:13.513,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:17:26.776,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:17:26.915,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:17:27.697,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:17:37.584,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:18:00.992,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:18:24.532,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:18:27.883,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:18:28.013,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:18:28.784,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:18:47.892,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:19:10.995,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:19:28.775,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:19:28.902,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:19:29.712,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:19:35.016,zz_Test,Wert bekommen: 00,0s, 014-04-22 13:19:58.926,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:20:22.380,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:20:29.058,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:20:29.123,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:20:29.754,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:20:46.077,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:21:09.993,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:21:29.706,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0s, 2014-04-22 13:21:29.771,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:21:30.770,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:21:33.846,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:21:57.025,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:22:05.941,beschienen,Grad gegen Norden: 185; Grad ueber Horizont: 54,0s, 2014-04-22 13:22:05.998,Temp Wohnzimmer RRD,Graphen wurden aktualisiert,0s, 2014-04-22 13:22:08.237,Verstaerker aus,aus,0s, 2014-04-22 13:22:20.422,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:22:30.809,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:22:30.952,mpd_Player2.pl,Cycle retvalue,0s, 2014-04-22 13:22:32.011,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:22:43.966,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:23:07.198,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:23:31.298,Heizungsregler,WZ->20.0(18.0)0% Vreq=22,0.3s, 2014-04-22 13:23:31.885,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:23:33.023,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:23:54.896,zz_Test,Wert bekommen: 00,0s, 2014-04-22 13:24:18.192,zz_Test,Wert bekommen: 00,0s,
Apr 22 00:08:53 wiregate619 /usr/sbin/wiregated.pl: INFO - *** reading config Apr 22 00:08:53 wiregate619 /usr/sbin/wiregated.pl: INFO - connected to eibd local:/tmp/eib Apr 22 09:11:26 wiregate619 /usr/sbin/wiregated.pl: INFO - *** reading config Apr 22 09:11:26 wiregate619 /usr/sbin/wiregated.pl: INFO - connected to eibd local:/tmp/eib
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Einen Kommentar schreiben: