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

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

?

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

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

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

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

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

    IvanUA Гуру

    Проверил кажись сохраняется.
    Спасибо, поправил.
    Думаю что да. А что это? MQTT - сервер?
    В принципе можно эти настройки загнать в веб.
    Да тоже такое заметил. Поищу где.
    ПС Поправил на гитхабе.
     
    Последнее редактирование: 26 янв 2020
  2. max50a5

    max50a5 Гик

    Если честно, то не знаю. Там можно получить ключ, но что с ним особо не вникал. Тут есть описание.
    Самое интересно, что можно получить json-строку по адресу https://api.thingspeak.com/channels/967210/feeds.json?results=1, где 967210 - это ID публичного канала( в данном случае это мой канал). То есть для получения данных нужно отправить запрос, получить строку и распарсить ее.
    Данные обновляются каждые 5 минут. Что нам нужно из этой строки? Вот пример(выделил):
    created_at - время последнего обновления, пригодится, чтобы знать, когда последний раз обновлялись.
    field1 - field4 - наши данные, в данном случае температура, влажность, давление в гПа и заряд батареи. Вообще field могут быть от 1 до 8.
    Как-то так. Поле для ввода ID канала сделать смог, а дальше никак. Вся надежда на Вас.
    Если не сложно.
     
  3. Pitruxa

    Pitruxa Гик

    Да, это тоже бесплатный MQTT. Позволяет так же обмениваться данными как на cloudmqtt.com, только ещё и графики там можно рисовать.
    Было бы превосходно сделать выбор в вэб-интерфейсе, куда отправить данные, на cloudmqtt.com или на thingspeak.com
     
  4. IvanUA

    IvanUA Гуру

    Скажу честно что распарсить строку намного сложнее чем принять данные по mqtt. И естественно затратнее для еспхи.
    Ого, а если в умном доме сработал датчик движения?
    Да не сложно. Буду что то обновлять и добавлю.
    Если этот сервис работает как cloudmqtt.com, то можно его настройки вбить в вебе и пользоваться. А вот с выбором разных серверов вот честно, думаю что для домашних часов это уже лишнее. Я к примеру забил свой локальный сервер, сделал мост с локального на cloudmqtt.com, и жужжит без проблем))))
     
  5. chipmoca

    chipmoca Гик

    датчик tH при любом выборе, после перезагрузки сбрасывается на MQTT2.
    Иван, все-таки не сохраняется. Сейчас пробовал на двух (однострочных), одинаково.. Если прошиваешь двух-строчной версией, то нормально сохраняется. А в однострочной выбираешь все датчики "нету" , перезагружаешься - tH становится MQTT2.
    И есть надежда, что заработает народмон?

    ЗЫ Прошивал bin.
     
  6. chipmoca

    chipmoca Гик

    Когда-то читал, с него можно подписываться на сторонний брокер по MQTT. Но сам не разбирался еще с ним.
     
  7. Mihail78

    Mihail78 Нерд

    Из поста 4915 не пробовали устанавливать? настройки все сохраняются, Mqtt и narodmon работают исправно
     
    chipmoca нравится это.
  8. Pitruxa

    Pitruxa Гик

    Немного не так, для работы с ним нужно всего лишь Channel ID и Write API Key или Read API Keys.
    Просто есть другой, известный Вам проект, который умеет тянуть показания датчиков с thingspeak.com. Но нужно чтобы Ваши часы могли эти данные туда отправлять.
    Посмотрите ЛС.
     
  9. chipmoca

    chipmoca Гик

    Да, все сохраняется! Но то что Вы исправили (отображение tH), это был не баг а фишка ) Там можно было отображать 5 знаков, Напряжение, ток.. Как говорится не " Не хлебом единым...."

    ЗЫ В идеале бы.. что-бы все 5 датчиков можно было-бы выбирать MQTT (сейчас три). Потому-что одни часы стоят с датчиками, а в другой комнате часы без датчиков и нет возможности всю информацию с первых часов смотреть.
     
  10. max50a5

    max50a5 Гик

    Вот пример из сети:
    Код (C++):
    void out(void){
      if(config.os==2){
        String url="http://api.thingspeak.com/channels/";
        url+=config.chid;
        url+="/feeds.json?results=1";
        HTTPClient client;
        client.begin(url);
        int httpCode=client.GET();
        if(httpCode>0){
          if(httpCode==HTTP_CODE_OK){
            httpData=client.getString();
            DynamicJsonBuffer jsonBuffer;
            JsonObject& root=jsonBuffer.parseObject(httpData);
            if(root.success()){
              outside.temp      = root["feeds"][0]["field1"];
              outside.pres      = root["feeds"][0]["field3"];
              outside.humidity  = root["feeds"][0]["field2"];
              outside.bat       = root["feeds"][0]["field5"];
              outside.tempi     = root["feeds"][0]["field6"];
              outside.presi     = root["feeds"][0]["field8"];
              outside.humidityi = root["feeds"][0]["field7"];
              String updated    = root["feeds"][0]["created_at"];
              char buf[21];
              updated.toCharArray(buf,21);
              int ye=atoi(strtok(buf,"-T:"));
              int mo=atoi(strtok(NULL,"-T:"));
              int da=atoi(strtok(NULL,"-T:"));
              int hr=atoi(strtok(NULL,"-T:"));
              int mn=atoi(strtok(NULL,"-T:"));
              int sc=atoi(strtok(NULL,"-T:"));
              int a=(14-mo)/12;
              int y=ye-a;
              int m=mo+12*a-2;
              int R=7000+(da+y+y/4-y/100+y/400+(31*m)/12);
              int wd=R%7;
              tmElements_t updTime={sc,mn,hr,wd,da,mo,ye-1970};
              outside.updated=makeTime(updTime);
            }
            client.end();
          }
        }
      }
      httpData="";
    }
    Это мой датчик так отправляет, это же погода. :)
    Это хорошо.
    А так же принимать.
     
  11. IvanUA

    IvanUA Гуру

    С этого и надо было начинать))) бинарник я не правил....(я их вообще редко обновляю, и выкладываю их обычно для тестов в начале и в конце новой прошивки))) ну да ладно... сейчас залью..
    ПС. обновил бинарник.
     
    chipmoca нравится это.
  12. IvanUA

    IvanUA Гуру

    Вы меня не совсем правильно поняли. То что код может состоять из пары строк не говорит о том что он не тяжелый. Дело в том что это код обращается к библиотеке json. А она немного "тянет".
    В принципе все возможно сделать, пока хватает ресурсов ЕСП. Вопрос только насколько оно это сейчас нужно.
    Мы меняли погодные сервера только по тому что апиху стал платным. С клаудмктт пока все окей. Не знаю, я пока еще не совсем понимаю на сколько новый сервис может быть лучше уже работающего.
     
  13. IvanUA

    IvanUA Гуру

    Смотрел в ЛС, там скорее всего не та ссылка, или ссылка на библиотеку.
     
  14. max50a5

    max50a5 Гик

    Добавьте, пожалуйста.
    Это будет альтернатива, как с серверами погоды. Можно сделать галку вкл./выкл. ThingSpeak и пусть каждый решает для себя, каким сервисом пользоваться.
     
  15. chipmoca

    chipmoca Гик

    Вечером спытаю )

    Кто нибудь на VSCode PlatformIO компилирует эту прошивку? Если не сложно поделитесь библиотеками. Вроде библиотеки установил, но ругается судя по всему на ArduinoOTA_ID6178.

    PS С Marlin 2.0 нормально работает )

    Compiling .pio\build\nodemcuv2\src\LED_clock_weath_v01.2020.1x_noData.ino.cpp.o
    Compiling .pio\build\nodemcuv2\lib795\ArduinoOTA_ID6178\InternalStorageESP.cpp.o
    C:/Users/chip/Documents/PlatformIO/Projects/200127-092800-nodemcuv2/src/LED_clock_weath_v01.2020.1x_noData.ino: In function 'void setup()':
    C:/Users/chip/Documents/PlatformIO/Projects/200127-092800-nodemcuv2/src/LED_clock_weath_v01.2020.1x_noData.ino:359:16: error: 'class ArduinoOTAMdnsClass<WiFiServer, WiFiClient, WiFiUDP>' has no member named 'setPort'
    ArduinoOTA.setPort(8266);
    ^
    C:/Users/chip/Documents/PlatformIO/Projects/200127-092800-nodemcuv2/src/LED_clock_weath_v01.2020.1x_noData.ino:360:16: error: 'class ArduinoOTAMdnsClass<WiFiServer, WiFiClient, WiFiUDP>' has no member named 'setHostname'
    ArduinoOTA.setHostname("ESP-ZAL");
    ^
    C:/Users/chip/Documents/PlatformIO/Projects/200127-092800-nodemcuv2/src/LED_clock_weath_v01.2020.1x_noData.ino:361:16: error: 'class ArduinoOTAMdnsClass<WiFiServer, WiFiClient, WiFiUDP>' has no member named 'onEnd'
    ArduinoOTA.onEnd([]() {
    ^

    ЗЫЫ Иван, проверил, все работает! Спасибо!
     
    Последнее редактирование: 27 янв 2020
  16. saha74

    saha74 Гик

    IvanUA, подскажите какой редактор шрифтов Вы использовали? Хочу подкорректировать немного шрифт znaki5x8[] PROGMEM = { 6 под себя и не знаю как.
     
    Последнее редактирование: 27 янв 2020
  17. jgupdimon

    jgupdimon Гик

    Любой онлайн редактор матриц 8х8. Не забываем про поворот на 90 градусов.
     
  18. IvanUA

    IvanUA Гуру

    Font-editor-8x8.exe уж не помню где скачал. Просто запускаю без установки.
    Я одно время пытался ее перевести на платформио. Но там немного надо повозиться с оглашением функций, или перенести их перед использованием. С библиотеками кажись проблем не было.
    Надо подумать потом. Сейчас все время идет на другой проект.
     
  19. max50a5

    max50a5 Гик

    Наверное здесь.
    Все поля сделаю, останется только сделать код обработки.
     
  20. jgupdimon

    jgupdimon Гик

    https://github.com/temmka/Font-editor-8x8