Установка SQLite3 на ESP8266 в Arduino IDE

  Рет қаралды 16,578

iomoio

iomoio

5 жыл бұрын

Разбираемся как установить базу данных SQLite на ESP8266 и ESP32. Подробный обзор возможностей SQL-библиотеки.
Присоединяйтесь ВКонтакте: im_pub
Скетч из видео: iomoio.ru/static/esp8266_sqlit...
Библиотека SQLite для ESP8266: iomoio.ru/static/esp_arduino_s...
Библиотека SQLite для ESP32: iomoio.ru/static/esp32_arduino...
Библиотека SDFat для ESP8266 с модулем SD: iomoio.ru/static/SdFat.zip
Страница авторов библиотеки на GitHub: github.com/siara-cc
#esp8266 #sqlite #esp32 #arduino #mysql #postgresql #обзор #уроки #ардуино #esp01 #скетч #пример #sql

Пікірлер: 71
@ValeriyDoniy
@ValeriyDoniy 5 жыл бұрын
Как! SQL на ESP! я в шоке! Даже не мечтал. Супер! Спасибо за видос! Сейчас будем "покрутить".
@user-fq7kg9iv5w
@user-fq7kg9iv5w 3 жыл бұрын
Добрый день, разобрались? У меня пока ничего не получается
@igorbilinkin6375
@igorbilinkin6375 5 жыл бұрын
Блин, спасибо. Это ж вообще круть, теперь можно записывать состояния пинов в базу и при любом раскладе знать что там, в каком состоянии конечное устройство. Вообще огонь, спасибо. Надо теперь, почитать про скуль и воплотить сие в реальность))) Спасибо.
@userqh67vey6
@userqh67vey6 6 ай бұрын
Тема прикольная. До этого передавал данные с датчиков на наружный сервах и хранил их там.
@MaPeHuH
@MaPeHuH 5 жыл бұрын
Добрый день! Спасибо большое за здоровское видео!
@inang1968
@inang1968 4 жыл бұрын
Oh my goodness. Thank you for the english subtitle! This is the only vid in youtube that used arduino and sqlite
@azbukaChisel
@azbukaChisel 5 жыл бұрын
Даёшь уроки по esp-open-sdk && esp-open-rtos! Ура товарисчи!)
@TPE3BAK
@TPE3BAK 5 жыл бұрын
Молодец! Осталось все самому проверить.
@otherattack6125
@otherattack6125 5 жыл бұрын
Обожаю Ваш канал!
@flashpaperdotru
@flashpaperdotru 5 жыл бұрын
Спасибо за информацию, теперь заживём.
@sergiomussi5104
@sergiomussi5104 2 жыл бұрын
Спасибо тебе большое! Я с данного видоса начал дружжбу с ESP и SQL в 2020. Логгирование данных на 8266 в SPIFFS, с последующей выдачей JSON через HTTP та ещё затея... Имеются такие ограничения: 1.Бд необходимо создавать на SPIFFS, т.k. SQLITE_DEFAULT_PAGE_SIZE должен быть 512 байт. 2.При достижении размера файла БД 3.5k, попытки изменения БД (INSERT, DROP, CRWATE, DELETE) завершится с кодом 7 "out of memory". 3.Учитывая п2 запрос выборки "SELECT * FROM table" должен иметь условие WHERE, иначе вероятность возврвта кода 7 велика. 4.Для вствыки данных необходимо ичполь3овать sqlite3_prepare_v2(...) и sqlite3_bind_() иначе код 7. Зато количество файлов БД ограничено размером SPIFFS. Для теста было создано 60 файлов БД (4 столбца типа INT нв 145 рядов). Время опроса всех 60 БД запросом "SELECT COUNT(id) FROM table" составляет 5-6 сек. без разгона CPU. Вывод: можно юзать .
@Ivan-bj3ks
@Ivan-bj3ks 5 жыл бұрын
Мощно! Спасибо!
@Legantmar
@Legantmar 5 жыл бұрын
круто, спасибо. будем знать.
@zaftranaverno
@zaftranaverno 3 жыл бұрын
Друг ты МОЛОДЕЦ!!!!!
@djpmptark7602
@djpmptark7602 5 жыл бұрын
Пока ничего не понял, но звучит круто
@pratikswami7764
@pratikswami7764 4 жыл бұрын
thank you very much mate , there was no other tutorial and those github programs has soo much stuff its hard to understand , your video made wonders ,thanks
@alexandrpetrov1110
@alexandrpetrov1110 5 жыл бұрын
Спасибо огромное!
@alx8439
@alx8439 2 жыл бұрын
А вообще канеш круто. Надо попробовать поднять вместе с вебсервером и вот она, база в кармане. Включил питание, подцепился к своему вайфаю и через веб браузер вперед, гоняй свои квери :)
@user-uc5cb7tv4z
@user-uc5cb7tv4z 5 жыл бұрын
Ого! Дожили!
@dobrinyanicitich7514
@dobrinyanicitich7514 3 жыл бұрын
Ничёсе! Спасибо!
@basilstadnik1342
@basilstadnik1342 5 жыл бұрын
SQL это гуд !!
@zakharpopov827
@zakharpopov827 3 жыл бұрын
Большое человеческое спасибо за русскоязычное видео на эту тему! С вами можно связаться лично? Есть задачка на эту тему хотелось бы по сотрудничать
@edgull_tlt
@edgull_tlt 2 жыл бұрын
Спасибо
@f33net
@f33net 5 жыл бұрын
Винду туда! Винду!!! :))))))
@victorn1199
@victorn1199 4 жыл бұрын
О-хре-неть! 👍👍👍
@user-fq7kg9iv5w
@user-fq7kg9iv5w 3 жыл бұрын
Добрый день, не пробовали делать в platformio? Пытаюсь сделать, но пока не могу разобраться как ставить библиотеки
@alx8439
@alx8439 2 жыл бұрын
В db_exec много лишнего, чего стоит перенести в setup. А то получается, что на каждый запрос к базе происходит ее открытие/закрытие.
@valerafox7795
@valerafox7795 2 жыл бұрын
А может ли всё это выполнять Atmega328p? (Типа прост через какой-нибудь ENC28J60 общаться буйт)
@javafix5167
@javafix5167 5 жыл бұрын
Не знаю не знаю как по мне нет таких задач )))) Хотя))!!!!!
@SergeyBelotserkovskiy
@SergeyBelotserkovskiy 5 жыл бұрын
Интересно, не знал что так можно, немного напрягло изменение размера стека, выходит система работает на грани.
@user-os2fk2ed7i
@user-os2fk2ed7i 3 жыл бұрын
То есть разгон частоты проца в 2 раза не напряг? Вопрос риторический.
@alexanderanohov
@alexanderanohov 5 жыл бұрын
Скоро искусственный интеллект можно будет сделать ))
@romutis
@romutis 5 жыл бұрын
Имхо, проще создавать/открывать базу данных в функции инициализации а в loop заниматься лишь записью в базу (с обработчиком ошибки), а не переоткрывать её постоянно, тратя на это время и ресурсы. Хэндлер базы сделать глобальной переменной, доступной во всех функциях, открытие/создание базы - тоже отдельная функция, которая вызывается при инициализации и обработке ошибок, с возможностью трапаться при фатальных ошибках базы. В итоге получится быстрее и меньше IO.
@iomoio3897
@iomoio3897 5 жыл бұрын
Я сознательно перенёс открытие, обработку и закрытие в одну функцию, т.к. периодически возникали ошибки IO.
@romutis
@romutis 5 жыл бұрын
@@iomoio3897 значит либа написана кривовато, тут вашей вины нет.
@user-fq7kg9iv5w
@user-fq7kg9iv5w 3 жыл бұрын
Установил, создал бд в DB browser, ничего не открывает пишет- ошибка синтаксиса
@MaPeHuH
@MaPeHuH 5 жыл бұрын
Но немножечко сложно. Нужно почитать про sql.
@user-lr8hd5qi6n
@user-lr8hd5qi6n 5 жыл бұрын
Зачем? Блохчейн?
@user-eb6rf1yv4w
@user-eb6rf1yv4w 3 жыл бұрын
Народ, а кто-нить разбирался с этой библиотекой. не так чтобы скомпилил, пару строчек ввел и ОК. У меня просто вроде работает, но после внесения 24 записей начинает писать, что нет памяти. В то же время сам файл БД остается нулевой. Такое ощущение, что она пишет в виртуальный файл какой-то, а на диск(скажем так) не сбрасывает или путь указан неверно. Я на англоязычных файлах прочитал, что если файла нет такого, то она создает его виртуально. ну и как память виртуальная кончается, выдает аут оф мемори.
@alexpan2544
@alexpan2544 3 жыл бұрын
Я об этом думаю что ничегошеньки не понимаю((( но мне кажется что мне это нужно. У меня собран термостат на модуле esp01s через blynk управляет котлом отопления, но при пропадании питания и интернета он просто перестает работать(((, нужно что бы он записывал параметры в эрерго независимую память, что бы последние параметры поддерживались независимо от сервиса блинк.
@MrXandroid
@MrXandroid 3 жыл бұрын
можно писать прямо на SPIFFS
@user-eb7od2xf4f
@user-eb7od2xf4f 5 жыл бұрын
Вооо, годнота поперла. На сколько логично и правильно хранить в БД логин и пароль точки доступа к которой будет конектится устройство? Сейчас пытаюсь организовать максимум простое и логичное подключение к внутренней сети устройства. Т.е запускаю ЕСП в режиме точки доступа, подключаюсь к ней, через интерфейс прописываю логин и пасс точки роутера в квартире, и после ребута ESP уже конектится к роутеру. Строил это на JSON, но это не безопасно и по JSON на ESP 32 мало мануалов Русских, в итоге очень всё криво работает. Возвращаюсь к вопросу. На сколько логично хранить в БД на SQL логин и пасс для конекта и состояния пинов устройства?
@iomoio3897
@iomoio3897 5 жыл бұрын
Ответ прост. Настолько логично, насколько логичны 99% веб-сервисов, хранящие в БД авторизационные данные пользователей. Правда пароли пользователей предварительно шифруются, например MD5, но тем не менее. По точкам доступа логично хранить BSSID и пароли. SSID по желанию.
@Dialbist
@Dialbist 5 жыл бұрын
@@iomoio3897 MD5 уже никто не использует, только конечно совсем далекие, ибо ломается он очень и очень быстро.
@Dialbist
@Dialbist 5 жыл бұрын
Смотря что иметь ввиду под безопасностью. Если физически получить доступ можно к ESP, то можно дамп снять или вообще выпаять микросхему памяти и все оттуда взять. Думаю это не ваш вариант. В чем небезопасность JSON? ваш пароль никто не перехватит только если модуль не будет постоянно в состоянии точки доступа без пароля. Думаю специально встраивать БД для хранения всего лишь данных доступа, это глупо, большая трата рессурсов
@iomoio3897
@iomoio3897 5 жыл бұрын
@@Dialbist Это пример вообще-то. Какой алгоритм шифрования использовать и как - это личное дело каждого.
@iomoio3897
@iomoio3897 5 жыл бұрын
@@Dialbist Это так
@VanZayka
@VanZayka 10 ай бұрын
К сожалению, ссылки ведут в пустоту :( Но всё равно огромное спасибо!
@MrOMEGARUS
@MrOMEGARUS 3 жыл бұрын
Ну... Теперь осталось рнр прикрутить к 8266 ...
@iomoio3897
@iomoio3897 3 жыл бұрын
Там MicroPython есть. Не равнозначная, но весомая альтернатива PHP, кстати, если сопоставлять желаемое и возможности железа. Это я утверждаю как человек, который и то и то попробовал. )
@MrOMEGARUS
@MrOMEGARUS 3 жыл бұрын
@@iomoio3897 Даёшь видос про маленькую змеюку!!! Думаю актуально будет ибо код из РэНэРэ в РУ перевести труда не составит...
@SuperBatiskaf
@SuperBatiskaf 5 жыл бұрын
Ну это мне кажется тумач, на хипе меньше 40К мастерить базы данных. Я конфигурацию в JSON записываю, пришлось отказаться от Arduino_JSON по причине большого мемори футпринта и прочих багов, свою реализацию сделал за час и работает на порядок эффективнее, документ в 3К занимает в памяти 3,5К, Arduino_JSON тратит на этот документ 15К легко. А в большинстве случаев хватает конфигураций в INI
@iomoio3897
@iomoio3897 5 жыл бұрын
Своим решением по JSON поделитесь, пжлст
@SuperBatiskaf
@SuperBatiskaf 5 жыл бұрын
@@iomoio3897 А вообще, Ардуино использует современный компилятор С++ не хуже 11 версии стандарт, там куча полезных трюков можно соорудить. Вот например, метод PubSubClient::setCallback принимает колбек через который клиент сообщает что MQTT Server посылает сообщение устройству, только сигнатура этого колбека неудобная, имя топика и валью тоже строка. Я например хочу чтобы под конкретный топик velocity я получал int, а для топика temperature приходил float, чтобы не парсить кругом эту строку. Для этого в классе обертке PubSubClient делается меп колбеков, типа на каждый топик свой колбек, но колбек этот создается вот таким образом: template payload_callback_t make_callback(const std::function& callback) { return [callback] (const String& payload) { callback(from_string(payload)); }; } В make_callback вы передаете свой конкретный колбек который принимает инт или флоат, а make_callback уже оборачивает его в свой колбек который принимает стринг, и компилятор подхватит подходящую перегруженную версию from_string функции. Элементарно просто, но сохраняет массу головной боли с парсингом, избавляет от ошибок, хорошая модулярность и множество других бенефитов. Пользуйтесь, если нужно
@SuperBatiskaf
@SuperBatiskaf 5 жыл бұрын
@@iomoio3897 Меня другое интересует. Есть группа LoRa устройств объединенных в сеть, один в качестве раутера, остальные клиенты. У раутера есть соединение с интернетом через WiFi. Задача настроить передачу данных из устройств этой сети в интернет на MQTT сервер и обратно. Я так понимаю что нужно для PubSubClient предоставить свою имплементацию TCP Client - see PubSubClient::setClient(Client* client); Возможно есть уже готовая реализация клиента для LoRa модема, чтобы свою не писать? Там конечно класс небольшой, можно свое написать, тем более что в стандартной LoRa библиотеке уже есть реализация Stream, клиент к стриму несколько методов добавляет, типа connect по ай-пи адресу с хендшейком, запись чтение. Но с отладкой неделя уйдет легко. Хотя посмотрел сейчас, готовый LoRaStream реализован для пир-ту-пир соединения, а в моем случае нужно LoRaWan сеть, а для сети кажется есть дубовая библиотека от Сименс, там даже стрима толком нет. Короче, чтобы не писать с нуля - возможно есть у кого то готовое решение?
@user-eb6rf1yv4w
@user-eb6rf1yv4w 3 жыл бұрын
Забабахал эту гремучую смесь. В принципе работает. Но!... Файл с БД на самой ESP8266. Пишет 3 с лишним мегабайта свободно, но после занесения штук 30 записей пишет SQL error: out of memory. Памяти на носителе так и есть более 3 мегов свободно. ESP.getFreeHeap() выдает 19432. При чем если перепрошивке скетча регулярно еще 5-6 записей добавляет, а потом пишет то же самое. А тут вообще выдал SQL error: database disk image is malformed.
@MrXandroid
@MrXandroid 3 жыл бұрын
Тут поможет ESP8266 c 32 мб flash
@user-vb3jg5nb7n
@user-vb3jg5nb7n 4 ай бұрын
Ссылки протухли, автор пропал - очень жаль(
@romanpiontik5572
@romanpiontik5572 5 жыл бұрын
Игрушка. Флешка не просто имеет ограниченное количество циклов записи, а ограниченное количество на блок. Любое изменение приводит к перезаписи блока. Если пару раз инсертнул, получил пару раз переписанный блок. Когда я изучал либу, кэш на запись был дубовым. Далее идея с колбэком такая себе. Почему не сделали как у людей с указателем, остается загадкой. А если я не хочу все 100 строк обрабатывать? На первой нашел, что нужно. А если я хочу с 10той на первую вернуться? В обшем, покрутил я ее и отложил в сторонку. Хотя сначала тоже порадовался. К слову, SQLite можно скачать в сырцах и локализовать для любой платформы.
@vikvlg
@vikvlg 5 жыл бұрын
Ну так свяжись с разработчиком и предложи ему помочь доработать библиотеку до "нормального" функционала
@valerafox7795
@valerafox7795 2 жыл бұрын
Не очень проблематично с СД карточкой работать
@TheGTP1995
@TheGTP1995 5 жыл бұрын
Can you please add english subtitles?
@iomoio3897
@iomoio3897 5 жыл бұрын
Please use the built-in translator
@TheGTP1995
@TheGTP1995 5 жыл бұрын
@@iomoio3897 Sorry but in the subtitles section I only see russian subtitles, how do I enable the translator?
@iomoio3897
@iomoio3897 5 жыл бұрын
Sorry. I added.
@TheGTP1995
@TheGTP1995 5 жыл бұрын
@@iomoio3897 Thanks!
@dave-in-nj9393
@dave-in-nj9393 5 жыл бұрын
I wish I knew how to speak Russian so I could learn what is being said.
@iomoio3897
@iomoio3897 5 жыл бұрын
Hi! I added subtitles. Now you can use the built-in translator. Good luck!
@dave-in-nj9393
@dave-in-nj9393 5 жыл бұрын
@@iomoio3897 I wish I could give you a second thumbs up ! Thank you.
@ProgrammerForever
@ProgrammerForever 4 жыл бұрын
Жирно)
Неприятная Встреча На Мосту - Полярная звезда #shorts
00:59
Полярная звезда - Kuzey Yıldızı
Рет қаралды 7 МЛН
КАРМАНЧИК 2 СЕЗОН 7 СЕРИЯ ФИНАЛ
21:37
Inter Production
Рет қаралды 484 М.
터키아이스크림🇹🇷🍦Turkish ice cream #funny #shorts
00:26
Byungari 병아리언니
Рет қаралды 29 МЛН
Did you believe it was real? #tiktok
00:25
Анастасия Тарасова
Рет қаралды 27 МЛН
PlatformIO или прощай, Arduino IDE
35:23
Alex Morozov
Рет қаралды 156 М.
Вывод изображения с Arduino и ESP32 на монитор
3:59
Заметки ESPшника
Рет қаралды 26 М.
Как перейти с Arduino IDE на PlatformIO
7:35
МАРСЕЛИЧ
Рет қаралды 47 М.
Как NAT спас интернет?
11:42
Merion Academy
Рет қаралды 36 М.
iPhone 16 с инновационным аккумулятором
0:45
ÉЖИ АКСЁНОВ
Рет қаралды 2 МЛН