首先准备一下的东西:1、一个nodemcu。2、一个domoticz,可以自己搭建一个,树莓派或者vps等等。3、一个交流电压传感器,220v输入,输出5v以内的交流信号。

实现方式,用nodemcu的ADC采集交流传感器的模拟量,每ms读取一个值,一共读取500个值存储在数组中。采用最大值,经过比例换算出220V交流对应的电压,自己要有一个万用表用来调测。在domoticz中添加一个虚拟的电压传感器

虚拟传感器.jpg

led1 = 4

stat=1

blink=2000

gpio.mode(led1, gpio.OUTPUT)

gpio.write(led1, gpio.HIGH);

local parameter1,parameter2,parameter3,parameter4,parameter5=nil,nil,nil,nil,nil

print('Setting up WIFI...')

wifi.setmode(wifi.STATIONAP )

wifi.sta.autoconnect(1)

tmr.alarm(1, 2000, tmr.ALARM_AUTO, function()

if wifi.sta.getip() == nil then

print('Waiting for IP ...')

else

print('IP is ' .. wifi.sta.getip())

tmr.stop(1)

end

end)

tmr.alarm(4,blink, tmr.ALARM_AUTO, function()

gpio.write(led1, gpio.LOW);

tmr.delay(1000)

gpio.write(led1, gpio.HIGH);

end)

function stringgsub(data)

--分割参数

aa=string.find(data,",")

ss=string.find(data,",",aa+1)

parameter1=string.sub(data,1,aa-1)

parameter2=string.sub(data,aa+1,ss-1)

parameter3=string.sub(data,ss+1,-1)

return parameter1,parameter2,parameter3

end

if adc.force_init_mode(adc.INIT_ADC)

then

node.restart()

return -- don't bother continuing, the restart is scheduled

end

val={}

i=1

--a=0

vall=0

max=0

tmr.alarm(2, 1, tmr.ALARM_AUTO, function()--每毫秒采集数据一次500个

val[i] = adc.read(0)

i=i+1

if i>500 then

i=0

tmr.stop(2)

end

end)

tmr.alarm(3,2000, tmr.ALARM_AUTO, function()--每两秒采集一次抽取最大的数据

for j=1,500 do

if val[j]~=nil then

if max < val[j] then

max=val[j]

end

end

end

print("adc is:"..max)

AC=(max-765)*1.06--比例换算

print("ADC voltage (V):"..AC)

local testjson={}

testjson={key=AC,curr="30",temp="38"}

local ok, json = pcall(sjson.encode,testjson)

if ok then

print(json)

else

print("failed to encode!")

end

max=0

tmr.start(2)

end)

---------------send AV voltage to domoticz

tmr.alarm(5, 15000, tmr.ALARM_AUTO,function()

conn=net.createConnection(net.TCP, 0)

conn:connect(8080,"xxxx。com")

conn:on("receive", function(conn, payload)

print("The result is"..payload)

end )

conn:on("connection", function(conn, payload)

local get1="/json.htm?type=command&param=udevice&idx=7&nvalue=0&svalue="..AC--idx也要写自己传感器的编码我的是7

http.get("http://xxx自己domoticz服务器地址"..get1, "Authorization: Basic 这里写自己的用户名密码base64编码", function(code, data)

if (code < 0) then

print("HTTP request failed")

else

print(code, data)

end

end)

print("The AC voltage is send:"..AC)

if blink~=5000 then

blink=5000

tmr.unregister(4)

tmr.register(4,blink,tmr.ALARM_AUTO,function()

gpio.write(led1, gpio.LOW);

tmr.delay(3000)

gpio.write(led1, gpio.HIGH);end)

tmr.start(4)

end

end

)

end)

udpSocket = net.createUDPSocket() ---设置nodemcu-esp8266需要连接wifi网络

---通过UDP连接ESP开头的AP,向端口5000发送命令,命令格式:“AP,wifi名字,wifi密码”中间用英文逗号隔开。

udpSocket:listen(5000)

udpSocket:on("receive", function(s, data, port, ip)

local parameter1,parameter2,parameter3=stringgsub(data)

if blink~=500 then

blink=500

tmr.unregister(4)

tmr.register(4,blink,tmr.ALARM_AUTO,function()

gpio.write(led1, gpio.LOW);

tmr.delay(1000)

gpio.write(led1, gpio.HIGH);end)

tmr.start(4)

end

if parameter1 == "AP" then

print(string.format("APP: %s:%d",ip, port))

--IP AND PORT 是发送端的

print("ap is:"..parameter2.."pass is:"..parameter3.."reconnected")

station_cfg={}

station_cfg.ssid=parameter2

station_cfg.pwd=parameter3

wifi.sta.config(station_cfg)

s:send(port,ip,"Will be reconnecting,wait a moument.")

end

end)

修改wifi的连接SSID,需要在手机下载一个网络调试软件,比如有人网络助手,或者Socket X。都可以默认连接的IP是192.168.4.1。端口是5000

源码传到nodemcu ,只需修改自己的domoticz的一些数据就可以用了。

不懂的可以问我。

最后上图:

电压.jpg

