Hauptmenü

[gelöst] Datum zu Wochentag

Begonnen von Brad Majors, 20 Januar 2023, 12:59:36

Vorheriges Thema - Nächstes Thema

Brad Majors

Ich weiß das Thema wurde schon oft hier behandelt.

Aber egal was ich versuche es funktioniert nicht.
Habe mich auch schon mit den 99_myUtils beschäftigt.

Eigentlich hätte ich gerne das von einem simplen reading z.B. der Tag "WetterProplanta:fc0_date" übersetzt wird.

So was hier funktioniert.

{getDayOfWeek() } ()(()<999

{getDayOfWeek (({TimeNow})}

{return strftime("%A",localtime)}      >      ok.   Result = Friday
{return strftime("%F",localtime)}       >      ok.   Result = 2023-01-20   

In my utils habe ich das versucht:

# Liefert Wochentag (0 (So) - 6 (Sa)).
# Param: Datum ('24.12.2015')

sub getDayOfWeek($){ 
my $datum_str = shift || return -1; 
my($day, $month, $year) = split /\./, $datum_str; 
return -1 if $day < 1 or $day > 31; 
return -1 if $month < 1 or $month > 12; 
my $time = timelocal(0, 0, 0, $day, $month - 1, $year); 
return (localtime($time))[6]; 
}

1;


Aber dann fehlt mir das Wissen das entsprechend umzusetzen.

Habe von Perl leider keine Ahnung.

Bräuchte den Wochentag halt an mehreren Stellen.

Das entsprechende userreading hätte ich auch schon.

fc0_date_WD {ReadingsVal("WetterProplanta","fc0_date",0)}

Wie bekomme ich jetzt dem beigebracht das anstelle 20.01.2023 dort Freitag erscheint.

Habe geschätzt 6-7 Stunden mit allem möglichen, auch aus dem Forum hier versucht.

Bin aber leider zu blöd wie es ausschaut.




Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

Otto123

Du bist hier vor allem falsch - schau mal was hier oben drüber steht -> https://forum.fhem.de/index.php/topic,47490.0.html
Im Wiki gibt es sowas, vielleicht für deinen Fall etwas umständlich? https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit#Beispiel:_Wochentag_zu_Datum
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Du übernimmst einfach die vor wenigen Tagen hier vorgeschlagene Funktion in der myUtils und übergibst in deinem userReadings  der Funktion das ReadingsVal("WetterProplanta","fc0_date",0).

Brad Majors

Zitat von: Otto123 am 20 Januar 2023, 13:16:35
Du bist hier vor allem falsch - schau mal was hier oben drüber steht -> https://forum.fhem.de/index.php/topic,47490.0.html
Im Wiki gibt es sowas, vielleicht für deinen Fall etwas umständlich? https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit#Beispiel:_Wochentag_zu_Datum

sh...... Das hatte ich übersehen. Sorry.

Kannst du es verschieben?


Den WIKI Eintrag hatte ich auch gelesen, bekam es aber nicht hin das es bei mir funktioniert hat.
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

TomLee

ZitatDen WIKI Eintrag hatte ich auch gelesen, bekam es aber nicht hin das es bei mir funktioniert hat.

Das klappt noch genauso wie an dem Tag als ich es dort festgehalten habe, zeig mal deinen Versuch ?

Verschieben musst du, ganz unten links.

Brad Majors

#5
Zitat von: TomLee am 20 Januar 2023, 13:19:09
Du übernimmst einfach die vor wenigen Tagen hier vorgeschlagene Funktion in der myUtils und übergibst in deinem userReadings  der Funktion das ReadingsVal("WetterProplanta","fc0_date",0).

ist so eingetragen, da waren auch noch 2-3 andere Versuche drin.

##############################################
# $Id: myUtilsTemplate.pm 21509 2020-03-25 11:20:51Z 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;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.

sub secondsSinceReadingChange($$) {
my ($device, $reading) = @_;
my $readingsTimestamp = ReadingsTimestamp($device, $reading, "failed");

if ($readingsTimestamp ne "failed") {
return time() - time_str2num($readingsTimestamp);
} else {
return -1;
}
}

# Liefert Wochentag (0 (So) - 6 (Sa)).
# Param: Datum ('24.12.2015')

sub getDayOfWeek($){ 
my $datum_str = shift || return -1; 
my($day, $month, $year) = split /\./, $datum_str; 
return -1 if $day < 1 or $day > 31; 
return -1 if $month < 1 or $month > 12; 
my $time = timelocal(0, 0, 0, $day, $month - 1, $year); 
return (localtime($time))[6]; 
}

sub wochentag{
my @weekdays = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
return $weekdays[((localtime(time))[6])];
}


1;


Ich verstehe nicht genau wie ich das machen soll

deinem userReadings  der Funktion das ReadingsVal("WetterProplanta","fc0_date",0).

In meinem Proplanta Modul kommen ca. 200 readings an.

So meinst du es aber nicht?
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

rabehd

Dem userreading fehlt sein Name
Auch funktionierende Lösungen kann man hinterfragen.

TomLee

#7
Für die Kommandozeile:
attr WetterProplanta userReadings fc0_date_WD:fc0_date.* {wochentag(ReadingsVal($name,'fc0_date','nA'))}

TomLee

Zitatsub wochentag{
my @weekdays = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
return $weekdays[((localtime(time))[6])];
}

Die zwei "Schleifchen" sind mMn. nur Deko, vermutlich damit das Kind hübsch aussieht als es vorgestellt wurde, die könntest dir sparen.

Brad Majors

#9
Zitat von: TomLee am 20 Januar 2023, 14:34:46
Für die Kommandozeile:
attr WetterProplanta userReadings fc0_date_WD:fc0_date.* {wochentag(ReadingsVal($name,'fc0_date','nA'))}


Danke schön, hat funktioniert. Du hast mein WE gerettet :).

Habe mir direkt (jetzt wo ich das Prinzip verstanden habe) noch eine short Variante eingetragen.

sub wochentagshort{
my @weekdays = qw(So Mo Di Mi Do Fr Sa);
return $weekdays[((localtime(time))[6])];
}


Die letzte Frage und dann bin ich durch.

In dem Proplanta gibt es WD:fc0_date, WD:fc1_date, WD:fc2_date, usw.

Wenn ich jetzt die Userreadings für 5 unterschiedliche fc.... haben möchte, geht das auch?
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

Otto123

#10
attr WetterProplanta userReadings fc0_date_WD:fc0_date.* {wochentag(ReadingsVal($name,'fc0_date','nA'))}, fc1_date_WD:fc1_date.* {wochentag(ReadingsVal($name,'fc1_date','nA'))}
usw :)
ZitatuserReadings
Komma getrennte Liste von benutzerdefinierten Readings.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Du kannst userReadings haben, soviele Du willst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

