Часы на esp8266 и max7219 + android управление

Тема в разделе "Глядите, что я сделал", создана пользователем IvanUA, 28 авг 2017.

?

Вы повторили это проект?

  1. Нет (просто ознакомился)

    35 голосов
    13,3%
  2. Да, один раз (попробовал)

    111 голосов
    42,0%
  3. Да, не однократно

    122 голосов
    46,2%
Можно выбрать сразу несколько вариантов.
  1. buba911

    buba911 Гик

    Тогда уж лучше ИМХО взять ClockEsp8266V4 в ней используется библиотека MD_Parola.h которая делает кучу всяких еффектов при смене дисплея. Вот если бы эту библиотеку в прошивку от Ивана прикрутить ...
     
  2. om1212

    om1212 Нерд

    Доброго дня!

    Собрал часики! Классные! Спасибо автору!
    Отключил погоду, будильники и др. Оставил только mqtt, чтобы вывести уличную температуру с Domoticz.
    И теперь не могу его победить(
    Брокер Mosquitto установлен, запущен на RaspberryPi, там же крутится Domoticz. Для пробы запускаю клиента, который передаёт в топике температуру. Другой клиент принимает нормально.
    Часы в этом топике ничего не видят (вернее, видят ноль).
    [​IMG][​IMG]
    [​IMG]
     
    Последнее редактирование: 14 сен 2018
  3. om1212

    om1212 Нерд

    Попробовал подписаться на топик с уличной температурой от Domoticz, который нормально работает по mqtt с sonoff на прошивке tasmota. Тоже самое, часы не видят значений.
    Вот сообщения от клиента брокера mqtt, который подписан на все сообщения в топике domoticz/out/[​IMG]
    [​IMG][​IMG]
    "Temper out _ Baldr" это датчик температуры на улице.

    P.S. Ещё заметил, что в вебинтерфейсе часов с настройками mqtt поле "Порт MQTT сервера" не принимает 4-х значные значения.
     
    Последнее редактирование: 13 сен 2018
  4. polsik

    polsik Нерд

  5. om1212

    om1212 Нерд

    Кажется понял в чём дело... Из Domoticz в топике передаётся несколько значений "description", "idx", "id", "name" и др. А нужно, чтобы передавалось одно значение. Тогда работает.
    Нужно или парсить (принимать все значения и выбирать нужное) или в Domoticz как-то в топике убирать лишние значения.
     
  6. ИгорьК

    ИгорьК Гуру

    Применяйте Node Red там где стоит Domoticz и будет приятно.
    Вот здесь читать. Там про выключатели, но смысл тот же.
     
    om1212 нравится это.
  7. om1212

    om1212 Нерд

    Спасибо за помощь, обязательно поизучаю!
    Пока сделал костыль в виде скрипта dzvents. Скрипт запускает в командной строке клиента брокера, которому в качестве аргумента передаётся температура с улицы.
    Скрипт:
    Код (Text):
    return {
        on = {
            devices = {'название датчика'},                                                                      
            timer = {'every minute'}                        
        },
        logging = {level = domoticz.LOG_INFO, marker = "TemperOutToMqtt"},

        execute = function(domoticz, clockESP)
            domoticz.devices('Temper out _ FineOffset').updateTemperature(temperature)  -- обновляем значение температуры
            local TemperaturaUlica = TemperaturaUlica = domoticz.utils.round(domoticz.devices('название датчика').temperature,1)   -- создаём локальную переменную с температурой и округляем до одного знака дробной части
            domoticz.log('Температура на улице - ' .. TemperaturaUlica .. ' гр.')  -- пишем в лог значение переменной (на всякий случай)
            CommandMqtt = ('mosquitto_pub -h 192.168.1.50 -t "temper/out" -m "'..TemperaturaUlica..'"')   -- готовим командную строку для запуска клиента брокера с необходимыми параметрами
            os.execute (CommandMqtt)  -- выполняем командную строку
        end
    }
     
    Последнее редактирование: 14 сен 2018
    Valerchik и ИгорьК нравится это.
  8. ИгорьК

    ИгорьК Гуру

    Я сделаю ссылочку на ваш пост из темы про Domoticz. Это не костыль - это хорошее решение.
     
    om1212 нравится это.
  9. om1212

    om1212 Нерд

    Попробовал передать на часы через mqtt отрицательную температуру (-25.5), на часах вместо первого символа образовалась кашица.
    [​IMG][​IMG]
    Температура 25.5 показана нормально
    [​IMG][​IMG]
    Подскажите, где в коде посмотреть вывод отрицательной температуры?
     
  10. IvanUA

    IvanUA Гуру

    Копайте здесь
    Код (C++):
      if(String(topic) == mqtt_sub) {
        tMqtt3 = 0;
        tMqtt4 = 0;
        if((payload[0] >= 48 && payload[0] < 58) || payload[0] == 45) { // в payload[0] - хранится первый полученный символ. 48, 58 и 45 - это коды знаков можете их посмотреть в fontUA_RU_PL_DE[]
          if(payload[0] == 45) {                                        // если первый символ = "-" (равен минусу) то tMqtt5 = -1
            tMqtt5 = -1;
     
    Там есть комментарии.
     
    Valerchik, Deniskyn и om1212 нравится это.
  11. RealArty

    RealArty Нерд

    Попробуйте прошить себе и увидите сразу кучу неприятностей, часы и минуты изменяются когда строка бежит, строка бежит через 5 секунд, так что время не увидешь, если изменить время пробега строки то часы отстают, вот такие пироги, а так красиво, но код написан через жо. Перепробывал кучу часов пока искал самый простой код только с синхронизацией часов, но увы их нет для max. Пришлось брать исходник для семисегментных индикаторов, вот начинаю переделывать. Автора часы всем хороши, но у меня постоянно отваливается вафля - моргают полностью квадратики и wemos постоянно пытается подключиться, пробывал все и подтяжки и кондеры, все равно отваливаются как им вздумается . Выписал другие модули посмотрим.
     
    Последнее редактирование: 15 сен 2018
  12. Deniskyn

    Deniskyn Гик

    Ваша критика излишня, покажите "ваш красивый код" который написан не через "ж",.....
    По поводу отвала вафли проверьте пайку, подтяжки и питание...
     
    Последнее редактирование: 15 сен 2018
  13. SergeiL

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

    Нравятся мне эти "понимающие" в коде люди. :)

    Автор написал так, как считал лучше, поделился своим кодом. Спасибо ему за это! Люди повторяют, им нравится, доделывают свои хотелки,

    Если в коде разбираетесь - напишите свои, лучше, поделитесь, здесь! Все будут благодарны Вам.
    Или все таки слабо? Проще модули заказать, и код с копипастить :)
     
    megavit66, Deniskyn, big_alex и 2 другим нравится это.
  14. IvanUA

    IvanUA Гуру

    Мне кажется тут дело не в железе. Основная беда ардуины - это то что есть библиотеки которыми мы пользуемся. Авторы этих библиотек - постоянно их улучшают, но и можно сказать ухудшают... Они начинают глючить. Вифи - у меня тоже иногда (очень редко) но подвисает так что не может подключиться к роутеру. Перезагрузка все восстанавливает. Я думал над этой проблемой, и для себя вижу только один выход. Надо отслеживать доступ к инету и если долго нет, то через какой то GPIO рестартовать модуль через RESET.
    Но руки пока до этого не дошли и до конца года увы не будет такой возможности.

    ПС. Попробуйте подобрать версию платы при компиляции.
     
    Valerchik нравится это.
  15. Mitrandir

    Mitrandir Гуру

    Попробйте канал сменить у вайвая
     
  16. ПетрЧ

    ПетрЧ Нерд

  17. polsik

    polsik Нерд

    А как надо?
     
  18. ПетрЧ

    ПетрЧ Нерд

    ссылку на проект я указывал.
     
  19. om1212

    om1212 Нерд

    Разобрался в чём дело. Некоторым переменным был присвоен тип данных "byte", а он не может принимать отрицательных значений. Присвоил им тип данных "int" и всё заработало.[​IMG]
    [​IMG][​IMG]
    Для тех кто хочет отобразить отрицательные температуры принимаемые по mqtt, нужно изменить тип данных переменных t3, t4, tMqtt3, tMqtt4, tMqtt5 на "int".


    [​IMG]
     
    Последнее редактирование: 18 сен 2018
    Valerchik, megavit66, Юра 80 и ещё 1-му нравится это.
  20. RealArty

    RealArty Нерд