Часы на NodeMCU Lua + MAX7219 минус все лишнее.

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

Метки:
  1. Voik

    Voik Гик

    Сделал, но результат тот же:
    Код (C++):
    E (36477) mqtt_client: MQTT connect failed
     
  2. ИгорьК

    ИгорьК Гуру

    Voik нравится это.
  3. Voik

    Voik Гик

    test-mqtt.PNG
     
  4. ИгорьК

    ИгорьК Гуру

    А вот и не работает москит. Куда-то все публичные открытые брокеры делись.

    Пробуйте такой брокер: broker.emqx.io порт тот же.
     
  5. ИгорьК

    ИгорьК Гуру

    И еще один брокер: public-mqtt-broker.bevywise.com
    Оба брокера, этот и выше имеют определенные ограничения для коннекта, к ним часами не присоединиться.

    Напишите мне в личку контакт телеграм, вотсап или вайбер, я дам адрес брокера.
     
    Последнее редактирование: 27 ноя 2024
  6. Voik

    Voik Гик

    К этому подключился:
    broker.emqx.io.PNG
    Видимо проблема на сервере. Напишу в поддержку.
     
    ИгорьК нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Не факт что там проблема. Возможно требуется tls шифрование, веб-сокет соединение, или вообще протокол другой, пятёрка, например.
     
    Voik нравится это.
  8. Voik

    Voik Гик

    Сегодня добрался до этого Убунту. Он запросил обновы.
    Обновился и заработал nodemcu-tools - полёт нормальный!
     
    ИгорьК нравится это.
  9. Voik

    Voik Гик

    Решил взять данные по широте и долготе из интернета при помощи сервиса http://ip-api.com
    Эти данные нужны для определения погоды на местности.
    Если в файле setuser.lua не указывать данные по широте и долготе, то соединяется с интернетом и определяет эти данные по IP. Если не удастся получить данные из интернета то по умолчанию широта и долгота будут по аэропорту Калькутты.

    Ещё решил выводить на матрицу данные календаря: день недели, число и месяц. Месяц можно цифрами можно буквами.

    Если выводить все эти данные одним блоком: и погоду, и микроклимат в доме, и данные календаря - то получается слишком много по времени, почти 30 секунд.

    Посему я решил эти данные разделить на три блока и выводить информацию так: часы, затем погода, затем часы, затем данные микроклимата в доме, затем часы, затем календарь, затем новый круг.

    NB! Другие датчики (типа ds18b) не тестировал.

    Архив запакован раром. если не открывается, то сменить расширение на rar
     

    Вложения:

    Последнее редактирование: 7 дек 2024
    ИгорьК нравится это.
  10. ИгорьК

    ИгорьК Гуру

    Класс! Дойдут руки - включу в проект с обязательной ссылкой на Вас.

    Кино давай :)
     
    Voik нравится это.
  11. Voik

    Voik Гик

    Вложения:

    • data+.zip
      Размер файла:
      3,2 КБ
      Просмотров:
      8
    Последнее редактирование: 8 дек 2024
    ИгорьК нравится это.
  12. ИгорьК

    ИгорьК Гуру

    Все таки спорно это. Работа хорошая, но утяжеляет происходящее.

    Я полагаю убирать информацию, когда она в установленных пределах. Температура и со2 в доме, изменение температуры на улице менее 4-5 градусов, только дождь или снег.

    Конечно, все на любителя и каждый может делать по-своему. :)

    Дни недели не влезают в размер экрана и их надо делать бегущими.
    Это возможно.
     
    Voik нравится это.
  13. Voik

    Voik Гик

    Хорошие идеи!
    Попробую календарь выводить, например, только утром до 10:00.
    А если прогноз по температуре такой же, как температура сейчас, то прогноз можно и не выводить.
     
    ИгорьК нравится это.
  14. ИгорьК

    ИгорьК Гуру

    Чуть переписал так:
    Код (Lua):
    print('\nWorks info by IP!\n')
    local getLocByIP, url, part, conn, city, lat, lon, offset
    getLocByIP = function()
        url = "/json/?fields=status,message,city,lat,lon,offset"
        part = "ip-api.com"
        conn = net.createConnection(net.TCP, 0)

        conn:on("receive", function(conn, str)
            print("Ответ от " .. part .. ":\n" .. str)

            city, lat, lon, offset = str:match('"city":"(%a+)","lat":(%d+%p%d+),"lon":(%d+%p%d+),"offset":(%d+)}')
            print('city, lat, lon, offset', city, lat, lon, offset)

            dat.lat = lat or dat.lat
            dat.lon = lon or dat.lon
            wth.offset = offset or wth.offset
            wth.city = city or wth.city
            conn:close()
        end)

        conn:on("connection", function(conn)
            conn:send("GET http://" .. part .. url .. " HTTP/1.1\r\n" ..
                "Host: " .. part .. "\r\n" ..
                "Connection: close\r\n\r\n")
        end)
        conn:connect(80, part)
    end
    getLocByIP()
    Это в рамках настройки доступа через каптив-портал, который уже работает вчерне.

    Кстати, зная где вы находитесь, насколько точно, скорее - подходяще, этот код определяет ваше положение?
     
    Последнее редактирование: 11 дек 2024
    Voik нравится это.
  15. Voik

    Voik Гик

    Так даже понятнее. :)
    Что это?
    Т.к. интернет у меня через 4г, то определяется столица по IP.
    А это разница в 50 км, и на пару градусов.
    Поэтому сам я этот метод не использую :(
     
    Последнее редактирование: 11 дек 2024
    ИгорьК нравится это.
  16. ИгорьК

    ИгорьК Гуру

    изображение_2024-12-11_103904343.png


    photo_5388875460789790040_x (1).jpg
     
    Voik нравится это.
  17. ИгорьК

    ИгорьК Гуру

    Я включил его в код, но моя проверка дает тот же результат - если это не крупный город, то применение - вопрос значимости расстояния. У меня получилось 80 км в одном случае :) Это серьезно.
     
    Voik нравится это.
  18. Voik

    Voik Гик

    Я в тестовой версии этим пользуюсь.
    А если каптив-портал, то можно уже знакомым дарить - минимум настроек: только данные вайфая.
     
    ИгорьК нравится это.
  19. Voik

    Voik Гик

    Я спросил у одного разработчика, который также использует ОМ и он мне подсказал, что можно брать данные специальным запросом с этого самого ОМ по названию населенного пункта:
    Код (C++):
    https://geocoding-api.open-meteo.com/v1/search?name=Moscow
    Моя деревня находится :).

    При возможности попробую на МК
     
    ИгорьК нравится это.
  20. ИгорьК

    ИгорьК Гуру

    Попробуй так:

    Код (Bash):
    https://geocoding-api.open-meteo.com/v1/search?name=Ivanovka
    ;)

    Да и по запросу Москвы там столько вылазит... аж на удивление.

    Это во многих случаях лишь даст координаты, которые проще получить на сайте. И, кстати, замену запятых на точки я сделал, если идем через каптив.
     
    Voik нравится это.