{"id":365821,"date":"2024-05-21T02:46:14","date_gmt":"2024-05-21T02:46:14","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=365821"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T02:46:14","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=365821","title":{"rendered":"<span>\u0414\u0440\u0443\u0436\u0438\u043c FreeBSD 14.0 \u0438 HomeAssistant<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/354\/ded\/3b2\/354ded3b2fb77d86e02bff62fad9002e.jpeg\" width=\"2300\" height=\"1100\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/354\/ded\/3b2\/354ded3b2fb77d86e02bff62fad9002e.jpeg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e Home Assistant (HA) &#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c Linux, macOS, Windows. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0435\u0442 FreeBSD. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0442\u0435\u043c, \u043a\u0442\u043e \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 FreeBSD \u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Home Assistant? \u0422\u0443\u0442 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b: \u043f\u0435\u0440\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0434\u043b\u044f HA, \u0447\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 HA \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 FreeBSD. \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u044f \u043f\u043e\u0448\u0435\u043b \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0443\u0442\u0435\u043c (\u043f\u0443\u0442\u044c \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u0438 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439) \u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0434\u0430\u043b\u0435\u0435.<\/p>\n<h2>\u0427\u0442\u043e \u0442\u044b \u0438\u043c\u0435\u0435\u043c \u0438 \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c?<\/h2>\n<p>   \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 FreeBSD 14 (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438)<\/p>\n<pre><code class=\"bash\">root@cyberex:~ # freebsd-version 14.0-RELEASE-p4<\/code><\/pre>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e HA (2024.1.3).<\/p>\n<h2>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c <\/h2>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f  \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b HA:<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u043e\u0440\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432  \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<pre><code>root@cyberex:~ # pkg update root@cyberex:~ # pkg upgrade<\/code><\/pre>\n<p>\u0418 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u0442\u0430\u043a \u043a\u0430\u043a HA \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Python 3.10, \u0442\u043e \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python 3.11:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pkg install rust py39-pillow py310-sqlite3 python311 openssl ffmpeg <\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 HA:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pw useradd homeassistant -w no -m -c \"Home Assistant\"<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <strong>homeassistant<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 &#171;home&#187; \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b HA \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 usb \u0441\u0442\u0438\u043a\u0430\u043c\u0438 ZigBee \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>homeassistant<\/strong>  \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 <strong>dialer:<\/strong><\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pw groupmod dialer -m homeassistant<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # chmod 770 \/home\/homeassistant<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 HA:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # mkdir -p \/srv\/homeassistant<\/code><\/pre>\n<p>\u0418 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>homeassistant<\/strong> \u0435\u0435 &#171;\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c&#187;:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # chown homeassistant:homeassistant \/srv\/homeassistant<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Python \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 HA:<\/p>\n<p>\u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <strong>homeassistant<\/strong> <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # su -l homeassistant<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 Python 3.11:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # ln -s \/usr\/local\/bin\/python3.11 \/usr\/local\/bin\/python root@cyberex:~ # ln -s \/usr\/local\/bin\/python3.11 \/usr\/local\/bin\/python3<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ python -m venv \/srv\/homeassistant<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ ls -l \/srv\/homeassistant total 24 drwxr-xr-x  3 homeassistant homeassistant 2048 Jan 10 18:22 bin drwxr-xr-x  2 homeassistant homeassistant  512 Jan 10 18:22 cache drwxr-xr-x  4 homeassistant homeassistant  512 Jan 10 18:22 include drwxr-xr-x  4 homeassistant homeassistant  512 Jan 10 18:22 lib lrwxr-xr-x  1 homeassistant homeassistant    3 Jan 10 18:22 lib64 -> lib -rw-r--r--  1 homeassistant homeassistant  174 Jan 10 18:22 pyvenv.cfg drwxr-xr-x  3 homeassistant homeassistant  512 Jan 10 18:22 share<\/code><\/pre>\n<p>\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ chmod 700 \/srv\/homeassistant\/bin\/activate [homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/activate<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install wheel sqlalchemy fnvhash<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/python -m pip install --upgrade pip<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0432\u0430\u0436\u043d\u043e\u043c\u0443, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043c\u044b \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Home Assistant. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c  <strong>homeassistant<\/strong> :<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install homeassistant<\/code><\/pre>\n<p>\u0416\u0434\u0435\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438&#8230;.  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 HA, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/hass --ignore-os-check -v -v -v -v<\/code><\/pre>\n<p>\u041a\u043b\u044e\u0447 <strong>&#8212;ignore-os-check<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 &#171;\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439&#187; \u041e\u0421 FreeBSD, \u0438\u043d\u0430\u0447\u0435 \u043d\u0430\u0448 HA \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u041a\u043b\u044e\u0447 <strong>-v<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0430 \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 <em>http:\/\/\u0432\u0430\u0448_ip:8123<\/em> \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0435\u0442\u0441\u044f <s>\u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c HA<\/s> \u043d\u0430\u0434\u043f\u0438\u0441\u044c\u044e <strong>404 Not Found. <\/strong>\u0412\u043e\u0442 \u0438 \u043f\u0440\u0438\u0435\u0445\u0430\u043b\u0438, \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f.<\/p>\n<h2>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438<\/h2>\n<ul>\n<li>\n<p><strong><em>\u041e\u0448\u0438\u0431\u043a\u0430 404 Not Found<\/em> <\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 <strong>404 Not Found, <\/strong>\u044f \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0443\u0432\u0438\u0434\u0435\u043b \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <\/p>\n<blockquote>\n<p>CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration.<\/p>\n<\/blockquote>\n<p>\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f\u0432\u043d\u043e \u0434\u0430\u0451\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 OpenSSL, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 HA \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430  \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ ee \/srv\/homeassistant\/bin\/hass<\/code><\/pre>\n<p>\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0442\u0430\u0440\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0435\u0451:<\/p>\n<pre><code class=\"python\">if os.environ.get(\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\") is None:     os.environ[\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\"] = \"1\"<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"python\">!\/srv\/homeassistant\/bin\/python # -*- coding: utf-8 -*- import re import sys import os from homeassistant.__main__ import main if __name__ == '__main__':     if os.environ.get(\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\") is None:         os.environ[\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\"] = \"1\"     sys.argv[0] = re.sub(r'(-script\\.pyw|\\.exe)?$', '', sys.argv[0])     sys.exit(main())<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043d\u043e\u0432\u0430 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0448\u0438\u0431\u043a\u0438 <strong>404 Not Found<\/strong> \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c HA \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c. <\/p>\n<ul>\n<li>\n<p><strong><em>\u041e\u0448\u0438\u0431\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438  NumPy 1.26.0<\/em><\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e, \u0447\u0442\u043e HA \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Python \u043f\u0430\u043a\u0435\u0442 <em>NumPy<\/em> \u0432\u0435\u0440\u0441\u0438\u0438 1.26.0, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f &#171;\u0440\u0443\u0447\u043d\u0430\u044f&#187; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439, \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u041d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, HA \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0432 \u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435, \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435:<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 NumPy \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442 Git <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pkg install git<\/code><\/pre>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <strong><em>homeassistant<\/em><\/strong> <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # su -l homeassistant<\/code><\/pre>\n<p>\u0418 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c NumPy \u0438\u0437 Git \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ git clone https:\/\/github.com\/numpy\/numpy.git numpy-git<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ cd numpy-git [homeassistant@cyberex ~]$ git checkout v1.26.0 [homeassistant@cyberex ~]$ git cherry-pick 040ed2d [homeassistant@cyberex ~]$ git submodule update --init [homeassistant@cyberex ~]$ cd .. [homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install numpy-git\/<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, NumPy 1.26.0 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430. <\/p>\n<ul>\n<li>\n<p><strong><em>\u041e\u0448\u0438\u0431\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438  <\/em>Webrtc Noise Gain<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442\u0430 <strong>Webrtc Noise Gain<\/strong>, \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install webrtc-noise-gain<\/code><\/pre>\n<p>\u043f\u0430\u043a\u0435\u0442 \u0447\u0435\u0441\u0442\u043d\u043e \u0437\u0430\u044f\u0432\u0438\u043b \u0447\u0442\u043e &#171;<em>Unsupported system<\/em>&#187; \u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0445\u043e\u0442\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 GitHub \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 FreeBSD. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0431\u0443\u0434\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 GitHub. <\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ git clone http:\/\/github.com\/rhasspy\/webrtc-noise-gain.git [homeassistant@cyberex ~]$ cd webrtc-noise-gain [homeassistant@cyberex ~]$ python -m build --wheel [homeassistant@cyberex ~]$ cd .. [homeassistant@cyberex ~]$ srv\/homeassistant\/bin\/pip install webrtc-noise-gain\/dist\/webrtc_noise_gain-1.2.3-cp311-cp311-freebsd_13_1_release_p6_amd64.whl<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430. <\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c HomeAssistant \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u0430  \u0440\u0430\u0431\u043e\u0442\u044b HA, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<\/p>\n<blockquote>\n<p> \/usr\/local\/etc\/rc.d\/ <\/p>\n<\/blockquote>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0441 root \u043f\u0440\u0430\u0432\u0430\u043c\u0438<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # ee \/usr\/local\/etc\/rc.d\/homeassistant<\/code><\/pre>\n<p>\u0412 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#!\/bin\/sh # ------------------------------------------------------- # Copy this file to '\/usr\/local\/etc\/rc.d\/homeassistant' # `chmod +x \/usr\/local\/etc\/rc.d\/homeassistant` # `sysrc homeassistant_enable=yes` # `service homeassistant start` # ------------------------------------------------------- #https:\/\/github.com\/tprelog  name=homeassistant rcvar=${name}_enable  . \/etc\/rc.subr &amp;&amp; load_rc_config ${name}  : \"${homeassistant_enable:=\"NO\"}\" : \"${homeassistant_rc_debug:=\"NO\"}\" : \"${homeassistant_user:=\"homeassistant\"}\" : \"${homeassistant_python:=\"NOT_SET\"}\" : \"${homeassistant_venv:=\"\/srv\/homeassistant\"}\" : \"${homeassistant_safe_mode:=\"NO\"}\" : \"${homeassistant_debug:=\"NO\"}\" : \"${homeassistant_skip_pip:=\"NO\"}\" : \"${homeassistant_verbose:=\"NO\"}\" : \"${homeassistant_color_log:=\"YES\"}\" : \"${homeassistant_restart_delay:=1}\"  if [ ! \"$(id ${homeassistant_user} 2>\/dev\/null)\" ]; then   err 1 \"user not found: ${homeassistant_user}\" else   : \"${homeassistant_group:=\"$(id -gn ${homeassistant_user})\"}\"   HOME=\"$(getent passwd \"${homeassistant_user}\" | cut -d: -f6)\" fi  if [ -z \"${HOME}\" ] || [ ! -d \"${HOME}\" ] || [ \"${HOME}\" == \"\/nonexistent\" ] || [ \"${HOME}\" == \"\/var\/empty\" ]; then   : \"${homeassistant_config_dir:=\"\/home\/${name}\"}\"   : \"${homeassistant_user_dir:=\"${homeassistant_venv}\"}\"   export HOME=\"${homeassistant_user_dir}\" else   : \"${homeassistant_user_dir:=\"${HOME}\"}\"   : \"${homeassistant_config_dir:=\"${homeassistant_user_dir}\/.${name}\"}\" fi  [ -n \"${homeassistant_cpath:-}\" ] &amp;&amp; export CPATH=\"${homeassistant_cpath}\" [ -n \"${homeassistant_library_path:-}\" ] &amp;&amp; export LIBRARY_PATH=\"${homeassistant_library_path}\" [ -n \"${homeassistant_path:-}\" ] &amp;&amp; export PATH=\"${homeassistant_path}\"  umask \"${homeassistant_umask:-022}\"  logfile=\"\/var\/log\/${name}_daemon.log\" pidfile=\"\/var\/run\/${name}_daemon.pid\" pidfile_child=\"\/var\/run\/${name}.pid\"  command=\"\/usr\/sbin\/daemon\" extra_commands=\"check_config ensure_config upgrade install reinstall logs script test\"  homeassistant_precmd() {   local _srv_ _own_ _msg_   local _venv_=\"${homeassistant_venv}\"   local _user_=\"${homeassistant_user}\"   if [ ! -d \"${_venv_}\" ]; then     _msg_=\"${_venv_} not found\"   elif [ ! -f \"${_venv_}\/bin\/activate\" ]; then     _msg_=\"${_venv_}\/bin\/activate is not found\"   elif [ ! -x \"${_srv_:=\"${_venv_}\/bin\/hass\"}\" ]; then     _msg_=\"${_srv_} is not found or is not executable\"   elif [ \"${_own_:=\"$(stat -f '%Su' ${_srv_})\"}\" != ${_user_} ]; then     warn \"${_srv_} is not owned by ${_user_}\"     _msg_=\"${_srv_} is currently owned by ${_own_}\"   else     HA_CMD=\"${_srv_}\"     cd \"${_venv_}\" || err 1 \"cd ${_venv_}\"     return 0   fi   err 1 \"${_msg_}\" }   start_precmd=${name}_prestart homeassistant_prestart() {    homeassistant_precmd \\   &amp;&amp; install -g \"${homeassistant_group}\" -m 664 -o ${homeassistant_user} -- \/dev\/null \"${logfile}\" \\   &amp;&amp; install -g \"${homeassistant_group}\" -m 664 -o ${homeassistant_user} -- \/dev\/null \"${pidfile}\" \\   &amp;&amp; install -g \"${homeassistant_group}\" -m 664 -o ${homeassistant_user} -- \/dev\/null \"${pidfile_child}\" \\   || return 1    homeassistant_ensure_config \"${homeassistant_config_dir}\"   HA_ARGS=\"--ignore-os-check --config ${homeassistant_config_dir}\"    if [ -n \"${homeassistant_log_file:-}\" ]; then     install -g \"${homeassistant_group}\" -m 664 -o ${homeassistant_user} -- \/dev\/null \"${homeassistant_log_file}\" \\     &amp;&amp; HA_ARGS=\"${HA_ARGS} --log-file ${homeassistant_log_file}\"   fi    if [ -n \"${homeassistant_log_rotate_days:-}\" ]; then     HA_ARGS=\"${HA_ARGS} --log-rotate-days ${homeassistant_log_rotate_days}\"   fi    checkyesno homeassistant_color_log || HA_ARGS=\"${HA_ARGS} --log-no-color\"   checkyesno homeassistant_debug &amp;&amp; HA_ARGS=\"${HA_ARGS} --debug\"   checkyesno homeassistant_safe_mode &amp;&amp; HA_ARGS=\"${HA_ARGS} --safe_mode\"   checkyesno homeassistant_skip_pip &amp;&amp; HA_ARGS=\"${HA_ARGS} --skip_pip\"   checkyesno homeassistant_verbose &amp;&amp; HA_ARGS=\"${HA_ARGS} --verbose\"    rc_flags=\"-f -o ${logfile} -P ${pidfile} -p ${pidfile_child} -R ${homeassistant_restart_delay} ${HA_CMD} ${HA_ARGS}\" }  start_postcmd=${name}_poststart homeassistant_poststart() {   sleep 1 ; run_rc_command status }  restart_precmd=\"${name}_prerestart\" homeassistant_prerestart() {   homeassistant_check_config \"${homeassistant_config_dir}\" }  stop_precmd=${name}_prestop homeassistant_prestop() {   local _owner_   # shellcheck disable=SC2154   if [ -n \"${rc_pid}\" ] &amp;&amp; [ \"${_owner_:=\"$(stat -f '%Su' ${pidfile_child})\"}\" != ${homeassistant_user} ]; then     err 1 \"${homeassistant_user} can not stop a process owned by ${_owner_}\"   fi }  stop_postcmd=${name}_poststop homeassistant_poststop() {   rm -f -- \"${pidfile_child}\"   rm -f -- \"${pidfile}\" }  status_cmd=${name}_status homeassistant_status() {   local _http_ _ip_   if [ -n \"${rc_pid}\" ]; then     : \"${homeassistant_secure:=\"NO\"}\" # This is only a cosmetic variable - used by the status_cmd     _ip_=\"$(ifconfig | sed -En 's\/127.0.0.1\/\/;s\/.*inet (addr:)?(([0-9]*\\.){3}[0-9]*).*\/\\2\/p')\"     checkyesno homeassistant_secure &amp;&amp; _http_=\"https\" || _http_=\"http\"     echo \"${name} is running as pid ${rc_pid}.\"     echo \"${_http_}:\/\/${_ip_}:${homeassistant_port:-\"8123\"}\"  # This is only a cosmetic variable   else     echo \"${name} is not running.\"     return 1   fi }  check_config_cmd=\"${name}_check_config ${1} ${2}\" homeassistant_check_config() {   [ \"${1}\" == \"check_config\" ] || [ \"${1}\" == \"onecheck_config\" ] &amp;&amp; shift   homeassistant_script check_config --config \"${1:-\"${homeassistant_config_dir}\"}\" }  ensure_config_cmd=\"${name}_ensure_config ${1} ${2}\" homeassistant_ensure_config() {   [ \"${1}\" == \"ensure_config\" ] || [ \"${1}\" == \"oneensure_config\" ] &amp;&amp; shift   local _config_dir_=\"${1:-\"${homeassistant_config_dir}\"}\"   debug \"config_dir: ${_config_dir_}\"   if [ ! -d \"${_config_dir_}\" ]; then     install -d -g \"${homeassistant_group}\" -m 775 -o ${homeassistant_user} -- \"${_config_dir_}\" \\     || err 1 \"unable to create directory: ${_config_dir_}\"   fi   homeassistant_script ensure_config --config \"${_config_dir_}\" }  script_cmd=\"${name}_script ${*}\" homeassistant_script() {   [ \"${1}\" == \"script\" ] || [ \"${1}\" == \"onescript\" ] &amp;&amp; shift   local _action_=\"${1}\" ; shift   local _args_=\"${*}\"   homeassistant_precmd   # shellcheck disable=SC2016   su - ${homeassistant_user} -c '     source ${1}\/bin\/activate || exit 1     hass --script ${2} ${3}     deactivate   ' _ ${homeassistant_venv} \"${_action_}\" \"${_args_}\" }  logs_cmd=\"${name}_logs ${*}\" homeassistant_logs() {   case \"${2}\" in     -f )       tail -F \"${logfile}\" ;;     -h )       head -n \"${3:-\"100\"}\" \"${logfile}\" ;;     -n | -t )       tail -n \"${3:-\"100\"}\" \"${logfile}\" ;;     -l )       less -R \"${logfile}\" ;;     * )       cat \"${logfile}\" ;;   esac }  upgrade_cmd=\"${name}_upgrade\" homeassistant_upgrade() {   homeassistant_precmd   run_rc_command stop 2>\/dev\/null ; local _rcstop_=${?}   homeassistant_install --upgrade \"${name}\"   homeassistant_check_config &amp;&amp; [ ${_rcstop_} == 0 ] &amp;&amp; run_rc_command start }  install_cmd=\"${name}_install ${*}\" homeassistant_install() {   [ \"${1}\" == \"install\" ] || [ \"${1}\" == \"oneinstall\" ] &amp;&amp; shift   local _create_ _arg_   _arg_=\"${*:-\"${name}\"}\"   debug \"install: ${_arg_}\"   if [ \"${1}\" == \"${name}\" ] &amp;&amp; { [ ! -d \"${homeassistant_venv}\" ] || [ ! \"$(ls -A ${homeassistant_venv})\" ]; }; then     debug \"creating virtualenv: ${homeassistant_venv}\"     install -d -g \"${homeassistant_group}\" -m 775 -o ${homeassistant_user} -- ${homeassistant_venv} \\     || err 1 \"failed to create directory: ${homeassistant_venv}\"     _create_=\"YES\"   elif [ -d \"${homeassistant_venv}\" ]; then     debug \"found existing directory: ${homeassistant_venv}\"     homeassistant_precmd   else     echo \"failed to install: ${_arg_}\"     err 1 \"${name} is not installed: ${homeassistant_venv}\"   fi   # shellcheck disable=SC2016   su - ${homeassistant_user} -c '     if [ ${1} == \"YES\" ]; then       ${2} -m venv ${3}       source ${3}\/bin\/activate || exit 1       shift 3       pip install wheel       pip install ${@}     else       source ${3}\/bin\/activate || exit 1       shift 3       pip install ${@}     fi     deactivate   ' _ ${_create_:-\"NO\"} ${homeassistant_python} ${homeassistant_venv} \"${_arg_}\" || err 1 \"install function failed\" }  reinstall_cmd=\"${name}_reinstall ${*}\" homeassistant_reinstall() {   [ \"${1}\" == \"reinstall\" ] || [ \"${1}\" == \"onereinstall\" ] &amp;&amp; shift   local _ans1_ _ans2_ _rcstop_ _version_ _arg_   homeassistant_precmd   if [ \"${1%==*}\" == \"${name}\" ]; then     _arg_=\"${*}\"   elif [ -z \"${_arg_}\" ]; then     if [ -n \"${_version_:=$(cat ${homeassistant_config_dir}\/.HA_VERSION 2>\/dev\/null)}\" ]; then       _arg_=\"${name}==${_version_}\"     else       _arg_=\"${name}\"     fi   else     warn \"expecting ${name} to be listed first\"     err 1 \"check args: ${*}\"   fi   echo -e \"\\n${orn}You are about to recreate the virtualenv:${end}\\n  ${homeassistant_venv}\\n\"   echo -e \"${orn}The following package(s) will be installed:${end}\\n  ${_arg_}\\n\"   read -rp \" Type 'YES' to continue: \" _ans1_   run_rc_command stop 2>\/dev\/null ; _rcstop_=${?}   cd \/ ; rm -r -- \"${homeassistant_venv}\" || err 1 \"failed to remove ${homeassistant_venv}\"   { homeassistant_install ${_arg_} ; homeassistant_check_config ; } \\   &amp;&amp; [ ${_rcstop_} == 0 ] &amp;&amp; run_rc_command start }  test_cmd=\"${name}_test\" homeassistant_test() {   echo -e \"\\nTesting virtualenv...\\n\"   homeassistant_precmd   ## Switch users \/ activate virtualenv \/ run a command   # shellcheck disable=SC2016   su \"${homeassistant_user}\" -c '     echo -e \"  $(pwd)\\n\"     source ${1}\/bin\/activate     echo \"  $(python --version)\"     echo \"  Home Assistant $(pip show homeassistant | grep Version | cut -d\" \" -f2)\"     deactivate   ' _ ${homeassistant_venv}   echo }  colors () {   export red=$'\\e[1;31m'   export orn=$'\\e[38;5;208m'   export end=$'\\e[0m' } ; colors  checkyesno homeassistant_rc_debug &amp;&amp; rc_debug=\"ON\" run_rc_command \"${1}\"<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c, \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0430<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # chmod 755 \/usr\/local\/etc\/rc.d\/homeassistant<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # sysrc homeassistant_enable=\"YES\"<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 Home Assistant <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # service homeassistant start<\/code><\/pre>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u043e\u043f\u044b\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Home Assistant \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 FreeBSD. \u0421\u0442\u0430\u0442\u044c\u044f \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Home Assistant. \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043e\u043d\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430!<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/787700\/\"> https:\/\/habr.com\/ru\/articles\/787700\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e Home Assistant (HA) &#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c Linux, macOS, Windows. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0435\u0442 FreeBSD. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0442\u0435\u043c, \u043a\u0442\u043e \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 FreeBSD \u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Home Assistant? \u0422\u0443\u0442 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b: \u043f\u0435\u0440\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0434\u043b\u044f HA, \u0447\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 HA \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 FreeBSD. \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u044f \u043f\u043e\u0448\u0435\u043b \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0443\u0442\u0435\u043c (\u043f\u0443\u0442\u044c \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u0438 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439) \u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0434\u0430\u043b\u0435\u0435.<\/p>\n<h2>\u0427\u0442\u043e \u0442\u044b \u0438\u043c\u0435\u0435\u043c \u0438 \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c?<\/h2>\n<p>   \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 FreeBSD 14 (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438)<\/p>\n<pre><code class=\"bash\">root@cyberex:~ # freebsd-version 14.0-RELEASE-p4<\/code><\/pre>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e HA (2024.1.3).<\/p>\n<h2>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c <\/h2>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f  \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b HA:<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u043e\u0440\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432  \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<pre><code>root@cyberex:~ # pkg update root@cyberex:~ # pkg upgrade<\/code><\/pre>\n<p>\u0418 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u0442\u0430\u043a \u043a\u0430\u043a HA \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Python 3.10, \u0442\u043e \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python 3.11:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pkg install rust py39-pillow py310-sqlite3 python311 openssl ffmpeg <\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 HA:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pw useradd homeassistant -w no -m -c \"Home Assistant\"<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <strong>homeassistant<\/strong> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 &#171;home&#187; \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b HA \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 usb \u0441\u0442\u0438\u043a\u0430\u043c\u0438 ZigBee \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>homeassistant<\/strong>  \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 <strong>dialer:<\/strong><\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pw groupmod dialer -m homeassistant<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # chmod 770 \/home\/homeassistant<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 HA:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # mkdir -p \/srv\/homeassistant<\/code><\/pre>\n<p>\u0418 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>homeassistant<\/strong> \u0435\u0435 &#171;\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c&#187;:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # chown homeassistant:homeassistant \/srv\/homeassistant<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Python \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 HA:<\/p>\n<p>\u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <strong>homeassistant<\/strong> <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # su -l homeassistant<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 Python 3.11:<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # ln -s \/usr\/local\/bin\/python3.11 \/usr\/local\/bin\/python root@cyberex:~ # ln -s \/usr\/local\/bin\/python3.11 \/usr\/local\/bin\/python3<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ python -m venv \/srv\/homeassistant<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ ls -l \/srv\/homeassistant total 24 drwxr-xr-x  3 homeassistant homeassistant 2048 Jan 10 18:22 bin drwxr-xr-x  2 homeassistant homeassistant  512 Jan 10 18:22 cache drwxr-xr-x  4 homeassistant homeassistant  512 Jan 10 18:22 include drwxr-xr-x  4 homeassistant homeassistant  512 Jan 10 18:22 lib lrwxr-xr-x  1 homeassistant homeassistant    3 Jan 10 18:22 lib64 -> lib -rw-r--r--  1 homeassistant homeassistant  174 Jan 10 18:22 pyvenv.cfg drwxr-xr-x  3 homeassistant homeassistant  512 Jan 10 18:22 share<\/code><\/pre>\n<p>\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ chmod 700 \/srv\/homeassistant\/bin\/activate [homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/activate<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install wheel sqlalchemy fnvhash<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/python -m pip install --upgrade pip<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0432\u0430\u0436\u043d\u043e\u043c\u0443, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043c\u044b \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Home Assistant. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c  <strong>homeassistant<\/strong> :<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install homeassistant<\/code><\/pre>\n<p>\u0416\u0434\u0435\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438&#8230;.  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 HA, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/hass --ignore-os-check -v -v -v -v<\/code><\/pre>\n<p>\u041a\u043b\u044e\u0447 <strong>&#8212;ignore-os-check<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 &#171;\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439&#187; \u041e\u0421 FreeBSD, \u0438\u043d\u0430\u0447\u0435 \u043d\u0430\u0448 HA \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u041a\u043b\u044e\u0447 <strong>-v<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0430 \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 <em>http:\/\/\u0432\u0430\u0448_ip:8123<\/em> \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0435\u0442\u0441\u044f <s>\u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c HA<\/s> \u043d\u0430\u0434\u043f\u0438\u0441\u044c\u044e <strong>404 Not Found. <\/strong>\u0412\u043e\u0442 \u0438 \u043f\u0440\u0438\u0435\u0445\u0430\u043b\u0438, \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f.<\/p>\n<h2>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438<\/h2>\n<ul>\n<li>\n<p><strong><em>\u041e\u0448\u0438\u0431\u043a\u0430 404 Not Found<\/em> <\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 <strong>404 Not Found, <\/strong>\u044f \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0443\u0432\u0438\u0434\u0435\u043b \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <\/p>\n<blockquote>\n<p>CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration.<\/p>\n<\/blockquote>\n<p>\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f\u0432\u043d\u043e \u0434\u0430\u0451\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 OpenSSL, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 HA \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430  \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ ee \/srv\/homeassistant\/bin\/hass<\/code><\/pre>\n<p>\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0442\u0430\u0440\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0435\u0451:<\/p>\n<pre><code class=\"python\">if os.environ.get(\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\") is None:     os.environ[\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\"] = \"1\"<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"python\">!\/srv\/homeassistant\/bin\/python # -*- coding: utf-8 -*- import re import sys import os from homeassistant.__main__ import main if __name__ == '__main__':     if os.environ.get(\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\") is None:         os.environ[\"CRYPTOGRAPHY_OPENSSL_NO_LEGACY\"] = \"1\"     sys.argv[0] = re.sub(r'(-script\\.pyw|\\.exe)?$', '', sys.argv[0])     sys.exit(main())<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043d\u043e\u0432\u0430 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0448\u0438\u0431\u043a\u0438 <strong>404 Not Found<\/strong> \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c HA \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c. <\/p>\n<ul>\n<li>\n<p><strong><em>\u041e\u0448\u0438\u0431\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438  NumPy 1.26.0<\/em><\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e, \u0447\u0442\u043e HA \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Python \u043f\u0430\u043a\u0435\u0442 <em>NumPy<\/em> \u0432\u0435\u0440\u0441\u0438\u0438 1.26.0, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f &#171;\u0440\u0443\u0447\u043d\u0430\u044f&#187; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439, \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u041d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, HA \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0432 \u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435, \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435:<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 NumPy \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442 Git <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # pkg install git<\/code><\/pre>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <strong><em>homeassistant<\/em><\/strong> <\/p>\n<pre><code class=\"cs\">root@cyberex:~ # su -l homeassistant<\/code><\/pre>\n<p>\u0418 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c NumPy \u0438\u0437 Git \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ git clone https:\/\/github.com\/numpy\/numpy.git numpy-git<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ cd numpy-git [homeassistant@cyberex ~]$ git checkout v1.26.0 [homeassistant@cyberex ~]$ git cherry-pick 040ed2d [homeassistant@cyberex ~]$ git submodule update --init [homeassistant@cyberex ~]$ cd .. [homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install numpy-git\/<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, NumPy 1.26.0 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430. <\/p>\n<ul>\n<li>\n<p><strong><em>\u041e\u0448\u0438\u0431\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438  <\/em>Webrtc Noise Gain<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442\u0430 <strong>Webrtc Noise Gain<\/strong>, \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ \/srv\/homeassistant\/bin\/pip install webrtc-noise-gain<\/code><\/pre>\n<p>\u043f\u0430\u043a\u0435\u0442 \u0447\u0435\u0441\u0442\u043d\u043e \u0437\u0430\u044f\u0432\u0438\u043b \u0447\u0442\u043e &#171;<em>Unsupported system<\/em>&#187; \u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0445\u043e\u0442\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 GitHub \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 FreeBSD. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0431\u0443\u0434\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 GitHub. <\/p>\n<pre><code class=\"cs\">[homeassistant@cyberex ~]$ git clone http:\/\/github.com\/rhasspy\/webrtc-noise-gain.git [homeassistant@cyberex ~]$ cd webrtc-noise-gain [homeassistant@cyberex ~]$ python -m build --wheel [homeassistant@cyberex ~]$ cd .. [homeassistant@cyberex ~]$ srv\/homeassistant\/bin\/pip install webrtc-noise-gain\/dist\/webrtc_noise_gain-1.2.3-cp311-cp311-freebsd_13_1_release_p6_amd64.whl<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430. <\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c HomeAssistant \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u0430  \u0440\u0430\u0431\u043e\u0442\u044b HA, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<\/p>\n<blockquote>\n<p> \/usr\/local\/etc\/rc.d\/ <\/p>\n<\/blockquote>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0441 root \u043f\u0440\u0430\u0432\u0430\u043c\u0438<\/p>\n<pre><code class=\"cs\">root@cyberex:~ # ee \/usr\/local\/etc\/rc.d\/homeassistant<\/code><\/pre>\n<p>\u0412 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#!\/bin\/sh # ------------------------------------------------------- # Copy this file to '\/usr\/local\/etc\/rc.d\/homeassistant' # `chmod +x \/usr\/local\/etc\/rc.d\/homeassistant` # `sysrc homeassistant_enable=yes` # `service homeassistant start` # ------------------------------------------------------- #https:\/\/github.com\/tprelog  name=homeassistant rcvar=${name}_enable  . \/etc\/rc.subr &amp;&amp; load_rc_config ${name}  : \"${homeassistant_enable:=\"NO\"}\" : \"${homeassistant_rc_debug:=\"NO\"}\" : \"${homeassistant_user:=\"homeassistant\"}\" : \"${homeassistant_python:=\"NOT_SET\"}\" : \"${homeassistant_venv:=\"\/srv\/homeassistant\"}\" : \"${homeassistant_safe_mode:=\"NO\"}\" : \"${homeassistant_debug:=\"NO\"}\" : \"${homeassistant_skip_pip:=\"NO\"}\" : \"${homeassistant_verbose:=\"NO\"}\" : \"${homeassistant_color_log:=\"YES\"}\" : \"${homeassistant_restart_delay:=1}\"  if [ ! \"$(id ${homeassistant_user} 2>\/dev\/null)\" ]; then   err 1 \"user not found: ${homeassistant_user}\" else   : \"${homeassistant_group:=\"$(id -gn ${homeassistant_user})\"}\"   HOME=\"$(getent passwd \"${homeassistant_user}\" | cut -d: -f6)\" fi  if [ -z \"${HOME}\" ] || [ ! -d \"${HOME}\" ] || [ \"${HOME}\" == \"\/nonexistent\" ] || [ \"${HOME}\" == \"\/var\/empty\" ]; then   : \"${homeassistant_config_dir:=\"\/home\/${name}\"}\"   : \"${homeassistant_user_dir:=\"${homeassistant_venv}\"}\"   export HOME=\"${homeassistant_user_dir}\" else   : \"${homeassistant_user_dir:=\"${HOME}\"}\"   : \"${homeassistant_config_dir:=\"${homeassistant_user_dir}\/.${name}\"}\" fi  [ -n<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-365821","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/365821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=365821"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/365821\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=365821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=365821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=365821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}