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:35Zitat 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...
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.Zitat von: Marko1976 am 15 April 2026, 16:50:53Das ist dennoch mehr als unlogisch. Kein Mensch der normal redet gibt von einem zukünftigen Zeitpunkt eine rückwärtige Zeitspanne an. Man fängt immer mit dem Beginn der Zeitspanne an und Endet mit deren Ende, egal wann und wie viel Zeit diese in der Zukunft liegt.Das ist einfach falsch. Wetterdienste weltweit arbeiten nach diesem Muster, und auch andere zukunftsgerichtete Systeme wie etwa die Strombörsen folgen dem Muster.
Zitat von: HarryT am 15 April 2026, 16:41:58I thought it was mentioned that the first call would abort with error 400 or something. So I guess 403 is a real error/problem.
Zitat von: xenos1984 am 15 April 2026, 09:01:00Ganz einfach: Wenn in den Vorhersagedaten (hfc.*) für morgen 15:00 steht rain1h = 1.0 und rain3h = 2.4, dann heißt dass, dass für morgen zwischen 14:00 und 15:00 insgesamt 1.0mm zu erwarten sind und zwischen 12:00 und 15:00 insgesamt 2.4mm. Die "letzten n Stunden" beziehen sich auf den Zeitpunkt der Vorhersage, vielleicht sollte man eher sagen die "vorausgehenden n Stunden".Danke für die Erklärung. Das ist dennoch mehr als unlogisch. Kein Mensch der normal redet gibt von einem zukünftigen Zeitpunkt eine rückwärtige Zeitspanne an. Man fängt immer mit dem Beginn der Zeitspanne an und Endet mit deren Ende, egal wann und wie viel Zeit diese in der Zukunft liegt.
Zitat von: enno am 15 April 2026, 15:03:47Is this the way you tried? Or do you always use the same command?
2026-04-15T16:35:42.866+0200 [main] DEBUG org.asamk.signal.App - Starting signal-cli 0.14.2
2026-04-15T16:35:44.291+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
2026-04-15T16:35:44.656+0200 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.sqlite.jdbc4.JDBC4Connection@5ca17ab0
2026-04-15T16:35:44.664+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
2026-04-15T16:35:49.091+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
2026-04-15T16:35:49.106+0200 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.
Failed to register: Invalid verification method: Before requesting voice verification you need to request SMS verification and wait a minute.
org.asamk.signal.manager.api.VerificationMethodNotAvailableException: Invalid verification method
at org.asamk.signal.manager.util.NumberVerificationUtils.handleVerificationSession(NumberVerificationUtils.java:66)
at org.asamk.signal.manager.internal.RegistrationManagerImpl.register(RegistrationManagerImpl.java:135)
at org.asamk.signal.commands.RegisterCommand.register(RegisterCommand.java:81)
at org.asamk.signal.commands.RegisterCommand.handleCommand(RegisterCommand.java:52)
at org.asamk.signal.commands.CommandHandler.handleRegistrationCommand(CommandHandler.java:33)
at org.asamk.signal.App.handleRegistrationCommand(App.java:268)
at org.asamk.signal.App.handleCommand(App.java:177)
at org.asamk.signal.App.init(App.java:147)
at org.asamk.signal.Main.main(Main.java:56)