NEWS
Hannah — Open Source Smart-Home-Sprachassistentin
-
@leonie
Danke für deine schnelle und ausführliche Antwort.An der Stelle muss ich sagen das mir der (sorry) "Krüpel" über Telegram mir überhaupt nicht in den Kram passt.
Da bin ich mehr für die ESP´s.
In zuge meine Suche des Assistenten bin ich vor kurzem noch über ein ähnliches ESP gestolpert wie deines.Aufgrund meines Ansehen von -1 (kann mir keiner sagen wo der her kommt) ist es mir
leider nicht gestatte einen Link zu Posten.

Respeaker Xmos XVF3800 https://de.aliexpress.com/item/1005009578368362.html?isdl=y&aff_fsk=_oEtjzCB&src=Ideolo&aff_platform=aff_feeds&aff_short_key=_oEtjzCB&pdp_npi=4%40dis%21EUR%2168.93%2155.39%21%21%21%21%21%40%2112000056553679001%21afff%21%21%21Wäre dies eventuell auch mit Hannah kompatibel?
Und wenn es nur zu Testzwecken reichen würde!
Wie du bereits treffend bemerkt hast, bezog sich meine "finale Zusammenfassung" nicht explizit auf Hannah sondern auf die Anleitung.

Ich werde mich dann mal au deine Anleitung wagen müssen, mal sehen wie weit ich komme und ob meine Syno das auch noch packt.

