Notdienst Apotheke

Begonnen von Vaddi, 24 April 2018, 01:39:35

Vorheriges Thema - Nächstes Thema

amenomade

Die entspr. Regex ergänzen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

wendeling

Hallo , habe es jetzt mit den Apothekenfinder gelöst .

Vielen Dank für die Hilfe

Gruß
Wendelin

meier81

Hi und guten Morgen,

hab mal ne Frage bezüglich dem Apotheken-Notdienst über das Template "pharmacy_emergency_service_germany".

Hab das soweit alles definiert und es läuft auch soweit, aktualisieren tue ich es jeden Morgen um 8:30 da um die Uhrzeit bei uns der Wechsel der Apotheken ist.

Ich bekomme aber immer einen Error-Eintrag im Log, dieser lautet:

2020.12.27 08:30:00.061 3: Notdienst_Apotheke: error while parsing JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE HTML PUBLI...") at lib/FHEM/HTTPMOD/Utils.pm line 668.

Ein List meines Devices:

Internals:
   BUSY       0
   DEF        http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098 0
   FUUID      5fe1b6e9-f33f-c2d2-80f0-0056be89f6c71fd9
   FVERSION   98_HTTPMOD.pm:0.233300/2020-12-12
   Interval   0
   MainURL    http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
   ModuleVersion 4.0.16 - 5.12.2020
   NAME       Notdienst_Apotheke
   NOTIFYDEV  global
   NR         247
   NTFY_ORDER 50-Notdienst_Apotheke
   STATE      Rathaus-Apotheke, 06326 1535, Weinstr. 44 in 67146 Deidesheim
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://apothekenfinder.mobi:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     host       apothekenfinder.mobi
     httpheader HTTP/1.1 200 OK
Date: Sun, 27 Dec 2020 07:30:12 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 884
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /interface/json.php?device=web&source=not&search=67098
     protocol   https
     redirects  0
     timeout    60
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
     sslargs:
   QUEUE:
   READINGS:
     2020-12-27 08:30:01   Beginn          2020-12-27 08:30:00
     2020-12-27 08:30:01   Breitengrad     49.407193
     2020-12-27 08:30:01   Ende            2020-12-28 08:30:00
     2020-12-27 08:30:01   Entfernung      6.70
     2020-12-27 08:30:01   Laengengrad     8.186982
     2020-12-27 08:30:01   Name            Rathaus-Apotheke
     2020-12-27 08:30:01   Ort             Deidesheim
     2020-12-27 08:30:01   Plz             67146
     2020-12-27 08:30:01   Strasse         Weinstr. 44
     2020-12-27 08:30:01   Telefax         06326 7437
     2020-12-27 08:30:01   Telefon         06326 1535
     2020-12-22 10:06:52   attrTemplateVersion 20201129
   REQUEST:
     context    reading
     data       
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     ignoreredirects 0
     num        0
     priority   1
     retryCount 0
     type       update
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
   defptr:
     readingBase:
       Beginn     reading
       Breitengrad reading
       Ende       reading
       Entfernung reading
       Laengengrad reading
       Name       reading
       Ort        reading
       Plz        reading
       Strasse    reading
       Telefax    reading
       Telefon    reading
     readingNum:
       Beginn     07
       Breitengrad 10
       Ende       08
       Entfernung 11
       Laengengrad 09
       Name       01
       Ort        04
       Plz        03
       Strasse    02
       Telefax    06
       Telefon    05
     readingOutdated:
     requestReadings:
       update:
         Beginn     reading 07
         Breitengrad reading 10
         Ende       reading 08
         Entfernung reading 11
         Laengengrad reading 09
         Name       reading 01
         Ort        reading 04
         Plz        reading 03
         Strasse    reading 02
         Telefax    reading 06
         Telefon    reading 05
