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

Tasmota + Berry + LVGL 可用于:

  • 快速原型设计 GUI。

  • 缩短更改和微调 GUI 的周期。

  • 通过定义可重用的复合对象,以更抽象的方式建模 GUI,利用 Berry 的语言特性,如继承、闭包、异常处理等。

  • 使 LVGL 更易于被更广泛的受众使用。无需了解 C 即可在嵌入式系统上创建漂亮的 GUI。

一个与 OpenHASP 兼容的更高级接口也在开发中。


那它看起来是什么样子的?

简而言之: 类似于 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")   # 为按钮设置标签

我该如何使用它?

您可以在不到 10 分钟内在 M5Stack 或同等设备上开始使用,请参阅此简短教程

我在哪里可以找到更多信息?