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

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

?

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

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

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

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

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

    chipmoca Гик

    Иван, спасибо тебе большое за проект!
    Если можно, одна хотелочка. Раз есть кнопочка, возможно реализовать на нее дополнительные функции?
    Например одиночное нажатие - показать температуру. Двойное - прогноз, и.т.д. Или как-то по длительности нажатия или просто по кругу. А то хочешь глянуть температуру - приходится ждать.
     
  2. IvanUA

    IvanUA Гуру

    здесь
    Код (C++):
    humiDht22 = (int) humiDht22;
    Я уже добавил на кнопку отображение температуры. Дальше только полет вашей фантазии...
    ПС. На базе последнего проекта можете делать что угодно, там уже столько всего напихано))))
    ППС. Кстати в спальню последнюю прошивку обрезал так (все датчики, часть настроек и еще чего), что все время отображаются часы и на пару секунд только короткая дата, температура в комнате и температура на улице. Ночью только часы. Кнопка обновляет прогноз и выводит его в бегущую строку (или из веб). Это визуально, а так, все остальные функции - MQTT, будильники, даты.... все работает но не напрягает "глаз"... Так что все ограничивается только полетом вашей фантазии... Творите!!!
     
  3. polsik

    polsik Нерд

    у кого компилируется последняя прошивка скиньте пожалуйста свои библиотеки и какая версия платы
     
  4. buba911

    buba911 Гик

    Здравствуйте Иван. Полёт фантазии опережает знания. Если не сложно можно ли сделать такую феньку, чтобы на вторых часах была возможность показа температуры и влажности с первых часов через MQTT?
    Пробовал сделать по аналогии показа температуры с улицы, но где-то у меня кривые руки.
    Я сделал такое на 2-х часах, но показания температуры и влажности стоят на 0-ле, хотя на MQTT Сервере показывается температура с 1-х часов показывает правильно.
    Буду признателен за совет.
     

    Вложения:

    • SPB.JPG
      SPB.JPG
      Размер файла:
      43 КБ
      Просмотров:
      559
    • MQTT.JPG
      MQTT.JPG
      Размер файла:
      30,3 КБ
      Просмотров:
      539
    • temp.JPG
      temp.JPG
      Размер файла:
      83,3 КБ
      Просмотров:
      544
  5. IvanUA

    IvanUA Гуру

    Надо создать переменные для хранения названия входящих топиков температуры и влажности.
    По аналогии с внешней температурой принять и поместить в свои переменные температуру и влажность.
    Потом вывести показания этих переменных.
    Ну и в вебе добавить настройки входящих топиков температуры и влажности.

    Все исходные есть, делайте по аналогии.

    ПС. Если честно, то не понимаю причины таких манипуляция. У вас ведь часы эти стоят в разных комнатах, там соответственно температура и влажность свои.
     
    Последнее редактирование: 23 авг 2018
    Deniskyn нравится это.
  6. buba911

    buba911 Гик

    Хмм, вроде так и делал, везде заменил *pub* на *sub* для домашней температуры и влажности (как на фото из моего предыдущего сообщения) и в программе и в вебе. Так-же в вебе добавил выбор MQTT для влажности.

    А мои "хоромы" только 3 комнаты, и разницы по температуре и влажности быть не должно.
     

    Вложения:

  7. 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;
            if(payload[1] >= 48 && payload[1] < 58) {                   //  здесь проверяем уже второй символ что он является числом...
              tMqtt3 = payload[1] - 48;                                 // если от кода числа отнять 48 то получим число.... К примеру код "0" = 48 если от 48-48 то получим 0
              if(payload[2] >= 48 && payload[2] < 58) {
                tMqtt3 = tMqtt3 * 10 + (payload[2] - 48);               // если третий знак тоже число, то второй знак был десятками, умножаем его на 10 (получаем ествественно десятки
              }
            }
            if(payload[3] == 46) {                                      // если третий знак не число, то проверяем его на то что но является точкой...
              if(payload[4] >= 48 && payload[4] < 58) tMqtt4 = payload[4] - 48; // если третий знак точка и четвертый знак является числом, то это десятые значения
            }
            if(payload[2] == 46) {                                      // тоже самое со втрорым знаком...
              if(payload[3] >= 48 && payload[3] < 58) tMqtt4 = payload[3] - 48;
            }
          } else {                                                      // здесь таже самая процедура но уже с положительными числами))))) tMqtt5 = 1 - это признак того что число положителньное или отрицательное....
            tMqtt5 = 1;
            tMqtt3 = payload[0] - 48;
            if(payload[1] >= 48 && payload[1] < 58) {
              tMqtt3 = tMqtt3 * 10 + (payload[1] - 48);
              if(payload[2] == 46) {
                if(payload[3] >= 48 && payload[3] < 58) tMqtt4 = payload[3] - 48;
              }
            }
            if(payload[1] == 46) {
              if(payload[2] >= 48 && payload[2] < 58) tMqtt4 = payload[2] - 48;
            }
          }
        }
        tMqtt3 = tMqtt3 * tMqtt5;                                        // через tMqtt5 - определяем число будет положительным или отрицательным.....
      }
    И в переменную tMqtt3 сохраняет целую часть числа со знаком, а в переменную tMqtt4 дробную часть числа.
    Проще говоря вам надо или как то модернизировать эту часть кода, или сделать еще несколько таких частей для ваших температуры и влажности....

    Удачи Вам.
     
  8. buba911

    buba911 Гик

    Спасибо за ответ, но я так и делал. Если вы посмотрите фото из поста с первым вопросом. temp.JPG
     

    Вложения:

    • MQTT.JPG
      MQTT.JPG
      Размер файла:
      56,6 КБ
      Просмотров:
      491
    • MQTT1.JPG
      MQTT1.JPG
      Размер файла:
      32,5 КБ
      Просмотров:
      511
  9. IvanUA

    IvanUA Гуру

    А вы на свой топик подписывались и в сетапе и реконнекте?
    Код (C++):
    MQTTclient.subscribe(mqtt_sub_temp);
    У вас в коде должна быть эта строка два раза...
     
  10. buba911

    buba911 Гик

    Ну да, оди раз здесь MQTT.JPG

    И в реконекте
    MQTT1.JPG
     
  11. IvanUA

    IvanUA Гуру

    Добавьте это в код:
    Код (C++):
      if(String(topic) == mqtt_sub_temp) {
       //--------------------------------------
        Serial.println(topic);
        for(int i = 0; i < length; i++) {
          Serial.print((char)payload[i]);
        }
        Serial.println("");
       //--------------------------------------
        tMqtt6 = 0;
        tMqtt7 = 0;
    Что получаете в компорт?
     
    Последнее редактирование: 24 авг 2018
    buba911 нравится это.
  12. RealArty

    RealArty Нерд

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

    buba911 Гик

    Такое впечатление, что вообще нет связи с MQTT, буду копать дальше.
    Код (C++):
    IP adress : 192.168.0.220
    22:41:00  Proba #1   17:32:41
              Proba #2   17:32:42
              Proba #3   17:32:43
    17:32:43  24.08.2018 DW = 6
              Time update OK.
    17:32:43  Getting weather forecast for City ххххххх...
              w.
              Getting weather forecast - is OK.
    17:32:43  Getting weather forecast for tomorrow...
              Getting weather forecast for tomorrow - is OK.
     
     
  14. IvanUA

    IvanUA Гуру

    Оставьте на это время включенный ком порт.... будет точно видно когда начнутся первые неполадки
     
  15. IvanUA

    IvanUA Гуру

    При подключении к MQTT у вас в ком порте должна быть надпись
    "MQTT reconnection...connected."
    Это значит что вы удачно подключились к MQTT серверу.
    Если нет, то будет какая то ошибка.
    Увы на вашем скане не видно проходит подключение или нет. Дайте больше информации с ком порта.
     
  16. IvanUA

    IvanUA Гуру

    И как ваши успехи?
     
  17. buba911

    buba911 Гик

    Добрый день Иван, вы не могли бы объяснить когда и сколько раз вызывается функция
    void callback(..
    ?
    Соединение с MQTT есть,
    3:02:50 MQTT reconnection...connected
    13:03:50 MQTT reconnection...connected
    13:04:50 MQTT reconnection...connected
    но функция callback как я вижу испоняется только один раз и поэтому ничего не показывает.
     
  18. IvanUA

    IvanUA Гуру

    Функция Callback - вызывается автоматически при получении входящего сообщения.
    Но входящее сообщение доступно когда есть подключение к серверу.
    Так проверяем есть ли соединение с сервером и если его нет пробуем соединиться повторно.
    Код (C++):
    if(!MQTTclient.connected()) {
            reconnect();
     
    buba911 нравится это.
  19. polsik

    polsik Нерд

    https://picua.org/image/12.a3LKm я победил, показания температуры через mqtt. на esp установлена прошивка от wfi-iot.com данные передаются на http://flyhub.org длинна топика не должна превышать 25 символов.
    P.S. так как с библиотеками никто не помог пришлось мудрить через одно место, нихрена не получается скомпилировать хоть тресни, выдает кучу ошибок
     
    Последнее редактирование: 26 авг 2018
  20. urg2000

    urg2000 Нерд

    Добрый вечер. Иван подскажите где поменять местами код чтобы сперва выводилась температура на улице потом в доме, потом влажность и давление?