Attributes:
   model      pharmacy_emergency_service_germany
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading07OExpr FmtDateTime($val)
   reading08JSON result_01_end
   reading08Name Ende
   reading08OExpr FmtDateTime($val)
   reading09JSON result_01_lng
   reading09Name Laengengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       Testbereich->Testdevices
   showBody   0
   stateFormat Name, Telefon, Strasse in Plz Ort
   timeout    60
   userattr   get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL requestHeader requestHeader1


Hat da jemand eine Idee?

Gruß Markus
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

amenomade

Das kommt weil er ein redirect auf sich selbst zuerst macht:

2020.12.27 11:55:01 4: apotheke: Read callback: request type was update retry 0,

header: HTTP/1.1 301 Moved Permanently

Date: Sun, 27 Dec 2020 10:55:13 GMT

Server: Apache

Location: https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098

Content-Length: 298

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=iso-8859-1, body length 298
2020.12.27 11:55:01 5: apotheke: Read callback: body

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098">here</a>.</p>
</body></html>

Und dieses Zwischenergebnis kann er nicht parsen.

Ich weiss nicht, wie es zu vermeiden.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus


amenomade

#95
Tatsächlich, das hatte ich übersehen! Ich muss das template auch anpassen. Danke.

EDIT: eingecheckt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Christoph Morrison

Ich bin gerade einigermaßen schockiert, dass HTTPMOD mit (standardkonformen) Redirects nicht richtig umgehen kann?!

amenomade

Ja, eigentlich sollte er, wenn enabaleRedirects gesetzt ist, gar nicht versuchen das JSON der 301 Seite zu parsen. ABer gut...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

meier81

Super, danke euch, hab ich eben mal geändert, ist ja morgen auch in den Templates dabei  ;).


Gruß zurück nach Gütersloh aus der Pfalz ;D
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

yersinia

Für alle, die den Standort der Apotheke auf einer Karte angezeigt haben wollen, können sich mit OSM einen Kartenlink generieren (raw):
attr DEVICE userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

erzeugt ein userReading OSMLink wie diesen:
   2021-09-23 16:45:17   OSMLink         https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891
Entspricht diesem link: https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891
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

Wolle02

Zitat von: yersinia am 23 September 2021, 16:47:22
Für alle, die den Standort der Apotheke auf einer Karte angezeigt haben wollen, können sich mit OSM einen Kartenlink generieren (raw):
attr DEVICE userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

erzeugt ein userReading OSMLink wie diesen:
   2021-09-23 16:45:17   OSMLink         https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891
Entspricht diesem link: https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891

.... und wer lieber GoogleMaps verwendet für den wäre hier der passende Code:

attr DEVICE userReadings GoogleLink {my $ret = "https:\/\/www.google.com\/maps\/search\/?api=1";;\
    $ret .= "&query=".ReadingsVal($name,"Breitengrad","0");;\
    $ret .= ",".ReadingsVal($name,"Laengengrad","0");;\
    return $ret;; }

yersinia

Alternativ:
attr DEVICE userReadings GoogleLink {my $ret = "https:\/\/www.google.com\/maps\/search\/";;\
    $ret .= ReadingsVal($name,"Breitengrad","0");;\
    $ret .= ",".ReadingsVal($name,"Laengengrad","0");;\
    $ret .= "\/\@".ReadingsVal($name,"Breitengrad","0");;\
    $ret .= ",".ReadingsVal($name,"Laengengrad","0");;\
    $ret .= ",18z";;\
    return $ret;; }

Erzeugt diesen Link mit Zentrierung und Zoom: https://maps.google.com/maps/search/51.1873547,10.0575891/@51.1873547,10.0575891,18z
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

caldir65

Hallo,

ich habe den OSM-Link versucht, umzusetzen, jedoch kommt bei mir nur der folgende Fehler:
Error evaluating NotdienstApotheke userReading OSMLink: Can't modify single ref constructor in concatenation (.) or string at (eval 4505466) line 2, at EOF

Was übersehe ich da jetzt bloß?

