Skip to content

Jayatubi/esp32weatherclock

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

20240622_181808 20240728_192331 20240623_222231

此版本为最稳定版本6.54版本,其中tianqi6.54为源代码。 images.h为调用的MyLogo、按钮等图形数组文件。 weather_icons.h为天气图标图形数组文件。 ProvincesCities.h为根据心知天气API说明可返回天气的370个中国地级以上城市列表文件。 设备资料路径:www.waveshare.net/wiki/2.13inch_e-Paper_Cloud_Module


下面是主要设备的淘宝链接:


使用说明:

  1. 打开开关(屏幕下方可左右滑动的按钮,向右拨动打开)。
  2. 使用手机WIFI,连接“ESP32-Config”。Screenshot_20240728_225910_Settings
  3. 手机浏览器访问“192.168.4.1”并配置。Screenshot_20240728_230031_Samsung Internet

下面是设备的更新日志:

  • 6.5.4(三代微雪屏版)将 WIFIIconShown 相关的逻辑替换为对 apActive 状态的检查。如果 apActive 为 true,则显示 WiFi 图标;如果 apActive 为 false,则隐藏 WiFi 图标。
  • 6.5.3(三代微雪屏版)只在syncHours时间点检查是否需要同步。在0点时,只进行时间同步,不更新天气信息。如果时间同步失败,则重启设备。
  • 6.5.2(三代微雪屏版)增加串口发送命令set_2359来强制将时间设置为23:59,日期为2024.07.27和星期为FRI的代码,以便测试午夜的过渡。
  • 6.5.1(三代微雪屏版)增加串口命令factory_reset为出厂模式(日志功能关闭、清空所有参数)。分类并添加全部心知天气图标。
  • 6.5.0(三代微雪屏版)所有配置可二次配置时读取。
  • 6.4.9(三代微雪屏版)解决00.00更新不正确问题。
  • 6.4.8(三代微雪屏版)新增自定义更新时间和天气功能。
  • 6.4.7(三代微雪屏版)生日信息由配置网页输入。
  • 6.4.6(三代微雪屏版)确保日期更新逻辑正确处理闰年和月底情况。在整点同步时间和天气信息时,确保只执行一次同步更新。
  • 6.4.5(三代微雪屏版)增加全局变量 logEnabled 来控制日志记录功能是否开启。增加休眠和唤醒时打印串口。
  • 6.4.4(三代微雪屏版)避免 syncInterval 和 syncHours 之间的潜在冲突,同步逻辑仅在特定的小时点(0, 3, 6, 9, 12, 15, 18, 21点)进行。
  • 6.4.3(三代微雪屏版)实现网络校时时将时间精确到秒。
  • 6.4.2(三代微雪屏版)解决24点日期和星期没有更新问题。
  • 6.4.1(三代微雪屏版)增加ProvincesCities.h,在用户配置页面上动态生成地区列表,避免用户输入错误。
  • 6.4(三代微雪屏版)在用户配置页面上动态生成 WiFi 列表,供用户选择并配置WiFi网络,网络不需要填写,避免用户输入错误,先扫描达到预加载效果。
  • 6.3(三代微雪屏版)增加日志功能。日志文件将定期检查并在超过指定大小时循环写入,从而确保日志文件不会无限制增长,并在配置网页http://192.168.4.1/logs里查看。
  • 6.2.1(三代微雪屏版)尝试使用ESP32的唤醒功能(Wakeup Source)来确保按钮按下时能够唤醒设备,休眠状态下按钮中断仍然有效。
  • 6.2(三代微雪屏版)增加电量标记。引入了一个互斥锁 epdMutex,并在 displayBatteryStatus 和 updateDisplay 函数中使用 std::lock_guardstd::mutex 来锁定和解锁 epdMutex。这样可以确保在同一时间只有一个函数可以调用 EPD_2in13_V4_Display_Partial(BlackImage);,从而避免屏幕变淡的问题。
  • 6.1(三代微雪屏版)把birthday设置为变量,并解决IO12按下后birthday不显示问题。双击IO12检测显示三天天气,解决按键抖动问题。
  • 6.0(三代微雪屏版)增加IO12同为外部中断,即使ESP32进入休眠模式,仍然可以响应按钮按下显示未来三天天气。增加WIFI配置图标,当图标出现时,可配置,反之消失时,AP关闭。
  • 5.9.6(三代微雪屏版)更新时间和天气的时间节点: {0, 3, 6, 9, 12, 15, 18, 21},每3小时一次。
  • 5.9.5(三代微雪屏版)稳定版,增加Pressr按钮显示,提示用户未来三天天气可查询。增加Sand、Partlycloudy天气图标。
  • 5.9.4(三代微雪屏版)轻度休眠模式下保持AP和HTTP服务器的正常工作。
  • 5.9.3(三代微雪屏版)清除显示区域,以防止内容叠加。轻度睡眠调整:AP关闭逻辑修复:确保在AP启动5分钟后关闭AP。完整刷新调整:在每6小时(0:00、6:00、12:00、18:00)获取时间和天气数据后执行完整刷新。
  • 5.9.2(三代微雪屏版)增加了 rebootCounter 的存取操作。在 setup 函数中读取重启计数器,如果超过3次则重置参数。如果 WiFi 连接失败超过10次,清空参数并重启。如果已经连接到 WiFi,但获取时间或天气失败超过5次,增加重启计数并重启。如果重启次数超过3次,重置参数。
  • 5.9.1(三代微雪屏版)将全局刷新和数据更新的时间点设定为每天的 0:00、6:00、12:00 和 18:00。确保在非更新时间点,只进行局部刷新以节约资源。
  • 5.9(三代微雪屏版)每天00:02自动重启,避免切换天气时花屏。
  • 5.8.9(三代微雪屏版)每小时获取时间和天气数据后,将进行全局刷新屏幕,以确保更新后的数据完整显示。
  • 5.8.8(三代微雪屏版)原来时间和天气各自刷新各自的,就增加了次数和电力。为了节约电力,连接网络的逻辑修改:首次连接网络获取数据都可以是任意时间,此后每整数时间(0分0秒)连接一次网络,获取互联网时间,获取天气数据,更新数据,全局刷新一次屏幕。这样就做到连网和刷新都是最小。时间部分的局部刷新仍然是1分钟1次,其余所有的时间ESP32轻度休眠,注意AP是首次启动后5分钟才关闭。
  • 5.8.7(三代微雪屏版)解决加粗导致时间竖线问题。
  • 5.8.6(三代微雪屏版)每次主循环完成后,ESP32进入深度睡眠模式,并在1分钟后唤醒。通过esp_sleep_enable_timer_wakeup设置唤醒定时器。
  • 5.8.5(三代微雪屏版)取消秒数,局部刷新每分钟1次更省电。
  • 5.8.4(三代微雪屏版)减少串口输出更省电。
  • 5.8.3(三代微雪屏版)如果一直无法连接WIFI,则清空三个参数,进入SETUP门户配置。(可能是用户输入错误或其他)。IPX=40.
  • 5.8.2(三代微雪屏版)修改IPX的值,LOGO文字居中。
  • 5.8.1(三代微雪屏版)修正一个英语语法错误。(Designed by Chaeng)。
  • 5.8(三代微雪屏版)增加IO12按钮功能为查看未来三天天气,5秒后回到主界面。
  • 5.7.9(三代微雪屏版)微雪使用顺向设置LOGO。
  • 5.7.8(三代微雪屏版)增加小彩蛋。
  • 5.7.7(三代微雪屏版)增加了交替使用 HTTP 和 NTP 获取时间的功能,以确保获取时间的可靠性。获取时间和获取天气的重试次数增加到5次。
  • 5.7.6(三代微雪屏版)错误处理:增强 SPIFFS 初始化和文件操作的错误处理。WiFi 连接重试逻辑:改进重试逻辑,加入指数退避算法以减少网络负载。内存管理:确保 malloc 分配的内存在适当的时候被释放,避免内存泄漏。代码注释:增加更多的注释,解释复杂的逻辑,使代码更易于理解和维护。参数验证:对参数(SSID、密码、城市)进行更严格的验证,确保它们满足一定的长度和字符要求。网络安全:考虑为获取时间和天气数据的连接添加 HTTPS 支持,提高安全性。配置门户超时:为配置门户添加一个超时机制,在用户未完成配置的情况下,ESP32 将自动重启。代码优化:对代码进行整体优化,尤其是 capitalizeFirstLetter 函数的处理,可以更高效地处理不同情况。单元测试:如果可能,为函数添加单元测试,确保它们按预期工作。这对于 capitalizeFirstLetter 这样的函数尤其有用。显示更新:考虑优化显示更新的方式,减少闪烁并提高性能,可以使用双缓冲技术或只更新变化的部分。
  • 5.7.5(三代微雪屏版)网页所有元素居中,城市名称首字母大写,更美观。
  • 5.7.4(三代微雪屏版)LOGO下显示的文本,做成参数,初始X的坐标改成自动计算居中,初始Y的坐标固定为90。这样就可以反复利用这个函数,在门户配置的时候,显示文字:ESP32-Config--192.168.4.1。在用参数配置的时候,显示:Design by Chaeng。
  • 5.7.3(三代微雪屏版)IP地址显示无意义。原显示IP地址的文字,改为:Design by Chaeng
  • 5.7.2(三代微雪屏版)统一使用热点模式对三个参数进行配置。
  • 5.7.1(三代微雪屏版)增加逻辑wifi连接失败超过3次,进入配置页。
  • 5.7(三代微雪屏版)创建LOGO函数,显示欢迎页。
  • 5.6.7(三代微雪屏版)时间整点屏幕整体刷新一次。使用SPIFFS.h创建文件存取ssid、password、city参数,并在配置页时,打开热点,打开站点供用户配置。
  • 5.6.6(三代微雪屏版)解决心知天气获取时间不稳定问题。
  • 5.6.5(三代微雪屏版)解决互联网校时不稳定问题。
  • 5.6.4(三代微雪屏版)增加天气图形。
  • 5.6.3(三代微雪屏版)增加夜间天气。
  • 5.6.2(三代微雪屏版)日期、星期、时间(局部刷新),天气文字显示正常。
  • 5.6.1(三代微雪屏版)因为局部更新问题,更换硬件为微雪。
  • 5.6(三代墨水屏版)时间更新为局部刷新,更省电,刷新不闪烁。
  • 5.5.1(三代墨水屏版)城市名称首字母大写。
  • 5.5(三代墨水屏版)解决星期三字符过长的问题。
  • 5.4.4(三代墨水屏版)增加小彩蛋。
  • 5.4.3(三代墨水屏版)日期、星期和时间的字体进行加粗处理,并调整生成的配置网页的标题和元素居中显示。
  • 5.4.2(三代墨水屏版)使用 Ticker 库来定时关闭网页服务器和定时更新时间。
  • 5.4(三代墨水屏版)天气图标更新大小48*48。
  • 5.3.2(三代墨水屏版)因为打开server.on消耗电力,设计设备启动5分钟后,关闭server.on。增加风向和降雨指数。
  • 5.3.1(三代墨水屏版)结合5.3和5.12,正常,未加入修改逻辑。
  • 5.3(三代墨水屏版)增加SETUP页面,并显示当前设备获取的IP地址,以便之后配置(初始化逻辑)。
  • 5.2.1(三代墨水屏版)使用POST方法管理参数。
  • 5.2(三代墨水屏版)当设备启动时,检查是否存在配置文件。如果存在,则读取并使用这些配置;如果不存在,则启动热点模式,让用户通过网页配置这些参数。
  • 5.1.2(三代墨水屏版)接入电池,为了节省电力消耗,每小时连接一次WiFi并获取时间和天气数据。每分钟通过计算更新时间并更新显示。在获取新时间和天气数据时,更新显示。
  • 5.1.1(三代墨水屏版)增加星期,并放在日期和时间的中央。
  • 5.1(三代墨水屏版)正常显示图形。
  • 5.0(三代墨水屏版)正常显示文字。
  • 4.7.3(二代电池版)添加对 settings.json 文件是否存在的检查,并在保存设置时对比 ssid、password 和 city 的变化情况。如果有变化,则删除文件并重启设备;如果没有变化,仅是 RGB 的值变了,则不删除文件也不重启设备。
  • 4.7.2(二代电池版)更改 WiFi 配置或城市名称时重启设备,而只更改 RGB 颜色时不重启设备,并且保持页面上显示的原始值。
  • 4.7.1(二代电池版)增加http://esp32IP访问,可以即时修改WIFI、城市、RGBLED颜色等。
  • 4.7(二代电池版)使用GIOP8引脚控制下方氛围灯的色彩。
  • 4.6(二代电池版)增加用户初始化配置页面,如是首次启动用手机连接生成热点:ESP32-CONFIG密码(12345678),配置WIFI名称、密码和板载RGBLED颜色,使用LittleFS.h增加本地文件config_done.flag供以后的函数调取。
  • 4.5(二代电池版)去除秒数显示,LOOP更新为每分钟,更省电。
  • 4.4(二代电池版)进一步降低电池功耗,使用Wi-Fi的轻量级睡眠模式。减少显示屏的刷新频率。
  • 4.3(二代电池版)增强代码中的错误处理机制,以便在Wi-Fi连接失败、HTTP请求失败或JSON解析失败时提供相应的处理措施。
  • 4.2(二代电池版)通过将图标映射提取到一个单独的函数中,增加代码的可读性和维护性。
  • 4.1(二代电池版)增加电池电量表示(失败)。
  • 3.8.2(二代插电版)最终版。
  • 3.8.1(二代插电版)屏幕翻转。cloudy天气图形更新。
  • 3.8(一代插电版)调用天气图标库主程序变简洁,更加易于维护升级。升级了多个图标显示。更改图标尺寸为32*32像素。
  • 3.7(一代插电版)图形居中显示。去掉调试框。
  • 3.6(一代插电版)更新天气图形成功。
  • 3.5(一代插电版)为提高编译效率,固定主程序,只调度函数绘制图形。
  • 3.4(一代插电版)MicroPython没有U2g8库,为美观重回Arduino,所以数据保存和记录相当重要。
  • 3.3(一代插电版)调整优化显示,更换字体,缩放字体。
  • 3.2(一代插电版) 转换环境成功(从Arduino到MicroPython)。
  • 3.1(一代插电版)放弃Arduino(因编译效率太低),改回MicroPython,编译效率提高。

About

a esp32weatherclock

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 81.8%
  • C 18.2%