历史数据.jpg

Modemcu上传 mysql_nodemcu 连接domoticz上传自定义的传感器采集交流电压相关推荐

  1. vnc连接不上,vnc连接不上是为什么?原因详解

    vnc连接不上的原因,服务器作为网站建设的常用设备,在服务器运行过程中起到举足轻重的作用.用户在选择服务器是常用的方式有服务器租用.虚拟主机租用以及服务器托管,通过进行文件以及数据的下载.上传等实现网 ...

  2. 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql

    我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复 1.首先登录服务器上mysql,看是否能正常登录,我发现不能 ...

  3. 无线宝服务器连接不上,无线网络连接不上怎么办 为什么无线网络连接不上

    1.第一步:点击刷新网络列表时出现"Windows无法配置此连接"的提示,则打开金山卫士的"系统优化"功能,点击"开机加速"选项卡,点击&q ...

  4. linux等陆不上ftp,vsftp连接不上解决方法

    当前位置:我的异常网» Linux/Unix » vsftp连接不上解决方法 vsftp连接不上解决方法 www.myexceptions.net  网友分享于:2015-08-26  浏览:0次 v ...

  5. 计算机连接不上蓝牙鼠标,蓝牙鼠标连接不上电脑怎么办_蓝牙鼠标连接不上电脑的解决办法...

    如果我们的电脑安装的是蓝牙鼠标的话,在使用过程中可能会出现的一些问题.近日就有用户反映说自己遇到了蓝牙鼠标连接不上电脑的问题,不知道怎么办,所以今天小编就来为大家分享关于蓝牙鼠标连接不上电脑的解决办法 ...

  6. u盘和计算机无法连接不上,U盘连接不上电脑怎么办

    有些时候我们将U盘插入电脑,会发现U盘的盘符无法正常显现出来,很多网友对此非常无奈,只能通过插拔来尝试解决问题,今天学习啦小编就为大家带来了U盘连接不上电脑怎么办的解决方法,希望能够帮到大家. U盘连 ...

  7. 键盘连不上计算机,电脑键盘连接不上电脑是怎么回事

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 电脑键盘连接不上电脑的原因: 1.键盘的接触不良.可能是因为接口松动了,这时候可以关掉电脑重新拔出接口,再安上,最后重启电脑. 2 ...

  8. joycon 连不上_switch手柄连接不上ns 连接不上蓝牙手柄硬件等问题解决方案

    switch手柄连接不上ns,相信大家多多少少都会遇到的问题,有时候不仅会出现手柄连接不上,还有一些小问题,比如无法给手柄充电,识别不了游戏卡等等,这些虽说是小问题,但处理起来也是够麻烦的,在这里给大 ...

  9. win7计算机怎么远程桌面连接不上,Win7系统连接不上远程桌面的解决方法

    原标题:Win7系统连接不上远程桌面的解决方法 有时候我们需要使用远程桌面连接来操作另外一台电脑,但最近有Win7系统用户反映,电脑开启了远程桌面连接功能后,无法连接到远程桌面,遇到这个问题该怎么办呢 ...

最新文章

  1. 2022-2028年中国氯磺化聚乙烯橡胶行业市场深度分析及未来趋势预测报告
  2. fastjson这么快,为啥老外还是热衷 jackson?
  3. LeetCode Algorithm 530. 二叉搜索树的最小绝对差
  4. python 测试框架
  5. SpringBoot2 集成测试组件,七种测试手段对比
  6. 在 Sublime Text 中使用 SFTP 插件快速编辑远程服务器文件 Sublime-text with SFTP plugin ...
  7. 不用图像文件的圆角解决--跳起按钮制作(html)
  8. could not extract ResultSet/could not execute statement
  9. SAXParseException An invalid XML character 问题的解决
  10. 从魔兽世界到激战2看MMO网游角色成长
  11. UTF-8 字符处理在 Web 开发中的应用
  12. 反客为主:巧妙用grldr冒名顶替ntldr引导XP/Ubuntu
  13. 女友的生日礼物能随便嘛?Python小妙招:制作一款出圈九宫格抽奖小程序。
  14. 手机做证件照的方法是什么
  15. python序列的应用
  16. mitmproxy环境搭建与证书安装
  17. Excle Sumif函数和Sumifs函数
  18. 计算机基础教学评价ppt,教学PPT课件:教学PPT的设计原理和评价标准
  19. 婚纱影楼,网络营销策划经典案例《缩减版》
  20. P1209 [USACO1.3]修理牛棚 Barn Repair

热门文章

  1. Unity透明软件背景,显示桌面背景方案
  2. pop客户机程序流程图_labview问题集锦
  3. 如何创建一个基于Maven的SmartGWT项目
  4. 微软明年关闭诺基亚功能手机应用商店
  5. 英文系统下玩中文版魔兽
  6. P1594 护卫队-动态规划
  7. 智能家居应用开发实战附讲义源码(Android实战课程)
  8. 招聘预示小米整车研发将落地上海徐汇
  9. 一步一步实现STM32-FOTA系列教程之FLASH静态区读写
  10. 计算机硬件 — 计算机简介