NEWS
Hannah — Open Source Smart-Home-Sprachassistentin
-
Hi,
Im Prinzip muss nichts davon auf einem RPI laufen, ich hab genug da, also hab es mit denen gebaut :D
Die zentrale Komponente ist hannah-core (oder einfach nur "hannah"), die enthält die Audioverarbeitung, die Spracherzeugung, die NLU, die ioBroker-Anbindung, eben alles notwendige.
Die Satelitten in den Räumen/um Haus verteilt, läuft aktuell bei mir (noch ist bei mir pure Software-Entwicklung dran) auf einem Raspberry Pi 3b mit Klinke-Lautsprechern und einem USB-Mikrofon :D Die Software für diese ist im Ordner satellite-pi. Für die Pi-Sats habe ich mir zwei "Bau"-Skripte erstellt. Das eine nimmt das normale Raspberry Pi OS (Debian) und baut daraus eine Satellite-Version. Soll heißen, die trägt mein WLAN ein, meinen SSH-Key und kopiert die Satellite-Software drauf/installiert alle Abhängigkeiten. Pro Satellite wird dann mit dem zweiten Script ein Device-spezifisches Image erstellt. In diesem Step wird dem Image ein DeviceName und ein Raum zugewiesen. Das Image kann dann auf eine SD-Karte geschrieben werden und der PI kann starten.
Ich habe geplant das die Satellites auf einem ESP32-S3 laufen sollen. Die Firmware dafür ist bereits "fertig", aber ungetestet, aktuell warte ich noch darauf das meine ESPs ankommen :D Sobald die da sind, beginnt Phase 1 der ESP-Entwicklung: die grundsätzliche Evaluierung, läuft die Firmware? Funktioniert Hannah? Bekomme ich die geplanten Sensoren alle verbaut?
Nach Abschluss kommt dann Phase 2/Endprodukt: Komplett eigene Platine mit allem drauf was Hannah braucht, also Mikrofone, Lautsprecher, Sensoren und natürlich dem ESP.Die Satellites halten über MQTT einen Control-Channel zum Core, sämtliches Audio-Streaming läuft über UDP.
Optional gibt es den hannah-proxy. Der kann theoretisch mehrfach installiert werden und übernimmt den UDP-Endpunkt vom Core, ist der Proxy aktiv, schaltet der Core seinen UDP-Service ab. Die Satellites schicken ihr Audio dann zu dem Proxy, der wandelt das um und schickt es per gRPC zum Core.
Für den Proxy gibt es dann ein AddOn: hannah-voiceid. VoiceID ermittelt in Echtzeit den Sprecher, und meldet diesen (ebenfalls über gRPC) zurück. Beides (Audio+Speaker) geht dann an den Core, wo die Transkription durchgeführt wird und dann auch weiß wer grade spricht.Hannah-Telegram ist ein optionales Addon für den Core und bindet einen TelegramBot quasi als zusätzlichen Satellite an den Core. So kann ich mit Hannah chatten, habe ein kleines Menü und sie schickt mir Nachrichten. Der Cloud: Sie versteht auch Sprachnachrichten und kann mit welchen antworten :D
Alles, bis auf die Satellites kann auch auf anderer Hardware laufen, wenn du magst, auch auf deinem PC. Bei den Satellites ist es halt der Sinn das die im Haus verteilt stehen.
Die NLU kennt einen Smalltalk-Intent, der nur funktioniert wenn ein LLM angebunden ist, ohne wird eine Standard-Antwort erzeugt.
Aktuell läuft bei mir im gesamten:
Raspberry Pi 5 (8GB) für hannah-core, hannah-proxy und hannah-telegram.
Mac Mini M4 (16GB) für hannah-voiceid, faster-whispher-server und natürlich das LLM.Mein MQTT-Broker ist Mosquitto als Container (in, naja, Kubernetes). Im iobroker nutze ich den mqtt-Adapter im "Client Modus", ein Typescript im Javascript-Adapter als "Hannah Adapter light", das übersetz die Room-Announcements im mqtt in Hannah-Datenpunkte im iobroker, ähnlich wie es der Alexa-Adapter bspw. tut, nur ohne Adapter. Hannah meldet im mqtt bspw. das sie die Räume Wohnzimmer, Schlafzimmer und Küche kennt und die Devices Küche01, Wohnzimmer01-05 und Schlafzimmer01-02. Im Iobroker habe ich dann bspw. diese Datenpunkte:

