34 void setWire(TwoWire& wire) { _wire = &wire; }
35 TwoWire& getWire()
const {
return *_wire; }
37 void setSKU(SKU sku) { _sku = sku; }
38 SKU getSKU()
const {
return _sku; }
45 Output getOutput()
const {
return _output; }
52 uint8_t getDeviceAddress()
const {
return _deviceAddress; }
62 uint8_t getChannel()
const {
return _channel; }
69 case SKU::DFR1071_GP8211S:
71 case SKU::DFR1073_GP8413:
73 case SKU::DFR0971_GP8403:
95 virtual const char* type()
const {
return "dfrobot"; }
97#ifdef MYCILA_JSON_SUPPORT
103 void toJson(
const JsonObject& root)
const override {
104 Dimmer::toJson(root);
105 root[
"dfrobot_sku"] = _sku == SKU::DFR1071_GP8211S ?
"DFR1071_GP8211S" : _sku == SKU::DFR1073_GP8413 ?
"DFR1073_GP8413"
106 : _sku == SKU::DFR0971_GP8403 ?
"DFR0971_GP8403"
108 root[
"dfrobot_output"] = _output == Output::RANGE_0_5V ?
"0-5V" :
"0-10V";
109 root[
"dfrobot_i2c_address"] = _deviceAddress;
110 root[
"dfrobot_channel"] = _channel;
116 virtual bool _apply()
override {
118 return _sendDutyCycle(_deviceAddress, 0) == ESP_OK;
120 uint16_t duty = _dutyCycleFire * ((1 <<
getResolution()) - 1);
121 return _sendDutyCycle(_deviceAddress, duty) == ESP_OK;
124 virtual bool _calculateHarmonics(
float* array,
size_t n)
const override {
125 return _calculatePhaseControlHarmonics(_dutyCycleFire, array, n);
129 SKU _sku = SKU::UNKNOWN;
130 Output _output = Output::RANGE_0_10V;
131 TwoWire* _wire = &Wire;
132 uint8_t _deviceAddress;
133 uint8_t _channel = 0;
135 uint8_t _sendDutyCycle(uint8_t address, uint16_t duty);
136 uint8_t _sendOutput(uint8_t address, Output output);
137 uint8_t _send(uint8_t address, uint8_t reg, uint8_t* buffer,
size_t size);
138 uint8_t _test(uint8_t address);