Hauptmenü

Probleme mit 99_myUtil

Begonnen von Frank13, 25 November 2018, 22:29:25

Vorheriges Thema - Nächstes Thema

Frank13

Hallo allerseits!

Ich stehe gerade vor einem etwas komischen Problem:
Meine Funktionen in den 99_myUtil-Dateien funktionieren nicht, d.h ich bekomme im Beispiel die Fehlermeldung "Unknown command my_Datumsberechnungen(), try help. "

Ich habe die Datei "99_Datumsberechnungen_myUtils.pm" heute nochmal neu aus dem Template heraus angelegt.


##############################################
# $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
Datumsberechnungen_myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.

sub my_Datumsberechnungen() {
  Log 1,"+++++++++++++++++++++++++++++++++Datumsberechnungen gestartet";
  my ($jetzt_year,$jetzt_month,$jetzt_day)=Today(); 

  my ($year,$month,$day) = Easter_Sunday($jetzt_year);
  my $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Ostersonntag $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days(Easter_Sunday($year),-2);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Karfreitag $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days(Easter_Sunday($year),-48);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Rosenmontag $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days(Easter_Sunday($year),-46);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Aschermittwoch $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days(Easter_Sunday($year),39);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Himmelfahrt $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days(Easter_Sunday($year),49);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Pfingstmontag $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days(Easter_Sunday($year),50);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Pfingstmontag $mydatumsstring");

  fhem("setreading Jahreszeitstatus Maifeiertag $year-05-01");
  fhem("setreading Jahreszeitstatus Tag_der_deutschen_Einheit $year-10-03");
  fhem("setreading Jahreszeitstatus Drei_Koenige $year-01-06");
  fhem("setreading Jahreszeitstatus Heiligabend $year-12-24");
  fhem("setreading Jahreszeitstatus Erster_Weihnachtstag $year-12-25");
  fhem("setreading Jahreszeitstatus Zweiter_Weihnachtstag $year-12-26");
  fhem("setreading Jahreszeitstatus Silvester $year-12-31");
  fhem("setreading Jahreszeitstatus Neujahr $year-01-01");

  my $temp=Day_of_Week($year,12,25);

 
  ($year,$month,$day) = Add_Delta_Days($year,12,25,-$temp);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Vierter_Advent $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days($year,12,25,-$temp-7);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Dritter_Advent $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days($year,12,25,-$temp-14);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Zweiter_Advent $mydatumsstring");

  ($year,$month,$day) = Add_Delta_Days($year,12,25,-$temp-21);
  $mydatumsstring=sprintf"%d-%02d-%02d",$year,$month,$day;
  fhem("setreading Jahreszeitstatus Erster_Advent $mydatumsstring");
 
  # Weihnachtszeit berechnen
  ($year,$month,$day) = Add_Delta_Days($year,12,25,-$temp-21-6);

  my $TageBisBeleuchtung=Delta_Days($jetzt_year,$jetzt_month,$jetzt_day,$year,$month,$day);
  fhem("setreading Weihnachtszeitstatus Tage_bis_Beleuchtung $TageBisBeleuchtung");

  $temp=Delta_Days($jetzt_year,$jetzt_month,$jetzt_day,$year,12,24);
  fhem("setreading Weihnachtszeitstatus Tage_bis_Weihnachten $temp");

  if($TageBisBeleuchtung < 1)                # Vorweihnachtszeit begonnen?
  {
    fhem("setreading Weihnachtszeitstatus Beleuchtung_Aktiv 1");
  }
  else                                       # am 7. Januar ist die Weihnachtszeit beendet
  {
    #Log 1,"+++++++++++++++++Weihnachtselse";
    #Log 1,"+++++++++++++++++Weihnachtselse Monat ist $jetzt_month";
    if($jetzt_month == 0)
    {
      #Log 1,"+++++++++++++++++Weihnachtselse Monat 0";

     
      if($jetzt_day < 7)
      {
        fhem("setreading Weihnachtszeitstatus Beleuchtung_Aktiv 1");
      }
    }
    else
    {
      fhem("setreading Weihnachtszeitstatus Beleuchtung_Aktiv 0");
    }
  }
}



1;


Ich weiss, dass die Routine im Oktober noch funktioniert hat (da habe ich die frisch erzeugten Readings gesehen). Seitdem habe ich keine größeren Änderungen vorgenommen ausser einige wenige neue Homematic-Geräte hinzugefügt.
Im Log kann ich auch keinen verdächtigen Eintrag entdecken, hat jemad eine Idee in welcher Richtung ich suchen sollte?

Viele Grüße

Frank

CoolTux

Mal ab von der ungünstigen Namensnennung hört es sich so an als wenn Du Deine Sub versuchst aus dem FHEM Kontext heraus auf zu rufen statt aus dem Perl Kontext.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank13

#2
Moin,

Danke, das scheint logisch. Dann verstehe ich jetzt nur nicht, dass das Ganze vorher funktioniert hat...
Ich werde mal testen.

Viele Grüße

Frank

Edit: Jetzt scheinen die Routinen zu funktionieren. Was mir nur nicht in den Kopf will, ist warum die vorher aus dem FHEM Kontext heraus funktioniert haben. Ich werde morgen mal in Ruche suchen, was ich da geändert habe. Ich habe zum Glück noch ein altes Reading und weiss an welchem Datum es noch ging und ab wann nicht mehr.