#include "panasonic_heatpump_number.h" namespace esphome { namespace panasonic_heatpump { static const char* const TAG = "panasonic_heatpump.number"; void PanasonicHeatpumpNumber::dump_config() { LOG_NUMBER("", "Panasonic Heatpump Number", this); delay(10); } void PanasonicHeatpumpNumber::control(float value) { int value_int = static_cast(round(value)); switch (this->id_) { case NumberIds::CONF_SET5: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 38); break; case NumberIds::CONF_SET6: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 39); break; case NumberIds::CONF_SET7: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 40); break; case NumberIds::CONF_SET8: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 41); break; case NumberIds::CONF_SET11: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 42); break; case NumberIds::CONF_SET15: this->parent_->set_command_byte(PanasonicCommand::setPlus1(value_int), 45); break; case NumberIds::CONF_SET16_01: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 75); break; case NumberIds::CONF_SET16_02: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 76); break; case NumberIds::CONF_SET16_03: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 77); break; case NumberIds::CONF_SET16_04: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 78); break; case NumberIds::CONF_SET16_05: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 79); break; case NumberIds::CONF_SET16_06: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 80); break; case NumberIds::CONF_SET16_07: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 81); break; case NumberIds::CONF_SET16_08: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 82); break; case NumberIds::CONF_SET16_09: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 86); break; case NumberIds::CONF_SET16_10: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 87); break; case NumberIds::CONF_SET16_11: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 88); break; case NumberIds::CONF_SET16_12: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 89); break; case NumberIds::CONF_SET16_13: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 90); break; case NumberIds::CONF_SET16_14: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 91); break; case NumberIds::CONF_SET16_15: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 92); break; case NumberIds::CONF_SET16_16: this->parent_->set_command_curve(PanasonicCommand::setPlus128(value_int), 93); break; case NumberIds::CONF_SET18: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 84); break; case NumberIds::CONF_SET19: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 94); break; case NumberIds::CONF_SET20: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 99); break; case NumberIds::CONF_SET21: this->parent_->set_command_byte(PanasonicCommand::setPlus1(value_int), 104); break; case NumberIds::CONF_SET22: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 105); break; case NumberIds::CONF_SET23: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 106); break; case NumberIds::CONF_SET27: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 59); break; case NumberIds::CONF_SET29: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 83); break; case NumberIds::CONF_SET36: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 65); break; case NumberIds::CONF_SET37: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 66); break; case NumberIds::CONF_SET38: this->parent_->set_command_byte(PanasonicCommand::setPlus128(value_int), 68); break; default: return; }; this->publish_state(state); this->keep_state_ = KEEP_STATE; } void PanasonicHeatpumpNumber::publish_new_state(const std::vector& data) { if (this->keep_state_ > 0) { this->keep_state_--; return; } if (data.empty()) return; float new_state; switch (this->id_) { case NumberIds::CONF_SET11: new_state = PanasonicDecode::getByteMinus128(data[42]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET20: new_state = PanasonicDecode::getByteMinus128(data[99]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET18: new_state = PanasonicDecode::getByteMinus128(data[84]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET19: new_state = PanasonicDecode::getByteMinus128(data[94]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET5: new_state = PanasonicDecode::getByteMinus128(data[38]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET6: new_state = PanasonicDecode::getByteMinus128(data[39]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_01: new_state = PanasonicDecode::getByteMinus128(data[75]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_02: new_state = PanasonicDecode::getByteMinus128(data[76]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_04: new_state = PanasonicDecode::getByteMinus128(data[78]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_03: new_state = PanasonicDecode::getByteMinus128(data[77]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET7: new_state = PanasonicDecode::getByteMinus128(data[40]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET8: new_state = PanasonicDecode::getByteMinus128(data[41]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_09: new_state = PanasonicDecode::getByteMinus128(data[86]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_10: new_state = PanasonicDecode::getByteMinus128(data[87]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_12: new_state = PanasonicDecode::getByteMinus128(data[89]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_11: new_state = PanasonicDecode::getByteMinus128(data[88]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET29: new_state = PanasonicDecode::getByteMinus128(data[83]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_05: new_state = PanasonicDecode::getByteMinus128(data[79]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_06: new_state = PanasonicDecode::getByteMinus128(data[80]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_08: new_state = PanasonicDecode::getByteMinus128(data[82]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_07: new_state = PanasonicDecode::getByteMinus128(data[81]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_13: new_state = PanasonicDecode::getByteMinus128(data[90]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_14: new_state = PanasonicDecode::getByteMinus128(data[91]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_16: new_state = PanasonicDecode::getByteMinus128(data[93]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET16_15: new_state = PanasonicDecode::getByteMinus128(data[92]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET15: new_state = PanasonicDecode::getByteMinus1(data[45]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET21: new_state = PanasonicDecode::getByteMinus1(data[104]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET22: new_state = PanasonicDecode::getByteMinus128(data[105]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET23: new_state = PanasonicDecode::getByteMinus128(data[106]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET27: new_state = PanasonicDecode::getByteMinus128(data[59]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET36: new_state = PanasonicDecode::getByteMinus128(data[65]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET37: new_state = PanasonicDecode::getByteMinus128(data[66]); if (this->has_state() && this->state == new_state) return; break; case NumberIds::CONF_SET38: new_state = PanasonicDecode::getByteMinus128(data[68]); if (this->has_state() && this->state == new_state) return; break; default: return; }; this->publish_state(new_state); } } // namespace panasonic_heatpump } // namespace esphome