添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account "os_version": "6.6.31-haos-raspi", "supervisor": "2024.06.2", "host_os": "Home Assistant OS 12.4", "docker_version": "26.1.4", "chassis": "embedded", "run_as_root": true "custom_components": { "localtuya": { "documentation": "https://github.com/rospogrigio/localtuya/", "version": "5.2.1", "requirements": [] "tuya_local": { "documentation": "https://github.com/make-all/tuya-local", "version": "2024.7.0", "requirements": [ "tinytuya==1.15.0", "tuya-device-sharing-sdk>=0.1.9,<=0.2.99" "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" "integration_manifest": { "domain": "tuya_local", "name": "Tuya Local", "codeowners": [ "make-all" "config_flow": true, "dependencies": [], "documentation": "https://github.com/make-all/tuya-local", "integration_type": "device", "iot_class": "local_push", "issue_tracker": "https://github.com/make-all/tuya-local/issues", "requirements": [ "tinytuya==1.15.0", "tuya-device-sharing-sdk>=0.1.9,<=0.2.99" "version": "2024.7.0", "is_built_in": false "setup_times": {}, "data": { "name": "Pet feeder", "type": "catit_pixi_smart_feeder", "device_id": "**REDACTED**", "device_cid": "", "local_key": "**REDACTED**", "host": "**REDACTED**", "protocol_version": 3.3, "tinytuya_version": "1.15.0", "api_version_set": 3.3, "api_version_used": 3.3, "api_working": true, "status": {}, "cached_state": { "updated_at": 1722009465.5674887, "3": 1, "11": 70, "12": false, "14": 0, "15": 1, "19": true, "101": "ac_power_on", "103": "real_time_mode", "112": 3, "116": "94%" "pending_state": {}, "connected": true, "force_dps": [], "home_assistant": { "name": "Pet feeder", "name_by_user": null, "disabled": false, "disabled_by": null, "entities": [ "disabled": false, "disabled_by": null, "entity_category": "diagnostic", "device_class": null, "original_device_class": "problem", "icon": null, "unit_of_measurement": null, "state": { "entity_id": "binary_sensor.pet_feeder_food_shortage", "state": "off", "attributes": { "device_class": "problem", "friendly_name": "Pet feeder Food shortage" "last_changed": "2024-07-26T15:54:09.575553+00:00", "last_reported": "2024-07-26T15:57:45.569567+00:00", "last_updated": "2024-07-26T15:54:09.575553+00:00" "disabled": false, "disabled_by": null, "entity_category": "diagnostic", "device_class": null, "original_device_class": "problem", "icon": null, "unit_of_measurement": null, "state": { "entity_id": "binary_sensor.pet_feeder_food_blockage", "state": "off", "attributes": { "device_class": "problem", "friendly_name": "Pet feeder Food blockage" "last_changed": "2024-07-26T15:54:09.576396+00:00", "last_reported": "2024-07-26T15:57:45.570534+00:00", "last_updated": "2024-07-26T15:54:09.576396+00:00" "disabled": false, "disabled_by": null, "entity_category": "diagnostic", "device_class": null, "original_device_class": "running", "icon": null, "unit_of_measurement": null, "state": { "entity_id": "binary_sensor.pet_feeder_feeding", "state": "unknown", "attributes": { "device_class": "running", "icon": "mdi:paw", "friendly_name": "Pet feeder Feeding" "last_changed": "2024-07-26T15:54:09.576994+00:00", "last_reported": "2024-07-26T15:57:45.571403+00:00", "last_updated": "2024-07-26T15:54:09.576994+00:00" "disabled": false, "disabled_by": null, "entity_category": null, "device_class": null, "original_device_class": null, "icon": null, "unit_of_measurement": null, "state": { "entity_id": "button.pet_feeder_quick_feed", "state": "unknown", "attributes": { "icon": "mdi:food-drumstick", "friendly_name": "Pet feeder Quick Feed" "last_changed": "2024-07-26T15:54:09.577699+00:00", "last_reported": "2024-07-26T15:56:43.872576+00:00", "last_updated": "2024-07-26T15:54:09.577699+00:00" "disabled": false, "disabled_by": null, "entity_category": "config", "device_class": null, "original_device_class": "restart", "icon": null, "unit_of_measurement": null, "state": { "entity_id": "button.pet_feeder_factory_reset", "state": "unknown", "attributes": { "device_class": "restart", "friendly_name": "Pet feeder Factory reset" "last_changed": "2024-07-26T15:54:09.578047+00:00", "last_reported": "2024-07-26T15:56:43.872945+00:00", "last_updated": "2024-07-26T15:54:09.578047+00:00" "disabled": false, "disabled_by": null, "entity_category": "diagnostic", "device_class": null, "original_device_class": null, "icon": null, "unit_of_measurement": null, "state": { "entity_id": "sensor.pet_feeder_feed_report", "state": "1", "attributes": { "icon": "mdi:paw", "friendly_name": "Pet feeder Feed report" "last_changed": "2024-07-26T15:54:09.578779+00:00", "last_reported": "2024-07-26T15:57:45.573376+00:00", "last_updated": "2024-07-26T15:54:09.578779+00:00" "disabled": false, "disabled_by": null, "entity_category": "config", "device_class": null, "original_device_class": null, "icon": null, "unit_of_measurement": null, "state": { "entity_id": "number.pet_feeder_manual_feed", "state": "1", "attributes": { "min": 1.0, "max": 12.0, "step": 1.0, "mode": "auto", "icon": "mdi:paw", "friendly_name": "Pet feeder Manual feed" "last_changed": "2024-07-26T15:54:09.579538+00:00", "last_reported": "2024-07-26T15:57:45.574462+00:00", "last_updated": "2024-07-26T15:54:09.579538+00:00"
2024-07-26 18:41:15.695 WARNING (MainThread) [custom_components.localtuya.common] [bfd...vrx] Disconnected - waiting for discovery broadcast
2024-07-26 18:41:37.036 DEBUG (MainThread) [custom_components.tuya_local.device] Cleverio PF100 received {"3": 1, "11": 70, "12": false, "14": 0, "15": 6, "19": true, "101": "ac_power_on", "103": "real_time_mode", "112": 3, "116": "94%", "full_poll": true}
2024-07-26 18:41:37.041 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] No mapping for dpid 15 (sensor), unable to determine valid values
2024-07-26 18:41:37.042 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] No mapping for dpid 15 (sensor), unable to determine valid values
2024-07-26 18:41:37.043 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 14 value from 0 to False
2024-07-26 18:41:37.044 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 14 value from 0 to False
2024-07-26 18:41:37.044 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 14 value from 0 to False
2024-07-26 18:41:37.045 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 14 value from 0 to False
2024-07-26 18:41:37.045 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 4 value from None to None
2024-07-26 18:41:37.046 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 4 value from None to None
2024-07-26 18:41:40.685 ERROR (MainThread) [homeassistant] Error doing job: Fatal error: protocol.data_received() call failed. (None)
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/asyncio/selector_events.py", line 1017, in _read_ready__data_received
    self._protocol.data_received(data)
  File "/config/custom_components/localtuya/pytuya/__init__.py", line 668, in data_received
    self.dispatcher.add_data(data)
  File "/config/custom_components/localtuya/pytuya/__init__.py", line 472, in add_data
    msg = unpack_message(
          ^^^^^^^^^^^^^^^
  File "/config/custom_components/localtuya/pytuya/__init__.py", line 304, in unpack_message
    raise DecodeError("Not enough data to unpack header")
custom_components.localtuya.pytuya.DecodeError: Not enough data to unpack header

DPS information

"result": { "model": "{\"modelId\":\"000004d15o\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"默认服务\",\"properties\":[{\"abilityId\":1,\"accessMode\":\"rw\",\"code\":\"meal_plan\",\"description\":\"同步到设备端本地,即使设备离线,仍能正常喂食出粮,喂食计划最多支持10个\\nraw格式约定:按照“周期+时间+喂食份数+开关”来实现本地定时,具体如下\\n1,前7个比特位代表周一到周日,二进制转十六进制,占用一个字节,0代表未设置,1代表设置,如0000001,表示周日生效,转换为16进制就是01\\n2,时间按照小时分钟格式,占用2个字节,分钟和小时,十进制转16进制,如18:50,转为16进制为1232\\n3,喂食份数,占用1个字节,十进制转16进制,如12,转为16进制为0c\\n4,开关,占用1个字节,00表示关闭,01表示开启\\n上述举例,对于APP端时间下发的结果为0112320c01,表示周日,18:50,喂食12份,开启。\",\"extensions\":{\"iconName\":\"icon-dp_time3\",\"attribute\":\"1120\"},\"name\":\"喂食计划\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":3,\"accessMode\":\"rw\",\"code\":\"manual_feed\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-icon-test13\",\"attribute\":\"1028\"},\"name\":\"手动喂食\",\"typeSpec\":{\"type\":\"value\",\"max\":20,\"min\":1,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":9,\"accessMode\":\"rw\",\"code\":\"factory_reset\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-a_nav_mode\",\"attribute\":\"1120\"},\"name\":\"恢复出厂\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":11,\"accessMode\":\"ro\",\"code\":\"battery_percentage\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_battery\",\"attribute\":\"1152\"},\"name\":\"电池电量\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"%\"}},{\"abilityId\":12,\"accessMode\":\"ro\",\"code\":\"charge_state\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-battery\",\"attribute\":\"1024\"},\"name\":\"充电状态\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":14,\"accessMode\":\"ro\",\"code\":\"fault\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_notice\",\"scope\":\"fault\",\"attribute\":\"1024\"},\"name\":\"故障告警\",\"typeSpec\":{\"type\":\"bitmap\",\"label\":[\"food_shortages\",\"food_jam\",\"battery_low\",\"ac_power_off\"],\"maxlen\":4}},{\"abilityId\":15,\"accessMode\":\"ro\",\"code\":\"feed_report\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_upload\",\"attribute\":\"1152\",\"id\":15,\"trigger\":\"direct\"},\"name\":\"喂食结果上报\",\"typeSpec\":{\"type\":\"value\",\"max\":20,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":19,\"accessMode\":\"rw\",\"code\":\"light\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_light2\",\"attribute\":\"1153\"},\"name\":\"指示灯开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":101,\"accessMode\":\"ro\",\"code\":\"power_state\",\"description\":\"\",\"name\":\"适配器状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"no_adapter\",\"ac_power_off\",\"ac_power_on\"]}},{\"abilityId\":103,\"accessMode\":\"ro\",\"code\":\"mode\",\"description\":\"\",\"name\":\"工作模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"real_time_mode\",\"eco_mode\"]}},{\"abilityId\":112,\"accessMode\":\"rw\",\"code\":\"mfeed_speech_volume\",\"description\":\"\",\"extensions\":{\"attribute\":\"4\"},\"name\":\"音量\",\"typeSpec\":{\"type\":\"value\",\"max\":3,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":116,\"accessMode\":\"ro\",\"code\":\"battery_capacity\",\"description\":\"\",\"name\":\"电量\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}}]}]}" "success": true, "t": 1722009723583, "tid": "662d97774b6811ef8c0d0631c72af00f"

Product ID

bfd0273e59494eb34esvrx

Product Name

Cleverio PF100

Information about how the device functions

Cat feeder. The tuya-local misslabeled the Cleverio to be a Catit cat feeder.

There is nothing to do here. I am not going to make duplicate configs for every rebranding of the same device just so you can see a filename that matches your branding.
If the product id was correctly supplied, I could maybe add a products entry for this device, but you have given the device id instead, which is not suitable for a config that goes out to all users.

Hi! There seem to be some difference between the models. I find errors in the logs.I Where can I find the product id? Is it on the tuya development portal?

[custom_components.tuya_local.helpers.device_config] Catit Pixi smart fountain: Mapped dps 12 value from level_3 to Full
2024-07-29 18:33:53.006 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] sensor values: ['Low', 'Medium', 'Full']
2024-07-29 18:33:53.007 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] No mapping for dpid 11 (sensor), unable to determine valid values
2024-07-29 18:33:53.007 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] No mapping for dpid 11 (sensor), unable to determine valid values
2024-07-29 18:33:59.921 DEBUG (MainThread) [custom_components.tuya_local.device] Cleverio PF100 received {"3": 1, "11": 90, "12": false, "14": 0, "15": 2, "19": true, "101": "ac_power_on", "103": "real_time_mode", "112": 3, "116": "99%", "full_poll": true}
2024-07-29 18:33:59.926 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] No mapping for dpid 15 (sensor), unable to determine valid values
2024-07-29 18:33:59.927 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] No mapping for dpid 15 (sensor), unable to determine valid values
2024-07-29 18:33:59.929 DEBUG (MainThread) [custom_components.tuya_local.helpers.device_config] Pet feeder: Mapped dps 14 value from 0 to False
2024-07-29 18:33:59.929 DEBUG

Sorry for late reply. I found the product id!

"name": "Cleverio PF100",
"product_id": "wfkzyy0evslzsmoi",
"product_name": "Cleverio PF100",

Is it possible to see the meal_plan and update it? Did a little script to how it is decoded.

import base64
base64_input = "fwQAAgF/BgABAX8JAAEBfw8AAQF/FQACAX8XAAEBKBIAAQE="
decoded_bytes = base64.b64decode(base64_input)
meal_plan = []
for i in range(0, len(decoded_bytes), 5):
    command_id = decoded_bytes[i]
    time_hour = decoded_bytes[i+1]
    time_minute = decoded_bytes[i+2]
    portion_size = decoded_bytes[i+3]
    meal_time = f"{time_hour:02}:{time_minute:02}"
    meal_plan.append({
        "time": meal_time,
        "portion": portion_size
meal_plan

I also found the data that is queried if that helps.

"result": { "properties": [ "code": "meal_plan", "custom_name": "", "dp_id": 1, "time": 1724421493038, "type": "raw", "value": "fwQAAgF/BgABAX8JAAEBfw8AAQF/FQACAX8XAAEBKBIAAQE=" "code": "manual_feed", "custom_name": "", "dp_id": 3, "time": 1724233083861, "type": "value", "value": 1 "code": "factory_reset", "custom_name": "", "dp_id": 9, "time": 1674401358259, "type": "bool", "value": false "code": "battery_percentage", "custom_name": "", "dp_id": 11, "time": 1724182263332, "type": "value", "value": 90 "code": "charge_state", "custom_name": "", "dp_id": 12, "time": 1724182533436, "type": "bool", "value": false "code": "fault", "custom_name": "", "dp_id": 14, "time": 1724182260557, "type": "bitmap", "value": 0 "code": "feed_report", "custom_name": "", "dp_id": 15, "time": 1724420759868, "type": "value", "value": 1 "code": "light", "custom_name": "", "dp_id": 19, "time": 1724182260496, "type": "bool", "value": true "code": "power_state", "custom_name": "", "dp_id": 101, "time": 1724182260563, "type": "enum", "value": "ac_power_on" "code": "mode", "custom_name": "", "dp_id": 103, "time": 1724182260500, "type": "enum", "value": "real_time_mode" "code": "mfeed_speech_volume", "custom_name": "", "dp_id": 112, "time": 1724182260524, "type": "value", "value": 3 "code": "battery_capacity", "custom_name": "", "dp_id": 116, "time": 1724369945707, "type": "string", "value": "97%" "success": true, "t": 1724424066595, "tid": "bacaac97615d11ef883136d89ae34f8e"

and some data model

"result": { "model": "{\"modelId\":\"000004d15o\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"默认服务\",\"properties\":[{\"abilityId\":1,\"accessMode\":\"rw\",\"code\":\"meal_plan\",\"description\":\"同步到设备端本地,即使设备离线,仍能正常喂食出粮,喂食计划最多支持10个\\nraw格式约定:按照“周期+时间+喂食份数+开关”来实现本地定时,具体如下\\n1,前7个比特位代表周一到周日,二进制转十六进制,占用一个字节,0代表未设置,1代表设置,如0000001,表示周日生效,转换为16进制就是01\\n2,时间按照小时分钟格式,占用2个字节,分钟和小时,十进制转16进制,如18:50,转为16进制为1232\\n3,喂食份数,占用1个字节,十进制转16进制,如12,转为16进制为0c\\n4,开关,占用1个字节,00表示关闭,01表示开启\\n上述举例,对于APP端时间下发的结果为0112320c01,表示周日,18:50,喂食12份,开启。\",\"extensions\":{\"iconName\":\"icon-dp_time3\",\"attribute\":\"1120\"},\"name\":\"喂食计划\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":3,\"accessMode\":\"rw\",\"code\":\"manual_feed\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-icon-test13\",\"attribute\":\"1028\"},\"name\":\"手动喂食\",\"typeSpec\":{\"type\":\"value\",\"max\":20,\"min\":1,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":9,\"accessMode\":\"rw\",\"code\":\"factory_reset\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-a_nav_mode\",\"attribute\":\"1120\"},\"name\":\"恢复出厂\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":11,\"accessMode\":\"ro\",\"code\":\"battery_percentage\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_battery\",\"attribute\":\"1152\"},\"name\":\"电池电量\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"%\"}},{\"abilityId\":12,\"accessMode\":\"ro\",\"code\":\"charge_state\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-battery\",\"attribute\":\"1024\"},\"name\":\"充电状态\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":14,\"accessMode\":\"ro\",\"code\":\"fault\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_notice\",\"scope\":\"fault\",\"attribute\":\"1024\"},\"name\":\"故障告警\",\"typeSpec\":{\"type\":\"bitmap\",\"label\":[\"food_shortages\",\"food_jam\",\"battery_low\",\"ac_power_off\"],\"maxlen\":4}},{\"abilityId\":15,\"accessMode\":\"ro\",\"code\":\"feed_report\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_upload\",\"attribute\":\"1152\",\"id\":15,\"trigger\":\"direct\"},\"name\":\"喂食结果上报\",\"typeSpec\":{\"type\":\"value\",\"max\":20,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":19,\"accessMode\":\"rw\",\"code\":\"light\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_light2\",\"attribute\":\"1153\"},\"name\":\"指示灯开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":101,\"accessMode\":\"ro\",\"code\":\"power_state\",\"description\":\"\",\"name\":\"适配器状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"no_adapter\",\"ac_power_off\",\"ac_power_on\"]}},{\"abilityId\":103,\"accessMode\":\"ro\",\"code\":\"mode\",\"description\":\"\",\"name\":\"工作模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"real_time_mode\",\"eco_mode\"]}},{\"abilityId\":112,\"accessMode\":\"rw\",\"code\":\"mfeed_speech_volume\",\"description\":\"\",\"extensions\":{\"attribute\":\"4\"},\"name\":\"音量\",\"typeSpec\":{\"type\":\"value\",\"max\":3,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":116,\"accessMode\":\"ro\",\"code\":\"battery_capacity\",\"description\":\"\",\"name\":\"电量\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}}]}]}" "success": true, "t": 1724424334748, "tid": "5aa0aaef615e11ef883136d89ae34f8e"