Как я могу установить статический IP-адрес на своем устройстве IoT и автоматически работать в любой сети

Я создаю домашнее устройство IoT, и я хочу, чтобы иметь возможность отправить это устройство любому, кто ранее установил статический IP, и все, что им нужно будет сделать, это подключиться к интернету и быть хорошо идти.
Я буду запускать сервер локально для мониторинга каждого робота, поэтому я подумал, что установлю статический IP-адрес на каждом RPi и после доставки клиенту им просто нужно будет получить свой RPi в своей сети и выполнить некоторую переадресацию портов. Затем они загрузят приложение и выдадут команды роботу (я используя их регистрационную информацию, чтобы знать, какой RPi контролировать). Проблема в том, что если IP-адрес изменится, я потеряю связь с этим удаленным устройством. Другими словами, есть ли способ подключить локальный сервер ко всем удаленным устройствам?

У меня очень ограниченный опыт работы с сетями, я взламываю свой путь, и я, возможно, смотрю на это неправильно. Любая помощь очень ценится!

19
задан Melomaniac
01.05.2023 2:34 Количество просмотров материала 3616
Распечатать страницу

3 ответа

вам нужно реализовать схему, где ваш RPi являются клиентами вашего сервера.

Что вам действительно нужно - это либо статический IP у вас дома / в офисе, либо любой дешевый VPS или DDNS(динамический DNS сервис). Таким образом, когда вы отправляете свой RPi своим клиентам, установите их всех в IP-адрес установки автоматически по DHCP и добавьте, чтобы запустить команду, которая подключается к вашему серверу по SSH (предпочтительно с использованием аутентификации с открытым ключом) с включенной обратной настройкой SSH. Таким образом, вы можете подключиться к любой из ваши RPi на обратном порту на вашем собственном сервере. Независимо от того, где находится ваш RPi вы всегда сможете получить к ним доступ (конечно, если они не за профессиональными брандмауэрами, которые ограничивают исходящие соединения из локальной сети без аутентификации.)

1
отвечен Alex 2023-05-02 10:22

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

есть несколько провайдеров "динамического DNS" (например, NoIP), которые позволят вам создать учетную запись, выбрать доменное имя DNS из списка, а затем разрешить "клиенту динамического обновления" подключиться к нему и обновить запись DNS. Ваш IoT устройство должно запустить этот клиент.

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

Если это большое развертывание устройств, то правильная вещь, чтобы сделать, если вы хотите, чтобы ваши устройства "подключи и играй" на самом деле дизайн ваших устройств, чтобы они инициировать подключение к центральному серверу вместо того, чтобы полагаться на сервере, подключенном к ним, и переместить сервер в не-residental службы хостинга или Поставщик облака VPS, например Amazon, Azure и т. д.

0
отвечен LawrenceC 2023-05-02 12:39

вот обновление в случае, если кто-то имеет ту же проблему. Как рекомендовано, RPi настроены как клиенты. В итоге я использовал node package ip для обновления ip каждого робота в моей базе данных. Каждый клиент тогда тянет ip от DB для соединения.

вот фрагмент моего кода. Сервер запущен на boot.

var ip = require('ip');
var mongo = require('mongodb')
var MongoClient = mongo.MongoClient

var url = 'your_url'
var name = "example"
function updateIP() { // update ip if need be
  var my_ip = ip.address()
  console.log(my_ip)
  MongoClient.connect(url, function(err, db){
    console.log(err)
    var robots = db.collection('robots')
    robots.findAndModify(
       {name: name},
       [['name', 1]],
       {$set: {ip: my_ip}},
       {update: true})
  })
}
0
отвечен Melomaniac 2023-05-02 14:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх