跳转至

ESPurna项目

ESPurna简介

今天为大家介绍的是`ESPurna`固件。其实在之前介绍彩光灯带时,就很想向大家推荐这个固件了。这个固件出色的地方在于其极高的稳定性、漂亮而易用的界面和其极为人性化的一些隐藏设定,另外,可也以接入各类传感器。为什么说适合新手呢?看图就明白了。

demo.png

项目地址:https://github.com/xoseperez/espurna

使用方法

固件烧录方法

以下是无需 Arduino 和 PlatformIO 的刷机方法:

  1. 如果你已经刷好了 Tasmota,直接在 Tasmota 的固件更新界面上传下载好的固件 (bin),重启以后就变成 ESPurna 了

  2. 没有 Python 的话需要先安装 Python,请在 https://www.python.org/downloads/windows/ 下载;(安装后须重新启动)

  3. 打开命令提示符,执行
    pip install pyserial
    
  4. 下载附件esptool.zip,解压到方便使用的位置,也可以使用nodemcu-pyflasher ,下载工具有很多,本质上都是基于esptool封装的,选择自己合适的即可

  5. 连接开关、编程器和电脑,打开命令提示符,切换到解压到的位置,执行(D:\Downloads\espurna.bin 是固件的地址):

    python esptool.py -b 115200 --port COM3 write_flash --flash_freq 80m --flash_mode dout 0x000000 D:\Downloads\espurna.bin
    
    等待烧写完成

如果刷机后没有出现热点,尝试长按按钮10秒恢复设置;默认密码是 fibonacci,(IP:http://192.168.4.1 后台默认用户:admin,默认密码:fibonacci 可以自己改为:admin,密码:admin888)可在配置文件修改;进入管理页面,这里推荐使用chrome,其他浏览器不排除提示密码错误的问题。

修改配置

接下来着重介绍一下固件里值得修改的选项,这里推荐使用vscode+platform,功能要比ArduinoIDE强大很多

  • 修改刷机后的默认设置
  • 传感器针脚设置
  • 传感器防抖动
  • DHT22 的小数位数
  • 接入多个传感器(温湿度、光照、人体、物理开关)
  • 禁用好心办坏事的崩溃检测

下面从文件入手介绍各个可修改的项目。(前面为设置项,后面是推荐修改为的值,不是原来的值)

defaults.h

只有一处建议修改:这是设置默认指示灯状态为“继电器状态”,相信大多数人都会使用这种模式吧。

#define LED1_MODE           LED_MODE_FOLLOW

general.h

(1)默认管理员密码。不受强密码规则限制。注意:如果这里设置少于8位,平时使用没有问题,但是开关处在热点模式时,连接密码也是这个,所以开关就连不上了。

#define ADMIN_PASS              "fibonacci"
(2)首次登录不强制修改密码。
#define WEB_FORCE_PASS_CHANGE   0
(3)禁用系统崩溃检查。以免系统开启自我保护模式,禁用大部分功能,导致必须重置。
#define SYSTEM_CHECK_ENABLED    0
(4)自动连接WiFi。
#define WIFI1_SSID              "wuxianwang"
#define WIFI1_PASS              "mimamima"
(5)设置中国时区。
#define NTP_TIME_OFFSET         8

sensors.h

接下来还有一些重要设置,这些设置决定了编译完成的固件所支持的传感器类型。

首先请搜索“_SUPPORT”,找到你需要接入的传感器,把后面的数字改为 1!

例如,要接入光线传感器,则为:

#define BH1750_SUPPORT                  1
并不是只能接一个,只要针脚够用,想接几个接几个!为了避免针脚冲突,在相应传感器的 SUPPORT 项下面,会有 PIN 设置,设置传感器的针脚。

(1)

#define SENSOR_READ_INTERVAL                6               // 默认的读取间隔
#define SENSOR_READ_MIN_INTERVAL            0               // 最小的读取间隔(可以通过TELNET和审查元素修改)
#define SENSOR_READ_MAX_INTERVAL            3600            // 最大的读取间隔
(2)
#define TEMPERATURE_MIN_CHANGE              0.0            

#define HUMIDITY_MIN_CHANGE                 0.2               
温度和湿度的上报最小改变值,在此范围内变化时不会上报数据,防止数据抖动。

应用示例