完善资料让更多小伙伴认识你,还能领取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 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
448 浏览 0 评论
971 浏览 0 评论
1695 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1349 浏览 1 评论
1246 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1272浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
938浏览 3评论
2370浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2556浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1066浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 03:31 , Processed in 0.755682 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
12843
