ESP8266: отправка температуры на Народный мониторинг. Бюджетный вариант.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 3 мар 2015.

  1. Cadil

    Cadil Нерд

    Спасибо, но у меня ESP-01. Решение на программном уровне было бы универсальным ...
     
  2. Stan

    Stan Нерд

    решение на программном уровне не даст прироста в днях. Без deep sleep делать нечего. Например, у меня без deep sleep скрипт ИгоряК работал 1 день на 800mAh 18650 аккумуляторе, с deep sleep на 10 минут уже работает неделю и осталась примерно 1/2 или 2/3 заряда. Единственный вариант могу вам предложить - выключать wi fi программно wifi.sta.disconnect(), а потом wifi.sta.connect() , но имхо, это не сильно поможет!
     
  3. Cadil

    Cadil Нерд

    Тогда не могу понять - как организовано энергосберегающее потребление в метеостанциях с беспроводными датчиками? Батарейки надо менять не чаще, чем один раз в год.
     
  4. ИгорьК

    ИгорьК Оракул Модератор

    Да. На гитхабе теперь тоже. Заменили аж.... 4 месяца назад :)
    Нет. Три недели при тридцатиминутном перерыве и использовании стандартной библиотеки. Вот график расхода батареи.
    Screenshot_2016-03-09-23-26-34.png
    Доработка требуется. По сути, код следует полностью переписать, включая библиотеку DS18b20. Когда я делал этот проект, я только знакомился с модулем, он первый и сделать это мне было не по силам. Сейчас можно, но пока занят. Возможно руки дойдут.
    Сделал. Целая тема про OpenHab на этом сайте.
     
    Последнее редактирование: 10 мар 2016
  5. ИгорьК

    ИгорьК Оракул Модератор

    ESP не под это заточен. Тот график, что я показал выше - с родной библиотекой. Через некоторое время я её переделаю и энергопотребление снизится ещё.
    Датчики метеостанций выдают в эфир пакет данных, обычно на частоте 433 МГц без проверки получения и засыпают. ESP, в отличии от них, - сетевое устройство и существенная часть энергии требуется для поддержания нахождения в сети. Пусть и на время включения, но это серьезные затраты.
     
    Последнее редактирование: 10 мар 2016
  6. Cadil

    Cadil Нерд

    Печально ... Похоже, ESP в принципе нельзя использовать в схемах энергонезависимых, беспроводных (в полном понимании этого слова) датчиков. Оптимизацией программы вряд ли удастся увеличить ресурс с нескольких недель до года.
    Хотя с другой стороны - энергозатраты ESP необъяснимо высокие. Сравним: импульс передачи с ESP на роутер длительностью меньше секунды с периодом 10 минут - 3 недели работы от аккумулятора и работа среднестатистического смартфона - контроль нахождения в сети, разговоры и т.п. - неделя работы без подзарядки аккумулятора!
     
  7. valeraba

    valeraba Нерд

    Не удивляйтесь. Слушать эфир это тоже крайне энергозатратная операция.
     
  8. ИгорьК

    ИгорьК Оракул Модератор

    Я думаю на месяц работы от двух АА я его раскручу. Для некоторых случаев этого достаточно.
     
  9. Cadil

    Cadil Нерд

    Есть USB-термометр, состоящий из датчика температуры DS18B20 и конвертера USB-UART (TTL). Термометр подключается к андроид-устройству через OTG-переходник.
    Как вам задача - написать программу, чтобы информацию о температуре с этого термометра вывести на монитор Андроида?
    Готов обсуждать объем пива, выпитого за мой счет. Замечу - в среде Windows такая конструкция работает.
     
  10. ИгорьК

    ИгорьК Оракул Модератор

    Я под заказ не работаю. Вам в раздел Закажу проект.
     
  11. Cadil

    Cadil Нерд

    Спасибо! Пойду туда.
     
  12. Cadil

    Cadil Нерд

    Посмотрел ссылку. Там - акцент на работу с Малиной.
    Объясните, пожалуйста, как через Wi-Fi информацию с термометра (DS18B20+ESP) вывести на монитор мобильного устройства? Без Малины и удаленного сайта.
    Заранее благодарю.
     
  13. Securbond

    Securbond Гуру

    Ищите как создать вэбсервер на ESP.
    И просто подключаетесь к странице термометра через браузер телефона, хотя наверное есть более красивые решения с созданием виджетов и т.п.
     
  14. Cadil

    Cadil Нерд

    Благодарю за предметные советы.
    Вебсервер с управлением двумя светодиодами создал довольно быстро. А вот подключиться к скрипту термометра без знания плюсов и луа - проблема. ПОМОГИТЕ!
    Ниже - init светодиодов, библиотека термометра - ds18b20.lua ИгоряК.
    Код (C++):
    wifi.setmode(wifi.STATION)
    wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
    print(wifi.sta.getip())
    led1 = 3
    led2 = 4
    gpio.mode(led1, gpio.OUTPUT)
    gpio.mode(led2, gpio.OUTPUT)
    srv=net.createServer(net.TCP)
    srv:listen(80,function(conn)
        conn:on("receive", function(client,request)
            local buf = "";
            local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
            if(method == nil)then
                _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
            end
            local _GET = {}
            if (vars ~= nil)then
                for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                    _GET[k] = v
                end
            end
            buf = buf.."<h1> ESP8266 Web Server</h1>";
            buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
            buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>OFF</button></a></p>";
            local _on,_off = "",""
            if(_GET.pin == "ON1")then
                  gpio.write(led1, gpio.HIGH);
            elseif(_GET.pin == "OFF1")then
                  gpio.write(led1, gpio.LOW);
            elseif(_GET.pin == "ON2")then
                  gpio.write(led2, gpio.HIGH);
            elseif(_GET.pin == "OFF2")then
                  gpio.write(led2, gpio.LOW);
            end
            client:send(buf);
            client:close();
            collectgarbage();
        end)
    end)
     
  15. Securbond

    Securbond Гуру

    А код на 2 странице данной темы не поможет ? там вроде бы все что вам нужно?
     
  16. Cadil

    Cadil Нерд

    К сожалению, не поможет - я не знаю С++.
     
  17. Securbond

    Securbond Гуру

    Это не с++ , Это LUA, если хотите заниматься ESP серьезно, то лучше начать изучать. Я вот то же пока только начинаю.... Надеюсь ИгорьК найдет на таких как мы время и сделает вводный курс ))))
     
  18. ИгорьК

    ИгорьК Оракул Модератор

    Роберто лучше сделал :)
     
    Securbond нравится это.
  19. Cadil

    Cadil Нерд

    Игорь!
    Потратьте , пожалуйста, свое время и напишите скрипт для чтения информации с термометра на локальном вебсерере.
    Думаю, для Вас не составит большого труда заменить несколько команд в своем же скрипте для связи с сайтом народмон.
    Выйти на другого программиста, который работает на С++, LUA и пишет для такого специфического железа как ESP, очень сложно.
     
    Последнее редактирование: 17 мар 2016
  20. Securbond

    Securbond Гуру

    Как раз скоро ДР. Закажу кому нибудь в качестве подарка.