Hallo,
ich hab eine 99_myUtils.pm angelegt mit folgendem Inhalt:
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z 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;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
######################################################################
# Umbenennen der Heizungsthermostaten HM-CC-RT-DN und der zugehörenden Kanäle #
# Aufruf mit {RenTherm("Thermostat","NeuerName","Raum") #
######################################################################
sub
RenTherm
{
my $Therm = $_[0];
my $Neu = $_[1];
my $Raum = $_[2];
my @Channel = ("_Weather","_Climate","_WindowRec","_Clima","_ClimaTeam","_remote");
{fhem("rename $Therm $Neu")};
for my $i (0..5){
my $Therm1=$Therm.$Channel[$i];
my $Neu1 = $Neu.$Channel[$i];
{fhem ("rename $Therm1 $Neu1")};
{fhem ("attr $Neu1 room $Raum")};
}
}
1;
Hab gespeichert, hab reload 99_myUtils.pm gemacht, hab den Raspberry Pi neugestartet.
Bekomme aber immer wenn ich die Funktion aufrufe folgende Meldung:
Unknown command RenTherm("CUL_HM_HM_CC_RT_DN_2E9F20","01_HZ_Behandlung2","Behandlung2"), try help.
Was mache ich falsch?
Version von Fhem
Release : 5.5
Branch : DEVELOPMENT
OS : linux
Arch : arm-linux-gnueabihf-thread-multi-64int
Perl : v5.14.2
Viele Grüße
Ralph
Du musst das Kommando in geschweifte Klammern setzen, wenn es Perl-Code sein soll. Also zB "{ MeineFunktion();;NochNeFunktion();; }". Man beachte ";;" anstatt der normalen ;
Vielen Dank für die schnelle Hilfe.
Das war das Problem.
Danke
Mach das doch mal ein bisschen übersichtlicher :)
sub RenTherm {
my($Therm,$Neu,$Raum) = @_;
my @Channel = ("_Weather","_Climate","_WindowRec","_Clima","_ClimaTeam","_remote");
CommandRename(undef, "$Therm $Neu");
foreach (@Channel) {
my $Therm1 = $Therm$_;
my $Neu1 = $Neu$_;
CommandRename(undef, "$Therm1 $Neu1");
CommandAttr(undef, "$Neu1 room $Raum");
}
}
und wie vbs schon schrieb: Eine Funktion ist kein Befehl! Wenn Du die Funktion im Fhem Frontend ausführen willst, immer in geschweifte Klammern setzen:
{ RenTherm("alterName","neuerName","Raum") }
Bei deinem Vorschlag kommt folgender Fehler:
syntax error at ./FHEM/99_myUtils.pm line 30, near "$Therm$_" syntax error at ./FHEM/99_myUtils.pm line 31, near "$Neu$_" Global symbol "$Therm1" requires explicit package name at ./FHEM/99_myUtils.pm line 32. Global symbol "$Neu1" requires explicit package name at ./FHEM/99_myUtils.pm line 32.