Привет всем. Пытаюсь сделать передачу температуры с поста глядите что я сделал. Передача от батареек в нородман. Делаю все по инструкции. Загружаю код от ds18b20, и код ниже для проверки: Код (Text): ap = "1111" appass = "1111" pin = 4 -- сюда вешаем датчики sleepdelay = 600 -- десять минут между проверками = 600 секунд. killdelay = 35 -- через 35 секунд после пробуждения - спать принудительно. -- killdelay зависит от скорости вашего соединения. Отрегулируйте! Чем меньше - тем лучше, -- но если слишком мало - модуль не успеет передать данные и принудительно уйдет в сон. countsleep = 12 -- двенадцать циклов проверки до принудительной передачи = 2 часа -- устанавливайте сами сколько считаете правильным. Чем меньше - тем больше расход батареи. function sendNarod(temperature) wifi.setmode(wifi.STATION) wifi.sta.config(ap , appass) wifi.sta.autoconnect(0) tmr.alarm(0, 1000, 1, function() if wifi.sta.status() == 5 and wifi.sta.getip() ~= nil then print("Got wi-fi!") tmr.stop(0) local dataN = "#8E-CE-4E-E2-49-56\n" -- ваш ключ!!! print("T = "..temperature) dataN =dataN.."#T01#"..temperature.."\n" dataN = dataN.."##\n" print(dataN) conn=net.createConnection(net.TCP, 0) conn:on("connection",function(conn, payload) conn:send(dataN) end) conn:on("receive", function(conn, payload) print('\nRetrieved in '..((tmr.now()-t)/1000)..' milliseconds.') print('Narodmon says '..payload) conn:close() disconnect() end) t = tmr.now() conn:connect(8283,'narodmon.ru') end end) end function publish_data() print("work now!") local t = 85 t = getTemp() print("Got "..t) if t ~= 85 then local oldt = rtcmem.read32(0) local count = rtcmem.read32(1) if (count + 1) < 1 then rtcmem.write32(1, 0) else rtcmem.write32(1, (count+1)) end rtcmem.write32(1, (count+1)) print("oldt "..oldt) local delta = t - oldt if delta < 0 then delta = delta * -1 end print("Delta "..delta) print("count = "..count) if (delta > 8) or (count > countsleep) then rtcmem.write32(0, t) print("countsleep = "..count) rtcmem.write32(1, 0) if bit.isset(t, 15) then t = 1 - bit.bxor(t, 0xffff) end t = t * 625 / 10000 print("t = "..t) print("Pubish Data!") sendNarod(t) else print("Not changes. Go...") disconnect() end end end function getTemp() print("get t") local t = 85 local ds18b20 = require('ds18b20') ds18b20.setup(pin) local addres={} addres=ds18b20.addrs() if addres[1] ~= nil then t = ds18b20.read(addres[1]) end print("Got "..t) return t end function disconnect() tmr.alarm(3, 500, 0, function() print("Sleep Now!") node.dsleep(1000000*sleepdelay, 4) end) end tmr.alarm(5, 1000*killdelay, 0, function() print("Get Sleep By Timer") disconnect() end) publish_data()
Выводит такую ошибку которая ниже, файл script.lua чуть выше. Где моя ошибка? > dofile("script.lua") script.lua:1: unexpected symbol near 'п' stack traceback: [C]: in function 'dofile' stdin:1: in main chunk >
Тут, полагаю, две проблемы. Система говорит о неожиданном символе где-то. Значит проблема в копипасте - захвачен нечитаемый символ и иногда эту никчемную ошибку очень сложно найти. Вторая проблема будет с таймером "ноль" - видно что проект очень старый или скопипащен из старых файлов. Обычно дают ссылку на первоисточник, тов. @Airat777
Да это я ваш проект хотел повторить ИгорьК. Щас до дома доберусь, скину Nodemcu StartupBanner . https://forum.amperka.ru/threads/es...ринг-Бюджетный-вариант.4568/page-8#post-76010
Там простая версия работает, а именно от двух батареек нет. Да, таймер ноль тоже какую то ошибку писало, а щас вот эта буква "п". Давно пытаюсь от двух батареек сделать, не получается...
Вот: Код (Text): node.restart() > ets Jan 8 2013,rst cause:1, boot mode:(3,7) load 0x40100000, len 26940, room 16 tail 12 chksum 0xf3 ho 0 tail 12 room 4 load 0x3ffe8000, len 2264, room 12 tail 12 chksum 0xe5 ho 0 tail 12 room 4 load 0x3ffe88d8, len 136, room 12 tail 12 chksum 0x91 csum 0x91 „вдѓnмЫ{‚тo|мlll$ ЊвrЫlЊ¬э NodeMCU custom build by frightanic.com branch: master commit: b96e31477ca1e207aa1c0cdc334539b1f7d3a7f0 SSL: false modules: adc,bit,cjson,cron,file,gpio,http,mqtt,net,node,ow,rtctime,sntp,tmr,uart,wifi build built on: 2017-02-06 12:36 powered by Lua 5.1.4 on SDK 2.0.0(656edbf) lua: cannot open init.lua > print(uart.setup(0, 115200, 8, 0, 1, 1 )) 115200 > ---------------------------- ds18b20.lua : 1796 bytes script.lua : 3594 bytes ---------------------------- Total file(s) : 2 Total size : 5390 bytes
Но щас скопировал по другому, и буква "п" пропала. Но щас пишет вот так и температуру на народман не отправляет. Тоже какая то ошибка походу: Код (Text): NodeMCU custom build by frightanic.com branch: master commit: b96e31477ca1e207aa1c0cdc334539b1f7d3a7f0 SSL: false modules: adc,bit,cjson,cron,file,gpio,http,mqtt,net,node,ow,rtctime,sntp,tmr,uart,wifi build built on: 2017-02-06 12:36 powered by Lua 5.1.4 on SDK 2.0.0(656edbf) lua: cannot open init.lua > print(uart.setup(0, 115200, 8, 0, 1, 1 )) 115200 > dofile("script1.lua") work now! get t Got 374 Got 374 script1.lua:48: attempt to index global 'rtcmem' (a nil value) stack traceback: script1.lua:48: in function 'publish_data' script1.lua:104: in main chunk [C]: in function 'dofile' stdin:1: in main chunk > Get Sleep By Timer Sleep Now!
Пересобрал, щас походу как говорил гуру @ИгорьК Ругается на таймер, помогите подправить его @serg3295 Код (Text): release DTS: 202112300746 SSL: false build type: float LFS: 0x0 bytes total capacity modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi build 2022-11-12 12:49 powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e) cannot open init.lua: > print(uart.setup(0, 115200, 8, 0, 1, 1 )) 115200 > ---------------------------- ds18b20.lua : 1796 bytes script1.lua : 3488 bytes ---------------------------- Total file(s) : 2 Total size : 5284 bytes Total : 3493920 bytes Used : 6024 bytes Remain: 3487896 bytes > dofile("script1.lua") Lua error: script1.lua:99: attempt to call field 'alarm' (a nil value) stack traceback: script1.lua:99: in main chunk [C]: in function 'dofile' stdin:1: in main chunk [C]: ? [C]: ? >
Там с новой прошивкой будут ещё косяки. Попробуйте сначала заказать прошивку 1.5 на сайте. Полагаю, это решит проблемы. Иначе придётся код пересматривать весь заново. У меня в ближайшие дни такой возможности не будет.
Пересобрал на 1.5, применил тестовый скрипт, температуру отправляет, ресетиться. Загружаю рабочую init.lua и данные передает тока при первом включение. Все, потом больше не передает. Время разное пробовал, все так же. При подаче питании один раз передает и все. Но через определенное время светодиод моргает, но не подключается. Что может быть?
init.lua файл: Код (Text): ap = "R8" appass = "UF" pin = 4 sleepdelay = 300 killdelay = 35 countsleep = 3 function sendNarod(temperature) wifi.setmode(wifi.STATION) wifi.sta.config(ap , appass) wifi.sta.autoconnect(0) tmr.alarm(0, 1000, 1, function() if wifi.sta.status() == 5 and wifi.sta.getip() ~= nil then tmr.stop(0) local dataN = "#8E-CE-4E-E2-49-56\n" dataN =dataN.."#T01#"..temperature.."\n" dataN = dataN.."##\n" conn=net.createConnection(net.TCP, 0) conn:on("connection",function(conn, payload) conn:send(dataN) end) conn:on("receive", function(conn, payload) conn:close() disconnect() end) conn:connect(8283,'narodmon.ru') end end) end function publish_data() local t = 85 t = getTemp() if t ~= 85 then local oldt = rtcmem.read32(0) local count = rtcmem.read32(1) if (count + 1) < 1 then rtcmem.write32(1, 0) else rtcmem.write32(1, (count+1)) end rtcmem.write32(1, (count+1)) local delta = t - oldt if delta < 0 then delta = delta * -1 end if (delta > 8) or (count > countsleep) then rtcmem.write32(0, t) rtcmem.write32(1, 0) if bit.isset(t, 15) then t = 1 - bit.bxor(t, 0xffff) end t = t * 625 / 10000 sendNarod(t) else disconnect() end end end function getTemp() local t = 85 local ds18b20 = require('ds18b20') ds18b20.setup(pin) local addres={} addres=ds18b20.addrs() if addres[1] ~= nil then t = ds18b20.read(addres[1]) end return t end function disconnect() tmr.alarm(3, 500, 0, function() node.dsleep(1000000*sleepdelay, 4) end) end tmr.alarm(5, 1000*killdelay, 0, function() disconnect() end) publish_data()
Конечно. Я так и думал, что вы это спросите. Щас мультиком прозвонил контакты все как положено. GPIO16-RST.
Еще раз пропаял всё, занова прошил опять. Всё так же, один раз при подаче питании тока данные передает. Прошил получается на готовом модуле где кнопка ресет и боот есть. Смотрел в файле настройке, и при нажатии ресет плата перезагружается, счетчики считают, а плата не подключается к вайфай. Тока при подаче питания один раз. @ИгорьК что может быть?
Код (Text): PORT OPEN 115200 Soft restart by user command node.restart() > ets Jan 8 2013,rst cause:1, boot mode:(3,6) load 0x40100000, len 25004, room 16 tail 12 chksum 0x90 ho 0 tail 12 room 4 load 0x3ffe8000, len 2260, room 12 tail 8 chksum 0xc5 load 0x3ffe88d4, len 136, room 0 tail 8 chksum 0xe1 csum 0xe1 Дгд‚nм“{‚уo|дl$ld`Дгr›$Њd„ю NodeMCU custom build by frightanic.com branch: 1.5.4.1-final commit: 9ad37255717e02120f43f213a892a845dbe40615 SSL: true modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi,tls build created on 2022-11-12 13:24 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) lua: cannot open init.lua > print(uart.setup(0, 115200, 8, 0, 1, 1 )) 115200 > ---------------------------- ds18b20.lua : 1796 bytes script1.lua : 3486 bytes ---------------------------- Total file(s) : 2 Total size : 5282 bytes Total : 3384986 bytes Used : 6024 bytes Remain: 3378962 bytes > dofile("script1.lua") work now! get t Got 393 Got 393 oldt -1877804978 Delta 1877805371 count = 1025461554 countsleep = 1025461554 t = 24.5625 Pubish Data! > Got wi-fi! T = 24.5625 #8E-CE-4E-E2-49-56 #T01#24.5625 ## Retrieved in 1950.197 milliseconds. Narodmon says OK Sleep Now! NodeMCU custom build by frightanic.com branch: 1.5.4.1-final commit: 9ad37255717e02120f43f213a892a845dbe40615 SSL: true modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi,tls build created on 2022-11-12 13:24 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) lua: cannot open init.lua > dofile("script1.lua") work now! get t Got 394 Got 394 oldt 393 Delta 1 count = 0 Not changes. Go... > Sleep Now! NodeMCU custom build by frightanic.com branch: 1.5.4.1-final commit: 9ad37255717e02120f43f213a892a845dbe40615 SSL: true modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi,tls build created on 2022-11-12 13:24 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) lua: cannot open init.lua > dofile("script1.lua") work now! get t Got 394 Got 394 oldt 393 Delta 1 count = 1 Not changes. Go... > Sleep Now! NodeMCU custom build by frightanic.com branch: 1.5.4.1-final commit: 9ad37255717e02120f43f213a892a845dbe40615 SSL: true modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi,tls build created on 2022-11-12 13:24 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) lua: cannot open init.lua > dofile("script1.lua") work now! get t Got 394 Got 394 oldt 393 Delta 1 count = 2 Not changes. Go... > Sleep Now! NodeMCU custom build by frightanic.com branch: 1.5.4.1-final commit: 9ad37255717e02120f43f213a892a845dbe40615 SSL: true modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi,tls build created on 2022-11-12 13:24 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) lua: cannot open init.lua > dofile("script1.lua") work now! get t Got 394 Got 394 oldt 393 Delta 1 count = 3 countsleep = 3 t = 24.625 Pubish Data! > Get Sleep By Timer Sleep Now! NodeMCU custom build by frightanic.com branch: 1.5.4.1-final commit: 9ad37255717e02120f43f213a892a845dbe40615 SSL: true modules: adc,bit,file,gpio,mqtt,net,node,ow,rtcmem,rtctime,tmr,uart,wifi,tls build created on 2022-11-12 13:24 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) lua: cannot open init.lua > dofile("script1.lua") work now! get t Got 393 Got 393 oldt 394 Delta 1 count = 0 Not changes. Go... > Sleep Now!
На третим должен был передать, не передает. Хоть какое время ожидание ставь. Только заново подать питание и ресет сделать, опять передаст.