Перейти к содержанию

Построение Скд: Прямые Запросы К Mysql


Рекомендуемые сообщения

Добрый день, друзья!

Помогите советом в выборе оборудования и в шагах реализации.

Пытаюсь своими силами реализовать простейшую СКД: дверь, замок, считыватель карточек.

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

Такое возможно? Может это уже реализовано?

Если нет, на каком оборудовании это пытаться реализовать?

Если нужно уточнить какие-то детали - буду рад ответить на ваши вопросы.

Спасибо за помощь!

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

С такой постановкой вопроса - распберри пи на каждую точку, с более низкоуровневыми железками не справишься...

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

К каждому замку ставить ПК? :)

Хотя распберри и будет тем самым пк, только небольшим и относительно дешевым...

А сама база, очевидно, где то в сети этих "замков", вероятно на пк или еще где...

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Программу для контроллера пишешь сам?

Пока ещё ничего не пишу. Рассматриваю все варианты, ищу готовые решения.

С такой постановкой вопроса - распберри пи на каждую точку, с более низкоуровневыми железками не справишься...

К каждому замку ставить ПК? :)

Хотя распберри и будет тем самым пк, только небольшим и относительно дешевым...

А сама база, очевидно, где то в сети этих "замков", вероятно на пк или еще где...

Этот вариант вполне допустимый, если контроллеры нужным мне функционалом прошить невозможно.

Управлять всеми замками с распберри? Есть какие-то готовые решения (желательно под линукс)?

База - не то, что за пределами замков, но даже за пределами города, где эти замки будут расположены.

Изменено пользователем nxs
Ссылка на комментарий
Поделиться на другие сайты

Пытаюсь своими силами реализовать простейшую СКД: дверь, замок, считыватель карточек.

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

Такое возможно? Может это уже реализовано?

Если нет, на каком оборудовании это пытаться реализовать?

Разжуйте слово "Реализовать": Разработать , Выбрать готовое?

Сколько точек доступа? Степень территориальной распределенности?

К чему такая категоричная централизванность? При перебоях связи двери будут заблокированы что ли? (Кстати не забывайте про ответственные моменты по пожарной безопасности, СКУД должен работать как часы и открыться по сигналу "пожар").

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

И почему именно Мускуль если не секрет? Мало чтоли СУБД нормальных под Линукс(PostgreSQL, Firebird и др.)

Почитайте например как работают СКУДы Kantech, Бастион, Perco...

Вот например на Perco можно все сделать, нормальный Питерский СКУД, неплохие контроллеры с Ethernet интерфейсом

пс Ставить комп на каждую дверь это как минимум "из пушки по воробьям"

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

Управлять всеми замками с распберри? Есть какие-то готовые решения (желательно под линукс)?
На каждую дверь свой распберри, да. Это реально первое, что идет в голову, если надо реализовать "свою" подобную систему, достаточно специфическая задача для любых контроллеров и точно потребует разработки. Или готовые СКД, которые уже разработаны и которых, мягко говоря, дофига... Готовые решения для распберри? Прямой запрос к серверу MySQL или любому другому, из под линукса - не проблема вообще, вопрос 5 минут гугления. Дергать одним-двумя i/o портами на распберри - тоже дело пары минут...
если контроллеры нужным мне функционалом прошить невозможно.
Можно, на любом мк с езернет модулем на борту, или отдельным недорогим езернет контроллером на плате, плюс разъем с трансформаторами внутри... Просто и недорого, в железе... А вот программная часть - "слегка" наоборот. Я, например, если и возьмусь реализовать такое, запрошу минимум несколько десятков тысяч за один экземпляр, гербер этого экземпляра и хекс для прошивки (не исходники, за них значительно больше)... Изменено пользователем NebsteR

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Можно, на любом мк с езернет модулем на борту...

Забавно будет понаблюдать за переписыванием libmySQL.so под какую нибудь Мегу или Пик (см. название топика) :crazy:

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

А никто это не собирается делать, для простого запроса к базе и получения ответа достаточно поднятого tcp/ip стека, с некоторыми дополнениями...

К тому же, если во главе угла не стоит максимальная дешевизна железа, то вполне можно поднять все это дело под мелким линуксом на arm ядре (да, собственно, и не только на arm), и все сведется к тем же высокоуровневым манипуляциям, что и на распберри...

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Но arm ни есть любой мк, это достаточно мощная железяка.

Можно и на "любом" 8 битном МК сделать, если отказаться от гнилой концепции СУБД-Контроллер в пользу трехзвенки. Сервер приложений общается с контроллерами на своем "примитивном" протоколе, сервер приложений с СУБД стандартными средствами и без костылей.

пс Поднимать весь стек TCP\IP полностью и не нужно вовсе, он слишком жирен

Изменено пользователем ferrum

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

Сервер приложений общается с контроллерами на своем "примитивном" протоколе, сервер приложений с СУБД стандартными средствами и без костылей.
Такой вариант тоже есть...
Но arm ни есть любой мк, это достаточно мощная железяка.
Я и не говорил, что это любой мк :)
пс Поднимать весь стек TCP\IP полностью и не нужно вовсе, он слишком жирен
Ясен пень...

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Такой вариант тоже есть...

Прикольно, приведите пример любого серьезного СКУДа где используется не такой вариант...

Во всяком случае контроллеров СКД разговаривающих с СУБД не встречал, но я ведь не волшебник, а только...

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

Прикольно, приведите пример любого серьезного СКУДа где используется не такой вариант...
Понятия не имею, ТС спрашивал о прямых запросах от контроллера - я ответил :)

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

ТС очередной человек, зарегистрировавшийся чтоб задать единственный провакационный вопрос "А что если сделать квадратные колеса" и смыться :crazy:

Нужен этот огород? Я подозреваю что человек нуждается в интеграции с какой то системой( не иначе как с апачем), дак это совсем другой разговор

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

Разжуйте слово "Реализовать": Разработать , Выбрать готовое?

Разработать, если нет готового решения (или хотя-бы частичного решения)

Сколько точек доступа? Степень территориальной распределенности?

На данный момент одна дверь. Всё.

К чему такая категоричная централизванность? При перебоях связи двери будут заблокированы что ли? (Кстати не забывайте про ответственные моменты по пожарной безопасности, СКУД должен работать как часы и открыться по сигналу "пожар").

Идеально было бы всегда обращаться к центральной БД, если связи нет - открывать/закрывать "по памяти".

Что касается пожарной безопасности - решение это "для себя", по-этому вопросы открытия по сигналу "пожар" пока не рассматриваю.

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

Мне нужно как раз наоборот для правильной интеграции в существующую систему учета рабочего времени.

И почему именно Мускуль если не секрет? Мало чтоли СУБД нормальных под Линукс(PostgreSQL, Firebird и др.)

Наша система учета рабочего времени работает на MySQL.

пс Ставить комп на каждую дверь это как минимум "из пушки по воробьям"

Даже это решение на данном этапе устроит. Если не сложно - опишите пути реализации, пожалуйста.

Но arm ни есть любой мк, это достаточно мощная железяка.

Можно и на "любом" 8 битном МК сделать, если отказаться от гнилой концепции СУБД-Контроллер в пользу трехзвенки. Сервер приложений общается с контроллерами на своем "примитивном" протоколе, сервер приложений с СУБД стандартными средствами и без костылей.

Но как? :) Где об этом почитать?

ТС очередной человек, зарегистрировавшийся чтоб задать единственный провакационный вопрос "А что если сделать квадратные колеса" и смыться :crazy:

Нужен этот огород? Я подозреваю что человек нуждается в интеграции с какой то системой( не иначе как с апачем), дак это совсем другой разговор

Да, позвольте описать немного подробнее:

1. есть система учета рабочего времени, написана на основе liferay (java)

2. работает примитивно: каждый сотрудник вручную заполняет время потраченное на определенные задачи

3. нужно в эту систему добавлять время прихода/ухода сотрудника.

4. (этот пункт пока не обязательный) так же хотелось бы иметь быть возможность предупреждать сотрудника перед выходом о недоработке <-- то есть, нужна непосредственная связь с MySQL.

Ссылка на комментарий
Поделиться на другие сайты

А у вас как с программированием под ПК?

Контроллер Z5R NET и SDK к нему для ваших задач я думаю за глаза и никаких малин.

Извиняйте но библиотекак Виндовая только, хотя стоит уточнить

Изменено пользователем ferrum

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

Вот уже больше 10ти лет работаю системным администратором.

Пописываю на пхп в качестве подработки, скрипты на шелле - само собой.

Системным программированием не увлекался, но руки прямо стоят - думаю, справлюсь.

Ссылка на комментарий
Поделиться на другие сайты

Конвертер Z397 для Линуксов нормально подойдет, так как аппаратный в отличии от СДК выше упомянутый, протокол конвертер-ПК открыт.

На PHP я думаю "не совсем удобно" будет, удобней написать будет демон мониторящий компорт, выбирающий события из контроллера и закидывающий их в БД

абыр абыр абырвалг...

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, сейчас посмотрю, что я смогу с ним сделать.

Ещё нашел такой вариант, но вам не по душе будет: http://nesit.org/rfp...-access-system/

Но очень просто в реализации.

Изменено пользователем nxs
Ссылка на комментарий
Поделиться на другие сайты

Мне нравится. Я имел ввиду, что в ваших глазах это решение "с пушки по воробьям" :)

У меня ещё один вопрос. Реализую по вот этой схеме: https://github.com/xillwillx/RFPiD

Там есть картинка, где все красиво нарисовано. Вот она:

jXt2pnKlvHmEA.png\

Не могли бы вы ответить, что это там? Нигде не нашел описания.

Ссылка на комментарий
Поделиться на другие сайты

A breadboard, wires, and 12v power adapter...

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Семен-семеныч ... спасибо!

Кстати, (простите за дилетантский вопрос) а на сколько безопасна такая схема?

Может дополнительно добавить какие-то развязки?

Изменено пользователем nxs
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Друзья, у меня все получилось, все отлично работает (даже с видео и звуком).

Вопрос новый появился: что мне нужно в схеме заменить, если место замка (12 вольт на клемы) надо подавать питание 220В на другое устройство (звонок) с большим током (около 10 ампер)?

