299 if (this->last_qpiri_) {
300 this->last_qpiri_->publish_state(
message);
339 if (this->input_voltage_range_) {
340 this->input_voltage_range_->publish_state(input_voltage_range.value_or(NAN));
343 if (this->input_voltage_range_switch_ && input_voltage_range.has_value()) {
344 this->input_voltage_range_switch_->publish_state(input_voltage_range.value() == 1);
347 if (this->output_source_priority_) {
348 this->output_source_priority_->publish_state(output_source_priority.value_or(NAN));
351 if (this->output_source_priority_utility_switch_ && output_source_priority.has_value()) {
352 this->output_source_priority_utility_switch_->publish_state(output_source_priority.value() == 0);
354 if (this->output_source_priority_solar_switch_ && output_source_priority.has_value()) {
355 this->output_source_priority_solar_switch_->publish_state(output_source_priority.value() == 1);
357 if (this->output_source_priority_battery_switch_ && output_source_priority.has_value()) {
358 this->output_source_priority_battery_switch_->publish_state(output_source_priority.value() == 2);
360 if (this->output_source_priority_hybrid_switch_ && output_source_priority.has_value()) {
361 this->output_source_priority_hybrid_switch_->publish_state(output_source_priority.value() == 3);
364 if (this->pv_ok_condition_for_parallel_) {
365 this->pv_ok_condition_for_parallel_->publish_state(pv_ok_condition_for_parallel.value_or(NAN));
368 if (this->pv_ok_condition_for_parallel_switch_ && pv_ok_condition_for_parallel.has_value()) {
369 this->pv_ok_condition_for_parallel_switch_->publish_state(pv_ok_condition_for_parallel.value() == 1);
372 if (this->pv_power_balance_) {
373 this->pv_power_balance_->publish_state(pv_power_balance.value_or(NAN));
376 if (this->pv_power_balance_switch_ && pv_power_balance.has_value()) {
377 this->pv_power_balance_switch_->publish_state(pv_power_balance.value() == 1);
382 if (this->last_qpigs_) {
383 this->last_qpigs_->publish_state(
message);
422 if (this->battery_voltage_offset_for_fans_on_) {
423 this->battery_voltage_offset_for_fans_on_->publish_state(battery_voltage_offset_for_fans_on.value_or(NAN) / 10.0f);
512 if (this->last_qpiws_) {
513 this->last_qpiws_->publish_state(
message);
520 esphome::optional<bool> enabled;
521 bool value_warnings_present =
false;
522 bool value_faults_present =
false;
524 for (
size_t i = 0; i < 36; i++) {
525 if (i == 31 || i == 32) {
533 value_warnings_present |= enabled.value_or(
false);
537 value_faults_present |= enabled.value_or(
false);
541 value_faults_present |= enabled.value_or(
false);
545 value_faults_present |= enabled.value_or(
false);
549 value_faults_present |= enabled.value_or(
false);
553 value_warnings_present |= enabled.value_or(
false);
557 value_faults_present |= enabled.value_or(
false);
561 value_faults_present |= enabled.value_or(
false);
565 value_faults_present |= enabled.value_or(
false);
569 value_warnings_present |= enabled.value_or(
false);
573 value_warnings_present |= enabled.value_or(
false);
577 value_warnings_present |= enabled.value_or(
false);
581 value_warnings_present |= enabled.value_or(
false);
585 value_warnings_present |= enabled.value_or(
false);
589 value_warnings_present |= enabled.value_or(
false);
593 value_warnings_present |= enabled.value_or(
false);
597 value_warnings_present |= enabled.value_or(
false);
601 value_faults_present |= enabled.value_or(
false);
605 value_faults_present |= enabled.value_or(
false);
609 value_faults_present |= enabled.value_or(
false);
613 value_faults_present |= enabled.value_or(
false);
617 value_faults_present |= enabled.value_or(
false);
621 value_faults_present |= enabled.value_or(
false);
625 value_faults_present |= enabled.value_or(
false);
629 value_warnings_present |= enabled.value_or(
false);
633 value_warnings_present |= enabled.value_or(
false);
637 value_faults_present |= enabled.value_or(
false);
641 value_warnings_present |= enabled.value_or(
false);
645 value_warnings_present |= enabled.value_or(
false);
649 value_faults_present |= enabled.value_or(
false);
653 value_warnings_present |= enabled.value_or(
false);
657 value_warnings_present |= enabled.value_or(
false);
661 value_warnings_present |= enabled.value_or(
false);
669 if (this->fault_code_) {
670 if (
flags.length() < 33) {
671 this->fault_code_->publish_state(NAN);
673 std::string fc(
flags, 31, 2);