Ос сенсорных сетей tinyos реферат

Обновлено: 04.07.2024

Авторы : Тимков А.В., Телятников А.О.

Источник : Інформаційні управляючі системи та комп’ютерний моніторинг (ІУС та КМ-2010)./ Матеріали I всеукраїнської науково-технічна конференції студентів, аспірантів та молодих вчених - 19-21 травня 2010 р., Донецьк, ДонНТУ. - 2010.

Беспроводная сенсорная сеть (БСС) – это беспроводная система, которая представляет собой распределенную, самоорганизующуюся и устойчивую к отказам отдельных элементов сеть, узлами которой являют специальные устройства – моты.

Мот(от англ. motes - пылинки) – это миниатюрное вычислительно- коммуникационное устройство. Это небольшая плата, которая содержит процессор, оперативную и флэш памяти, ЦАП и АЦП, радиочастотный приемопередатчик, источник питания и датчики. Типы датчиков могут быть совершенно любыми. Чаще всего используются датчики температуры , давления, влажности, освещения, вибрации и т.д.[1]

Для передачи данных в таких системах используется специальные протоколы передачи данных. На данный момент существует большое число таких протоколов. Целью данной работы, является построение модели беспроводной сенсорной сети с использованием одного из таких протоколов, для получения экспериментальных данных, которые необходимы для расчета среднего количества пересылок пакетов данных.

БСС – это беспроводная сеть, передача информации в которой производится от одного узла к другому, до тех пор пока пакет данных не достигнет удаленного шлюза. От шлюза информация поступает на головной компьютер, который выполняет обработку информации, либо же передает ее дальше. На рис. 1 представлена обобщенная схема всей системы связей.

CTP разработан для относительно низких коэффициентов трафика таким образом, что остается достаточно свободного места в канале для передачи и получения маршрутизируемых кадров даже в случае, когда сеть переадресовывает кадры данных коллекции. Системы с ограниченной полосой пропускания или приложения, работающие с большими объемами данных, могут получить выгоду от другого протокола, который, например, может упаковать много маленьких кадров в один пакет данных или использовать механизмы регулирования скорости.

TinyOS – это операционная система с открытым исходным кодом. Данная операционная система предназначена специально для сенсорных сетей. TinyOS имеет компонентную структуру – это позволяет обеспечивать минимальный размер кода, при правильной компоновке, а учитывая тот факт, что моты имеют строгие ограничения по объему памяти, то данная структура играет важную роль для сенсорных сетей[2].

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

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

При разработке TinyOS основное внимание уделялось обеспечению малого энергопотребления и возможности использования для программирования языка с высоким уровнем абстракции. На фоне этого была создана ОС с простой, но очень развитой компонентной структурой.

Т.к. TinyOS является фактически стандартом, необходимо, чтобы система моделирования позволяла эмулировать работу беспроводной сенсорной сети под управлением TinyOS.

TOSSIM – это симулятор приложений TinyOS. Он является библиотекой TinyOS. Tossim – симулятор дискретных событий. Событие сообщает о получении данных от сенсора, о срабатывании таймера, о передачи пакетов данных или о завершении вычислений. Отсюда следует, что TOSSIM – эмулирует события для беспроводных сенсорных систем, в которых моты работают под управлением TinyOS.

Tossim устанавливается на компьютер вместе с набором инструментальных средств, необходимых для создания, компиляции, установки и отладки приложений для беспроводных сенсорных сетей. Работа с данных инструментальными средствами осуществляется через командную строку.

