[Gelöst] Dummy mit Datum für die Woche setzen

Begonnen von eisman, 11 Mai 2018, 19:22:58

Vorheriges Thema - Nächstes Thema

eisman

hi,

suche eine Möglichkeit einen Dummy mit datum zu setzen,

Readings:

mo-datum 7.05.2018
di-datum   8.05.2018
.
.
so-datum 13.05.2018

also im Prinzip So auf Mo nacht wird der Dummy:mo-datum auf aktuelle datum gesetzt,
alle anderen tage,  Tag=Tag+1;

alle Befehle die ich unter perl gefunden habe, gehen nicht...

danke
gruss

 
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

Amenophis86

Dummy:

Internals:
   CFGFN     
   NAME       Datum
   NR         8
   STATE      2018-05-11
   TYPE       dummy
   READINGS:
     2018-05-11 00:01:00   state           2018-05-11
     2018-05-11 00:01:00   tag0_Jahr       2018
     2018-05-11 00:01:00   tag0_Monat      05
     2018-05-11 00:01:00   tag0_Monatsname Mai
     2018-05-11 00:01:00   tag0_Monatstag  11
     2018-05-11 00:01:00   tag0_Wochentag  Freitag
     2018-05-11 00:01:00   tag1_Jahr       2018
     2018-05-11 00:01:00   tag1_Monat      05
     2018-05-11 00:01:00   tag1_Monatsname Mai
     2018-05-11 00:01:00   tag1_Monatstag  12
     2018-05-11 00:01:00   tag1_Wochentag  Samstag
     2018-05-11 00:01:00   tag2_Jahr       2018
     2018-05-11 00:01:00   tag2_Monat      05
     2018-05-11 00:01:00   tag2_Monatsname Mai
     2018-05-11 00:01:00   tag2_Monatstag  13
     2018-05-11 00:01:00   tag2_Wochentag  Sonntag
     2018-05-11 00:01:00   tag3_Jahr       2018
     2018-05-11 00:01:00   tag3_Monat      05
     2018-05-11 00:01:00   tag3_Monatsname Mai
     2018-05-11 00:01:00   tag3_Monatstag  14
     2018-05-11 00:01:00   tag3_Wochentag  Montag
     2018-05-11 00:01:00   tag4_Jahr       2018
     2018-05-11 00:01:00   tag4_Monat      05
     2018-05-11 00:01:00   tag4_Monatsname Mai
     2018-05-11 00:01:00   tag4_Monatstag  15
     2018-05-11 00:01:00   tag4_Wochentag  Dienstag
     2018-05-11 00:01:00   tag5_Jahr       2018
     2018-05-11 00:01:00   tag5_Monat      05
     2018-05-11 00:01:00   tag5_Monatsname Mai
     2018-05-11 00:01:00   tag5_Monatstag  16
     2018-05-11 00:01:00   tag5_Wochentag  Mittwoch
Attributes:
   group      Datum
   room       Z_System->SystemDummys


Das At dazu:
Internals:
   CFGFN     
   COMMAND    {Datum_Dummy()}
   DEF        *00:01:00 {Datum_Dummy()}
   NAME       AT.Datum.update
   NR         149
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 00:01:00
   TIMESPEC   00:01:00
   TRIGGERTIME 1526076060
   TRIGGERTIME_FMT 2018-05-12 00:01:00
   TYPE       at
   READINGS:
     2018-05-11 00:01:00   state           Next: 00:01:00
Attributes:
   room       Z_System->SystemDummys


Und der Code in der MyUtils:

#############################################
#    -------- Datums Dummy -------- #
#############################################

