Конечно!
Все просто есть у меня устройства разные . но все по сути однотипные просто выполняют разные роли. на Esp
Есть у них класс - вот он
Я хочу добавить новое устройство.
Ранее я вынужден был включить его,
зайти в созданную им сеть
прописать настройки на свою сеть вот так :
А потом когда он перезагрузится искать его на роутере в ДХСП а посе ручонками создавать ему обьект класса.
А теперь же все куда проще
Когда оно включится и поняло что у него есть настройка на мою сеть :
Код: Выделить всё
if (ssidFromEprom != 0) {
// соединяемся с известными сетями
connectToAP2();
// Проверяем есть ли мы в мажердоме
testOrCreateObject();
} else {
// или создаем свою сеть
setUpAP();
}
Оно дергает посылку кипАлайв, вот так
Код: Выделить всё
void testOrCreateObject() {
String ansver;
ansver = SendToServer("keepalive", "alive", 1); // отправим сообщение что мы живы посмотрим ответ.
Serial.println("Send Alive signal");
Serial.println(ansver);
if (ansver.toInt() == 1) {
Serial.println("Sensor's object is created. Alive updated");
} else {
ansver = CreateServerObject(contNameFromEprom);
Serial.println("Send Create Server Object");
Serial.println(ansver);
}
}
Если keepalive ему ответил единицей - то все норм работаем как обычно порой шлем ему приветы.
А если он ничего не ответил то объекта нету - создадим его методом который любезно сообщил XOR.
Примерно вот так :
Код: Выделить всё
String CreateServerObject(String whVName) {
Serial.println("");
String station, getData, Link;
String host1 = "";
host1 = ip1byte;
host1 += ".";
host1 += ip2byte;
host1 += ".";
host1 += ip3byte;
host1 += ".";
host1 += ip4byte;
char charVar[sizeof(host1)];
host1.toCharArray(charVar, sizeof(charVar) + 1);
const char * host = charVar; // ip or dns
Serial.println("Create Server Object");
HTTPClient http;
//http://10.170.1.121/objects/?script=AddNewDevice&id=334455
getData = "?script=AddNewDevice";
getData += "&id=";
getData += whVName;
Serial.println(whVName);
Link = "http://";
Link += String(host) ;
Link += "/objects/" + getData;
Serial.println(Link);
http.begin(Link); //Specify request destination
int httpCode = http.GET(); //Send the request
String payload = http.getString(); //Get the response payload
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
http.end(); //Close connection
delay(50);
return payload;
}
Ну тут надо прибраться в коде да и немаловажно добавить чтобы он айпи передавал. Еще допишу.
Но один фиг они теперь знают друг друга и я могу уже оперировать объектом в мажордоме чтобы говорить этому девайсику что делать.
Ну вообще тут в соседней ветке мне предлагают перейти на тасмоту или еспизи. я конечо прошью пару девайсов. обязательно. Но почему то изобретение велосипеда у меня в крови...
