Advent-Schnippsel für die Weihnachtsbeleuchtung

Begonnen von Icinger, 13 Oktober 2015, 19:21:55

Vorheriges Thema - Nächstes Thema

FHEM-User22

Hallo Damian,
ich habe die kürzere Definition mal getestet.

State ist:
STATE    ???

und bei den Readings:
block_init  condition c01: Undefined subroutine &DOIF::myseason called, line 12.  2018-11-02 17:22:07
mode  disabled    2018-11-02               17:26:44
timer_01_c02    03.11.2018                  00:00:00    2018-11-02 17:22:07


Ist da bei mir irgendwo ein Fehler?

Grüße FHEM-User22
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

Zitat von: FHEM-User22 am 02 November 2018, 17:39:48
Hallo Damian,
ich habe die kürzere Definition mal getestet.

State ist:
STATE    ???

und bei den Readings:
block_init  condition c01: Undefined subroutine &DOIF::myseason called, line 12.  2018-11-02 17:22:07
mode  disabled    2018-11-02               17:26:44
timer_01_c02    03.11.2018                  00:00:00    2018-11-02 17:22:07


Ist da bei mir irgendwo ein Fehler?

Grüße FHEM-User22

Hast du die aktuelle DOIF-Version vom 17.10 ?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEM-User22

Moin,
ich habe gestern geupdatet. Woran kann ich die Version erkennen?

Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

Das ist naheliegend:

In der Kommandozeile: Version DOIF
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEM-User22

Stimmt, sorry,

98_DOIF.pm 17557 2018-10-17 21:06:30Z Damian
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

#50
OK. Ich habe jetzt den Definitionsblock subs vorgezogen, damit sollte es jetzt auch bei dir funktionieren:

Edit: Definition herausgenommen, da mit aktueller DOIF-Version das Vorziehen von subs nicht mehr erforderlich ist.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEM-User22

FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

#52
Zitat von: FHEM-User22 am 03 November 2018, 10:14:49
Supi, läuft.

Dankeschön

In der letzten Zeile war noch meine Testkonfiguration dir. Ich habe sie gerade angepasst:

{[00:00];;set_State(myseason(split("-",$ymd,2)),1)}\

Ab morgen gibt es ein DOIF-Update, damit wird auch die vorherige Definition (wo init zuerst vorkommt) immer funktionieren.  siehe https://forum.fhem.de/index.php/topic,84969.msg853348.html#msg853348
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rewe2000

Hallo Damian,
irgendwie stehe ich auf dem Schlauch, an was kann das liegen, weshalb bei mir ein "Undefined subroutine" kommt?

State ist auch bei mir:
STATE ???

Und bei den Readings steht:

block_init   condition c01: Undefined subroutine &main::western_easter called, line 4.        2018-11-14 20:20:12
mode         disabled                                                                         2018-11-14 20:20:31
timer_01_c02 15.11.2018 00:00:00                                                              2018-11-14 20:20:12


Wo liegt der "Hund begraben"?

DOIF neueste Version: 98_DOIF.pm 17708 2018-11-08 19:42:20Z Damian
Auch im Log stehen keine Fehler.

Ich hoffe du kannst mir den etscheidenden Tipp geben, denn Weihnachten kommt schneller als einem lieb ist.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Damian

western_easter steckt in 95_holiday.pm. Sie wird wohl bei dir nicht gefunden, weil du offenbar das holiday-Modul nicht nutzt. "reload 95_holiday.pm" könnte helfen oder einmalig defmod <Bundesland> holiday.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#55
Ich habe hier: https://forum.fhem.de/index.php/topic,42209.msg852782.html#msg852782 noch weitere Feiertage eingefügt, dann muss man besondere Ereignisse nicht an zwei Stellen (holiday Modul) abfragen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rewe2000

Hallo Damian,

vielen Dank für die schnelle Hilfe, genau das war mein Problem, das holiday-Modul war nicht vorhanden.
Ich habe dieses nun mit "defmod by holiday" angelegt (für Bayern), jetzt komme ich genau eine Zeile weiter und die "Undefined subroutine" kommt bei "str2time".

Readings:

block_init       condition c01: Undefined subroutine &DOIF::str2time called, line 5.               2018-11-15 18:21:09
mode             enabled                                                                           2018-11-15 18:21:22
timer_01_c02     16.11.2018 00:00:00                                                               2018-11-15 18:21:09


Muss ich da noch etwas installieren?
An der 99_myUtils.pm muss ich doch nichts hinzufügen, da ja alles über das DOIF erledigt wird, wenn ich dich richtig verstanden habe.
Irgend etwas fehlt da noch bei mir, aber nur was. Die Suche nach "str2time" hat mich in Fhem und Google auch nicht den entscheidenden Schritt weiter gebracht.
Ich hoffe ihr habt noch einen Tipp für mich.

Gruß Reinhard

Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Damian

#57
siehe: https://forum.fhem.de/index.php/topic,43685.msg835411.html#msg835411

Edit: Ich habe es jetzt im Codeschnipsel hinzugefügt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rewe2000

Danke Damian,

genau das war die Ursache. Jetzt läuft es auch bei mir.
Nochmals vielen Dank für deine großartige Arbeit.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Cybers

wenn ich folgendes in meiner Kommandozeile eingebe:
defmod SocialSeason2 DOIF init { ## Syntax <MM-DD>, Ereignis oder <von> <bis>, Ereignis, statt MM-DD kann auch E+/-<Zahl> und A+/-<Zahl>, E entspricht Ostersonntag, A erster Adventsonntag \
$_season="\
E+0 E+1,     Ostern\
E-51 E-46,   Karneval\
05-01,       Tag der Arbeit\
E+39,        Chisti Himmelfahrt\
E+49 E+50,   Pfingsten\
E+60,        Fronleichnam\
10-03,       Tag der deutschen Einheit\
11-01,       Allerheiligen\
12-24,       Heiligabend\
12-25 12-26, Weihnachten\
A+0 A+6,     1. Advent\
A+7 A+13,    2. Advent\
A+14 A+20,   3. Advent\
A+21 12-23,  4. Advent\
12-31,       Silvester\
01-01,       Neujahr\
";;\
set_State(myseason(split("-",$ymd,2)),1)\
}\
\
{[00:00];set_State(myseason(split("-",$ymd,2)),1)}\
\
subs {\
sub myseason {\
use Date::Parse qw(str2time);;\
my ($year,$md)=@_;;\
my ( $monEaster, $mdayEaster) = ::western_easter($year);;\
my $christmas = str2time("$year-12-25");;\
my ( $secC, $minC, $hourC, $mdayC, $monC, $yearC, $wdayC, $ydayC, $isdstC ) = localtime($christmas);;\
$wdayC = $wdayC ? $wdayC : 7;;\
my $adventBegin = $christmas - ($wdayC+21)*86400;;\
my $easter=str2time("$year-$monEaster-$mdayEaster");;\
my @s=split ('\n',$_season);;\
foreach (@s) {\
  next if ($_ eq "");;\
  my ($date,$token)=split (',\s*',$_);;\
  my @d=split (' ',$date);;\
  foreach (@d) {\
    if (defined ($_)) {\
      if ($_ =~ /E((\+|\-)\d+)/) {\
        my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime ($easter + $1*86400);;   \
        $_=sprintf("%02d-%02d",$mon+1,$mday);;\
      } elsif ($_ =~ /A((\+|\-)\d+)/) {\
        my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime ($adventBegin + $1*86400);;   \
        $_=sprintf("%02d-%02d",$mon+1,$mday);;\
      }\
    }\
  }\
  if (!defined ($d[1]) and $d[0] eq $md or (defined ($d[1]) and $md ge $d[0] and $md le $d[1])) {\
    return ($token);;\
  }\
}\
return ("none");;\
}\
}\

dann bekomme ich folgenden Fehler:
SocialSeason2 DOIF: no right bracket: { 
Unknown command set_State(myseason(split("-",$ymd,2)),1)}\, try help.

Was mache ich falsch?

Gruß, Sascha
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel