Corona Fallzahlenübersicht in FTUI (COVID-19)

Begonnen von somansch, 24 März 2020, 23:09:09

Vorheriges Thema - Nächstes Thema

yersinia

Zitat von: ulobo60 am 23 April 2021, 18:38:23Sehe ich denn Folgendes richtig (bis die von Dir angesprochene Einbindungs-Lösung offiziell verwirklicht würde):
1) Ich speichere eine Datei 'wandler_ulf.pm' mit Deinem Inhalt (sub wandler { ...} ) ins Verzeichnis /opt/fhem/FHEM ab.
2) Ich setze im HTML-Template 'template_news_corona.html' vor jede Zahlenabfrage (also bspw 'data-get="var_country_cases") den entsprechenden Befehl, um die 'sub wandler' abzuarbeiten! ähem: bei dieser Codierung muss ich schon passen  :-[
Nein. Erstmal ist das perl und hat wenig bis gar nichts mit HTML/FTUI zu tun. Du erstellst, sofern nicht bereits vorhanden, eine 99_myUtils.pm Datei, in diese fügst du den Code ein:
# Die Subroutine zum einsetzen der Tausender Trennpunkte
sub wandler {
  my $zahl = shift;
  my $text = reverse $zahl;
  $text =~ s/\./\,/g;  #replace decimal point by decimal comma
  $text =~ s/(\d\d\d)(?=\d)(?!\d*\,)/$1./g;
  return scalar reverse $text;
}

und speicherst.

Dann kannst du auf diese sub aus FHEM in perl heraus zugreifen, zum Beispiel in deinem covid-JsonMod-Device in der readingList (nicht getestet):
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['76', '64', '80', '66', '95', '230'])]"), concat(property('attributes.OBJECTID'),'_cases'), wandler(property('attributes.cases')));
Oder du erzeugst dir ein zusätzliches userReading (attribut userReading).

Da du in FTUI2 das label widget verwendest, sollte es da eigentlich keine Änderungen geben.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | 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

ulobo60

#31
... wow, wieder mal die volle Aufklärung und Hilfe !
Vielen Dank, yersinia.

Aus meinem Screenshot (siehe angehängtes Bild) kannst Du entnehmen, dass in der FTUI2-Darstellung (fast alles) bestens funktioniert im FTUI2.
Nur die Spalte "Neu Infizierte" kränkelt noch.

Das liegt m.E. an folgendem Sachverhalt:
Das RKI schreibt in seinen Json-Datensatz keine Vortageswerte!
Ab Mitternacht wird bspw. der Länder-Wert "todayCases" vom RKI mit '0' gemeldet.
Das Feld füllt sich im Laufe des Tages mit den dann gemeldeten Werten für Neu-Infizierte.
Einigermaßen valide Tagesdaten hat man dann erst ab so ca. 18:00 Uhr.

andy98 hatte dafür ein DOIF geschrieben, das gegen ca. 23:50 Uhr den bis dato aufgelaufenen Tageswert in ein Feld z.B "todayCases_yesterday" kopiert.
Diese gestrigen Werte werden im FTUI2 angezeigt!
Ist mir lieber, als nur fast den ganzen Tag dort eine "0" zu sehen.
Mit diesen Übergabedaten kann man aber nach Mitternacht keine Berechnungen durchführen, da sie ja schon mit den Tausenderpunkten versehen wurden.

Ich schaue mir am Montag Vormittag mal an, ob ich dafür spezielle userReadings erstellen kann.
Wünsche Dir/Euch erst mal ein schönes Rest-Wochenende.
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

yersinia

Deine Annahme ist korrekt, jdf mMn. Mit "123.456,789" kannst du schlecht rechnen. Aber das war uns ja von vornherein klar.
Nun kannst du dir entweder eigene userReadings bauen und diese dann für FTUI2 zur Anzeige mit Tausenderpunkten vorhalten - oder du versuchst nur für die Berechnung die Tausenderpunktänderung zu revidieren. Und dies mit einer weiteren sub in deiner myUtils:
sub wandlerzurueck {
  my $text = shift;
  $text =~ s/\.//g;  #eliminate point
  $text =~ s/\,/\./g;  #replace decimal comma with point
  return scalar $text;
}

Aber das funktioniert nur für Zahlen in dem Format 123.456.789,098; Zahlen wie 123456789.098 werden hier verfälscht.

Bezgl Andy89's Corona script verweist du auf dieses hier?
Da würde ich den Teil der Vortagsberechnung entsprechend anpassen/ergänzen - zum einen vor Berechnung in eine 'normale' Zahl konvertieren und bevor das Ergebnis als reading geschrieben wird, wieder um Tausenderpunkt ergänzen (ungetestet):
sub calcStatesDiffBetweenYesterdayAndToday()
{
my @states = getStates();
  my $device = getStatesDevice();
my ($value_yesterday,$value_today,$value_diff);

foreach (@states)
{
Log 5, "[99_myCoronaUtils:calcStatesDiffBetweenYesterdayAndToday] Land: ".$_;
$value_yesterday = wandlerzurueck(ReadingsVal($device,$_."_cases_yesterday",-1)); # <===
$value_today = wandlerzurueck(ReadingsVal($device,$_."_cases",-1)); # <===
$value_diff = wandler($value_today-$value_yesterday); # <===
setReading($device,$_."_todayCases",$value_diff);

$value_yesterday = wandlerzurueck(ReadingsVal($device,$_."_deaths_yesterday",-1)); # <===
$value_today = wandlerzurueck(ReadingsVal($device,$_."_deaths",-1)); # <===
$value_diff = wandler($value_today-$value_yesterday); # <===
setReading($device,$_."_todayDeaths",$value_diff);
}
return;
}

(btw, mich wundert das er hier mit readingsVal anstelle von readingsNum für Berechnungen arbeitet - was aber in deinem Fall hier besser ist, da ich nicht weiss wie readingsNum die Zahlen mit Tausenderpunkt handhabt)

[OT]Bei der Qualität der Datenübertragung sowie dessen Zeitpunkt der Gesundheitsämter betrachte ich die Werte eher als gewürfelt und 'grobe Richtung' als exakte Werte. Es ist immer wieder beschämend zu sehen, dass die Fallzahlen am Wochenende und Montags nach unten gehen weil einfach weniger getestet, gemeldet, gearbeitet wird.[/OT]
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | 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

ulobo60

Moin yersinia,

... Deine 'wandlerzurueck'-Idee beeindruckt mich natürlich wieder mal...

Großen Dank für Deine Tipps.
Habe Deine Vorschläge/Hinweise von gestern und vorgestern umgesetzt.
M.E. ist alles paletti (siehe angefügten Screenshot).

Dass "Neu Infizierte" (= 'todayCases') nicht formatiert sind, ist m.E. logisch.
Hier werden ja die Vortageswerte angezeigt - und die sind halt noch ohne Tausenderpunkte.
Das gilt m.E. auch für das Feld "Tote neu" (= 'todayDeaths') - nur hier liegen alle Werte unter 1.000, so dass man die fehlende Formatierung nicht sieht.
Schätze mal, dass ich morgen auch in der Spalte "Neu Infizierte" Tausenderpunkte sehen werde!
SPAIN (ESP) hatte für gestern wohl nix gemeldet. Habe gerade mal (13:45 Uhr) im heute aktuellen RKI-Datensatz nachgeschaut - ist heute auch noch auf 0 in den Feldern "Neu Infizierte" und "Tote neu".
Schaun mer mal - morgen.

Für alle interessierten Mitlesenden (und COPY-Freunde, wie mich :) ) folgen untenstehend alle benötigten Elemente (Devices, DOIF, die 2 von mir geänderten .pm-Dateien) zwecks Übernahme.
Euer Dank gebührt Andy89 und yersinia.
Bitte beachtet die Warnung der Profis vor der Benutzung der wandler-Funktion. Damit umgewandelte Ergebnisse dürfen nur zu Ansicht und keinesfalls zur Weiterberechnung verwendet werden. Es kann zu nur schwer nachvollziehbaren Fehlern kommen! 

Device 'coronaSpread':