Durch dein
-
Dazu habe ich mich in Beitrag #126 geäußert. Ich zitiere mich selbst:
Leonie sagte in Hannah — Open Source Smart-Home-Sprachassistentin:
Der ReSpeaker XVF3800 ist zwar ein starkes Board für Konferenzräume und wird gerne für Sprachassistenten verwendet, ist aber für das Projekt aktuell aus mehreren Gründen ungeeignet:
Preis: Für ~66 € bekommt man, bei der richtigen Stückzahl, fast zwei komplett bestückte Rev 5 Platinen inklusive Sensorik und LED-Ring.
Architektur: Die Mikrofone hängen an einem dedizierten XMOS-DSP-Coprozessor. Die Audiodaten werden dort verarbeitet und völlig anders an den ESP32 weitergereicht als bei meinem Direkt-I2S-Setup. Meine Firmware unterstützt diesen Coprozessor schlichtweg nicht.
Liebe Grüße
-
-
@mcbeath Ich habe mal die KI meines Vertrauens angeworfen:
Inhaltsverzeichnis — Hannah-Thread (#84378)
215 Beiträge, 23.04.2026 – 19.09.2026. Links zeigen jeweils auf den ersten Beitrag der Sektion.
Grundlagen & Vorstellung
- #1 — Eröffnungspost: Was ist Hannah, Architektur, Features, Roadmap (wird laufend aktualisiert)
- #2 — Erste Nachfrage: RPi nötig? Aufteilung Core/Satellit
- #5 — Kritik am ersten Adapter-Stand, Umbau zu einem "richtigen" Adapter, Willkommen in der Community
Frühe Entwicklung (Mai–Juli)
- #10 — Update: Trigger-Engine, Loslösung der State-Logik von MQTT, neuer Alpha-Adapter
- #11 — Instanz-Einrichtung, Pi-Satelliten-Hardware (RPi 3b + USB-Mikro/Klinke oder ReSpeaker HAT)
- #16 — Monats-Update Juni: WebUI eingeführt (Ablösung der YAML-Handbearbeitung)
- #17 — Frage nach Projekt-Zukunft/Nachhaltigkeit — Leonies Antwort: aktive Weiterentwicklung, öffentliches Repo als Absicherung
- #19 — Ein-Befehl-Installation (curl-Installer) für alle Komponenten
- #21 — Pi-Satelliten offiziell eingefroren/nicht mehr supportet, zugunsten ESP32-S3
- #22 — Begriffsklärung Satellit vs. Access Point / Hardware-Anforderungen eines Satelliten
Mehrsprachigkeit (Diskussion, nicht umgesetzt)
- #27 — Anfrage: Unterstützung weiterer Sprachen (aktuell hartkodiert Deutsch)
- #33 — Konzeptidee "getLanguage"-Schnittstelle, Diskussion Wakeword-pro-Sprache vs. automatische Erkennung, Whisper-Sprachdetektion — bleibt auf der Roadmap, nicht umgesetzt
Hardware-Vorschau & erste PCB-Bilder
- #31 — Erstes PCB-Bild + Gehäuse-Bild (88mm, 4-Layer)
- #38 — Audio-Demo-Anfrage, Hinweis auf Piper-Stimmen (Hugging Face)
- #40 — Anfrage zu ESPHome-Kompatibilität/Alternativ-Hardware — abgelehnt (eigene ESP-IDF-Firmware nötig wegen Audio-Pipeline/Wakeword)
großer Fragenkatalog
- #42 — Vorstellung, Fragen zu Selbstbau-Platine, Telegram, Adapter-Verfügbarkeit im Beta-Repo
- #43 — Ausführliche Antwort: Selbstbau-Optionen (DevKit + Breakouts vs. eigenes PCB)
- #44 — Monats-Update August: Activity Log, Nachrichten-Mailbox, überarbeitete Wecker/Timer
Installation mit systemd Teil 1 & Docker/Compose-Marathon
- #45 — Installationsprobleme (leere Instanz)
- #53 — Docker/Synology-Diskussion beginnt: systemd im Container, Image-pro-Komponente
- #63 — Leonie veröffentlicht vollständiges docker-compose.yml für alle Komponenten
- #64 — Telegram-Domain-Problem ("Bot domain invalid") taucht erstmals auf
- #67 — Ausführliche Anleitung: Telegram-Konto-Verknüpfung, Domain-Anforderungen
- #76 — ffmpeg-Bug im Core-Container gemeldet und gefixt (v0.75.8)
- #78 — Piper-TTS-Modell-Datei fehlt im Container (Volume-Problem)
Hardware-Freigabe & Bestellungen (PCBWay)
- #79 — 🎉 Hannah Satellite Rev. 5 offiziell freigegeben (PCBWay Shared Project)
- #83 — Erstes Bestellinteresse (duemchen), Sammelbestellungs-Idee entsteht
- #87 — Wie bestellt man (PCB+Assembly bei PCBWay)
- #92 — Stückpreis-Transparenz (~50€/Stück bestückt, Materialkosten)
- #109 — Erste reale Bestell-/Preis-Rückmeldung
- #114 — Konkretes PCBWay-Angebot für 1 Stück (117,82$), Diskussion Mengenrabatt
- #116 — AliExpress/Waveshare-ESP32-Audioboards als Alternative vorgeschlagen
- #120 — Sammelbestellungs-Interesse wird eingesammelt (mehrere Nutzer melden Stückzahlen)
- #125 — Frage: rechteckige statt runde Platine (Kostenersparnis)? / JLCPCB vs. PCBWay
- #126 — Ausführliche Begründung PCBWay-Wahl (Shared-Projects-Feature)
- #128 — Frage nach Gehäuse
Sprechererkennung, State-Mapping & Bugfixes
- #130 — Voice-Enrollment erfolgreich, Fragen zu Test/Doku
- #132 — Bugreport: Rolladen-States (Homematic LEVEL/STATE) werden nicht erkannt
- #135 — Erklärung der kanonischen State-Keys (on/level/color/current/…)
RAG/LLM-Integration & Skill-System (Zukunftsdiskussion)
- #137 — Idee: Objektbaum per RAG dem LLM zugänglich machen statt Regel-NLU
- #138 — Antwort: NLU ist bewusst regelbasiert, LLM nur Fallback-Pfad
- #188 — WebChat-Idee (gRPC SubmitText), offen für Community-Beitrag
- #190 — Ausführliche Antwort zu RAG/E-Mail-Integration: Weg über Skill-System (gRPC-Skill-Server)
- #196 — vertiefte Architektur-Diskussion (LLM-Internetzugriff als Backend-Eigenschaft)
Installation mit systemd Teil 2 — Config, Passwort, WebUI, gRPC, TLS
- #140 — WebUI-Login-Problem beginnt (admin-Passwort, Core nicht erreichbar)
- #146 — config.yaml wird nicht gefunden (Pfad-/Rechteproblem)
- #158 — Manueller Passwort-Reset per sqlite-Kommando
- #164 — WebUI-Core-Verbindung: eigene WebUI-Config nötig (/etc/hannah-webui/config.yaml)
- #171 — Root Cause gefunden: gRPC-Host muss auf 0.0.0.0 stehen
- #189 — Nächstes Thema: Telegram-Domain-Einbindung mit eigener Domain
- #207 — Root Cause: IP-Adresse funktioniert bei Telegram nicht, Domain (z.B. DuckDNS) nötig
- #208 — WebUI bekommt natives HTTPS/TLS-Support (Update-Anleitung)
Community-Ton & Ausblick
- #198 — Frust über "zu viele Detaildiskussionen" ohne zentrale Sammelbestellung
- #199 — Klarstellung: kein kommerzielles Produkt, PCBWay Shared Project ist Selbstbedienung
- #209 — McBeath fragt nach einer finalen Zusammenfassung/Anleitung
- #214 — Vorschlag Inhaltsverzeichnis — Ursprung dieser Anfrage
Für alle die Statistiken mögen:
Für Hannah sind aktuell noch 38 Issues offen und 290 sind geschlossen. Insgesamt habe ich aktuell knapp 330 Issues angelegt und die meisten bearbeitet. -
Und schon geht es los :(
Die Syno arbeite ja mit dem Container Manager.
Wenn ich hier nun ein Projekt erstelle und die "docker-compose.yml" angebe, fehlt mir die Möglichkeit den Befehl "docker compose up -d" anzugeben.
Wenn ich nun auf Erstellen klicke, erhalte ich nur die Meldung im log: "no such service: mysql-db"
@manne01
Wie bzw. wo hast du den Befehl "docker compose up -d" angeben? -
ja schon. Das Composefile verwendet Profile. Der compose Befehl den die Synology offenbar verwendet, gibt aber keine Profile an. Ohne Angabe von Profilen, wird nur Hannah-Core und Hannah-WebUI deployt. Der Container mysql fehlt dann, was auch deine Meldung erklärt
"no such service: mysql-db"
Du kannst einen anderen mysql-Host/Container nutzen oder du entfernst in der Compose Datei beim MySQL-Service diese Zeile:
profiles: ["full", "with-db"]Dann sollte das klappen.
Du kannst aber auch den mysql-server weglassen. Dann hast du keinen Activity Log, aber sonst sollte Hannah funktionieren. Die Meldung ist meine ich dann egal.
Das kannst du überprüfen wenn du mir bspw. einen Screenshot der laufenden Container zeigst. Würde dir ja einen Befehl dafür geben, aber das scheint bei der Synology nicht zu funktionieren. -
Ich habe die compose mal etwas gekürzt und alles optional verwies gelöscht.
services: hannah-core: image: quay.io/m1kad0/hannah-core:latest container_name: hannah-core restart: unless-stopped pull_policy: always ports: - "50051:50051" networks: - hannah_network volumes: - core_activity_audio:/app/activity_audio - core_audio_dumps:/app/audio_dumps - core_data:/app/data - ./core-config.yaml:/etc/hannah/config.yaml:ro hannah-webui: image: quay.io/m1kad0/hannah-webui:latest container_name: hannah-webui restart: unless-stopped pull_policy: always depends_on: - hannah-core networks: - hannah_network ports: - "5000:5000" volumes: - webui_data:/data environment: HANNAH_WEBUI_SECRET_KEY: "Hannah" HANNAH_WEBUI_GRPC_HOST: "hannah-core" HANNAH_WEBUI_GRPC_PORT: "50051" # Optional: natives TLS fürs Telegram-Login-Widget, siehe # Telegram-Verknüpfung einrichten (WebUI-Komponente) # HANNAH_WEBUI_TLS_ENABLED: "true" volumes: core_data: core_activity_audio: core_audio_dumps: webui_data: timer_data: mysql_data: mosquitto_data: mosquitto_log: hannah_mem: networks: hannah_network: driver: bridgeDamit lies sich der Download starten.
Endet allerdings mit Exit1 und einer Fehlermeldung, welche im Terminal nicht
komplett zu sehen ist.
Meldung lässt sich blöderweise nicht kopieren.


-
Ja das war mir auch aufgefallen.
Jetzt startet zwar der Core und wird nach 3 sec. beendet.
Hier das Log:2026/09/20 15:17:38 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:17:38 stderr ^^^^^^^ 2026/09/20 15:17:38 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:17:38 stderr File "/app/main.py", line 148, in main 2026/09/20 15:17:38 stderr ~~~~^^ 2026/09/20 15:17:38 stderr main() 2026/09/20 15:17:38 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:17:38 stderr Traceback (most recent call last): 2026/09/20 15:17:38 stderr 13:17:38 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:16:33 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:16:33 stderr ^^^^^^^ 2026/09/20 15:16:33 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:16:33 stderr File "/app/main.py", line 148, in main 2026/09/20 15:16:33 stderr ~~~~^^ 2026/09/20 15:16:33 stderr main() 2026/09/20 15:16:33 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:16:33 stderr Traceback (most recent call last): 2026/09/20 15:16:33 stderr 13:16:33 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:15:29 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:15:29 stderr ^^^^^^^ 2026/09/20 15:15:29 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:15:29 stderr File "/app/main.py", line 148, in main 2026/09/20 15:15:29 stderr ~~~~^^ 2026/09/20 15:15:29 stderr main() 2026/09/20 15:15:29 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:15:29 stderr Traceback (most recent call last): 2026/09/20 15:15:29 stderr 13:15:29 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:14:24 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:14:24 stderr ^^^^^^^ 2026/09/20 15:14:24 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:14:24 stderr File "/app/main.py", line 148, in main 2026/09/20 15:14:24 stderr ~~~~^^ 2026/09/20 15:14:24 stderr main() 2026/09/20 15:14:24 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:14:24 stderr Traceback (most recent call last): 2026/09/20 15:14:24 stderr 13:14:24 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:13:20 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:13:20 stderr ^^^^^^^ 2026/09/20 15:13:20 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:13:20 stderr File "/app/main.py", line 148, in main 2026/09/20 15:13:20 stderr ~~~~^^ 2026/09/20 15:13:20 stderr main() 2026/09/20 15:13:20 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:13:20 stderr Traceback (most recent call last): 2026/09/20 15:13:20 stderr 13:13:20 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:12:16 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:12:16 stderr ^^^^^^^ 2026/09/20 15:12:16 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:12:16 stderr File "/app/main.py", line 148, in main 2026/09/20 15:12:16 stderr ~~~~^^ 2026/09/20 15:12:16 stderr main() 2026/09/20 15:12:16 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:12:16 stderr Traceback (most recent call last): 2026/09/20 15:12:16 stderr 13:12:16 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:11:12 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:11:12 stderr ^^^^^^^ 2026/09/20 15:11:12 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:11:12 stderr File "/app/main.py", line 148, in main 2026/09/20 15:11:12 stderr ~~~~^^ 2026/09/20 15:11:12 stderr main() 2026/09/20 15:11:12 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:11:12 stderr Traceback (most recent call last): 2026/09/20 15:11:12 stderr 13:11:12 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:10:07 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:10:07 stderr ^^^^^^^ 2026/09/20 15:10:07 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:10:07 stderr File "/app/main.py", line 148, in main 2026/09/20 15:10:07 stderr ~~~~^^ 2026/09/20 15:10:07 stderr main() 2026/09/20 15:10:07 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:10:07 stderr Traceback (most recent call last): 2026/09/20 15:10:07 stderr 13:10:07 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:09:03 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:09:03 stderr ^^^^^^^ 2026/09/20 15:09:03 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:09:03 stderr File "/app/main.py", line 148, in main 2026/09/20 15:09:03 stderr ~~~~^^ 2026/09/20 15:09:03 stderr main() 2026/09/20 15:09:03 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:09:03 stderr Traceback (most recent call last): 2026/09/20 15:09:03 stderr 13:09:03 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:07:59 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:07:59 stderr ^^^^^^^ 2026/09/20 15:07:59 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:07:59 stderr File "/app/main.py", line 148, in main 2026/09/20 15:07:59 stderr ~~~~^^ 2026/09/20 15:07:59 stderr main() 2026/09/20 15:07:59 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:07:59 stderr Traceback (most recent call last): 2026/09/20 15:07:59 stderr 13:07:59 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:07:03 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:07:03 stderr ^^^^^^^ 2026/09/20 15:07:03 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:07:03 stderr File "/app/main.py", line 148, in main 2026/09/20 15:07:03 stderr ~~~~^^ 2026/09/20 15:07:03 stderr main() 2026/09/20 15:07:03 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:07:03 stderr Traceback (most recent call last): 2026/09/20 15:07:03 stderr 13:07:03 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:06:33 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:06:33 stderr ^^^^^^^ 2026/09/20 15:06:33 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:06:33 stderr File "/app/main.py", line 148, in main 2026/09/20 15:06:33 stderr ~~~~^^ 2026/09/20 15:06:33 stderr main() 2026/09/20 15:06:33 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:06:33 stderr Traceback (most recent call last): 2026/09/20 15:06:33 stderr 13:06:33 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:06:16 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:06:16 stderr ^^^^^^^ 2026/09/20 15:06:16 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:06:16 stderr File "/app/main.py", line 148, in main 2026/09/20 15:06:16 stderr ~~~~^^ 2026/09/20 15:06:16 stderr main() 2026/09/20 15:06:16 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:06:16 stderr Traceback (most recent call last): 2026/09/20 15:06:16 stderr 13:06:16 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:06:06 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:06:06 stderr ^^^^^^^ 2026/09/20 15:06:06 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:06:06 stderr File "/app/main.py", line 148, in main 2026/09/20 15:06:06 stderr ~~~~^^ 2026/09/20 15:06:06 stderr main() 2026/09/20 15:06:06 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:06:06 stderr Traceback (most recent call last): 2026/09/20 15:06:06 stderr 13:06:06 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:05:58 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:05:58 stderr ^^^^^^^ 2026/09/20 15:05:58 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:05:58 stderr File "/app/main.py", line 148, in main 2026/09/20 15:05:58 stderr ~~~~^^ 2026/09/20 15:05:58 stderr main() 2026/09/20 15:05:58 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:05:58 stderr Traceback (most recent call last): 2026/09/20 15:05:58 stderr 13:05:58 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:05:52 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:05:52 stderr ^^^^^^^ 2026/09/20 15:05:52 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:05:52 stderr File "/app/main.py", line 148, in main 2026/09/20 15:05:52 stderr ~~~~^^ 2026/09/20 15:05:52 stderr main() 2026/09/20 15:05:52 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:05:52 stderr Traceback (most recent call last): 2026/09/20 15:05:52 stderr 13:05:52 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:05:47 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:05:47 stderr ^^^^^^^ 2026/09/20 15:05:47 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:05:47 stderr File "/app/main.py", line 148, in main 2026/09/20 15:05:47 stderr ~~~~^^ 2026/09/20 15:05:47 stderr main() 2026/09/20 15:05:47 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:05:47 stderr Traceback (most recent call last): 2026/09/20 15:05:47 stderr 13:05:47 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:05:42 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:05:42 stderr ^^^^^^^ 2026/09/20 15:05:42 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:05:42 stderr File "/app/main.py", line 148, in main 2026/09/20 15:05:42 stderr ~~~~^^ 2026/09/20 15:05:42 stderr main() 2026/09/20 15:05:42 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:05:42 stderr Traceback (most recent call last): 2026/09/20 15:05:42 stderr 13:05:42 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:05:38 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:05:38 stderr ^^^^^^^ 2026/09/20 15:05:38 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:05:38 stderr File "/app/main.py", line 148, in main 2026/09/20 15:05:38 stderr ~~~~^^ 2026/09/20 15:05:38 stderr main() 2026/09/20 15:05:38 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:05:38 stderr Traceback (most recent call last): 2026/09/20 15:05:38 stderr 13:05:38 [INFO] hannah.main: Hannah Core dev 2026/09/20 15:05:34 stderr AttributeError: 'str' object has no attribute 'get' 2026/09/20 15:05:34 stderr ^^^^^^^ 2026/09/20 15:05:34 stderr activity_log_cfg = cfg.get("activity_log", {}) 2026/09/20 15:05:34 stderr File "/app/main.py", line 148, in main 2026/09/20 15:05:34 stderr ~~~~^^ 2026/09/20 15:05:34 stderr main() 2026/09/20 15:05:34 stderr File "/app/main.py", line 2693, in <module> 2026/09/20 15:05:34 stderr Traceback (most recent call last): -
Ja sicher, aber ich denke es liegt an den Ordnern, es wurden keine Ordner erstellt.

In einer anderen compose die die anders deklariert:
volumes: - ./persistent:/persistent - ./log:/var/log - ./data:/data - ./srv:/srvals in der von Hannah
volumes: core_data: core_activity_audio: core_audio_dumps: webui_data:Reicht es die Ordner Manuell zu erstellen?
-
mh. ich glaube deine core-config.yaml ist einfach falsch. Schaue dir die Datei dort an https://raw.githubusercontent.com/NurPech/Hannah/refs/heads/master/core/config.example.yaml
Und kopiere den Inhalt in deine Datei
-
Devinitiv der Falsche inhalt für die core-config.yaml
Erhalte beim speichern Fehler über Zeichen die nicht der Codierung entsprechen.
Habe schon die icons entfernt: 🏠 ⏸️
beschwert sich allerdings immer noch.
Wenn dies ignoriere läuf der core dennoch nicht. -
Kurz zur Einordnung: Die Fehlermeldung "Zeichen entsprechen nicht der Codierung" kommt vermutlich nicht von Hannah selbst, sondern von dem Editor/Tool, mit dem du die config.yaml bearbeitest — die Datei muss als UTF-8 gespeichert werden, nicht als ANSI/Windows-1252 oder eine andere Kodierung. Die deutschen Umlaute in den Kommentaren (ü, ä, ö) und sogar die Icons sind normalerweise kein Problem, aber wenn dein Editor/Browser die Datei beim Speichern nicht sauber als UTF-8 schreibt, bricht Hannah beim Start mit einer für dich aktuell noch schwer lesbaren Fehlermeldung ab.
Zwei Dinge würden mir helfen, das genauer einzugrenzen:
Screenshot der genauen Fehlermeldung — am besten inkl. wo/wann sie auftritt (beim Speichern in welchem Programm, oder erst beim Start von Hannah im Container-Log?).
Falls möglich: womit genau bearbeitest du die Datei? (Synology File Station-Editor, ein Editor im Browser, etwas anderes?)
Als schneller Workaround: Falls dein aktueller Editor Probleme macht, versuch die config.yaml z.B. mit VS Code, Notepad++ (dort explizit "UTF-8 ohne BOM" als Encoding wählen) oder direkt auf der NAS per nano/vi zu bearbeiten — die speichern zuverlässig UTF-8.Nebenbei: Ich baue gerade nach, dass eine kaputte config.yaml künftig mit einer klaren Fehlermeldung abbricht statt mit einem kryptischen Python-Traceback — das kommt mit dem nächsten Release, hilft dir jetzt aber noch nicht direkt.
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
