Corona Fallzahlenübersicht in FTUI (COVID-19)

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

Vorheriges Thema - Nächstes Thema

sash.sc

Schaue mal nach jsonmod. Da gibt es anwendungsbeispiele mir Adressen

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Gisbert

Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

sash.sc

In den jsonmod thread gibt es ein Beispiel mit einer subroutine wo kurz vor Mitternacht die Werte in einem reading gespeichert werden, bevor diese aktualisiert werden.

Musst du mal schauen.



Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Gisbert

Hallo,

ich hab's jetzt wie folgt gelöst:

  • Kurz nach Mitternacht (... at *00:00:10 ...) wird durch ein setreading aus den cases ein Reading cases_yesterday erzeugt.
  • Im Corona device wird ein Reading cases_today durch Subtraktion der Readings cases - cases_yesterday erzeugt.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Eisix

#19
Hallo,

api wurde wieder geändert, steige aber noch nicht durch was anzupassen ist.


/v3/covid-19/countries


oder hat das schon jemand angepasst und kann es teilen?

Gruß
Eisix

yersinia

Danke für den Hinweis, Eisix!

Doku gibt es hier: https://disease.sh/docs/

Ich musste nur die URL
https://corona.lmao.ninja/v2/countries
durch
https://disease.sh/v3/covid-19/countries
ersetzen und kam auf das gleiche Ergebnis - inklusive der identischen Readings.

Der Vollständigkeithalber meine RAW:
defmod coronaSpread JsonMod https://disease.sh/v3/covid-19/countries
attr coronaSpread event-on-update-reading .computedReadings
attr coronaSpread interval 5 */1 * * *
attr coronaSpread readingList multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('countryInfo.iso3'), '_country'), property('country'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_cases'), property('cases'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_todayCases'), property('todayCases'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_active'), property('active'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_deaths'), property('deaths'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_todayDeaths'), property('todayDeaths'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_recovered'), property('recovered'));;\
multi(jsonPath("\$.[?(\@.['countryInfo'].['iso3'] in ['DEU', 'CHN', 'CAN', 'NLD', 'GBR', 'ITA', 'ESP', 'FRA', 'USA'])]"), concat(property('.countryInfo.iso3'), '_casesPerOneMillion'), property('casesPerOneMillion'));;
attr coronaSpread room CoViD-19
attr coronaSpread stateFormat { my $uptime = POSIX::strftime("%H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last <a href=\"https://covid19-scenarios.org/\" title=\"covid19\" rel=\"noopener noreferrer\" target=\"_blank\">CoViD-19</a> check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br />";;\
$ret .= "Heute: <font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"DEU_todayCases","-")." neue Infektionen</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"DEU_todayDeaths","-")." Tote</font><br />";;\
$ret .= "Gesamt: <font style=\"color:orange;;\">".ReadingsVal($name,"DEU_active","-")." best. Infektionen</font>,&nbsp;;";;\
$ret .= "<font style=\"\">".ReadingsVal($name,"DEU_cases","-")." F&auml;;lle</font>,&nbsp;;";;\
$ret .= "<font style=\"color:red;;\">".ReadingsVal($name,"DEU_deaths","-")." Tote</font>";;\
$ret .= "</div>";;\
return $ret;;}
attr coronaSpread update-on-start 1
attr coronaSpread verbose 2
attr coronaSpread webCmd reread
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

ErzGabriel

Hallo.
Hat jemand das schon auf ein Gridster System umgebaut?
Wenn ja, währe es nett, wenn er seinen HTML-Code hier mal posten könnte.

Danke.

Eisix

Hallo,

Corona.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="page" id="Corona">
<div class="container1">
<ul>
<li data-row="1" data-col="1" data-sizex="17" data-sizey="1">
    <table style="width:100%;height:100%;border 1px solid black">
    <tr align="center" valign="center">
        <td style="width:15%" class="">
Land
</td>
        <td style="width:15%" class="">
Gesamt
</td>
        <td style="width:10%" class="">
Gesamt / Mio
</td>
        <td style="width:10%" class="">
Neu
</td>
        <td style="width:15%" class="">
Erkrankt
</td>
        <td style="width:10%" class="">
&dagger;
</td>
        <td style="width:15%" class="">
neu &dagger;
</td>
        <td style="width:10%" class="">
Geheilt
</td>
</tr>
</table>
        </li>
</ul>
    <div class="container2">
<ul>
        <li data-row="2" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="./templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpreadWorld" ,"var_country"
                                :"world" }'
        ></li>
        <li data-row="5" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country"
                                :"DEU" }'
        ></li>
        <li data-row="8" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country"
                                :"GRC" }'
        ></li>
        <li data-row="11" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country"
                                :"ITA" }'
        ></li>
        <li data-row="14" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"ESP" }'
        ></li>
        <li data-row="17" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"FRA" }'
        ></li>
        <li data-row="20" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"USA" }'
        ></li>
        <li data-row="23" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"GBR" }'
        ></li>
        <li data-row="26" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"NLD" }'
        ></li>
        <li data-row="29" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"CHE" }'
        ></li>
        <li data-row="32" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"LUX" }'
        ></li>
        <li data-row="35" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"BEL" }'
        ></li>
        <li data-row="38" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"AUT" }'
        ></li>
        <li data-row="41" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"POL" }'
        ></li>
        <li data-row="44" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"AUS" }'
        ></li>
        <li data-row="47" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"CAN" }'
        ></li>
        <li data-row="50" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"TUR" }'
        ></li>
        <li data-row="53" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"KOR" }'
        ></li>
        <li data-row="56" data-col="1" data-sizex="17" data-sizey="2"
                                data-template="templates/template_news_corona.html"
                                data-parameter='{"var_device" :"coronaSpread" ,"var_country" :"CHN" }'
        ></li>
</ul>
</div>
</div>
</div>
</body>
</html>


templates/template_news_corona.html

<!DOCTYPE html>
<html>

    <head>
        <!-- FHEM Tablet UI V2.6 -->
        <!-- Template f�r Corona -->
    </head>

    <body>
<table style="width:100%;height:100%;border:1px solid black">
<tr align="center" valign="center">
        <td style="width:15%">
                <div data-type="image" data-url="../images/var_country.png" data-refresh=0 data-height=40 data-width=40 class=""></div>
                <div style="color:#fffff0;" class="bigger" data-type="label" data-device="var_device" data-get="var_country_name" data-substitution='["Iran, Islamic Republic of","Iran","Nordrhein-Westfalen","NRW","Baden-Wurttemberg","BaWu","Mecklenburg-Vorpommern","MeckPom"]'></div>
</td>
        <td style="width:15%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-people" data-off-color="blue"></div>
                <div style="color:#fffff0;" class="bigger" data-type="label" data-device="var_device" data-get="var_country_cases"></div>
</td>
        <td style="width:10%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-people_outline" data-off-color="blue"></div>
                <div style="color:#fffff0;" class="bigger" data-type="label" data-device="var_device" data-get="var_country_casesPerOneMillion" data-fix="1"></div>
</td>
        <td style="width:10%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-update" data-off-color="blue"></div>
                <div style="color:#fffff0;" class="bigger" data-type="label" data-device="var_device" data-get="var_country_todayCases"></div>
                <div style="color:#fffff0;" class="normal" data-type="label" data-device="var_device" data-pre-text="(" data-get="var_country_procent_todayCases" data-post-text="%)" data-fix="1"></div>
</td>
        <td style="width:15%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-local_hospital" data-off-color="yellow"></div>
                <div style="color:#fffff0;" class="bigger inline" data-type="label" data-device="var_device" data-get="var_country_active"></div>
                <div style="color:#fffff0;" class="normal inline" data-type="label" data-device="var_device" data-pre-text="(" data-get="var_country_critical" data-post-text=")"></div>
</td>
        <td style="width:10%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-sentiment_dissatisfied" data-off-color="orange"></div>
                <div style="color:#fffff0;" class="bigger" data-type="label" data-device="var_device" data-get="var_country_deaths"></div>
