Info Display / e-Ink Dashboard "inki"

Begonnen von loetmeister, 26 Januar 2026, 11:50:28

Vorheriges Thema - Nächstes Thema

loetmeister

Moin,

ich bin über ein interessantes Projekt gestolpert, welches ein Info Display mit direkter Homematic-CCU Anbindung umgesetzt hat. (https://c0de111.github.io/inki/de/homematic/ - weitere links siehe unten)
das "inki" Display fragt daten bei der CCU ab:
ZitatProtokoll: XML-RPC-Direktanbindung an die Homematic-CCU (Port 2010)
Als CCU Abstinenzler stellt sich natürlich die Frage, ob sich schon jemand mit einer direkte FHEM Anbindung beschäftigt hat? Gäbe es eine API in FHEM die man nutzen kann? Wie https://wiki.fhem.de/wiki/FHEMWEB#apiWeb_Instanz oder ein anderes Modul was einem HTTP Zugriff (XML, JSON, etc.) ermöglicht? Ich bin da im Wiki nicht so recht fündig geworden... Eventuell auch eleganter mit MQTT?
Ein ähnliches Problem ist bestimmt schon mal gelöst worden..?  ::)
Ich würde verm. versuchen eine FHEMWEB api Instanz aufzusetzen, und statt XML den HTML code auf "inki" Display zu parsen... (mäßig elegant)

https://github.com/c0de111/inki
https://homematic-forum.de/forum/viewtopic.php?f=76&t=86344&sid=e642a16657838cecb06242b2e236cd9a

Oder gibt es andere Projekte, eines Status / Info Displays für FHEM?

Gruß,
Thomas

caspar

Hallo Thomas,

zufällig bin ich (erst jetzt) über Deine Frage hier gestoßen. Ich bin der Entwickler von "inki". inzwischen heißt es "Tinta" und kann noch ein paar mehr Sachen, unter anderem auch per NFC aktiviert werden und Befehle entgegennehmen. Wie das geht, habe ich bei hackaday beschrieben: https://hackaday.com/2026/04/20/2026-green-power-challenge-nfc-powers-command-write-and-wake-of-mcu/

Es sollte sehr einfach sein, einen weiteren "use case" für FHEM zu bauen. Technisch wäre das einfacher als Dein HTML-Ansatz: Wenn ich es richtig sehe, liefert FHEMWEB Daten im JSON-Format, das Tinta genauso verarbeiten kann wie heute die Daten von Seatsurfing oder dem CCU-Historian — ein HTTP-Aufruf pro Aufwachen, ein paar Readings nach Namen herausgreifen, fertig.

Falls das hier jemanden interessiert, kann ich das mal probieren und hier berichten.

Und natürlich bin ich sehr an weiteren Ideen interessiert, was man mit dem Gerät noch zu tun kann!

https://github.com/c0de111/tinta

Viele Grüße,

Nicolas

loetmeister

Hallo Nicolas,

danke für die Details und das Feedback! Ich hatte ein paar andere Baustellen, und nicht weiter Richtung "Info Display" geforscht... der erste Schritt, aus FEHM Daten im JSON-Format zu bekommen scheint etwas schwieriger zu sein. FHEMWEB kann das meines Wissen nach nicht. Ich hatte HTTPAPI probiert, das bei den Befehlen cmd|cmds|perl|shell eine JSON Antwort geben könnte... was bei meinen Tests bisher nicht funktioniert hatte. Zumal HTTPAPI scheinbar kompletten Zugriff auf FHEM und das System gewährt. (devicesCtrl ist ein Attribut für "allowed Devices" - wird aber für die erwähnten Befehle nicht beachtet.)
https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/02_HTTPAPI.pm?order=name

Gruß

KyleK

Das sieht wirklich sehr interessant aus.
Ich frage mich nur: Wie kommt man an das Custom PCB ran?
Das hat ja diverse SMD-Bauteile, die die wenigsten zuhause löten können.
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

caspar

Hallo Thomas,

ich habe das an einem flugs lokal installierten FHEM mit simulierten Werten durchgespielt, das erste Bild zeigt FHEM, das zweite das Schild.

Es geht - FHEMWEB liefert über jsonlist2 JSON, und mit einer eigenen, abgesicherten FHEMWEB-Instanz kann das Schild genau die freigegebenen Readings lesen.

Du darfst diesen Dateianhang nicht ansehen.Du darfst diesen Dateianhang nicht ansehen.

Details

jsonlist2 lässt sich über FHEMWEB mit XHR=1 aufrufen und gibt Readings als JSON zurück. Mit einer Werteliste mit sechs Werten von fünf Geräten sind das etwa 1,1 KB.

