完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
嗨,
我有一个我无法理解的问题。 我在 NodeMCU 方面不是很有经验,所以我可能错过了一些明显的东西,但我已经没有想法了,所以我问了。 我有一段工作代码可以将温度从 DS18B20 上传到网站上。 有一个定期上传的 tmr 警报和两个可以通过中断由两个按钮触发的进一步上传。 如果我通过单击文件通过 ESPlorer 启动脚本,该代码将完美运行。 但是,当我从 init.lua 调用脚本时,常规上传工作但是当按下两个按钮时没有检测到任何东西。 我正在使用以下固件: NodeMCU 0.9.6 build 20150704 powered by Lua 5.1.4 代码如下。仍然有一些重复的代码,但它用于演示问题的目的: init.lua: 代码:全选wifi.setmode(wifi.STAtiON) wifi.sta.config(\"aSSID\",\"aPWD\") tmr.alarm(1, 1000, 1, function() if wifi.sta.getip()== nil then print(\"IP unavaiable, Waiting...\") else tmr.stop(1) print(\"Config done, IP is \"..wifi.sta.getip()) dofile(\"mainUpload.lua\") end end) 主上传.lua 代码:全选local str = 0 local tmrSecond = 1000 -- microseconds local minute = 60000 -- milliseconds local debounce = 0.2 * tmrSecond local sensorNo = 1 local tempUploadInterval = 30 * tmrSecond local theKey = \"key=abba\" local webSite = \"a-web-server.com\" -- ##### Change This --------------------------------------------------------------------- -- MAIN --------------------------------------------------------------------- print(\"\") print(\"Started the main program:\") print(\" ### Temperature Sensor # 1, SSID = \" .. wifi.sta.getconfig()) print(\"\") gpio.mode(7,gpio.INT,gpio.PULLUP) -- Pushbutton 1 gpio.trig(7, \"low\",onSwitch_1_Detection) -- interrupt gpio.mode(2,gpio.INT,gpio.PULLUP) -- Pushbutton 2 gpio.trig(2, \"low\",onSwitch_2_Detection) -- interrupt -- Temperature Detection loop tmr.alarm(0, tempUploadInterval, 1, function() print(\" \") t=require(\"ds18b20\") local dataStr = (theKey .. \"&sensorNo=\" .. tostring(sensorNo) .. \"&tooHot=0\" .. \"&tooCold=0\" .. \"&temperature=\" .. t.readNumber(6)) local sendStr = (\"POST /log-room-temperature.php HTTP/1.1\\r\\n\".. \"Host: \" .. webSite .. \"\\r\\n\".. \"Accept: */*\\r\\n\".. \"Content-Type: application/x-www-form-urlencoded\\r\\n\".. \"Content-Length: \" .. tostring(string.len(dataStr)) ..\"\\r\\n\\r\\n\".. dataStr .. \"\\r\\n\\r\\n\") print(sendStr) conn=net.createConnection(net.TCP, 0) conn:on(\"connection\",function(conn, payload) conn:send(sendStr) end) conn:on(\"receive\", function(conn, payload) print(payload) conn:close() end) conn:connect(80,webSite) -- Release after use t = nil ds18b20 = nil package.loaded[\"ds18b20\"]=nil --print(dataStr) end) function onSwitch_1_Detection(level) if level < 1 then tmr.delay(debounce) print(\"---> Switch 1 PRESSED <--\") print(\" \") t=require(\"ds18b20\") local dataStr = (theKey .. \"&sensorNo=\" .. tostring(sensorNo) .. \"&tooHot=1\" .. \"&tooCold=0\" .. \"&temperature=\" .. t.readNumber(6)) local sendStr = (\"POST /log-room-temperature.php HTTP/1.1\\r\\n\".. \"Host: \" .. webSite .. \"\\r\\n\".. \"Accept: */*\\r\\n\".. \"Content-Type: application/x-www-form-urlencoded\\r\\n\".. \"Content-Length: \" .. tostring(string.len(dataStr)) ..\"\\r\\n\\r\\n\".. dataStr .. \"\\r\\n\\r\\n\") print(sendStr) conn=net.createConnection(net.TCP, 0) conn:on(\"connection\",function(conn, payload) conn:send(sendStr) end) conn:on(\"receive\", function(conn, payload) print(payload) conn:close() end) conn:connect(80,webSite) -- Release after use t = nil ds18b20 = nil package.loaded[\"ds18b20\"]=nil --print(dataStr) else tmr.delay(debounce) print(\"---> Switch 1 RELEASED <--\") print(\" \") end end function onSwitch_2_Detection(level) if level <1 then tmr.delay(debounce) print(\"---> Switch 2 PRESSED <--\") print(\" \") t=require(\"ds18b20\") local dataStr = (theKey .. \"&sensorNo=\" .. tostring(sensorNo) .. \"&tooHot=0\" .. \"&tooCold=1\" .. \"&temperature=\" .. t.readNumber(6)) local sendStr = (\"POST /log-room-temperature.php HTTP/1.1\\r\\n\".. \"Host: \" .. webSite .. \"\\r\\n\".. \"Accept: */*\\r\\n\".. \"Content-Type: application/x-www-form-urlencoded\\r\\n\".. \"Content-Length: \" .. tostring(string.len(dataStr)) ..\"\\r\\n\\r\\n\".. dataStr .. \"\\r\\n\\r\\n\") print(sendStr) conn=net.createConnection(net.TCP, 0) conn:on(\"connection\",function(conn, payload) conn:send(sendStr) end) conn:on(\"receive\", function(conn, payload) print(payload) conn:close() end) conn:connect(80,webSite) -- Release after use t = nil ds18b20 = nil package.loaded[\"ds18b20\"]=nil --print(dataStr) else tmr.delay(debounce) print(\"---> Switch 2 RELEASED <--\") print(\" \") end end |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
920 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
446浏览 5评论
447浏览 4评论
417浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 23:37 , Processed in 0.647021 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号