SmartIR
SmartIR copied to clipboard
1.17.7 MQTT payload errors
Running HA OS 10.3 with supervisor 2023.6.2 and while I didn't note when this started I'll run a downgrade on SmartIR as a test & update.
Sending MQTT commands to devices created in SmartIR json gives the following error for either media players or climate devices:
This error originated from a custom integration.
Logger: custom_components.smartir.media_player
Source: core.py:1864
Integration: SmartIR (documentation)
First occurred: 17:41:41 (20 occurrences)
Last logged: 19:41:20
value should be a string for dictionary value @ data['payload']
Traceback (most recent call last):
File "/config/custom_components/smartir/media_player.py", line 289, in send_command
await self._controller.send(command)
File "/config/custom_components/smartir/controller.py", line 151, in send
await self.hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1864, in async_call
processed_data: dict[str, Any] = handler.schema(service_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/validators.py", line 232, in __call__
return self._exec((Schema(val) for val in self.validators), v)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/validators.py", line 355, in _exec
raise e if self.msg is None else AllInvalid(self.msg, path=path)
File "/usr/local/lib/python3.11/site-packages/voluptuous/validators.py", line 351, in _exec
v = func(v)
^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/schema_builder.py", line 818, in validate_callable
return schema(data)
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/schema_builder.py", line 595, in validate_dict
return base_validate(path, iteritems(data), out)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/voluptuous/schema_builder.py", line 433, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: value should be a string for dictionary value @ data['payload']
Below is an example of one of my json files:
{
"manufacturer": "Panasonic",
"supportedModels": [
"LC-40SH340K"
],
"supportedController": "MQTT",
"commandsEncoding": "Raw",
"commands": {
"off": {"ir_code_to_send":"C9INzQbXAdcBhwElBUAFBYcBHQKHAUAJ4BcDQC8D1wGHAeAJA0ABwBcB1wHgESfAIwGHAcAjASUFQAMA1yAHQAMDhwHXAYADBSUF1wHXAYAHQAsBJQVACwWHAdcBhwFABwH//0DHAYcBQLtAD0AX4B8DQC9AN+AXL+AbJ0AjQEdAB+ADA0ATQANAE8AHQAvAAwcdAocBJQWHAQ=="},
"on": {"ir_code_to_send":"BaQN0gbOAUABByYFzgHOAYUBgANAAcAL4AkHB/0BhQEmBYUBQAfAH+ADC4ATQAEJhQEmBc4BzgGFAeATA8AjQAeAA4ALA84BhQFAAwUmBc4BzgGAB0ALwAMBzgGAEwH//0DHAYUBQIMDJgWFAUAHQAMDzgGFAUAHQAPAC0AHQAPAE8Av4AMT4AsL4AMnQB9AA0BDQAPAC0AjQAtAB+ADA8AjQBPgDx9AGwH//0DHBc4BzgGFAUAPwDdAD+ADC+ALD0AvQBcAziAB4AcrA84BhQHAEwcmBc4BzgGFAeADA0AbQAPAEwMmBYUBQA8CJgXOoANACwOFAc4BgANAC4AfAYUB4AMDB84BhQEmBYUB"},
"volumeUp": {"ir_code_to_send":"BaINwAbRAUABCB4F0QHRAYgB0WABQAfgDwNAAQGIAeABLwKIAdFgAUAHgAMD+AGIAcAL4AUnAYgB4B8DAx4FiAHgA0fgBzcFHgXRAdEBgAcB//9AxwGIAUAvBR4FiAHRAYADQA/gBwvgBxNAL+AHE8APwAdAQ+ALJ0AXQAPgAyfgAwtAG+AHN0ATQANAJ0ADCx4FiAHRAYgBHgWIAQ=="},
"volumeDown": {"ir_code_to_send":"BYgN2gbYAUABBxIF2AHYAYgB4B8D4B8v4Bsn4Asj4AMT4AMLwJ8DEgWIAUALQAcH//+IDdoGiAGADwPYARcCgAsB2AHgGQMDEgWIAeAfJ+AXV0BL4Acj4AMT4AMLwHMLEgWIARcCiAESBYgB"}
}
}
Issue is persistent after downgrades but apparently the key error is
value should be a string for dictionary value @ data[‘payload’]
To fix change line 148 in controller.py to
'payload': json.dumps(command).
Can you send me the json file please?
Had the same issue, you should wrap it all as string and escape the double quotes.. for example:
"off": "{\"ir_code_to_send\":\"E/cLiQ+wB6gEuAOwB7gDCASwBwgEQAfgCQMJsAe4AwgEsAcIBEAH4CsDwAEHuAOwB7AHCASAewEIBEAPB7gDCASwBwgEQAfgCQMJsAe4AwgEsAcIBEAH4DUDBbAHsAcIBOBbe0ABAbgD4AMDB7AHsAcIBIkP\"}",