FHEM-Gemini (https://github.com/ahlers2mi/FHEM-Gemini)
FHEM-Modul zur Anbindung der Google Gemini AI API. Ermöglicht Textanfragen, Bildanalyse, Smart-Home-Gerätesteuerung per Sprachbefehl (Function Calling) und mehr – direkt aus FHEM heraus.
Inhaltsverzeichnis- Features
- Voraussetzungen
- Installation
- Einrichtung
- Verwendung
- Attribute
- Readings
- Praxisbeispiele
Features- 💬 Textfragen – beliebige Fragen an Gemini stellen
- 🖼� Bildanalyse – Kamerabilder oder Snapshots direkt analysieren lassen
- 🏠 Gerätesteuerung – Smart-Home-Geräte per natürlicher Sprache steuern
- 📋 Geräte-Status – Zusammenfassung aller oder ausgewählter Geräte
- 🔄 Multi-Turn Chat – Kontext über mehrere Anfragen hinweg erhalten
InstallationEinmalig hinzufügen:update all https://raw.githubusercontent.com/ahlers2mi/FHEM-Gemini/main/controls_Gemini.txt
shutdown restart
Für automatische Updates (zusammen mit update all)update add https://raw.githubusercontent.com/ahlers2mi/FHEM-Gemini/main/controls_Gemini.txt
AnwendungsbeispieleBild-Analyse (z.B. Füllstand):set GeminiAI askWithImage /opt/fhem/IBC1.jpeg wie ist der ungefähre füllstand des IBC Containers in Prozent, bitte nur in einer zahl antworten damit es auswertbar ist, wenn du es nicht erkennen kannst, dann mit ERRORStatus-Abfragen:set GeminiAI askAboutDevices Ist das licht im Wohnzimmer an?set GeminiAI askAboutDevices Ist irgendwo ein Fenster auf?set GeminiAI askAboutDevices Gibt mir alle Geräte mit Namen und Alias als Liste
Steuerung:set GeminiAI control Schalte das kleine Licht im Wohnzimmer anset GeminiAI control Fahre die Rollladen hoch
Allgemeines:set GeminiAI ask Wie wird das Wetter morgen? Ich wohne in Coesfeld, Kurzfassung
Wichtige Attribute| Attribut | Beschreibung | Standard |
| apiKey | Google Gemini API Key (Pflicht) | – |
| model | Gemini-Modell | gemini-3.1-flash-lite-preview |
| controlList | Whitelist der steuerbaren Geräte | – |
VersionshistorieZitat- 3.2.0 (13.04.2026): Neuer Befehl chat (ideal für Telegram).
- 3.0.0 (13.04.2026): Einführung der readingBlacklist für besseren Datenschutz.
Lizenz: GNU General Public License v2 (FHEM-Lizenz)
WTF? :o
OpenClaw für FHEM.
Das musste kommen 8)
Jetzt noch hiermit verknüpfen: https://forum.fhem.de/index.php?topic=144147 (https://forum.fhem.de/index.php?topic=144147)
Habe Telegram laufen, Alexa Integration mit Custom Skill in den ich alles Sprechen kann, mir fehlt das nicht. :)
Nabend,
kurz eingerichtet und eine Frage gestellt. Klappt super. Würdest du bitte direkt im Modul den Response filtern.
Es handelt sich wohl um Markdown.
Beispiel:
21 x 5 ist **105**.
Gruß schwatter
Moin,
mit einigen Vorgaben in systemPrompt wird es besser.
Immer kurze Antworten. Datum und Uhrzeit aus dem Internet holen. Aktuelle Fragen im Internet suchen, nicht in deinen Trainingsdaten. Lösche bitte alle Sonderzeichen. Nur Sätze ohne Formatierung.
Vorher war zu viel Kram drinne und das Model hat immer die interne Uhrzei und Datum
von 2024 verwendet.
Gruß schwatter
Zitat von: schwatter am 10 April 2026, 20:17:48Nabend,
kurz eingerichtet und eine Frage gestellt. Klappt super. Würdest du bitte direkt im Modul den Response filtern.
Es handelt sich wohl um Markdown.
Beispiel:
21 x 5 ist **105**.
Gruß schwatter
Es gibt jetzt 2 weitere Readings, Plain und HTML
Moin,
vielen Dank für die Änderung! Wahrscheinlich hätten wir sie doch nicht gebraucht, aber schaden
kann es auch nicht. Wie ich oben geschrieben habe, hat der systemPrompt geholfen. Darüber hatte
ich vorher nicht richtig nachgedacht.
Direkt in Fhem habe ich jetzt auch lauffähig.
https://forum.fhem.de/index.php?msg=1361781
Noch eine Frage. Heute Morgen hatte ich kein Zugriff. Ich glaube es gab http error 403. Nach dem Update war es wieder
ok. Was hatte Google da geändert?
Gruß schwatter
Sorry, mir ist nichts bekannt zu Google Fehlern, bei mir läufts.
Wohl einfach Überlastung. Jetzt gerade kam erst 403 timeout. Danach 503 Überlastung.
So ist das halt, wenn man nicht bezahlt ;D
Gruß schwatter
Es gibt jetzt noch mal ein großes Update.
FHEM-Gemini (https://github.com/ahlers2mi/FHEM-Gemini)
- Es kann jetzt über den Befehl chat alles gesteuert werden, Abfragen zu Geräten, schalten von Geräten und auch Dinge aus dem Internet recherchieren.
set Gemini chat xxxxxxx - Es können jetzt mehrere Geräte auf einmal geschaltet werden.
- Über den Standard Kommentar am Gerät oder den GeminiComment am Gerät kann man Gemini dazu bewegen ein Gerät anders zu steuern.
bsp:
attr Denon <Gemini-Device>Comment für das einschalten des Denon im Wohnzimmer zoneMain setzen
Damit ist dann fast alles möglich.
Kannst du bitte folgende Readings generieren
prompt_token_count
candidates_token_count
total_token_count
Danke.
Edit:
Ich bekomme gerade wieder error, mein Model ist nicht in V1: gemini-3.1-flash-lite-preview. Schaue ich per curl https://generativelanguage.googleapis.com/v1/models -H "x-goog-api-key: YOUR_API_KEY"
schaut das so aus.
{ "models": [ { "name": "models/gemini-2.5-flash", "version": "001", "displayName": "Gemini 2.5 Flash", "description": "Stable version of Gemini 2.5 Flash, our mid-size multimodal model that supports up to 1 million tokens, released in June of 2025.", "inputTokenLimit": 1048576, "outputTokenLimit": 65536, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 64, "maxTemperature": 2, "thinking": true }, { "name": "models/gemini-2.5-pro", "version": "2.5", "displayName": "Gemini 2.5 Pro", "description": "Stable release (June 17th, 2025) of Gemini 2.5 Pro", "inputTokenLimit": 1048576, "outputTokenLimit": 65536, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 64, "maxTemperature": 2, "thinking": true }, { "name": "models/gemini-2.0-flash", "version": "2.0", "displayName": "Gemini 2.0 Flash", "description": "Gemini 2.0 Flash", "inputTokenLimit": 1048576, "outputTokenLimit": 8192, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 40, "maxTemperature": 2 }, { "name": "models/gemini-2.0-flash-001", "version": "2.0", "displayName": "Gemini 2.0 Flash 001", "description": "Stable version of Gemini 2.0 Flash, our fast and versatile multimodal model for scaling across diverse tasks, released in January of 2025.", "inputTokenLimit": 1048576, "outputTokenLimit": 8192, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 40, "maxTemperature": 2 }, { "name": "models/gemini-2.0-flash-lite-001", "version": "2.0", "displayName": "Gemini 2.0 Flash-Lite 001", "description": "Stable version of Gemini 2.0 Flash-Lite", "inputTokenLimit": 1048576, "outputTokenLimit": 8192, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 40, "maxTemperature": 2 }, { "name": "models/gemini-2.0-flash-lite", "version": "2.0", "displayName": "Gemini 2.0 Flash-Lite", "description": "Gemini 2.0 Flash-Lite", "inputTokenLimit": 1048576, "outputTokenLimit": 8192, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 40, "maxTemperature": 2 }, { "name": "models/gemini-2.5-flash-lite", "version": "001", "displayName": "Gemini 2.5 Flash-Lite", "description": "Stable version of Gemini 2.5 Flash-Lite, released in July of 2025", "inputTokenLimit": 1048576, "outputTokenLimit": 65536, "supportedGenerationMethods": [ "generateContent", "countTokens", "createCachedContent", "batchGenerateContent" ], "temperature": 1, "topP": 0.95, "topK": 64, "maxTemperature": 2, "thinking": true } ] }
Daher habe ich jetzt als Model gemini-2.5-flash-lite gewählt und es funktioniert wieder. Wechseln die ab und zu die Modelle in der API?
Abends klappt das eigentlich immer mit gemini-3.1-flash-lite-preview. Sehr merkwürdig...
Gruß schwatter
Ich habe heute den ganzen Tag Rum gespielt mit gemini-3.1-flash-lite-preview und keine Probleme, sehr komisch.
Guck Mal meinen letzten Telegramm Screenshot im Haupt Post.
Ok,
ich beobachte das, vielleicht einen Fallback einbauen?
Gruß schwatter
Zitat von: schwatter am 14 April 2026, 14:29:17Kannst du bitte folgende Readings generieren
prompt_token_count
candidates_token_count
total_token_count
Danke.
Readings sind umgesetzt
schwatter willst du mal die 4.0.1 testen?
Anlegen von Notify und AT möglich:
FHEM-Gemini 4.0.1 (https://github.com/ahlers2mi/FHEM-Gemini/tree/AT-und-NOTIFY-f%C3%BCr-Events-und-Zeitgesteuerte-Befehle)
Bitte den System-Prompt übernehmen, ich hatte mit Halluzinationen im set Befehl ärger
Sogar eine Fehlersuche in den Geräten ist möglich
Super,
ich habe im Code auf Github gesehen, das du im regen Austausch mit Beta-User stehst.
Die Woche habe nichts gemacht. Ich werde jetzt am We. ab und zu mal wieder eine Frage
reinschmeißen. In der Hoffnung, ich bekomme sie beantwortet. Das Problem bei gemini-3.1-flash-lite-preview
war, das es schnell auf Ausgelastet schaltet.
Und mein curl-cmd war auch falsch:
curl https://generativelanguage.googleapis.com/v1/models -H "x-goog-api-key: YOUR_API_KEY"vs
curl https://generativelanguage.googleapis.com/v1beta/models -H "x-goog-api-key: YOUR_API_KEY"
Weitere Frage, nutzt du Free oder Paid? Oder auch einen VPN? Vielleicht werden die Amerikaner bevorzugt bei Free?
Gruß schwatter
Ich hatte Paid, habe dann aber festgestellt das ich 10€ bezahlen muss :-)
Jetzt erst mal auf Free geschwenkt, und nach den ganzen Funktionen nun mal auf Sparsamkeit umgebaut.
https://github.com/ahlers2mi/FHEM-Gemini/tree/Prompt-Chaching (https://github.com/ahlers2mi/FHEM-Gemini/tree/Prompt-Chaching)
Gerne Testen. Hoffe es lassen sich jetzt enorm kosten sparen.
Das erklärt einiges. So Update gezogen, ich beobachte.
Gruß schwatter