Arduino + PostgreSQL
- Войдите на сайт для отправки комментариев
Пт, 13/04/2018 - 19:31
Доброго дня коллеги!
Есть мысль организовать взаимодействие между Arduino Nano+ESP8266 и БД PostgreSQL. Может кто пытался уже сделать такую связку? Тип БД не принципиален. На просторах инета не так много информации по данному направлению, самое здравомыслящее что удалось найти тынц.
а зачем?
Да данные от датчиков, поди хочет напрямую заливать.
Ну типовая задача: RFID-считыватель считывает данные с метки, передает запросом в БД, оттуда приходит ответ допустима ли метка для открытия двери или нет. Другая ситуация: считыватель отпечатка пальца - передает данные по ID пальчика, а из базы уже приходит ответ открыть или нет дверку, про датчики опять же: датчик передает данные об освещенности на улице, БД в зависимости от установок разрешает или запрещает открытие рольшторы (в будние дни открыть, в выходные не открывать, но праздники вручную). Да мало ли какие задачи требуют двустороннего взаимодействия.
На просторах инета не так много информации
А знаете почему?
Потому такой задачи как
организовать взаимодействие между Arduino Nano+ESP8266 и БД PostgreSQL.
Не существует в природе!
БД работает на каком-то железе (допустим на ПК) и потому задача называется "организовать связь между ардуиной и ПК". Вот такой поиск Вам даст гораздо больше результатов.
Это можно сделать, например, через обычный сериал. На стороне ПК нужно написать программу, которая бы читала из последовательного порта информацию с ардуины, делала бы что надо с БД и отсылала бы информацию на ардуиниу.
Что из перечисленного вызывает у Вас проблемы?
1. Работа с Serial на ардуине?
2. Работа с последовательным портом на ПК?
3. Работа с БД на ПК?
По любой из этих трёх тем информации в сети МОРЕ-ОКИЯН! А других никаких проблем здесь и нет.
В топе я указал с помощью чего взаимодействие - ESP8266 (wifi). Не сериал. Впрочем, ESP сам вешается на Serial.
Другими словами: как организовать протокол прикладного уровня между Arduino и БД PostgreSQL при наличии транспортного протокола TCP?
И коль скоро в первом топе я разместил ссылку на некое решение, то не такое уж и ненужное это дело.
Я могу объяснить, почему таких решений мало. Как правило - на МК нет столько ресурсов, чтобы полноценно работать с записями БД, которые вернет SQL-запрос. Можно, конечно, нафантазировать, что запросы будут небольшие, возвращаться будет одна запись... Но какому профессионалу захочется тратить время на создание такого кастрированного решения? Вопрос философский.
В тому же нет особого смысла делать в прошивке хардкодом SQL-запросы. Они меняются, эволюционируют... Каждый раз перепрошивать МК, висящий на двери?
Посему - сращивание МК и больших систем происходит на несколько ином уровне, в целом сводящемуся к идеологии протокола RADIUS - на сервер отсылается набор данных, обратно приходит Accept или Reject. Все тяжелые проверки проводятся на стороне сервера. Решение получается легко масштабируемым и модифицируемым.
И коль скоро в первом топе я разместил ссылку на некое решение, то не такое уж и ненужное это дело.
Инструменты нужно использовать по назначению. Кто-то Doom на смарт-часах запускает, но это не значит, что в него там интересно играть. Так и проект по Вашей ссылке представляет чисто "спортивный" интерес. Правильное решение Вам уже предложили - классическую трёхзвенную архитектуру.
Спасибо за отклик. С протоколом RADIUS ранее не сталкивался, почитаю. Коль скоро ардуинка вполне себе неплохо справляется с методами get и post то можно обойтись и трехзвенкой.
Работ на прямую с бд, не получится. Самая простая схема, это поднять сервер базы данных на ПК или на миниПК, типа raspberry. На сервере написать приложение или воспользоваться веб сервером, которое будет работать с базой данных.
если у Вас будет развернут веб сервер, то тут совсем все просто. Данные передаете get или post, в зависимости от задачи, дальше что бы не изобретать велосипед можно воспользоваться Json или xml. На стороне сервера пишите скрипт например на php, который будет получать данные и работать с базой данных.
второй вариант, это написать программу на сокетах которая будет делать тоже самое, что и описано выше.
мне кажется, что вариант с веб сервером для Вас более подайдет.
Удачи!)
... Самая простая схема, это поднять сервер базы данных на ПК или на миниПК...
...мне кажется, что вариант с веб сервером для Вас более подайдет.
Согласен. Главное быстро и сердито.
https://github.com/ChuckBell/MySQL_Connector_Arduino