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

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

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

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

    А их на дисплее нет. Просто нет.
    Данных не так много, чтобы не разобраться.
    В нормальном режиме идет смена: часы =>температура на улице => ожидаемая температура на улице => ожидаемая погода => (если есть датчик) температура в доме.
    Если что-то отсутствует - значит проблема. Втыкаем часы в компьютер и все выясняется.
     
  2. SergeiL

    SergeiL Оракул Модератор

    А у меня еще проще.
    На всех, кроме детской - часы =5сек=>температура на улице =5сек=> часы. В детской только часы.
    И то, порой стоишь и ждешь, чтобы увидеть температуру или время.
    На большей части часов стоят HDC1080 - температура и влажность, на одних DS18B20+HIH5030, отсылается в OH. Честно говоря, некорректных значений, не видел.

    Если по MQTT температуру не получал более 15 мин на часы, то отображаются только часы.
    И на OH , если с часов не получал инф. более 15 мин. то меняю цвет показаний с зеленого на серый, и вывожу скрытое время последнего изменения.
     
    Последнее редактирование: 15 сен 2018
    ИгорьК нравится это.
  3. ИгорьК

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

    Что показала сборка.

    Выпаиваем гребенку и заменяем ее проводами. Это позволяет существенно уменьшить размер корпуса.

    Модуль wemos d1 mini БЕЗ ГРЕБЕНКИ отлично крепится через отверстия в плате матриц. На 3мм винты надеваем пластиковые шайбы. wemos становится точно между винтами на края шайб. Сверху поджимаем еще пластиком и зажимаем гайкой На винт льем синий локтайт:

    maxxxx.jpg
    Получается очень компактно.

    Сделал свою коробочку для часов:
    caseMAX.jpg

    Прикладываю файлы stl. Они именно для установки wemos d1 mini. Места для бОльших модулей там нет
    Коробочка в двух вариантах. Разница в глубине корпуса 2 мм. Тот что длиннее рассчитан на вставку перед модулем 2мм прозрачного пластика, что позволяет наклеить пленку.

    Выглядит, в итоге, так. Те часы, что спереди со стеклом, задние - без:
    часы.jpg

    upload_2019-3-25_18-50-16.png


    А также stl красных пластиковых фиговин, что держат wemos.
     

    Вложения:

    • MAX7219.zip
      Размер файла:
      59,5 КБ
      Просмотров:
      195
    • Втулки3.zip
      Размер файла:
      2,9 КБ
      Просмотров:
      107
    Последнее редактирование: 25 мар 2019
    abf, sys, mex79 и 3 другим нравится это.
  4. SergeiL

    SergeiL Оракул Модератор

    Супер!
    Долго искал светофильтр для индикатора, внезапно нашел в виде пленки для тонировки авто стекл.
    Коричневый нормально подходит для красных индикаторов.
     
    sys и ИгорьК нравится это.
  5. ИгорьК

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

    Вот поправочка. Файл asknarod.lua надо делать таким:
    Код (Lua):
    do
    wth.narod = nil
    local sens = {7466,55890,51000,2286} -- moscow
    -- local sens = {48034,44857,27143,4182} -- tambov
    -- local sens = {11113, 30060, 6664, 2439} -- dacha
    local nSensors = {}
    local cnt, avg, uu, calln, min
    ---[[
    local exitn = function()
        min, nSensors, sens, uu, calln, exitn  = nil, nil, nil, nil, nil, nil
    end
    --]]
    calln = function()
        print('Got Narod!')
        table.foreach(nSensors, print)
        narod = nil
        package.loaded["_asknarod"]=nil
        min = 100
        for k,v in pairs(nSensors) do
            uu = tonumber(nSensors[k])
            if uu then
                if uu < min then min = uu end
            end
        end
        print('min = ', min)
     
        if min ~= 100 then
            wth.narod = string.format("%.1f", min)
            if wth.apixu then
                if math.abs(tonumber(wth.apixu) - min) < 3 then
                    wth.maintemp = string.format("%.1f", min)
                else
                    wth.maintemp = wth.apixu
                end
            end
        else
            if wth.apixu then wth.maintemp = wth.apixu end
            print('Narod lost')
        end
        print('Narod:', wth.narod, 'Apixu:', wth.apixu,'\nNow: ',wth.maintemp)
        exitn()
    end

    net.dns.resolve("narodmon.ru", function(sk, ip)
        if (ip == nil) then
            print("Narod lost!")
            exitn()
        else
            narod = require("_asknarod")
            narod.setnarod(sens)
            narod.asknarod(nSensors, calln)
        end
    end)
    end
    Тот что попал в раздачу, видимо, подпил водовки :)
     
    sys нравится это.
  6. IvanUA

    IvanUA Гуру

    Допил чы не допил, а то как то подпил ни понимай))))
     
    ИгорьК нравится это.
  7. ИгорьК

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

    Что хочу добавить для повторяющих проект или делающих свой с участием Народного Мониторинга.

    Как показал опыт, при зависании какого-нибудь датчика, Мониторинг перестает выдавать его на карту.
    То есть, в момент выбора номеров датчиков для анализа на минимум по карте мы видим всегда рабочие датчики и заносим их в таблицу для обработки.

    Вместе с тем, если впоследствии датчик зависает, то не смотря на неотражение его на карте, на запрос информации с него по GET ответ приходит со старыми данными. (я то думал, что и в ответ они не включаются)

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

    Чтобы побороть "применение" зависших датчиков можно вести лог их опроса и проверять на неизменение в течение определенного времени, после чего выкидывать из анализа. Возможно я как-нибудь это сделаю.

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

    По своему разумению и опыту вы можете уменьшить или увеличить эту разницу, внеся правку в строку
    Код (C++):
     if math.abs(tonumber(wth.apixu) - min) < 3 then
    в файле askarod.lua

    Удачи всем и спасибо за понимание.
     
  8. abf

    abf Нерд

    Здравствуйте,
    несколько вопросов от новичка
    пользуюсь инструкцией на первой странице
    НО
    2-й шаг через ГУИ не проходит - черный экран терминала , а если открыть отдельно терминал то ошибка -
    File "/home/fesenko7/Документы/Anduino/Gui_заливальшик_софта_в_8266/nodemcu-pyflasher-master/esptool.py", line 200, in _set_port_baudrate
    self._port.baudrate = baud
    AttributeError: 'unicode' object has no attribute 'baudrate'

    поэтому заливал бинарник через командную строку -
    esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu-master-14-modules-2018-08-31-12-54-41-float.bin
    так проходит
    но вопрос в чем проблема с ГУИ ( гугл пока не помог :-( )
    Далее залил и сконфигурил файлы с первой страницы - AmperkaMAX7219.zip
    но так как пока нет 18В20 (в пути из китая) то ошибка +85 , я так понимаю что ее победили прошивкой
    Amperka12_16alltzMos2.zip с 4-й странички , но вот ее залить не получается, когда запускаю _init.lua - ошибка
    точнее стартует и
    192.168.24.145 255.255.255.0 192.168.24.1
    dofile("_init.lua")
    Try Run setglobals.lua
    > Client: Clock6103615
    No DS18b20!
    Got Internet!
    Got Time: do main
    Got Sky codes: 1000 1003
    Got Temp: 7.0
    Got Max: 9.2 Min: 3.5
    Exit Apixu.
    PANIC: unprotected error in call to Lua API (asknarod.lua:2: attempt to index global 'wth' (a nil value))
    ets Jan 8 2013,rst cause:2, boot mode:(3,6)
    load 0x40100000, len 27164, room 16
    tail 12
    chksum 0xfb
    ho 0 tail 12 room 4
    load 0x3ffe8000, len 2356, room 12
    tail 8
    chksum 0xc8
    load 0x3ffe8934, len 136, room 0
    tail 8
    chksum 0xb2
    csum 0xb2
    ����n�{��o|�l$ld`c��|s�d�g��'�
    NodeMCU custom build by frightanic.com
    branch: master
    commit: 8181c3be7aed9f0a0ceb73ac8137c1a519e8a8e9
    SSL: true
    modules: adc,bit,bme280,dht,ds18b20,file,gpio,http,i2c,mqtt,net,node,ow,rtcfifo,rtcmem,rtctime,sjson,sntp,spi,tmr,uart,websocket,wifi,tls
    build created on 2018-07-11 15:25
    powered by Lua 5.1.4 on SDK 2.2.1(cfd48f3)
    lua: cannot open init.lua
    возможно проблема из за неправильной конфигурации файлов - _asknarod.lua
    и еще вопрос , где можно найти данные для моего региона чтобы заменить
    local sens = {7466,55890,51000,2286} -- moscow
    на правильный?
     
    Последнее редактирование: 26 окт 2018
  9. ИгорьК

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

    ОК.
    1. Почему прошивка льется одним способом и не льется другим - я не знаю. Через esptool льется всегда, а в остальных случаях - как придется.
    2. Чтобы узнать номера датчиков для вашего региона, надо щелкать по их изображению на карте и там у каждого есть число - смотрите внимательнее.
    3. Судя по отчету об ошибке, ключевое " attempt to indexglobal 'wth'". Это говорит от том, что кто то из нас, или вы или я, перепутал версии прошивок.
    Почистите все файлы и залейте из одного комплекта.
    Я проверю только завтра. Возможно косяк мой - я выкладываю здесь только 100% рабочие версии, сам работаю с другими.
     
  10. abf

    abf Нерд

    короче потеряв немного времени вернулся на первый вариант - AmperkaMAX7219.zip , но в файлике - main.lua в строчке 60 поменял на - t = dat.maintemp or dat.apixu . Тогда нет ошибки 85 градусов
     
  11. abf

    abf Нерд

    у меня https://narodmon.ru не открывается , по поиску нашел что они перешли в другой домен - https://narodmon.com , я так понимаю для примера это 33933 , я прав ? (скрин экрана не добавить , нужно на другой хостинг выкладывать :-( )
    попробовал исправить но все равно ошибка
    Под версией прошивки подразумевается bin файлик ? или лист с lua файлами ?
    я заливаю либо из каталога старого или нового , в новом заменил файл asknarod.lua так как он на странице 4 указано что должен быть заменет
    Сейчас работает первая (старая версия без народмониторинга) с исправленной 60 строчкой
     
  12. ИгорьК

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

    Не пользуйтесь последней версией asknarod.lua, видимо я далеко ушел от того что опубликовано на сайте. Залейте комплект файлов из второй версии - из одного zip. Там есть ошибка но вы ее не заметите. Исправлю позже.
    Что касается народного мониторинга - со смартфона не вижу и не прокрмментирую. Чуть позже.
     
  13. abf

    abf Нерд

    спасибо за информацию
    А можно как то яркость снизить программно?
    а то вырви глаз , хотелось бы немного снизить
     
  14. ИгорьК

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

    Можно. Сейчас она снижается сама с 22 до 6 (или 7, не помню) до минимума в другое время - 11 единиц из 15 возможных.
    Но все лишь в понедельник.
    Однако даже минимум - он яркий. Выход - клеить тонировочную пленку от автомобиля или паять резисторы.
    Как паять - смотрите в теме Ивана, там где-то есть ссылка.
     
  15. ZAZ-965

    ZAZ-965 Гуру

    Открываются и narodmon.com и narodmon.ru - com для отрисовки карты использует google maps, ru использует яндекс карты.
     
    ИгорьК нравится это.
  16. abf

    abf Нерд

    у меня сайт открывается но пустое серое поле , в правом верхнем углу маленькое окно от народного монитора - новости проекта , ближайшая вебкамера и тд но тоже не работает
    возможно только от моего провайдера так
    ком работает как и должно быть
     
  17. ИгорьК

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

    Номера датчиков нашли?
     
  18. abf

    abf Нерд

    какой файлик смотреть с этой регулировкой, может сам разберусь :)
     
  19. ИгорьК

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

    main.lua

    SmartSelect_20181026-121455_Bitbeaker.jpg
     
    abf нравится это.
  20. abf

    abf Нерд

    ну на ком сайте на ближайших ко мне точках мониторинга есть такие цифиры - 33933 15382 6122 13451
    если это то что нужно то нашел, но я сейчас залил старый вариант прошивки, и пока хочу разобраться с яркостью , когда получится снизить буду с монитором разбираться.
    Да и еще для монитора uuid - это логин для монитора или мейл ? и api_key тот же с сайта https://www.apixu.com/my/ ?