</td>
        <td style="width:15%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-update" data-off-color="orange"></div>
                <div style="color:#fffff0;" class="bigger inline" data-type="label" data-device="var_device" data-get="var_country_todayDeaths"></div>
                <div style="color:#fffff0;" class="normal inline" data-type="label" data-device="var_device" data-pre-text="(" data-get="var_country_procent_todayDeaths" data-post-text="%)" data-fix="1"></div>
</td>
        <td style="width:10%" class="">
                <div class="compressed" data-type="symbol" data-icon="mi-sentiment_satisfied" data-off-color="green"></div>
                <div style="color:#fffff0;" class="bigger" data-type="label" data-device="var_device" data-get="var_country_recovered"></div>
</td>
</tr>
</table>
    </body>
</html>

Damit kannst du nach oben scrollen. Die Länder musst du entsprechend deiner Liste anpassen.

Gruß
Eisix

patman1607

#23
Hallo,
ich habe es so in meine FTUI integriert:

<div class="sheet-50 narrow">
        <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/de.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="Germany_todayCases" class="">Germany</div>
</div>
</div>
  <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/us.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="USA_todayCases" class="">Germany</div>
</div>
</div>
  <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/fr.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="France_todayCases" class="">Germany</div>
</div>
</div>
  <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/it.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="Italy_todayCases" class="">Germany</div>
</div>
</div>
</div>


EDIT: 15:12:2020

und auf onklick kommt eine kleine Statistik. bin aber noch nicht ganz fertig. Mein CoronaSpread hab ich so angepasst das nur noch einmal am Tag abgerufen wird und nur noch in ein Logfile loggt.
hier das komplette DIV:

<!-- ============== CoronaFälle  ================ -->
<li data-row="5" data-col="8" data-sizex="1" data-sizey="1" class="semitransparent">
<header>CoronaFälle</header>
     
          <div data-type="popup" data-width="800px" data-height="640" class="center">
    <div class="sheet-50 narrow">
        <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/de.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="Germany_todayCases" class="right-align"></div>
</div>
</div>
  <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/us.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="USA_todayCases" class="left-space right-align"></div>
</div>
</div>
  <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/fr.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="France_todayCases" class="right-align"></div>
</div>
</div>
  <div class="row bold">
<div class="cell-50 left-align">
<div data-type="image" data-url="https://disease.sh/assets/img/flags/it.png" data-size="20px"></div>
</div>
<div class="cell-50">
<div data-type="label" data-device="coronaSpread" data-get="Italy_todayCases" class="right-align"></div>
</div>
</div>
</div>
    <div class="dialog">
        <header>Corona</header>     
            <div    class="normal inline"
                    data-type="chart"
data-title="Tägliche Fälle"
                    data-device="coronaSpread"
                    data-logdevice="FileLog_coronaSpread"
                    data-columnspec='["4:France_todayCases","4:Germany_todayCases","4:Italy_todayCases","4:Spain_todayCases","4:USA_todayCases"]'
                    data-style='["ftui l4","ftui l2","ftui l1","ftui l3","ftui l0"]'
                    data-ptype='["lines","lines","lines","lines","lines"]'
                    data-uaxis='["primary","primary","primary","primary","secondary"]'
                    data-legend='["Tägliche Fälle Frankreich","Tägliche Fälle Deutschland","Tägliche Fälle Italien","Tägliche Fälle Spanien","Tägliche Fälle USA"]'
                    data-yunit=""
data-yunit_sec=""
                    data-ytext="Täglich D, FR, IT, SPA"
data-ytext_sec="Täglich USA"
                    data-minvalue="auto"
                    data-maxvalue="100000"
data-minvalue_sec="0"
data-maxvalue_sec="250000"
                    data-yticks="auto"
data-xticks="2400"
                    data-minvalue_sec="auto"
                    data-maxvalue_sec="auto"
                    data-daysago_start="7"
                    data-daysago_end="-1"
                    data-crosshair="true"
                    data-cursorgroup="1"
                    data-scrollgroup="1"
                    data-showlegend="true"
                    data-height="300px"
