Это тема, о которой я думал некоторое время, особенно потому, что в последнее время концепция «IoT» широко распространена.
Я начну с того, что имею в виду, когда скажу «IoT» . Я знаю, что термин IoT может означать разные вещи и что иногда он используется неправильно. Это может быть термин, который не имеет четкого определения и может привести к большим дискуссиям о том, что именно это означает. Я сам не знаю правильного и широко принятого определения этого термина. Поэтому для меня IoT - это концепция, которая определяет возможность удаленного подключения к встроенному устройству через Интернет либо с другого встроенного устройства, либо с мобильного телефона . Так просто, как, что.
В этом контексте цель подключения не имеет значения, если вы можете подключить одно устройство в вашем офисе к другому дома, или если вы можете подключиться к одному устройству дома со своего мобильного телефона, все это через Интернет, тогда мы говорим об устройствах IoT (встроенные устройства, а не телефон).
Итак, согласившись с тем, что я имею в виду под IoT, я теперь опишу, чего я пытаюсь достичь.
То, чего я пытаюсь достичь, это именно то, что я описываю в своем определении IoT.
Я хочу иметь одно или несколько встроенных устройств дома, подключенных к моему интернет-маршрутизатору, через Ethernet или Wi-Fi, и иметь возможность удаленного подключения к ним с другими встроенными устройствами в удаленном месте (и под удаленным я имею в виду не в той же сети) а также, возможно, чтобы иметь возможность подключиться к ним с помощью приложения мониторинга на моем телефоне
Например, у меня может быть простое встроенное устройство, выполняющее функцию переключателя включения / выключения, подключенного к моему открывателю гаражной двери, и другое встроенное устройство, выполняющее роль большой красной кнопки на моем рабочем столе, чтобы я мог нажать красную кнопку на своем рабочем столе. и дверь гаража открывается.
Другим примером может быть встроенное устройство с возможностями АЦП, которое может контролировать температуру в моем доме и отправлять мне оповещения, когда оно достигает порогового значения. Уведомление может быть получено либо с помощью простого приложения для Android, либо с помощью другого встроенного устройства с небольшим экраном на рабочем столе.
Эти примеры могут быть глупыми, но они просто иллюстрируют возможные сценарии и варианты использования для того, чего я пытаюсь достичь. В конце концов, идея та же: подключить одно встроенное устройство к другому через Интернет.
Еще одна вещь, которую необходимо уточнить, - это то, что обмен данными между этими устройствами будет очень легким, каждый раз всего по пару байтов, это не значит, что между устройствами необходимо обмениваться сотнями килобайт.
Кроме того, «встроенные устройства», о которых я говорю, - это простые, но функциональные устройства на основе микроконтроллеров Cortex-M4 с тактовой частотой 100 или 200 МГц. И это важно уточнить, потому что на этих устройствах не будет работать ни Linux, ни сложные библиотеки. В конце концов, это пустая трата ресурсов и совершенно необязательно иметь мощный процессор под управлением Linux, чтобы просто включать и выключать лампочку . В любом случае я планирую использовать BeagleBoard, Raspberry Pi или любую другую подобную плату в качестве моих встроенных устройств. Просто микроконтроллеры, потому что не сложнее, чем нужно.
Я не знаю много о платформах IoT и подобных комплексных решениях. Когда я начал этот путь поиска способа соединения одного встроенного устройства с другим через Интернет, я наткнулся на пару сайтов с услугами IoT.
Я знаю, что есть некоторые облачные сервисы IoT, такие как:
Просто назвать несколько. Основными проблемами с ними являются стоимость и сложность. Вы должны заплатить, чтобы получить эти услуги, а также вы должны научиться реализовывать все сервисы, которые у них есть, на случай, если они вам понадобятся, а также их API и, возможно, кучу других вещей, которые мне не нужны возможность просто поменять несколько байтов между устройствами. Я просто хочу чего-то более простого, чем-то, что я могу сделать сам.
Вы можете сказать, что реализовать мое собственное «облако», если это то, что мне нужно сделать, непросто, а иногда лучше использовать эти виды услуг для простоты, но есть две основные причины, по которым я хочу знать, как внедрить мои собственные услуги IoT.
Основная причина в том, что я хочу сделать это сам. Я не хочу полагаться на то, что третьи лица будут подключать свои устройства друг к другу, и, поскольку я буду разрабатывать код и оборудование для своих устройств, лучше будет также создать свои собственные средства для их подключения в качестве устройств IoT.
Вторая причина - научиться это делать. Зная все необходимые вещи, необходимые для достижения этой цели, я лучше пойму мир IoT.
Кроме того, я хочу отметить, что я опытный в C и я использую Linux в качестве своей повседневной ОС на работе и дома, поэтому, пожалуйста, избегайте Windows, потому что это бесполезно для меня. Я не боюсь ничего, что я должен реализовать в C для своих встроенных устройств или в Linux, чтобы реализовать все необходимое для достижения моей цели.
Поэтому у меня вопрос: что необходимо реализовать и где можно соединить два или более встроенных устройства друг с другом с целью обмена данными между ними?
Этот вопрос Что я могу использовать для создания IoT на нашем собственном сервере? есть что-то похожее, но закрыто и не имеет никаких ответов, а также предполагает использование уже существующей облачной инфраструктуры. Так что это не помогает мне.
Этот другой пост Какие услуги IoT доступны для хранения / отправки / публикации общих данных в облаке? У меня похожий вопрос, но ОП явно просит услуги IoT, и я стараюсь их избегать.