home assistant 配置microsoft todo(微软待办)同步

前提条件:
1.home assistant 系统有HACS。
2.有微软账号。
3.知道怎么编辑configuration.yaml文件。

操作:

第一步(添加插件)

在HACS添加仓库镜像 https://github.com/black-roland/homeassistant-microsoft-todo,类别为 “集成”(integration)

添加完后,在商店搜索Microsoft To Do

第二步(添加配置)

在HACS配置文件中,添加或修改配置如下

homeassistant:
    internal_url: http://localhost:8123
# 配置microsoft_todo 的API接口参数。
calendar:
  - platform: microsoft_todo
    client_id: e32da15d-9e6a-48c3-8781-69a2c43dd0a4
    client_secret: "wPk8Q~mbyOeqar~tK1TWIFAz~BoeVOQ4FEUg9bQo"

注意internal_url 前面有空格,不懂得可以百度yaml格式。

此处引入端口映射

localhost我们都知道,是本机地址,无法访问的,所以我们还需要在自己的windows电脑上运行
netsh interface portproxy add v4tov4 listenport=8123 connectaddress=[home assistant在浏览器中访问的IP地址] connectport=[home assistant在浏览器中访问的端口]

例子:netsh interface portproxy add v4tov4 listenport=8123 connectaddress=192.168.1.100 connectport=8123
指的是我们原本访问的http://192.168.1.100:8123 ,通过映射后 我们就可以通过http://localhost:8123

第三步(应用配置)

一定要重启home assistant,重启完后,点击通知
在这里插入图片描述
会提示configurator
在这里插入图片描述

这个时候就可以看点击蓝色的configure文字,将会弹出配置对话框
在这里插入图片描述
点击link Microsoft To Do account,将会打开微软登录页面,剩下的就不用说了吧,操作到如下页面提示登录成功就可以把这个登录窗口给叉了。
在这里插入图片描述
叉完以后,再回到配置Microsoft To Do对话框,
点击I AUTHORIZED SUCCESSFULLY 按钮,没有反应多点几次,多点几次肯定还没有反应,我们点击左侧的日历
在这里插入图片描述
就会出现我的日历下的Tasks,如果登录失败,就不会出现这个这个。由于我点击了3次I AUTHORIZED SUCCESSFULLY 按钮,就有3份tasks,这个时候不怕,多等15分钟以后,就只有1份了。

第四步(开发参数查询)

在这里插入图片描述
在开发者工具里面,搜索calendar关键字,可以得到几个实体,这个实体是通过microsoft To Do分类自动生成的。

在这里插入图片描述

第五步(源码优化)

不优化的可以跳过。
由于home assistant 的to do插件是15分钟的轮询时间,对于玩机人员来说肯定是太久了,所以可以修改源码,
文件路径为custom_components\microsoft_todo\calendar.py,修改行数大概为第64行,
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)修改为MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1)
这样就可以把轮询时间修改为1分钟了

修改源码需要重启hass.

第六步(在home assistant 仪表盘上的应用)

type: markdown
content: |-
  {% for task in state_attr('calendar.ren_wu', 'all_tasks') -%}
  - {{ task }}
  {% endfor %}
title: To Do

在这里插入图片描述

第七步(在android app 桌面小部件上的应用)

效果预览:
在这里插入图片描述
在这里插入图片描述

在桌面上添加模板小部件

在这里插入图片描述

这是模板代码:

<font color="#face"><b>待办列表</b></font>
<font color="#8470FF">
{% if state_attr('calendar.ren_wu', 'all_tasks') %}
{% for task in state_attr('calendar.ren_wu', 'all_tasks') -%}
<br>
{{loop.index}}. {{ task }}
{% endfor %}
{% else%}
<br>
----------------------
<br>
这里很干净呀!
<br>
卡片更新时间:{{now().year}}-{{"%02d"% now().month}}-{{"%02d"%now().day}} {{"%02d"% now().hour}}:{{"%02d"%now().minute}}:{{"%02d"%now().second}}
{%endif %}
</font>

---------------------------------------------------------------------------------------

疑惑解答

1.为什么要用映射的方式使用localhost访问hass呢?
因为我的microsoft应用注册的限制,无法对其他IP地址添加http类型的重定向。
microsoft截图
在授权完成,todo 插件能够正常获取到数据了后,就可以把homeassistant.internal_url还原成你原本的值或者注释了。

# homeassistant:
#   internal_url: http://localhost:8123

版权声明:本文为qq_21491871原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。