Основным преимуществом TOSSIM является то, что эмулятор позволяет моделировать работу приложений, которые написаны для реальных мотов. Компилятор TOSSIM`а заменяет несколько низкоуровневых компонентов приложения, которые взаимодействуют с аппаратными ресурсами реального мота, компонентам, взаимодействующими с программными реализациями этих устройств в эмуляторе.

TOSSIM преобразует прерывания компьютера в события эмулятора и выстраивает их в очередь; эта очередь событий эмулятора управляет выполнением приложения TinyOS для отдельного моделируемого мота. Возникающие события вызывает обработчик прерывания, который посылает сигналы событиям и вызывает команды TinyOS, имитируя то, что происходит в реальных мотах. Эти события и команды TinyOS запускают задачи и инициируют дальнейшую генерацию событий эмулятора.

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

На рис.2 приведен пример дерева сети. Шлюз является корнем, а другие узлы образуют множества маршрутов, которые подключаются к этому корню. В СТР не используется адресация, поэтому узел не отправляет пакет определенному корню, а неявно выбирает корень дерева, посредством выбора адресата следующей пересылки.

Протокол CTP использует 2 формата кадра : кадр данных и кадр маршрутизации. CTP спроектирован для сетей с относительно низким трафиком, т.к. полосы пропускания канала должно быть достаточно для пересылки кадров маршрутизации в то время, когда передаются кадры данных.

CTP использует ожидаемое количество пересылок(ETX) в качестве градиента маршрутизации. Корень дерева имеет ETX 0. ETX узла равен ETX родителя плюс ETX связи с родителем. В конечном итоге СТР, учитывая текущий маршрут, выбирает маршрут с меньшим значение ETX. ETX – представляется как 16-разрядное десятичное вещественное число с фиксированной точкой с точностью до десятых. Например ETX со значением 45, представляется как ETX 4.5, а ETX со значением 10 представляется как ETX 1.

Tymo – это реализация протокола Dymo в TinyOS[3], который является протоколом маршрутизации для мобильных устройств в одноранговых сетях. Сперва протокол разрабатывался для поиска маршрутов поверх IP уровня.

Поскольку, протокол Dymo, является реактивных протоколом, то он явно не хранит топологию сети. В случае необходимости отправки данных узел устанавливает маршрут до места назначения. За счет малого обмена информацией о маршрутизации, сокращается сетевой трафик, что позволяет экономить полосу пропускания. За счет малых объемов хранимой информации о маршрутизации, Dymo легко встраивается в ограниченную память мотов.

Когда узлу необходимо получить маршрут, он распространяет Route Request (RREQ) – пакет запорашивающий маршрут между отправителем и получателем. Этот пакет распространяется по всей сети или в пределах некоторого числа соседних узлов. Когда пакет достигает цели (или узла имеющего новый маршрут к цели), узел отправляет Route Replay(RREP). Этот ответ очень похож на Route Request , отличие состоит лишь в том, что пакет имеет одноадресный маршрут и не требует ответа.

Когда узлы получают RREQ или RREP, они сохраняют в кеше информации об отправителе, таким образом они знают путь к источнику полученного пакета, который может быть использован позже (если путь не устаревший), без отправления RREQ. Узлы имеют возможность накапливать путь сопровождаемый пакетом в пакете непосредственно. Таким образом когда узлы отправляют RREQ или RREP в пакете ответа могут получить информацию больше чем путь между двумя узлами .

Для тестирования модели беспроводной сенсорной сети был выбран протокол CTP, поскольку он является базовым для большинства приложений TinyOS. На рис. 3 представлена структура тестовой модели беспроводной сенсорной сети.

Для построения модели используется 10 мотов. Между узлами существует двунаправленные соединения с определенным уровнем затухания в db.Структура модели описывается в специальных текстовых файлах, где указываются все необходимые параметры. Для создания и запуска модели используется программный код написанный на Python`e, который считывает информацию о структуре сети, создает модель и запускает цикл обработки событий. В табл. 1 представлены фрагменты программного кода и файла топологии сети.

Было осуществлено моделирование для данной беспроводной сенсорной сети. В табл. 2 представлен фрагмент информации полученной в результате моделирования.

Полученные данные
.
DEBUG (0): Received packet at 0:0:14.137486321 from node 2.
DEBUG (0): Received pack et addressed to me so ack it
DEBUG (2): Forwarding packet from 3.
DEBUG (2): CtpForwardingEngineP$forward forwarding packet 0xb7ae7f72 with queue size 2
DEBUG (2): Received packet addressed to me so ack it
DEBUG (0): Received packet at 0:0:14.762333734 from node 2.
DEBUG (0): Received packet addressed to me so ack it
DEBUG (2): Send completed.
.

По полученным данным был произведен расчет среднего количества пересылок пакетов данных. Данный критерий – это среднее значение переходов пакетов данных, для достижения шлюза (узел №0). Для расчета данного значения, нам необходимо знать сумму всех пересылок пакетов, от одного узла к другому, а так же сумму всех исходных пакетов:

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

Для решения поставленной задачи были изучены : среда моделирования беспроводных сенсорных сетей, общие принципы функционирования уже существующих протоколов передачи данных в. В ходе работы была создана модель, некоторой беспроводной сети, после запуска которой были получены данные боле чем по 70000 событий.

Так же был установлен критерий, который позволит в будущем сравнивать эффективность работы различных протоколов. С помощью специально разработанного программного приложения был произведен анализ полученных данных моделировании, на основе, которых рассчитан показатель среднего числа пересылок 1 пакетов от узла отправителя к шлюзу, который составил для данной модели сети 4,34.

TinyOS — это встроенная, основанная на компонентах операционная система и платформа для беспроводных устройств с низким энергопотреблением, таких как устройства, используемые в беспроводных сенсорных сетях (WSN), smartdust, повсеместных вычислениях, персональных сетях, автоматизации зданий и интеллектуальных счетчиках.

Содержание

Реализация

Он написан на языке программирования nesC, диалекте C, как набор взаимодействующих задач и процессов. Её дополнительные инструменты представлены в основном в форме Java-приложений и интерфейсов для shell-скриптов

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

Код TinyOS статически связан с кодом программы и компилируется в маленький исполняемый файл при помощи традиционного инструментария GNU toolchain. Сопутствующие утилиты предоставляют полноценную платформу для разработки под TinyOS.

Архитектура

История

Все началось с сотрудничества между Калифорнийским университетом, Беркли, Intel Research и Crossbow Technology, было выпущено в виде бесплатного программного обеспечения с открытым исходным кодом под лицензией BSD и с тех пор превратилось в международный консорциум TinyOS Alliance.

1999 - первая платформа TinyOS (WeC) и реализация ОС.

2000 - версия 0.43 TinyOS.

2001 - выпуск версии TinyOS 0.6.

2002 - работа над nesC, начало сотрудничества Intel Research и UC Berkeley. Выпуск версии 1.0 реализованное в nesC.

2003 - выпуск версии TinyOS 1.1.

2005 - завершение проекта NEST. Выпуск версии 1.1.15.

2006 - выпуск версий TinyOS 2.0 и beta1 2.0 beta2.

2007 - выпуск версий TinyOS 2.0.1, 2.0.2 и 2.1.

2008 - выпущена TinyOS 2.1.0.

2010 - выпущена TinyOS 2.1.1.

2012 - выпущена TinyOS 2.1.2.

При разработке TinyOS основное внимание было уделено обеспечению малого энергопотребления и возможности использования для программирования языка c довольно высоким уровнем абстракции. В результате была создана ОС с простой, но весьма развитой компонентной архитектурой. Специфика этой архитектуры заключается в обеспечении развитых и надежных механизмов параллельного выполнения задач в условиях крайне ограниченных ресурсов. Описанные выше причины привели разработчиков TinyOS к выбору модели, основанной на событиях.


Я хочу посвятить свою статью технологиям беспроводных сенсорных сетей (wireless sensor networks), которая, как мне кажется, незаслуженно обделена вниманием хабра-сообщества. Основной причиной этого я вижу то, что технология пока так и не стала массовой и в большей части интересна скорее академическим кругам. Но я думаю в ближайшее время мы увидим много продуктов, так или иначе основанные на технологиях таких сетей. Я занимался исследованиями сенсорных сетей на протяжении нескольких лет, написал кандидатскую диссертацию на эту тему и ряд статей в российские и зарубежные журналы. Также мной был разработан курс по беспроводным сенсорным сетям, который я читал в Нижегородском Государственном Университете (ссылку на курс не привожу, если Вам интересно, могу дать ссылку в частном порядке). Имея опыт работы в данной области, хочу поделиться им с уважаемым сообществом, надеюсь Вам будет интересно.

Общие сведения

Беспроводные сенсорные сети получили большое развитие в последнее время. Такие сети, состоящие из множества миниатюрных узлов, оснащенных маломощным приемо-передатчиком, микропроцессором и сенсором, могут связать воедино глобальные компьютерные сети и физический мир. Концепция беспроводных сенсорных сетей привлекает внимание многих ученых, исследовательских институтов и коммерческих организаций, что обеспечило большой поток научных работ по данной тематике. Большой интерес к изучению таких систем обусловлен широкими возможностями применения сенсорных сетей. Беспроводные сенсорные сети, в частности, могут использоваться для предсказания отказа оборудования в аэрокосмических системах и автоматизации зданий. Из-за своей способности к самоорганизации, автономности и высокой отказоустойчивости такие сети активно применяются в системах безопасности и военных приложениях. Успешное применение беспроводных сенсорных сетей в медицине для мониторинга здоровья связано с разработкой биологических сенсоров совместимых с интегральными схемами сенсорных узлов. Но наибольшее распространение беспроводные сенсорные сети получили в области мониторинга окружающей среды и живых существ.

Железо

