Environment:
Predbat version: v8.51.1 (also reproduced on v8.50.0)
Add-on version: 1.7.1
Home Assistant Core: 2026.8.3
Home Assistant Supervisor: 2026.07.5
System: Home Assistant OS 18.2 (aarch64 / Raspberry Pi 4-64)
Inverter: Pylontech Force H3X (via custom bridge automation, translating Predbat's charge/discharge booleans to inverter commands)
Description:
Every attempt by Predbat to call input_boolean.turn_on / input_boolean.turn_off on the standard predbat_charge_start, predbat_discharge_start, predbat_charge_freeze, predbat_discharge_freeze entities fails with a Websocket invalid_format error. As a result, these booleans never actually change state, even though predbat.status correctly reports "Exporting" or "Importing" and the Plan tab shows a valid planned charge/discharge window.
This means Predbat's internal plan is correct, but the corresponding action is never actually communicated to Home Assistant — nothing gets executed downstream.
Log excerpt:
2026-08-23 02:24:12.553851: Warn: Web Socket result failed {'id': 25, 'type': 'result', 'success': False, 'error': {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}}
2026-08-23 02:24:12.554073: Warn: Service call input_boolean/turn_off data {'target': {'entity_id': 'input_boolean.predbat_charge_start'}} failed: {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}
2026-08-23 02:24:12.661055: Warn: Web Socket result failed {'id': 26, 'type': 'result', 'success': False, 'error': {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}}
2026-08-23 02:24:12.661265: Warn: Service call input_boolean/turn_on data {'target': {'entity_id': 'input_boolean.predbat_discharge_start'}} failed: {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}
This repeats consistently on every planning cycle (every ~2 min and on every relevant state trigger), meaning the plan never executes at all — despite predbat.status reporting "Exporting" with correct target SoC values throughout the night.
Steps to reproduce:
Configure discharge_start_service (or charge_start_service) in apps.yaml as input_boolean.turn_on targeting a input_boolean.predbat_discharge_start entity (standard config pattern per docs)
Enable predbat_control_active (custom regie boolean, not core to the bug — same result occurs without it)
Let Predbat plan a discharge/charge window
Observe the add-on log at the moment the window starts
Expected behavior:
The input_boolean.turn_on/turn_off service call should succeed, and the corresponding boolean should flip state, exactly as it did in earlier Predbat versions (this setup previously worked correctly with the same apps.yaml service mapping).
Actual behavior:
The service call is rejected by Home Assistant's Websocket API because Predbat appears to send the entity_id nested under a target key, which this specific call format does not accept — HA expects entity_id directly under data for this call.
Possibly related:
This looks like it could be the same underlying pattern as #4213 / #4215 ("Service API target_soc is float instead of int" / "Fix target_soc passed as float in service API calls", closed July 9), where a Predbat service-call payload didn't match Home Assistant's schema validation. That fix may not have been applied consistently across all of Predbat's service-call code paths — this report covers the input_boolean turn_on/turn_off calls specifically, which still appear to send a malformed target structure.
Additional note (possibly unrelated):
Also observed in the same log, a new warning that may be related to a separate recent Home Assistant Core update (2026.8.3) rather than this issue:
Warn: Cannot find battery charge curve (settings missing), one of the required settings for soc_percent, charge_rate and battery_power are missing from apps.yaml
Warn: Cannot find battery discharge curve (settings missing), one of the required settings for soc_percent, discharge_rate and battery_power are missing from apps.yaml
Flagging this separately in case it's relevant, but the core issue above (failed input_boolean service calls) is the blocking problem.
Impact:
This completely blocks Predbat from executing any charge or discharge action via the input_boolean-based service call method — the plan is calculated correctly but never enacted. This affects any user relying on the standard input_boolean bridge pattern for non-natively-supported inverters (e.g. custom EMS/Modbus bridges).
Environment:
Predbat version: v8.51.1 (also reproduced on v8.50.0)
Add-on version: 1.7.1
Home Assistant Core: 2026.8.3
Home Assistant Supervisor: 2026.07.5
System: Home Assistant OS 18.2 (aarch64 / Raspberry Pi 4-64)
Inverter: Pylontech Force H3X (via custom bridge automation, translating Predbat's charge/discharge booleans to inverter commands)
Description:
Every attempt by Predbat to call input_boolean.turn_on / input_boolean.turn_off on the standard predbat_charge_start, predbat_discharge_start, predbat_charge_freeze, predbat_discharge_freeze entities fails with a Websocket invalid_format error. As a result, these booleans never actually change state, even though predbat.status correctly reports "Exporting" or "Importing" and the Plan tab shows a valid planned charge/discharge window.
This means Predbat's internal plan is correct, but the corresponding action is never actually communicated to Home Assistant — nothing gets executed downstream.
Log excerpt:
2026-08-23 02:24:12.553851: Warn: Web Socket result failed {'id': 25, 'type': 'result', 'success': False, 'error': {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}}
2026-08-23 02:24:12.554073: Warn: Service call input_boolean/turn_off data {'target': {'entity_id': 'input_boolean.predbat_charge_start'}} failed: {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}
2026-08-23 02:24:12.661055: Warn: Web Socket result failed {'id': 26, 'type': 'result', 'success': False, 'error': {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}}
2026-08-23 02:24:12.661265: Warn: Service call input_boolean/turn_on data {'target': {'entity_id': 'input_boolean.predbat_discharge_start'}} failed: {'code': 'invalid_format', 'message': "extra keys not allowed @ data['target']"}
This repeats consistently on every planning cycle (every ~2 min and on every relevant state trigger), meaning the plan never executes at all — despite predbat.status reporting "Exporting" with correct target SoC values throughout the night.
Steps to reproduce:
Configure discharge_start_service (or charge_start_service) in apps.yaml as input_boolean.turn_on targeting a input_boolean.predbat_discharge_start entity (standard config pattern per docs)
Enable predbat_control_active (custom regie boolean, not core to the bug — same result occurs without it)
Let Predbat plan a discharge/charge window
Observe the add-on log at the moment the window starts
Expected behavior:
The input_boolean.turn_on/turn_off service call should succeed, and the corresponding boolean should flip state, exactly as it did in earlier Predbat versions (this setup previously worked correctly with the same apps.yaml service mapping).
Actual behavior:
The service call is rejected by Home Assistant's Websocket API because Predbat appears to send the entity_id nested under a target key, which this specific call format does not accept — HA expects entity_id directly under data for this call.
Possibly related:
This looks like it could be the same underlying pattern as #4213 / #4215 ("Service API target_soc is float instead of int" / "Fix target_soc passed as float in service API calls", closed July 9), where a Predbat service-call payload didn't match Home Assistant's schema validation. That fix may not have been applied consistently across all of Predbat's service-call code paths — this report covers the input_boolean turn_on/turn_off calls specifically, which still appear to send a malformed target structure.
Additional note (possibly unrelated):
Also observed in the same log, a new warning that may be related to a separate recent Home Assistant Core update (2026.8.3) rather than this issue:
Warn: Cannot find battery charge curve (settings missing), one of the required settings for soc_percent, charge_rate and battery_power are missing from apps.yaml
Warn: Cannot find battery discharge curve (settings missing), one of the required settings for soc_percent, discharge_rate and battery_power are missing from apps.yaml
Flagging this separately in case it's relevant, but the core issue above (failed input_boolean service calls) is the blocking problem.
Impact:
This completely blocks Predbat from executing any charge or discharge action via the input_boolean-based service call method — the plan is calculated correctly but never enacted. This affects any user relying on the standard input_boolean bridge pattern for non-natively-supported inverters (e.g. custom EMS/Modbus bridges).