Servus Gemeinde,
mein erster Versuch Gemini zur intelligenten Sprachsteuerung zu verwenden, hat heute Früchte getragen. Testweise habe ich 3 Leuchten, 3 Jalousien und eine Kaffeemaschine eingebunden.
Dinge wie "es ist etwas dunkel im Wohnzimmer" oder "mir wäre jetzt nach einem Espresso" münden schon mal in den richtigen Aktionen. Auch beliebig formulierte Varianten bis hin zu "ich würde gerne im Arbeitszimmer lesen" gibt je nach Tageszeit die richtigen Kommandos.
Wirklich beeindruckend, aber da ist noch viel zu tun. Vielleicht gibts ja schon Erfahrungen damit im Forum.
Gruß
Hallo,
das finde ich auch spannend, kannst Du mal die Testanbindung vorstellen?
Was wird alles benötigt?
Wie kommt die Spracheingabe ins Fhem?
VG Christian
wie gesagt, bin ganz am Anfang und noch weit weg von Fragen wie>
-wie kommen die Sprachkomandos in verschiedenen Räumen in Gemini, derzeit nur über mein Iphone und die Gemini App oder im Textmode im Browser
-wo werden Rückmeldungen ausgegeben
-habe ich die richtige Struktur in meiner Definition der Geräte oder rächt sich da der Wildwuchs über die Jahre (Nomenklatur etc)
etc. etc.
Aber ist schon lustig, wenn ein "es ist ziemlich dunkel im Wohnzimmer" eine Entscheidung triggert, ob es entsprechend der Tageszeit und dem Status der Aussenrollos Sinn macht entweder erstmal die Rollos hochzufahren oder/und das Licht noch anzumachen ist.
FHEM Anbindung derzeit über Telnet, irgendwie kann man auch eine Art Inventory der definierten Geräte machen. Wie gesagt, gaanz am Anfang
Zur konkreten Umsetzung frag am besten Gemini, da wird Dir geholfen. Ist schon beeindruckend, wirklich.
Mein Anfangs Plot für Gemini war ganz einfach: kann man dich eigentlich mit Sprachsteuerung auch ansprechen/aufwecken, so Alexa like, wobei Alexa für FHEM schon läuft?
Darauf hin startete ein Dialog zur Umsetzung "Gemini für FHEM"
Wobei ich mir noch gar nicht sicher bin ob ich das will, mal sehen
Hast du denn schon ein Device zur Kopplung im FHEM?
Der Thread kommt mir seltsam vor.
Entweder Du hast eine Umsetzung und magst uns dran teilhaben oder Du hast nichts.
Zusammen kann man Deine vorhandene Lösung ja weiter ausbauen. Viele Köpfe denken besser.
Zitat von: CoolTux am 10 Januar 2026, 11:11:44Der Thread kommt mir seltsam vor.
Das ist mMn. noch untertrieben.
#Clickbait
#VielLärmumNichts
Und dann noch in
Anfängerfragen gepostet um maximale Reichweite zu erlangen.
ABER: @TE Ich lasse mich gerne eines Besseren belehren. Also dann mal Butter bei die Fische...
VG Sebastian
kann der Moderator dieses Thema bitten schließen oder löschen? Auf diese Art der Unterhaltung hab ich keine Lust.
@CoolTux,
nein, ich habe kein Konzept ich bin im Versuchsmodus.
Es handelt sich um eine mit Gemini entwickelte reduzierte Grundfunktion als Idee, die ich gerne hier im Forum teile. Ich kann Dir, wenn Du möchtest, den 3 Stündigen Dialog mit Gemini posten. Ich denke, wir dürfen uns bei der Art wie wir Konzepte entwickeln, für die Zukunft neu ausrichten. Ich finds spannend. Mach einen Versuch und gehe die ersten Schritte für Dich selbst, komm bitte zurück und schildere Deine Erfahrungen.
Ich glaube CoolTux Frage bezog sich vor allem auf diesen Punkt:
Zitat von: tgv_boost am 10 Januar 2026, 10:09:01FHEM Anbindung derzeit über Telnet
Da bist du reichlich unkonkret geblieben, obwohl das typischerweise der interessanteste Punkt sein dürfte. Also wie kommen die Daten aus dem LLM (das viele von uns nur als Weboberfläche im Browser kennen) in Telnet bzw. FHEM.
Finde die Nachfrage deshalb durchaus berechtigt.
Das ist ja im Zweifel auch in wenigen Sätzen erklärt, jedenfalls wäre mehr schön als "joa Telnet halt". Sonst erschließt sich auch mir der Sinn von diesem Post nicht. Du hast das alles ja auch erst kürzlich eingerichtet und dürftest dich noch gut daran erinnern, sodass du das ja einfach kurz zusammenfassen kannst. Falls nicht, kannst du Gemini doch einfach prompten, dir das fürs Forum zusammenzufassen ;D
ClickBait und VielLärmUmNichts nehme ich persönlich. Eigentlich war ich Binford Fan, aber scheinbar ist da ein ewig gestriger am Werk und die Binford Ära ist ja auch schon lange vorbei. Und übrigens, ich habe hier niemanden von nichts zu überzeugen. Wenn ihr weitermachen wollt, wendet Euch am Gemini. Hier mal ein Baustein der Kommunikation auf Raspberry Seite:
import google.generativeai as genai
import socket
import time
# --- KONFIGURATION ---
GEMINI_API_KEY = "DEIN_API_KEY"
FHEM_IP = "127.0.0.1"
FHEM_PORT = 7072
genai.configure(api_key=GEMINI_API_KEY)
# Automatische Modellwahl
try:
available_models = [m.name for m in genai.list_models() if 'generateContent' in m.supported_generation_methods]
selected_model_name = next((m for m in available_models if "gemini-2.5-flash" in m), available_models[0])
model = genai.GenerativeModel(selected_model_name)
except Exception as e:
print(f"Konnte Modelle nicht laden: {e}")
exit()
def send_fhem_command(cmd):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(2)
s.connect((FHEM_IP, FHEM_PORT))
# Den Befehl senden
message = f"{cmd}\nquit\n"
s.sendall(message.encode('utf-8'))
time.sleep(0.1) # Jetzt funktioniert sleep
s.close()
print(f"Befehl erfolgreich an FHEM übertragen: {cmd}")
except Exception as e:
print(f"Verbindung zu FHEM (127.0.0.1:7072) fehlgeschlagen: {e}")
def ask_gemini(user_text):
# HIER ist das Gedächtnis der KI
system_instruction = """
Du bist die Smart-Home-KI für FHEM. Antworte NUR mit dem FHEM-Befehl.
DEINE GERÄTE-LISTE:
- Das Hauptlicht heißt: Wohnzimmer
BEISPIELE:
'Es ist dunkel im Wohnzimmer' -> set Wohnzimmer on
'Licht aus im Wohnzimmer' -> set Wohnzimmer off
"""
prompt = f"{system_instruction}\n\nUser sagt: {user_text}"
response = model.generate_content(prompt)
return response.text.strip()
if __name__ == "__main__":
while True:
befehl = input("Was soll ich tun? (oder 'exit'): ")
if befehl.lower() == 'exit': break
fhem_cmd = ask_gemini(befehl)
print(f"KI schlägt vor: {fhem_cmd}")
# Nur senden, wenn die KI einen set-Befehl generiert hat
if "set" in fhem_cmd:
send_fhem_command(fhem_cmd)
und bei FHEm ists bis jetzt relativ trivial:
define allowedTelnet allowed
define telnetPort telnet 7072 global
Das ist doch schon mal was.
Umsetzung in Python mit Hilfe der Gemini SDK. Damit kann man doch arbeiten bei Interesse.
Soo, jetzt habe ich auch gestartet.
Ich mag es gerne, wenn im FHEM nicht soviel extern, also z.B. in Python aufgerufen wird.
Den Key habe ich schon mal im Store abgelegt
Zuerst den Key holen: https://aistudio.google.com/api-keys
Dann im FHEM ablegen
{KeyValue("store","Gemini_AI_Key","DEIN_API_KEY_HIER")}
Das HTTPMOD sieht dann zum Testen schon mal so aus
defmod Gemini_AI HTTPMOD none
attr Gemini_AI userattr FHEM_Instructions
attr Gemini_AI FHEM_Instructions Du bist die Smart-Home-KI für FHEM. Antworte NUR mit dem FHEM-Befehl. Mehrere Befehle trenne mit ;;;; .Deine GERÄTE-LISTE: - Das Hauptlicht heißt: Küche BEISPIELE:'Es ist dunkel in der Küche' -> set MQTT2_zigbee_Ku_Licht ON 'Licht aus in der Küche' -> set MQTT2_zigbee_Ku_Licht OFF
attr Gemini_AI get02AutoNumLen 3
attr Gemini_AI get02ExtractAllJSON 1
attr Gemini_AI get02Header01 Content-Type: application/json
attr Gemini_AI get02Name 05_ListModels
attr Gemini_AI get02URL https://generativelanguage.googleapis.com/v1/models?key=%%KEY%%
attr Gemini_AI group Gemini
attr Gemini_AI reading01DeleteIfUnmatched 1
attr Gemini_AI reading01JSON error_message
attr Gemini_AI reading01Name error_message
attr Gemini_AI reading02DeleteIfUnmatched 1
attr Gemini_AI reading02JSON error_status
attr Gemini_AI reading02Name error_status
attr Gemini_AI reading03DeleteIfUnmatched 1
attr Gemini_AI reading03JSON error_code
attr Gemini_AI reading03Name error_code
attr Gemini_AI reading05DeleteIfUnmatched 1
attr Gemini_AI reading05JSON candidates_01_content_parts
attr Gemini_AI reading05Name response
attr Gemini_AI replacement01Mode expression
attr Gemini_AI replacement01Regex %%KEY%%
attr Gemini_AI replacement01Value {KeyValue("read","Gemini_AI_Key")}
attr Gemini_AI replacement05Mode expression
attr Gemini_AI replacement05Regex %%FHEM_Instructions%%
attr Gemini_AI replacement05Value {AttrVal($name,"FHEM_Instructions","ERROR")}
attr Gemini_AI room Neu
attr Gemini_AI set01Data {"contents": [{"parts":[{"text": "$val"}]}]}
attr Gemini_AI set01ExtractAllJSON 0
attr Gemini_AI set01Header01 Content-Type: application/json
attr Gemini_AI set01Header02 x-goog-api-key: %%KEY%%
attr Gemini_AI set01Method POST
attr Gemini_AI set01Name 01_ask
attr Gemini_AI set01ParseResponse 1
attr Gemini_AI set01TextArg 1
attr Gemini_AI set01URL https://generativelanguage.googleapis.com/v1/models/gemini-2.5-flash:generateContent
attr Gemini_AI set05Data {"contents": [{"role": "user", "parts": [{"text": "INSTRUKTION: %%FHEM_Instructions%% NUTZERFRAGE: $val"}]}]}
attr Gemini_AI set05ExtractAllJSON 0
attr Gemini_AI set05Header01 Content-Type: application/json
attr Gemini_AI set05Header02 x-goog-api-key: %%KEY%%
attr Gemini_AI set05Method POST
attr Gemini_AI set05Name 02_FHEM_Instructions
attr Gemini_AI set05ParseResponse 1
attr Gemini_AI set05TextArg 1
attr Gemini_AI set05URL https://generativelanguage.googleapis.com/v1/models/gemini-2.5-flash:generateContent
attr Gemini_AI showBody 1
attr Gemini_AI showError 0
attr Gemini_AI timeout 15
attr Gemini_AI verbose 0
Leider ist das kostenlose Model limitiert auf 20 Aufrufe pro Tag, da wird es sicher eng, wenn man es für's SmartHome nutzen möchte.
VG Christian
Danke an Christian und CoolTux fürs teilen.
(Wir sollten den Ersteller etwas mehr loben, dann ist er vielleicht zutraulicher ;) )
20 Aufrufe pro Tag sind etwas knapp, wenn man die gesamte Sprachsteuerung darüber macht.
Praktikabel ist das wenn es die bisherigen Geräte (Alexa) ohne große Umstände nutzt. Braucht man das https://www.amazon.in/CazyUndee-Corp-Gemini/dp/B0FJ2VYP4F (https://www.amazon.in/CazyUndee-Corp-Gemini/dp/B0FJ2VYP4F)?
Handy z.B. wären mir da zu umständlich.
Zitat von: tgv_boost am 10 Januar 2026, 13:06:23Hier mal ein Baustein der Kommunikation auf Raspberry Seite
Super, danke dir!
Zitat von: rabehd am 10 Januar 2026, 15:32:3620 Aufrufe pro Tag sind etwas knapp, wenn man die gesamte Sprachsteuerung darüber macht.
Gemini meint: Das Limit des kostenlosen Keys liegt bei Gemini (je nach Modell) bei etwa 15 Anfragen pro Minute oder 1.500 pro Tag – davon bist du weit entfernt.
Zitat von: erdnar am 10 Januar 2026, 16:59:25Gemini meint: Das Limit des kostenlosen Keys liegt bei Gemini (je nach Modell) bei etwa 15 Anfragen pro Minute oder 1.500 pro Tag – davon bist du weit entfernt.
Ich habe mich bezogen auf:
Zitat von: ch.eick am 10 Januar 2026, 14:30:33Leider ist das kostenlose Model limitiert auf 20 Aufrufe pro Tag, da wird es sicher eng, wenn man es für's SmartHome nutzen möchte.
Zitat von: rabehd am 10 Januar 2026, 17:01:40Zitat von: erdnar am 10 Januar 2026, 16:59:25Gemini meint: Das Limit des kostenlosen Keys liegt bei Gemini (je nach Modell) bei etwa 15 Anfragen pro Minute oder 1.500 pro Tag – davon bist du weit entfernt.
Ich habe mich bezogen auf:
Zitat von: ch.eick am 10 Januar 2026, 14:30:33Leider ist das kostenlose Model limitiert auf 20 Aufrufe pro Tag, da wird es sicher eng, wenn man es für's SmartHome nutzen möchte.
In der http Rückmeldung steht das Limit von 20 auch drin.
Welche URL und welches Model verwendet ihr?
Hier mal eine Rückmeldung vom Limit
{
"error": {
"code": 429,
"message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 20, model: gemini-2.5-flash\nPlease retry in 38.035617409s.",
"status": "RESOURCE_EXHAUSTED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Learn more about Gemini API quotas",
"url": "https://ai.google.dev/gemini-api/docs/rate-limits"
}
]
},
{
"@type": "type.googleapis.com/google.rpc.QuotaFailure",
"violations": [
{
"quotaMetric": "generativelanguage.googleapis.com/generate_content_free_tier_requests",
"quotaId": "GenerateRequestsPerDayPerProjectPerModel-FreeTier",
"quotaDimensions": {
"location": "global",
"model": "gemini-2.5-flash"
},
"quotaValue": "20"
}
]
},
{
"@type": "type.googleapis.com/google.rpc.RetryInfo",
"retryDelay": "38s"
}
]
}
}
So, für heute ist dann jetzt schluss.
Ich habe hier nochmal ein Update vom Device gemacht. (https://forum.fhem.de/index.php?msg=1355525)
Es gibt nun
- set 10_ask
Für normale Anfragen
- set 10_FHEM_instruction
Hier wird vorher mit Anweisungen aus dem userattr FHEM_Instructions angelernt.
Dann kann man eine Anfrage mit "set 10_FHEM_instruction Mach mal in der Küche licht" einen Aufruf machen.
Ich habe gerade online noch einen Test gemacht und das Ergebnis finde ich recht gut.
Der Vorteil ist halt, dass man schreiben und später eventuell auch Sprechen kann, wie der Schnabel gewachsen ist.
NUTZERANFRAGE: Mach ma Küche hell und dann wieder aus.
responce: set MQTT2_zigbee_Ku_Licht ON;; set MQTT2_zigbee_Ku_Licht OFF
NUTZERANFRAGE: küche dunkel
responce: set MQTT2_zigbee_Ku_Licht OFF
NUTZERANFRAGE: küche an
responce: set MQTT2_zigbee_Ku_Licht ON
NUTZERANFRAGE: küche is echt grell
responce: set MQTT2_zigbee_Ku_Licht OFF
Ich könnte mir vorstellen, dass man für mehr Abfragen eventuell mehrere Konten einrichtet, die man dann in einem rollierend verwendet.
VG Christian