HASS-配置器

hass-configurator的Python项目详细描述


#HASS配置程序
[![构建状态](https://travis-ci.org/danielperna84/hass-configurator.svg?branch=master)"(https://travis ci.org/danielperna84/hass configurator)
它本质上是一个嵌入式的[ace编辑器](https://ace.c9.io/),它有语法高亮和yaml文件的自动linting(以及许多其他可以打开和关闭的功能)。还有一个集成的文件浏览器,可以选择要编辑的任何文件。编辑完文件后,单击"保存"按钮(或按ctrl+s/cmd+s),它将替换原始文件。
[jt martinez](https://github.com/jmart518)通过实现[material design](http://materialecss.com/)完成了出色的工作。

文件
-可用触发器、事件、实体、条件和服务的列表。选定的元素将插入编辑器的最后一个光标位置。
-家庭助理事件观察者(通过WebSocket连接到家庭助理并查看发生的所有事件)
-单击按钮直接重新启动家庭助理
-SSL支持
-可选用于增加安全性的身份验证和IP筛选
-指向Home助手文档和图标的直接链接
-执行shell命令
-在Git存储库中转移和提交更改,在分支之间创建和切换,推到ssh远程
-可自定义的编辑器设置(使用[localstorage]保存)(https://developer.mozilla.org/en-us/docs/web/api/window/localstorage))
-独立模式,隐藏左侧与Home助手相关的面板(触发器、实体等)。将"hass_api"设置为"none",或使用命令行标志"-s`/`--standalone"启用此模式。


[截图](https://github.com/danielperna84/hass configurator/blob/master/screenshots/main.png)

如果有些东西不起作用,在这里创建一个问题,我会看一看。
警告:此工具允许您浏览文件系统和修改文件。因此,请小心编辑哪些文件,否则可能会损坏系统的关键部分。

而且所有花哨的javascript库都是从cdn加载的(这意味着在脱机时这不起作用)。
-将[configurator.py](https://github.com/danielperna84/hass-configurator/blob/master/configurator.py)复制到您的家庭助理配置目录(例如/home/homemassint/.homemassiant)
-使其可执行(`sudo chmod 755 configurator.py`)
-(可选)设置"g it"变量在configurator.py中,如果您的系统上安装了[gitpython](https://gitpython.readthedocs.io/)则设置为"true"(可选)如果您想使用基于时间的"sesame"功能,请安装[pyotp](https://github.com/pyotp/pyotp)(请参阅下文)。
-执行它(`sudo./configurator.py`)
-终止这个过程执行通常的"ctrl+c",可能一次或两次

如果您不熟悉python:在设置字符串类型的变量时,必须用引号将其写下来。默认设置对于快速签出它是很好的。但是,如果使用更多自定义设置,则必须更改某些设置。
要在更新过程中保留设置,还可以将设置保存在外部文件中。在这种情况下,复制[settings.conf](https://github.com/danielperna84/hass configurator/blob/master/settings.conf)任何您喜欢的文件,并在启动configurator时将文件的完整路径附加到命令中。例如,"sudo.configurator.py/home/homeassistant/.homeassistant/mysettings.conf"。这个文件是json格式的。因此,请确保它有一个有效的语法(您可以将编辑器设置为json以获得设置的语法突出显示)。py文件中设置的主要区别是,"none"变为"null"。
传递设置的另一种方式是使用[环境变量](https://en.wikipedia.org/wiki/environment戥variable)。通过环境变量传递的所有设置都将覆盖在"settings.conf"文件中设置的设置。这允许您在系统服务文件中提供设置,或者使用Docker进行设置的方式。环境变量的名称必须与常规变量的名称完全相同,并以前缀"hc"开头。您可以在"settings.conf"中自定义此前缀,方法是将"env_prefix"设置为您喜欢的内容。` env_prefix`不能通过环境变量设置。对于通常定义为列表的设置(`allowed_networks`等),逗号用作每个值的分隔符(例如`hc_allowed_networks="127.0.0.1192.168.0.0/16`)。


默认情况下,它绑定到"0.0.0.0",即系统上的每个IPv4接口。使用"::"时,将使用所有可用的IPv6和IPv4地址。
端口(整数)
服务正在侦听的端口。默认情况下,它使用3218,但如果需要,可以更改它。前一个设置'listenport'仍然有效,但已弃用。请相应地更改您的设置。将此选项设置为"0"时,将在启动时使用并记录动态端口。这可能只在_standalone模式下有用,并且没有防火墙限制。
basepath(string)
可以将configurator.py放在其他地方。将"basepath"设置为类似于`"/home/homeassistant/.homeassistant"`,无论您从何处运行配置程序,它都将从那里开始提供文件。如果计划使用systemd运行配置程序,则需要执行此操作。
使用ssl时,请在此处设置ssl文件的路径。这类似于在Home助手中可以执行的SSL设置。
hass_api(string)
配置程序从正在运行的Home助手实例中获取一些数据。如果api无法通过默认url获得,请修改此变量以解决此问题。例如,"http://192.168.1.2:8123/api/"。如果将其设置为"无",配置程序将在"独立"模式下启动。
"事件观察者"需要直接访问Home助手的WebSocket API。使用此选项可以在"事件观察者"对话框中的URL前面加上正确的地址。例如,"wss://hass.example.com/api/websocket"。如果不设置此选项,配置程序将使用"hass_u api"的值,该值可能并不总是正确的值。
hass_u api_u password(string)
如果计划使用api函数(重新加载内容、获取实体和服务等),则必须设置api密码。未经验证,禁止调用Home助手的API。既支持旧式的"api_u密码",也支持新的"长寿命访问令牌"(https://developers.home assistant.io/docs/en/auth_u api.html长寿命访问令牌)(您可以在http://your-hass-address.com/profile的配置文件页上创建这些令牌)。
ignore_ssl to`true`可在连接到Home assistant API时禁用SSL验证(在获取实体等时,不在浏览器中)。如果主助手配置为ssl,但configurator通过IP访问它,在这种情况下,SSL验证将失败。
35;用户名(字符串)
如果要启用[http基本身份验证](https://en.wikipedia.org/wiki/basic_access_authentication),可以在此处设置所需的用户名。不允许使用`:`字符。
密码(字符串)
设置应用于身份验证的密码。只有在设置了"username"和"password"时,才会启用身份验证。您可以将密码作为前缀为{sha256}的sha256散列提供。例如,"password="test"`在功能上等同于"password="{sha256}9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b822cd15d6c15b0f00a08"`。哈希将自动转换为小写。使用哈希提供了额外的安全性,在您的配置中不会以明文形式公开实际密码。
凭据(字符串)
现在不推荐使用"用户名:密码"形式的凭据,应将其从配置中删除。替换为指定"username"和"password"。不过,它仍然可以确保向后兼容。
允许的网络(列表)
通过将允许的IP地址/网络添加到列表来限制对配置程序的访问,例如"允许的网络=["192.168.0.0/24","172.16.47.23"]`。如果您正在使用配置程序的[hass.io加载项](https://www.home-assistant.io/addons/configurator/),将Docker网络"172.30.0.0/16"添加到此列表中。
允许的域
允许配置程序访问与指定域的DNS查找结果匹配的客户端IP添加。
禁止的IP(列表)
静态禁止的IP地址列表,例如,"禁止的ips=["1.1.1.1","2.2.2.2"]`
banlimit(integer)
在n次登录尝试失败后禁止ips。重新启动服务以重置禁止。默认值"0"禁用此功能。`必须设置凭据才能正常工作。
此功能要求在运行配置程序的系统上安装[gitpython](https://gitpython.readthedocs.io)

要将本地提交推送到远程存储库,必须手动添加远程:`git remote add origin ssh://somehost:/user/repo.git`
验证,允许运行配置程序的用户在没有任何交互的情况下推送(例如使用ssh pubkey身份验证)。
dirsfirst(bool)
如果设置为"true",目录将显示在顶部。
sesame(string)
如果设置为"somesecretkeynobodycangues",您可以从任何IP浏览到"https://your.configurator:3218/somesecretkeynobodycangues",它将从"禁止的IP"列表中删除(以防以前被禁止),并添加到"允许的网络"列表中。处理完请求后,您将自动重定向到配置程序。把这看作是通过提供一个秘密密钥(打开芝麻)动态地允许来自不受信任的IP的访问!②)记住,一旦IP被添加,您必须重新启动配置程序或通过"网络状态"手动删除IP才能撤消访问。
sesame_Totp_Secret(string)
除了"sesame"令牌之外,您还可以指定一个[base32]编码的字符串(https://en.wikipedia.org/wiki/base32)作为基于时间的otp(一次性密码)ip白名单的令牌。它的工作原理与普通的"sesame"类似,但是白名单IP的请求路径每30秒就会更改一次。你可以在大多数可用的otp应用程序(google authenticator等)中添加"sesame-totp-u-secret",只需将6位数字附加到可以访问你的配置程序的uri中。为此,必须安装[Pyotp]模块。
verify_hostname(string)
http请求包括已向其发出请求的主机名。为了提高安全性,可以将此参数设置为"yourdomain.example.com"。这将检查请求中的主机名是否与您期望的主机名匹配。如果不匹配,将发送"403禁止"响应。因此,除非攻击者知道正确的主机名,否则扫描IP地址的攻击者将无法连接。但是要小心这个选择,因为它禁止您直接通过IP访问配置程序。
家庭助理设置中的通知服务,应用于发送通知,例如"notify.mytelegram"。默认值为"persistent_notification.create"。不要更改"notify_service_default"变量的值!如果您的"hass_api_password"、"sesame"或"password"密码看起来不安全,则会通知您。此外,每次"sesame"令牌用于白名单时,都会发送一个带有访问IP的通知。若要禁用此功能,请将值设置为"false"。

(仅当设置了"credentials"时)检查凭据
-失败:重试"banlimit"次,之后返回错误420(除非在未设置任何身份验证头的情况下重试,例如浏览器的"专用"选项卡)
-成功:继续
2。检查客户端IP地址是否在"禁止的IP"中-是:返回错误420
-否:继续
3。检查客户端IP地址是否在"允许的"网络中
-否:返回错误420
-是:继续并显示配置程序的用户界面

运行时。不过,请记住,这些更改不是持久的,在重新启动服务时将丢失。api可以通过"网络状态"菜单中的ui使用,也可以通过发送post请求使用。一个可能的用例可以通过编程方式允许从动态公共IP进行访问,这对于某些涉及ssl的设置是必需的。


网络=1.2.3.4"-x post http://127.0.0.1:3218/api/allowed/u-networks `
-`api/违禁的网络`
`
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `0.1:3218/API/禁用IP `

助手
家庭助手有[panel_iframe]组件(https://home-assistant.io/components/panel_iframe/)。这样就可以将配置程序直接嵌入到家庭助理中,允许您通过家庭助理前端修改配置。
示例配置如下:

``yaml
面板框架:
配置程序:
标题:配置程序
图标:mdi:扳手
url:http://123.123.132.132:3218
````
嵌入家庭助理。如果您不通过要求基于客户端IP地址的身份验证和/或阻止来限制访问,那么您的配置将暴露在Web上!

这里有三个选项(对于Linux),但还有更多选项,具体取决于您的用例。

1。使用命令'nohup sudo./configurator.py&;`
2将简单分叉到后台。如果您的系统正在使用systemd(这是我们从树莓皮上你会发现什么,有一个[模板文件](https://github.com/danielperna84/hass-configurator/blob/master/hass-configurator.systemd)您可以使用并应用与[家庭助理文档](https://home assistant.io/getting started/autostart systemd/)中所述相同的过程来集成它。如果使用此方法,则必须根据环境设置"basepath"变量。
3。如果您的系统上运行了[supervisor](http://supervisord.org/),[hass poc configurator.supervisor](https://github.com/danielperna84/hass-configurator/blob/master/hass-configurator.supervisor)将是您可以用来控制配置程序的示例配置。
4。一个名为[tmux]的工具(https://tmux.github.io/),应该与最新的aio安装程序一起预装。
5.一个叫做[screen]的工具(http://ss64.com/bash/screen.html)。如果你的系统上还没有安装它,你可以通过"sudo apt get install screen"来获取它。安装后,通过执行'screen'启动屏幕会话。然后导航到home assistant目录并启动配置程序,如上文所述。按"ctrl+a",然后按"ctrl+d",将屏幕会话置于后台。
要继续屏幕会话,登录计算机并执行"screen-r"。

[存储库](https://github.com/causticlab/hass-configurator-docker)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从thymeleaf表单保存地址对象和用户对象的列表?   序列化java。时间使用Jackson将localdate转换为json   java删除LinearLayout和子级之间的空间   具有内存大小限制的Java队列   java尝试在freemarker中创建min(a,b)函数失败   askQuestion()方法中的Java逻辑问题   在Java客户端中接受服务器的自签名ssl证书   java如何正确更新字符串数组?   java如何使多个方法调用充当一个事务性工作单元   swing如何创建可滚动的Java框?   java如何使用SearchView在多个单词之间搜索?   初始化启动层java时出错。lang.module。FindException:模块javafx。找不到图形   java struts对隐藏字段的转义形式验证   用于构建FEM 3D解算器的java JOGL与JAVA3D   java mvn安装忽略hibernate映射文件   在C++和java之间使用JNI通信时,我在哪里保存“这个”?   java无法使用计时器重新绘制窗口   java我遇到一个找不到符号的错误,我无法解决   IntelliJIdea生成实体时java面临的问题   java在动态文本的末尾添加三个点