300 if (this->last_qpiri_) {
301 this->last_qpiri_->publish_state(
message);
340 if (this->input_voltage_range_) {
341 this->input_voltage_range_->publish_state(input_voltage_range.value_or(NAN));
344 if (this->input_voltage_range_switch_ && input_voltage_range.has_value()) {
345 this->input_voltage_range_switch_->publish_state(input_voltage_range.value() == 1);
348 if (this->output_source_priority_) {
349 this->output_source_priority_->publish_state(output_source_priority.value_or(NAN));
352 if (this->output_source_priority_utility_switch_ && output_source_priority.has_value()) {
353 this->output_source_priority_utility_switch_->publish_state(output_source_priority.value() == 0);
355 if (this->output_source_priority_solar_switch_ && output_source_priority.has_value()) {
356 this->output_source_priority_solar_switch_->publish_state(output_source_priority.value() == 1);
358 if (this->output_source_priority_battery_switch_ && output_source_priority.has_value()) {
359 this->output_source_priority_battery_switch_->publish_state(output_source_priority.value() == 2);
361 if (this->output_source_priority_hybrid_switch_ && output_source_priority.has_value()) {
362 this->output_source_priority_hybrid_switch_->publish_state(output_source_priority.value() == 3);
365 if (this->pv_ok_condition_for_parallel_) {
366 this->pv_ok_condition_for_parallel_->publish_state(pv_ok_condition_for_parallel.value_or(NAN));
369 if (this->pv_ok_condition_for_parallel_switch_ && pv_ok_condition_for_parallel.has_value()) {
370 this->pv_ok_condition_for_parallel_switch_->publish_state(pv_ok_condition_for_parallel.value() == 1);
373 if (this->pv_power_balance_) {
374 this->pv_power_balance_->publish_state(pv_power_balance.value_or(NAN));
377 if (this->pv_power_balance_switch_ && pv_power_balance.has_value()) {
378 this->pv_power_balance_switch_->publish_state(pv_power_balance.value() == 1);
383 if (this->last_qpigs_) {
384 this->last_qpigs_->publish_state(
message);
423 if (this->battery_voltage_offset_for_fans_on_) {
424 this->battery_voltage_offset_for_fans_on_->publish_state(battery_voltage_offset_for_fans_on.value_or(NAN) / 10.0f);
509 if (this->last_qpiws_) {
510 this->last_qpiws_->publish_state(
message);
517 esphome::optional<bool> enabled;
518 bool value_warnings_present =
false;
519 bool value_faults_present =
false;
521 for (
size_t i = 0; i < 36; i++) {
522 if (i == 31 || i == 32) {
530 value_warnings_present |= enabled.value_or(
false);
534 value_faults_present |= enabled.value_or(
false);
538 value_faults_present |= enabled.value_or(
false);
542 value_faults_present |= enabled.value_or(
false);
546 value_faults_present |= enabled.value_or(
false);
550 value_warnings_present |= enabled.value_or(
false);
554 value_faults_present |= enabled.value_or(
false);
558 value_faults_present |= enabled.value_or(
false);
562 value_faults_present |= enabled.value_or(
false);
566 value_warnings_present |= enabled.value_or(
false);
570 value_warnings_present |= enabled.value_or(
false);
574 value_warnings_present |= enabled.value_or(
false);
578 value_warnings_present |= enabled.value_or(
false);
582 value_warnings_present |= enabled.value_or(
false);
586 value_warnings_present |= enabled.value_or(
false);
590 value_warnings_present |= enabled.value_or(
false);
594 value_warnings_present |= enabled.value_or(
false);
598 value_faults_present |= enabled.value_or(
false);
602 value_faults_present |= enabled.value_or(
false);
606 value_faults_present |= enabled.value_or(
false);
610 value_faults_present |= enabled.value_or(
false);
614 value_faults_present |= enabled.value_or(
false);
618 value_faults_present |= enabled.value_or(
false);
622 value_faults_present |= enabled.value_or(
false);
626 value_warnings_present |= enabled.value_or(
false);
630 value_warnings_present |= enabled.value_or(
false);
634 value_faults_present |= enabled.value_or(
false);
638 value_warnings_present |= enabled.value_or(
false);
642 value_warnings_present |= enabled.value_or(
false);
646 value_faults_present |= enabled.value_or(
false);
650 value_warnings_present |= enabled.value_or(
false);
654 value_warnings_present |= enabled.value_or(
false);
658 value_warnings_present |= enabled.value_or(
false);
666 if (this->fault_code_) {
667 if (
flags.length() < 33) {
668 this->fault_code_->publish_state(NAN);
670 std::string fc(
flags, 31, 2);