#12
das Reading fc... (die Angabe nach dem Doppelpunkt) ist der Readingname des trigger (Auslöser ist das zugehörige Event (hier alles -> .*) für die Änderung des userReadings, den kannst du nach belieben angeben.

Brad Majors

Das muß ich jetzt nicht verstehen?

attr WetterProplanta userReadings fc0_date_WD:fc0_date.* {wochentag(ReadingsVal($name,'fc0_date','nA'))}, fc1_date_WD:fc1_date.* {wochentag(ReadingsVal($name,'fc1_date','nA'))}

Ergebnis fc0 passt:

fc0_date           =     20.01.2023
fc0_date_WD    =     Freitag


Ergebnis fc1_date_WD passt nicht:

fc1_date           =     21.01.2023
fc1_date_WD    =     Freitag

er bleibt immer beim Freitag?
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

betateilchen

Zitat von: Brad Majors am 20 Januar 2023, 15:41:10
Das muß ich jetzt nicht verstehen?
...
er bleibt immer beim Freitag?

Das ist doch völlig logisch.

Deine Funktion wochentag() erwartet überhaupt keinen Parameter, sondern ermittelt den Wochentag immer aus der aktuellen Uhrzeit.

Zitat(localtime(time))[6]


Ich saß hier schon die ganze Zeit mit meinem Popcorn und habe darauf gewartet, dass es irgendeinem der Schlaumeier hier im Thread auffällt...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brad Majors

#15
ok, und wenn ich jetzt den Parameter sprich fc0_date, fc1_date eintragen will?

Wie mach ich das am einfachtsten?
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

betateilchen

Du musst die Funktion so umbauen, dass sie aus einem beliebigen Datum den Wochentag ermitteln kann.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brad Majors

Ich versuche es mit der hier

# Liefert Wochentag (0 (So) - 6 (Sa)).
# Param: Datum ('24.12.2015')

sub getDayOfWeek($){ 
my $datum_str = shift || return -1; 
my($day, $month, $year) = split /\./, $datum_str; 
return -1 if $day < 1 or $day > 31; 
return -1 if $month < 1 or $month > 12; 
my $time = timelocal(0, 0, 0, $day, $month - 1, $year); 
return (localtime($time))[6]; 
}



attr WetterProplanta userReadings fc0_date_WD:fc0_date.* {getDayOfWeek (ReadingsVal($name,'fc0_date','nA'))}, fc1_date_WD:fc1_date.* {getDayOfWeek (ReadingsVal($name,'fc1_date','nA'))}

Dann bekomme ich schon mal den Tag 5 oder 6 angezeigt. Jetzt muß ich nur noch die 5 oder 6 in Freitag oder Samstag umwandeln.
Hast du eine Idee?
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

Otto123

#18
ZitatDann bekomme ich schon mal den Tag 5 oder 6 angezeigt. Jetzt muß ich nur noch die 5 oder 6 in Freitag oder Samstag umwandeln.
Darauf nicht, aber die Frage war doch ohne den Zwischenschritt?

Das Beispiel aus dem Wiki macht genau das  ;) (Antwort #1)
sub wochentag {
    my $date = shift;
    my ($d,$m,$y) = split(/\./,$date);
    $m-=1;
    return strftime("%A",localtime(timelocal('0','0','0',$d,$m,$y)));
}


Aufruf Beispiel {wochentag('21.01.2023')} -> Samstag

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Stimmt, der Schlaumeier hat sich das die Tage gar nicht richtig durchgelesen und nur gewundert wie das sein kann wenn nix übergeben wird in der Routine und gedankenlos einfach so hingenommen.

Als Alternative kann ich das hier anbieten, das ist die Variante aus dem Wiki, die klappt wenn du im System auf de_DE.utf8 gestellt hast.

sub wochentag {
my $p = shift;
    my ($d,$m,$y) = split(/\./,$p);
    $m-=1;
    return strftime("%A",localtime(timelocal('0','0','0',$d,$m,$y)));
}


Wie man das mit dem vorgegebenem Array (das du die kurze Variante der Tage verwenden kannst) macht weiß ich auf Anhieb auch nicht, zieh ich mir noch nicht einfach aus dem Ärmel und muss/werd mich mit beschäftigen.

betateilchen

Zitat von: Otto123 am 20 Januar 2023, 16:11:32
Aufruf Beispiel {wochentag('21.01.2023')} -> Samstag

Ah, noch ein Schlaumeier mit einer "Guten Idee" - ich geh mal noch mehr Popcorn machen und setze mich wieder auf mein Sofa.

könnte ein langer Abend werden  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: yersinia am 20 Januar 2023, 16:13:33
Die Funktion erwartet ein Datum in dd.mm.yyyy und gibt den Wochentag in Text lang zurück.

oh, noch einer...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Das war doch aber die initiale Frage?
ZitatWie bekomme ich jetzt dem beigebracht das anstelle 20.01.2023 dort Freitag erscheint.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Brad Majors

#23
Otto das war die Lösung :) Danke schön.

