Tasmota 和 Berry¶
什么是 Tasmota?¶
Tasmota 是一个广泛使用的开源固件,适用于基于 ESP8266 和 ESP32 的设备。它支持多种设备、传感器以及与家庭自动化和云服务的集成。Tasmota 固件每月下载量超过 200,000 次,并拥有一个活跃且不断增长的社区。
Tasmota 提供对数百种支持设备的访问,全面支持 MQTT、HTTP(S),并与主要的家庭自动化系统集成,支持多种传感器、红外、射频、Zigbee、蓝牙、AWS IoT、Azure IoT、Alexa 等。
什么是 Berry?¶
Berry 是一种超轻量级、动态类型的嵌入式脚本语言。它专为低性能嵌入式设备设计。Berry 的解释器包括一个单遍编译器和基于寄存器的虚拟机,所有代码均用 ANSI C99 编写。Berry 提供了与 Python 非常相似的语法,并受 LUA 虚拟机启发。它已完全集成到 Tasmota 中。
Berry 的亮点¶
Berry 具有以下优势:
轻量级:一个高度优化的解释器,资源占用极少,非常适合在微处理器中使用。
快速:优化的单遍字节码编译器和基于寄存器的虚拟机。
强大:支持命令式编程、面向对象编程和函数式编程。
灵活:Berry 是一种动态类型脚本,旨在嵌入应用程序中。它可以为主机系统提供良好的动态扩展能力。
简单:简单自然的语法,支持垃圾回收,并易于使用 FFI(外部函数接口)。
节省 RAM:通过编译时对象构造,大多数常量对象存储在只读代码数据段中,因此解释器启动时的 RAM 使用量非常低。
所有功能详见 Berry 参考手册。
为什么选择 LVGL + Tasmota + Berry?¶
2021 年,Tasmota 为基于 ESP32 的设备添加了对 LVGL 的全面支持。它还引入了 Berry 脚本语言,这是一种类似于 Python 的小型语言,已完全集成到 Tasmota 中。
现在,Berry 语言中提供了对 LVGL 的全面映射,类似于 Micropython 的映射。它允许使用超过 98% 的 LVGL 功能。还可以在 Berry 中编写自定义小部件。
支持的版本:LVGL v8.3.0, LodePNG v20201017, Freetype 2.10.4
那它看起来是什么样子的?¶
简而言之: 类似于 MicroPython,它非常像 C API,但对于 LVGL 组件是面向对象的。
让我们直接看一个例子!
一个简单的例子¶
lv.start() # 启动 LVGL
scr = lv.scr_act() # 获取默认屏幕
btn = lv.btn(scr) # 创建按钮
btn.center()
label = lv.label(btn) # 在按钮中创建标签
label.set_text("Button") # 为按钮设置标签