293 if (this->last_qpiri_) {
294 this->last_qpiri_->publish_state(
message);
333 if (this->input_voltage_range_) {
334 this->input_voltage_range_->publish_state(input_voltage_range.
value_or(NAN));
337 if (this->input_voltage_range_switch_ && input_voltage_range.
has_value()) {
338 this->input_voltage_range_switch_->publish_state(input_voltage_range.
value() == 1);
341 if (this->output_source_priority_) {
342 this->output_source_priority_->publish_state(output_source_priority.
value_or(NAN));
345 if (this->output_source_priority_utility_switch_ && output_source_priority.
has_value()) {
346 this->output_source_priority_utility_switch_->publish_state(output_source_priority.
value() == 0);
348 if (this->output_source_priority_solar_switch_ && output_source_priority.
has_value()) {
349 this->output_source_priority_solar_switch_->publish_state(output_source_priority.
value() == 1);
351 if (this->output_source_priority_battery_switch_ && output_source_priority.
has_value()) {
352 this->output_source_priority_battery_switch_->publish_state(output_source_priority.
value() == 2);
354 if (this->output_source_priority_hybrid_switch_ && output_source_priority.
has_value()) {
355 this->output_source_priority_hybrid_switch_->publish_state(output_source_priority.
value() == 3);
358 if (this->pv_ok_condition_for_parallel_) {
359 this->pv_ok_condition_for_parallel_->publish_state(pv_ok_condition_for_parallel.
value_or(NAN));
362 if (this->pv_ok_condition_for_parallel_switch_ && pv_ok_condition_for_parallel.
has_value()) {
363 this->pv_ok_condition_for_parallel_switch_->publish_state(pv_ok_condition_for_parallel.
value() == 1);
366 if (this->pv_power_balance_) {
367 this->pv_power_balance_->publish_state(pv_power_balance.
value_or(NAN));
370 if (this->pv_power_balance_switch_ && pv_power_balance.
has_value()) {
371 this->pv_power_balance_switch_->publish_state(pv_power_balance.
value() == 1);
376 if (this->last_qpigs_) {
377 this->last_qpigs_->publish_state(
message);
416 if (this->battery_voltage_offset_for_fans_on_) {
417 this->battery_voltage_offset_for_fans_on_->publish_state(battery_voltage_offset_for_fans_on.
value_or(NAN) / 10.0f);
502 if (this->last_qpiws_) {
503 this->last_qpiws_->publish_state(
message);
511 bool value_warnings_present =
false;
512 bool value_faults_present =
false;
514 for (
size_t i = 0; i < 36; i++) {
515 if (i == 31 || i == 32) {
523 value_warnings_present |= enabled.
value_or(
false);
527 value_faults_present |= enabled.
value_or(
false);
531 value_faults_present |= enabled.
value_or(
false);
535 value_faults_present |= enabled.
value_or(
false);
539 value_faults_present |= enabled.
value_or(
false);
543 value_warnings_present |= enabled.
value_or(
false);
547 value_faults_present |= enabled.
value_or(
false);
551 value_faults_present |= enabled.
value_or(
false);
555 value_faults_present |= enabled.
value_or(
false);
559 value_warnings_present |= enabled.
value_or(
false);
563 value_warnings_present |= enabled.
value_or(
false);
567 value_warnings_present |= enabled.
value_or(
false);
571 value_warnings_present |= enabled.
value_or(
false);
575 value_warnings_present |= enabled.
value_or(
false);
579 value_warnings_present |= enabled.
value_or(
false);
583 value_warnings_present |= enabled.
value_or(
false);
587 value_warnings_present |= enabled.
value_or(
false);
591 value_faults_present |= enabled.
value_or(
false);
595 value_faults_present |= enabled.
value_or(
false);
599 value_faults_present |= enabled.
value_or(
false);
603 value_faults_present |= enabled.
value_or(
false);
607 value_faults_present |= enabled.
value_or(
false);
611 value_faults_present |= enabled.
value_or(
false);
615 value_faults_present |= enabled.
value_or(
false);
619 value_warnings_present |= enabled.
value_or(
false);
623 value_warnings_present |= enabled.
value_or(
false);
627 value_faults_present |= enabled.
value_or(
false);
631 value_warnings_present |= enabled.
value_or(
false);
635 value_warnings_present |= enabled.
value_or(
false);
639 value_faults_present |= enabled.
value_or(
false);
643 value_warnings_present |= enabled.
value_or(
false);
647 value_warnings_present |= enabled.
value_or(
false);
650 value_warnings_present |= enabled.
value_or(
false);
658 if (this->fault_code_) {
659 if (
flags.length() < 33) {
660 this->fault_code_->publish_state(NAN);
662 std::string fc(
flags, 31, 2);