Пишу диплом на тему "умный дом". Выбрал, потому что интересна область интернета вещей.
Сейчас стоит вопрос по созданию своего локального сервера, который бы объединял все устройства в рамках одной Wi-Fi сети.
У меня есть простенький сервер, на Node.js и express
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send({ msg: 'Hello!' });
});
app.get('/users', (req, res) => {
res.send({ msg: 'Hello user!' });
});
app.listen(3000, () => console.log('Running on port: 3000'));
Который я транслирую в сеть с помощью
ngrok
И плата NodeMCU, которая принимает json с этого сервера.
Код для платы:
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
void setup() {
Serial.begin(115200);
// Serial.setDebugOutput(true);
Serial.println();
Serial.println();
Serial.println();
for (uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("wi-fi", "pass"); //здесь указываю wi-fi и пароль
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
if (http.begin(client, "сюда вставляю url от ngrok")) { // HTTP
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP} Unable to connect\n");
}
}
delay(10000);
}
На выходе получаю следующее:
Допустим у меня в квартире есть датчик движения, датчик температуры и я хочу, чтобы они отправляли данные на мой сервер, а тот в свою очередь - мне на телефон. Как этого добиться? Что почитать на тему?
Скиньте интересные топики, буду рад любой информации. Спасибо