bnkus
джейсон же, массив.
bnkus
наверное правда стоит отказаться от джейсона. но суть проблемы может быть в чем-то другом. сам ждейсон в момент ошибки валидный.
Иван
Я, возможно, торможу, но не догоняю в чем проблема добавить в файл строку в формате json без чтения всего файла перед этим.
Короче, либо задача некорректно поставлена, либо я уже нормально принял на грудь
Иван
Зачем считывать файл?
bnkus
потому что массив подразумевает обрамление квадратными скобками: [ ]
Иван
bnkus
[{data:1},{data:2},{data:3}] добавить {data:4}
Иван
А почему не:
1. Открыть файл на запись
2. Установить курсор на конец файла
3. Стереть предыдущий символ
4. Добавить данные
5. Добавить знак ]
6. Закрыть файл
bnkus
справедливо, кончено ).
Иван
Я, возможно, ошибаюсь, но при таком алгоритме файл не будет занимать память и может расти "бесконечно"
bnkus
нет, все правильно. сейчас перепишу. спасибо.
Иван
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
а в конце опять плюсом равно добавишь скобку на место
Dmitry
или сразу вместе с date4
Yuriy
[{data:1},{data:2},{data:3}] добавить {data:4}
Вообще не хранить в файле json. Плюсов нет, одни минусы. Представление данных, их трансформацию, выполнять по необходимости (запросу), либо на другой стороне. Платформа никак не располагает к работе с данными , которые необходимо парсить загрузив в память, так как нет её.
Okhsunrog
Как на ESP32 нормально с временем работать? Чтобы шла синхронизация через NTP и была функциональность как в TimeLib на ардуино
Okhsunrog
Нужен день недели
Okhsunrog
В виде переменой, месяц, год
Okhsunrog
NtpClient не даёт
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
Okhsunrog
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
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
ну у меня есть ваг ком, можно попробовать почитать запросы которые он отправляет в обд
Artem
Так мне не повторить, просто слушать кан порт и когда появляется нужный протокол, ардвины включает реле
AntikillerVova 🇷🇺
AntikillerVova 🇷🇺
Мониторинг кан шины
AntikillerVova 🇷🇺
Но там вроде делали на стм32
Pavel
что я нарыл. wio link и wio node
Pavel
что-то типа блинка, только от seeed studio
ㅤ
может интересно будет.
Yuriy
Yuriy
Yuriy
Ihor
Yuriy
Ihor
Я не нашел другого решения
Окей спасибо!
А не знаете случайно event библиотеки, чтобы можно было вешать слушателя и емитить события? Например:
Event event;
event.on("myEvent", [](const String data) {
Serial.println(data);
});
const String data = "dawda";
event.emmit("myEvent", data);
Yuriy
Yuriy
вы там на отдельных потоках?)
Вообще да. EventBus вообще думаю есть по-любому какой-нибудь. В boost скажем, а он частично портирован. Ну pub sub паттерн - не так долго изобретать велосипед, тем более с оглядкой если.
Yuriy
Ihor
Так они думаю не спроста - не на зло :)
я понимаю, но дико не удобно.
Вот не плохая, так и написано js-style, но опять таки, нужно зарание указывать перед создаем класса что можно будет захватывать в лямбду:
https://github.com/josephlarralde/ArduinoEventEmitter
Ihor
а есть ссылка на крупные iot проекты?
Ihor
Yuriy
а на чем сейчас модно?)
На плюсах. Просто им года. Что не придумать - оно уже есть и годами вылизовалось. Повышение абстракции , тоже просто так не даётся. Наверное esp32 нужен базой, как минимум. Памяти с tsl стоит включить- нет вообще ни на что. - 20кб буферы шифрования. Модно не знаю , а вот freeRTOS - интересно попробовать.
ᅠDin
Ребят привет. Нашел в интернете проект который подходит мне по функционалу. Скачал с сайта автора скетч и при компиляции выходят ошибки. Кому не сложно можете глянуть скетч может в самом скетче ошибки или у меня какие-то библиотеки попросту не стоят ?
Yuriy
Yuriy
Yuriy