31 void setWire(TwoWire& wire) { _wire = &wire; }
32 TwoWire& getWire()
const {
return *_wire; }
34 void setSKU(SKU sku) { _sku = sku; }
35 SKU getSKU()
const {
return _sku; }
42 Output getOutput()
const {
return _output; }
49 uint8_t getDeviceAddress()
const {
return _deviceAddress; }
59 uint8_t getChannel()
const {
return _channel; }
66 case SKU::DFR1071_GP8211S:
68 case SKU::DFR1073_GP8413:
70 case SKU::DFR0971_GP8403:
92 virtual const char* type()
const {
return "dfrobot"; }
94#ifdef MYCILA_JSON_SUPPORT
100 void toJson(
const JsonObject& root)
const override {
101 Dimmer::toJson(root);
102 root[
"dfrobot_sku"] = _sku == SKU::DFR1071_GP8211S ?
"DFR1071_GP8211S" : _sku == SKU::DFR1073_GP8413 ?
"DFR1073_GP8413"
103 : _sku == SKU::DFR0971_GP8403 ?
"DFR0971_GP8403"
105 root[
"dfrobot_output"] = _output == Output::RANGE_0_5V ?
"0-5V" :
"0-10V";
106 root[
"dfrobot_i2c_address"] = _deviceAddress;
107 root[
"dfrobot_channel"] = _channel;
113 virtual bool _apply() {
115 return _sendDutyCycle(_deviceAddress, 0) == ESP_OK;
117 uint16_t duty = _dutyCycleFire * ((1 <<
getResolution()) - 1);
118 return _sendDutyCycle(_deviceAddress, duty) == ESP_OK;
122 SKU _sku = SKU::UNKNOWN;
123 Output _output = Output::RANGE_0_10V;
124 TwoWire* _wire = &Wire;
125 uint8_t _deviceAddress;
126 uint8_t _channel = 0;
128 uint8_t _sendDutyCycle(uint8_t address, uint16_t duty);
129 uint8_t _sendOutput(uint8_t address, Output output);
130 uint8_t _send(uint8_t address, uint8_t reg, uint8_t* buffer,
size_t size);
131 uint8_t _test(uint8_t address);