Из-за отсутствия четкой стандартизации в сенсорных сетях, существует несколько различных платформ. Все платформы отвечают основным базовым требованиям к сенсорным сетям: малая потребляемая мощность, длительное время работы, маломощные приемо-передатчики и наличие сенсоров. К основным платформам можно отнести MicaZ, TelosB, Intel Mote 2.

  • Микропроцессор: Atmel ATmega128L
  • 7.3728 Мгц частота
  • 128 Кб флеш-памяти для программ
  • 4 Кб SRAM для данных
  • 2 UART’s
  • SPI шина
  • I2С шина
  • Радио: ChipCon CC2420
  • Внешняя флеш-память: 512 Кб
  • 51-pin дополнительный коннектор
  • восемь 10-битовых аналоговых I/O
  • 21 цифровых I/O
  • Три программируемых LEDs
  • JTAG порт
  • Питание от двух батарей AA
  • Микропроцессор: MSP430 F1611
  • 8 Мгц частота
  • 48 Кб флеш-памяти для программ
  • 10 Кб RAM для данных
  • UART
  • SPI шина
  • Втроенный 12-битовый ADC/DAC
  • DMA контроллер
  • Радио: ChipCon CC2420
  • Внешняя флеш-память: 1024 Кб
  • 16-pin дополнительный коннектор
  • Три программируемых LEDs
  • JTAG порт
  • Опционально: Сенсоры освещенности, влажности, температуры.
  • Питание от двух батарей AA
  • 320/416/520 МГц PXA271 XScale микропроцессор
  • 32 Мбайта Флеш-памяти
  • 32 Мбайта ОЗУ
  • Mini-USB интерфейс
  • I-Mote2 коннектор для внешних устройств(31+21 pin)
  • Radio: ChipCon CC2420
  • Светодиодные индикаторы
  • Питание от трех батарей AAA

Наиболее распространенным 3 года назад было использование чипсета CC2420 в качестве маломощного приемо-передатчика.

Программное обеспечение и передача данных

Основным стандартом передачи данных в сенсорных сетях является IEE802.15.4, которые специально был разработан для беспроводных сетей с маломощными приемо-передатчиками.

Никаких стандартов в области программного обеспечения в сенсорных сетях нет. Существует несколько сотен различных протоколов обработки и передачи данных, а также систем управления узлами. Наиболее распространенной операционной системой является система с открытым кодом – TinyOs (будучи в Стэнфордстком университете, лично познакомился с одним из разработчиков). Многие разработчики (особенно это касается коммерческих систем) пишут свою систему управления, часто на языке Java.

Программа управления сенсорного узла под управлением операционной системы TinyOs пишется на языке nesC.

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

Заключение

Сенсорные сети получают все большее распространение в России. Когда я начинал ими заниматься в 2003-ем году, количество человек в России, кто был знаком с данной технологией, можно было пересчитать по пальцам. В том числе в России этим занималась небезызвестная Luxsoft Labs.

Я работал с сенсорными сетями на протяжении 6 лет и могу многое рассказать про эти технологии. Если Хабрасообществу будет интересно и у меня будет возможность, то я с удовольствием напишу серию статей на эту тему. Могу затронуть такие вещи как: реальная работа с платформой TmoteSky, особенности программирования под систему TinyOs на языке nesC, оригинальные результаты исследований, полученных в нашей лаборатории, впечатления о 1.5 месяцах работы в Стэнфордском университете, в проекте по сенсорным сетям.

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

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

Опираясь на управляемую событиями операцию , TinyOS предлагает пользователю очень точное управление потреблением сенсоров и позволяет им лучше адаптироваться к случайной природе беспроводной связи между физическими интерфейсами.

Резюме

Основные свойства

TinyOS - это система, в первую очередь разработанная и поддерживаемая Американским университетом Беркли , который предлагает ее для загрузки по лицензии BSD и обеспечивает поддержку. Таким образом, все источники доступны для многих аппаратных целей. Он был запрограммирован на языке NesC .

Функционирование системы на базе TinyOS основано на управлении происходящими событиями. Таким образом, активация задач , их прерывание или даже перевод датчика в режим ожидания осуществляется при возникновении событий , имеющих наивысший приоритет. Эта управляемая событиями операция противоположна так называемой управляемой временем операции, когда действия системы управляются заданными часами. TinyOS была разработана для минимизации энергопотребления сенсора. Таким образом, когда ни одна задача не активна, она автоматически переходит в режим ожидания .

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

Выделение памяти

У TinyOS очень мало памяти, так как она занимает всего от 300 до 400 байт как часть минимального распределения. Кроме того, необходимо иметь 4 КБ свободной памяти, которая разделена между 3 компонентами:

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

