开发插件
Hass.io的插件允许用户扩展Home Assistant的功能。这可以是运行一个Home Assistant能够与之集成的应用程序(如MQTT代理),或者通过Samba共享配置以便于从其他计算机轻松编辑。插件可以通过Home Assistant中的Hass.io面板进行配置。
在底层,插件是发布在Docker Hub上的Docker镜像。开发者可以创建包含多个插件引用的GitHub仓库,以便于与社区轻松共享。
教程:创建你的第一个插件
- 配置
- 本地测试
- 发布
- 仓库
教程:创建你的第一个插件
你已经在使用Home Assistant,并且很享受内置插件,但你缺少某个应用程序。是时候创建自己的插件了!在Hass.io 0.24版本中,我们引入了在设备上构建本地插件的选项。这对于在本地开发新插件非常有用。
要开始开发插件,我们首先需要访问Hass.io查找本地插件的位置。为此,你可以使用Samba插件或SSH插件。
对于Samba,一旦你启用并启动它,你的Hass.io实例将出现在本地网络选项卡中,并共享一个名为“addons”的文件夹。这就是存储你自定义插件的文件夹。
如果你使用的是macOS且该文件夹没有自动显示,打开Finder并按下CMD + K,然后输入“smb://hassio.local”。

启用Samba插件后,你可以通过本地网络浏览到你的Hass.io服务器。它将包含一个用于存储本地插件的addons文件夹。
对于SSH,你需要安装它。在启动之前,你必须有一对私钥/公钥,并将公钥存储在插件配置中(更多信息请参阅文档)。启动后,你可以通过SSH连接到Hass.io,并将你的自定义插件存储在“/addons”中。
一旦你通过SSH连接到你的Hass.io设备,你就可以访问“/addons”中的插件。

一旦你找到插件目录,就可以开始了!
步骤1:基础操作
创建一个名为hello_world的新目录。
在该目录中创建三个文件。
Dockerfile:
FROM %%BASE_IMAGE%%
ENV LANG C.UTF-8
# 复制插件数据
COPY run.sh /
RUN chmod a+x /run.sh
CMD [ "/run.sh" ]
config.json:
{
"name": "Hello world",
"version": "1",
"slug": "hello_world",
"description": "我的第一个真正的插件!",
"startup": "before",
"boot": "auto",
"options": {},
"schema": {}
}
run.sh:
echo Hello world!
步骤2:安装和测试插件
现在到了有趣的部分,打开Hass.io用户界面并安装和运行你的插件。
-
打开Home Assistant前端。
-
进入Hass.io面板。
-
在右上角点击购物篮进入插件商店。

-
从Hass.io主面板打开插件商店。
-
在右上角点击刷新按钮。
你现在应该看到一个名为“Local”的新卡片,列出了你的插件!

点击你的插件进入插件详细信息页面。
安装你的插件。
启动你的插件。
刷新你的插件日志,你现在应该在日志中看到“Hello world!”。

步骤3:托管服务器
到目前为止,我们已经能够做一些基本的事情,但还不是很有用。所以让我们更进一步,托管一个在端口上公开的服务器。为此,我们将使用Python 3自带的内置HTTP服务器。
要做到这一点,我们需要更新我们的文件如下:
Dockerfile:安装Python 3。
config.json:使容器中的端口在主机上可用。
run.sh:运行Python 3命令来启动HTTP服务器。
在Dockerfile的RUN之前添加以下内容:
# 安装插件所需的内容
RUN apk add --no-cache python3
# Python 3 HTTP服务器服务当前工作目录
# 所以让我们将其设置为插件的持久数据目录。
WORKDIR /data
在config.json中添加“ports”。这将使容器内的TCP端口8000在主机上的端口8000可用。
{
"name": "Hello world",
"version": "0.2",
"slug": "hello_world",
"description": "我的第一个真正的插件!",
"startup": "before",
"boot": "auto",
"options": {},
"schema": {},
"ports": {
"8000/tcp": 8000
}
}
更新run.sh以启动Python 3服务器:
python3 -m http.server
步骤4:安装更新
由于我们更新了config.json中的版本号,Home Assistant在查看插件详细信息时将显示更新按钮。你可能需要刷新浏览器或点击插件商店中的刷新按钮才能看到它。如果你没有更新版本号,你也可以卸载并重新安装插件。重新安装插件后,确保启动它。
现在导航到http://hassio.local:8000查看我们的服务器运行情况!

额外内容:使用插件选项
在截图中你可能已经看到我们的服务器只提供了一个文件:options.json。这个文件包含了这个插件的用户配置。因为我们在config.json中指定了空的“config”和“schema”,所以该文件目前是空的。
让我们看看是否能在那个文件中放入一些数据!
为此,我们需要指定默认选项和一个模式,以便用户更改选项。
用以下内容更改config.json中的选项和模式条目:
{
…
"options": {
"beer": true,
"wine": true,
"liquor": false,
"name": "world",
"year": 2017
},
"schema": {
"beer": "bool",
"wine": "bool",
"liquor": "bool",
"name": "str",
"year": "int"
},
…
}
刷新插件商店并重新安装你的插件。你现在将在插件配置屏幕中看到可用的选项。当你现在回到我们的Python 3服务器并下载options.json时,你将看到你设置的选项。
了解有关可用架构选项的更多信息。
了解如何在run.sh中使用options.json
8974

被折叠的 条评论
为什么被折叠?



