
MicroBlocks 是快乐制造平台 – 阿立
之前在 MicroBlocks 分享会上演示了如何使用 MicroBlocks 制作物联网设备(兼容 Home Assistant)。 将 MicroBlocks 与 Home Assistant 结合, 提供了一条通往 CodeLab 可编程空间 的理想途径。
本文将分享演示中涉及的代码,并提供教程帮助大家复现之前的演示。
接下来的内容分为以下 3 个部分:
Home Assistant 是个成熟的开源项目, 由于社区的努力, 每天都在变得更好。
要在本地运行 Home Assistant, 有许多种方式, 最简单的方式可能是使用 Docker。
首先安装 Docker, 把 Docker 看成一个普通软件安装在本地即可。
安装好 Docker 之后, 在命令行里运行以下命令,安装并启动 Home Assistant:
|
|
等待这条命令运行完, Home Assistant 就在本地运行起来了。
在浏览器中打开 http://127.0.0.1:8123。 第一次打开,需要填写一些信息,完成后便可进入 Home Assistant 控制面板。
如果需要管理正在运行的 Home Assistant, 以下命令或许有帮助:
docker start homeassistant: 启动 Home Assistantdocker stop homeassistant: 停止 Home Assistantdocker ps: 显示正在运行和已停止的 docker 容器为了让 MicroBlocks 编程的物联网设备能够兼容 Home Assistant(在 Home Assistant 中管理它们), 我们需要在 Home Assistant 与设备之间建立沟通桥梁,有多种方式可以做到这点,出于以下原因,我选择 MQTT 作为通信管道:
为了建立 Home Assistant 与设备之间的通信管道,需要进行以下 2 个操作:
让我们先进行第 1 个操作, 在 Home Assistant 将 MQTT 集成进来。
首先打开集成页面(/config/integrations).

输入mqtt, 选择 MQTT。

我们需要一个 MQTT broker 和账号, 在这个实验里我使用的是 CodeLab MQTT broker
将这些信息填到页面:

至此就完成了在 Home Assistant 里配置 MQTT 的工作。
提醒: 建议使用独立的 MQTT 账号,如果你使用公开的账号(就像本文里的), 每个拥有用户名/密码的人都能够控制你的设备! 如果你需要独立的 MQTT 账号, 可以给我发邮件索要。 由于 MQTT 是标准协议,你也可以部署自己的 MQTT 服务器(MQTT broker)。
接下来让我们使用 MicroBlocks 为物联网设备编程。
由于设备需要通过网络与 MQTT 服务器通信,你需要准备一个能够连接网络的编程板,我使用的是 ESP32。
在 MicroBlocks 中为板子刷入固件后,就可以开始编程了。
建议从这个程序模版开始 Demo template

我们先让这段程序运行起来,然后简单解释下这段程序做了什么。
为了让它运行起来,需要填入 wifi 信息。完成后就可以运行程序了!
程序运行之后,设备就会连到 MQTT 服务器上,由于 Home Assistant 也连到了同一个 MQTT 账号,于是我们就可以在 Home Assistant 上管理这个设备了!
MicroBlocks 会实时将程序刷到设备里,所以你可以随时断开 usb 连接。只要设备通上电,它就会运行这些程序。
提醒: 如果你不想使用本文公开的 MQTT 账号,你还需要填入你自己的 MQTT 账号信息。如果你使用自己的 MQTT 账号,也要修改 loop 积木里头的 MQTT 积木。
顺利完成了以上工作后,设备应该已经接入到 Home Assistant。
怎么找到设备呢?
打开实体注册表(/config/entities), 你将看到这两个设备:

设备既然已经接入 Home Assistant, 接下来我们就可以把它们放到仪表盘上。
在仪表盘 里添加你要的设备(实体):

完成后你就可以在仪表盘上管理风扇,并查看温度。