С блоком питания понятно, а с транзистором как?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • ИМХО, только с24, с25, с12 имеет смысл проверить/заменить.
    • Я сам найду, вы мне название напишите пожалуйста.
    • Добрый вечер..)) Нет в моем случае лучше найти готовый для моего Цифровой осциллограф Instrustar ISDS205A 2 канала х 20 МГц..
    • А как же вы квазар спаяли? Или ЛУТом не владеете? Можно даже маркером все прорисовать. А за осцил боятся не стоит, ему на вход будет приходить допустимое напряжение (указано в хар-ках осциллографа).
    • Релюхи не причём. При неисправности релюх симптомы были бы другие. И ИБП даже не клацает когда переходит в  "аварию".   Да. Аккум новый. Более того - 2 новых пробовал. И без АКБ тоже. Не влияет. Да мелкие особо не вздуваются ж. Хотя С21 под подозрением..   Спасибо. Буду иметь ввиду.
    • #include <Wire.h> #include <Oregon_TM.h> #include <BME280I2C.h> //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Скетч для устройства, передающего данные датчика BME280 в формате Oregon Scientific THGN132N //Принципиальная схема прилагается. //Для работы необходима библиотека https://github.com/finitespace/BME280/ //Устройство работает от 3-ех пальчиковых батареек, для экономии электричества заливать скетч нужно через ISP //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Также возможна передача данных в формате - THP (температура, влажность, давление, напряжение батареи) //Пример с приёмником поддерживает расшифоовку THP //////////////////////////////////////////////////////////////////////////////////////////////////////////// # define THGN_SEND 1 // Передавать ли данные в формате THGN132 # define THP_SEND 0 // Передавать ли данные в формате THP # define DEVICE_LOG 1 //Писать ли лог В Serial # define DONE_PIN 15 // вывод сигнала об окончании работы на таймер # define BME_WAIT 10 // Сколько мс ожидать датчик BME # define BATTERY_THR 3.5 // Порог напряжения для выставляения флага разряда батарейки (THGN) ///////////////////////////////////////////////////////////////////////////////////////////////// //Ниблы датчика THP //Во всех полях младшие ниблы идут вперёд!!! // 1-2 - тип (55) // 3 - канал (0-7) // 4-6 - (температура от -100С) * 10. Т.е. +25.1С = 1251 = 4E3h // 7-9 - Влажность *10 Т.е. 25.1% = 251 = 0FBh // 10-12 - (давление от 500ммртст) * 10. Т.е. 765мм = 2650 = A5Ah // 13-15 - данные с АЦП (A0) // 16-17 - CheckSUM // 18-19 - CRC8 (poly 0x07 start 0x00) ///////////////////////////////////////////////////////////////////////////////////////////////// Oregon_TM transmitter(4); BME280I2C bme; bool bme_present = false; float bme_temp(NAN), bme_hum(NAN), bme_pres(NAN); ///////////////////////////////////////////////////////////////////////////////////////////////// void setup() { digitalWrite(DONE_PIN, LOW); pinMode(DONE_PIN, OUTPUT); #ifdef DEVICE_LOG Serial.begin(115200); Serial.println("Waiting for BMEsensor..."); #endif //Обмен данными с BME////////////////////////////////// Wire.begin(); while(!bme.begin()) { if (millis() > BME_WAIT) break; } if (!bme.begin()) { #ifdef DEVICE_LOG Serial.println("No BME sensor found"); #endif bme_present = false; } else { switch(bme.chipModel()) { case BME280::ChipModel_BME280: bme_present = true; bme.read(bme_pres, bme_temp, bme_hum); #ifdef DEVICE_LOG Serial.println("Found BME280 sensor! Success."); Serial.print("Temperature = "); Serial.print(bme_temp, 1); Serial.println("C"); Serial.print("Humidity = "); Serial.print(bme_hum, 1); Serial.println("%"); Serial.print("Pressure = "); Serial.print(bme_pres * 0.75, 1); Serial.println("mmHg"); #endif break; default: #ifdef DEVICE_LOG Serial.println("Found UNKNOWN sensor! Error!"); #endif bme_present = false; } } //Напряжения батареи/////////////////////////////////////////// word battvotage = (word)(((float)(1.1 * 16368) / Vbg()) * 100); #ifdef DEVICE_LOG Serial.print("Battery voltage = "); Serial.println(battvotage,HEX); #endif //Подготовка и отправка данных THGN////////////////////////////////////// transmitter.protocol == 2; if (THGN_SEND) { transmitter.setType(THGN132); transmitter.setChannel(3); transmitter.setBatteryFlag(battvotage < BATTERY_THR); if (bme_present) { if (bme_hum > 98) bme_hum = 98; if (bme_hum < 2) bme_hum = 2; if (bme_temp > 70) bme_temp = 70; if (bme_temp < -50) bme_temp = -50; transmitter.setTemperature(bme_temp); transmitter.setHumidity(bme_hum); transmitter.setComfort(bme_temp, bme_hum); } else { transmitter.setTemperature(-49.9); transmitter.setHumidity(2); transmitter.setComfort(-49.9, 2); } transmitter.SendPacket(); } // Если отправляются оба формата пакетов, межу ними надо выдержать паузу if (THP_SEND && THGN_SEND) delay(100); //Подготовка и отправка данных THP////////////////////////////////////// if (THP_SEND) { transmitter.setType(THP); transmitter.setChannelTHP(1); transmitter.setBatteryTHP( battvotage); if (bme_present) { transmitter.setTemperatureTHP(bme_temp); transmitter.setHumidityTHP(bme_hum); transmitter.setPressureTHP(bme_pres * 0.75); // перевод Pa в mmHg } else { transmitter.setErrorTHP(); } transmitter.SendPacket(); } #ifdef DEVICE_LOG Serial.println(); Serial.print(millis()); Serial.println("ms"); Serial.println(); #endif //Команда на отключение питания digitalWrite(DONE_PIN, HIGH); } ///////////////////////////////////////////////////////////////////////////////////////////////// void loop(){} ///////////////////////////////////////////////////////////////////////////////////////////////// int Vbg() { ADMUX = (1<<REFS0)|(0<<REFS1)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(0<<MUX0); long buffersamp=0; for (int n=0x0; n<=0xff; n++ ) { ADCSRA = 0xc7; while (bit_is_set(ADCSRA,ADSC)); buffersamp += ADC; } buffersamp >>=4; //16368 full scale 14bit ADCSRA &= ~(1 << ADEN); // отключаем АЦП return buffersamp; } Вот код программы. Пробовал по разному и от 5в запитывал и всю систему от 3,3 в. Причем голая ардуинка с таймером работает в нормальном режиме некоторое время, но потом все равно слетает и начинает питать мк постоянно( Причем это происходит всегда через разный промежуток времени.
×
×
  • Создать...