data-width="370px">
               </div>
   
   <div    class="normal inline"
                    data-type="chart"
data-title="Insgesamte Infektionen"
                    data-device="coronaSpread"
                    data-logdevice="FileLog_coronaSpread"
                    data-columnspec='["4:France_cases","4:Germany_cases","4:Italy_cases","4:Spain_cases","4:USA_cases"]'
                    data-style='["ftui l4","ftui l2","ftui l1","ftui l3","ftui l0"]'
                    data-ptype='["lines","lines","lines","lines","lines"]'
                    data-uaxis='["primary","primary","primary","primary","primary"]'
                    data-legend='["Fälle insg. Frankreich","Fälle insg. Deutschland","Fälle insg. Italien","Fälle insg. Spanien","Fälle insg. USA"]'
                    data-yunit=""
data-yunit_sec=""
                    data-ytext="Fälle insgesamt D, FR, IT, SPA"
data-ytext_sec="Fälle insgesamt USA"
                    data-minvalue="800000"
                    data-maxvalue="auto"
data-minvalue_sec="800000"
data-maxvalue_sec="auto"
                    data-yticks="auto"
data-xticks="2400"
                    data-minvalue_sec="auto"
                    data-maxvalue_sec="auto"
                    data-daysago_start="7"
                    data-daysago_end="-1"
                    data-crosshair="true"
                    data-cursorgroup="1"
                    data-scrollgroup="1"
                    data-showlegend="true"
                    data-height="300px"
data-width="357px">
               </div>
   
<div    class="normal inline"
                    data-type="chart"
data-title="Tägliche Todesfälle"
                    data-device="coronaSpread"
                    data-logdevice="FileLog_coronaSpread"
                    data-columnspec='["4:France_todayDeaths","4:Germany_todayDeaths","4:Italy_todayDeaths","4:Spain_todayDeaths","4:USA_todayDeaths"]'
                    data-style='["ftui l4","ftui l2","ftui l1","ftui l3","ftui l0"]'
                    data-ptype='["lines","lines","lines","lines","lines"]'
                    data-uaxis='["primary","primary","primary","primary","secondary"]'
                    data-legend='["Tgl + Frankreich","Tgl + Deutschland","Tgl + Italien","Tgl + Spanien","Tgl + USA"]'
                    data-yunit=""
data-yunit_sec=""
                    data-ytext="TäglichSterbend D, FR, IT, SPA"
data-ytext_sec="TäglichSterbend USA"
                    data-minvalue="0"
                    data-maxvalue="2000"
data-minvalue_sec="0"
data-maxvalue_sec="3000"
                    data-yticks="auto"
data-xticks="2400"
                    data-minvalue_sec="auto"
                    data-maxvalue_sec="auto"
                    data-daysago_start="7"
                    data-daysago_end="-1"
                    data-crosshair="true"
                    data-cursorgroup="1"
                    data-scrollgroup="1"
                    data-showlegend="true"
                    data-height="300px"
data-width="357px">
               </div>
   
    <div    class="normal inline"
                    data-type="chart"
data-title="Geneßene Fälle"
                    data-device="coronaSpread"
                    data-logdevice="FileLog_coronaSpread"
                    data-columnspec='["4:France_recovered","4:Germany_recovered","4:Italy_recovered","4:Spain_recovered","4:USA_recovered"]'
                    data-style='["ftui l4","ftui l2","ftui l1","ftui l3","ftui l0"]'
                    data-ptype='["lines","lines","lines","lines","lines"]'
                    data-uaxis='["primary","primary","primary","primary","secondary"]'
                    data-legend='["Geneßene Fälle Frankreich","Geneßene Fälle Deutschland","Geneßene Fälle Italien","Geneßene Fälle Spanien","Geneßene Fälle USA"]'
                    data-yunit=""
data-yunit_sec=""
                    data-ytext="Geneßen D, FR, IT, SPA"
data-ytext_sec="Geneßen USA"
data-yticks_format_sec=""
                    data-minvalue="0"
                    data-maxvalue="1800000"
data-minvalue_sec="4000000"
data-maxvalue_sec="10000000"
                    data-yticks="auto"
data-xticks="2400"
                    data-minvalue_sec="14000000"
                    data-maxvalue_sec="auto"
                    data-daysago_start="7"
                    data-daysago_end="-1"
                    data-crosshair="true"
                    data-cursorgroup="1"
                    data-scrollgroup="1"
                    data-showlegend="true"
                    data-height="300px"
data-width="357px">
               </div>
   
   
    </div>
    </div>
</li>
Fritte 7950
FHEM on RasPi 3

ulobo60

#24
Ich habe die Vorlagen von Andy89 (Antwort #7 am: 26 März 2020, 15:48:42) in mein FHEM eingebaut.
Klasse Vorarbeit und Veröffentlichung für einen "STRG-C + STRG-P"-Könner :), auch großen Dank für den Input von somansch !!!

Habe nur die Segmente "coronaSpreadWorld" und "coronaSpread" übernommen und im FTUI abgebildet.
Auf die Bundesländer-Darstellung ("coronaSpreadDe") habe ich verzichtet.
Zusätzlich habe ich das DOIF von Andy89 installiert (revidierte Fassung vom 26.03.2020).
Ausserdem wurde von mir die "99_myCoronaUtils.pm" übernommen. Dort habe ich die von mir nicht benötigten Bundesländer-Zeilen auskommentiert.

Mein FTUI-Layout basiert eigentlich auf gridster (Beispielseite siehe unten 'FTUI-gridster-Seite.jpg').
Zur 1:1-Umsetzung der Corona-Daten wird aber Flexbox benötigt.
Daher habe ich in meine persönliche css-Datei die für das Flexbox-Layout benötigten Einträge aus der fhem-tablet-ui-user.css von somansch kopiert (https://forum.fhem.de/index.php/topic,109490.msg1035132.html#msg1035132) und entsprechend modifiziert.
Im Wesentlichen wurden in den HTML-Seiten von mir die Icons eliminiert und aus der Ausrichtung "center" wurde "right" in den CSS-Einträgen (siehe unten 'FTUI-Flexbox-Seite_Corona-Daten1.jpg').
Also: Super-Job von unseren Profis für die Laien (wie ich) unter uns. Nochmals <merci vielmals!>.

Hier meine 2 Optimierungswünsche, die ich aufgrund meiner mangelnden Programmierkünste selbst nicht erledigen kann.
Wunsch-1:
Kann mir bitte jemand die Zahlenausgaben mit "Tausender-Punkten" formatieren? Ich glaube, erst dann wird's bei den langen Zahlen einigermaßen übersichtlich.
Wunsch-2:
Die Spalten "Infiz./Mio-EW" und "Tote neu" füllen sich ja im Laufe des Tages - abhängig vom Eingang der Meldungen bei der Datenbank. D.h. aber, tagsüber sieht man im Wesentlichen die '0' (siehe unten 'FTUI-Flexbox-Seite_Corona-Daten2.jpg').
In diesen 2 Spalten würde ich daher lieber die Vortageswerte sehen. Ist das zu realisieren? Und falls ja - wie?
Würde mich über Eure Tipps sehr freuen.
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

Eisix

Hallo,


/* Scrollen */
.container1 {
    height: 100%;
    width: 100%;
    border: 0px solid green;
    overflow: hidden;
    position: relative;
}
.container2 {
    position: absolute;
    top: 50px;
    bottom: 5px;
    left: 0px;
    right: 0px;
    border: 0px solid white;
    overflow: auto;
}



Gruß
Eisix

ulobo60

@Eisix
... vielen Dank!
Eingebaut, minimal angepasst, läuft  :)
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

ulobo60

::: Für Mitlesende :::

Die 2 hierüber stehenden Beiträge haben nichts mit meiner Anfrage vom 18. April 2021, 18:08:55 zu tun.
Eisix hat hier seine CSS-Codierung für seine HTMLs eingestellt (siehe sein Beitrag weiter oben vom 20. Oktober 2020, 16:48:38).

