29class MultiDsHandler :
public MultiDsHandlerBase {
32 MultiDsHandlerBase(sdc, pin), oneWire(pin) {}
37 dallasTemperature.setOneWire(&oneWire);
38 dallasTemperature.begin();
39 dallasTemperature.setWaitForConversion(
false);
44 double getTemperature(
const uint8_t *address)
override {
45 return dallasTemperature.getTempC(address);
48 double getTemperature(uint8_t idx) {
49 if (idx >= MULTI_DS_MAX_DEVICES_COUNT) {
50 return TEMPERATURE_NOT_AVAILABLE;
53 auto sensor = sensors[idx];
54 if (sensor ==
nullptr) {
55 return TEMPERATURE_NOT_AVAILABLE;
58 return sensor->getValue();
61 Supla::Sensor::MultiDsSensor * getThermometer(uint8_t idx) {
62 if (idx < MULTI_DS_MAX_DEVICES_COUNT) {
84 dallasTemperature.setWaitForConversion(synchronous);
89 DallasTemperature dallasTemperature;
91 int refreshSensorsCount()
override {
92 oneWire.reset_search();
93 dallasTemperature.begin();
95 return dallasTemperature.getDeviceCount();
98 void requestTemperatures()
override {
99 dallasTemperature.requestTemperatures();
102 bool getSensorAddress(uint8_t *address,
int index)
override {
103 return dallasTemperature.getAddress(address, index);