CodeLab ❤️ IoT
文章目录
近期CodeLab在IoT方向构建了一些工具。和大多数IoT项目相似,我们的工作也围绕MQTT协议展开。
CodeLab之后除了对外提供基础工具,也希望能对外提供基础服务。我们的工具链和服务都基于开源项目构建。
我们近期的工作包括:
- Scratch IoT Extension
- codelab-adapter iot extension
- IoT server: iot.codelab.club
Scratch IoT Extension
Scratch IoT Extension允许接入所有支持wss的mqtt服务。Scratch IoT Extension基于MQTT.js构建。
在积木设计上,我们希望IoT积木尽量与EIM积木保持一致。原先想把publish替换为broadcast,后来还是决定保留mqtt用户习惯的词汇。 关于这一点,我们还没有想清楚,欢迎交流和吐槽。
Scratch IoT Extension是通用的。 你可以使用CodeLab提供的mqtt服务,也可以使用自建的mqtt服务(或第三方服务)来替代积木里默认的地址:wss://guest:test@iot.codelab.club:8084/mqtt
, 关于这串地址的含义参考mqtt url。 guest/test分别是测试用户名和密码。
如果你需要独立的用户而不是公共测试用户,欢迎与我们联系,它是免费的。
测试
我们来测试一下Scratch IoT Extension,让它与外部程序协同使用。有很多mqtt的测试工具可以选择,诸如
我选择python社区的工具hbmqtt。
首先安装它: pip3 install hbmqtt
订阅从Scratch发来的消息
hbmqtt_sub --url mqtt://guest:test@iot.codelab.club -t "/scratch3_pub"
发布消息给Scratch3.0
hbmqtt_pub --url mqtt://guest:test@iot.codelab.club -t "/scratch3_sub" -m "hello from hbmqtt_pub"
当然你可以选择任意的mqtt client与Scratch IoT Extension通信,无论它来自树莓派还是来自esp8266,都没有问题。
CodeLab关注开放性和通用性。
codelab-adapter iot extension
extension_iot.py的源代码已经放出。 它将在codelab-adapter 0.8.0中作为内置插件。
目前它已经能够与Scratch IoT Extension
协同工作:
extension_iot.py不是开箱即用的那类插件(Cozmo/usbMicrobit是开箱即用的),我们在其中构建了pub/sub的基本例程。只需微调。加入你自己的业务代码(一般和硬件或本地服务有关),处理收发的消息。你可以将任何设备消息化,进而将其积木化。
添加业务代码的位置,我已经在源码中注释了。
你可以把extension_iot.py当作类似extension_eim.py的插件,它本身只是处理消息,没有实际用途,但通过微调,它可以成为任何东西,我们在extension_python_kernel.py和extension_vector.py展示了EIM(everything is a message)概念的威力。 我们将MQTT视为一个信道,在编程方面,我们会延续EIM的风格。
本周,我会给出一个具体例子: 在树莓派中使用extension_iot.py,定制出extension_iot_rpi.py, 而后者是可以实际服务于硬件教学的插件。 在这个例子中我们将展示,如何在几天内快速构建一个教学产品,可以直接推向最终用户,它甚至包括了管理功能(如远程故障处理和升级)!
目前有两家公司会与我们一起推进树莓派方向的工作。也欢迎更多人一起加入,把树莓派改造为一个开放、通用、可扩展的硬件教学平台。
这些工作充分展示了adapter的开放架构如何帮助构建生态。
IoT server
CodeLab构建了自己的server: iot.codelab.club
原本想找一个公开可用的mqtt server(MQTT Messaging Broker),却没有找到合适的,要么就是注册很烦,要么就是限制很多,要么就是不兼容开放标准,要么就是服务器在国外,访问不方便,不得已,只好自建了一个。
iot.codelab.club
提供了mqtt测试用户:
用户名: guest
, 密码: test
完整的mqtt url为:mqtt://guest:test@iot.codelab.club
你可以使用任何mqtt client连接它, mqtt python client的例子在这里:
|
|
如果你想在micropython的兼容板中接入它,使用umqtt即可。
如果你需要iot.codelab.club
的独立用户,可以向我们免费申请。
enjoy it~
参考
文章作者 种瓜
上次更新 2019-02-25