Das Schild bekommt eine eigene FHEMWEB-Instanz, die über ein allowed-Gerät nur jsonlist2 und nur die freigegebenen Geräte zulässt:

define WEBtinta FHEMWEB 8087 global
attr WEBtinta csrfToken none
define allowedTinta allowed
attr allowedTinta validFor WEBtinta
attr allowedTinta allowedCommands jsonlist2
attr allowedTinta allowedDevices Wohnzimmer,Aussen,Fenster_Bad,Heizung_Kueche,Stromzaehler
attr allowedTinta allowedIfAuthenticatedByMe 0

Wichtig ist die letzte Zeile: Ohne allowedIfAuthenticatedByMe 0 greifen die Regeln bei einer Instanz ohne Passwort nicht. Getestet: set und Perl-Befehle werden mit ,,Forbidden command" abgelehnt, nicht freigegebene Geräte tauchen in der Antwort nicht auf, die normale Instanz auf 8083 verlangt weiter ihr CSRF-Token.

Das Schild fragt bei jedem Aufwachen einmal ab, über HTTP/1.0:

http://<fhem>:8087/fhem?cmd=jsonlist2%20Wohnzimmer,Aussen,Fenster_Bad,Heizung_Kueche,Stromzaehler%20temperature%20humidity%20state%20desired-temp%20power&XHR=1

Die Antwort ist JSON; das Schild greift sich je Gerät das genannte Reading und nimmt dessen Value:

{
  "Arg":"Wohnzimmer,Aussen temperature humidity",
  "Results": [
  {
    "Name":"Wohnzimmer",
    "Internals": { },
    "Readings": {
      "humidity": { "Value":"48", "Time":"2026-10-24 17:25:47" },
      "temperature": { "Value":"21.4", "Time":"2026-10-24 17:25:47" }
    },
    "Attributes": { }
  },
  ...
  ],
  "totalResultsReturned":2
}

So sieht ein Aufwachen im Log des Schilds aus (geweckt per Tastendruck; die Werte stammen von einem früheren Durchlauf als die Bilder). Die Abfrage selbst braucht nach dem WLAN-Aufbau rund 50 ms, nach gut 8 s ist das Schild wieder ganz aus:

[5261 us] [OK] System initializing - tinta-fhem
[11 ms] [OK] Battery: 3.59V
[16 ms] [OK] RTC: RV-3028, 2026-10-24 17:01:41
[93 ms] [OK] ST25: present (it_sts=0x00)
[394 ms] [OK] Wake: BUTTON (buttons=0)
[394 ms] [OK] Page: 0 (wifi=yes)
[395 ms] [OK] CYW43: chip on, region Europe (DE)
[1174 ms] [OK] MAC: xx:xx:xx:xx:xx:xx (Tinta-xxxx)
[3948 ms] [OK] WiFi: "<WLAN>" (connected in 2.8s, 1 attempt, -77 dBm)
[4000 ms] [INFO] FHEM: Wohnzimmer temperature = 21.5
[4000 ms] [INFO] FHEM: Wohnzimmer humidity = 51
[4000 ms] [INFO] FHEM: Aussen temperature = 11.9
[4000 ms] [INFO] FHEM: Fenster_Bad state = closed
[4001 ms] [INFO] FHEM: Heizung_Kueche desired-temp = 21
[4001 ms] [INFO] FHEM: Stromzaehler power = 655
[4001 ms] [WARN] RTC sync: no server time available
[4077 ms] [OK] CYW43: chip off (on for 3.7s)
[4302 ms] [OK] ePaper: 4.2" V2, 15000 bytes
[8151 ms] [OK] Next wake: 18:18 (+17 min)
[8151 ms] [OK] System shutting down

Das ist noch recht grob: Welche Geräte und Readings angezeigt werden, steht noch fest in der Firmware.

Viele Grüße,

Nicolas

caspar

Zitat von: KyleK am 19 Oktober 2026, 11:35:06Das sieht wirklich sehr interessant aus.
Ich frage mich nur: Wie kommt man an das Custom PCB ran?
Das hat ja diverse SMD-Bauteile, die die wenigsten zuhause löten können.

SMD und eine custom PCB erlauben, dass das Gerätchen klein, übersichtlich und sparsam ist. Aber ja, man muss dafür SMD löten, und ein wenig Geschick & Erfahrung mitbringen, und die Leerplatine herstellen lassen.

Zum Nachbau ist alles im github repo, aktuell probiere ich gerade, ob es genug Interesse gibt für eine kommerzielle Variante: https://www.crowdsupply.com/wake-electronics/tinta Falls die Kampagne erfolgreich ist, wird man sich Tinta auch kaufen können.