You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.5 KiB
C++

#include <Arduino.h>
#define AP_SSID "Alex"
#define AP_PASS "alexpass"
#include <GyverHub.h>
GyverHub hub;
// билдер
void build(gh::Builder& b) {
}
void setup() {
Serial.begin(115200);
#ifdef GH_ESP_BUILD
// подключение к роутеру
WiFi.mode(WIFI_STA);
WiFi.begin(AP_SSID, AP_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println(WiFi.localIP());
#endif
hub.config(F("MyDevices"), F("ESP"));
hub.onBuild(build);
hub.begin();
// обработчик времени из клиента
hub.onUnix([](uint32_t stamp) {
Serial.println(stamp);
});
// обработчик текста из консоли
hub.onCLI([](String str) {
Serial.println(str);
hub.sendCLI(str + "!");
});
// сборщик инфо
hub.onInfo([](gh::Info& info) {
switch (info.type) {
case gh::Info::Type::Version:
info.add("ur mom", "v3.14");
break;
case gh::Info::Type::Network:
info.add(F("5G"), "50%");
break;
case gh::Info::Type::Memory:
info.add(F("SD"), "10 GB");
info.add(F("Int"), 100500);
break;
case gh::Info::Type::System:
info.add(F("Battery"), 3.63, 2);
break;
}
});
// обработчик запроса клиента
hub.onRequest([](gh::Request& req) -> bool {
Serial.print("Request: ");
Serial.print(gh::readConnection(req.client.connection()));
Serial.print(',');
Serial.print(req.client.id);
Serial.print(',');
Serial.print(gh::readCMD(req.cmd));
Serial.print(',');
Serial.print(req.name);
Serial.print(',');
Serial.print(req.value);
Serial.println();
return 1; // разрешить
});
#ifdef GH_ESP_BUILD
// обработчик перезагрузки
hub.onReboot([](gh::Reboot r) {
Serial.println(gh::readReboot(r));
});
// обработчик скачивания файла
hub.onFetch([](gh::Fetcher& f) {
Serial.print("Fetch: ");
Serial.println(f.path);
Serial.println(f.start);
});
// обработчик загрузки файла
hub.onUpload([](String& path) {
Serial.print("Uploaded: ");
Serial.println(path);
});
#endif
}
void loop() {
hub.tick();
}