define coronaSpread JsonMod https://disease.sh/v3/covid-19/countries
setuuid coronaSpread 60787e5d-f33f-4a34-573d-b37eab31d80fb449
attr coronaSpread event-on-change-reading .*
attr coronaSpread event-on-update-reading Germany_todayDeaths
attr coronaSpread interval 1/10 * * * *
attr coronaSpread readingList multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_name'), property('country'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_cases'), wandler(property('cases')));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_casesPerOneMillion'), wandler(property('casesPerOneMillion')));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_todayCases'), wandler(property('todayCases')));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_active'), wandler(property('active')));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_deaths'), wandler(property('deaths')));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_todayDeaths'), wandler(property('todayDeaths')));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD'])]"), concat(property('countryInfo.iso3'), '_recovered'), wandler(property('recovered')));;\
attr coronaSpread room Corona-Status
attr coronaSpread room Corona-Status
attr coronaSpread stateFormat Heutige deutsche Fälle: DEU_todayCases
attr coronaSpread userReadings DEU_procent_todayDeaths {ReadingsVal("coronaSpread","DEU_todayDeaths","")/ReadingsVal("coronaSpread","DEU_deaths","")*100},\
USA_procent_todayDeaths {ReadingsVal("coronaSpread","USA_todayDeaths","")/ReadingsVal("coronaSpread","USA_deaths","")*100},\
GBR_procent_todayDeaths {ReadingsVal("coronaSpread","GBR_todayDeaths","")/ReadingsVal("coronaSpread","GBR_deaths","")*100},\
FRA_procent_todayDeaths {ReadingsVal("coronaSpread","FRA_todayDeaths","")/ReadingsVal("coronaSpread","FRA_deaths","")*100},\
ESP_procent_todayDeaths {ReadingsVal("coronaSpread","ESP_todayDeaths","")/ReadingsVal("coronaSpread","ESP_deaths","")*100},\
NLD_procent_todayDeaths {ReadingsVal("coronaSpread","NLD_todayDeaths","")/ReadingsVal("coronaSpread","NLD_deaths","")*100},\
ITA_procent_todayDeaths {ReadingsVal("coronaSpread","ITA_todayDeaths","")/ReadingsVal("coronaSpread","ITA_deaths","")*100},\
TUR_procent_todayDeaths {ReadingsVal("coronaSpread","TUR_todayDeaths","")/ReadingsVal("coronaSpread","TUR_deaths","")*100},\
POL_procent_todayDeaths {ReadingsVal("coronaSpread","POL_todayDeaths","")/ReadingsVal("coronaSpread","POL_deaths","")*100},\
DEU_procent_todayCases {ReadingsVal("coronaSpread","DEU_todayCases","")/ReadingsVal("coronaSpread","DEU_cases","")*100},\
USA_procent_todayCases {ReadingsVal("coronaSpread","USA_todayCases","")/ReadingsVal("coronaSpread","USA_cases","")*100},\
GBR_procent_todayCases {ReadingsVal("coronaSpread","GBR_todayCases","")/ReadingsVal("coronaSpread","GBR_cases","")*100},\
FRA_procent_todayCases {ReadingsVal("coronaSpread","FRA_todayCases","")/ReadingsVal("coronaSpread","FRA_cases","")*100},\
ESP_procent_todayCases {ReadingsVal("coronaSpread","ESP_todayCases","")/ReadingsVal("coronaSpread","ESP_cases","")*100},\
NLD_procent_todayCases {ReadingsVal("coronaSpread","NLD_todayCases","")/ReadingsVal("coronaSpread","NLD_cases","")*100},\
ITA_procent_todayCases {ReadingsVal("coronaSpread","ITA_todayCases","")/ReadingsVal("coronaSpread","ITA_cases","")*100},\
TUR_procent_todayCases {ReadingsVal("coronaSpread","TUR_todayCases","")/ReadingsVal("coronaSpread","TUR_cases","")*100},\
POL_procent_todayCases {ReadingsVal("coronaSpread","POL_todayCases","")/ReadingsVal("coronaSpread","POL_cases","")*100}


DOIF 'di_coronaStatsLaender':

