home-hub/assets/js/1db78e9f.3a321e78.js

1 line
7.3 KiB
JavaScript

"use strict";(globalThis.webpackChunkproject_public_docs=globalThis.webpackChunkproject_public_docs||[]).push([[393],{8363(e,s,i){i.r(s),i.d(s,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>c,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"todos","title":"Home Hub TODOs","description":"Active Tasks","source":"@site/docs/todos.md","sourceDirName":".","slug":"/todos","permalink":"/rob/home-hub/todos","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"type":"todos","project":"home-hub","updated":"2026-02-02T00:00:00.000Z","sidebar_position":6},"sidebar":"docs","previous":{"title":"Home Hub","permalink":"/rob/home-hub/"},"next":{"title":"Goals","permalink":"/rob/home-hub/goals"}}');var n=i(4848),o=i(8453);const c={type:"todos",project:"home-hub",updated:new Date("2026-02-02T00:00:00.000Z"),sidebar_position:6},a="Home Hub TODOs",d={},l=[{value:"Active Tasks",id:"active-tasks",level:2},{value:"High Priority",id:"high-priority",level:3},{value:"Medium Priority",id:"medium-priority",level:3},{value:"Completed",id:"completed",level:2},{value:"Known Issues",id:"known-issues",level:2}];function r(e){const s={blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",input:"input",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"home-hub-todos",children:"Home Hub TODOs"})}),"\n",(0,n.jsx)(s.h2,{id:"active-tasks",children:"Active Tasks"}),"\n",(0,n.jsx)(s.h3,{id:"high-priority",children:"High Priority"}),"\n",(0,n.jsxs)(s.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Document system configuration @M0"]}),"\n"]}),"\n",(0,n.jsx)(s.h3,{id:"medium-priority",children:"Medium Priority"}),"\n",(0,n.jsxs)(s.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Flash ESPHome firmware to ESP32 @M1","\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsx)(s.p,{children:"ESP32 with WiFi available; needs ESPHome with voice_assistant component"}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Configure voice_assistant component @M1"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Set up Home Assistant Assist pipeline (STT/TTS) @M1"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Test wake word detection @M1"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Integrate speaker with Home Assistant @M1"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Expose laptop PipeWire as HA media player @M2"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Create HA automations for audio routing commands @M2"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ",'Voice command: "play audio on system speakers" @M2']}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ",'Voice command: "send audio to speaker 1" @M2']}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Test end-to-end voice-controlled routing @M2"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"completed",children:"Completed"}),"\n",(0,n.jsxs)(s.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Diagnose PipeWire showing only Dummy Output @M0 #high","\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsx)(s.p,{children:"Root cause: hassio_audio Docker container running PulseAudio --system grabbed all /dev/snd/* devices"}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Fix audio by stopping hassio_audio container @M0 #high","\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsx)(s.p,{children:"Stopped container, unmuted sink, set volume to 75%"}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Permanently resolve hassio_audio and PipeWire conflict @M0 #high (2026-02-02)","\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsx)(s.p,{children:"Used nsenter to mount empty tmpfs over /dev/snd inside container namespace, then restart PulseAudio. Container stays running (supervisor happy) but can't access ALSA devices. Systemd service: disable-hassio-audio.service"}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Verify audio survives reboot @M0 #high (2026-02-02)","\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsx)(s.p,{children:"Confirmed: full audio hardware detected after clean reboot with hassio_audio still running"}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Set up Gitea repository for home-hub project @M0 #low (2026-02-02)"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Diagnose and fix PipeWire audio @M0 #high (2026-02-02)"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",checked:!0,disabled:!0})," ","Permanently resolve hassio_audio conflict @M0 #medium (2026-02-02)"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Issue"}),(0,n.jsx)(s.th,{children:"Status"}),(0,n.jsx)(s.th,{children:"Workaround"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"hassio_audio grabs ALSA devices exclusively"}),(0,n.jsx)(s.td,{children:"Resolved"}),(0,n.jsxs)(s.td,{children:[(0,n.jsx)(s.code,{children:"disable-hassio-audio.service"})," masks ",(0,n.jsx)(s.code,{children:"/dev/snd"})," inside container via nsenter"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"new-project CLI settings.json had empty git_host fields"}),(0,n.jsx)(s.td,{children:"Resolved"}),(0,n.jsx)(s.td,{children:"Fixed settings.json with correct Gitea URL and owner"})]})]})]})]})}function h(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(r,{...e})}):r(e)}},8453(e,s,i){i.d(s,{R:()=>c,x:()=>a});var t=i(6540);const n={},o=t.createContext(n);function c(e){const s=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]);