Все тот-же ESP8266

Тема в разделе "ESP8266, ESP32", создана пользователем Mestniy, 19 фев 2016.

  1. ИгорьК

    ИгорьК Гуру

    Связь с Гуглом
    Код (C++):
    connection = nil
    do
    print('Start at '..tmr.now())
    conn=net.createConnection(net.TCP, 0)
    --print("Connection = "..conn)
    conn:on("connection",function(conn, payload)
                conn:send("HEAD / HTTP/1.1\r\n"..
                          "Host: google.com\r\n"..
                          "Accept: */*\r\n"..
                          "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua;)"..
                          "\r\n\r\n")
                connection = conn          
                end)
               
    conn:on("receive", function(conn, payload)
        print('\nRetrieved in '..((tmr.now()-t)/1000)..' milliseconds.'..t)
        print('Google says it is '..string.sub(payload,string.find(payload,"Date: ")
               +6,string.find(payload,"Date: ")+35))
        conn:close()
        end)
    t = tmr.now()  
    conn:connect(80,'google.com')
    print("Connection = ")
    print(conn)
    print(connection)
    end
    Проверка DS18b20
    Код (C++):
    require('ds18b20')
    do
    gpio2 = 4
    -- "Temperature : " .. ds18b20.read(addres[1]) .." ; "
    ds18b20.setup(gpio2)
    addres={}
    addres=ds18b20.addrs()
    print("Total DS18B20 sensors: "..table.getn(addres))

    for k, v in pairs(addres) do
         print("Sensor "..k.." = "..ds18b20.read(addres[v]).." C")
    end
    ds18b20 = nil
    package.loaded["ds18b20"]=nil
    collectgarbage()
    end
     
    Blink

    Код (C++):
    do
    pin = 3
    gpio.mode(pin,gpio.OUTPUT)
    gpio.write(pin,gpio.LOW)
    --gpio.mode(pin,gpio.INPUT)
    --print(gpio.read(pin))
    tmr.delay(5000000)
    --gpio.mode(pin,gpio.OUTPUT)
    gpio.write(pin,gpio.HIGH)
    gpio.mode(pin,gpio.INPUT)
    print(gpio.read(pin))
    end
    Get Time

    Код (C++):
    do
    function getTime()
        conn=net.createConnection(net.TCP, 0)
         conn:on("connection",function(conn, payload)
            conn:send("HEAD / HTTP/1.1\r\n"..
                     "Host: google.com\r\n"..
                     "Accept: */*\r\n"..
                     "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua;)"..
                     "\r\n\r\n")
            connection = conn          
        end)
        conn:on("receive", function(conn, payload)
                 time = string.sub(payload,string.find(payload,"Date: ")+23,string.find(payload,"Date: ")+31)
                 hour = string.sub(time, 0, 2) + 3
                 minute = string.sub(time, 4,5) + 0
                 second = string.sub(time, 7,9) + 0
                 print(hour.."-"..minute.."-"..second)
                 noconnect, trying, restarting =false, 0, 0
                 conn:close()
         end)
         conn:connect(80,'ya.ru')
    end
    getTime()
    end
     
    alp69, Mestniy и Securbond нравится это.
  2. Securbond

    Securbond Гуру

    Игорь, поясните еще один момент.
    название топика в скетче ардуино может быть только числовое? или текстовые названия то же проходят?
    Пока сделал так, все работает, но хотелось бы 14 и 15 топик обозвать смысловыми значениями например "dhtt", "dhth"..
    Код (C++):
    if(millis() > timeToCheckPins) {  // Если пришло время проверки, то определяем новое
        timeToCheckPins = millis()+ DELAY_TO_NEXT_CHECK_PINS;
       String t1 = (String) t; // Формируем стринг для отправки через UART
       String h1 = (String) h; // Формируем стринг для отправки через UART
        portOne.print("14:");
        portOne.println(t1);
        portOne.print("15:");
        portOne.println(h1);    
        String toUART = (String) pinMassive[nextPin][0]; // Формируем стринг для отправки через UART
        toUART += ":";
        toUART += (String) pinMassive[nextPin][1];
        portOne.println(toUART);
        nextPin++; // Выбираем пин для чтения в следующий раз
        if (nextPin >=2) { // Есди дошли до последнего - возвращаемся к первому
          nextPin = 0;
        }
     
  3. ИгорьК

    ИгорьК Гуру

    Только числовое. Так задумано, потому как есть жестокая связь между ногами ардуино и тем что к ним прицеплено :)
    В прининцпе - можно сделать и текстовое. Но это сами - если очень нужно будет :) Когда разберетесь с функциями парсинга на Lua.
     
    Securbond нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Вы бы указали реальные ноги что к чему там прицеплено и все станет ясно.
     
    Securbond нравится это.
  5. Securbond

    Securbond Гуру

    С этим разобрались.....
    Теперь про обратную связь. Ваш скрипт для esp позволяет передать числовые значения с плаваующей точкой на ардуино? или что то нужно дописывать самому ?
     
  6. ИгорьК

    ИгорьК Гуру

    Проверьте :)
     
  7. Securbond

    Securbond Гуру

    Всё сложнее чем казалось.
    Нужно подписываться еще на один топик в брокере, выковыривать название субтопика (символьное), потом передавать название субтопика и данные на дуину и разбирать его там.
    Короче сейчас, без знания Луа это кажется не выполнимым. Придется потратить месяцок, два, на то что бы хоть немного разобраться в языке.:(
     
  8. alp69

    alp69 Форумчанин

    А Вы прошили модуль какой прошивкой? Надеюсь с поддержкой плавающей точки?
     
  9. ИгорьК

    ИгорьК Гуру

    Ну это ааааааааааашипка. Скрипт подписан на все топики типа arduino01/# и разбирает их на составные части.

    Модулю со стороны ОпенХаба идут сообщения с топиками, типа arduino01/11 - значение 12.34 или arduino01/3 - значение 24.6, а скрипт их превращает в 11:12.34 и 3:24.6 и в таком виде гонит в Ардуино.
     
  10. Securbond

    Securbond Гуру

    Это я понял.. Понять бы ещё Как правильно сделать ..
    Подписаться на все топики на брокере и потом отсеивать нужные или есть возможность подписаться всего на два разных топика из одного скрипта
    И внести данные с каждого в свои стринги?
     
  11. Securbond

    Securbond Гуру

    Да .. Прошивку делал с плавающей....
     
  12. ИгорьК

    ИгорьК Гуру

    Так, думаю, лучше. Так у меня в скрипте уже подписка оформлена, кажется. Я уж и забыл как там сделано.

    Используйте MqttSpy для наладки и тестирования! Шлите топики на ESP и смотрите что получается.

    А фильтровать можно и в ESP и на Ардуино - что проще и привычнее Вам.
    А можно вообще ничего лишнего не отправлять :)
     
    Последнее редактирование: 25 фев 2016
    Securbond нравится это.
  13. ИгорьК

    ИгорьК Гуру

    На Гиктайме заметка. Прошивка модуля и программирование в среде Arduino. Многие вопросы снимутся.
     
  14. Securbond

    Securbond Гуру

    Ещё полезное видео для начинающих

     
  15. ИгорьК

    ИгорьК Гуру

    Немного тоскливое видео. Мне показалось, что авторы снимают его ради съемок и не понимают особенностей NodeMCU.
    Надо, надо сделать соответствующую тему для новичков....
     
  16. DimNsk

    DimNsk Нерд

    Зачем усложнять простое?
    Есть Arduino IDE for ESP826, все то же самое простой язык море примеров, покрывающее базовые потребности любителей.
    PS проект на GitHub постоянно обновляется и расширяется
     
  17. ИгорьК

    ИгорьК Гуру

    Нравится мне. Не отношусь к фанатам Arduino IDE.
    А на счёт усложнять... Сначала этот ананас надо попробовать. Вдруг окажется что он вкусный и простой.
     
    Последнее редактирование: 6 мар 2016
  18. Securbond

    Securbond Гуру

    Когда можно ожидать от Вас курс введения в Lua? Зная как Вы пишете, будет интересно. В конце марта поеду Маман теплицу автоматизировать. Как раз хочется реализовать на ESP+NodeMCU.
    Задача элементарная. Открывать форточки в теплице в зависимости от температуры и отслеживать это через инет ( не имя внешнего IP и домашнего сервера, т.е посредством свободного облачного mqtt )
     
  19. geher

    geher Гуру

    А не подскажет ли кто, как бороться с тем, что Esplorer (v0.2.0-rc2) не с первого раза соединяется с ESP (прошивка nodemcu_integer_0.9.6-dev_20150704.bin). Ругается, что не смогла опознать прошивку. После нескольких переключений скорости туда-сюда или нескольких подключений/отключений порта все-таки соединяется и после соединения работает нормально, но раздражает такое дело жутко.
    Причем у меня два вида плат, ESP-01 и NodeMCU DevKit v0.9, а поведение абсолютно одинаковое.
    Это версия Esplorer такая, или стоит поискать другую версию прошивки nodemcu?
     
  20. Securbond

    Securbond Гуру

    Где то мельком видел что нужно отключить автоопределение прошивки, честно говоря не искал где это делается .. Возможно это как раз то что Вам нужно если напрягает.