[Contrib] GIFTV (Geek Magic Ultra) als Anzeigegerät für FHEM

Begonnen von Dr. Boris Neubert, 22 Februar 2026, 15:09:43

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Beim Ali gibt es für teils nur 8 € einen "Mini-Fernseher" Namens Geek Magic Ultra, der aus einem ESP-Microcontroller und einem 240x240-Pixel-LCD besteht, und per USB-Port/-Netzteil mit Strom versorgt wird. Es gibt im Web zahlreiche Rezensionen vom dem Gadget und auch wie man es befreit und auf andere Firmware umflasht, damit es aus HomeAssistant heraus bespielt werden kann. Ich zeige euch im folgenden, wie man es mit der Originalfirmware als Anzeigegerät für FHEM nutzt! Weil sich der Access Point im Gerät mit GIFTV meldet, nenne ich das Gerät im folgenden GIFTV (es kann nämlich auch bewegte GIF-Animationen abspielen).

Prinzip

Das Gerät hat eine Funktion als Fotoalbum mit zeitgesteuertem Bildwechsler. Es ist auch möglich, eingebaute Funktionen wie z. B. die Anzeige von Wetter und Uhrzeit am Standort und irgendwelche Fotos im Wechsel zu zeigen. Um das GIFTV als Anzeigegerät für FHEM zu benutzen, muss man also "nur" in FHEM erzeugte Grafiken regelmäßig zum GIFTV hochladen, nachdem man die im GIFTV vorinstallierten Beispieldateien im Pictures-Menü mit CLEAR gelöscht hat.

Die Grafiken in FHEM werden mit meinem Modul RSS erzeugt und mit dem Perl-Befehl push2giftv() hochgeladen. Über ein wiederholendes at lassen sich dann aktualisierte Grafiken z. B. alle 10 Sekunden auf das GIFTV schieben. Mit mehreren RSS-Geräten können dann auch mehrere Anzeigen im Wechsel geschaltet werden.

push2giftv

Ich habe ein Modul 99_GIFTV.pm in /opt/fhem/FHEM erstellt mit folgendem Inhalt:

sub push2giftv($$) {
    my ($name, $hostname) = @_;
    # wrap code in eval to avoid lethal errors crashing FHEM
    eval {
        # make RSS generate the image
        my $type = "jpg";
        my ($mimetype, $image) = RSS_returnIMG($name, $type);
        # parameters for GIFTV
        my $url = "http://$hostname/doUpload?dir=%2Fimage%2F";
        my $targetfilename = "$name.$type";
        my $param = {
                loglevel => 1,
                url => $url,
                method => "POST",
                hideurl => 0,
                noshutdown => 0,
                callback => sub($$$) { Log3 $name, 1,"ERR:$_[1] DATA:".length($_[2]) },
        };
        # add image as multipart form data
        HttpUtils_AddMultipartData($param, $image,
            {"Content-Disposition" => "form-data; name=\"file\"; filename=\"$targetfilename\"", "Content-Type" => $mimetype }
        );
        # upload to GIFTV
        HttpUtils_NonblockingGet($param);
    };
    if ($@) {
        my $msg = $@;
        chomp $msg;
        Log3 $name, 2, $msg;
    }
}

Dabei wird das seit 22.02.2026 um neue Funktionalität erweiterte HttpUtils verwendet.

Zu laden mit reload 99_GIFTV oder FHEM neu starten.

Der Befehl wird auf der FHEM-Kommandozeile wie folgt aufgerufen:

{ push2giftv("sensorfeed", "192.168.178.131") }
Das erste Argument ist der Name des RSS-Geräts und das zweite Argument die IP-Adresse oder der Hostname des GIFTV. Die JPEG-Datei auf dem GIFTV heißt dann so wie das RSS-Gerät.

RSS

Zum Testen habe ich ein simples RSS-Gerät angelegt.

define sensorfeed RSS jpg has.m11.saarlust.de /opt/fhem/conf/sensorfeed.layout
attr sensorfeed bgcolor ff0000
attr sensorfeed size 240x240

Die Konfigurationsdatei sensorfeed.layout sieht so aus:

# ------------------
# font
# ------------------

font /opt/fhem/conf/DroidSans.ttf

# ------------------
# bottom left corner
# ------------------

#
# date/time
#

rgb "c0c0c0"
pt 18
date 10 160
time 10 180
text 10 200 "Hallo, Welt!"

Damit wird das in der Anlage gezeigte Bild erzeugt.

Zukunft

Ich werde 99_GIFTV.pm gelegentlich im Contrib-Ordner bereitstellen.

Ich habe 4 von den Dingern und werde es vermutlich nutzen, um wesentliche Hausparameter an verschiedenen Stellen im Haus anzeigen zu lassen. Vermutlich muss ich dafür noch das RSS-Modul erweitern, um einfacher Widgets für so eine kleine Anzeige zeichnen zu können.
FHEM-Developer seit 2007, Mitgründer und Förder-Mitglied des FHEM e.V.
Bitte keine unaufgeforderten privaten Nachrichten!