-
-
Save willwhui/d251ac2413105162817782eb21158b52 to your computer and use it in GitHub Desktop.
Hass.io on Raspberry Pi 3 B |
addon Configurator
一个web方式运行的配置文件修改器,安装后的默认入口是http://hassio.local:3218/
必须在它的配置页中设置password,否则不能运行。
运行后,点击界面左上角的文件夹图标,可以打开我们想要编辑的yaml文件。
这里是它的说明:https://home-assistant.io/addons/configurator/
这其中还提到了如何添加到Panel(侧边栏)去,结合参考:https://home-assistant.io/components/panel_iframe/
特殊用途
这个 Configurator很有意思,当我改错了配置文件,进不了http://hassio.local:8123的时候,如果预先打开了它的页面没有关闭,我还是可以访问机器里所有的文件并进行修改的。
只不过改了之后,选择它右上角菜单里的restart hass,没有效果。
但至少可以看log,知道上次启动失败的原因。
还可以执行命令,比如命令行启动ssh:/usr/sbin/sshd -D -e (待测试)
hass的架构说明
奇怪的bug
不知道什么原因,每次重启设备之后,addon并不按照预期的设定进行自动启动。
导致每次都要手动启动ssh,smb,configurator
很过分。。。
设置.ssh/authorized_keys之后,总是被清空,
看来必须在SSH插件里面放置公钥
并且再也无法通过在boot分区修改配置文件的方法成功配置wifi了
根据上面的情况来看,通过ssh配置也是不靠谱的,因为会清空
因此暂时放弃hass.io直接用原生的hass
根据 https://community.home-assistant.io/t/setup-ssh-but-sudo-not-found/25291/2 这里的讨论来看:
So the only real way to change anything is to add hass.io4 add-ons and changing you config.yaml file.
只能通过add-on和*.yaml来改变hass.io的行为。
修改yaml文件导致hassio.local:8123,smb,ssh都不可访问
起因:
我给它命名是 name:random1
成功配置之后,可以看到它在state里面的entry id 是sensor.random1
接着填充了group.yaml文件,在里面设定了一个group,引用了sensor.random1
我想看看entry id是不是来自这个"name"属性,会不会自动将空格转为下划线之类的。
并且这次修改“random 1”的时候故意没有修改这个文件,看看会导致什么错误。
同时还改了configuration.yaml的http部分,设置了一个密码,心想着这个应该不会有什么问题。
结果:
重启之后进不了hassio.local:8123页面。
连smb,ssh都坏掉了!
根据经验,是yaml文件不对头,导致hass不能正常启动了。
以前都只是网页起不来,这次smb和ssh都访问不了了,改不了yaml文件了。
必须得想办法可以再访问到yaml文件进行修改。
否则就得重装了。
经过摸索,采用以下办法:
给树莓派断电,把TF卡拔下来,用读卡器接在电脑上查看(我是ubuntu)。
嗯,还好,可以看到电脑上识别出4个usb存储设备。(不过我记得之前刷卡完成的时候,只会有1个的?)
选择resin-data存储设备,在目录
resin-data/homeassistant/
中有我们需要修改的那些.yaml文件。以我的情况为例:
** groups.yaml是我改过的内容,我注释了里面的东西。
** configuration.yaml居然被清空了,是0字节。需要填充正确的内容进行恢复(下面有正确的内容)
把TF卡插回去,加电。
其实经过后面的折腾后,我后来觉得如果树莓派启动完成后,http://hassio.local:8123 页面刷不出来,其实不要太着急,等3分钟等它启动完也许就好了。
然而我当时并不能先知先觉。。。
因为当时没有经验,所以我加电后马上手脚麻利地ping树莓派的ip。
一旦ping通,我就开始刷http://hassio.local:8123,几下没刷出来,我就认为还是没启动成功。
于是又继续下面的操作了。
(我现在想,是不是这个问题的根源就是我在重启树莓派后,在hass.io还没启动完成的时候,就给树莓派断电导致的)
总之,再一次断电树莓派,然后在电脑上打开TF卡。
在resin-state存储设备上发现有一个文件"remove_me_to_reset",在命令行删掉:
sudo rm /media/username/resin-state/remove_me_to_reset
不得不使用命令行,因为这个文件是写保护的。
现在,又一次重新插入TF卡到树莓派,加电。
还是没法访问http://hassio.local:8123/
没辙了。
这时候我终于想:也许是它启动的实在太慢?
干脆死马当活马医,多等几分钟吧。
于是过了几分钟,访问http://hassio.local:8123/成功了!
所以我也不知道删除上面那个"remove_me_to_reset"是不是有必要的了。
汗。
那么,为什么我早没想到呢要多等几分钟呢?
因为:
在上面文字记录中,我省掉了n次尝试在configuration.yaml写入必要的正确的内容的过程。
而只要yaml内容不对,一定是不能启动成功的。
我只能断电拔卡在电脑上找到home-assistant.log文件,看失败的原因。
所以,我在之前无法很好的判断hass.io是不是正确启动了——等了也是白等。
好了,已经到了这里了,总算基本恢复正常了。
如果发现smb和ssh不能访问,那么需要进入hass.io的addon页面去看看。
我发现这两个addon被停止了,莫非是"remove_me_to_reset"导致的?
重新启动它们就好了。
用于恢复的configuration.yaml文件
这里有一份完整的,但不是hass.io自带的:https://github.com/devdelay/home-assistant-config/blob/master/configuration.yaml
在Q群7533213中找到“沉睡的先行者”上传的一个配置文件,删除掉多余的部分之后,如下(注释写的挺好的,我就不删了):
恩,最后我不得不说,hass.io的稳定性有点差。
不过,不知道为什么侧边栏的configuration栏目不再显示了
在configuration.yaml中增加"config:"即可
来源:https://www.reddit.com/r/homeassistant/comments/6q88ef/default_hassio_config_file/
config: #for the config component + panel
automation: #for the automation component + panel
hassio: #for the Hassio component + panel
还有,上面的那个改name的实验:
经过实验:name指定的字符串如果有空格的话,作为Entity ID使用的时候,系统会自动将空格转换为下划线。
比如如果我们定义了这样的:
那么在state里面看到的Entity ID就是“sensor.random_1”