Управление одной Nodemcu другой Nodemcu через webserver

Unreal334
Offline
Зарегистрирован: 03.04.2015

Добрый день!

Есть две Nodemcu v3 подключенные к домашнему роутеру по WIFI. На одной из Nodemcu запущен webserver. Также имеется страничка с двумя кнопками при нажатии которых в браузере переходим по определенной ссылке, которая включает или выключает подсветку через пин Nodemcu и реле.

void HTTP_init(void) {
  server.on("/", []()
  {
    server.send(200, "text/html", webPage());
  });
  server.on("/BedlightLivingroomOn", []()
  {
    digitalWrite(BedlightLivingroom_pin, HIGH);
    server.send(200, "text/html", webPage());
    delay(100);
  });
  server.on("/BedlightLivingroomOff", []()
  {
    digitalWrite(BedlightLivingroom_pin, LOW);
    server.send(200, "text/html", webPage());
    delay(100);
  });
  server.begin();
  Serial.println("HTTP server started");
}

Например, при переходе по ссылке из браузера http://192.168.100.175/BedlightLivingroomOn все работает свет включается.

Скажите, пожалуйста, могу я подобным образом управлять этой Nodemcu при помощи другой?

Может у кого есть готовый кусочек кода?

Заранее спасибо.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Unreal334 пишет:

Скажите, пожалуйста, могу я подобным образом управлять этой Nodemcu при помощи другой?

Скорее всего не можете, иначе бы этого поста не было. Но научиться нетрудно, Вы научитесь, если постараетесь.

Из клиента (браузера) идёт запрос на сервер (GET или POST, как там у Вас сделано).

Всё, что Вам нужно, это чтобы клиентская node прикинулась браузером и отправила точно такой же запрос на серверную node. 

Как отправить запрос - есть хренова гора примеров, например, в тех же библиотеках для node. Попробуйте.

Unreal334
Offline
Зарегистрирован: 03.04.2015

И правда получилось :)

Банально - невнимательность

//переход по ссылке http://192.168.0.173/SlateLightOn должен включить свет

#include <ESP8266WiFi.h>

const char* ssidHome = ""********";";
const char* passwordHome = "********";
const char* ssidWork = ""********";";
const char* passwordWork = "********";

//const char* host = "192.168.100.173";
const char* host = "192.168.0.173";

IPAddress ipHome(192, 168, 100, 175);
IPAddress ipWork(192, 168, 0, 175);
IPAddress gatewayHome(192, 168, 100, 1);
IPAddress gatewayWork(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);

void setup() {
  Serial.begin(115200);
  WIFI_init();
}

void loop() {
  WiFiClient espClient;

  if (espClient.connect (host, 80))
  {
    espClient.print("GET /SlateLightOff");
    espClient.println( " HTTP/1.1");
    espClient.print( "Host:");
    espClient.println(host);
    espClient.println("Connection: close");
    espClient.println();
    espClient.println();

    delay(5000);
  }
  if (espClient.connect (host, 80))
  {
    espClient.print("GET /SlateLightOn");
    espClient.println( " HTTP/1.1");
    espClient.print( "Host:");
    espClient.println(host);
    espClient.println("Connection: close");
    espClient.println();
    espClient.println();

    delay(5000);
  }

}

Может кому пригодится