Hallo,
kann mir mal einer sagen was mir dieser Fehler sagen will:
ERROR:Malformed prototype for main::KNX_TypAendern: $device, $dpt, $gr, $anz at ./FHEM/99_myUtils_Allgemein.pm line 38.
Ich komme nicht weiter. Hier mein Code:
##############################################
# $Id: myUtilsTemplate.pm 21509 2020-03-25 11:20:51Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.
package main;
use strict;
use warnings;
sub
myUtils_Allgemein_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
sub test()
{
}
sub KNX_rename ()
{
my @devices = devspec2array("NAME=KNX.*");
my $anz = 0;
my ($ugr, $gr);
foreach my $device (@devices)
{
#1/1/ - Schalten
if (substr($device,4,4) eq "0101")
{
KNX_TypAendern($device, "1.001", "1/2/", $anz);
}
#1/2/ - Dimmen
elsif (substr($device,4,4) eq "0102")
{
KNX_TypAendern($device, "3.007", "1/2/", $anz);
}
#1/3/ - Wert (Dimmen)
elsif (substr($device,4,4) eq "0103")
{
KNX_TypAendern($device, "5.001", "1/3/", $anz);
}
#1/4/ - RMs
elsif (substr($device,4,4) eq "0104")
{
KNX_TypAendern($device, "1.001", "1/4/", $anz);
}
#1/5/ - RMw
elsif (substr($device,4,4) eq "0105")
{
KNX_TypAendern($device, "5.001", "1/5/", $anz);
}
#2/0/ - Temperaturmesswert
elsif (substr($device,4,4) eq "0200")
{
KNX_TypAendern($device, "9.001", "2/0/", $anz);
}
#2/2/ - Betriebsartvorwahl
elsif (substr($device,4,4) eq "0202")
{
KNX_TypAendern($device, "20.102", "2/2/", $anz);
}
#2/3/ - Betriebsart Direkt
elsif (substr($device,4,4) eq "0203")
{
KNX_TypAendern($device, "1.001", "2/3/", $anz);
}
#3/1/ - Auf / Ab
elsif (substr($device,4,4) eq "0301")
{
KNX_TypAendern($device, "1.008", "3/1/", $anz);
}
#3/3/ - Absolute Position (inkl Lamellenposition)
elsif (substr($device,4,4) eq "0303")
{
KNX_TypAendern($device, "5.001", "3/3/", $anz);
}
#3/6/ - Diagnosetext
elsif (substr($device,4,4) eq "0306")
{
KNX_TypAendern($device, "16.000", "3/6/", $anz);
}
#4/0/ - Fensterkontakt auf/zu
elsif (substr($device,4,4) eq "0400")
{
KNX_TypAendern($device, "1.001", "4/0/", $anz);
}
#4/0/ - Fensterkontakt auf/zu
elsif (substr($device,4,4) eq "0401")
{
KNX_TypAendern($device, "1.001", "4/1/", $anz);
}
#4/0/ - Fensterkontakt auf/zu
elsif (substr($device,4,4) eq "0402")
{
KNX_TypAendern($device, "1.001", "4/2/", $anz);
}
}
}
sub KNX_TypAendern ($device, $dpt, $gr, $anz)
{
my ($device, $dpt, $gr, $anz) = @_;
my $ugr;
$anz++;
$ugr = substr($device,8);
if(substr($ugr,0,1) eq "0") {$ugr =~ s/0//;}
if(substr($ugr,0,1) eq "0") {$ugr =~ s/0//;}
$gr = $gr.$ugr;
fhem("defmod ".$device." KNX ".$gr.":dpt".$dpt);
}
1;
Line 38 ist übrigens: KNX_TypAendern($device, "1.001", "1/2/", $anz);