Arduino + PostgreSQL

linnenemy
Offline
Зарегистрирован: 11.04.2018

Доброго дня коллеги!

Есть мысль организовать взаимодействие между Arduino Nano+ESP8266 и БД PostgreSQL. Может кто пытался уже сделать такую связку? Тип БД не принципиален. На просторах инета не так много информации по данному направлению, самое здравомыслящее что удалось найти тынц.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а зачем?

sadman41
Offline
Зарегистрирован: 19.10.2016

Да данные от датчиков, поди хочет напрямую заливать. 

linnenemy
Offline
Зарегистрирован: 11.04.2018

Ну типовая задача: RFID-считыватель считывает данные с метки, передает запросом в БД, оттуда приходит ответ допустима ли метка для открытия двери или нет. Другая ситуация: считыватель отпечатка пальца - передает данные по ID пальчика, а из базы уже приходит ответ открыть или нет дверку, про датчики опять же: датчик передает данные об освещенности на улице, БД в зависимости от установок разрешает или запрещает открытие рольшторы (в будние дни открыть, в выходные не открывать, но праздники вручную). Да мало ли какие задачи требуют двустороннего взаимодействия.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

linnenemy пишет:

На просторах инета не так много информации 

А знаете почему?

Потому такой задачи как

linnenemy пишет:

организовать взаимодействие между Arduino Nano+ESP8266 и БД PostgreSQL.

Не существует в природе!

БД работает на каком-то железе (допустим на ПК) и потому задача называется "организовать связь между ардуиной и ПК". Вот такой поиск Вам даст гораздо больше результатов.

Это можно сделать, например, через обычный сериал. На стороне ПК нужно написать программу, которая бы читала из последовательного порта информацию с ардуины, делала бы что надо с БД и отсылала бы информацию на ардуиниу.

Что из перечисленного вызывает у Вас проблемы?

1. Работа с Serial на ардуине?

2. Работа с последовательным портом на ПК?

3. Работа с БД на ПК?

По любой из этих трёх тем информации в сети МОРЕ-ОКИЯН! А других никаких проблем здесь и нет.

 

linnenemy
Offline
Зарегистрирован: 11.04.2018

В топе я указал с помощью чего взаимодействие - ESP8266 (wifi). Не сериал. Впрочем, ESP сам вешается на Serial.

Другими словами: как организовать протокол прикладного уровня между Arduino и БД PostgreSQL при наличии транспортного протокола TCP?

И коль скоро в первом топе я разместил ссылку на некое решение, то не такое уж и ненужное это дело.

sadman41
Offline
Зарегистрирован: 19.10.2016

Я могу объяснить, почему таких решений мало. Как правило - на МК нет столько ресурсов, чтобы полноценно работать с записями БД, которые вернет SQL-запрос. Можно, конечно, нафантазировать, что запросы будут небольшие, возвращаться будет одна запись... Но какому профессионалу захочется тратить время на создание такого кастрированного решения? Вопрос философский.

В тому же нет особого смысла делать в прошивке хардкодом SQL-запросы. Они меняются, эволюционируют... Каждый раз перепрошивать МК, висящий на двери?

Посему - сращивание МК и больших систем происходит на несколько ином уровне, в целом сводящемуся к идеологии протокола RADIUS - на сервер отсылается набор данных, обратно приходит Accept или Reject. Все тяжелые проверки проводятся на стороне сервера. Решение получается легко масштабируемым и модифицируемым.

kalapanga
Offline
Зарегистрирован: 23.10.2016

linnenemy пишет:

И коль скоро в первом топе я разместил ссылку на некое решение, то не такое уж и ненужное это дело.

Инструменты нужно использовать по назначению. Кто-то Doom на смарт-часах запускает, но это не значит, что в него там интересно играть. Так и проект по Вашей ссылке представляет чисто "спортивный" интерес. Правильное решение Вам уже предложили - классическую трёхзвенную архитектуру.

linnenemy
Offline
Зарегистрирован: 11.04.2018

Спасибо за отклик. С протоколом RADIUS ранее не сталкивался, почитаю. Коль скоро ардуинка вполне себе неплохо справляется с методами get и post то можно обойтись и трехзвенкой.

The Kaban
Offline
Зарегистрирован: 28.09.2016

Работ на прямую с бд, не получится. Самая простая схема, это поднять сервер базы данных на ПК или на миниПК, типа raspberry. На сервере написать приложение или воспользоваться веб сервером, которое будет работать с базой данных.

если у Вас будет развернут веб сервер, то тут совсем все просто. Данные передаете get или post, в зависимости от задачи, дальше что бы не изобретать велосипед можно воспользоваться Json или xml. На стороне сервера пишите скрипт например на php, который будет получать данные и работать с базой данных.

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

мне кажется, что вариант с веб сервером для Вас более подайдет.

Удачи!)

Votmax
Offline
Зарегистрирован: 18.06.2016

The Kaban пишет:

... Самая простая схема, это поднять сервер базы данных на ПК или на миниПК...

...мне кажется, что вариант с веб сервером для Вас более подайдет.

Согласен. Главное быстро и сердито.

negavoid
Offline
Зарегистрирован: 09.07.2016