Hauptmenü

99_myUtils.pm

Begonnen von RalphGrad, 15 Februar 2015, 13:09:40

Vorheriges Thema - Nächstes Thema

RalphGrad

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

vbs

Du musst das Kommando in geschweifte Klammern setzen, wenn es Perl-Code sein soll. Also zB "{ MeineFunktion();;NochNeFunktion();; }". Man beachte ";;" anstatt der normalen ;

RalphGrad

Vielen Dank für die schnelle Hilfe.
Das war das Problem.

Danke

betateilchen

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") }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RalphGrad

#4
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.