(WIP) FHEMWEB interaktiv (speziell mit RHASSPY)

Begonnen von Beta-User, 03 April 2026, 11:24:46

Vorheriges Thema - Nächstes Thema

Beta-User

(Fast) OT noch eine Frage zu der derzeit in der Entwicklung befindlichen Alternative zu RHASSPY, Gemini:
Wie klappt das da mit "speziellen" Funktionalitäten?

"Damals" habe ich in RHASSPY irgendwann "tweaks" und "specials" eingeführt, weil über "normale" Befehle keine (wirklich) zufriedenstellende Ergebnisse zu erzielen waren.
Beispiele (ich hoffe, das kann man halbwegs interpretieren, um was es bei diesen "specials" hier jeweils geht):
Jalousie_Links           venetianBlind:setter=positionSlat stopCommand="set Jalousie_Links positionSlat [Jalousie_Links:positionSlat]"
Jalousie_WZ              venetianBlind:device=ZWave_SWITCH_MULTILEVEL_8.02 stopCommand="set ZWave_SWITCH_MULTILEVEL_8.02 dim [ZWave_SWITCH_MULTILEVEL_8.02:dim]"
LS_Wohnzimmer            scenes: Rollladen_geschlossen=none Rollladen_offen=none Test=none Kino="Heimkino starten"
Licht_Stehlampe_links_alt     colorTempMap:0="command Weiss" 85="command Weiss" 100="command Weiss"
Raumfuehler_Wohnzimmer     priority:inRoom=temperature
Thermostat_EssZi_Climate     priority:inRoom=desired-temp,temperature,humidity
Yamaha_Main              scenes:scene1="Musik hören" scene2="Film ansehen" scene3=none scene4="vorderen Eingang auswählen"
                                     priority: inRoom=volume outsideRoom=volume,scene
                                     confirm: SetOnOff="wirklich $target $Value schalten?" SetScene
Yamaha_Zone2             priority:inRoom=volume
 
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

schwatter

#16
Nabend,

ok, es ist ganz einfach wenn die richtige Repo benutzt wird  ;D Danke für den Link.

root@ubuntufhem:/opt# sudo mkdir -p /opt/piper
root@ubuntufhem:/opt# sudo chown fhem:dialout /opt/piper
root@ubuntufhem:/opt# cd /opt/piper
root@ubuntufhem:/opt/piper# sudo -u fhem python3 -m venv venv
root@ubuntufhem:/opt/piper# sudo -u fhem ./venv/bin/pip install https://github.com/OHF-Voice/piper1-gpl/releases/download/v1.4.2/piper_tts-1.4.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Collecting piper-tts==1.4.2
  Downloading https://github.com/OHF-Voice/piper1-gpl/releases/download/v1.4.2/piper_tts-1.4.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (13.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 10.2 MB/s eta 0:00:00
***Viele Packte die instalierte wurden***
root@ubuntufhem:/opt/piper# sudo ln -s /opt/piper/venv/bin/piper /usr/local/bin/piper
root@ubuntufhem:/opt/piper# piper --version
usage: piper [-h] -m MODEL [-c CONFIG] [-i INPUT_FILE] [-f OUTPUT_FILE] [-d OUTPUT_DIR]
             [--output-dir-naming {timestamp,text}] [--output-raw] [-s SPEAKER] [--length-scale LENGTH_SCALE]
             [--noise-scale NOISE_SCALE] [--noise-w-scale NOISE_W_SCALE] [--cuda]
             [--sentence-silence SENTENCE_SILENCE] [--volume VOLUME] [--no-normalize] [--data-dir DATA_DIR] [--debug]
piper: error: the following arguments are required: -m/--model
root@ubuntufhem:/opt/piper# sudo -u fhem piper --model /opt/fhem/piper_models/de_DE-thorsten-medium.onnx --output_file /opt/fhem/www/audio/voice.wav <<< "Version eins Punkt vier Punkt zwei ist nun aktiv."
root@ubuntufhem:/opt/piper#


Zitat von: Beta-User am 15 April 2026, 07:36:35
Zitat von: schwatter am 14 April 2026, 21:52:10Bei dem JS im contrib verfolge ich mehr oder weniger auch den Weg, das es fast nichts kennen muss. Außer Wakeword und wo das Readings STT ist. Das JS für den Atom Echo muss aber irgendwo die Info herbekommen, das es das Browsermikro freischalten soll.
Mein gedanklicher Angang wäre, das auf zwei alternativen anderen Wegen zu lösen:
- Wenn man eine FULLY-Instanz hat, "kennt" man über das mit der deviceId in f18.js die aktuelle Verbindung (FW_ID), und kann darüber das Mikro aufmachen. Im Prinzip ist das der Weg, den momentan auch RHASSPY (für Dialoge und Rückfragen) verwendet, nur dass das dann direkt über die FHEMWEB-Instanz läuft und nicht über den Umweg "welche FHEMWEB-Instanz gehört derzeit zu einem bestimmten (fully-) Gerät".
- Der andere (noch nicht getestete) Weg ginge über die allowed-Info. Danach könnte allerdings ein allowed-User eben nur eine Verbindung (gleichzeitig) nutzen.
Zugegeben: für die letzte Variante braucht man ähnlich viel Hintergrundinfo, wie wenn man das direkt in den Code schreibt, auf welches wakeword zu reagieren ist...

Aber was ist wenn der User mal nicht Fully nutzt?

Und zu Gemini. Bis jetzt habe ich es nur als Backup für Fragen benutzt, die nichts mit Fhem zu tun haben.
Der @ahlermi hatte mir seinem systemPrompt geschickt.
Beispiel:
Du bist ein KI-Assistent und Teil meiner FHEM Haussteuerung. Deine Aufgaben sind:

## 1. Geräte steuern und Rückmeldung geben
- Für die Geräteidentifizierung hat der Alias priorität, danach guck über dem Comment.
- Führe Steuerbefehle für Geräte aus, wenn du dazu aufgefordert wirst.
- Gib immer eine kurze Bestätigung, was geschaltet wurde (maximal 1 Satz).
- Beispiele:
  - "Rolllade Wohnzimmer wurde auf 0% geschlossen."
  - "Heizung Bad auf 22°C gestellt."

### Gerätespezifische Regeln:
- **Rollladen:** Wenn das Gerät als Rolllade erkannt wird und den set-Parameter "pct" hat:
  - 0 = ganz schließen, 100 = ganz öffnen.
- **Heizung:** Wenn das Gerät eine Heizung ist und "desiredTemperature" unterstützt, setze die Temperatur entsprechend.
- **Andere Befehle:** Bei Befehlen wie `motion_detection`:
  - Syntax: `set <GERÄT> motion_detection true` (ohne Doppelpunkt).
Das werde ich jetzt nach und nach testen.

Gruß schwatter