[gelöst] data-substitution/toDate(): Wie Wochentag-Label in anderer Sprache?

Begonnen von dadoc, 04 Mai 2023, 18:19:39

Vorheriges Thema - Nächstes Thema

dadoc

Hallo zusammen,
ich bastle an einer Wettervorhersage für Orte in Spanien und komme an einer Stelle nicht weiter. Ich wandle das Datum (label) mit
data-substitution="toDate().eeee()"in normalsprachliche Wochentage um. Diese sind jedoch auf Deutsch, ich hätte sie (und nur sie) gern auf Spanisch.
Ich habe alle möglichen Ergänzungen und Klammerungen der data-substitution versucht, ohne Erfolg.
Wie bekomme ich denn eine zweite Ersetzung in der Art von
data-substitution='["Donnerstag","Jueves","Freitag","Viernes","Samstag","Sábado","Sonntag","Domingo","Montag","Lunes","Dienstag","Martes","Mittwoch","Miércoles"]'in ftui 2.5 ohne Dummy-Orgie in das Label? Habe es auch mit s/ RegEx versucht, bin dabei aber schmerzhaft an meine Grenzen gestoßen :-/
Vielen Dank & Viele Grüße
Martin

Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

yersinia

Das wird so nicht funktionieren. Du kannst entweder das Datum in einen (hier deutschen) Wochentag umwandeln
data-substitution="toDate().eeee()"oder einen gegebenen deutschen Wochentag in einen spanischen ersetzen
data-substitution='["Donnerstag","Jueves","Freitag","Viernes","Samstag","Sábado","Sonntag","Domingo","Montag","Lunes","Dienstag","Martes","Mittwoch","Miércoles"]'Beides gleichzeitig geht mWn nicht. Liefert dein Wetterdevice keine Wochentage?

Alternativ kannst du die FTUI2 Funktionen entsprechend selbst erweitern indem du zB eeee kopierst und entsprechend anpasst (in der format Funktion und die eeee Funktion kopieren und anpassen). Du darfst dann halt kein Update für FTUI2 einspielen.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

dadoc