sub Datum_Dummy()
{
my @Wochentage = ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
my @Monatsnamen = ("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

my ($Sekunden0, $Minuten0, $Stunden0, $Monatstag0, $Monat0,
    $Jahr0, $Wochentag0, $Jahrestag0, $Sommerzeit0) = localtime(time);
my $CTIME_String = localtime(time);
$Monat0 += 1;
$Jahrestag0 += 1;
$Jahr0 += 1900;

my @tag0 = ("Wochentag","Tag_zahl","Monat","Monat_zahl","Jahr_zahl");
$tag0[0] = $Wochentage[$Wochentag0];
if($Monatstag0 < 10) {$tag0[1] = "0".$Monatstag0;} else {$tag0[1] = $Monatstag0;}
$tag0[2] = $Monatsnamen[$Monat0-1];
if($Monat0 < 10) {$tag0[3] = "0".$Monat0;} else {$tag0[3] = "0".$Monat0;}
$tag0[4] = $Jahr0;

fhem("set Datum $tag0[4]-$tag0[3]-$tag0[1]");
fhem("setreading Datum tag0_Wochentag $tag0[0]; setreading Datum tag0_Monatstag $tag0[1]; setreading Datum tag0_Monatsname $tag0[2]; setreading Datum tag0_Monat $tag0[3]; setreading Datum tag0_Jahr $tag0[4]",);


my ($Sekunden1, $Minuten1, $Stunden1, $Monatstag1, $Monat1,
    $Jahr1, $Wochentag1, $Jahrestag1, $Sommerzeit1) = localtime(time+86400);
$Monat1 += 1;
$Jahrestag1 += 1;
$Jahr1 += 1900;

my @tag1 = ("Wochentag","Tag_zahl","Monat","Monat_zahl","Jahr_zahl");
$tag1[0] = $Wochentage[$Wochentag1];
if($Monatstag1 < 10) {$tag1[1] = "0".$Monatstag1;} else {$tag1[1] = $Monatstag1;}
$tag1[2] = $Monatsnamen[$Monat1-1];
if($Monat1 < 10) {$tag1[3] = "0".$Monat1;} else {$tag1[3] = "0".$Monat1;}
$tag1[4] = $Jahr1;

fhem("setreading Datum tag1_Wochentag $tag1[0]; setreading Datum tag1_Monatstag $tag1[1]; setreading Datum tag1_Monatsname $tag1[2]; setreading Datum tag1_Monat $tag1[3]; setreading Datum tag1_Jahr $tag1[4]",);

my ($Sekunden2, $Minuten2, $Stunden2, $Monatstag2, $Monat2,
    $Jahr2, $Wochentag2, $Jahrestag2, $Sommerzeit2) = localtime(time+172800);
$Monat2 += 1;
$Jahrestag2 += 1;
$Jahr2 += 1900;

my @tag2 = ("Wochentag","Tag_zahl","Monat","Monat_zahl","Jahr_zahl");
$tag2[0] = $Wochentage[$Wochentag2];
if($Monatstag2 < 10) {$tag2[1] = "0".$Monatstag2;} else {$tag2[1] = $Monatstag2;}
$tag2[2] = $Monatsnamen[$Monat2-1];
if($Monat2 < 10) {$tag2[3] = "0".$Monat2;} else {$tag2[3] = "0".$Monat2;}
$tag2[4] = $Jahr2;

fhem("setreading Datum tag2_Wochentag $tag2[0]; setreading Datum tag2_Monatstag $tag2[1]; setreading Datum tag2_Monatsname $tag2[2]; setreading Datum tag2_Monat $tag2[3]; setreading Datum tag2_Jahr $tag2[4]",);

my ($Sekunden3, $Minuten3, $Stunden3, $Monatstag3, $Monat3,
    $Jahr3, $Wochentag3, $Jahrestag3, $Sommerzeit3) = localtime(time+259200);
$Monat3 += 1;
$Jahrestag3 += 1;
$Jahr3 += 1900;

my @tag3 = ("Wochentag","Tag_zahl","Monat","Monat_zahl","Jahr_zahl");
$tag3[0] = $Wochentage[$Wochentag3];
if($Monatstag3 < 10) {$tag3[1] = "0".$Monatstag3;} else {$tag3[1] = $Monatstag3;}
$tag3[2] = $Monatsnamen[$Monat3-1];
if($Monat3 < 10) {$tag3[3] = "0".$Monat3;} else {$tag3[3] = "0".$Monat3;}
$tag3[4] = $Jahr3;

fhem("setreading Datum tag3_Wochentag $tag3[0]; setreading Datum tag3_Monatstag $tag3[1]; setreading Datum tag3_Monatsname $tag3[2]; setreading Datum tag3_Monat $tag3[3]; setreading Datum tag3_Jahr $tag3[4]",);

my ($Sekunden4, $Minuten4, $Stunden4, $Monatstag4, $Monat4,
    $Jahr4, $Wochentag4, $Jahrestag4, $Sommerzeit4) = localtime(time+345600);
$Monat4 += 1;
$Jahrestag4 += 1;
$Jahr4 += 1900;

my @tag4 = ("Wochentag","Tag_zahl","Monat","Monat_zahl","Jahr_zahl");
$tag4[0] = $Wochentage[$Wochentag4];
if($Monatstag4 < 10) {$tag4[1] = "0".$Monatstag4;} else {$tag4[1] = $Monatstag4;}
$tag4[2] = $Monatsnamen[$Monat4-1];
if($Monat4 < 10) {$tag4[3] = "0".$Monat4;} else {$tag4[3] = "0".$Monat4;}
$tag4[4] = $Jahr4;

fhem("setreading Datum tag4_Wochentag $tag4[0]; setreading Datum tag4_Monatstag $tag4[1]; setreading Datum tag4_Monatsname $tag4[2]; setreading Datum tag4_Monat $tag4[3]; setreading Datum tag4_Jahr $tag4[4]",);

my ($Sekunden5, $Minuten5, $Stunden5, $Monatstag5, $Monat5,
    $Jahr5, $Wochentag5, $Jahrestag5, $Sommerzeit5) = localtime(time+432000);
$Monat5 += 1;
$Jahrestag5 += 1;
$Jahr5 += 1900;

my @tag5 = ("Wochentag","Tag_zahl","Monat","Monat_zahl","Jahr_zahl");
$tag5[0] = $Wochentage[$Wochentag5];
if($Monatstag5 < 10) {$tag5[1] = "0".$Monatstag5;} else {$tag5[1] = $Monatstag5;}
$tag5[2] = $Monatsnamen[$Monat5-1];
if($Monat5 < 10) {$tag5[3] = "0".$Monat5;} else {$tag5[3] = "0".$Monat5;}
$tag5[4] = $Jahr5;

fhem("setreading Datum tag5_Wochentag $tag5[0]; setreading Datum tag5_Monatstag $tag5[1]; setreading Datum tag5_Monatsname $tag5[2]; setreading Datum tag5_Monat $tag5[3]; setreading Datum tag5_Jahr $tag5[4]",);
}


Würde ich heute vermutlich anders machen, stammt noch aus meinen Anfägen mit FHEM. Hatte aber weder Zeit noch Lust es zu optimieren bisher.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

eisman

#2
hi, danke,

hat mich gleich auf eine andere Idee gebracht,
werde mir die teile raussuchen.

gruss

PS: und läuft.......
Anzeige für einen Nextion 3,5"
(siehe unten)
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S