三十八 Home Assistant 开发hass.io插件-配置

插件配置

每个插件都存储在一个文件夹中。文件结构如下:

addon_name/
  Dockerfile
  config.json
  run.sh

插件脚本

与每个Docker容器一样,你需要一个在容器启动时运行的脚本。用户可能会运行许多插件,所以如果只是做简单的事情,建议尽量使用Bash脚本。

在开发脚本时:

  • /data是用于持久存储的卷。
  • /data/options.json包含用户配置。你可以在你的shell脚本中使用jq来解析此数据。但是你可能需要在容器中作为单独的包安装jq(见下面的Dockerfile)。
CONFIG_PATH=/data/options.json

TARGET=$(jq --raw-output ".target" $CONFIG_PATH)

所以如果你的options包含

{ "target": "beer" }

那么在你的bash文件的环境中将会有一个包含beer的变量TARGET

插件Docker文件

所有插件都基于Alpine Linux 3.6。Hass.io将根据机器架构自动替换正确的基础镜像。如果你需要在正确的时区运行,可以添加tzdata,但我们的基础镜像中已经包含了它。

FROM %%BASE_IMAGE%%

ENV LANG C.UTF-8

# 安装插件所需的内容
RUN apk add --no-cache jq

# 复制插件数据
COPY run.sh /
RUN chmod a+x /run.sh

CMD [ "/run.sh" ]

如果你不使用设备上的本地构建或我们的构建脚本,请确保Dockerfile也有一组标签,包括:

LABEL io.hass.version="VERSION" io.hass.type="addon" io.hass.arch="armhf|aarch64|i386|amd64"

可以使用以下模式使用自己的基础镜像:

#amd64:FROM...
#i386:FROM...
#armhf:FROM...
#aarch64:FROM...

或者如果你不想进行多架构构建/支持,也可以使用简单的FROM

插件配置文件

插件的配置存储在config.json中。

{
"name": "xy",
"version": "1.2",
"slug": "folder",
"description": "长描述",
"arch": ["amd64"],
"url": "有关插件的更多信息的网站(例如支持论坛线程)",
"startup": "application",
"boot": "auto",
"ports": {
"123/tcp": 123
},
"map": ["config:rw", "ssl"],
"options": {},
"schema": {},
"image": "repo/{arch}-my-custom-addon"
}
必需描述
name插件名称
version插件版本
slug插件标识符
description插件描述
arch支持的架构列表:armhfaarch64amd64i386。默认全部。
url插件主页。在这里你可以解释插件和选项。
startupinitialize将在Hassio设置时启动插件。system用于像数据库和基础组件等不依赖其他东西的情况。services将在Home Assistant之前启动。application在Home Assistant启动之后启动,或者once用于不作为守护进程运行的应用程序。
webui此插件的Web界面的URL。例如http://[HOST]:[PORT:2839]/dashboard,端口需要内部端口,我们稍后将用实际端口替换它。
bootauto由系统自动启动,manual手动启动或仅manual
ports要从容器暴露的网络端口。格式为"container-port/type": host-port
host_network如果为True,插件在主机网络上运行。
devices要映射到插件的设备列表。格式为:<path_on_host>:<path_in_container>:<cgroup_permissions>。例如/dev/ttyAMA0:/dev/ttyAMA0:rwm
hassio_api此插件可以访问Hass.io REST API。它设置主机别名为hassio
privileged访问硬件/系统的权限。可用访问权限:NET_ADMINSYS_ADMINSYS_RAWIO
map用于额外Hass.io文件夹的映射列表。可能的值:configssladdonsbackupshare。默认以ro(只读)映射,如果你在名称末尾添加:rw,可以更改此设置。
environment运行插件的环境变量字典。
audio标记此插件使用内部音频系统。环境变量为ALSA_INPUTALSA_OUTPUT以访问alsa的内部信息。
options插件的默认选项值。
schema插件选项值的模式。可以设置为False以禁用模式验证并使用自定义选项。
image用于Docker Hub。
timeout默认10(秒)。等待Docker完成或被终止的超时时间。
tmpfs/tmpfs挂载一个tmpfs文件系统。此选项的有效格式为:size=XXXu,uid=N,rw。大小是必需的,有效单位(u)为kmgXXX必须替换为数字。uid=NN为用户ID号)和rw是可选的。

选项/模式

options字典包含所有可用选项及其默认值。如果在插件启动前用户必须提供该值,则将默认值设置为null。仅支持非嵌套数组和字典。

{
"message": "自定义内容",
"logins": [
{"username": "beer", "password": "123456"},
{"username": "cheep", "password": "654321"}
],
"random": ["haha", "hihi", "huhu", "hghg"],
"link": "http://blebla.com/"
}

schema看起来像options,但描述了我们应该如何验证用户输入。例如:

{
"message": "str",
"logins": [
{"username": "str", "password": "str"}
],
"random": ["str"],
"link": "url"
}

我们支持:

  • str(字符串)
  • bool(布尔值)
  • int / int(min,) / int(,max) / int(min,max)(整数及整数范围)
  • float / float(min,) / float(,max) / float(min,max)(浮点数及浮点数范围)
  • email(电子邮件地址)
  • url(网址)
  • port(端口号)
  • match(REGEX)(正则表达式匹配)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值