Hauptmenü

FHEM goes Gemini

Begonnen von tgv_boost, 09 Januar 2026, 11:07:35

Vorheriges Thema - Nächstes Thema

ch.eick

#15
Zitat von: rabehd am 10 Januar 2026, 17:01:40
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.

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"
      }
    ]
  }
}
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#16
So, für heute ist dann jetzt schluss.

Ich habe hier nochmal ein Update vom Device gemacht.

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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

erdnar

#17
Zitat von: rabehd am 10 Januar 2026, 17:01:40
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.

Ich hatte gemeinsam mit Gemini an den Einstellungen gewerkelt. Als mal keine Antwort zurückkam, hatte ich Gemini gefragt, ob es am kostenlosen Key liegen könnte... Antwort siehe oben.
Aber evtl. ist es ja aus der Kategorie stimmt´s oder stammt es von einer KI  :-\
ErdnaR

Edit meint: Hier ist die Preisliste. Auszug: Gemini 2.0 Flash, 2.5 Flash und 2.5 Flash-Lite bieten insgesamt 1.500 gegroundete Prompts pro Tag ohne Aufpreis. ...

ch.eick

Zitat von: erdnar am 11 Januar 2026, 11:14:58
Zitat von: rabehd am 10 Januar 2026, 17:01:40
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.

Ich hatte gemeinsam mit Gemini an den Einstellungen gewerkelt. Als mal keine Antwort zurückkam, hatte ich Gemini gefragt, ob es am kostenlosen Key liegen könnte... Antwort siehe oben.
Aber evtl. ist es ja aus der Kategorie stimmt´s oder stammt es von einer KI  :-\
ErdnaR

Edit meint: Hier ist die Preisliste. Auszug: Gemini 2.0 Flash, 2.5 Flash und 2.5 Flash-Lite bieten insgesamt 1.500 gegroundete Prompts pro Tag ohne Aufpreis. ...
Ich verwende nur die kostenlosen Abfragen, habe also keine Cloud gebucht.

Zitat
Kostenlose Versionen:

- Web & App: Du kannst die Gemini App und die Webversion (gemini.google.com) kostenlos nutzen, um Fragen zu stellen und Inhalte zu generieren.

- API: Für Entwickler gibt es eine kostenlose Stufe der Gemini API mit niedrigeren Ratenbegrenzungen zum Testen.
Da steht für die API "mit niedrigeren Ratenbegrenzungen zum Testen"
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#19
Hallo zusammen,
da mein Device jetzt immer größer wird stelle ich es gleich in meinem contrib bereit.

Mein letzter Test war sehr begeisternd :-)

Nutzerfrage: Generiere mir alle vorhandenen Rollo Namen mit einem 'set' davor und 'open' dahinter. Für das Arbeitszimmer soll es auf 40 gesetzt werden.
response: set WZ_O_Rollo open;;set WZ_W_Rollo open;;set KU_S_Rollo open;;set SC_W_Rollo open;;set BA_N_Rollo open;;set AR_O_Rollo position 40

Das zeigt mal wieder wie wichtig es ist sich über die Namen vorher gedanken zu machen ;-)

In meinem Fall könnte es auch mit den 20 API Aufrufen reichen, da ich nicht so viele Manuelle Eingriffe im Haus habe.
Ansonsten könnte ich mir vorstellen noch ein zweites Konto zu eröffne und dann die Anfragen wechselweise zu schicken, es ist ja nur der Key zu tauschen und die SystemInstructions werden ja jedesmal mitgesendet. Somit würde man bereits auf 40 Anfragen kommen können.

EDIT: Ich habe jetzt den Switch zwischen zwei Keys auch bereits eingebaut.
Mindestens den default Gemini_AI_Key_0 ablegen
{KeyValue("store","Gemini_AI_Key_0","DEIN_API_KEY_HIER")}

Verwendet man zwei Keys ist dieses reading anzulegen: setreading Gemini_AI Gemini_AI_Key 0
{KeyValue("store","Gemini_AI_Key_1","DEIN_ZWEITER_API_KEY_HIER")}

Durch das reading Gemini_AI_Key entsteht ein Zähler, der zwischen 0 und 1 wechselt, wird das reading gelöscht wird Gemini_AI_Key_0 als default verwendet.


Es gibt nun
- set 10_ask
    Für normale Anfragen

- set 02_FHEM_CMD
    Hier wird vorher mit Anweisungen aus den userattr KI_* angelernt.
    Dann kann man eine Anfrage z.B. mit "set 02_FHEM_CMD Mach mal in der Küche licht" einen Aufruf machen.

Ein Vorgeschmack auf die userattr KI_* gibt es im Device im contrib.
Die KI_* sind als KI_CMD[nn] und KI_Instr[nn] gruppiert und können im userattr erweitert werden.

VG    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#20
Zitat von: erdnar am 11 Januar 2026, 11:14:58Ich hatte gemeinsam mit Gemini an den Einstellungen gewerkelt. Als mal keine Antwort zurückkam, hatte ich Gemini gefragt, ob es am kostenlosen Key liegen könnte... Antwort siehe oben.
Aber evtl. ist es ja aus der Kategorie stimmt´s oder stammt es von einer KI  :-\
ErdnaR

Edit meint: Hier ist die Preisliste. Auszug: Gemini 2.0 Flash, 2.5 Flash und 2.5 Flash-Lite bieten insgesamt 1.500 gegroundete Prompts pro Tag ohne Aufpreis. ...
Könntest Du Deine Key Konfiguration mal näher erleutern?

Ich habe hier unter Key folgendes eingetragen.
Du darfst diesen Dateianhang nicht ansehen.

Dort kann man auch auf "View usage" gehen und sieht unter Fehler "429 TooManyRequests", wenn man im Diagramm über den roten Balken geht die Anzahl von 21.
Du darfst diesen Dateianhang nicht ansehen.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Ich nochmal :-)

Bezüglich zweiten API Key klappt das Vorgehen.

- Man legt sich eine zweite Mail Adresse an, wenn man noch keine hat
- Meldet das als google Konto an und durchläuft die Verifizierung
- Dann meldet man sich mit dem neuen Accout an und wechselt zu aistudio
- Man kann den default Key verwenden oder sich ein eigenes Projekt anlegen.
  Das Limit gilt jedoch nicht pro Projekt, sondern pro Account :-(

Somit habe ich jetzt bei rollierender Verwendung 2x20 Anfrage, was mir erstmal ausreicht.

Zu meinem letzten Test
# Ich habe folgende SystemInstruction definiert, die die Umgebung beschreiben und mit der die KI zusätzlich lernt

# 1.
attr Gemini_AI KI_Instr00 Du bist die Smart-Home-KI für FHEM. Antworte NUR mit dem FHEM-Befehl.
attr Gemini_AI KI_Instr01 Mehrere Befehle trenne mit ;;;;
attr Gemini_AI KI_Instr02 Deine GERÄTE-LISTE: - Das Hauptlicht heißt: Küche

# 2.  Das beschreibt meine Rollo Installation, ohne die Device Namen direkt anzugeben
# 2.1 Wie heißen die Räume und welche Kurznamen sollen verwendet werden
attr Gemini_AI KI_Instr03 Es gibt Rollos in allen Räumen. Wohnzimmer -> WZ;; Küche -> KU;; Schlafzimmer -> SC;; Bad -> BA;; Arbeitszimmer -> AR;;
# 2.2 Wie sind die Aurichtungen der Rollos in den Räumen
#     Man kann auch mehrere Beschreibungen in eine Zeile schreiben, die Zeilen sollen es nur lesbarer machen.
#     Welche Kommandos können für Rollos verwendet werden?
attr Gemini_AI KI_Instr04 WZ hat je 1 Ost und West, KU 1 Süd, SC 1 West, BA 1 Nord und AZ 1 Ost Rollo. Es gibt Kommandos open, close und position mit 0 bis 100.
# 2.3 Das beschreibt meinen Namensstandard für die Rollos
attr Gemini_AI KI_Instr05 Die Gerätenamen entsprechen folgendem Syntax mit _ als Trennzeichen: 'Kurzname des Raums' 'Kurzname der Himmelsrichtung' 'Rollo'
# 2.3 Hier lernt die KI noch, dass die Himmelsrichtungen abgekürzt werden.
attr Gemini_AI KI_Instr06 Die Himmelsrichtungen werden mit dem ersten Buchstaben abgekürzt.

# 3. Für direkte Kommandos und Aussagen gibt man Beispiele. Dies ist sinnvoll, wenn es keinen guten Namensstandard gibt, oder das Kommando komplexer ist.
attr Gemini_AI KI_CMD00 BEISPIELE:
attr Gemini_AI KI_CMD01 '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
An meinen vorherigen Post, mit Tests sieht man, dass die KI auch aus anderen Aussagen durchaus das richtige Kommando findet.
Bei den Attributen habe die Möglichkeit von 00-99 eingerichtet, die man jedoch noch im userattr fortlaufend ergänzen muss.

Jetzt fehlt noch die Ausführung der KI Kommandos und die Kopplung mit Signal (in meinem Fall).

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

erdnar

Zitat von: ch.eick am 12 Januar 2026, 10:35:52Dort kann man auch auf "View usage" gehen und sieht unter Fehler "429 TooManyRequests", wenn man im Diagramm über den roten Balken geht die Anzahl von 21.
Du darfst diesen Dateianhang nicht ansehen.

VG  Christian

Mahlzeit,
ich habe zwischenzeitlich gelernt, dass es wohl einen Unterschied gibt zwischen Anfragen an Gemini und solche über die API. :-[
Die Diagramm hatte ich auch gesehen und war, wie du, bei API-Anfragen insgesamt schon weit über 20 hinaus, hatte aber noch keine TooManyRequests.
Ich ziehe also, wie so oft, meinen Redebeitrag zurück (Grund: viel Meinung - wenig Wissen)  :'(.

OT Apropos wenig Wissen: Du benutzt KeyValue("store","Gemini... für den Key. Da dies bei mir zu Undefined subroutine &main::KeyValue called at (eval... führte, habe ich es auf die Schnelle in einen Dummy gelegt und von da geholt.
attr Gemini_AI replacement01Value { ReadingsVal("Gemini_Config","api_key","") } Wie komme ich zum KeyValue ?
Danke
ErdnaR

ch.eick

Hallo Erdnar

Zitat von: erdnar am 12 Januar 2026, 13:28:16OT Apropos wenig Wissen: Du benutzt KeyValue("store","Gemini... für den Key. Da dies bei mir zu Undefined subroutine &main::KeyValue called at (eval... führte, habe ich es auf die Schnelle in einen Dummy gelegt und von da geholt.
attr Gemini_AI replacement01Value { ReadingsVal("Gemini_Config","api_key","") } Wie komme ich zum KeyValue ?
Danke
ErdnaR
Dazu gibt es im Forum und Wiki natürlich mehr Infos :-)

Hier auf die Schnelle die Funktion für die 99_myUtils.pm, wie immer ohne Gewähr.
Achtung, das ist kein Passwort Tresor, gibt aber die Möglichkeit Passworte und Schlüssel aus dem Device zu halten, falls man es so wie ich mal schnell teilt.
######################################################
# {KeyValue("read|store","PW_PV_Anlage_1_API_user","<passwort>")}
# {KeyValue("store","PW_PV_Anlage_1_API_user",undef)}   # zum löschen
######################################################
sub KeyValue {
    my ($step, $index, $value) = @_;
    my $key = getUniqueId().$index;
    my $e_value = "";
    my $error;

    if (eval "use Digest::MD5;1") {
      $key    = Digest::MD5::md5_hex(unpack "H*", $key);
      $key   .= Digest::MD5::md5_hex($key);
    }

    if ($step eq "read") {
      ($error, $value) = getKeyValue($index);

      if ( defined($error) ) {
        Log3 $index,3, "$index, can't read key from FhemUtils/uniqueID: $error";
        return undef;
      }

      if ( defined($value) ) {
        my $dec_value = '';

        for my $char (map { pack('C', hex($_)) } ($value =~ /(..)/g)) {
          my $decode  = chop($key);
          $dec_value .= chr(ord($char)^ord($decode));
          $key        = $decode.$key;
        }
        return $dec_value;
      }
      else {
        Log3 $index,3,"$index, no key found in FhemUtils/uniqueID";
        return undef;
      }
    }

    if ($step eq "store") {
      for my $char (split //, $value) {
        my $encode = chop($key);
        $e_value  .= sprintf("%.2x",ord($char)^ord($encode));
        $key       = $encode.$key;
      }
      $error = setKeyValue($index, $e_value);
      return "error while saving key : $error" if(defined($error));
      return "Key successfully saved in FhemUtils/uniqueID Key $index";
    }
};

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Prof. Dr. Peter Henning

Wir benutzen LLM in verschiedenen Forschungsprojekten. Vor dem Hintergrund habe ich erhebliche Bedenken über die hier geübte Vorgehensweise, denn das ist eine irrsinnige Ressourcenverschwendung.

Was man sinnvoll machen kann, ist ein Sprachmodell einzusetzen, um einen Text zu normieren, also generell einen Intent zu erkennen. Die Umsetzung in einen finalen FHEM-Befehl sollte man aber auf andere Weise machen, dafür gibt es schon verschiedene Module.

LG

pah

ch.eick

Zitat von: Prof. Dr. Peter Henning am 12 Januar 2026, 19:33:54Wir benutzen LLM in verschiedenen Forschungsprojekten. Vor dem Hintergrund habe ich erhebliche Bedenken über die hier geübte Vorgehensweise, denn das ist eine irrsinnige Ressourcenverschwendung.

Was man sinnvoll machen kann, ist ein Sprachmodell einzusetzen, um einen Text zu normieren, also generell einen Intent zu erkennen. Die Umsetzung in einen finalen FHEM-Befehl sollte man aber auf andere Weise machen, dafür gibt es schon verschiedene Module.
Hallo pah,
hättest Du da mal links zum Lesen für mich, ich lerne ja gerade noch sehr viel dazu.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Prof. Dr. Peter Henning

Zitat von: ch.eick am 12 Januar 2026, 19:37:04links zum Lesen
Wär schön, das ist aber vorderste Front der Forschung.

Einfacher Test für das, was ich meine, das funktioniert mit jedem LLM.
Erzeuge aus einer Untermenge Deines FHEM relevante Daten. Sagen wir, für einen Raum: Innentemperatur, Feuchte, Außentemperatur, Stellung der Rollläden. Außerdem für diese Raum die steuerbaren Geräte und ihren Status. Sagen wir: Heizung-Solltemperatur,Klimanlage-Status, Rollläden-Stand, Leuchten-Status.

Eine klare Anweisung, z.B.: "Stelle die Temperatur im Wohnzimmer auf 21 Grad"
kann von mehreren FHEM-Modulen interpretiert werden. ich verwende dazu Babble, das eine semantische Analyse durchführt.

Wenn die Anweisung nicht mehr klar ist, z.B.:"Im Wohnzimmer ist es zu kalt"
kann das noch von einem regelbasierten Chatbot erkannt werden. Dazu verwende ich RiveScript, das kann an Babble angekoppelt werden.

Erst komplizierte Formulierungen, z.B. "Ich habe eiskalte Füße und gehe jetzt ins Wohnzimmer" erfordern mehr als die semantische Analyse, nämlich einen umfassenden Kontext. Das wäre also eine Aufgabe für ein LLM, das diesen Kontext in seinen Trainingskorpora findet. Liefere also diese Formulierung zusammen mit den eingangs genannten Daten und frage nach einer Maßnahme.

LG

pah


ch.eick

Hallo pah,

ich habe jetzt bereits eine Vorstufe für klar definierte Kommandos, die mit einem einfachen Perl Mapping das Kommando ausgibt.
Natürlich möchte ich nicht jeden Text zu Gemini schicken, das wäre echt der Obergau.

   READINGS:
     2026-01-13 17:27:10   _2B49172
     2026-01-13 17:27:10   in_analyse      setreading WB_1_lp_1 ui_command_1 Stop
     2026-01-13 17:27:10   in_groupName    FHEM cli
     2026-01-13 17:27:10   in_message      Wallbox Stopp
     2026-01-13 17:27:10   in_source       +49172
     2026-01-13 17:27:10   signal_in_json  {"jsonrpc":"2.0","method":"receive","params":{"envelope":{"source":"+491728447553","sourceNumber":"+49172","sourceUuid":"925814d3-c417-4848-bfbf-aaf306b978bd","sourceName":"","sourceDevice":1,"timestamp":1768321630775,"serverReceivedTimestamp":1768321630333,"serverDeliveredTimestamp":1768321630335,"syncMessage":{"sentMessage":{"destination":null,"destinationNumber":null,"destinationUuid":null,"timestamp":1768321630775,"message":"Wallbox Stopp","expiresInSeconds":0,"viewOnce":false,"groupInfo":{"groupId":"ik32NK0yahSjfnXJC9gmHqyGKr0okcm62Fa/9+ereJc=","groupName":"FHEM cli","revision":0,"type":"DELIVER"}}}},"account":"+49172"}}
Attributes:
   in_commands 'küche licht an'=>'set KU_Licht ON', 'wallbox sofort laden'=>'setreading WB_1_lp_1 ui_command_1 SofortLaden', 'wallbox nur pv'=>'setreading WB_1_lp_1 ui_command_1 NurPV', 'wallbox stopp'=>'setreading WB_1_lp_1 ui_command_1 Stop', 'pool an'=>'setreading Pool_PV_Perl 01_2_Eigenverbrauch_manuell_An', 'pool aus'=>'setreading Pool_PV_Perl 01_3_Eigenverbrauch_manuell_Aus', 'media an'=>'setreading Wohnzimmer_Standby Standby_Steckdose_ein', 'media aus'=>'setreading Wohnzimmer_Standby Standby_Steckdose_aus'


Danke für Deine Hinweise, hättest Du da bereits FHEM Basierte Schnellstarts, die ich mir anschauen könnte?
Mein FHEM ist der Docker Container vom Image ghcr.io/fhem/fhem-docker:latest .

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Prof. Dr. Peter Henning

Zitat von: ch.eick am 13 Januar 2026, 17:38:43Natürlich möchte ich nicht jeden Text zu Gemini schicken, das wäre echt der Obergau.
Genau, Du hast das Problem richtig erkannt.

Das Babble-Modul ist im Wiki einigermaßen dokumentiert, muss ich vlt. mal aktualisieren.

RiveScript findest Du hier https://www.rivescript.com/

Ich hänge hier mal meine Haupt-Rivescript-Datei an (bereinigt um ein paar vertrauliche Dinge...)

Dort sieht man das Konzept der Perl-Objekte, die von Rivescript gerufen werden. Und eine Datei test.pl, um einen minimalen Chatbot zu starten

LG

pah