-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathTemperatureService.cpp
More file actions
80 lines (72 loc) · 3.3 KB
/
TemperatureService.cpp
File metadata and controls
80 lines (72 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <TemperatureService.h>
TemperatureService::TemperatureService(AsyncWebServer *server, FS *fs, DallasTemperature dallasTemperature, BrewSettingsService *brewSettingsService) : _server(server),
_fs(fs),
_dallasTemperature(dallasTemperature),
_brewSettingsService(brewSettingsService)
{
_server->on(GET_SENSORS_SERVICE_PATH, HTTP_GET, std::bind(&TemperatureService::GetTemperatureAndAdress, this, std::placeholders::_1));
}
TemperatureService::~TemperatureService() {}
void TemperatureService::GetTemperatureAndAdress(AsyncWebServerRequest *request)
{
request->send(200, APPLICATION_JSON_TYPE, GetSensorsJson());
}
String TemperatureService::GetFirstSensorAddress()
{
DeviceAddress Thermometer;
_dallasTemperature.getAddress(Thermometer, 0);
return GetAddressToString(Thermometer);
}
String json = "";
String TemperatureService::GetSensorsJson()
{
if (json == "")
GetTemperatures();
return json;
}
Temperatures TemperatureService::GetTemperatures()
{
Temperatures temps;
temps.Main = 0;
temps.Sparge = 0;
DeviceAddress Thermometer;
_dallasTemperature.requestTemperatures();
String _json = "{ \"sensors\": [ ";
String addr = "";
for (int i = 0; i < DeviceCount; i++)
{
_dallasTemperature.getAddress(Thermometer, i);
float temp = _brewSettingsService->TempUnit == "C" ? _dallasTemperature.getTempC(Thermometer) : _dallasTemperature.getTempF(Thermometer);
_json += "{ \"address\": \"" + GetAddressToString(Thermometer) + "\",\"value\": \"" + String(temp) + "\"}";
if (i < DeviceCount - 1)
_json += ',';
addr = GetAddressToString(Thermometer);
if (addr == _brewSettingsService->MainSensor)
temps.Main = temp + _brewSettingsService->MainSensorOffset;
if (addr == _brewSettingsService->SpargeSensor)
temps.Sparge = temp + _brewSettingsService->SpargeSensorOffset;
if (addr == _brewSettingsService->BoilSensor)
temps.Boil = temp + _brewSettingsService->BoilSensorOffset;
if (addr == _brewSettingsService->BoilSensor)
temps.Cooling = temp + _brewSettingsService->BoilSensorOffset;
if (addr == _brewSettingsService->AuxOneSensor)
temps.AuxOne = temp + _brewSettingsService->AuxSensorOneOffset;
if (addr == _brewSettingsService->AuxTwoSensor)
temps.AuxTwo = temp + _brewSettingsService->AuxSensorTwoOffset;
if (addr == _brewSettingsService->AuxThreeSensor)
temps.AuxThree = temp + _brewSettingsService->AuxSensorThreeOffset;
}
json = _json + "]}";
return temps;
}
String TemperatureService::GetAddressToString(DeviceAddress deviceAddress)
{
String str = "";
for (uint8_t i = 0; i < 8; i++)
{
if (deviceAddress[i] < 16)
str += String(0, HEX);
str += String(deviceAddress[i], HEX);
}
return str;
}