Dann gibt es im Repository noch einen echten Adapter. Der ist ein Addon für den Notification-Manager und registriert dort Hannah als "Desitnation":
Empfängt der Adapter eine Nachricht vom Notification-Manager, wird die Nachricht an ein definiertes (in der Config des Adapters) MQTT-Topic gesendet, von dort von Hannah empfangen, an das LLM geroutet, von dem umformuliert, zurück von Hannah empfangen und auf den Satellites per TTS bzw. im Telegramchat an spezifische Nutzer gesendet/abgespielt.Im iobroker läuft bei mir bspw. der Residents-Adapter der von Hannah genutzt wird um automatisch alle bekannten Personen zu kennen, was dann über ein Hannah-spezifisches Datenmodell (bspw. trustlevel) erweitert wird. Als API nutze ich den Adapter Rest-API.
Das LLM bei mir ist eine custom Hannah-Version von gemma2:9b auf ollama. Aufwendig gebaut, mit einer eigenen Persönlichkeit. Ich denke ihre Eigenvorstellung aus dem Startbeitrag zeigt ganz gut wie sie sich sieht.
Das LLM könnte auch eine eine CloudVersion deines Lieblingsanbieters sein, Hannah hat aber den Grundsatz: No Cloud. Aber auf einer leistungsfähigen Maschine muss es sein. Ollama auf einem Raspberry Pi macht keinen Spaß xD
Ziel von der Entwicklung ist das sie mehr als eine Sprachassistentin wie Alexa ist. Sie soll eine Mitbewohnerin sein, mit Persönlichkeit, Emotionen, Meinungen und natürlich: voller Kontrolle über das Haus. Noch fehlt dafür ein wenig was, aber der Grundstoff ist da.
Ich kann gerne Rückmeldung geben wie Phase 1 des ESP-Teils bei mir läuft, ich denke nächste Woche werde ich alles dafür haben.
Liebe Grüße
Leonie -
Das hört sich alles echt vielversprechend an. Danke für deine Arbeit und auch die ausführliche Beschreibung.
Das mit dem esp hört sich interessant an, bin neugierig, wie gut die hört...
Ich habe hier halt überall alexas, weil die von der hardware auch günstig waren. Aber das mit der cloud stört mich auch -
Sorry, wenn ich mich da mit Kritik einmische.
Damits richtig rüber kommt:
DANKE - das sieht gang ganz toll aus. Und wunderbar dass du Zeit für solche Dinge aufwendest.
Aber BITTE erstell einen "richtigen" Adapter. Das Ding dass du als ioBroker Adapter bezeichnest mag funktionieren, es ist aber von einem richtigen Adapter ziemlich weit entfernt. Sorry - aber derzeit kann ihc nur sagen:
Vor einer Installation von "iobroker.hannah-notification" muss in der derzeitigen Form explizit ABGERATEN werden.
Sowas
# 3. adapter-core durch Symlink auf ioBrokers Version ersetzen # (Node.js löst Symlinks auf — ohne diesen Schritt stimmt __dirname nicht) rm -rf node_modules/@iobroker/adapter-core ln -s /opt/iobroker/node_modules/@iobroker/adapter-core \ node_modules/@iobroker/adapter-core # 4. Adapter in ioBroker registrieren (einmalig) cd /opt/iobroker node node_modules/iobroker.js-controller/iobroker.js add hannah-notificationist ein 100%iges NO GO. Diese Aktionen können eine Hostinstallation ggF auch massiv zerstören.
Bitte erstell doch einfach einen richtigen Adapter mittels create-adapter (https://github.com/ioBroker/create-adapter) und lass die "Iobroker-Hanna" dort einziehen. Der Aufwand sollte für dich als erfahrene SW ENtwicklerin eher trivial sein und gegen einen sauberen Adapter spricht absolut nichts - noch dazu wenn er mit so einer tollen Umgebung zusammenspielt.
Bitte meld dich wenn du Hilfe beim Erstellen eines Adapters brauchst oder Fragen hast in unserer Telegramm oder Discord Gruppen. Invites auf www.iobroker.net (oder zum TG Starterchannel gleich hier: https://t.me/+gsX-e8k4mLtmZjZk)
Und zur Sicherheit nochmal:
DANKE für deine Arbeit. Dieses Statement ist ausschließlich als sachliche Kritik gemeint und soll keinesfalls dicha sl Person oder deine Arbeit angreifen.Hoff wir sehen / lesen uns bald im Zusammenhang mit einem sauberen hanna Adapter.
mcm1957
-
Danke @mcm1957
Du hast natürlich vollkommen Recht. Das hätte ich vor dem "Go Public" verbessern sollen :DJa, ich habe noch nie einen echten Adapter mit create-adapter erstellt, werde ich mir mal anschauen. Ist generell überhaupt das erste Mal das ich einen Adapter erstellt habe, der zumindest als solcher funktioniert. Das mag auf meinem System funktionieren, wo ich die Verantwortung trage, aber ich muss an der Stelle auch davon abraten das die Installationsanleitung befolgt wird.
Liebe Grüße
Leonie -
Danke f dein Verständnis. Frag einfach wenn was unklar ist. Und bitte lass das Grundgerüst nicht von einer AI anlegen. Die optimieren noch zu viel 🤭. Hilfe bei code ist natürlich ok.
Da du hoffentlich noch weiter an bzw bei iobroker was tun willst sag ich mal HERZLICH WILLKOMMEN.
-
Klar, will ich weiter bei iobroker dabei sein, ist ja schließlich das Rückgrad meines Hauses ;)
Nur mit diesem Forum komme ich noch nicht klar, bin zwar schon lange hier, aber hab noch nie (?) was geschrieben :D
Hab den Adapter umgebaut und ihm ein neues zu Hause gegeben:
https://github.com/NurPech/ioBroker.hannah-notificationmanagerUm Feedback und Verbesserungsvorschläge bitte ich ausdrücklich, für direkte Diskussionen bin ich auch zu haben. Ist mein erster Adapter.
-
Hi,
Du legst ja ein tolles Tempo vor :-)
Weil du so lieb nahcgefragt hats hab ich dir mal den Checker Bot vorbeigschickt. Wenn was unklar ist, einfach fragen.
Für ein paar Issues gibts PRs zusätzlich. Bitte anschaun und ggF mergen. Beim Dependabot kann es ggF Konflikte geben, da zwei PRs den selben Bereoich bearbeiten. Schätze aber dass du das locker bereinigen kannst.Generell empfehle ich für Entwicklerfragen Telegramm od. Discord. Aber wenn nicht gewunschen meldet sich sicher auch hier wer.
@homoran
Diskussion zum Test des hanna-notification Adapter sollte m.e. in den Testerbereich (zunächst '.. nicht in den repositories'). Bitte schalte Leonie mal für Tester Postings frei. Ob es sinnvoll ist dieses Topic komplett zu verschieben oder nur für den Adapterteil ein zweites Topic anzulegen bin ich unsicher Bitte klör das mit Leonie.EDIT:
PS: Strukturell soieht der Adapter mal gut aus. Inhaltlich hab ich nicht geschaut. DANKE dass du offensichtlich den Weg über den Creator gegangen bist. Das erspart gefühlte 100 Rückmeldungen doch den Testerworkflow einzurichten und ... -
Hii,
Ich habe gerade ein massives Update von Hannah veröffentlicht.
Hannah hat zusätzlich zu der Routinen-Engine nun auch eine Trigger-Engine. Sie kann damit auf unterschiedliche ioBroker-States reagieren und Dinge tun. Sei es einfach nur Sprachausgaben sagen, Textnachrichten schicken, Lampen schalten, vollkommen egal.
Außerdem gab es einen sehr großen Umbau. Die gesamte State-Logik wurde vom MQTT gelöst. MQTT hat sich im Praxiseinsatz für die Kommunikation zwischen Hannah und ioBroker nicht bewährt.
Aus diesem Grund gibt es nun einen neuen (Alpha) Adapter: https://github.com/NurPech/ioBroker.hannah
Ganz nach dem Vorbild des IoT-Adapters, kann man die Funktions- und Raum-Enums wählen die an Hannah übergeben werden sollen. Außerdem lassen sich beliebige weitere States an Hannah senden. Auch die andere Richtung ist möglich. States die der Adapter nicht freigegeben hat, kann Hannah trotzdem anfordern und lesen (aber nicht schreiben). Die Kommunikation ioBroker <-> Hannah läuft über gRPC.
Das hat mich nun viele Stunden Arbeit gekostet, aber bisher läuft es besser und die Adapterentwicklung macht mir mittlerweile Spaß :D
Mehr Aussagen über die Stabilität kann ich nach ein paar Tagen Praxiseinsatz treffen.
Ein Test des Adapters könnte schwierig werden, der Tester braucht dafür mindestens Hannah-Core und damit es richtig Sinn ergibt Hannah Full-Stack, aber es liegt ja alles dafür auf Github :DDie aktuelle Version von Hannah ist diese hier: https://github.com/NurPech/Hannah/releases/tag/v0.1.2-public
Dies ist größtenteils ein Maintenance-Release für Adapter v0.1.0: https://github.com/NurPech/ioBroker.hannah/releases/tag/v0.1.0Kompatibilität ist somit Hannah v0.1.2 mit Adapter 0.1.0,
Liebe Grüße
Leonie -
Hallo Leonie,
habe deinen Adapter aus Github installiert

Finde ihn aber nicht unter in den Instanzen:

Als Ersatz für die Amazon Echo Dots müsste ich dann jeweils einen Raspi mit Mikro haben.
Kannst du da was zur Harware sagen?
Oder lieber auf die ESP-Lösung warten? -
Hallo Leonie,
habe deinen Adapter aus Github installiert

Finde ihn aber nicht unter in den Instanzen:

Als Ersatz für die Amazon Echo Dots müsste ich dann jeweils einen Raspi mit Mikro haben.
Kannst du da was zur Harware sagen?
Oder lieber auf die ESP-Lösung warten? -
Hi,
Du musst auch eine Instanz hinzufügen, das passiert bei der Installation über Github nicht automatisch.Die Raspberry Pi Sats sind im Grunde ganz normale Raspberry Pi 3b mit Debian Trixie. Wahlweise mit USB-Mikrofon und Klinken-Lautsprecher oder mit spezialisierter Hardware wie den Seeed Respeaker (2) HATs. Der Pi-Satellit ist ein einges Pythonscript das quasi überall und mit allem läuft, getestet aber nur mit dem was ich beschrieben habe.
Mein ESP-Aufbau ist schon recht weit und aktuell passiert viel an der Firmware-Entwicklung. Der PoC-Stand ist erfolgreich abgeschlossen und die Software funktioniert, da finden aktuell noch ein paar Feature-erweiterungen statt. Auch meine eigene Platine mit ESP, Peripherie und Sensoren ist bereits fertig geplant und befindet sich derzeit in Produktion. Wenn ich die habe, kann ich testen ob mein Plan funktioniert oder ob ich eine Menge Geld in den Sand gesetzt habe :D
Die Schaltpläne für die Platine ist allerdings nicht OpenSource.Liebe Grüße
Leonie -
Status zum ESP:
May 09 17:24:49 psrvhva01 hannah-proxy[21119]: 2026/05/09 17:24:49 INFO audio session complete device=wohnzimmer-esp bytes=203200
May 09 17:24:49 psrvhva01 hannah-proxy[21119]: 2026/05/09 17:24:49 INFO speaker identified device=wohnzimmer-esp roomie_id=leonie
May 09 17:24:52 psrvhva01 hannah-proxy[21119]: 2026/05/09 17:24:52 INFO pipeline result device=wohnzimmer-esp transcript="Schlafzimmer, Licht aus." intent=TurnOff answer="OK, 6 Gerät(e) geschaltet." tts_bytes=123600 speaker=leonie
May 09 17:24:52 psrvhva01 hannah-proxy[21119]: 2026/05/09 17:24:52 INFO TTS sent device=wohnzimmer-esp bytes=123600 sample_rate=16000
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