sub weekday{
    my $date = shift;
    my ($d,$m,$y) = split(/\./,$date);
    $m-=1;
    return strftime("%A",localtime(timelocal('0','0','0',$d,$m,$y)));
}


Habe ihn in weekday umbenannt da ich die sub Wochentag schon hatte.

Und jetzt macht er was ich will

20.01 > Friday
21.01 > Saturday

aber mit dem englischen kann ich leben.
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

betateilchen

Zitat von: Otto123 am 20 Januar 2023, 16:21:41
Das war doch aber die initiale Frage?

Ja, die Frage war nach Freitag. Aber jetzt kommt halt nicht Freitag, sondern Friday.
Insofern ist für mich die ursprüngliche Frage nicht beantwortet.

Daran ändert auch das hier für mich nichts:

Zitat von: Brad Majors am 20 Januar 2023, 16:28:56
aber mit dem englischen kann ich leben.

Die ursprüngliche Funktion Wochentag wurde ja vor kurzem genau deshalb vorgeschlagen, weil man eben mit dem englischen NICHT leben wollte, sondern die Namen unabhängig von installierten locales haben wollte.

Auch in yersinias inzwischem gelöschten Vorschlag wäre zwar der "Wochentag in lang" rausgekommen, aber in deutsch auch nur unter der Voraussetzung, dass die locale=DE überhaupt installiert ist. Das dürfte bei >90% aller raspberries aber nicht gegeben sein.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

#25
So gehts mit dem Array:

sub wochentag{
my $v = shift;
my ($d,$m,$y) = split(/\./,$v);
$m-=1;
my @weekdays = qw(So Mo Di Mi Do Fr Sa);
return $weekdays[((localtime(timelocal('0','0','0',$d,$m,$y)))[6])];
}


Hier braucht man die "Schleifchen".

Otto123

Zitat von: betateilchen am 20 Januar 2023, 16:33:08
Ja, die Frage war nach Freitag. Aber jetzt kommt halt nicht Freitag, sondern Friday.
Bei mir kommt schon Freitag :) das er die locale nicht installiert/konfiguriert hat kann ich ja nicht wissen.
Man sollte das eigentlich im System einmal richtig machen, anstatt an all möglichen Ecken Sonderlocken zu stricken.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Besser erstmal so das nix zurückgegeben wird, wenn man nix übergibt:

sub wochentag{
my $v = shift || return;
my ($d,$m,$y) = split(/\./,$v);
$m-=1;
my @weekdays = qw(So Mo Di Mi Do Fr Sa);
return $weekdays[((localtime(timelocal('0','0','0',$d,$m,$y)))[6])];
}


Die Variante das per default das heutige Datum genommen wird kommt mir noch.

TomLee

ZitatBei mir kommt schon Freitag :) das er die locale nicht installiert/konfiguriert hat kann ich ja nicht wissen

Am/Im ersten Beitrag kann man sich das ableiten, mir wars auch nicht aufgefallen.

betateilchen

Zitat von: Otto123 am 20 Januar 2023, 16:44:41
das er die locale nicht installiert/konfiguriert hat kann ich ja nicht wissen.

Zitat von: TomLee am 20 Januar 2023, 16:54:28
Am/Im ersten Beitrag kann man sich das ableiten, mir wars auch nicht aufgefallen.

Genau. Wenn man den Thread aufmerksam lesen würde, bevor man irgendeine Antwort raushaut, schon...

Es geht doch hier im Forum nicht darum, möglichst immer der Erste zu sein, der eine Antwort gibt.
Eine qualifizierte Antwort eine halbe Stunde später wäre oft sehr viel hilfreicher.

Dieses Streben nach "ich habe die erste Antwort gegeben, ich bin der Größte" nervt mich hier im Forum immer mehr.
Es wird viel zu wenig Zeit darauf verwendet, das eigentliche Problem eines Fragestellers überhaupt zu erfassen.

Und es ist immer die gleiche Handvoll Leute, die sich durch dieses kontraproduktive Verhalten quer durchs Forum auszeichnet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Zitat von: betateilchen am 20 Januar 2023, 17:10:02
Und es ist immer die gleiche Handvoll Leute, die sich durch dieses kontraproduktive Verhalten quer durchs Forum auszeichnet.
Jawohl Herr Oberpopcornverwalter  ;D Von Dir kam jetzt aber in 9 Beiträgen gar kein produktiver Vorschlag zur Lösung?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: Otto123 am 20 Januar 2023, 17:14:53
Von Dir kam jetzt aber in 9 Beiträgen gar kein produktiver Vorschlag zur Lösung?

Das stimmt so nicht. Offenbar ist Dir (und einigen anderen) noch nicht aufgefallen, wie ich in solchen Fällen gerne vorgehe.

Meistens warte ich in einem solchen Thread erstmal ab, bis sich die Oberschlaumeier ausgetobt haben und das Problem immer noch nicht gelöst ist.

Dann versuche ich, einen strukturierten Lösungsweg zu beginnen - aber der Zeitpunkt war in diesem Thread noch nicht erreicht. Meine Hoffnung ist immer, dass ich diesen Lösungsweg dann Schritt für Schritt mit dem Fragesteller gehen kann, ohne dass die Schlaumeier nochmal aufwachen und dann doch wieder dazwischenquatschen. Das klappt leider nur manchmal.

Auch in diesem Fall hat das nicht funktioniert. Ab dem Moment, in dem ich angefangen hatte, darauf hinzuweisen, dass die angedachte "Lösung" überhaupt nicht funktionieren KANN, (und auch versuchte zu erklären, warum nicht!) ging es sofort wieder kreuz und quer und es kamen weitere "Vorschläge" die einfach nicht funktionieren konnten.

Deshalb sitze ich ganz gerne auf dem Sofa, genieße mein Popcorn und warte einfach ab. Für alles andere ist mir einfach meine Zeit zu schade.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brad Majors

#32
Nicht streiten Jungs :).

Für mich noob ist so ziemlich alles hilfreich was ich hier lesen kann.

Aus manchen Posts kann ich mehr, aus anderen weniger raus nehmen weil mir teilweise der Background fehlt.
Aber irgendwie komme ich dann doch zum Ergebnis.

Ich frage jetzt auch nicht ob die lokale eine Sache vom Pi oder von FHEM ist :).
Da werde ich mich demnächst mal mit beschäftigen.

Wie gesagt für den Moment ist Friday erst einmal gut für mich.

Nochmals Danke an alle.

Wofür ich das brauche seht ihr hier.
Im Kindle Display stand vorher das Datum.

Und dann habe ich immer bei Tag x gerechnet welcher Wochentag ist das nur :).
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

TomLee

Hey Brad Majors,

solange es keinen anderen Kasper gibt der einen besseren Vorschlag macht und dir die Abkürzungen wichtig sind für deine Darstellung, kannst du (mein ich) die hier gezeigte Funktion nutzen.

Brad Majors

Ist ja noch besser :).

Ich hatte gestern wohl eine andere Wochentag Funktion benutzt und daher ging es nicht.

Jetzt mit der hier (von dir empfohlen) gehen sogar dir Kurzversionen, mehr brauch ich nicht, TOP.

sub wochentag{
my $v = shift // "my ($day, $month, $year) = (localtime)[3,4,5]; sprintf('%02d.%02d.%s',$month+1,$day,$year+1900)";
my ($d,$m,$y) = split(/\./,$v)};
$m-=1;
my @weekdays = qw(So Mo Di Mi Do Fr Sa);
return $weekdays[((localtime(timelocal('0','0','0',$d,$m,$y)))[6])];
}


Danke euch allen das ihr euch immer die Mühe macht uns bis ins Ziel zu leiten.

Nach jetzt 6-7 Jahren FHEM habe ich mich mal mit den 99_myutils beschäftig und viel gelernt.
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

TomLee

#35
Das ist schon arm, von jedem einzelnen üblich Helfenden der bisher gesehen hat das Brad Majors meinen ersten Versuch das umzusetzen kopiert hat und nicht darauf hinweist daß das Blödsinn ist was da rauskommt wenn man keinen Parameter übergibt..

@Brad Majors
Das Beispiel was ich verlinkt habe sollte funktionieren (das von JoWiemann), habs gestern Abend aber auch nur kurz getestet und heute war ich bis jetzt mit einem Iglu-Bau beschäftigt.

edit:
oder diese etwas kürzere Variante:

sub wochentag {
   my $v = shift // localtime->dmy('.');
   my ($d,$m,$y) = split(/\./,$v);
   my @weekdays = qw(So Mo Di Mi Do Fr Sa);
   return $weekdays[((localtime(timelocal('0','0','0',$d,$m-1,$y)))[6])];
}