{"id":588,"date":"2024-11-19T06:20:10","date_gmt":"2024-11-18T22:20:10","guid":{"rendered":"https:\/\/blog.ymypay.cn\/?p=588"},"modified":"2024-11-23T05:46:04","modified_gmt":"2024-11-22T21:46:04","slug":"home-assistant-dev","status":"publish","type":"post","link":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/","title":{"rendered":"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b"},"content":{"rendered":"<!-- wp:ht\/block-toc {\"headerEntries\":\"[{\\u0022tag\\u0022:2,\\u0022text\\u0022:\\u0022\u524d\u8a00\\u0022,\\u0022link\\u0022:\\u0022htoc-\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0,\\u0022children\\u0022:[{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u73af\u5883\u51c6\u5907\\u0022,\\u0022link\\u0022:\\u0022htoc-1\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u672c\u6587\u4ecb\u7ecd\\u0022,\\u0022link\\u0022:\\u0022htoc-111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]}]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u73af\u5883\u51c6\u5907\\u0022,\\u0022link\\u0022:\\u0022htoc-1\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]},{\\u0022text\\u0022:\\u0022Docker\uff08windows\u53ef\u9009\u62e9 WSL2 ,\u5f88\u4e0d\u63a8\u8350\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-11\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022Pycharm \/ VSCode\\u0022,\\u0022link\\u0022:\\u0022htoc-111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022Git\\u0022,\\u0022link\\u0022:\\u0022htoc-1111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022Git\u4ed3\u5e93\uff08github \/ gitee \u7b49\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-11111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022Python3.12(\u65e0\u9700\u624b\u52a8\u5b89\u88c5)\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022Windows(\u65e0\u8bba\u662f\u5426\u4f7f\u7528WSL2\uff0c\u90fd\u5fc5\u987b\u9075\u5b88 \u5b89\u88c5\u73af\u5883-\\u0026gt;\u5b89\u88c5WSL2,\u5b89\u88c51,2,3\u6761) \/ Linux \/ MacOs\u5747\u53ef\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u672c\u6587HomeAssistant\u73af\u5883\u4e3a2024.11.2\uff08\u4f60\u4eec\u53ef\u76f4\u63a5\u6700\u65b0\u7248\u672c\uff0c\u4e0d\u5fc5\u7406\u4f1a\uff0c\u5982\u679c\u8981\u4e00\u6837\u5c31\u6307\u5b9a\u4e00\u4e0b\u7248\u672c\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u672c\u6587\u4ecb\u7ecd\\u0022,\\u0022link\\u0022:\\u0022htoc-111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:2,\\u0022text\\u0022:\\u0022\u5b89\u88c5\u73af\u5883\uff08\u4e09\u9009\u4e00\uff0c\u6839\u636e\u4f60\u7684\u5e73\u53f0\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0,\\u0022children\\u0022:[{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u5b89\u88c5WSL2\uff08\u4ec5\u9650windows 10 21H\u4ee5\u4e0a\uff0cwindows\u5b9e\u5728\u4e0d\u884c\u5efa\u8bae\u5f00\u865a\u62df\u673a\u5b89\u88c5\u684c\u9762Ubuntu\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u8fdb\u5165Ubuntu\u5b89\u88c5\u73af\u5883\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u5236\u4f5cHomeAssistant\u5f00\u53d1\u73af\u5883\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022VSCode\/Pycharm\u5f00\u53d1\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022Docker\u5f00\u53d1(Windows\/Mac\/Linux\u3002\u5efa\u8baewindows)\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022VSCode\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Pycharm\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022Mac\/Linux \u4e0d\u7528\u5bb9\u5668\u5f00\u53d1\uff08\u5f3a\u70c8\u63a8\u8350\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Mac OS\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Ubuntu\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Fedora\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Arch\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]}]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u5b89\u88c5WSL2\uff08\u4ec5\u9650windows 10 21H\u4ee5\u4e0a\uff0cwindows\u5b9e\u5728\u4e0d\u884c\u5efa\u8bae\u5f00\u865a\u62df\u673a\u5b89\u88c5\u684c\u9762Ubuntu\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u8fdb\u5165Ubuntu\u5b89\u88c5\u73af\u5883\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u5236\u4f5cHomeAssistant\u5f00\u53d1\u73af\u5883\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022VSCode\/Pycharm\u5f00\u53d1\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022text\\u0022:\\u0022\u6253\u5f00Hyper-V\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u6253\u5f00\u865a\u62df\u673a\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u6253\u5f00\u5bb9\u5668\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u6253\u5f00\u9002\u7528\u4e8eLinux\u7684Windows\u5b50\u7cfb\u7edf\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u8fdb\u5165Ubuntu\u5b89\u88c5\u73af\u5883\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u5236\u4f5cHomeAssistant\u5f00\u53d1\u73af\u5883\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022VSCode\/Pycharm\u5f00\u53d1\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022Docker\u5f00\u53d1(Windows\/Mac\/Linux\u3002\u5efa\u8baewindows)\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022VSCode\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Pycharm\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022text\\u0022:\\u0022\u5982\u679c\u662fPycharm\u65b0\u7248\uff082024.2\u4ee5\u4e0a \u53ef\u76f4\u63a5\u5728\u670d\u52a1 \u7ec8\u7aef\u91cc\u8fdb\u5165\uff0c\u5982\u679c\u662f\u4ee5\u4e0b \u8bf7\u8fdb\u5165docker shel\u540e\uff0c\u4f7f\u7528sudo passwd root \u6765\u8bbe\u7f6eroot\u8d26\u6237\uff0c\u968f\u540e\u4f7f\u7528su root\u5207\u6362\u5373\u53ef\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u5982\u679c\u662fvscode \u8bf7\u8fdb\u5165docker shel\u540e\uff0c\u4f7f\u7528sudo passwd root \u6765\u8bbe\u7f6eroot\u8d26\u6237\uff0c\u968f\u540e\u4f7f\u7528su root\u5207\u6362\u5373\u53ef\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022VSCode\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022text\\u0022:\\u0022\u524d\u5f80 Home Assistant core \u5b98\u65b9\u4ed3\u5e93\u5730\u5740\\u0026nbsp;\u70b9\u51fb \\\\\\u0022fork\\\\\\u0022.\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\\\\n\u586b\u5165\u4f60\u7684\u4ed3\u5e93\u5730\u5740\u540e\u70b9\u51fb\u6253\u5f00\u5373\u53ef\\\\n\\\\n\\\\n\u6253\u5f00\\\\n\\\\n\\\\n\\\\n\/\/ \u83b7\u53d6\u6309\u94ae\u5143\u7d20\\\\nvar button = document.getElementById('openVSCode');\\\\n \\\\n\/\/ \u4e3a\u6309\u94ae\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\u76d1\u542c\u5668\\\\nbutton.addEventListener('click', function() {\\\\n    var inputElement = document.getElementById(\\\\\\u0022userHref\\\\\\u0022);\\\\n    var inputValue = inputElement.value;\\\\n    window.open('vscode:\/\/ms-vscode-remote.remote-containers\/cloneInVolume?url=' + inputValue, '_blank');\\\\n});\\\\n\\\\n\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u60a8\u7684\u6d4f\u89c8\u5668\u4f1a\u63d0\u793a\u60a8\u662f\u5426\u8981\u4f7f\u7528 Visual Studio Code \u6253\u5f00\u94fe\u63a5\uff0c\u8bf7\u5355\u51fb\u201c\u6253\u5f00\u94fe\u63a5\u201d\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-visual-studio-code\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u5f53 Visual Studio Code \u8be2\u95ee\u60a8\u662f\u5426\u8981\u5b89\u88c5\u8fdc\u7a0b\u6269\u5c55\u65f6\uff0c\u5355\u51fb\u201c\u5b89\u88c5\u201d\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-visual-studio-code1\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u7136\u540e\u5c06\u6784\u5efa Dev Container \u6620\u50cf\uff08\u8fd9\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\uff09\uff0c\u4e4b\u540e\u60a8\u7684\u5f00\u53d1\u73af\u5883\u5c06\u51c6\u5907\u5c31\u7eea\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-dev-container\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u5728 Visual Studio Code \u4e2d\u6253\u5f00\u547d\u4ee4\u9762\u677f -\\u0026nbsp;Shift+\\u0026nbsp;Command+\\u0026nbsp;P(Mac) \/\\u0026nbsp;Ctrl+\\u0026nbsp;Shift+\\u0026nbsp;P(Windows\/Linux)\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-visual-studio-code-shift-command-p-mac-ctrl-shift-p-windows-linux\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u9009\u62e9Tasks: Run Task-\\u0026gt;Run Home Assistant Core\\u0022,\\u0022link\\u0022:\\u0022htoc-tasks-run-task-run-home-assistant-core\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u7ec8\u7aef\u5e94\u6253\u5f00\u5e76\u5f00\u59cb\u8f93\u51fa\u6d3b\u52a8\u3002\u68c0\u67e5\u9519\u8bef\u5e76\u7b49\u5f85\u8f93\u51fa\u505c\u6b62\/\u51cf\u6162\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u901a\u8fc7\u7f51\u7edc\u6d4f\u89c8\u5668\u5bfc\u822a\u81f3http:\/\/localhost:8123\uff0c\u60a8\u5e94\u8be5\u4f1a\u770b\u5230 Home Assistant \u8bbe\u7f6e\u5c4f\u5e55\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-http-localhost-8123-home-assistant\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Pycharm\u5e73\u53f0\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022Mac\/Linux \u4e0d\u7528\u5bb9\u5668\u5f00\u53d1\uff08\u5f3a\u70c8\u63a8\u8350\uff09\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Mac OS\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Ubuntu\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Fedora\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Arch\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Mac OS\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022text\\u0022:\\u0022\u5b89\u88c5Homebrew\uff0c\u7136\u540e\u4f7f\u7528\u5b83\u5b89\u88c5\u4f9d\u8d56\u9879\uff1a brew install python3 autoconf ffmpeg cmake makecryptography\u5982\u679c\u5728\u8fd0\u884c\u4ee5\u4e0b\u811a\u672c\u65f6\u9047\u5230\u6784\u5efa\u95ee\u9898script\/setup\uff0c\u8bf7\u67e5\u770b\u52a0\u5bc6\u6587\u6863\u4e2d\u7684 \u5b89\u88c5\u8bf4\u660e\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u8bbf\u95ee Home Assistant Core \u5b58\u50a8\u5e93 \u5e76\u5355\u51fbFork\u3002\u5206\u53c9\u540e\uff0c\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u8bbe\u7f6e\u6e90\u7684\u672c\u5730\u526f\u672c\uff1agit clone \u4f60\u7684\u4ed3\u5e93\u5730\u5740\\\\ncd core\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u521b\u5efa\u865a\u62df\u73af\u5883\u5e76\u5b89\u88c5\u4f9d\u8d56python3 -m venv .venvpython3 -m pip install wheel.\/.venv\/bin\/pip install -r requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/.\/.venv\/bin\/pip install -r requirements_all.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/.\/.venv\/bin\/pip install -r requirements_test.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/.\/.venv\/bin\/pip install -r requirements_test_all.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/.\/.venv\/bin\/pip install homeassistant -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/.\/.venv\/bin\/python -m homeassistant\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u8fd9\u5c06\u521b\u5efa\u4e00\u4e2a\u865a\u62df\u73af\u5883\u5e76\u5b89\u88c5\u6240\u6709\u5fc5\u9700\u7684\u8981\u6c42\u3002\u60a8\u73b0\u5728\u5df2\u8bbe\u7f6e\u5b8c\u6bd5\uff01\uff08\u8bbf\u95ee http:\/\/localhost:8123\/ \u5373\u53ef\uff09\u6ce8\u610f\u9700\u8981\u7b49\u5f855-10\u5206\u949f\uff0c\u5426\u5219\u4f60\u5373\u4fbf\u8fdb\u5165\u4e86\u4e00\u4f1a\u51fa\u9519\uff0c\u4ee5\u540e\u6bcf\u6b21\u542f\u52a8\u4ec5\u9700\u51e0\u79d2\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u542f\u52a8\u547d\u4ee4\uff08\u8bf7\u8fdb\u5165\u5230core\u76ee\u5f55\u518d\u6267\u884c,Home Assistant \u914d\u7f6e\u5b58\u50a8\u5728config\u60a8\u7684\u5b58\u50a8\u5e93\u7684\u76ee\u5f55\u4e2d\uff09\uff1a.\/.venv\/bin\/python -m homeassistant\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u5982\u679c\u9700\u8981\u6267\u884cconfig\u76ee\u5f55\uff0c\u53ef\u4ee5\uff08\u4f60\u9700\u8981\u5148\u81ea\u884c\u521b\u5efa\u6587\u4ef6\u5939\uff09\uff1a.\/.venv\/bin\/python -m homeassistant \\u002d\\u002d config \u81ea\u5b9a\u4e49config\u76ee\u5f55\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022SIGKILL\u5982\u679c\u5728macOS\u4e0a\u8fd0\u884c\u6b64\u547d\u4ee4\u65f6\u9047\u5230\u5d29\u6e83 ( )\\u0026nbsp;\uff0c\u5219\u53ef\u80fd\u662f\u7531\u4e8e\u7f3a\u5c11\u84dd\u7259\u6743\u9650\u3002\u60a8\u53ef\u4ee5\u901a\u8fc7\u4e3a\u7ec8\u7aef\u5e94\u7528\u6dfb\u52a0\u6b64\u6743\u9650\u6765\u4fee\u590d\u6b64\u95ee\u9898\uff08\u7cfb\u7edf\u504f\u597d\u8bbe\u7f6e -\\u0026gt; \u5b89\u5168\u548c\u9690\u79c1 -\\u0026gt; \u84dd\u7259\uff09\u3002\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u5982\u679c\u662fpycharm \uff0c\u8fd0\u884c\u66f4\u52a0\u7b80\u5355\uff0c\u53f3\u4e0a\u89d2\u70b9\u51fb\u6dfb\u52a0\u8fd0\u884c\u914d\u7f6e(\u7f16\u8f91\u914d\u7f6e)-\\u0026gt;+-\\u0026gt;\u627e\u5230Python-\\u0026gt;\u627e\u5230\u4f60core\u7684\u865a\u62df\u73af\u5883-\\u0026gt;\u66f4\u6539\u4e3amodule-\\u0026gt;[\u589e\u52a0\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u5939]-\\u0026gt;\u786e\u5b9a\u5373\u53ef\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Ubuntu\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Fedora\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022Arch\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:2,\\u0022text\\u0022:\\u0022\u521b\u5efa\u7ec4\u4ef6\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0,\\u0022children\\u0022:[{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u521b\u5efa\u7ec4\u4ef6\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u5b9e\u73b0\u914d\u7f6e\u6d41\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e00\u6b65(\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165)\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e8c\u6b65(\u9009\u62e9\u5bb6\u5ead)\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e09\u6b65(\u9009\u62e9\u8bbe\u5907)\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u6ce8\u518c\u5b9e\u4f53\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]}]},{\\u0022text\\u0022:\\u0022\u859b\u5b9a\u8c14\u306e\u827e\u745e \u7684\u535a\u5ba2\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u5b98\u65b9\u6587\u6863 \u8fd9\u4e2a\u53ea\u6559\u4e86\u5b89\u88c5Vscode+Docker\u7684\u7ec4\u4ef6\u5f00\u53d1\u73af\u5883\uff0c\u5176\u4f59\u53ea\u662f\u4e00\u4e9b\u6587\u6863\uff0c\u6ca1\u6709\u6559\u7a0b\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u521b\u5efa\u7ec4\u4ef6\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u5b9e\u73b0\u914d\u7f6e\u6d41\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e00\u6b65(\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165)\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e8c\u6b65(\u9009\u62e9\u5bb6\u5ead)\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e09\u6b65(\u9009\u62e9\u8bbe\u5907)\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]}]},{\\u0022text\\u0022:\\u0022\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u9009\u62e9\u623f\u95f4\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022text\\u0022:\\u0022\u9009\u62e9\u6216\u6392\u9664\u4f60\u7684\u8bbe\u5907\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e00\u6b65(\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165)\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e8c\u6b65(\u9009\u62e9\u5bb6\u5ead)\\u0022,\\u0022link\\u0022:\\u0022htoc-11111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:4,\\u0022text\\u0022:\\u0022\u914d\u7f6e\u9879\u7b2c\u4e09\u6b65(\u9009\u62e9\u8bbe\u5907)\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:2,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:3,\\u0022text\\u0022:\\u0022\u6ce8\u518c\u5b9e\u4f53\\u0022,\\u0022link\\u0022:\\u0022htoc-1111111111111111111111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:1,\\u0022children\\u0022:[]},{\\u0022tag\\u0022:1,\\u0022text\\u0022:\\u0022\u6b64\u9875\u9762\u4ecd\u5728\u7f16\u8f91\u4e2d...\\u0022,\\u0022link\\u0022:\\u0022htoc-111111111111111111111111111111111\\u0022,\\u0022labelTOC\\u0022:\\u0022\\u0022,\\u0022visibleTOC\\u0022:1,\\u0022level\\u0022:0}]\"} -->\n<div class=\"wp-block-ht-block-toc  is-style-outline htoc htoc--position-wide toc-list-style-plain\" data-htoc-state=\"expanded\"><span class=\"htoc__title\"><span class=\"ht_toc_title\">\u76ee\u5f55<\/span><span class=\"htoc__toggle\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\"><g fill=\"#444\"><path d=\"M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><path d=\"M15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z\"><\/path><\/g><\/svg><\/span><\/span><div class=\"htoc__itemswrap\"><ul class=\"ht_toc_list\"><li class=\"\"><a href=\"#htoc-\">\u524d\u8a00<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-1\">\u73af\u5883\u51c6\u5907<\/a><\/li><li class=\"\"><a href=\"#htoc-111111\">\u672c\u6587\u4ecb\u7ecd<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#htoc-111111111\">\u5b89\u88c5\u73af\u5883\uff08\u4e09\u9009\u4e00\uff0c\u6839\u636e\u4f60\u7684\u5e73\u53f0\uff09<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-1111111111\">\u5b89\u88c5WSL2\uff08\u4ec5\u9650windows 10 21H\u4ee5\u4e0a\uff0cwindows\u5b9e\u5728\u4e0d\u884c\u5efa\u8bae\u5f00\u865a\u62df\u673a\u5b89\u88c5\u684c\u9762Ubuntu\uff09<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-111111111111111\">\u8fdb\u5165Ubuntu\u5b89\u88c5\u73af\u5883<\/a><\/li><li class=\"\"><a href=\"#htoc-1111111111111111\">\u5236\u4f5cHomeAssistant\u5f00\u53d1\u73af\u5883<\/a><\/li><li class=\"\"><a href=\"#htoc-11111111111111111111\">VSCode\/Pycharm\u5f00\u53d1<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#htoc-11111111111111111\">Docker\u5f00\u53d1(Windows\/Mac\/Linux\u3002\u5efa\u8baewindows)<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-111111111111111111\">VSCode\u5e73\u53f0<\/a><\/li><li class=\"\"><a href=\"#htoc-111111111111111111111\">Pycharm\u5e73\u53f0<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#htoc-11111111111111111111111111111111111111\">Mac\/Linux \u4e0d\u7528\u5bb9\u5668\u5f00\u53d1\uff08\u5f3a\u70c8\u63a8\u8350\uff09<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-111111111111111111111111111111111111111\">Mac OS<\/a><\/li><li class=\"\"><a href=\"#htoc-1111111111111111111111111111111111111111111111111\">Ubuntu<\/a><\/li><li class=\"\"><a href=\"#htoc-11111111111111111111111111111111111111111111111111\">Fedora<\/a><\/li><li class=\"\"><a href=\"#htoc-111111111111111111111111111111111111111111111111111\">Arch<\/a><\/li><\/ul><\/li><\/ul><\/li><li class=\"\"><a href=\"#htoc-11111111111111111111111\">\u521b\u5efa\u7ec4\u4ef6<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-11111111111111111111111111\">\u521b\u5efa\u7ec4\u4ef6<\/a><\/li><li class=\"\"><a href=\"#htoc-111111111111111111111111111\">\u5b9e\u73b0\u914d\u7f6e\u6d41<\/a><ul class=\"ht_toc_child_list\"><li class=\"\"><a href=\"#htoc-1111111111111111111111111111111\">\u914d\u7f6e\u9879\u7b2c\u4e00\u6b65(\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165)<\/a><\/li><li class=\"\"><a href=\"#htoc-11111111111111111111111111111111\">\u914d\u7f6e\u9879\u7b2c\u4e8c\u6b65(\u9009\u62e9\u5bb6\u5ead)<\/a><\/li><li class=\"\"><a href=\"#htoc-1111111111111111111111111111111111111111111\">\u914d\u7f6e\u9879\u7b2c\u4e09\u6b65(\u9009\u62e9\u8bbe\u5907)<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"#htoc-1111111111111111111111111111111111111111111111111111\">\u6ce8\u518c\u5b9e\u4f53<\/a><\/li><\/ul><\/li><\/ul><\/div><\/div>\n<!-- \/wp:ht\/block-toc -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"htoc-\">\u524d\u8a00<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-1\">\u73af\u5883\u51c6\u5907<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-11\"><a href=\"https:\/\/docs.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker<\/a>\uff08windows\u53ef\u9009\u62e9 <a href=\"https:\/\/learn.microsoft.com\/zh-cn\/windows\/wsl\/install\" target=\"_blank\" rel=\"noreferrer noopener\">WSL2<\/a> ,\u5f88\u4e0d\u63a8\u8350\uff09<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-111\"><a href=\"https:\/\/www.jetbrains.com\/pycharm\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pycharm<\/a> \/ <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">VSCode<\/a><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111\"><a href=\"https:\/\/git-scm.com\/downloads\" target=\"_blank\" rel=\"noreferrer noopener\">Git<\/a><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111\">Git\u4ed3\u5e93\uff08<a href=\"https:\/\/github.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">github<\/a> \/ <a href=\"https:\/\/gitee.com\" target=\"_blank\" rel=\"noreferrer noopener\">gitee<\/a> \u7b49\uff09<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111\">Python3.12(\u65e0\u9700\u624b\u52a8\u5b89\u88c5)<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111\">Windows(\u65e0\u8bba\u662f\u5426\u4f7f\u7528WSL2\uff0c\u90fd\u5fc5\u987b\u9075\u5b88 \u5b89\u88c5\u73af\u5883-&gt;\u5b89\u88c5WSL2,\u5b89\u88c51,2,3\u6761) \/ Linux \/ MacOs\u5747\u53ef<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111\">\u672c\u6587HomeAssistant\u73af\u5883\u4e3a2024.11.2\uff08\u4f60\u4eec\u53ef\u76f4\u63a5\u6700\u65b0\u7248\u672c\uff0c\u4e0d\u5fc5\u7406\u4f1a\uff0c\u5982\u679c\u8981\u4e00\u6837\u5c31\u6307\u5b9a\u4e00\u4e0b\u7248\u672c\uff09<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-111111\">\u672c\u6587\u4ecb\u7ecd<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>&nbsp; &nbsp; \u9700\u8981Python\u7cbe\u901a(\u5982\u679c\u4e0d\u60f3\u590d\u6742\u8c03\u8bd5\uff0c\u9700\u8981\u8bbe\u8ba1\u5355\u5143\u6d4b\u8bd5)+\u638c\u63e1linux+\u719f\u6089\u4f60\u7684\u5f00\u53d1\u5de5\u5177+\u719f\u6089docker<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>    Windows\u5e73\u53f0+Docker+Pycharm+Git+Github\u8fdb\u884c\u6559\u7a0b\uff0c\u5176\u4f59\u5e73\u53f0\u51e0\u4e4e\u4e00\u6837\uff0c\u56e0\u4e3aHomeAssistant Core\u4e0d\u652f\u6301\u8fd0\u884c\u5728windows \u53ea\u80fd\u5728linux\u5e73\u53f0\u8fd0\u884c\uff0c\u6240\u4ee5\u6b65\u9aa4\u5927\u540c\u5c0f\u5f02<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>&nbsp; &nbsp; \u5c06\u4e0d\u518d\u4ecb\u7ecd\u5982\u4f55\u5b89\u88c5\u4ee5\u4e0a\u73af\u5883 \u5747\u662f\u4e0b\u4e00\u6b65 \u672c\u6587\u53ea\u6559HomeAssistant\u5f00\u53d1\u73af\u5883\u51c6\u5907\uff0c\u8bf7\u5b89\u88c5\u597d\u73af\u5883\u51c6\u5907\u91cc\u7684\u6240\u6709\uff0c\u518d\u6b21\u89c2\u770b\u672c\u6587<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>&nbsp; &nbsp; \u786e\u4fdd\u4f60\u62e5\u6709\u9b54\u6cd5\u73af\u5883\uff0c\u8bf7\u5728\u9002\u5f53\u65f6\u5019\u5f00\u542f\u9b54\u6cd5<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>&nbsp; &nbsp; \u8bf7\u628aGit\u7684proxy\u5220\u9664\uff0c\u5bb9\u5668\u4f1a\u590d\u5236\u4f60\u7684Git\u914d\u7f6e(.gitconfig \u91cc \u5220\u6389 http\/https\/socket\u8282\u70b9)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>&nbsp; &nbsp; wsl2\u5f00\u53d1 homeassistant\u7684\u9ed8\u8ba4config\u5728 \/\u7528\u6237\u4e3b\u76ee\u5f55\/.homeassistant<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>    docker\u5f00\u53d1 \u8bf7\u624b\u52a8 --config\u6307\u5b9a \u540e\u8fb9\u4f1a\u6559<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"htoc-111111111\">\u5b89\u88c5\u73af\u5883\uff08\u4e09\u9009\u4e00\uff0c\u6839\u636e\u4f60\u7684\u5e73\u53f0\uff09<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-1111111111\">\u5b89\u88c5WSL2\uff08\u4ec5\u9650windows 10 21H\u4ee5\u4e0a\uff0cwindows\u5b9e\u5728\u4e0d\u884c\u5efa\u8bae\u5f00\u865a\u62df\u673a\u5b89\u88c5\u684c\u9762Ubuntu\uff09<\/h3>\n<!-- \/wp:heading -->\n\n<p>\u63a7\u5236\u9762\u677f-&gt;\u7a0b\u5e8f-&gt;\u542f\u7528\u6216\u5173\u95edWindows\u529f\u80fd<\/p>\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-11111111111\">\u6253\u5f00Hyper-V<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-111111111111\">\u6253\u5f00\u865a\u62df\u673a\u5e73\u53f0<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111111111\">\u6253\u5f00\u5bb9\u5668<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111111111\">\u6253\u5f00\u9002\u7528\u4e8eLinux\u7684Windows\u5b50\u7cfb\u7edf<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u8bbe\u7f6e\u4e3awsl2\/\u5b89\u88c5ubuntu\/\u8bbe\u7f6eubuntu\u9ed8\u8ba4<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>wsl --set-default-version 2\nwsl --install\nwsl --set-version Ubuntu<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-111111111111111\">\u8fdb\u5165Ubuntu\u5b89\u88c5\u73af\u5883<\/h4>\n<!-- \/wp:heading -->\n\n<p>\u00a0 \u00a0 \u627e\u5230\u7a0b\u5e8f Ubuntu\uff0c\u70b9\u51fb\u8fdb\u5165shell\uff0c\u9ed8\u8ba4\u662froot\uff0c\u5982\u679c\u4e0d\u662f\uff0c\u8bf7\u624b\u52a8\u5207\u6362\uff0c\u968f\u540e\u5b89\u88c5\u73af\u5883<\/p>\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo apt-get update -y\nsudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev git<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-1111111111111111\">\u5236\u4f5cHomeAssistant\u5f00\u53d1\u73af\u5883<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/home-assistant\/core.git\ncd core\npython3 -m venv .venv\n.\/.venv\/bin\/pip install -r requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/\n.\/.venv\/bin\/pip install -r requirements_all.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/\n.\/.venv\/bin\/pip install -r requirements_test.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/\n.\/.venv\/bin\/pip install -r requirements_test_all.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/\n.\/.venv\/bin\/python -m homeassistant<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>    \u82e5\u8981\u6307\u5b9ahomeassistant config\u76ee\u5f55\uff0c\u8bf7\u52a0\u4e0a\u53c2\u6570 --config \u81ea\u5b9a\u4e49config\u76ee\u5f55    <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u81f3\u6b64\u73af\u5883\u51c6\u5907\u5b8c\u6210\uff0c\u8bf7\u6ce8\u610f\uff0c\u6839\u636e\u7f51\u7edc\u73af\u5883\u4e0d\u540c\uff0c\u521d\u6b21\u542f\u52a8\u9700\u89815-10\u5206\u949f \u4e14\u9996\u6b21\u6ce8\u518c\u4f1a\u5931\u8d25\uff0c\u6ce8\u518c\u5931\u8d25\u540e\u91cd\u542fhomeassistant\u5373\u53ef\u767b\u5f55\uff0c\u540e\u8fb9\u6bcf\u6b21\u542f\u52a8\u4ec5\u97001-3\u79d2\uff0c\u6839\u636e\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u591a\u4e0e\u5c11\u51b3\u5b9a<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-11111111111111111111\">VSCode\/Pycharm\u5f00\u53d1<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Pycharm\u6253\u5f00\u540e\uff0c\u70b9\u51fb\u6587\u4ef6-&gt;\u8fdc\u7a0b\u5f00\u53d1-&gt;\u8fde\u63a5WSL\u3002\u4e0b\u6b21\u518d\u6b21\u6253\u5f00\u70b9\u51fb\u6587\u4ef6-&gt;\u8fdc\u7a0b\u5f00\u53d1-&gt;\u8fde\u63a5-&gt;WSL\u5373\u53ef\u770b\u5230\u81ea\u5df1\u7684\u9879\u76ee<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u968f\u540e\u5728Pycharm\u8fdb\u884c\u6620\u5c04\u7aef\u53e38123\u5373\u53ef<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:gallery {\"linkTo\":\"file\",\"sizeSlug\":\"full\"} -->\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped\"><!-- wp:image {\"id\":605,\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png\" alt=\"\" class=\"wp-image-605\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:image {\"id\":610,\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118225045140.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118225045140.png\" alt=\"\" class=\"wp-image-610\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:image {\"id\":604,\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224526481.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224526481.png\" alt=\"\" class=\"wp-image-604\"\/><\/a><\/figure>\n<!-- \/wp:image --><\/figure>\n<!-- \/wp:gallery -->\n\n<!-- wp:image {\"id\":616,\"width\":\"257px\",\"height\":\"auto\",\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118231057615.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118231057615.png\" alt=\"\" class=\"wp-image-616\" style=\"width:257px;height:auto\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>VSCode\u6253\u5f00\u540e\uff0c<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-wsl\" target=\"_blank\" rel=\"noreferrer noopener\">\u5b89\u88c5\u6b64\u6269\u5c55(\u5b98\u65b9\u6269\u5c55)<\/a> \uff0c\u6b64\u540e\u5de6\u4fa7\u56fe\u6807\u4f1a\u51fa\u73b0 &lt;\u8fdc\u7a0b\u8d44\u6e90\u7ba1\u7406\u5668&gt; \uff0c\u70b9\u51fb\u540e\uff0c\u627e\u5230WSL\u76ee\u6807-&gt;Ubuntu \u5373\u53ef\u3002\u4e0b\u6b21\u518d\u6253\u5f00\u53ef\u5728\u8fde\u63a5\u540e\u5728\u4e3b\u9875\u9762\u770b\u5230\u6700\u8fd1\u7684\u9879\u76ee\u4ee5\u5feb\u901f\u8fdb\u5165<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u81f3\u4e8e\u6620\u5c048123\u7aef\u53e3\uff0c\u8fd9\u65b9\u9762vscode\u4e0d\u5f3a\uff0c\u8bf7\u767e\u5ea6wsl\u6620\u5c04\u7aef\u53e3\uff0c\u6bd5\u7adf\u6211\u4e0d\u7528vscode\u8fdb\u884c\u5f00\u53d1<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":619,\"width\":\"179px\",\"height\":\"auto\",\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224436508.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118231555262.png\" alt=\"\" class=\"wp-image-619\" style=\"width:179px;height:auto\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-11111111111111111\">Docker\u5f00\u53d1(Windows\/Mac\/Linux\u3002\u5efa\u8baewindows)<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>    \u5f00\u53d1\u5bb9\u5668\u521b\u5efa\u597d+Homeassistant\u73af\u5883\u51c6\u5907\u597d\u540e\uff0c\u91cd\u542fdocker\u53d1\u73b0Homeassistant\u4e0d\u542f\u52a8\uff1f\u8bf7\u4f7f\u7528root\u8eab\u4efd\u8fdb\u5165docker shell\uff0c\u5e76\u8fd0\u884c python -m homeassistant \u5373\u53ef<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker shell root\u8fdb\u5165\u65b9\u6cd5\uff1a<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-111111111111111111111111111111111111\">\u5982\u679c\u662fPycharm\u65b0\u7248\uff082024.2\u4ee5\u4e0a \u53ef\u76f4\u63a5\u5728\u670d\u52a1 \u7ec8\u7aef\u91cc\u8fdb\u5165\uff0c\u5982\u679c\u662f\u4ee5\u4e0b \u8bf7\u8fdb\u5165docker shel\u540e\uff0c\u4f7f\u7528<code>sudo passwd root<\/code> \u6765\u8bbe\u7f6eroot\u8d26\u6237\uff0c\u968f\u540e\u4f7f\u7528su root\u5207\u6362\u5373\u53ef\uff09<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111111111111111111\">\u5982\u679c\u662fvscode \u8bf7\u8fdb\u5165docker shel\u540e\uff0c\u4f7f\u7528<code>sudo passwd root<\/code> \u6765\u8bbe\u7f6eroot\u8d26\u6237\uff0c\u968f\u540e\u4f7f\u7528su root\u5207\u6362\u5373\u53ef<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u9ed8\u8ba4config\u5728\/root\/.homeassistant \u82e5\u8981\u6307\u5b9ahomeassistant config\u76ee\u5f55\uff0c\u8bf7\u52a0\u4e0a\u53c2\u6570 --config \u81ea\u5b9a\u4e49config\u76ee\u5f55<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\uff01\uff01\uff01\u8bf7\u6ce8\u610f\uff0c\u8bf7\u6620\u5c04\u4f60\u7684HomeAssistant Core\u5230\u672c\u5730\u76ee\u5f55\uff08\u4f60\u5fc5\u987b\u5230HomeAssistant Core\u8fdb\u884c\u5f00\u53d1\uff0c\u4e0d\u7136\u4f1a\u5f88\u96be\u53d7\uff0c\u5f53\u7136\u4f60\u4e5f\u53ef\u4ee5\u672c\u5730\u5f00\u53d1\u540e\u518d\u590d\u5236\u5230\u5bb9\u5668\uff0c\u5982\u679c\u4f60\u5fcd\u53d7\u5f97\u4e86\u6ca1\u63d0\u793a\u7684\u8bdd\uff09\uff0c\u5426\u5219\u5bb9\u5668\u5d29\u6e83\u5c06\u9020\u6210\u4e0d\u53ef\u633d\u56de\u7684\u635f\u5931\u3002windows\u4e0d\u5efa\u8bae\u76f4\u63a5\u5728Pycharm\u7684\u670d\u52a1\u91cc\u8bbe\u7f6e\u6620\u5c04\uff0c\u4f1a\u5bfc\u81f4\u5bb9\u5668\u5d29\u6e83\uff1bPycharm\u5f00\u53d1\u8005\u4e5f\u4e0d\u8981\u6620\u5c04\uff08\u56e0\u4e3a\u4f1a\u91cd\u65b0\u6784\u5efa\uff0cpycharm\u8fdc\u7a0b\u5f00\u53d1\u5904\u4e8ebeta\u9636\u6bb5\uff0c\u5bb9\u6613\u51fa\u95ee\u9898\uff09\uff0c\u4f1a\u5bfc\u81f4\u65e0\u6cd5\u8fdc\u7a0b\u5f00\u53d1<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>    \u8bf7\u5230 \u5b98\u65b9Home Assistant Core\u4ed3\u5e93\u5730\u5740 forks\u4e3a\u81ea\u5df1\u7684\uff0c\u7528\u81ea\u5df1\u7684\u4ed3\u5e93\u8fdb\u884c\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5bb9\u5668\u9700\u8981\u4f60\u7684github\u8d26\u53f7\u5bc6\u7801\uff08\u5bb9\u5668\u5185 \u4f60\u7684\u9b54\u6cd5\u5c06\u4f1a\u5931\u6548 \u5982\u679c\u4f60\u7684\u7f51\u7edc\u73af\u5883\u539f\u751f\u4e0d\u652f\u6301github\uff0c\u8bf7\u4f7f\u7528\u652f\u6301GitHub \u4e0b\u8f7d\u7684\u955c\u50cf\u5730\u5740\uff09<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>python\u865a\u62df\u73af\u5883\u5728\/home\/vscode\/.local\/ha-venv \u4f46\u8fd9\u91cc\u7684python\u662f\u66ff\u8eab \u6307\u5411 \/usr\/local\/bin\/python\u3002\u53ea\u4e0d\u8fc7\u5e93\u7528\u7684\u8fd9\u91cc\u7684\u5e93\uff0c\u671b\u5404\u4f4d\u660e\u767d\u3002root\u7528\u6237\u7684python\u73af\u5883\u53d8\u91cf\u81ea\u52a8\u6307\u5411\u8be5\u5730\u5740\uff0c\u4ece\u800c\u4f7f\u7528\u8fd9\u91cc\u7684\u5e93\uff0c\u5bb9\u5668\u7528\u6237\u4e0d\u4f1a\uff0c\u5982\u679c\u662f\u5bb9\u5668\u7528\u6237\u8fd0\u884cpython\uff0c\u8bf7\u52a0\u524d\u7f00\/home\/vscode\/.local\/ha-venv\/bin\/python<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-111111111111111111\">VSCode\u5e73\u53f0<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111111111111111\">\u524d\u5f80 <a href=\"https:\/\/github.com\/home-assistant\/core\" target=\"_blank\" rel=\"noreferrer noopener\">Home Assistant core \u5b98\u65b9\u4ed3\u5e93\u5730\u5740<\/a>&nbsp;\u70b9\u51fb \"fork\".<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111111111111111111111111111111\">\n\u586b\u5165\u4f60\u7684\u4ed3\u5e93\u5730\u5740\u540e\u70b9\u51fb\u6253\u5f00\u5373\u53ef\n<div>\n<input style=\"width:80%;display:inline-block;margin-right:16px\" id=\"userHref\">\n<button style=\"cursor:default\" id=\"openVSCode\">\u6253\u5f00<\/button>\n<\/div>\n<script>\n\n\/\/ \u83b7\u53d6\u6309\u94ae\u5143\u7d20\nvar button = document.getElementById('openVSCode');\n \n\/\/ \u4e3a\u6309\u94ae\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\u76d1\u542c\u5668\nbutton.addEventListener('click', function() {\n    var inputElement = document.getElementById(\"userHref\");\n    var inputValue = inputElement.value;\n    window.open('vscode:\/\/ms-vscode-remote.remote-containers\/cloneInVolume?url=' + inputValue, '_blank');\n});\n<\/script>\n<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-visual-studio-code\">\u60a8\u7684\u6d4f\u89c8\u5668\u4f1a\u63d0\u793a\u60a8\u662f\u5426\u8981\u4f7f\u7528 Visual Studio Code \u6253\u5f00\u94fe\u63a5\uff0c\u8bf7\u5355\u51fb\u201c\u6253\u5f00\u94fe\u63a5\u201d\u3002<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-visual-studio-code1\">\u5f53 Visual Studio Code \u8be2\u95ee\u60a8\u662f\u5426\u8981\u5b89\u88c5\u8fdc\u7a0b\u6269\u5c55\u65f6\uff0c\u5355\u51fb\u201c\u5b89\u88c5\u201d\u3002<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-dev-container\">\u7136\u540e\u5c06\u6784\u5efa Dev Container \u6620\u50cf\uff08\u8fd9\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\uff09\uff0c\u4e4b\u540e\u60a8\u7684\u5f00\u53d1\u73af\u5883\u5c06\u51c6\u5907\u5c31\u7eea\u3002<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\u60a8\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u9a8c\u8bc1\u60a8\u7684\u5f00\u53d1\u5bb9\u5668\u662f\u5426\u8bbe\u7f6e\u6b63\u786e\uff1a<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-visual-studio-code-shift-command-p-mac-ctrl-shift-p-windows-linux\">\u5728 Visual Studio Code \u4e2d\u6253\u5f00\u547d\u4ee4\u9762\u677f -&nbsp;<code>Shift<\/code>+&nbsp;<code>Command<\/code>+&nbsp;<code>P<\/code>(Mac) \/&nbsp;<code>Ctrl<\/code>+&nbsp;<code>Shift<\/code>+&nbsp;<code>P<\/code>(Windows\/Linux)\u3002<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-tasks-run-task-run-home-assistant-core\">\u9009\u62e9<code>Tasks: Run Task<\/code>-&gt;<code>Run Home Assistant Core<\/code><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111\">\u7ec8\u7aef\u5e94\u6253\u5f00\u5e76\u5f00\u59cb\u8f93\u51fa\u6d3b\u52a8\u3002\u68c0\u67e5\u9519\u8bef\u5e76\u7b49\u5f85\u8f93\u51fa\u505c\u6b62\/\u51cf\u6162\u3002<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-http-localhost-8123-home-assistant\">\u901a\u8fc7\u7f51\u7edc\u6d4f\u89c8\u5668\u5bfc\u822a\u81f3<code>http:\/\/localhost:8123<\/code>\uff0c\u60a8\u5e94\u8be5\u4f1a\u770b\u5230 Home Assistant \u8bbe\u7f6e\u5c4f\u5e55\u3002<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list --><\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u5c06\u6765\uff0c\u5982\u679c\u60a8\u60f3\u56de\u5230\u60a8\u7684\u5f00\u53d1\u73af\u5883\uff1a\u6253\u5f00 Visual Studio Code\uff0c\u70b9\u51fb\u4fa7\u8fb9\u680f\u4e2d\u7684\u201c\u8fdc\u7a0b\u8d44\u6e90\u7ba1\u7406\u5668\u201d\u6309\u94ae\uff0c\u9009\u62e9\u4fa7\u8fb9\u680f\u9876\u90e8\u7684\u201c\u5bb9\u5668\u201d\u3002<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-111111111111111111111\">Pycharm\u5e73\u53f0<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u524d\u5f80 <a href=\"https:\/\/github.com\/home-assistant\/core\" target=\"_blank\" rel=\"noreferrer noopener\">Home Assistant core \u5b98\u65b9\u4ed3\u5e93\u5730\u5740<\/a>&nbsp;\u70b9\u51fb \"fork\".<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Pycharm\u6253\u5f00\u540e\uff0c\u70b9\u51fb \u6587\u4ef6-&gt;\u8fdc\u7a0b\u5f00\u53d1-&gt;\u521b\u5efa Dev Container\uff0c\u4eceVCS\u9879\u76ee-&gt;git\u4ed3\u5e93\u586b\u5199\u4f60\u514b\u9686\u540e\u7684\u4ed3\u5e93\u5730\u5740-&gt;\u68c0\u6d4b devcontainerjson \u6587\u4ef6\uff08\u81ea\u52a8\uff09-&gt;\u6784\u5efa\u5bb9\u5668\u5e76\u7ee7\u7eed<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:gallery {\"linkTo\":\"file\"} -->\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped\"><!-- wp:image {\"id\":606,\"sizeSlug\":\"large\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224714926.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224714926.png\" alt=\"\" class=\"wp-image-606\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:image {\"id\":608,\"sizeSlug\":\"large\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224907204.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224907204.png\" alt=\"\" class=\"wp-image-608\"\/><\/a><\/figure>\n<!-- \/wp:image --><\/figure>\n<!-- \/wp:gallery -->\n\n<!-- wp:paragraph -->\n<p>\u4ee5\u540e\u518d\u6b21\u6253\u5f00\u53ef\u901a\u8fc7 \u6587\u4ef6-&gt;\u8fdc\u7a0b\u5f00\u53d1-&gt;\u8fde\u63a5-&gt;Dev Container \u627e\u5230\u81ea\u5df1\u7684\u9879\u76ee\u6253\u5f00\u5373\u53ef<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":606,\"width\":\"403px\",\"height\":\"auto\",\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224714926.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224714926.png\" alt=\"\" class=\"wp-image-606\" style=\"width:403px;height:auto\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u8fdb\u5165root shell\u53ef\u5728\u672c\u673a\u7684Pycharm\u5e95\u90e8\u5de5\u5177\u680f-&gt;\u670d\u52a1-&gt;\u7ec8\u7aef \u4e0d\u8981\u5173\u95ed\u672c\u5730Pycharm \u5426\u5219\u4f1a\u7ec8\u6b62\u5bb9\u5668<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-11111111111111111111111111111111111111\">Mac\/Linux \u4e0d\u7528\u5bb9\u5668\u5f00\u53d1\uff08\u5f3a\u70c8\u63a8\u8350\uff09<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-111111111111111111111111111111111111111\">Mac OS<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111111111111111111111\">\u5b89\u88c5<a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noreferrer noopener\">Homebrew<\/a>\uff0c\u7136\u540e\u4f7f\u7528\u5b83\u5b89\u88c5\u4f9d\u8d56\u9879\uff1a <pre class=\"wp-block-code\"><code>brew install python3 autoconf ffmpeg cmake make<\/code><\/pre><p><code>cryptography<\/code>\u5982\u679c\u5728\u8fd0\u884c\u4ee5\u4e0b\u811a\u672c\u65f6\u9047\u5230\u6784\u5efa\u95ee\u9898<code>script\/setup<\/code>\uff0c\u8bf7\u67e5\u770b\u52a0\u5bc6\u6587\u6863\u4e2d\u7684 <a href=\"https:\/\/cryptography.io\/en\/latest\/installation\/#building-cryptography-on-macos\" target=\"_blank\" rel=\"noreferrer noopener\">\u5b89\u88c5\u8bf4\u660e<\/a>\u3002<\/p><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111111111111111111111111111111111111\">\u8bbf\u95ee <a href=\"https:\/\/github.com\/home-assistant\/core\" target=\"_blank\" rel=\"noreferrer noopener\">Home Assistant Core \u5b58\u50a8\u5e93<\/a> \u5e76\u5355\u51fb<strong>Fork<\/strong>\u3002\u5206\u53c9\u540e\uff0c\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u8bbe\u7f6e\u6e90\u7684\u672c\u5730\u526f\u672c\uff1a<pre class=\"wp-block-code\"><code>git clone \u4f60\u7684\u4ed3\u5e93\u5730\u5740\ncd core<\/code><\/pre><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-111111111111111111111111111111111111111111\">\u521b\u5efa\u865a\u62df\u73af\u5883\u5e76\u5b89\u88c5\u4f9d\u8d56<pre class=\"wp-block-code\"><code>python3 -m venv .venv<br>python3 -m pip install wheel<br>.\/.venv\/bin\/pip install -r requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/<br>.\/.venv\/bin\/pip install -r requirements_all.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/<br>.\/.venv\/bin\/pip install -r requirements_test.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/<br>.\/.venv\/bin\/pip install -r requirements_test_all.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/<br>.\/.venv\/bin\/pip install homeassistant -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple\/<br>.\/.venv\/bin\/python -m homeassistant<\/code><\/pre><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111111111111111111111111111111111111111\">\u8fd9\u5c06\u521b\u5efa\u4e00\u4e2a\u865a\u62df\u73af\u5883\u5e76\u5b89\u88c5\u6240\u6709\u5fc5\u9700\u7684\u8981\u6c42\u3002\u60a8\u73b0\u5728\u5df2\u8bbe\u7f6e\u5b8c\u6bd5\uff01\uff08\u8bbf\u95ee <a href=\"http:\/\/localhost:8123\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/localhost:8123\/<\/a> \u5373\u53ef\uff09\u6ce8\u610f\u9700\u8981\u7b49\u5f855-10\u5206\u949f\uff0c\u5426\u5219\u4f60\u5373\u4fbf\u8fdb\u5165\u4e86\u4e00\u4f1a\u51fa\u9519\uff0c\u4ee5\u540e\u6bcf\u6b21\u542f\u52a8\u4ec5\u9700\u51e0\u79d2<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-111111111111111111111111111111111111111111111\">\u542f\u52a8\u547d\u4ee4\uff08\u8bf7\u8fdb\u5165\u5230core\u76ee\u5f55\u518d\u6267\u884c,Home Assistant \u914d\u7f6e\u5b58\u50a8\u5728<code>config<\/code>\u60a8\u7684\u5b58\u50a8\u5e93\u7684\u76ee\u5f55\u4e2d\uff09\uff1a<pre class=\"wp-block-code\"><code><pre class=\"wp-block-code\"><code>.\/.venv\/bin\/python -m homeassistant<\/code><\/pre><\/code><\/pre><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111111111111111111111111111\">\u5982\u679c\u9700\u8981\u6267\u884cconfig\u76ee\u5f55\uff0c\u53ef\u4ee5\uff08\u4f60\u9700\u8981\u5148\u81ea\u884c\u521b\u5efa\u6587\u4ef6\u5939\uff09\uff1a<pre class=\"wp-block-code\"><code><pre class=\"wp-block-code\"><code>.\/.venv\/bin\/python -m homeassistant<\/code><\/pre><\/code><\/pre> -- config \u81ea\u5b9a\u4e49config\u76ee\u5f55<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111111111111111111111111111111111111111111\"><code>SIGKILL<\/code>\u5982\u679c\u5728<em>macOS<\/em>\u4e0a\u8fd0\u884c\u6b64\u547d\u4ee4\u65f6\u9047\u5230\u5d29\u6e83 ( )&nbsp;\uff0c\u5219\u53ef\u80fd\u662f\u7531\u4e8e\u7f3a\u5c11\u84dd\u7259\u6743\u9650\u3002\u60a8\u53ef\u4ee5\u901a\u8fc7\u4e3a\u7ec8\u7aef\u5e94\u7528\u6dfb\u52a0\u6b64\u6743\u9650\u6765\u4fee\u590d\u6b64\u95ee\u9898\uff08\u7cfb\u7edf\u504f\u597d\u8bbe\u7f6e -&gt; \u5b89\u5168\u548c\u9690\u79c1 -&gt; \u84dd\u7259\uff09\u3002<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-111111111111111111111111111111111111111111111111\">\u5982\u679c\u662fpycharm \uff0c\u8fd0\u884c\u66f4\u52a0\u7b80\u5355\uff0c\u53f3\u4e0a\u89d2\u70b9\u51fb\u6dfb\u52a0\u8fd0\u884c\u914d\u7f6e(\u7f16\u8f91\u914d\u7f6e)-&gt;+-&gt;\u627e\u5230Python-&gt;\u627e\u5230\u4f60core\u7684\u865a\u62df\u73af\u5883-&gt;\u66f4\u6539\u4e3amodule-&gt;[\u589e\u52a0\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u5939]-&gt;\u786e\u5b9a\u5373\u53ef<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:gallery {\"linkTo\":\"file\"} -->\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped\"><!-- wp:image {\"id\":687,\"sizeSlug\":\"large\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241120125519330.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241120125519330.png\" alt=\"\" class=\"wp-image-687\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:image {\"id\":688,\"sizeSlug\":\"large\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241120125742599.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241120125742599.png\" alt=\"\" class=\"wp-image-688\"\/><\/a><\/figure>\n<!-- \/wp:image --><\/figure>\n<!-- \/wp:gallery -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-1111111111111111111111111111111111111111111111111\">Ubuntu<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u53c2\u8003\u5b89\u88c5\u73af\u5883-&gt;\u5b89\u88c5wsl2<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-11111111111111111111111111111111111111111111111111\">Fedora<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo dnf update\nsudo dnf install python3-pip python3-devel python3-virtualenv autoconf openssl-devel libxml2-devel libxslt-devel libjpeg-turbo-devel libffi-devel systemd-devel zlib-devel pkgconf-pkg-config libavformat-free-devel libavcodec-free-devel libavdevice-free-devel libavutil-free-devel libswscale-free-devel ffmpeg-free-devel libavfilter-free-devel ffmpeg-free gcc gcc-c++ cmake<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u4e4b\u540e\u53c2\u8003\u5b89\u88c5\u73af\u5883-&gt;Mac\/Linux \u4e0d\u7528\u5bb9\u5668\u5f00\u53d1-&gt;Mac OS\u7684\u9664\u4e86\u7b2c\u4e00\u6761<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-111111111111111111111111111111111111111111111111111\">Arch<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo pacman -Sy base-devel python python-pip python-virtualenv autoconf libxml2 libxslt libjpeg-turbo libffi systemd zlib pkgconf ffmpeg gcc cmake<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u4e4b\u540e\u53c2\u8003\u5b89\u88c5\u73af\u5883-&gt;Mac\/Linux \u4e0d\u7528\u5bb9\u5668\u5f00\u53d1-&gt;Mac OS\u7684\u9664\u4e86\u7b2c\u4e00\u6761<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"htoc-11111111111111111111111\">\u521b\u5efa\u7ec4\u4ef6<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u53ef\u5148\u53c2\u8003\u4ee5\u4e0b\u6587\u6863\uff0c\u5982\u770b\u4e0d\u61c2\uff0c\u518d\u6839\u636e\u672c\u6587\u6863\u8fdb\u884c\u6216\u5171\u540c\u67e5\u770b\u4ee5\u5b66\u4e60\u5f00\u53d1<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-111111111111111111111111\"><a href=\"https:\/\/ibert.me\/posts\/zh\/%E4%B8%BAHomeAssistant%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6.html\" target=\"_blank\" rel=\"noreferrer noopener\">\u859b\u5b9a\u8c14\u306e\u827e\u745e \u7684\u535a\u5ba2<\/a><\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111111\"><a href=\"https:\/\/developers.home-assistant.io\/docs\/development_environment#developing-on-windows\" target=\"_blank\" rel=\"noreferrer noopener\">\u5b98\u65b9\u6587\u6863<\/a> \u8fd9\u4e2a\u53ea\u6559\u4e86\u5b89\u88c5Vscode+Docker\u7684\u7ec4\u4ef6\u5f00\u53d1\u73af\u5883\uff0c\u5176\u4f59\u53ea\u662f\u4e00\u4e9b\u6587\u6863\uff0c\u6ca1\u6709\u6559\u7a0b<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-11111111111111111111111111\">\u521b\u5efa\u7ec4\u4ef6<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u8bf7\u5728core\u6839\u76ee\u5f55\u4e0b\u8fdb\u884c\u521b\u5efa(\u6211\u7684\u63a8\u8350) <\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>pip install cookiecutter\ncookiecutter https:\/\/github.com\/boralyl\/cookiecutter-homeassistant-component\ndomain &#91;my_component]: github_custom\nname &#91;My Component]: Github Custom\ndocs_url &#91;https:\/\/github.com\/user\/my_component\/]: https:\/\/github.com\/boralyl\/github-custom-component-tutorial\nowner &#91;@user]: @boralyl\nSelect config_flow:\n1 - yes\n2 - no\nChoose from 1, 2 &#91;1]: 2\nSelect iot_class:\n1 - Assumed State\n2 - Cloud Polling\n3 - Cloud Push\n4 - Local Polling\n5 - Local Push\nChoose from 1, 2, 3, 4, 5 &#91;1]: 2<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u6ce8\u610f\uff1a\u4e00\u5f00\u59cb\u6211\u4eec\u8df3\u8fc7\u4e86\u4f7f\u7528\u914d\u7f6e\u6d41(Config Flow)\u3002\u6211\u4eec\u5c06\u5728\u6559\u7a0b\u7684\u540e\u7eed\u6587\u7ae0\u4e2d\u6dfb\u52a0\u8fd9\u90e8\u5206\u529f\u80fd\u3002<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":624,\"width\":\"242px\",\"height\":\"auto\",\"sizeSlug\":\"full\",\"linkDestination\":\"media\"} -->\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118232838103.png\"><img src=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118232838103.png\" alt=\"\" class=\"wp-image-624\" style=\"width:242px;height:auto\"\/><\/a><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph -->\n<p>\u73b0\u5728\u6211\u4eec\u5ffd\u7565\u6839\u76ee\u5f55\u6587\u4ef6\u5939\u4e0b\u7684\u6587\u4ef6\u548c\u6d4b\u8bd5\u6587\u4ef6\u5939\u3002\u8ba9\u6211\u4eec\u5173\u6ce8&nbsp;<code>custom_components<\/code>&nbsp;\u548c<code>github_custom<\/code>&nbsp;\u6587\u4ef6\u5939\u3002<a href=\"https:\/\/developers.home-assistant.io\/docs\/creating_integration_manifest\" target=\"_blank\" rel=\"noreferrer noopener\">manifest.json<\/a>&nbsp;\u5305\u542b\u4e86\u4e00\u4e9b\u6211\u4eec\u8fd9\u4e2a\u7ec4\u4ef6\u7684\u57fa\u7840\u4fe1\u606f\uff0cHome Assistant \u5728\u52a0\u8f7d\u7684\u65f6\u5019\u4f1a\u7528\u5230\u3002<code>const.py<\/code>&nbsp;\u53ea\u5305\u542b\u4e86\u6211\u4eec\u7684\u5e38\u91cf\uff0c\u5728\u8fd9\u4e2a\u6848\u4f8b\u4e2d\uff0c\u6211\u4eec\u53ea\u6709\u7ec4\u4ef6\u7684&nbsp;<a href=\"https:\/\/developers.home-assistant.io\/docs\/creating_integration_manifest#domain\" target=\"_blank\" rel=\"noreferrer noopener\">DOMAIN<\/a>\u3002<code>__init__.py<\/code>&nbsp;\u5305\u542b\u4e86&nbsp;<code>async_setup<\/code>&nbsp;\u65b9\u6cd5\uff0c\u7528\u4e8e Home Assistant \u52a0\u8f7d\u6211\u4eec\u7684\u7ec4\u4ef6\u3002<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\u6b64\u65f6\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u662f\u5408\u6cd5\u7684\uff0c\u5982\u679c\u4f60\u653e\u5728\u81ea\u5df1\u7684 Home Assistant&nbsp;<code>config<\/code>&nbsp;\u76ee\u5f55\u4e0b\uff0cHome Assistant \u4f1a\u6b63\u5e38\u52a0\u8f7d\uff0c\u5e76\u4e0d\u4f1a\u5b9e\u9645\u521b\u5efa\u4efb\u4f55\u5b9e\u4f53(entities)\u3002<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-111111111111111111111111111\">\u5b9e\u73b0\u914d\u7f6e\u6d41<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u7528\u8fc7\u7b2c\u4e09\u65b9\u7ec4\u4ef6\u7684\u90fd\u77e5\u9053\uff0c\u6bd4\u5982xiaomi miot\uff0c\u914d\u7f6e\u6d41\u5206\u4e3a\u5728HA\u53ef\u5206\u4e3a\u4e09\u6b65\uff08\u4e0d\u4e00\u5b9a\u8fd9\u4e2a\u987a\u5e8f\u548c\u6b21\u6570\uff0c\u6309\u7167\u5b9e\u9645\u60c5\u51b5\u6765\uff09<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li id=\"htoc-1111111111111111111111111111\">\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-11111111111111111111111111111\">\u9009\u62e9\u623f\u95f4<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li id=\"htoc-111111111111111111111111111111\">\u9009\u62e9\u6216\u6392\u9664\u4f60\u7684\u8bbe\u5907<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>\u5982\u679c\u9700\u8981\u8c03\u8bd5\u65e5\u5fd7\uff0c\u4f7f\u7528 logging\u5373\u53ef\uff0c\u6211\u76f8\u4fe1\u5584\u4e8e\u67e5\u770bcore\u7684\u865a\u62df\u73af\u5883\u6a21\u5757\u7684\u5f00\u53d1\u8005\u5df2\u7ecf\u53d1\u73b0\u4e86<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-1111111111111111111111111111111\">\u914d\u7f6e\u9879\u7b2c\u4e00\u6b65(\u8d26\u53f7\u5bc6\u7801\u7b49\u914d\u7f6e\u8f93\u5165)<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u5728custom_components\/const.py\u91cc\u6dfb\u52a0<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>CONF_USERNAME = \"username\"\nCONF_PASSWORD = \"password\"<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u5728 custom_components\/my_name \u4e0b\uff0c\u521b\u5efaconfig_flow.py\uff0c\u5b9a\u4e49\u4f60\u7684\u7c7b\uff08\u547d\u540d\u89c4\u8303\u4ee5ConfigFlow\u8fdb\u884c\u7ed3\u5c3e\uff0c\u56e0\u4e3a\u8981\u7ee7\u627fConfigFlow\u7c7b\u3002Myname\u4e3a\u4f60\u7684\u7ec4\u4ef6name\uff0c\u800c\u4e0d\u662f\u7ec4\u4ef6domain domain\u7528\u4e8e\u8ba9HA\u8bc6\u522bicon\uff0c\u6bd4\u5982\u4f60\u586bbaidu \u5c31\u662f\u767e\u5ea6\u7684\u56fe\u6807 name\u548cdomain\u53ef\u4ee5\u4e0d\u4e3a\u540c\u540d\uff0c\u8bf7\u4e25\u683c\u9075\u5b88\u5f00\u53d1\u89c4\u8303\u3002\uff09\uff0c\u5e76\u521b\u5efa\u7b2c\u4e00\u6b65\u65b9\u6cd5(\u5fc5\u987b\u4e3aasync_step_user)\uff0c\u4f8b\u5982<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>import voluptuous as vol\nimport logging\nfrom homeassistant import config_entries\nfrom .const import DOMAIN, CONF_USERNAME, CONF_PASSWORD\nclass MynameConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):\n    async def async_step_user(self, user_input=None):\n        errors = {}\n        if user_input is not None:\n            return await self.async_step_home()\n        return self.async_show_form(\n            step_id=\"user\",\n            data_schema=vol.Schema(\n                {\n                    vol.Required(CONF_USERNAME): str,\n                    vol.Required(CONF_PASSWORD): str,\n                }\n            ),\n            description_placeholders={\n                \"username_hint\": \"app login username\",\n                \"password_hint\": \"app login password\",\n            },\n            errors=errors,\n        )<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u606d\u559c\u4f60 \u6210\u529f\u521b\u5efa\u4e86\u7b2c\u4e00\u4e2a\u7ec4\u4ef6\u5e76\u505a\u51fa\u4e86\u7b2c\u4e00\u6b65\u914d\u7f6e\u9879\uff0c\u4f60\u53ef\u5c06\u4f60\u7684\u63d2\u4ef6\u590d\u5236\u5230core\u7684config\/custom_components\u4e0b\u8fdb\u884c\u5c1d\u8bd5\uff0c\u70b9\u51fb\u8bbe\u5907\u540e\u6dfb\u52a0\u96c6\u6210\uff0c\u641c\u7d22\u4f60\u7684 name \uff0c\u70b9\u51fb\u540e\u5373\u53ef\u770b\u5230\u4f60\u521b\u5efa\u7684\u7b2c\u4e00\u6b65\u914d\u7f6e\u9879\uff0c\u5e76\u8ba9\u4f60\u8f93\u5165\u8d26\u53f7\u548c\u5bc6\u7801\uff0c\u4f46\u53ea\u662f\u754c\u9762\uff0c\u5982\u679c\u9700\u8981\u914d\u7f6e\u767b\u5f55\uff0c\u6211\u76f8\u4fe1\u4f60\u5df2\u7ecf\u77e5\u9053\u4e86\u600e\u4e48\u5199\uff0c\u7528\u6237\u7684\u8f93\u5165\u53c2\u6570\u5c31\u5728user_input\u91cc\uff0c\u53ea\u9700\u8981\u5224\u65aduser_input\u662f\u5426\u4e3a\u7a7a\u5373\u53ef\uff0c\u4e0d\u4e3a\u7a7a\u6267\u884c\u767b\u5f55\u3002\u5982\u679c\u9700\u8981\u8f93\u51fa\u9519\u8bef\u4fe1\u606f\uff0c\u5c06errors['base'] = \"\u9519\u8bef\u4fe1\u606f\" \u5373\u53ef\uff0c\u767b\u5f55\u5b8c\u6210\u540e\uff0c\u4fdd\u5b58\u4f60\u7684cookie\u4fe1\u606f\u548c\u6240\u6709\u5bb6\u5ead\u5217\u8868\u5230\u7c7b\u6210\u5458\u53d8\u91cf\uff0c\u968f\u540e\u4f7f\u7528 return await self.async_step_home() \u8fdb\u5165\u7b2c\u4e8c\u6b65\uff0c\u7406\u8bba\u4e0a \u7b2c\u4e8c\u6b65\u5f00\u59cb\uff0c\u65b9\u6cd5\u540d\u53ef\u968f\u610f\u4f60\u53d6\u540d\u5b57\uff0c\u4e0d\u53d7HA Core\u8fdb\u884c\u8c03\u7528\uff0c\u800c\u662f\u4f60\u6765\u8c03\u3002\u4e0d\u7ba1\u4f60\u5f80\u540e\u7684\u914d\u7f6e\u6d41\u65b9\u6cd5\u540d\u5982\u4f55\u5b9a\u4e49\uff0c\u4f60\u90fd\u5fc5\u987b\u4ee5async_step_xx\u8fdb\u884c\u547d\u540d\uff0c\u800c\u540e\u5fc5\u987b\u5bf9\u5e94return\u91ccasync_show_form()\u91cc\u7684step_id\u3002\u8bf7\u4e25\u683c\u9075\u5b88\u547d\u540d\u89c4\u8303\u548c\u5f00\u53d1\u89c4\u8303<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-11111111111111111111111111111111\">\u914d\u7f6e\u9879\u7b2c\u4e8c\u6b65(\u9009\u62e9\u5bb6\u5ead)<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u4ecd\u65e7\u5728config_flow.py\u91cc\uff0c\u4f60\u5b9a\u4e49\u7684\u7c7b\u91cc\u5199\uff0c\u6dfb\u52a0\uff1a<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>    async def async_step_home(self, user_input=None):\n        # logging.info(\"\u9009\u62e9\u5bb6\u5ead\u9875\u9762\")\n        errors = {}\n        if user_input is not None:\n            return await self.async_step_device()\n        return self.async_show_form(\n            step_id=\"home\",\n            data_schema=vol.Schema(\n                {vol.Required(\"houseId\"): vol.In({})}\n            ),\n            errors=errors,\n        )<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u7b2c\u4e00\u6b65\u540e\u5c31\u662f\u8fdb\u5165\u7b2c\u4e8c\u6b65\u9009\u62e9\u5bb6\u5ead\uff0c\u548c\u7b2c\u4e00\u6b65\u662f\u4e00\u6837\u7684\uff0cvol.In({})\u7684{}\u66ff\u6362\u4e3a\u4f60\u7684\u6240\u6709\u5bb6\u5ead\u7c7b\u6210\u5458\u53d8\u91cf\uff08\u683c\u5f0f\u4e3a:{houseId:\u5bb6\u5ead\u540d\u79f0}\uff09\uff0c\u9009\u62e9\u623f\u95f4\u540e\u8bfb\u53d6\u6240\u6709\u6b64\u5bb6\u5ead\u6b64\u7528\u6237\u7684\u8bbe\u5907\u5230\u7c7b\u6210\u5458\u53d8\u91cf\uff0c\u56e0\u4e3a\u8981\u7b2c\u4e09\u6b65\u7684\u9009\u62e9\u8bbe\u5907<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\" id=\"htoc-1111111111111111111111111111111111111111111\">\u914d\u7f6e\u9879\u7b2c\u4e09\u6b65(\u9009\u62e9\u8bbe\u5907)<\/h4>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u4ecd\u65e7\u5728config_flow.py\u91cc\uff0c\u4f60\u5b9a\u4e49\u7684\u7c7b\u91cc\u5199\uff0c\u6dfb\u52a0\uff1a<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>    async def async_step_device(self, user_input=None):\n        if user_input is not None:\n            applianceIds = user_input&#91;\"device_ids\"]\n            devices = &#91;]\n            for i in applianceIds:\n                devices.append(\n                    {\"applianceId\": i,\n                     \"cookie\": self.cookie,\n                     }\n                )\n            home_name = self._home_id_list&#91;self.home_id]\n            # devices\u91cc\u7684\u503c\u968f\u4fbf\u7ed9\uff0c\u4f46\u5fc5\u987b\u653e\u5165\u8bbe\u5907id\uff0c\u767b\u5f55\u4fe1\u606f\uff0c\u65b9\u4fbf\u540e\u7eed\u63a7\u5236\u8bbe\u5907\u548c\u6ce8\u518c\u5b9e\u4f53\n            return self.async_create_entry(\n                title=f\"XiaoDu\uff1a{home_name}\",\n                data={\"devices\": devices}\n            )\n            # self._device_wifi_id_dict \u683c\u5f0f\u4e3a{key:value}\uff0c\u89e3\u91ca\uff1a{\u8bbe\u5907id:\u8bbe\u5907\u540d\u79f0}\uff0c\u8fd9\u91cc\u662f\u4f20\u7ed9\u524d\u7aef \u8ba9\u7528\u6237\u9009\u62e9\u7684 \u6ce8\u518c\u5b9e\u4f53\u5e76\u4e0d\u5728\u8fd9\u91cc\n        data_schema = vol.Schema(\n            {\n                vol.Required(\"device_ids\"): cv.multi_select(\n                    self._device_wifi_id_dict\n                ),\n            }\n        )\n        return self.async_show_form(step_id=\"device\", data_schema=data_schema)<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>\u81f3\u6b64\u914d\u7f6e\u6d41\u5b8c\u6210\uff0c\u63a5\u4e0b\u6765\u662f\u6ce8\u518c\u5b9e\u4f53\uff0c\u76f8\u4fe1\u5f00\u53d1\u8005\u4eec\u5df2\u7ecf\u6709\u4e86\u9700\u8981\u81ea\u5b9a\u4e49\u63a7\u5236\u667a\u80fd\u5bb6\u5c45\u7684\u65b9\u5411\uff0c\u4e00\u5b9a\u8981\u6709\u65b9\u5411\u624d\u505a\uff0c\u4e0d\u7136\u6ca1\u6709\u767b\u5f55\u4fe1\u606f\uff0c\u8bbe\u5907\uff0c\u65e0\u6cd5\u6ce8\u518c\u5b9e\u4f53\u548c\u63a7\u5236\u8bbe\u5907\uff08\u5f53\u7136\u4f60\u4e5f\u53ef\u521b\u5efa\u5047\u7684\uff0c\u65b9\u4fbf\u5b66\u4e60\uff09<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"htoc-1111111111111111111111111111111111111111111111111111\">\u6ce8\u518c\u5b9e\u4f53<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":1} -->\n<h1 class=\"wp-block-heading\" id=\"htoc-111111111111111111111111111111111\">\u6b64\u9875\u9762\u4ecd\u5728\u7f16\u8f91\u4e2d...<\/h1>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\u6700\u8fd1\u4e00\u6b21\u4fee\u6539\u65e5\u671f\uff1a<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:post-date {\"displayType\":\"modified\"} \/-->","raw":"","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 \u73af\u5883\u51c6\u5907 \u672c\u6587\u4ecb\u7ecd &#038;nb&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,11],"tags":[],"class_list":["post-588","post","type-post","status-publish","format-standard","hentry","category-jiaocheng","category-mmjs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b - \u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b - \u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2\" \/>\n<meta property=\"og:description\" content=\"\u524d\u8a00 \u73af\u5883\u51c6\u5907 \u672c\u6587\u4ecb\u7ecd &amp;nb&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/\" \/>\n<meta property=\"og:site_name\" content=\"\u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-18T22:20:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-22T21:46:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png\" \/>\n<meta name=\"author\" content=\"AMEN\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"AMEN\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/\"},\"author\":{\"name\":\"AMEN\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#\\\/schema\\\/person\\\/463e3a6364fb4ee80206e19500534fff\"},\"headline\":\"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b\",\"datePublished\":\"2024-11-18T22:20:10+00:00\",\"dateModified\":\"2024-11-22T21:46:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/\"},\"wordCount\":433,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/strict.ymypay.cn\\\/2024\\\/11\\\/20241118224645798.png\",\"articleSection\":[\"\u539f\u521b\u6559\u7a0b\",\"\u57cb\u6ca1\u6280\u672f\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/\",\"url\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/\",\"name\":\"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b - \u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/strict.ymypay.cn\\\/2024\\\/11\\\/20241118224645798.png\",\"datePublished\":\"2024-11-18T22:20:10+00:00\",\"dateModified\":\"2024-11-22T21:46:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#primaryimage\",\"url\":\"https:\\\/\\\/strict.ymypay.cn\\\/2024\\\/11\\\/20241118224645798.png\",\"contentUrl\":\"https:\\\/\\\/strict.ymypay.cn\\\/2024\\\/11\\\/20241118224645798.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/2024\\\/11\\\/19\\\/home-assistant-dev\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\\\/\\\/blog.ymypay.cn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#website\",\"url\":\"https:\\\/\\\/blog.ymypay.cn\\\/\",\"name\":\"\u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2\",\"description\":\"\u6e6e\u706d\u7f51\u7edc\u535a\u5ba2,\u6e6e\u706d\u7f51\u7edc,\u6e6e\u706d\u7f51\u7edc\u5de5\u4f5c\u5ba4,AMEN,\u88ab\u57cb\u6ca1\u7684\u5929\u5730,\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.ymypay.cn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#organization\",\"name\":\"\u4e1c\u839e\u5e02\u4e1c\u57ce\u6e6e\u706d\u7f51\u7edc\u5de5\u4f5c\u5ba4\",\"url\":\"https:\\\/\\\/blog.ymypay.cn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/strict.ymypay.cn\\\/2022\\\/04\\\/20220419124624567.png\",\"contentUrl\":\"https:\\\/\\\/strict.ymypay.cn\\\/2022\\\/04\\\/20220419124624567.png\",\"width\":500,\"height\":500,\"caption\":\"\u4e1c\u839e\u5e02\u4e1c\u57ce\u6e6e\u706d\u7f51\u7edc\u5de5\u4f5c\u5ba4\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.ymypay.cn\\\/#\\\/schema\\\/person\\\/463e3a6364fb4ee80206e19500534fff\",\"name\":\"AMEN\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/cravatar.cn\\\/avatar\\\/a086daa3ccf87e45a19dced653cdaad8f98493d7b2725d8212b71e90b12317c7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/cravatar.cn\\\/avatar\\\/a086daa3ccf87e45a19dced653cdaad8f98493d7b2725d8212b71e90b12317c7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/cravatar.cn\\\/avatar\\\/a086daa3ccf87e45a19dced653cdaad8f98493d7b2725d8212b71e90b12317c7?s=96&d=mm&r=g\",\"caption\":\"AMEN\"},\"sameAs\":[\"http:\\\/\\\/blog.ymypay.cn\"],\"url\":\"https:\\\/\\\/blog.ymypay.cn\\\/index.php\\\/author\\\/amen\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b - \u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/","og_locale":"zh_CN","og_type":"article","og_title":"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b - \u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2","og_description":"\u524d\u8a00 \u73af\u5883\u51c6\u5907 \u672c\u6587\u4ecb\u7ecd &nb&#46;&#46;&#46;","og_url":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/","og_site_name":"\u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2","article_published_time":"2024-11-18T22:20:10+00:00","article_modified_time":"2024-11-22T21:46:04+00:00","og_image":[{"url":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","type":"","width":"","height":""}],"author":"AMEN","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"AMEN","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#article","isPartOf":{"@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/"},"author":{"name":"AMEN","@id":"https:\/\/blog.ymypay.cn\/#\/schema\/person\/463e3a6364fb4ee80206e19500534fff"},"headline":"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b","datePublished":"2024-11-18T22:20:10+00:00","dateModified":"2024-11-22T21:46:04+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/"},"wordCount":433,"commentCount":1,"publisher":{"@id":"https:\/\/blog.ymypay.cn\/#organization"},"image":{"@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#primaryimage"},"thumbnailUrl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","articleSection":["\u539f\u521b\u6559\u7a0b","\u57cb\u6ca1\u6280\u672f"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/","url":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/","name":"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b - \u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2","isPartOf":{"@id":"https:\/\/blog.ymypay.cn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#primaryimage"},"image":{"@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#primaryimage"},"thumbnailUrl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","datePublished":"2024-11-18T22:20:10+00:00","dateModified":"2024-11-22T21:46:04+00:00","breadcrumb":{"@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#primaryimage","url":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","contentUrl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.ymypay.cn\/index.php\/2024\/11\/19\/home-assistant-dev\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/blog.ymypay.cn\/"},{"@type":"ListItem","position":2,"name":"Home Assistant \u7ec4\u4ef6\u5f00\u53d1\u6559\u7a0b"}]},{"@type":"WebSite","@id":"https:\/\/blog.ymypay.cn\/#website","url":"https:\/\/blog.ymypay.cn\/","name":"\u88ab\u57cb\u6ca1\u7684\u5929\u5730-\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2","description":"\u6e6e\u706d\u7f51\u7edc\u535a\u5ba2,\u6e6e\u706d\u7f51\u7edc,\u6e6e\u706d\u7f51\u7edc\u5de5\u4f5c\u5ba4,AMEN,\u88ab\u57cb\u6ca1\u7684\u5929\u5730,\u6280\u672f\u4e0e\u8d44\u6e90\u5206\u4eab\u535a\u5ba2","publisher":{"@id":"https:\/\/blog.ymypay.cn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.ymypay.cn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/blog.ymypay.cn\/#organization","name":"\u4e1c\u839e\u5e02\u4e1c\u57ce\u6e6e\u706d\u7f51\u7edc\u5de5\u4f5c\u5ba4","url":"https:\/\/blog.ymypay.cn\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/blog.ymypay.cn\/#\/schema\/logo\/image\/","url":"https:\/\/strict.ymypay.cn\/2022\/04\/20220419124624567.png","contentUrl":"https:\/\/strict.ymypay.cn\/2022\/04\/20220419124624567.png","width":500,"height":500,"caption":"\u4e1c\u839e\u5e02\u4e1c\u57ce\u6e6e\u706d\u7f51\u7edc\u5de5\u4f5c\u5ba4"},"image":{"@id":"https:\/\/blog.ymypay.cn\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blog.ymypay.cn\/#\/schema\/person\/463e3a6364fb4ee80206e19500534fff","name":"AMEN","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/cravatar.cn\/avatar\/a086daa3ccf87e45a19dced653cdaad8f98493d7b2725d8212b71e90b12317c7?s=96&d=mm&r=g","url":"https:\/\/cravatar.cn\/avatar\/a086daa3ccf87e45a19dced653cdaad8f98493d7b2725d8212b71e90b12317c7?s=96&d=mm&r=g","contentUrl":"https:\/\/cravatar.cn\/avatar\/a086daa3ccf87e45a19dced653cdaad8f98493d7b2725d8212b71e90b12317c7?s=96&d=mm&r=g","caption":"AMEN"},"sameAs":["http:\/\/blog.ymypay.cn"],"url":"https:\/\/blog.ymypay.cn\/index.php\/author\/amen\/"}]}},"post_thumbnail_image":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","content_first_image":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_medium_image_300":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_thumbnail_image_624":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_frist_image":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_medium_image":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_large_image":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_full_image":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png","post_all_images":[{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224645798.png!\/format\/webp\/lossless\/true","id":"image0"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118225045140.png!\/format\/webp\/lossless\/true","id":"image1"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224526481.png!\/format\/webp\/lossless\/true","id":"image2"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118231057615.png!\/format\/webp\/lossless\/true","id":"image3"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118231555262.png!\/format\/webp\/lossless\/true","id":"image4"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224714926.png!\/format\/webp\/lossless\/true","id":"image5"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224907204.png!\/format\/webp\/lossless\/true","id":"image6"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118224714926.png!\/format\/webp\/lossless\/true","id":"image7"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241120125519330.png!\/format\/webp\/lossless\/true","id":"image8"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241120125742599.png!\/format\/webp\/lossless\/true","id":"image9"},{"imagesurl":"https:\/\/strict.ymypay.cn\/2024\/11\/20241118232838103.png!\/format\/webp\/lossless\/true","id":"image10"}],"videoAdId":"","listAd":"0","listAdId":"","listAdEvery":5,"total_comments":1,"category_name":"\u539f\u521b\u6559\u7a0b","post_date":"2024-11-19","like_count":"0","praiseWord":"\u9f13\u52b1","copyright_state":"","excitationAd":"0","rewardedVideoAdId":"","detailAdId":"","detailAd":"0","enterpriseMinapp":"1","audios":[],"postImageUrl":"https:\/\/strict.ymypay.cn\/2022\/04\/20220419124634557.png","avatarurls":[],"related_posts":null,"pageviews":3983,"next_post_id":700,"next_post_title":"WordPress\u591a\u5409\u4e91\u4e91\u5b58\u50a8\u63d2\u4ef6","previous_post_id":556,"previous_post_title":"\u5b8c\u6ee1\u6559\u80b2(\u60a0\u5b66\u6d3e) sign\u8ba1\u7b97","week":"\u661f\u671f\u4e8c","post_favs":[],"post_likes":[],"_links":{"self":[{"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/posts\/588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/comments?post=588"}],"version-history":[{"count":53,"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/posts\/588\/revisions"}],"predecessor-version":[{"id":708,"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/posts\/588\/revisions\/708"}],"wp:attachment":[{"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/media?parent=588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/categories?post=588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ymypay.cn\/index.php\/wp-json\/wp\/v2\/tags?post=588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}