Vielen Dank für den Tipp.
ZitatLiefert dein Wetterdevice keine Wochentage?
Nein, die Daten kommen vom staatlichen Wetterservice aemet und sehen z.B. so aus:
[ {
  "origen" : {
    "productor" : "Agencia Estatal de Meteorología - AEMET. Gobierno de España",
    "web" : "https://www.aemet.es",
    "enlace" : "https://www.aemet.es/es/eltiempo/prediccion/municipios/estellencs-id07021",
    "language" : "es",
    "copyright" : "© AEMET. Autorizado el uso de la información y su reproducción citando a AEMET como autora de la misma.",
    "notaLegal" : "https://www.aemet.es/es/nota_legal"
  },
  "elaborado" : "2023-05-05T07:21:08",
  "nombre" : "Estellencs",
  "provincia" : "Illes Balears (Mallorca)",
  "prediccion" : {
    "dia" : [ {
      "probPrecipitacion" : [ {
        "value" : 0,
        "periodo" : "00-24"
      }, {
        "value" : 0,
        "periodo" : "00-12"
      }, {
        "value" : 0,
        "periodo" : "12-24"
      }, {
        "value" : 0,
        "periodo" : "00-06"
      }, {
        "value" : 0,
        "periodo" : "06-12"
      }, {
        "value" : 0,
        "periodo" : "12-18"
      }, {
        "value" : 0,
        "periodo" : "18-24"
      } ],
      "cotaNieveProv" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      }, {
        "value" : "",
        "periodo" : "00-06"
      }, {
        "value" : "",
        "periodo" : "06-12"
      }, {
        "value" : "",
        "periodo" : "12-18"
      }, {
        "value" : "",
        "periodo" : "18-24"
      } ],
      "estadoCielo" : [ {
        "value" : "17",
        "periodo" : "00-24",
        "descripcion" : "Nubes altas"
      }, {
        "value" : "12",
        "periodo" : "00-12",
        "descripcion" : "Poco nuboso"
      }, {
        "value" : "17",
        "periodo" : "12-24",
        "descripcion" : "Nubes altas"
      }, {
        "value" : "11n",
        "periodo" : "00-06",
        "descripcion" : "Despejado"
      }, {
        "value" : "12",
        "periodo" : "06-12",
        "descripcion" : "Poco nuboso"
      }, {
        "value" : "17",
        "periodo" : "12-18",
        "descripcion" : "Nubes altas"
      }, {
        "value" : "81",
        "periodo" : "18-24",
        "descripcion" : "Niebla "
      } ],
      "viento" : [ {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "00-24"
      }, {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "00-12"
      }, {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "12-24"
      }, {
        "direccion" : "S",
        "velocidad" : 5,
        "periodo" : "00-06"
      }, {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "06-12"
      }, {
        "direccion" : "C",
        "velocidad" : 0,
        "periodo" : "12-18"
      }, {
        "direccion" : "C",
        "velocidad" : 0,
        "periodo" : "18-24"
      } ],
      "rachaMax" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      }, {
        "value" : "",
        "periodo" : "00-06"
      }, {
        "value" : "",
        "periodo" : "06-12"
      }, {
        "value" : "",
        "periodo" : "12-18"
      }, {
        "value" : "",
        "periodo" : "18-24"
      } ],
      "temperatura" : {
        "maxima" : 23,
        "minima" : 13,
        "dato" : [ {
          "value" : 16,
          "hora" : 6
        }, {
          "value" : 22,
          "hora" : 12
        }, {
          "value" : 20,
          "hora" : 18
        }, {
          "value" : 17,
          "hora" : 24
        } ]
      },
      "sensTermica" : {
        "maxima" : 23,
        "minima" : 13,
        "dato" : [ {
          "value" : 16,
          "hora" : 6
        }, {
          "value" : 22,
          "hora" : 12
        }, {
          "value" : 20,
          "hora" : 18
        }, {
          "value" : 17,
          "hora" : 24
        } ]
      },
      "humedadRelativa" : {
        "maxima" : 75,
        "minima" : 40,
        "dato" : [ {
          "value" : 55,
          "hora" : 6
        }, {
          "value" : 65,
          "hora" : 12
        }, {
          "value" : 75,
          "hora" : 18
        }, {
          "value" : 65,
          "hora" : 24
        } ]
      },
      "uvMax" : 8,
      "fecha" : "2023-05-05T00:00:00"
    }, {
      "probPrecipitacion" : [ {
        "value" : 25,
        "periodo" : "00-24"
      }, {
        "value" : 0,
        "periodo" : "00-12"
      }, {
        "value" : 25,
        "periodo" : "12-24"
      }, {
        "value" : 0,
        "periodo" : "00-06"
      }, {
        "value" : 0,
        "periodo" : "06-12"
      }, {
        "value" : 0,
        "periodo" : "12-18"
      }, {
        "value" : 25,
        "periodo" : "18-24"
      } ],
      "cotaNieveProv" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      }, {
        "value" : "",
        "periodo" : "00-06"
      }, {
        "value" : "",
        "periodo" : "06-12"
      }, {
        "value" : "",
        "periodo" : "12-18"
      }, {
        "value" : "",
        "periodo" : "18-24"
      } ],
      "estadoCielo" : [ {
        "value" : "13",
        "periodo" : "00-24",
        "descripcion" : "Intervalos nubosos"
      }, {
        "value" : "12",
        "periodo" : "00-12",
        "descripcion" : "Poco nuboso"
      }, {
        "value" : "14",
        "periodo" : "12-24",
        "descripcion" : "Nuboso"
      }, {
        "value" : "12n",
        "periodo" : "00-06",
        "descripcion" : "Poco nuboso"
      }, {
        "value" : "12",
        "periodo" : "06-12",
        "descripcion" : "Poco nuboso"
      }, {
        "value" : "14",
        "periodo" : "12-18",
        "descripcion" : "Nuboso"
      }, {
        "value" : "15",
        "periodo" : "18-24",
        "descripcion" : "Muy nuboso"
      } ],
      "viento" : [ {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "00-24"
      }, {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "00-12"
      }, {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "12-24"
      }, {
        "direccion" : "C",
        "velocidad" : 0,
        "periodo" : "00-06"
      }, {
        "direccion" : "NO",
        "velocidad" : 5,
        "periodo" : "06-12"
      }, {
        "direccion" : "C",
        "velocidad" : 0,
        "periodo" : "12-18"
      }, {
        "direccion" : "C",
        "velocidad" : 0,
        "periodo" : "18-24"
      } ],
      "rachaMax" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      }, {
        "value" : "",
        "periodo" : "00-06"
      }, {
        "value" : "",
        "periodo" : "06-12"
      }, {
        "value" : "",
        "periodo" : "12-18"
      }, {
        "value" : "",
        "periodo" : "18-24"
      } ],
      "temperatura" : {
        "maxima" : 25,
        "minima" : 15,
        "dato" : [ {
          "value" : 18,
          "hora" : 6
        }, {
          "value" : 23,
          "hora" : 12
        }, {
          "value" : 21,
          "hora" : 18
        }, {
          "value" : 18,
          "hora" : 24
        } ]
      },
      "sensTermica" : {
        "maxima" : 25,
        "minima" : 15,
        "dato" : [ {
          "value" : 18,
          "hora" : 6
        }, {
          "value" : 23,
          "hora" : 12
        }, {
          "value" : 21,
          "hora" : 18
        }, {
          "value" : 18,
          "hora" : 24
        } ]
      },
      "humedadRelativa" : {
        "maxima" : 85,
        "minima" : 35,
        "dato" : [ {
          "value" : 60,
          "hora" : 6
        }, {
          "value" : 60,
          "hora" : 12
        }, {
          "value" : 55,
          "hora" : 18
        }, {
          "value" : 35,
          "hora" : 24
        } ]
      },
      "uvMax" : 8,
      "fecha" : "2023-05-06T00:00:00"
    }, {
      "probPrecipitacion" : [ {
        "value" : 25,
        "periodo" : "00-24"
      }, {
        "value" : 25,
        "periodo" : "00-12"
      }, {
        "value" : 5,
        "periodo" : "12-24"
      } ],
      "cotaNieveProv" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      } ],
      "estadoCielo" : [ {
        "value" : "13",
        "periodo" : "00-24",
        "descripcion" : "Intervalos nubosos"
      }, {
        "value" : "13",
        "periodo" : "00-12",
        "descripcion" : "Intervalos nubosos"
      }, {
        "value" : "17",
        "periodo" : "12-24",
        "descripcion" : "Nubes altas"
      } ],
      "viento" : [ {
        "direccion" : "N",
        "velocidad" : 5,
        "periodo" : "00-24"
      }, {
        "direccion" : "E",
        "velocidad" : 5,
        "periodo" : "00-12"
      }, {
        "direccion" : "NE",
        "velocidad" : 10,
        "periodo" : "12-24"
      } ],
      "rachaMax" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      } ],
      "temperatura" : {
        "maxima" : 22,
        "minima" : 15,
        "dato" : [ ]
      },
      "sensTermica" : {
        "maxima" : 22,
        "minima" : 15,
        "dato" : [ ]
      },
      "humedadRelativa" : {
        "maxima" : 85,
        "minima" : 35,
        "dato" : [ ]
      },
      "uvMax" : 7,
      "fecha" : "2023-05-07T00:00:00"
    }, {
      "probPrecipitacion" : [ {
        "value" : 10,
        "periodo" : "00-24"
      }, {
        "value" : 10,
        "periodo" : "00-12"
      }, {
        "value" : 0,
        "periodo" : "12-24"
      } ],
      "cotaNieveProv" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      } ],
      "estadoCielo" : [ {
        "value" : "13",
        "periodo" : "00-24",
        "descripcion" : "Intervalos nubosos"
      }, {
        "value" : "13",
        "periodo" : "00-12",
        "descripcion" : "Intervalos nubosos"
      }, {
        "value" : "17",
        "periodo" : "12-24",
        "descripcion" : "Nubes altas"
      } ],
      "viento" : [ {
        "direccion" : "NO",
        "velocidad" : 10,
        "periodo" : "00-24"
      }, {
        "direccion" : "NO",
        "velocidad" : 10,
        "periodo" : "00-12"
      }, {
        "direccion" : "SO",
        "velocidad" : 10,
        "periodo" : "12-24"
      } ],
      "rachaMax" : [ {
        "value" : "",
        "periodo" : "00-24"
      }, {
        "value" : "",
        "periodo" : "00-12"
      }, {
        "value" : "",
        "periodo" : "12-24"
      } ],
      "temperatura" : {
        "maxima" : 23,
        "minima" : 15,
        "dato" : [ ]
      },
      "sensTermica" : {
        "maxima" : 23,
        "minima" : 15,
        "dato" : [ ]
      },
      "humedadRelativa" : {
        "maxima" : 95,
        "minima" : 45,
        "dato" : [ ]
      },
      "uvMax" : 8,
      "fecha" : "2023-05-08T00:00:00"
    }, {
      "probPrecipitacion" : [ {
        "value" : 0
      } ],
      "cotaNieveProv" : [ {
        "value" : ""
      } ],
      "estadoCielo" : [ {
        "value" : "17",
        "descripcion" : "Nubes altas"
      } ],
      "viento" : [ {
        "direccion" : "SO",
        "velocidad" : 15
      } ],
      "rachaMax" : [ {
        "value" : ""
      } ],
      "temperatura" : {
        "maxima" : 24,
        "minima" : 16,
        "dato" : [ ]
      },
      "sensTermica" : {
        "maxima" : 24,
        "minima" : 16,
        "dato" : [ ]
      },
      "humedadRelativa" : {
        "maxima" : 95,
        "minima" : 60,
        "dato" : [ ]
      },
      "uvMax" : 9,
      "fecha" : "2023-05-09T00:00:00"
    }, {
      "probPrecipitacion" : [ {
        "value" : 40
      } ],
      "cotaNieveProv" : [ {
        "value" : ""
      } ],
      "estadoCielo" : [ {
        "value" : "15",
        "descripcion" : "Muy nuboso"
      } ],
      "viento" : [ {
        "direccion" : "NO",
        "velocidad" : 5
      } ],
      "rachaMax" : [ {
        "value" : ""
      } ],
      "temperatura" : {
        "maxima" : 20,
        "minima" : 14,
        "dato" : [ ]
      },
      "sensTermica" : {
        "maxima" : 20,
        "minima" : 14,
        "dato" : [ ]
      },
      "humedadRelativa" : {
        "maxima" : 75,
        "minima" : 50,
        "dato" : [ ]
      },
      "fecha" : "2023-05-10T00:00:00"
    }, {
      "probPrecipitacion" : [ {
        "value" : 80
      } ],
      "cotaNieveProv" : [ {
        "value" : ""
      } ],
      "estadoCielo" : [ {
        "value" : "43",
        "descripcion" : "Intervalos nubosos con lluvia escasa"
      } ],
      "viento" : [ {
        "direccion" : "NO",
        "velocidad" : 20
      } ],
      "rachaMax" : [ {
        "value" : "45"
      } ],
      "temperatura" : {
        "maxima" : 19,
        "minima" : 11,
        "dato" : [ ]
      },
      "sensTermica" : {
        "maxima" : 19,
        "minima" : 11,
        "dato" : [ ]
      },
      "humedadRelativa" : {
        "maxima" : 80,
        "minima" : 60,
        "dato" : [ ]
      },
      "fecha" : "2023-05-11T00:00:00"
    } ]
  },
  "id" : 7021,
  "version" : 1.0
} ]