Управление памятью также имеет несколько свойств. Таким образом, нет динамического выделения памяти и указателя на функцию. Конечно, это значительно упрощает реализацию. Кроме того, в TinyOS нет механизма защиты памяти, что делает систему особенно уязвимой для сбоев и повреждения памяти.

Структура программного обеспечения

Операционная система TinyOS основана на языке NesC . Это предлагает компонентную архитектуру, которая значительно уменьшает объем памяти системы и ее приложений. Каждый компонент соответствует аппаратному элементу ( светодиоды , таймер , АЦП…) и может быть повторно использован в различных приложениях. Эти приложения представляют собой наборы компонентов, связанных с определенной целью. Эти компоненты могут быть абстрактные понятия , либо интерфейсы программного обеспечения к аппаратным средствам входами-выходами (целевой изучали карты или электронного устройства).

Реализация компонентов осуществляется путем объявления задач, команд или событий.

Задачи используются для выполнения большинства блоков инструкций в приложении. Когда задача вызывается, она помещается в очередь типа FIFO (First In First Out) для выполнения там. Как мы видели, механизма вытеснения между задачами нет, и активированная задача выполняется полностью. Этот режим работы позволяет запретить операции, которые могут заблокировать систему (блокировка, голодание и т. Д.). Кроме того, когда очередь задач пуста, операционная система переводит устройство в ждущий режим до запуска следующего прерывания (находим управляемую событиями операцию).

События имеют приоритет над задачами и могут прервать выполнение задачи. Они позволяют установить связь между аппаратными прерываниями (нажатие кнопки, изменение состояния входа и т. Д.) И программными уровнями, составляющими задачи.

На практике NesC позволяет объявлять 2 типа компонентов: модули и конфигурации . Вот вторая сводная таблица:

Составная часть использовать
Модуль Содержит код элементарного компонента.
Конфигурация Позволяет устанавливать связи между разными модулями.
Интерфейс Определяет входы-выходы и поведение компонента.

Модули составляют элементарные блоки кода и реализуют один или несколько интерфейсов.

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

Планировщик TinyOS

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

  • 2 уровня приоритета (низкий для задач, высокий для событий)
  • 1 очередь FIFO (вместимостью 7)

Кроме того, между задачами определяется уровень приоритета, позволяющий классифицировать задачи с учетом приоритета прерываний (или событий). При поступлении новой задачи она будет помещена в очередь в соответствии с ее приоритетом (чем она больше, тем ближе размещение к выходу). Если очередь заполнена, задача с самым низким приоритетом удаляется из FIFO.

Пакет TinyOS

TinyOS предназначена для работы на множестве платформ, доступных после установки. Действительно, TinyOS можно установить из среды Windows (2000 и XP) или GNU / Linux (по сути Red Hat, но возможны и другие дистрибутивы).

Доступны две основные версии TinyOS: стабильная версия (v. 1.1.0) и версия, которая в настоящее время тестируется (v. 1.1.15); первый представляет меньший риск, но гораздо менее новый. Кроме того, чтобы установить последнюю тестовую версию, необходимо сначала установить версию 1.1.0.

Процесс установки :

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

Возможные цели для TinyOS

Для этой встроенной операционной системы существует множество возможных целей. Несмотря на свои различия, все они, как правило, соблюдают одну и ту же архитектуру, основанную на центральном ядре, вокруг которого соединены различные интерфейсы ввода-вывода, связи и питания. Вот диаграмма, представляющая эту архитектуру:

Mote, процессор, RAM и Flash: мы обычно называем Mote физической картой, использующей TinyOS для работы. В основе этого лежит блок, состоящий из процессора, оперативной и флеш- памяти . Этот набор является основой двоичных вычислений и хранения, как временных для данных, так и окончательного для системы TinyOS.

Радио и антенна: TinyOS предназначен для настройки беспроводных сетей, поэтому исследуемое оборудование обычно оснащено радио, а также антенной для подключения к физическому уровню, сформированному радиопередачей.

Светодиод, интерфейс, датчик: TinyOS предназначена для создания сетей датчиков, поэтому мы находим оборудование с различными типами датчиков и другими входами.

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

ATMega8 AVRMote Слюда Mica2
Микадо Слюда128 Micaz MSP430
Rene2 Телос Телос2 ПК

Помимо этого списка, можно реализовать любой тип физической встроенной платформы, переработав библиотеки, необходимые для учета необходимых входов и выходов. Таким образом, следующая ссылка предлагает результат тезиса о реализации TinyOS на устройстве Freescale MC13192-EVB в сети ZigBee :

Читайте также: