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

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

Метки:
  1. ИгорьК

    ИгорьК Гуру

    "На разойдись я сразу согласился. И разошёлся, то есть расходился." :)
    В концепцию то укладывается.
    Здорово что вы без пояснений разобрались с выводом на дисплей.
     
    Voik нравится это.
  2. ИгорьК

    ИгорьК Гуру

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

    Voik Гик

    О, прекрасная новость! благодарю! обязательно попробую!
     
    ИгорьК нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Подсказявка: нужно поправить _setuser.lua на тему i2c, подглядывая на последний файл на картинке ниже, взять два файла отсюда,

    upload_2024-11-22_19-3-35.png

    загрузить на модуль и исправить main.lua, с которым вы вполне дружны.
     
    Последнее редактирование: 22 ноя 2024
    Voik нравится это.
  5. Voik

    Voik Гик

    Есть контакт! Но гонит пургу:
    purga.PNG
    Пойду спать, а потом читать матчасть.
    З.Ы. Думаю три вольта мало - надо на пять подцепить.
     
  6. ИгорьК

    ИгорьК Гуру

    Найдите в модуле строку:
    Код (Lua):
    dt[nt[k]] = string.format("%0.1f", string.unpack(">f", s))
    и поверните стрелочку в другую сторону. Возможно это поможет, если у вас другая прошивка в датчике.
     
    Voik нравится это.
  7. Voik

    Voik Гик

    Спасибо за совет, но не помогло.
    Сначала, ничего не меняя, показал так:
    purga231124.PNG
    После переворота стрелки стало так:
    purga231124-0.PNG
    Вернул обратно, подышал рядом активно, чтоб СО2 добавить.
    Показал так:
    purga231124-1.PNG
    Т.е. работает, но надо подшаманить.
     
    Последнее редактирование: 23 ноя 2024
    ИгорьК нравится это.
  8. ИгорьК

    ИгорьК Гуру

    Сложно что-то сказать. Всё коррекции датчика, что предоставляет производитель, я в библиотеку заложил.

    Что касается со2, то у датчика есть автокалибровка, но для этого он должен непрерывно проработать неделю.

    Есть там команда немедленной калибровки, но её как раз я не стал делать, так как без эталона и соответствующих условий сделать не особо понятно.А "на глазок" смысла не вижу.

    Сложнее с температурой и давлением.

    Температура там корректируется только в одну сторону - сторону уменьшения. У вас, как видно, её надо увеличивать, но такой возможности нет в принципе.

    Влажность вообще не корректируется вручную.

    Возможно менять давление и высоту над уровнем моря, причём корректировка давления имеет приоритет над высотой.

    :(

    У меня датчиков два, оба работают более менее одинаково.

    P.S. Там есть запрос фирмаря, что он показывает у вас?
     
    Последнее редактирование: 23 ноя 2024
    Voik нравится это.
  9. Voik

    Voik Гик

    Тогда повешу неделю работать.
    Посмотрю, отпишусь.
     
  10. ИгорьК

    ИгорьК Гуру

    Во какая мысль: принудительно установите коррекцию температуры на ноль через библиотеку.

    Суть. Температуру датчик показывает явно заниженную. А коррекция как раз возможна только в эту сторону. Может каким-то образом эта коррекция была осуществлена.
     
    Последнее редактирование: 23 ноя 2024
    Voik нравится это.
  11. Voik

    Voik Гик

    Как только включаю, так выдаёт нормальные данные:
    scd30-ok.PNG
    Затем начинает температура падать, а влажность расти :(
    purga231124-2.PNG
    FW: 3.66
    Сделал. Начало (вроде) нормализироваться.
    t-corr.PNG

    Похоже, что корректировка Т помогла!
    Оставил комп на ночь работать и раз в 10 мин. брать данные с датчика.
    Утром напишу результат.
     
    Последнее редактирование: 23 ноя 2024
  12. ИгорьК

    ИгорьК Гуру

    Да, это признак того, что установлена неправильная коррекция температуры.

    У меня было так же, когда делал модуль и прописал лишний ноль в функцию коррекции.

    Кстати, этот датчик показался мне более чувствительным из всех трех потестированных. Быстрее чувствует повышение со2, быстро определяет проветривание.
     
    Последнее редактирование: 24 ноя 2024
    Voik нравится это.
  13. Voik

    Voik Гик

    Полёт нориальный.
    scd30-ok-241124.PNG
    Благодарю за помощь!


    А у меня нет пока других - не могу сравнивать.
     
    Последнее редактирование: 24 ноя 2024
    ИгорьК нравится это.
  14. Voik

    Voik Гик

    Так как показывает теперь и влажность, добавил значки градуса и процента:


    Символы:
    Код (C++):
    -- градус
    digl["g"]={'010','101','010','000','000','000','000','000'}

    -- процент
    digl["p"]={'010000','101001','010010','000100','001000','010010','100101','000010'}
    Добавил файл __printVlaga.lua
    Код (C++):
    do
        local t
        if wth.humy_scd30 then
          t = string.format('H%.0fp', wth.humy_scd30)
            dat.notime = true
           OUT(t)
            print('**********************************\nVlaga SCD30: ' .. t)
        end
    end
    Изменил файлы:
    __nolfs\main.lua
    _lfs\__printtempH.lua
    _lfs\__printtempnow.lua
    _lfs\__printtempFC.lua

    и модуль датчика SCD30 немного менял переменные.
     
    Последнее редактирование: 25 ноя 2024
    ИгорьК нравится это.
  15. ИгорьК

    ИгорьК Гуру

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

    Рад, что получился простой конструктор :)
     
    Voik нравится это.
  16. Voik

    Voik Гик

    Так и есть. Но не выбрасывать же теперь scd30. Пусть раз в минуту уж выводит инфу :)
     
    ИгорьК нравится это.
  17. Voik

    Voik Гик

    Хотел данные отправлять на MQTT, но выдаёт ошибку:
    mqqt-error.PNG
    Брал настройки с часов прошлой версии, где работает.
    Подскажите, пожалуйста, куда копнуть.
     
  18. ИгорьК

    ИгорьК Гуру

    Причин может быть несколько.

    1. Вытащите и посмотрите файл mqttset.lua. запишите его отдельно в мк.

    У меня брокер находится только в локалке, поэтому я мог забыть передать в соединение логин и пароль. Или там могут быть забиты данные от балды. То есть проследите, чтобы ваши регистрационные данные доходили до функции connect .

    2. Поищите свободные бесплатные брокеры и попробуйте к ним соединиться. Есть такие. Например у mosquitto.

    3. Если ваш брокер использует tls шифрование или сокеты, тогда забывайте, или придётся лопатить документацию и перекомпилировать прошивку самостоятельно.

    Почему так.

    ИМХО, mqtt брокер имеет смысл только в локальной сети, если не какие-то особые случаи.

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

    Остальное завтра.
     
    Последнее редактирование: 27 ноя 2024
    Voik нравится это.
  19. Voik

    Voik Гик

    Нашёл нули, заменил на переменные.
    Было:
    Код (C++):
    con:connect(brk, port, 0, 0, subscribe, merror)
    Стало:
    Код (C++):
    con:connect(brk, port, dat.mqlgin, dat.mqpass, subscribe, merror)
    Позже попробую с прежней версии взять эти файлы и сравнить.

    Надо именно поиграть, поэтому не к спеху совсем.
    Прежние версии часов и девайсы на Тасмота шлют в тот брокер инфу, а смотрю я её крайне редко и не испоьзую с толком.
     
    ИгорьК нравится это.
  20. ИгорьК

    ИгорьК Гуру

    Верните все взад, что сделали, и поправьте 44 строку:
    Код (Lua):
    function newm()
        m = mqtt.Client(dat.clnt, 60, dat.mqlgin, dat.mqpass) -- Сделать так
        m:lwt(dat.clnt..'/state', "Off", 0, 1)
        m:on("offline", function(con, msg)
    Это я действительно забыл указать в коннекте логин/пароль за ненадобностью в домашней обстановке.
     
    Voik нравится это.