Esp от батарейки

Тема в разделе "ESP8266, ESP32", создана пользователем Airat777, 12 ноя 2022.

  1. Airat777

    Airat777 Нерд

    Привет всем. Пытаюсь сделать передачу температуры с поста глядите что я сделал. Передача от батареек в нородман. Делаю все по инструкции. Загружаю код от 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()
     
    Последнее редактирование: 12 ноя 2022
  2. Airat777

    Airat777 Нерд

    Выводит такую ошибку которая ниже, файл script.lua чуть выше. Где моя ошибка?
    > dofile("script.lua")
    script.lua:1: unexpected symbol near 'п'
    stack traceback:
    [C]: in function 'dofile'
    stdin:1: in main chunk
    >
     
  3. serg3295

    serg3295 Гуру

    Покажите ваш Nodemcu Startup Banner. То, что выводится при рестарте ESP.
     
  4. ИгорьК

    ИгорьК Гуру

    Тут, полагаю, две проблемы.
    Система говорит о неожиданном символе где-то. Значит проблема в копипасте - захвачен нечитаемый символ и иногда эту никчемную ошибку очень сложно найти.

    Вторая проблема будет с таймером "ноль" - видно что проект очень старый или скопипащен из старых файлов.

    Обычно дают ссылку на первоисточник, тов. @Airat777
     
    DetSimen нравится это.
  5. serg3295

    serg3295 Гуру

    Я поэтому startup banner и попросил. Без этого дальше двигаться нет смысла.
     
  6. Airat777

    Airat777 Нерд

  7. Airat777

    Airat777 Нерд

    Там простая версия работает, а именно от двух батареек нет. Да, таймер ноль тоже какую то ошибку писало, а щас вот эта буква "п". Давно пытаюсь от двух батареек сделать, не получается...
     
  8. Airat777

    Airat777 Нерд

    Вот:
    Код (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
     
     
  9. Airat777

    Airat777 Нерд

    Но щас скопировал по другому, и буква "п" пропала. Но щас пишет вот так и температуру на народман не отправляет. Тоже какая то ошибка походу:
    Код (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!
     
     
  10. serg3295

    serg3295 Гуру

    Модуль rtcmem должен быть в прошивке, если вы его вызываете. А у вас его нет.
     
  11. Airat777

    Airat777 Нерд

    Пересобрал, щас походу как говорил гуру @ИгорьК
    Ругается на таймер, помогите подправить его @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]: ?
    >
     
  12. ИгорьК

    ИгорьК Гуру

    Там с новой прошивкой будут ещё косяки. Попробуйте сначала заказать прошивку 1.5 на сайте. Полагаю, это решит проблемы.
    Иначе придётся код пересматривать весь заново. У меня в ближайшие дни такой возможности не будет.
     
    DetSimen и serg3295 нравится это.
  13. Airat777

    Airat777 Нерд

    Пересобрал на 1.5, применил тестовый скрипт, температуру отправляет, ресетиться. Загружаю рабочую init.lua и данные передает тока при первом включение. Все, потом больше не передает. Время разное пробовал, все так же. При подаче питании один раз передает и все. Но через определенное время светодиод моргает, но не подключается. Что может быть?
     
  14. Airat777

    Airat777 Нерд

    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()
     
  15. ИгорьК

    ИгорьК Гуру

    Вы там проводок на ресет подключили?
     
  16. Airat777

    Airat777 Нерд

    Конечно. Я так и думал, что вы это спросите. Щас мультиком прозвонил контакты все как положено. GPIO16-RST.
     
  17. Airat777

    Airat777 Нерд

    Еще раз пропаял всё, занова прошил опять. Всё так же, один раз при подаче питании тока данные передает. Прошил получается на готовом модуле где кнопка ресет и боот есть. Смотрел в файле настройке, и при нажатии ресет плата перезагружается, счетчики считают, а плата не подключается к вайфай. Тока при подаче питания один раз. @ИгорьК что может быть?
     
    Последнее редактирование: 13 ноя 2022
  18. ИгорьК

    ИгорьК Гуру

    Выкладывайте полный лог от подачи питания до того момента, когда вы решаете что оно не работает.
     
  19. Airat777

    Airat777 Нерд

    Код (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!
     
     
  20. Airat777

    Airat777 Нерд

    На третим должен был передать, не передает. Хоть какое время ожидание ставь. Только заново подать питание и ресет сделать, опять передаст.