Von den 2 Wünschen aus meiner obigen Anfrage habe ich meinen 2. Wunsch gelöst.
Für die Interessierten hier mein Define:
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])\
({createCountriesYesterdayValues()})\
\
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


Dazu gehört noch das Modul '99_myCoronaUtils.pm' von Andy99
(siehe https://forum.fhem.de/index.php/topic,109490.msg1035476.html#msg1035476 oberhalb seines angehängten Bildes).

Mein 1. Wunsch ist noch offen: die Zahlenausgaben mit "Tausender-Punkten" zu formatieren
Ich habe in den letzten Tagen einige Suchen abgearbeitet. Hier im Forum, generell im Internet - nix, nada zur Problemlösung.
Habe nur viele andere Hilfesuchen dazu gefunden.
Auch meine Suchen nach 'sprintf' haben diesbzgl. zu keinem Ergebnis geführt.

Ich fürchte, dazu müßte ein Programmschnipsel geschrieben und in ein Modul gepackt werden.
Meine Laien-Überlegung:
Zahl/Text in Variable einlesen, diese von rechts nach links abarbeiten, nach jeweils 3 Zeichen 1 Punkt setzen, weiter abarbeiten bis Ende, letztlich Ausgabe als Text.
Leider bin ich persönlich dazu selbst nicht in der Lage.

Ich warte dann mal weiter auf göttliche Eingebungen, evtl. auch von Euch  ;D
P.S.: Vielleicht bin ich auch nur zu blöd zum richtigen Suchen/Finden !
Würde mich wirklich freuen, wenn das zutreffen würde...  8)
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

yersinia

Zitat von: ulobo60 am 23 April 2021, 12:05:12Mein 1. Wunsch ist noch offen: die Zahlenausgaben mit "Tausender-Punkten" zu formatieren
Ich habe in den letzten Tagen einige Suchen abgearbeitet. Hier im Forum, generell im Internet - nix, nada zur Problemlösung.
Habe nur viele andere Hilfesuchen dazu gefunden.
Auch meine Suchen nach 'sprintf' haben diesbzgl. zu keinem Ergebnis geführt.

Ich fürchte, dazu müßte ein Programmschnipsel geschrieben und in ein Modul gepackt werden.
Meine Laien-Überlegung:
Zahl/Text in Variable einlesen, diese von rechts nach links abarbeiten, nach jeweils 3 Zeichen 1 Punkt setzen, weiter abarbeiten bis Ende, letztlich Ausgabe als Text.
Jup, so steht es auch auf https://inspire-world.de/perl-lange-zahlen-mit-tausender-trennpunkten-versehen:
# 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;
}

Ungetestet, kA ob dies funktioniert
Könnte man in die myUtils einbauen und dann überall dort aufrufen, wo man es benötigt.
Aber Vorsicht: perl und idR alle Programmiersprachen verwenden die englische Notation. Wenn das Ersetzen stattfinden sollte, dann nur zur reinen Anzeige, aber nicht zum Weiterverarbeiten (Rechnen, Umwandeln usw).
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

ulobo60

@yersinia
1. hiermit ist also erwiesen: ich bin zu blöd, um richtig Suchen/Finden zu können!
2. klasse, dass Du sowas schon kennst.

Nun bin ich im Programmieren nicht gerade bewandert.
Ich kann die Code-Schnipsel lesen und verstehe (meist) auch den Inhalt und Zweck der Codierungen.
Aber Code selbst erstellen kann ich nicht.

Sehe 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  :-[

Ist das so richtig gedacht - uuuuund wenn ja, könntest Du mir evtl. die Codierungs-Schnipsel zum Aufruf der Funktion 'wandler' in der HTML rüberreichen?
P.S. muss ich nicht noch dem FHEM-System mitteilen, dass es gefälligst meine 'wandler_ulf.pm' einlesen soll, oder werden automatisch alle .pm-Dateien beim FHEM-Start eingelesen?
P.P.S.: ist natürlich klar, dass die Verwendung einer solchen Routine nur zur Darstellung von Zahlen im FTUI2 erfolgt  :)
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI