«База данных» на Ардуино для «Умного дома». Структура 4


Всем привет. Давно ни чего не писалось.

 

Сегодня речь пойдет о базах данных. Да, именно о них.

Почему данная тема стала актуальной?

В процессе внедрения системы умного дома, я столкнулся с большой проблемой:

Добавление новых датчиков в свою систему.
Это в свою очередь, приводит к добавлению новых параметров и данных, которые нужно передавать от контроллера к контроллеру, и передавать эту информацию на периферию и обратно.

Немного поразмыслив, появилась идея создать базу данных, способную облегчить все эти нюансы.

В этой и последующих статьях рассмотрим:

  1. Объявление базы — Структура
  2. Функции Insert и Update
  3. Функция выбора данных из базы Select
  4. Функция подсчета количества памяти Count
  5. Функция удаления Delete
  6. Передача базы с контроллера на контроллер
  7. Контрольные суммы для беспроводной связи

Вот перечень минимальных функция для работы с базой данных.

Глава 1 — Структура базы

Базой данных будет являться массив байт.

Размер массива задаем сразу и можем менять при добавления новых параметров или новых датчиков

Первый байт в массиве содержит количество параметров
Далее группа байт(пакет)
Первый байт в группе:

  • 4 бита — номер контроллера
  • 4 бита — размер параметра в байтах

Второй байт в группе — номер(id) параметра внутри контроллера
n байт — значение параметра

Количество групп ограничено объемом ОЗУ контроллера

Пример массива:

Поместим в наш массив(базу) температуру воздуха от -255.255 до +255.255: +28.25
Номер контроллера:01

ID параметра:01

Количество параметров:01

Размер параметра: 3 байта(целая, дробная, знак)

Описание параметра и контроллера Значение byte
Температура воздуха от -255.255 до +255.255 +28.25 28 25 00
Номер контроллера 01 01
ID параметра 01 01
Размер параметра, байт 3 00 00 00

Сформируем массив параметров.

1й байт в массиве:01
1й байт в группе: 00010011=19(DEC)

  • 4 бита — номер контроллера:0001
  • 4 бита — размер параметра:0011

2й байт в группе:01
3й байт в группе целая часть:28
4й байт в группе дробная часть:25
5й байт в группе знак:00(если «+» 00, если «-» 01 )

Получаем массив(DEC) 01 19 01 28 25 00

Добавим на тот же контроллер еще один параметр, например, состояние цифровых входов, 1 байт(все включены 11111111)=255, id=2

Описав его тем же способом, получаем обновленный массив 02 19 01 28 25 00 17 02 255

Описание параметра и контроллера Значение byte
Состояние цифровых входов все включены(11111111) 255
Номер контроллера 01 01
ID параметра 02 02
Размер параметра, байт 1 00

Все очень просто.

4 комментс для “«База данных» на Ардуино для «Умного дома». Структура

  1. Ответить Сергей Янв 28, 2017 13:38

    для упращения работы можно библиотеку написать… но я не вижу в этом смысла…

  2. Ответить Дмитрий Дек 13, 2017 12:23

    Очень жаль, что вы забросили сайт..

Добавить комментарий