define di_coronaStatsLaender DOIF ([23:53])(setreading coronaSpread DEU_deaths_yesterday [coronaSpread:DEU_deaths])\
(setreading coronaSpread DEU_todayDeaths_yesterday [coronaSpread:DEU_todayDeaths])\
(setreading coronaSpread DEU_todayCases_yesterday [coronaSpread:DEU_todayCases])\
(setreading coronaSpread USA_deaths_yesterday [coronaSpread:USA_deaths])\
(setreading coronaSpread USA_todayDeaths_yesterday [coronaSpread:USA_todayDeaths])\
(setreading coronaSpread USA_todayCases_yesterday [coronaSpread:USA_todayCases])\
(setreading coronaSpread POL_deaths_yesterday [coronaSpread:POL_deaths])\
(setreading coronaSpread POL_todayDeaths_yesterday [coronaSpread:POL_todayDeaths])\
(setreading coronaSpread POL_todayCases_yesterday [coronaSpread:POL_todayCases])\
(setreading coronaSpread GBR_deaths_yesterday [coronaSpread:GBR_deaths])\
(setreading coronaSpread GBR_todayDeaths_yesterday [coronaSpread:GBR_todayDeaths])\
(setreading coronaSpread GBR_todayCases_yesterday [coronaSpread:GBR_todayCases])\
(setreading coronaSpread ITA_deaths_yesterday [coronaSpread:ITA_deaths])\
(setreading coronaSpread ITA_todayDeaths_yesterday [coronaSpread:ITA_todayDeaths])\
(setreading coronaSpread ITA_todayCases_yesterday [coronaSpread:ITA_todayCases])\
(setreading coronaSpread ESP_deaths_yesterday [coronaSpread:ESP_deaths])\
(setreading coronaSpread ESP_todayDeaths_yesterday [coronaSpread:ESP_todayDeaths])\
(setreading coronaSpread ESP_todayCases_yesterday [coronaSpread:ESP_todayCases])\
(setreading coronaSpread FRA_deaths_yesterday [coronaSpread:FRA_deaths])\
(setreading coronaSpread FRA_todayDeaths_yesterday [coronaSpread:FRA_todayDeaths])\
(setreading coronaSpread FRA_todayCases_yesterday [coronaSpread:FRA_todayCases])\
(setreading coronaSpread TUR_deaths_yesterday [coronaSpread:TUR_deaths])\
(setreading coronaSpread TUR_todayDeaths_yesterday [coronaSpread:TUR_todayDeaths])\
(setreading coronaSpread TUR_todayCases_yesterday [coronaSpread:TUR_todayCases])\
(setreading coronaSpread NLD_deaths_yesterday [coronaSpread:NLD_deaths])\
(setreading coronaSpread NLD_todayDeaths_yesterday [coronaSpread:NLD_todayDeaths])\
(setreading coronaSpread NLD_todayCases_yesterday [coronaSpread:NLD_todayCases])\
({createStatesYesterdayValues()})\
\
DOELSEIF ([coronaSpreadDe:Nordrhein-Westfalen_cases])({calcStatesDiffBetweenYesterdayAndToday()})\
DOELSEIF ([coronaSpread:DEU_todayDeaths])({calcCountriesDiffBetweenYesterdayAndToday()})
setuuid di_coronaStatsLaender 60812405-f33f-4a34-73ce-b897c45e587cfc15
attr di_coronaStatsLaender do always
attr di_coronaStatsLaender room Corona-Status
attr di_coronaStatsLaender wait 0:30:32


Die in meiner bereits vorhandenen Datei '99_myUtils.pm' unten zugefügten Codierungen für 'wandler' und 'wandlerzurueck':

# Die Subroutinen zum einsetzen der Tausender Trennpunkte
sub wandler {
  my $zahl = shift;
  my $text = reverse $zahl;
  $text =~ s/\./\,/g;  #replace decimal point by decimal comma
  $text =~ s/(\d\d\d)(?=\d)(?!\d*\,)/$1./g;
  return scalar reverse $text;
}

sub wandlerzurueck {
  my $text = shift;
  $text =~ s/\.//g;  #eliminate point
  $text =~ s/\,/\./g;  #replace decimal comma with point
  return scalar $text;
}


Inhalt der Datei '99_myCoronaUtils.pm'

##############################################
# 99_myCoronaUtils.pm v0.1 2020-03-26 21:50:00A Andy89
#
# This file creates Readings and Calculate some Diffs for States and Countrys

package main;

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

# Enter you functions below _this_ line.
#######################################################################################
#                                                                                     #
#   gewünschte Länder und Bundesländer und Devices                                    #
#                                                                                     #
#######################################################################################
sub getCountrys()
{
my @countries = ('DEU', 'USA', 'POL', 'GBR', 'ITA', 'ESP', 'FRA', 'TUR', 'NLD');
return @countries;
}

sub getStates()
{
my @states = ("Baden-Wurttemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg",
  "Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen",
  "Rheinland-Pfalz","Saarland","Sachsen-Anhalt","Sachsen","Schleswig-Holstein","Thuringen");
return @states;
}

sub getCountryDevice()
{
return "coronaSpread";
}

sub getStatesDevice()
{
return "coronaSpreadDe";
}

sub getWorldDevice()
{
return "coronaSpreadWorld";
}


#######################################################################################
#                                                                                     #
#   Umrechnung von Fälle pro 100k auf pro 1 Mio                                       #
#                                                                                     #
#######################################################################################
sub calcStatesCPM()
{
  my @states = getStates();
  my $device = getStatesDevice();
  my $cp100k;

  foreach (@states)
  {
  Log 5, "[99_myCoronaUtils:calcStatesCPM] Land: ".$_;
$cp100k = ReadingsVal($device,$_."_cp100k",-1);
    setReading($device,$_."_casesPerOneMillion",$cp100k*10);
  }
  return;
}

#######################################################################################
#                                                                                     #
#   States Yesterday Werte                                                            #
#                                                                                     #
#######################################################################################
sub createStatesYesterdayValues()
{
my @states = getStates();
  my $device = getStatesDevice();
my $value;

foreach (@states)
{
Log 5, "[99_myCoronaUtils:createStatesYesterdayValues] Land: ".$_;
$value = ReadingsVal($device,$_."_cases",-1);
setReading($device,$_."_cases_yesterday",$value);
$value = ReadingsVal($device,$_."_deaths",-1);
setReading($device,$_."_deaths_yesterday",$value);
}
return;
}

#######################################################################################
#                                                                                     #
#   States Differenz Werte zu Heute                                                   #
#                                                                                     #
#######################################################################################
sub calcStatesDiffBetweenYesterdayAndToday()
{
my @states = getStates();
  my $device = getStatesDevice();
my ($value_yesterday,$value_today,$value_diff);

foreach (@states)
{
Log 5, "[99_myCoronaUtils:calcStatesDiffBetweenYesterdayAndToday] Land: ".$_;
$value_yesterday = ReadingsVal($device,$_."_cases_yesterday",-1);
$value_today = ReadingsVal($device,$_."_cases",-1);
$value_diff = $value_today-$value_yesterday;
setReading($device,$_."_todayCases",$value_diff);

$value_yesterday = ReadingsVal($device,$_."_deaths_yesterday",-1);
$value_today = ReadingsVal($device,$_."_deaths",-1);
$value_diff = $value_today-$value_yesterday;
setReading($device,$_."_todayDeaths",$value_diff);
}
return;
}

#######################################################################################
#                                                                                     #
#   Countries Yesterday Werte                                                         #
#                                                                                     #
#######################################################################################
sub createCountriesYesterdayValues()
{
my @countries = getCountrys();
  my $device = getCountryDevice();
my $value;

foreach (@countries)
{
Log 5, "[99_myCoronaUtils:createCountriesYesterdayValues] Land: ".$_;
$value = ReadingsVal($device,$_."_active",-1);
setReading($device,$_."_active_yesterday",$value);
$value = ReadingsVal($device,$_."_recovered",-1);
setReading($device,$_."_recovered_yesterday",$value);
}
return;
}

#######################################################################################
#                                                                                     #
#   Countries Differenz Werte zu Heute                                                #
#                                                                                     #
#######################################################################################
sub calcCountriesDiffBetweenYesterdayAndToday()
{
my @countries = getCountrys();
  my $device = getCountryDevice();
my ($value_yesterday,$value_today,$value_diff);

foreach (@countries)
{
Log 5, "[99_myCoronaUtils:calcCountriesDiffBetweenYesterdayAndToday] Land: ".$_;
$value_yesterday = wandlerzurueck(ReadingsVal($device,$_."_cases_yesterday",-1)); # <===
$value_today = wandlerzurueck(ReadingsVal($device,$_."_cases",-1)); # <===
$value_diff = wandler($value_today-$value_yesterday); # <===
setReading($device,$_."_todayActive",$value_diff);

$value_yesterday = wandlerzurueck(ReadingsVal($device,$_."_deaths_yesterday",-1)); # <===
$value_today = wandlerzurueck(ReadingsVal($device,$_."_deaths",-1)); # <===
$value_diff = wandler($value_today-$value_yesterday); # <===
setReading($device,$_."_todayRecovered",$value_diff);
}
return;
}


#######################################################################################
#                                                                                     #
#   Reading setzen                                                                    #
#                                                                                     #
#######################################################################################
sub setReading($$$){
  my $device       = shift;
  my $readingsName = shift;
  my $readingsWert = shift;
  readingsSingleUpdate($main::defs{$device}, $readingsName, $readingsWert, 1);
}

1;


[OT]yersinia, Deinem gestrigen OT kann ich nur voll zustimmen. Daher sehe ich bspw. es auch als problemlos an, mit gemischten Tages- und Vortageswerten zu agieren.
Darüberhinaus sehe ich die generell vorherrschende (so gut wie nicht vorhandene) EDV-/IT-"Kenntnis" und -Ausstatung in Behörden- und Politikerkreisen als ausgesprochen problematisch an für die mittelfristige Weiterentwicklung unseres Landes im Weltgeschehen.[/OT]
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

ulobo60

Abschließend für mich hier der Screenshot vom FTUI2 von heute Morgen. Alle Zahlen haben Tausenderpunkten :), und ESP zeigt auch wieder Werte.
Nicht vergessen: die beiden Spalten "Neu Infizierte" und "Tote neu" enthalten die Werte von gestern (Stand kurz vor Mitternacht).
Aufgrund der doch recht unterschiedlichen Tageszeiten der Datenübermittlung von den Landkreisen an's RKI ist das m.E. aber nicht ganz sooo wichtig.

P.S.: Ich sitze derzeit an der FTUI2-Darstellung nur der 7-Tage-Inzidenz mit dem Chart Modul für meine 6 Landkreise aus diesem jsonMod. Anzeigen möchte ich gern die Werte der 7-Tage-Inzidenz für die letzten 5 Tage. Dazu müssen die Werte des hier verwendeten jsonMod in meine logdb geschrieben werden. Das gelingt mir nicht!
Da dies kein FTUI2-Problem ist, habe ich meine Hilfe-Anfrage in den 'Anfängerbereich' des Forums gestellt. Wer mir hierzu helfen kann/möchte, der klicke bitte hier: https://forum.fhem.de/index.php/topic,120688.0.html. Thx.
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

is2late

Hi,

vielen Dank für das Teilen Deines Codes!

In dem DOIF befindet sich eine Zeile, die ich nicht verstehe:

setuuid di_coronaStatsLaender 60812405-f33f-4a34-73ce-b897c45e587cfc15

Woher nimmst Du die UUID?

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Christoph Morrison


is2late

#37
Danke, Christoph!

Eine Frage noch: Wird die Zeile automatisch in das DOIF eingefügt?
Versuche ich dies (mit der richtigen UUID) nachträglich, gibt es eine Fehlermeldung
setuuid cannot be used after FHEM is initialized

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

rabehd

Zitat von: is2late am 10 Januar 2022, 14:48:11
Danke, Christoph!

Eine Frage noch: Wird die Zeile automatisch in das DOIF eingefügt?
Versuche ich dies (mit der richtigen UUID) nachträglich, gibt es eine Fehlermeldung
setuuid cannot be used after FHEM is initialized

LG Ingo

Ist Dir aufgefallen, dass jedes Device ein Internal FUUID hat?
Auch funktionierende Lösungen kann man hinterfragen.

is2late

Ja schon  ;)

Jedoch findet sich zwar in den Internals, nicht jedoch im RAW dieses "SetUUID" - anders als im o.g. Code.

Und da bei mir auch keine Daten aufscheinen, dachte ich, dass evlt. hier das Problem liegt.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

rabehd

RAW ist nicht gleich list.
Da Du es nicht brauchst (setzen musst) ist es nicht im RAW.
Auch funktionierende Lösungen kann man hinterfragen.

is2late

Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

curt

Vielleicht sollte ich einfach mal anmerken, dass ich das seit Beginn der Krise nutze und für den Code sehr dankbar bin.
RPI 4 - Jeelink HomeMatic Z-Wave