FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: eisman am 11 Mai 2018, 19:22:58

Titel: [Gelöst] Dummy mit Datum für die Woche setzen
Beitrag von: eisman am 11 Mai 2018, 19:22:58
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

 
Titel: Antw:Dummy mit Datum für die Woche setzen
Beitrag von: Amenophis86 am 11 Mai 2018, 20:13:18
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.
Titel: Antw:Dummy mit Datum für die Woche setzen
Beitrag von: eisman am 11 Mai 2018, 20:35:46
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)