Topuino_Hardware/src/client_network.cpp

54 lines
1.4 KiB
C++
Raw Normal View History

2021-08-29 16:24:40 +08:00
#include "client_network.h"
2021-08-29 17:00:30 +08:00
#include "status_blink.h"
2021-08-29 22:14:08 +08:00
#include "user_data.h"
#include "func_button.h"
2021-08-29 16:24:40 +08:00
2021-08-29 17:00:30 +08:00
extern StatusBlink* statusLed;
2021-08-29 22:14:08 +08:00
extern UserData* userdataManager;
extern FuncButton* funcButton;
2021-08-29 17:00:30 +08:00
ClientNetwork::ClientNetwork()
2021-08-29 22:14:08 +08:00
{
WiFi.begin(userdataManager->GetWifiSsid(), userdataManager->GetWifiPasswd());
2021-08-29 16:24:40 +08:00
2021-08-29 17:00:30 +08:00
statusLed->SetBlinkRate(StatusBlink::BlinkRate::Rate2Hz);
2021-08-29 16:24:40 +08:00
while (WiFi.status() != WL_CONNECTED)
{
2021-08-29 22:14:08 +08:00
delay(1000);
funcButton->Scan();
2021-08-29 16:24:40 +08:00
}
2021-08-29 17:00:30 +08:00
statusLed->SetBlinkRate(StatusBlink::BlinkRate::RateAlwaysOff);
2021-08-29 22:14:08 +08:00
url = "http://iot.vvzero.com/topuino/getdata?UUID=";
url += userdataManager->GetDeviceUuid();
2021-08-29 16:24:40 +08:00
status = FAIL;
}
STATUS ClientNetwork::FetchNewData()
{
status = FAIL;
if (WiFi.status() == WL_CONNECTED) {
WiFiClient client;
http = new HTTPClient();
2021-08-29 22:14:08 +08:00
if (http->begin(client, url)) {
2021-08-29 16:24:40 +08:00
if (http->GET() == HTTP_CODE_OK) {
if (deserializeJson(receivedData, http->getString().c_str()) == DeserializationError::Code::Ok) {
status = OK;
}
}
http->end();
}
delete http;
}
return status;
}
uint8_t ClientNetwork::GetPercent(String name)
{
return status == OK ? receivedData[name] : 0;
}
uint32_t ClientNetwork::GetRate(String name)
{
return status == OK ? receivedData[name] : 0;
}