Datum "schöner" aufbröseln aus Reading

Begonnen von B.Stromberg, 06 August 2021, 16:08:40

Vorheriges Thema - Nächstes Thema

B.Stromberg

Moin!
Ich habe mir eine Benachrichtigung für meinen Briefkasten gebastelt, wenn der Postbote einen Brief einwirft.

Das Ganze läuft über einen EQ3 Fensterkontakt.
Nun würde ich mir gern das Datum und die Uhrzeit anzeigen lassen (Wochentag als Name wäre ein Träumchen).

Dazu nutze ich aus den Internals das Reading STATE (aus den eigentlich Readings state funktioniert nicht, da der Fernsterkontakt alle Stunde ein "Lebenszeichen" schickt)

Ausgegeben wird das nun so:

2021-08-06 15:58:11

Wie bekomme ich das Ganze schöner hin, also im Deutschen Datumsformat oder anstelle des Datums mit Wochentag?
Wäre für Tipps sehr dankbar!



betateilchen

Zitat von: B.Stromberg am 06 August 2021, 16:08:40
Dazu nutze ich aus den Internals das Reading STATE

In den Internals gibt es keine "readings", sondern maximal "Werte". Readings gibt es nur in readings.




Zitat von: B.Stromberg am 06 August 2021, 16:08:40
Ich habe mir eine Benachrichtigung für meinen Briefkasten gebastelt, wenn der Postbote einen Brief einwirft.

Wenn man wüsste, wie Du diese Benachrichtigung gebaut hast, wäre es einfacher, Dir zu helfen.
Wenn die Benachrichtigung in Echtzeit, also genau dann, wenn der Briefträger den Brief einwirft, erfolgt, brauchst Du eigentlich keine Werten aus FHEM (egal ob reading oder internal) denn die Uhrzeit ist ja absolut.

Im einfachsten Fall könntest Du also einfach mit strftime() arbeiten, damit kannst Du die Ausgabe formatieren, wie Du möchtest.

Anwendungsbeispiele finden sich jede Menge hier im Forum oder über Google.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

andies

#2
ich habe das so gemacht
attr Briefkasten stateFormat {return WeekdayAndTimeFromTimestamp(ReadingsTimestamp($name,"PostDa",""))}

und dann musst du in 99_myUtils.pm definieren
sub WeekdayAndTimeFromTimestamp($){
    my ($TimeStamp) = $_[0];
    my @days = qw/So Mo Di Mi Do Fr Sa/;
    $TimeStamp =~ /^(\d+)-(\d+)-(\d+)\s(\d+:\d+):(\d+)$/;
  my $wday = $days[(localtime(timelocal(0,0,0,$3,$2-1,$1-1900)))[6]];
  return "$wday $4";
}


Ausgelöst wird das durch ein Doif,

defmod Briefkasten_DOIF DOIF ([Briefkasten:state] eq "open") (set TelegramBot _msg  @XXXXXXXX 📬, setreading Briefkasten PostDa 1)
attr Briefkasten_DOIF addStateEvent 1
attr Briefkasten_DOIF cmdpause

(wobei statt XXXXX meine Adresse da steht).

Geht sicher eleganter...
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann