FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: TomLee am 16 März 2018, 15:35:51

Titel: [Gelöst] Aufruf einer Sub - Fehlermeldung
Beitrag von: TomLee am 16 März 2018, 15:35:51
Hallo,

hab mir gestern eines der drei Beispiel-Sub von hier (https://forum.fhem.de/index.php/topic,85690.msg780809.html#msg780809) in meine 99_myUtils.pm geschrieben. Zum testen habe ich die Sub mit {qclock2} aus der Kommandozeile aufgerufen. Die Sonosausgabe wurde ausgegeben, das zeit-Reading des Dummys wurde geschrieben und auch unter der Kommandozeile wurde das Ergebnis angezeigt.

Heut gebe ich {qclock2} in die Kommandozeile ein und erhalte ein:

Bareword "qclock2" not allowed while "strict subs" in use at (eval 9205) line 1.


##Ausgabe der Zeit in natürlicher Sprache
##https://forum.fhem.de/index.php/topic,85690.msg780809.html#msg780809

sub qlock2() {
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Minute = $Minuten;
my $Stunde = $Stunden;
my $spoke = "Es ist $Stunden Uhr $Minuten.";
## 24h in 12h umwandeln
if ($Stunden <= 12) { $Stunde = $Stunden }
if ($Stunden >= 13) { $Stunde = $Stunden - 12 }
if ($Stunden == 0) { $Stunde = 12 }
## Wahlweise West- oder Ost-VAriante. Bitte den jeweils anderen Block auskommentieren!
{
  ## Ost: Zwischen Minute 13 und 17 sowie ab Minute 23 die nächste Stunde ansagen > drei viertel 12 um 11:45 Uhr
  if ((($Minuten >= 13 && $Minuten <= 17) || $Minuten >= 23) && ($Stunde >= 1 && $Stunde <= 11)) { $Stunde = $Stunde + 1 }
  elsif ((($Minuten >= 13 && $Minuten <= 17) || $Minuten >= 23) && $Stunde == 12) { $Stunde = $Stunde - 11 }
}
##{
## West: Ab Minute 23 die nächste Stunde ansagen > viertel vor 12 um 11:45 Uhr
##  if ($Minuten >= 23 && ($Stunde >= 1 && $Stunde <= 11)) { $Stunde = $Stunde + 1 }
##  elsif ($Minuten >= 23 && $Stunde == 12) { $Stunde = $Stunde - 11 }
##}
## Zusammensetzen der gesprochenen Uhrzeit
if ($Minute =~ (/(^0{1})|(5)|(10)|(15)|(20)|(25)|(30)|(35)|(40)|(45)|(50)|(55)|(60)/)) {
my @hourNames=('eins','zwei','drei','vier','fünf','sechs','sieben','acht','neun','zehn','elf','zwölf');
$Stunde=$hourNames[$Stunde-1];
  if ($Minute =~ /(^0{1})|(60)/) {
    $spoke = "Es ist ein Uhr." if ($Stunde eq "eins");
$spoke = "Es ist $Stunde Uhr." if ($Stunde ne "eins");
    }
  elsif ($Minute == 5) {
    $spoke = "Es ist fünf nach $Stunde.";
  }
  elsif ($Minute == 10) {
    $spoke = "Es ist zehn nach $Stunde.";
  }
  elsif ($Minute == 15) {
    ##$spoke = "Es ist viertel nach $Stunde.";
    $spoke = "Es ist viertel $Stunde.";
  }
  elsif ($Minute == 20) {
    $spoke = "Es ist zwanzig nach $Stunde.";
  }
  elsif ($Minute == 25) {
    $spoke = "Es ist fünf vor halb $Stunde.";
  }
  elsif ($Minute == 30) {
    $spoke = "Es ist halb $Stunde.";
  }
  elsif ($Minute == 35) {
    $spoke = "Es ist fünf nach halb $Stunde.";
  }
   elsif ($Minute == 40) {
    $spoke = "Es ist zwanzig vor $Stunde.";
  }
  elsif ($Minute == 45) {
    ##$spoke = "Es ist viertel vor $Stunde.";
    $spoke = "Es ist drei viertel $Stunde.";
  }
  elsif ($Minute == 50) {
    $spoke = "Es ist zehn vor $Stunde.";
  }
  elsif ($Minute == 55) {
    $spoke = "Es ist fünf vor $Stunde.";
  }
}
## Ausgabe der gesprochenen Uhrzeit: "Es ist ..." in ein Reading, oder direkt als Sprachausgabe oder...
fhem "setreading du_Wordclock zeit $spoke";
fhem "set Sonos_Wohnzimmer_PLAY3 speak 40 de $spoke";
return $spoke;
}


Jemand nen Tipp an was das liegen kann ?

Gruß

Thomas
Titel: Antw:Aufruf einer Sub - Fehlermeldung
Beitrag von: betateilchen am 16 März 2018, 15:41:55
Zu wenige Informationen, um Dir wirklich helfen zu können.

Schau doch mal in die 99_myUtils.pm ob da wirklich das drinsteht, was Du erwartest. Vielleicht hast Du bei einem späteren Bearbeiten der Datei irgendeinen Fehler eingebaut, der das Laden der Datei und der darin enthaltenen Funktionen verhindert.

Von einem Tippfehler bei der Eingabe des Funktionsnamens in der Befehlszeile gehe ich jetzt mal nicht aus ;)
Titel: Antw:Aufruf einer Sub - Fehlermeldung
Beitrag von: TomLee am 16 März 2018, 15:48:28
Sry, war gerade dabei sie hier anzufügen.

Und klar hab ich ein reload gemacht, sogar ein Neustart.

Ich verstehs nicht, Schreibfehler scheidet eigentlich aus, ich habs aus der Liste ausgewählt (was gestern eingegeben wurde)
Titel: Antw:Aufruf einer Sub - Fehlermeldung
Beitrag von: helmut am 16 März 2018, 16:20:32
Zitat von: betateilchen am 16 März 2018, 15:41:55
Von einem Tippfehler bei der Eingabe des Funktionsnamens in der Befehlszeile gehe ich jetzt mal nicht aus ;)

Oder doch? ;-)

Bareword "qclock2"
sub qlock2() {

Gruss Helmut
Titel: Antw:Aufruf einer Sub - Fehlermeldung
Beitrag von: TomLee am 16 März 2018, 16:22:01
Habs gerade selbst gesehen, ich kanns mir nicht erklären.

Trotzdem Danke
Titel: Antw:Aufruf einer Sub - Fehlermeldung
Beitrag von: helmut am 16 März 2018, 17:51:24
Denkst Du bitte an an das  [Gelöst] vor dem Subject des ersten Posts?

Gruss Helmut