bnkus
джейсон же, массив.
bnkus
наверное правда стоит отказаться от джейсона. но суть проблемы может быть в чем-то другом. сам ждейсон в момент ошибки валидный.
Иван
Я, возможно, торможу, но не догоняю в чем проблема добавить в файл строку в формате json без чтения всего файла перед этим. Короче, либо задача некорректно поставлена, либо я уже нормально принял на грудь
Иван
Зачем считывать файл?
bnkus
потому что массив подразумевает обрамление квадратными скобками: [ ]
Иван
потому что массив подразумевает обрамление квадратными скобками: [ ]
Можно пример того, что в итоге должно быть в файле?
bnkus
[{data:1},{data:2},{data:3}] добавить {data:4}
Иван
А почему не: 1. Открыть файл на запись 2. Установить курсор на конец файла 3. Стереть предыдущий символ 4. Добавить данные 5. Добавить знак ] 6. Закрыть файл
bnkus
справедливо, кончено ).
Иван
Я, возможно, ошибаюсь, но при таком алгоритме файл не будет занимать память и может расти "бесконечно"
bnkus
нет, все правильно. сейчас перепишу. спасибо.
bnkus
А почему не: 1. Открыть файл на запись 2. Установить курсор на конец файла 3. Стереть предыдущий символ 4. Добавить данные 5. Добавить знак ] 6. Закрыть файл
похоже, что это так в си не работает... чтобы удалить символ из конца строки, надо сначала считать строку в буфер. или я не прав? *не ругайтесь, си не знаю вообще и никак не могу нагуглить решение... можете пример реализации этого алгоритма написать?
bnkus
как? ))
Иван
как? ))
Хм... Пара минут в гугле нарыла вот это: http://wikihandbk.com/wiki/ESP8266:Прошивки/Arduino/Работа_с_файловой_системой_в_аддоне_ESP8266_для_IDE_Arduino
Dmitry
Привет всем. Я сделал прошивку для esp8266 и приложения iot Manager.
Dmitry
✔️Исходный код: https://github.com/DmitryBorisenko33/esp8266_iot-manager_modules_firmware ✔️Ссылка на apk файл приложения (для андроид): https://github.com/DmitryBorisenko33/esp8266_iot-manager_modules_firmware/raw/master/iot_manager/IoT%20Manager%201.5.5.apk ✔️Подробное описание и инструкция по настройки: https://github.com/DmitryBorisenko33/esp8266_iot-manager_modules_firmware/wiki/Instruction ✔️Телеграм канал прошивки: https://t.me/joinchat/HQ-cJxWQ7qiIFlUbpvCXKg Если верхняя ссылка на телеграм канал не сработала: https://teleg.run/joinchat/HQ-cJxWQ7qiIFlUbpvCXKg
Dmitry
✔️Как залить прошивку в модуль: https://youtu.be/Em2mVQ1HfQU ✔️Настройка подключения к серверу MQTT (cloudmqtt): https://www.youtube.com/watch?v=SXgtQ0zh1RQ ✔️Модульная прошивка и мобильное приложение: https://www.youtube.com/watch?v=b85dDy2Kvms ✔️Отправка команд с одного устройства на другие по mqtt: https://www.youtube.com/watch?v=oF7Qz2KuMbU ✔️Управление реле через приложение, включение нагрузки на заданное время https://youtu.be/Fb5tCicON3E
Dmitry
Был бы рад вашему участию в моем проекте. Ссылка на телеграм канал прошивки в сообщении выше.
Dmitry
Прошу Вас посмотреть видео "Модульная прошивка и мобильное приложение" для ознакомления.
Dmitry
а в конце опять плюсом равно добавишь скобку на место
Dmitry
или сразу вместе с date4
Yuriy
[{data:1},{data:2},{data:3}] добавить {data:4}
Вообще не хранить в файле json. Плюсов нет, одни минусы. Представление данных, их трансформацию, выполнять по необходимости (запросу), либо на другой стороне. Платформа никак не располагает к работе с данными , которые необходимо парсить загрузив в память, так как нет её.
Okhsunrog
Как на ESP32 нормально с временем работать? Чтобы шла синхронизация через NTP и была функциональность как в TimeLib на ардуино
Okhsunrog
Нужен день недели
Okhsunrog
В виде переменой, месяц, год
Okhsunrog
NtpClient не даёт
Yuriy
В виде переменой, месяц, год
А там time.h есть? Портирован? Посмотрел - да там все есть.
Yuriy
А там time.h есть? Портирован? Посмотрел - да там все есть.
mktime, ctime - все такое. #include <time.h> И оттуда localtime (gmtime) передав timе_t полученное от ntpclient (еpoch или UNIX time в секундах с 1970) в ответ возвращается структура tm - которая содержит время разложенное на составляющие. Вообще синхронизация через sntp в arduino для esp происходит прозрачно, после вызова configTime. Сторонние библиотеки не нужны - функция time начинает выдавать реальное время.
Yuriy
Time library functions with ESP32 core https://forum.arduino.cc/index.php?topic=536464.0
Yuriy
Можешь показать пример? У меня сейчас так криво это работает... NtpClient +TimeLib от ардуино
Examples -> ESP32 -> Time -> Simple Time - смотрел его? byte Krish_day; byte Krish_month; int  Krish_year; void printLocalTime() {    struct tm timeinfo;   if(!getLocalTime(&timeinfo)){     Serial.println("Failed to obtain time");     return;   }   //Serial.println(&timeinfo, "%m %d %Y / %H:%M:%S");   //scanf(&timeinfo, "%m %d %Y / %H:%M:%S")    Krish_hour = timeinfo.tm_hour;    Krish_min  = timeinfo.tm_min;    Krish_sec  = timeinfo.tm_sec;    Krish_day = timeinfo.tm_mday;    Krish_month = timeinfo.tm_mon + 1;    Krish_year = timeinfo.tm_year +1900; }
Okhsunrog
А как часто нужно вызывать getLocalTime(&timeinfo);
Okhsunrog
А чем отличаются эти функции? Что они делают?
Ihor
Всем привет, такой вопрос ... как в данном примере кода заюзать метод класа внутри лямбды? Есть варианты? class WifiSta { public: void initEvents(); void onConnected(); void onDisconnected(); } void WifiSta::initEvents() { WiFi.onEvent([](WifiEvent_t event) { // this ? }); }
Ihor
Или только так? class WifiSta { public: void emmitEvent(); void onConnected(); void onDisconnected(); } void WifiSta::emmitEvent(WifiEvent_t event) { switch (event) { case SYSTEM...: this->onConnected(); break; } } // main.cpp WifiSta wifi_sta; void setup() { WiFi.onEvent([](WifiEvent_t event) { wifi_sta.emmitEvent(event); }); }
Ihor
И еще вопрос. Кто-то знает метод, например из <functional>, какой-то std::proxy, который делает это (пример на js): const proxy_fn = (fn, ...args) => (...params) => fn(...[...args, ...params]); const sum = (a, b) => a + b; const proxy = proxy_fn(sum, 2); proxy(2); // (2 + 2) 4 proxy(4); // (2 + 4) 6 proxy(1); // (2 + 1) 2
Artem
господа а подскажите кто-то сталкивался со считыванием данных с кан шины в авто ?
Denisio
решил грязными ручонками полазить в электронике авто?
Denisio
есть неиллюзорный шанс получить check engine и другие ошибки на шине
Artem
я рученки всегда мою прежде чем лезть ;)
Artem
задача не самая сложная, получить сигнал о переключении коробки в спорт, и открыть заслонки выхлопа
Denisio
карочи тебя ждёт много увлекательного
Denisio
начнём с того что ты наверное не знаешь IDшников пакетов с этой информацией
Artem
ну у меня есть ваг ком, можно попробовать почитать запросы которые он отправляет в обд
AntikillerVova 🇷🇺
ну у меня есть ваг ком, можно попробовать почитать запросы которые он отправляет в обд
В ютубе как тотнатыквлся на почти такой случай, но там делали мониторинг кан шины, искали нужные пакеты и потом их просто повторяли
Artem
Так мне не повторить, просто слушать кан порт и когда появляется нужный протокол, ардвины включает реле
AntikillerVova 🇷🇺
Мониторинг кан шины
AntikillerVova 🇷🇺
Но там вроде делали на стм32
Pavel
что я нарыл. wio link и wio node
Pavel
что-то типа блинка, только от seeed studio
может интересно будет.
Yuriy
Ihor
[this] - надо захватить экземпляр класса , тогда он будет доступен из лямбды .
первым делом пробовал, ругается, что WiFi.onEvent lambda не может юзать что-то из вне, не помню точную ошибку
Ihor
Там же не void(* callback), потому что тогда вроде ни как
я понял.. окей, спасибо! Значит только второй вариант?
Yuriy
А чем отличаются эти функции? Что они делают?
Ровно столько сколько надо узнавать время. Одна без учёта часовых поясов (utc 0 или gm) , другая с учётом смещения ( в мск +3 часа)
Ihor
Я не нашел другого решения
Окей спасибо! А не знаете случайно event библиотеки, чтобы можно было вешать слушателя и емитить события? Например: Event event; event.on("myEvent", [](const String data) { Serial.println(data); }); const String data = "dawda"; event.emmit("myEvent", data);
Ihor
Не , я джавист :) но гуглится
вы там на отдельных потоках?)
Yuriy
вы там на отдельных потоках?)
Вообще да. EventBus вообще думаю есть по-любому какой-нибудь. В boost скажем, а он частично портирован. Ну pub sub паттерн - не так долго изобретать велосипед, тем более с оглядкой если.
Ihor
Не , я джавист :) но гуглится
да, есть но там тоже проблемы с захватом перемынных в лямбде ...
Ihor
Так они думаю не спроста - не на зло :)
я понимаю, но дико не удобно. Вот не плохая, так и написано js-style, но опять таки, нужно зарание указывать перед создаем класса что можно будет захватывать в лямбду: https://github.com/josephlarralde/ArduinoEventEmitter
Yuriy
Так они думаю не спроста - не на зло :)
Вообще я посматривал крупные проекты на сабже - как то обходятся. Аж интересно что такое пишите.
Ihor
а есть ссылка на крупные iot проекты?
Yuriy
а есть ссылка на крупные iot проекты?
Я имею ввиду mbedos, espuma, espeasy, Arduino sdk. Есть много крутых, но не на плюсах.
Yuriy
а на чем сейчас модно?)
На плюсах. Просто им года. Что не придумать - оно уже есть и годами вылизовалось. Повышение абстракции , тоже просто так не даётся. Наверное esp32 нужен базой, как минимум. Памяти с tsl стоит включить- нет вообще ни на что. - 20кб буферы шифрования. Модно не знаю , а вот freeRTOS - интересно попробовать.
ᅠDin
Ребят привет. Нашел в интернете проект который подходит мне по функционалу. Скачал с сайта автора скетч и при компиляции выходят ошибки. Кому не сложно можете глянуть скетч может в самом скетче ошибки или у меня какие-то библиотеки попросту не стоят ?
ᅠDin
Несколько библиотек найдено для "DallasTemperature.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master Не используется: C:\Program Несколько библиотек найдено для "ESP8266WiFi.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266WiFi Несколько библиотек найдено для "BlynkSimpleEsp8266.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\blynk-library-0.6.1 Не используется: C:\Users\Admin\Documents\Arduino\libraries\blynk-library-master Не используется: C:\Users\Admin\Documents\Arduino\libraries\Blynk Несколько библиотек найдено для "ArduinoOTA.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ArduinoOTA Несколько библиотек найдено для "SH1106.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\esp8266-oled-ssd1306-master Несколько библиотек найдено для "DHT.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\DHT_sensor_library Не используется: C:\Users\Admin\Documents\Arduino\libraries\arduino-DHT-master Несколько библиотек найдено для "SPI.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\SPI Несколько библиотек найдено для "OneWire.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\OneWire-master Несколько библиотек найдено для "EEPROM.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\EEPROM Несколько библиотек найдено для "ESP8266mDNS.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266mDNS Несколько библиотек найдено для "Adafruit_Sensor.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_Unified_Sensor Несколько библиотек найдено для "Wire.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\Wire exit status 1 no matching function for call to 'DHT::DHT()'
Yuriy
Несколько библиотек найдено для "DallasTemperature.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master Не используется: C:\Program Несколько библиотек найдено для "ESP8266WiFi.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266WiFi Несколько библиотек найдено для "BlynkSimpleEsp8266.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\blynk-library-0.6.1 Не используется: C:\Users\Admin\Documents\Arduino\libraries\blynk-library-master Не используется: C:\Users\Admin\Documents\Arduino\libraries\Blynk Несколько библиотек найдено для "ArduinoOTA.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ArduinoOTA Несколько библиотек найдено для "SH1106.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\esp8266-oled-ssd1306-master Несколько библиотек найдено для "DHT.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\DHT_sensor_library Не используется: C:\Users\Admin\Documents\Arduino\libraries\arduino-DHT-master Несколько библиотек найдено для "SPI.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\SPI Несколько библиотек найдено для "OneWire.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\OneWire-master Несколько библиотек найдено для "EEPROM.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\EEPROM Несколько библиотек найдено для "ESP8266mDNS.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266mDNS Несколько библиотек найдено для "Adafruit_Sensor.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_Unified_Sensor Несколько библиотек найдено для "Wire.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\Wire exit status 1 no matching function for call to 'DHT::DHT()'
Автор в сопроводиловке упоминает о особенной реализации dht, которую ему пришлось искать. You can find links to libraries in the code. The only problem I had was to find appropriate library for DHT22 sensor because some libraries give faulty measuring values especially humidity values. И пишет , что линки на них в коде (в большом первом комменте, наверное).
Yuriy
Несколько библиотек найдено для "DallasTemperature.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master Не используется: C:\Program Несколько библиотек найдено для "ESP8266WiFi.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266WiFi Несколько библиотек найдено для "BlynkSimpleEsp8266.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\blynk-library-0.6.1 Не используется: C:\Users\Admin\Documents\Arduino\libraries\blynk-library-master Не используется: C:\Users\Admin\Documents\Arduino\libraries\Blynk Несколько библиотек найдено для "ArduinoOTA.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ArduinoOTA Несколько библиотек найдено для "SH1106.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\esp8266-oled-ssd1306-master Несколько библиотек найдено для "DHT.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\DHT_sensor_library Не используется: C:\Users\Admin\Documents\Arduino\libraries\arduino-DHT-master Несколько библиотек найдено для "SPI.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\SPI Несколько библиотек найдено для "OneWire.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\OneWire-master Несколько библиотек найдено для "EEPROM.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\EEPROM Несколько библиотек найдено для "ESP8266mDNS.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266mDNS Несколько библиотек найдено для "Adafruit_Sensor.h" Используется: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_Unified_Sensor Несколько библиотек найдено для "Wire.h" Используется: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\Wire exit status 1 no matching function for call to 'DHT::DHT()'
https://github.com/markruys/arduino-DHT