Das Device:
Internals:
   BUSY       0
   DEF        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324 0
   FUUID      5db338f9-f33f-378b-3622-385c1dfe29ce8674
   FVERSION   98_HTTPMOD.pm:0.247080/2021-07-06
   Interval   0
   MainURL    https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       NotdienstApotheke
   NOTIFYDEV  global
   NR         1228
   NTFY_ORDER 50-NotdienstApotheke
   STATE      Neue Apotheke Bruchmühlen, 05226 982222, Kilverstraße 169 -173 in 32289 Rödinghausen
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://apothekenfinder.mobi:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     host       apothekenfinder.mobi
     httpheader HTTP/1.1 200 OK
Date: Mon, 07 Feb 2022 09:47:52 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 922
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /interface/json.php?device=web&source=not&search=49324
     protocol   https
     redirects  0
     timeout    2
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
     sslargs:
   QUEUE:
   READINGS:
     2022-02-07 10:47:39   Beginn          1644220800
     2022-02-07 10:47:39   Breitengrad     52.20131
     2022-02-07 10:47:39   Ende            1644307200
     2022-02-07 10:47:39   Entfernung      8.56
     2022-02-07 10:47:39   Laengengrad     8.45689
     2022-02-07 10:38:59   Längengrad     8.45689
     2022-02-07 10:47:39   Name            Neue Apotheke Bruchmühlen
     2022-02-07 10:47:39   OSMLink         Error evaluating NotdienstApotheke userReading OSMLink: Can't modify single ref constructor in concatenation (.) or string at (eval 4505466) line 2, at EOF

     2022-02-07 10:47:39   Ort             Rödinghausen
     2022-02-07 10:47:39   Plz             32289
     2022-02-07 10:47:39   Strasse         Kilverstraße 169 -173
     2022-02-07 10:47:39   Telefax         05226 984749
     2022-02-07 10:47:39   Telefon         05226 982222
   REQUEST:
     context    reading
     data       
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
   defptr:
     readingBase:
       Beginn     reading
       Breitengrad reading
       Ende       reading
       Entfernung reading
       Laengengrad reading
       Längengrad reading
       Name       reading
       Ort        reading
       Plz        reading
       Strasse    reading
       Telefax    reading
       Telefon    reading
     readingNum:
       Beginn     07
       Breitengrad 10
       Ende       08
       Entfernung 11
       Laengengrad 09
       Längengrad 09
       Name       01
       Ort        04
       Plz        03
       Strasse    02
       Telefax    06
       Telefon    05
     readingOutdated:
     requestReadings:
       update:
         Beginn     reading 07
         Breitengrad reading 10
         Ende       reading 08
         Entfernung reading 11
         Laengengrad reading 09
         Längengrad reading 09
         Name       reading 01
         Ort        reading 04
         Plz        reading 03
         Strasse    reading 02
         Telefax    reading 06
         Telefon    reading 05
Attributes:
   DbLogExclude .*
   enableControlSet 1
   event-on-change-reading .*
   group      A_SOS
   icon       message_attention
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading08JSON result_01_end
   reading08Name Ende
   reading09JSON result_01_lng
   reading09Name Laengengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       Flur
   showBody   0
   stateFormat Name, Telefon, Strasse in Plz Ort
   userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }
   userattr   get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading07OExpr reading08OExpr requestHeader requestHeader1


Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

yersinia

Da stimmt was mit deinem userReading nicht.
Das list(-Auszug) deines Devices ist
   userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

versus welche ich nutze ohne Fehlermeldung (ebenfalls list-Auszug):
   userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");
$ret .= "#map=18";
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");
return $ret; }


Hast du ggf das raw-Format als userReading kopiert? Wenn ja, probier mal die Version fürs Frontend (über Attribut userReading und dann einfach reinkopieren):
OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");
$ret .= "#map=18";
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");
return $ret; }
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

caldir65

Danke,

manchmal ist man ja auch schlicht blind  ::) Jetzt funktioniert es

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.