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

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 ก.ค. 2019
  • Разбираемся как установить базу данных 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 4 ปีที่แล้ว +14

    Как! SQL на ESP! я в шоке! Даже не мечтал. Супер! Спасибо за видос! Сейчас будем "покрутить".

    • @user-fq7kg9iv5w
      @user-fq7kg9iv5w 3 ปีที่แล้ว

      Добрый день, разобрались? У меня пока ничего не получается

  • @igorbilinkin6375
    @igorbilinkin6375 4 ปีที่แล้ว +6

    Блин, спасибо. Это ж вообще круть, теперь можно записывать состояния пинов в базу и при любом раскладе знать что там, в каком состоянии конечное устройство. Вообще огонь, спасибо. Надо теперь, почитать про скуль и воплотить сие в реальность))) Спасибо.

  • @inang1968
    @inang1968 4 ปีที่แล้ว +3

    Oh my goodness. Thank you for the english subtitle! This is the only vid in youtube that used arduino and sqlite

  • @userqh67vey6
    @userqh67vey6 5 หลายเดือนก่อน

    Тема прикольная. До этого передавал данные с датчиков на наружный сервах и хранил их там.

  • @MaPeHuH
    @MaPeHuH 4 ปีที่แล้ว

    Добрый день! Спасибо большое за здоровское видео!

  • @azbukaChisel
    @azbukaChisel 4 ปีที่แล้ว

    Даёшь уроки по esp-open-sdk && esp-open-rtos! Ура товарисчи!)

  • @TPE3BAK
    @TPE3BAK 4 ปีที่แล้ว +1

    Молодец!
    Осталось все самому проверить.

  • @sergiomussi5104
    @sergiomussi5104 2 ปีที่แล้ว +1

    Спасибо тебе большое! Я с данного видоса начал дружжбу с 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.
    Вывод: можно юзать .

  • @otherattack6125
    @otherattack6125 4 ปีที่แล้ว

    Обожаю Ваш канал!

  • @flashpaperdotru
    @flashpaperdotru 4 ปีที่แล้ว

    Спасибо за информацию, теперь заживём.

  • @djpmptark7602
    @djpmptark7602 4 ปีที่แล้ว +5

    Пока ничего не понял, но звучит круто

  • @Ivan-bj3ks
    @Ivan-bj3ks 4 ปีที่แล้ว +1

    Мощно! Спасибо!

  • @Legantmar
    @Legantmar 4 ปีที่แล้ว +1

    круто, спасибо.
    будем знать.

  • @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

  • @zaftranaverno
    @zaftranaverno 3 ปีที่แล้ว

    Друг ты МОЛОДЕЦ!!!!!

  • @alx8439
    @alx8439 ปีที่แล้ว

    А вообще канеш круто. Надо попробовать поднять вместе с вебсервером и вот она, база в кармане. Включил питание, подцепился к своему вайфаю и через веб браузер вперед, гоняй свои квери :)

  • @alexandrpetrov1110
    @alexandrpetrov1110 4 ปีที่แล้ว

    Спасибо огромное!

  • @basilstadnik1342
    @basilstadnik1342 4 ปีที่แล้ว +1

    SQL это гуд !!

  • @user-uc5cb7tv4z
    @user-uc5cb7tv4z 4 ปีที่แล้ว

    Ого! Дожили!

  • @zakharpopov827
    @zakharpopov827 3 ปีที่แล้ว

    Большое человеческое спасибо за русскоязычное видео на эту тему!
    С вами можно связаться лично?
    Есть задачка на эту тему хотелось бы по сотрудничать

  • @dobrinyanicitich7514
    @dobrinyanicitich7514 3 ปีที่แล้ว

    Ничёсе! Спасибо!

  • @f33net
    @f33net 4 ปีที่แล้ว +7

    Винду туда! Винду!!! :))))))

  • @edgull_tlt
    @edgull_tlt 2 ปีที่แล้ว

    Спасибо

  • @user-fq7kg9iv5w
    @user-fq7kg9iv5w 3 ปีที่แล้ว

    Добрый день, не пробовали делать в platformio? Пытаюсь сделать, но пока не могу разобраться как ставить библиотеки

  • @alx8439
    @alx8439 ปีที่แล้ว

    В db_exec много лишнего, чего стоит перенести в setup. А то получается, что на каждый запрос к базе происходит ее открытие/закрытие.

  • @victorn1199
    @victorn1199 4 ปีที่แล้ว

    О-хре-неть! 👍👍👍

  • @valerafox7795
    @valerafox7795 2 ปีที่แล้ว

    А может ли всё это выполнять Atmega328p? (Типа прост через какой-нибудь ENC28J60 общаться буйт)

  • @SergeyBelotserkovskiy
    @SergeyBelotserkovskiy 4 ปีที่แล้ว +1

    Интересно, не знал что так можно, немного напрягло изменение размера стека, выходит система работает на грани.

    • @user-os2fk2ed7i
      @user-os2fk2ed7i 3 ปีที่แล้ว +1

      То есть разгон частоты проца в 2 раза не напряг? Вопрос риторический.

  • @javafix5167
    @javafix5167 4 ปีที่แล้ว +1

    Не знаю не знаю как по мне нет таких задач )))) Хотя))!!!!!

  • @alexanderanohov
    @alexanderanohov 4 ปีที่แล้ว +1

    Скоро искусственный интеллект можно будет сделать ))

  • @user-fq7kg9iv5w
    @user-fq7kg9iv5w 3 ปีที่แล้ว

    Установил, создал бд в DB browser, ничего не открывает пишет- ошибка синтаксиса

  • @romutis
    @romutis 4 ปีที่แล้ว

    Имхо, проще создавать/открывать базу данных в функции инициализации а в loop заниматься лишь записью в базу (с обработчиком ошибки), а не переоткрывать её постоянно, тратя на это время и ресурсы. Хэндлер базы сделать глобальной переменной, доступной во всех функциях, открытие/создание базы - тоже отдельная функция, которая вызывается при инициализации и обработке ошибок, с возможностью трапаться при фатальных ошибках базы. В итоге получится быстрее и меньше IO.

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว +1

      Я сознательно перенёс открытие, обработку и закрытие в одну функцию, т.к. периодически возникали ошибки IO.

    • @romutis
      @romutis 4 ปีที่แล้ว +1

      @@iomoio3897 значит либа написана кривовато, тут вашей вины нет.

  • @alexpan2544
    @alexpan2544 3 ปีที่แล้ว

    Я об этом думаю что ничегошеньки не понимаю((( но мне кажется что мне это нужно. У меня собран термостат на модуле esp01s через blynk управляет котлом отопления, но при пропадании питания и интернета он просто перестает работать(((, нужно что бы он записывал параметры в эрерго независимую память, что бы последние параметры поддерживались независимо от сервиса блинк.

    • @MrXandroid
      @MrXandroid 3 ปีที่แล้ว

      можно писать прямо на SPIFFS

  • @MaPeHuH
    @MaPeHuH 4 ปีที่แล้ว

    Но немножечко сложно. Нужно почитать про sql.

  • @user-lr8hd5qi6n
    @user-lr8hd5qi6n 4 ปีที่แล้ว

    Зачем? Блохчейн?

  • @user-eb7od2xf4f
    @user-eb7od2xf4f 4 ปีที่แล้ว +1

    Вооо, годнота поперла. На сколько логично и правильно хранить в БД логин и пароль точки доступа к которой будет конектится устройство? Сейчас пытаюсь организовать максимум простое и логичное подключение к внутренней сети устройства. Т.е запускаю ЕСП в режиме точки доступа, подключаюсь к ней, через интерфейс прописываю логин и пасс точки роутера в квартире, и после ребута ESP уже конектится к роутеру. Строил это на JSON, но это не безопасно и по JSON на ESP 32 мало мануалов Русских, в итоге очень всё криво работает. Возвращаюсь к вопросу. На сколько логично хранить в БД на SQL логин и пасс для конекта и состояния пинов устройства?

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว

      Ответ прост. Настолько логично, насколько логичны 99% веб-сервисов, хранящие в БД авторизационные данные пользователей. Правда пароли пользователей предварительно шифруются, например MD5, но тем не менее. По точкам доступа логично хранить BSSID и пароли. SSID по желанию.

    • @Dialbist
      @Dialbist 4 ปีที่แล้ว

      @@iomoio3897 MD5 уже никто не использует, только конечно совсем далекие, ибо ломается он очень и очень быстро.

    • @Dialbist
      @Dialbist 4 ปีที่แล้ว +1

      Смотря что иметь ввиду под безопасностью. Если физически получить доступ можно к ESP, то можно дамп снять или вообще выпаять микросхему памяти и все оттуда взять. Думаю это не ваш вариант. В чем небезопасность JSON? ваш пароль никто не перехватит только если модуль не будет постоянно в состоянии точки доступа без пароля. Думаю специально встраивать БД для хранения всего лишь данных доступа, это глупо, большая трата рессурсов

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว +1

      @@Dialbist Это пример вообще-то. Какой алгоритм шифрования использовать и как - это личное дело каждого.

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว

      @@Dialbist Это так

  • @user-eb6rf1yv4w
    @user-eb6rf1yv4w 3 ปีที่แล้ว

    Народ, а кто-нить разбирался с этой библиотекой. не так чтобы скомпилил, пару строчек ввел и ОК. У меня просто вроде работает, но после внесения 24 записей начинает писать, что нет памяти. В то же время сам файл БД остается нулевой. Такое ощущение, что она пишет в виртуальный файл какой-то, а на диск(скажем так) не сбрасывает или путь указан неверно. Я на англоязычных файлах прочитал, что если файла нет такого, то она создает его виртуально. ну и как память виртуальная кончается, выдает аут оф мемори.

  • @SuperBatiskaf
    @SuperBatiskaf 4 ปีที่แล้ว +1

    Ну это мне кажется тумач, на хипе меньше 40К мастерить базы данных. Я конфигурацию в JSON записываю, пришлось отказаться от Arduino_JSON по причине большого мемори футпринта и прочих багов, свою реализацию сделал за час и работает на порядок эффективнее, документ в 3К занимает в памяти 3,5К, Arduino_JSON тратит на этот документ 15К легко. А в большинстве случаев хватает конфигураций в INI

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว

      Своим решением по JSON поделитесь, пжлст

    • @SuperBatiskaf
      @SuperBatiskaf 4 ปีที่แล้ว +1

      @@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 4 ปีที่แล้ว

      @@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

  • @VanZayka
    @VanZayka 9 หลายเดือนก่อน

    К сожалению, ссылки ведут в пустоту :( Но всё равно огромное спасибо!

  • @MrOMEGARUS
    @MrOMEGARUS 3 ปีที่แล้ว +2

    Ну... Теперь осталось рнр прикрутить к 8266 ...

    • @iomoio3897
      @iomoio3897  3 ปีที่แล้ว

      Там MicroPython есть. Не равнозначная, но весомая альтернатива PHP, кстати, если сопоставлять желаемое и возможности железа. Это я утверждаю как человек, который и то и то попробовал. )

    • @MrOMEGARUS
      @MrOMEGARUS 3 ปีที่แล้ว

      @@iomoio3897 Даёшь видос про маленькую змеюку!!! Думаю актуально будет ибо код из РэНэРэ в РУ перевести труда не составит...

  • @user-vb3jg5nb7n
    @user-vb3jg5nb7n 3 หลายเดือนก่อน

    Ссылки протухли, автор пропал - очень жаль(

  • @romanpiontik5572
    @romanpiontik5572 4 ปีที่แล้ว +2

    Игрушка. Флешка не просто имеет ограниченное количество циклов записи, а ограниченное количество на блок. Любое изменение приводит к перезаписи блока. Если пару раз инсертнул, получил пару раз переписанный блок. Когда я изучал либу, кэш на запись был дубовым. Далее идея с колбэком такая себе. Почему не сделали как у людей с указателем, остается загадкой. А если я не хочу все 100 строк обрабатывать? На первой нашел, что нужно. А если я хочу с 10той на первую вернуться? В обшем, покрутил я ее и отложил в сторонку. Хотя сначала тоже порадовался. К слову, SQLite можно скачать в сырцах и локализовать для любой платформы.

    • @vikvlg
      @vikvlg 4 ปีที่แล้ว +3

      Ну так свяжись с разработчиком и предложи ему помочь доработать библиотеку до "нормального" функционала

    • @valerafox7795
      @valerafox7795 2 ปีที่แล้ว

      Не очень проблематично с СД карточкой работать

  • @TheGTP1995
    @TheGTP1995 4 ปีที่แล้ว

    Can you please add english subtitles?

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว

      Please use the built-in translator

    • @TheGTP1995
      @TheGTP1995 4 ปีที่แล้ว

      @@iomoio3897 Sorry but in the subtitles section I only see russian subtitles, how do I enable the translator?

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว +1

      Sorry. I added.

    • @TheGTP1995
      @TheGTP1995 4 ปีที่แล้ว +1

      @@iomoio3897 Thanks!

  • @dave-in-nj9393
    @dave-in-nj9393 4 ปีที่แล้ว

    I wish I knew how to speak Russian so I could learn what is being said.

    • @iomoio3897
      @iomoio3897  4 ปีที่แล้ว +1

      Hi! I added subtitles. Now you can use the built-in translator. Good luck!

    • @dave-in-nj9393
      @dave-in-nj9393 4 ปีที่แล้ว +2

      @@iomoio3897 I wish I could give you a second thumbs up ! Thank you.

  • @ProgrammerForever
    @ProgrammerForever 4 ปีที่แล้ว

    Жирно)