本帖最后由 trz0332 于 2019-11-27 00:26 编辑
发现一个重大问题,当连不上mqtt服务器的时候,过几分钟程序就死掉了。看了一下错误日志,貌似是一个并行的列队满了导致的。这个应该是我使用的那个mqtt_as.py导致的,没能力去改,也不想改,于是简单粗暴的想了个解决办法,加看门狗,只有在从电表取到了数据的时候才会喂狗,2分钟不喂狗,esp32就自动重启了。
需要使用最新的micropython固件。
清除所有数据之后下载把我附件内容全部传送到板子就行了。
修改为采集时间10秒钟,但是上传间隔为,当2次数据变化超过5%才会上传数据
把cfg.py里面的内容按照自己的需要修改就行了,其他都不动
config={'dev_name' :'szdb1' , #设备名 'ssid' :'iot' , #wifi的ssid 'wifi_pw' :'xxxx' , #wifi密码 'port' :1883, #mqtt端口 'server' :'192.168.88.1' , #mqttf服务器IP 'user' :'pi' , #mqtt用户名 'password' :'xxxxxx' , #mqtt密码 'keepalive' :120,'clean' :False ,'clean_init' :False ,'dog_time' :120000, #看门狗时间 }
自从上次改装电表之后,感觉上瘾了,在拼夕夕上看中了一个65的电表,带485接口,马上下单改造
电表到后试了一下精度:误差到了20W左右。看上去挺大的,但是算了一下20/1648=0.018差不多2%的样子,考虑到我买的电流是30/100A的。看了一下说明书,当电流跟额定电流差太多的时候。最大的误差可以到2%。也差不多了。
拆开看到内部结构,,,4p的空间里面太空旷了。真是浪费这个4P的空间了
改造开始,还是老三样。。220V转DC5v模块。esp32.uart转485,接线方式可以参照上一个帖子。
接好先后的样子:
把变压器的电源线焊到电表内部的电源接线端子上。
把485的AB焊到电表的485的A,B端子
用热缩管包好后塞到电表内部
最后安装好后的成品就是这样子啦
当然完全安装前需要把程序拷贝进去
esp32.zip
(29.15 KB, 下载次数: 30)
修改cfg.py内容
config={
'dev_name':'szdb1', #设备名
'ssid':'xxx', #wifi的ssid
'wifi_pw':'xxxx', #wifi密码
'port':1883, #mqtt端口
'server':'192.168.88.208', #mqttf服务器IP
'user':'xxxx', #mqtt用户名
'password':'xxxxx', #mqtt密码
'keepalive':120,
'clean':False,
'clean_init':False,
'':'',
}
复制代码
esp32刷好micropython固件
然后用uPyCraft_V1.1.exe这个工具把压缩包内的东西一股脑的拷贝到esp32里面
如果你文件全部拷贝进去之后,这个时候程序运行起来了,用uPyCraft_V1.1.exe已经连接不上esp32了,这个时候可以用putty设置好相应的串口参数参数115200,n,8,1就可以连接上去,连上去之后按ctrl+c退出主程序,然后执行import os 然后 os.remove('main.py')这样下次开机的时候程序就不会运行了。下次要运行的时候把main.py拷贝进去就再次运行了。
最后就可以看到数据啦
topic为 cfg.py里面的config字段dev_name 里面的名字 比如我现在填的是szdb1.那么电表数据topic为 ‘/szdb/data' 日志topic为‘/szdb/log'
最后上传的数据如下: