ESP8266 WebSocket с BlueHost - PullRequest
       22

ESP8266 WebSocket с BlueHost

0 голосов
/ 14 октября 2019

За последние 18 месяцев я успешно разработал систему контроля качества воздуха, которая управляет очистителем воздуха в моем доме, я также использую платформу Blynk для удаленного мониторинга и управления. Теперь я хочу перенести этот проект на свой собственный веб-сайт, у меня есть свой собственный веб-сайт, и, используя стандартные команды HTTP, я теперь записываю все данные в базу данных и отображаю их с течением времени.

Я хочу получить полный би-направленная передача данных, т.е. регистрация данных с удаленных датчиков на веб-сайт и управление настройками очистителя воздуха с веб-сайта на очиститель воздуха. Казалось бы, один из способов сделать это - использовать webSocket, у меня есть план общего хостинга с BlueHost, поэтому я приобрел выделенный IP-адрес и открытый порт для входящих и исходящих соединений.

ПослеМного часов работы в Интернете и многих форумах. Я изо всех сил пытаюсь найти пример того, как реализовать эту систему webSocket. Все примеры относятся к локальным серверам, и я не могу найти ничего, что показывает, что нужно включить в конец веб-сайта, чтобы установить успешное соединение.

Если у кого-то есть опыт работы с webSockets и BlueHost, я был бы признателен вам запомощь.

Ричард

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

@mr.boris

Большое спасибо за быстрый ответ и помощь. Я использовал несколько примеров, таких как ваш первый предложенный пример, проблема всегда в том, что я не могу пройти процедуру «рукопожатия».

Выход последовательного монитора IDE Arduino

Подключение к XXXXXXXX. WiFi подключен IP-адрес: 192.168.0.110 Подключено Ожидание ... Ожидание ... Ожидание ... Ожидание ... Ожидание ... Ожидание ... Ожидание ... Ожидание не удалось.

Порт, который BlueHostоткрыл 1025, может ли это быть проблемой?

Я сократил программу esp8266 до минимума

#include <ESP8266WiFi.h>
#include <WebSocketClient.h>

char* WEBSOCKET_PATH = "/webSocket_02.php";
char* WEBSOCKET_HOST = "xxx.com";
char* WIFI_SSID      = "xxxxxxxxx";
char* WIFI_PASSWORD  = "xxxxxxxxxx";

WebSocketClient webSocketClient;
WiFiClient client;

void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WIFI_SSID);
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  delay(5000);
  if (client.connect(WEBSOCKET_HOST,80)) {
    Serial.println("Connected");
  }
  else {
    Serial.println("Connection failed.");
  }
  webSocketClient.path = WEBSOCKET_PATH;
  webSocketClient.host = WEBSOCKET_HOST;
  if (webSocketClient.handshake(client)) {
    Serial.println("Handshake successful");
  }
  else {
    Serial.println("Handshake failed.");
  }
}
void loop() {
}

Номер порта здесь равен 80 (WEBSOCKET_HOST, 80), если яизмените его на 1025, я не получаю никакого результата.

0 голосов
/ 14 октября 2019

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

Если вы хотите использовать PHP, это довольно просто, потому что нет определенного наложенияВ данном случае он не является протоколом websocket, в отличие от Socketio для NodeJS и других. Этот пример может помочь вам начать поиск, который я нашел за 5 минут поиска. Если вы вообще не понимаете, что такое websocket, попробуйте сначала websocket для web на простом примере.

Если вы хотите использовать NodeJS, возможно, вы захотите использовать существующую библиотеку. как-то так .

В случае Java есть SockJS, обычно используемый из коробки в качестве стандартной библиотеки для клиента. Поэтому вам нужно найти или сделать что-то похожее, но для C ++, если у вас достаточно навыков или вы пытаетесь настроить простое соединение через веб-сокет, как для PHP.

Я использовал библиотеку Firebase для двунаправленной связи с ESP8266потому что это довольно просто и бесплатно для небольших проектов. Основное преимущество этого подхода в том, что вам не нужно поддерживать бэкэнд, он работает круглосуточно, так как вы настроили соединение и бизнес-логику. Возможно это то, что вы ищете . Также вы можете размещать статические страницы в облаке Firebase, если вам нужен вид интерфейса администратора. Хероку хостинг также бесплатен для небольших проектов.

...