Ich habe nun in fhem-tablet-ui.js folgendes hinzugefügt:
var eeeee = this.eeeee();
...
ret = ret.replace('eeeee', eeeee);
...
Date.prototype.eeeee = function () {
var weekday_es = ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'];
    var weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    if (ftui.config.lang === 'de')
        return weekday_es[this.getDay()];
    return weekday[this.getDay()];
};
Im FE wirft
data-substitution="toDate().eeeee()allerdings den Fehler
ZitatError
wettervorhersage.html:1
TypeError: value.toDate(...).eeeee is not a function
Muss da evtl. auch noch etwas in fhem-tablet-ui.min.js geändert werden oder habe ich in meinem Beinah-Blindflug andere Fehler eingebaut?
Danke & Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

yersinia

Zitat von: dadoc am 05 Mai 2023, 10:10:40Muss da evtl. auch noch etwas in fhem-tablet-ui.min.js geändert
Kannst du, wenn du es dort findest. Du kannst aber auch anstelle der fhem-tablet-ui.min.js die fhem-tablet-ui.js einbinden. Irgendwo im header deiner index.html musst du ja ein
<script src="js/fhem-tablet-ui.js" defer></script>haben.

Ansonsten Browser neu laden und cache leeren.

Für dich geht das auch schlanker:
Date.prototype.eeeee = function () {
var weekday = ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'];
return weekday[this.getDay()];
};
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

dadoc

Danke für die Tipps.
Irgendwie merkwürdig: Selbst wenn ich die Tagesbezeichnungen im Original-eeee ändere, bleiben sie brav auf Deutsch, trotz Neustarts, Cache-Leerung usw.
Ich habe es jetzt anders gelöst:
In 99_myUtils.pm:
sub wday ($)
{
    my ($obj) = @_;
    my $date = substr($obj,0,10);
    my ($d,$m,$y) = split(/\-/,$date);
    my @weekdays = qw(Domingo Lunes Martes Miércoles Jueves Viernes Sábado);
    my $seconds = time_str2num($date);
    my $result = POSIX::strftime("%A",localtime($seconds));
    return $weekdays[((localtime($seconds))[6])];
}

Und dann Userreadings:
weekday0 {my $r = (wday("ae_Wetter","fc0_date",0)); return $r },
weekday1 {my $r = (wday("ae_Wetter","fc1_date",0)); return $r },
weekday2 {my $r = (wday("ae_Wetter","fc2_date",0)); return $r },
weekday3 {my $r = (wday("ae_Wetter","fc3_date",0)); return $r },
weekday4 {my $r = (wday("ae_Wetter","fc4_date",0)); return $r },
weekday5 {my $r = (wday("ae_Wetter","fc5_date",0)); return $r },
weekday6 {my $r = (wday("ae_Wetter","fc6_date",0)); return $r }

Das auch als Beitrag zu einem kürzlichen Thread zu einem ähnlichen Thema, wo sich die Popcorn-Esser, Schlaumeier und Code-Snippet-Räuber ziemlich die Brocken um die Ohren gehauen haben ;-)

Vielen Dank & viele Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee

ZitatIch habe es jetzt anders gelöst:

Also ich komm bei deiner Sub nicht ganz mit.

Du übergibst drei Parameter, es wird aber nur einer erwartet. Soll hier nicht das Ergebnis einer ReadingsVal-Abfrage übergeben werden und steht da nix im Log ?
Ich meine es ist ein Proplanta-Device und in den Readings fcX_date steht das Datum mit Punkt als Trenner (zumindest hat das meine Suche ergeben).
Wozu dann der Substring mit den 10 Zeichen ?
Und warum am - splitten, wenn die Trennzeichen Punkte sind ?
Wozu überhaupt splitten, wenn die Variablen gar nicht weiter verwendet werden ?
$result wird auch nicht weiter verwendet? Böser Code-Snippet-Räuber.

Verstehen tu ich deinen Ansatz so:

sub wday ($)
{
    my ($date) = @_;
my ($d,$m,$y) = split(/\./,$date);
    my @weekdays = qw(Domingo Lunes Martes Miércoles Jueves Viernes Sábado);
    my $seconds = time_str2num($y.'-'.$m.'-'.$d);
    return $weekdays[((localtime($seconds))[6])];
}

weekday0:fc0_date.* {wday(ReadingsVal("ae_Wetter","fc0_date",'')) },
...



Mir gefällt die Time::Piece-Variante, mit der hatte ich mich auch etwas weiter beschäftigt.
Unter Verwendung von Time::Piece könnte man das meinem bisherigen Verständnis nach so machen (geht aber nur mit einer Perl-Version >= 5.8 ):

sub wday {
my $date = shift // return;
my @weekdays = qw(Domingo Lunes Martes Miércoles Jueves Viernes Sábado);
return Time::Piece->strptime($date, '%d.%m.%Y')->day(@weekdays);
}

weekday0:fc0_date.* {wday(ReadingsVal("ae_Wetter","fc0_date",''))},
...

dadoc

Zitat von: TomLee am 07 Mai 2023, 15:51:55
ZitatIch habe es jetzt anders gelöst:

Also ich komm bei deiner Sub nicht ganz mit.
Das kann ich nachvollziehen :-/ Ich hatte meine "Lösung" versehentlich aus einem nicht aktualisierten Browserfenster rauskopiert, natürlich habe ich es angelegt als
weekday0 {my $r = (wday(ReadingsVal("ae_Wetter","fc0_date",0))); return $r },
weekday1 {my $r = (wday(ReadingsVal("ae_Wetter","fc1_date",0))); return $r },
weekday2 {my $r = (wday(ReadingsVal("ae_Wetter","fc2_date",0))); return $r },
weekday3 {my $r = (wday(ReadingsVal("ae_Wetter","fc3_date",0))); return $r },
weekday4 {my $r = (wday(ReadingsVal("ae_Wetter","fc4_date",0))); return $r },
weekday5 {my $r = (wday(ReadingsVal("ae_Wetter","fc5_date",0))); return $r },
weekday6 {my $r = (wday(ReadingsVal("ae_Wetter","fc6_date",0))); return $r }
sonst hätte das sicherlich nicht funktioniert.

ZitatIch meine es ist ein Proplanta-Device und in den Readings fcX_date steht das Datum mit Punkt als Trenner (zumindest hat das meine Suche ergeben).
Wozu dann der Substring mit den 10 Zeichen ?
Und warum am - splitten, wenn die Trennzeichen Punkte sind ?
Es ist kein Proplanta-Device. Ich hole die Daten ziemlich kompliziert per JsonMod von der Seite des offiziellen spanischen Wetterdienstes aemet.
Und das Datum kommt da als 2023-05-07 00:00:00. Deswegen hatten auch die Lösungen aus dem verlinkten Thread bei mir nicht funktioniert, weil bei denen der Punkt und nicht der Bindestrich erwartet wurde.
Ich dachte, es sei eine gute Idee, erstmal die Uhrzeit wegzumachen. Aber es scheint wohl tatsächlich so, dass time2strnum auch mit Bindestrichen funktioniert, insofern kann das weg

ZitatWozu überhaupt splitten, wenn die Variablen gar nicht weiter verwendet werden ?
$result wird auch nicht weiter verwendet? Böser Code-Snippet-Räuber.
Wohl wahr, man sollte keine Lösungen posten, bevor man den Saustall nicht aufgeräumt hat, bloß weil sie (endlich) funktionieren ;)

ZitatMir gefällt die Time::Piece-Variante, mit der hatte ich mich auch etwas weiter beschäftigt.
Unter Verwendung von Time::Piece könnte man das meinem bisherigen Verständnis nach so machen (geht aber nur mit einer Perl-Version >= 5.8 ):

sub wday {
my $date = shift // return;
my @weekdays = qw(Domingo Lunes Martes Miércoles Jueves Viernes Sábado);
return Time::Piece->strptime($date, '%d.%m.%Y')->day(@weekdays);
}

weekday0:fc0_date.* {wday(ReadingsVal("ae_Wetter","fc0_date",''))},
...
Werde ich interessehalber mal ausprobieren
Vielen Dank & viele Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee

Zitat... Und das Datum kommt da als 2023-05-07 00:00:00.
ZitatWerde ich interessehalber mal ausprobieren

Sollte so tun:

sub wday {
    my $date = shift // return;
    my @weekdays = qw(Domingo Lunes Martes Miércoles Jueves Viernes Sábado);
    return Time::Piece->strptime($date, '%Y-%m-%d%n%H:%M:%S')->day(@weekdays);
}

weekday0:fc0_date.* {wday(ReadingsVal($name,'fc0_date',''))},
...