前边 MicroBlocks 的程序,为何能够将设备注册到 Home Assistant 里, 并允许 Home Assistant 管理它呢?
答案是这个 MicroBlocks 程序实现了 Home Assistant 兼容的 MQTT 协议。
Home Assistant 公开了一份MQTT 协议, 任何实现这个 MQTT 协议的程序(无论是否运行在硬件上), 都能够与 Home Assistant 交互, 包括以下交互:
通过查看 MicroBlocks 程序的自定义积木,对照着 Home Assistant 的 MQTT 协议,你可以弄懂具体是怎么实现的。
弄懂这些以后,你就可以将任何设备接入进来了!
为了帮助你弄懂它们,让我们进一步深入到细节里。
MicroBlocks 程序管理着两个设备(典型的做法可能是只管理一个设备):
展开 loop 积木, 你就能够看到来自 Home Assistant 的 MQTT 消息是如何控制风扇的:

温度传感器相关的代码在这里:

为了让你的物联网系统长期运行,你需要将 Home Assistant 跑在一个不关机的设备上,社区里流行的做法是跑在树莓派上。
提醒: 如果你在安装 Home Assistant 操作系统 时遇到困难(通常是因为没有翻墙导致的), 可以试试采用 Docker 安装, 和前头一样,安装完 Docker 之后, 只需一行命令即可安装 Home Assistant。
完成之后, 在浏览器里访问 http://树莓派的IP:8123, 即可访问到树莓派里的 Home Assistant。
Home Assistant 开放了它的 API:
使用 MicroBlocks 将设备变为 Home Assistant 兼容设备之后,我们就可以使用 Home Assistant 的 API 驱动这些设备。通过简单包装这些 API(诸如使用 Python/Snap/Scratch), 就可以将可编程空间变为一个教学环境。
由于这些 API 整洁而通用, 你可以将它们投喂给大语言模型, 这样一来, 就可以让 AI 来管理你的可编程空间了。
如果你想探索 AI 与物联网之间的协作,我最推荐的做法是, 把这些 API 包装为 LangChain 的 Agent(Tool), 然后让 GPT-3.5/GPT-4 操作它。
还有一个与 AI 有关的有趣方向是,将 Home Assistant 语音/意图(今年是 Home Assistant 的语音之年)与大语言模型结合。

MicroBlocks 是快乐制造平台 – 阿立
之前在 MicroBlocks 分享会上演示了如何使用 MicroBlocks 制作物联网设备(兼容 Home Assistant)。 将 MicroBlocks 与 Home Assistant 结合, 提供了一条通往 CodeLab 可编程空间 的理想途径。
本文将分享演示中涉及的代码,并提供教程帮助大家复现之前的演示。
接下来的内容分为以下 3 个部分:
Home Assistant 是个成熟的开源项目, 由于社区的努力, 每天都在变得更好。
要在本地运行 Home Assistant, 有许多种方式, 最简单的方式可能是使用 Docker。
首先安装 Docker, 把 Docker 看成一个普通软件安装在本地即可。
安装好 Docker 之后, 在命令行里运行以下命令,安装并启动 Home Assistant:
|
|
等待这条命令运行完, Home Assistant 就在本地运行起来了。
在浏览器中打开 http://127.0.0.1:8123。 第一次打开,需要填写一些信息,完成后便可进入 Home Assistant 控制面板。
如果需要管理正在运行的 Home Assistant, 以下命令或许有帮助:
docker start homeassistant: 启动 Home Assistantdocker stop homeassistant: 停止 Home Assistantdocker ps: 显示正在运行和已停止的 docker 容器为了让 MicroBlocks 编程的物联网设备能够兼容 Home Assistant(在 Home Assistant 中管理它们), 我们需要在 Home Assistant 与设备之间建立沟通桥梁,有多种方式可以做到这点,出于以下原因,我选择 MQTT 作为通信管道:
为了建立 Home Assistant 与设备之间的通信管道,需要进行以下 2 个操作:
让我们先进行第 1 个操作, 在 Home Assistant 将 MQTT 集成进来。
首先打开集成页面(/config/integrations).

输入mqtt, 选择 MQTT。

我们需要一个 MQTT broker 和账号, 在这个实验里我使用的是 CodeLab MQTT broker
将这些信息填到页面:

至此就完成了在 Home Assistant 里配置 MQTT 的工作。
提醒: 建议使用独立的 MQTT 账号,如果你使用公开的账号(就像本文里的), 每个拥有用户名/密码的人都能够控制你的设备! 如果你需要独立的 MQTT 账号, 可以给我发邮件索要。 由于 MQTT 是标准协议,你也可以部署自己的 MQTT 服务器(MQTT broker)。
接下来让我们使用 MicroBlocks 为物联网设备编程。
由于设备需要通过网络与 MQTT 服务器通信,你需要准备一个能够连接网络的编程板,我使用的是 ESP32。
在 MicroBlocks 中为板子刷入固件后,就可以开始编程了。
建议从这个程序模版开始 Demo template

我们先让这段程序运行起来,然后简单解释下这段程序做了什么。
为了让它运行起来,需要填入 wifi 信息。完成后就可以运行程序了!
程序运行之后,设备就会连到 MQTT 服务器上,由于 Home Assistant 也连到了同一个 MQTT 账号,于是我们就可以在 Home Assistant 上管理这个设备了!
MicroBlocks 会实时将程序刷到设备里,所以你可以随时断开 usb 连接。只要设备通上电,它就会运行这些程序。
提醒: 如果你不想使用本文公开的 MQTT 账号,你还需要填入你自己的 MQTT 账号信息。如果你使用自己的 MQTT 账号,也要修改 loop 积木里头的 MQTT 积木。
顺利完成了以上工作后,设备应该已经接入到 Home Assistant。
怎么找到设备呢?
打开实体注册表(/config/entities), 你将看到这两个设备:

设备既然已经接入 Home Assistant, 接下来我们就可以把它们放到仪表盘上。
在仪表盘 里添加你要的设备(实体):

完成后你就可以在仪表盘上管理风扇,并查看温度。

前边 MicroBlocks 的程序,为何能够将设备注册到 Home Assistant 里, 并允许 Home Assistant 管理它呢?
答案是这个 MicroBlocks 程序实现了 Home Assistant 兼容的 MQTT 协议。
Home Assistant 公开了一份MQTT 协议, 任何实现这个 MQTT 协议的程序(无论是否运行在硬件上), 都能够与 Home Assistant 交互, 包括以下交互:
通过查看 MicroBlocks 程序的自定义积木,对照着 Home Assistant 的 MQTT 协议,你可以弄懂具体是怎么实现的。
弄懂这些以后,你就可以将任何设备接入进来了!
为了帮助你弄懂它们,让我们进一步深入到细节里。
MicroBlocks 程序管理着两个设备(典型的做法可能是只管理一个设备):
展开 loop 积木, 你就能够看到来自 Home Assistant 的 MQTT 消息是如何控制风扇的:

温度传感器相关的代码在这里:

为了让你的物联网系统长期运行,你需要将 Home Assistant 跑在一个不关机的设备上,社区里流行的做法是跑在树莓派上。
提醒: 如果你在安装 Home Assistant 操作系统 时遇到困难(通常是因为没有翻墙导致的), 可以试试采用 Docker 安装, 和前头一样,安装完 Docker 之后, 只需一行命令即可安装 Home Assistant。
完成之后, 在浏览器里访问 http://树莓派的IP:8123, 即可访问到树莓派里的 Home Assistant。
Home Assistant 开放了它的 API:
使用 MicroBlocks 将设备变为 Home Assistant 兼容设备之后,我们就可以使用 Home Assistant 的 API 驱动这些设备。通过简单包装这些 API(诸如使用 Python/Snap/Scratch), 就可以将可编程空间变为一个教学环境。
由于这些 API 整洁而通用, 你可以将它们投喂给大语言模型, 这样一来, 就可以让 AI 来管理你的可编程空间了。
如果你想探索 AI 与物联网之间的协作,我最推荐的做法是, 把这些 API 包装为 LangChain 的 Agent(Tool), 然后让 GPT-3.5/GPT-4 操作它。
还有一个与 AI 有关的有趣方向是,将 Home Assistant 语音/意图(今年是 Home Assistant 的语音之年)与大语言模型结合。