tuya-local icon indicating copy to clipboard operation
tuya-local copied to clipboard

Request support for <Cleverio PF100>

Open FredrikM97 opened this issue 1 year ago • 0 comments

Log message

DPS: {  "3": 1, "11": 90, "12": false, "14": 0, "15": 1, "19": true, "101": "ac_power_on", "103": "real_time_mode", "112": 3, "116": "97%" }
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.8.1",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.4",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Stockholm",
    "os_name": "Linux",
    "os_version": "6.6.31-haos-raspi",
    "supervisor": "2024.08.0",
    "host_os": "Home Assistant OS 13.0",
    "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": []
    },
    "browser_mod": {
      "documentation": "https://github.com/thomasloven/hass-browser_mod/blob/master/README.md",
      "version": "2.3.1",
      "requirements": []
    },
    "tuya_local": {
      "documentation": "https://github.com/make-all/tuya-local",
      "version": "2024.7.1",
      "requirements": [
        "tinytuya==1.15.1",
        "tuya-device-sharing-sdk>=0.1.9,<=0.2.99"
      ]
    },
    "sureha": {
      "documentation": "https://github.com/benleb/sureha",
      "version": "0.2.0",
      "requirements": [
        "surepy>=0.9.0"
      ]
    },
    "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.1",
      "tuya-device-sharing-sdk>=0.1.9,<=0.2.99"
    ],
    "version": "2024.7.1",
    "is_built_in": false
  },
  "setup_times": {
    "null": {
      "setup": 0.000157862999998315
    },
    "01J3QZAD07PX68QM19Q8WAA12M": {
      "wait_import_platforms": -6.385914532000001,
      "wait_base_component": -0.0024386259999999993,
      "config_entry_setup": 6.618970214000001
    },
    "01J3QVZSGBVHPMDAB1A3PFHKXQ": {
      "wait_import_platforms": -6.464395977999999,
      "wait_base_component": -0.003995697000007681,
      "config_entry_setup": 6.646176033000003
    }
  },
  "data": {
    "name": "Cleverio PF100",
    "type": "catit_pixi_smart_feeder",
    "device_id": "**REDACTED**",
    "device_cid": "",
    "local_key": "**REDACTED**",
    "host": "**REDACTED**",
    "protocol_version": 3.3,
    "tinytuya_version": "1.15.1",
    "api_version_set": 3.3,
    "api_version_used": 3.3,
    "api_working": true,
    "status": {},
    "cached_state": {
      "updated_at": 1724424549.8291724,
      "3": 1,
      "11": 90,
      "12": false,
      "14": 0,
      "15": 1,
      "19": true,
      "101": "ac_power_on",
      "103": "real_time_mode",
      "112": 3,
      "116": "97%"
    },
    "pending_state": {},
    "connected": true,
    "force_dps": [],
    "home_assistant": {
      "name": "Cleverio PF100",
      "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": "Cleverio PF100 Food shortage"
            },
            "last_changed": "2024-08-23T13:58:15.175525+00:00",
            "last_reported": "2024-08-23T13:58:15.175525+00:00",
            "last_updated": "2024-08-23T13:58:15.175525+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": "Cleverio PF100 Food blockage"
            },
            "last_changed": "2024-08-23T13:58:15.176442+00:00",
            "last_reported": "2024-08-23T13:58:15.176442+00:00",
            "last_updated": "2024-08-23T13:58:15.176442+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": "Cleverio PF100 Feeding"
            },
            "last_changed": "2024-08-23T13:58:15.177387+00:00",
            "last_reported": "2024-08-23T13:58:15.177387+00:00",
            "last_updated": "2024-08-23T13:58:15.177387+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": "2024-08-21T09:37:42.759710+00:00",
            "attributes": {
              "icon": "mdi:food-drumstick",
              "friendly_name": "Cleverio PF100 Quick Feed"
            },
            "last_changed": "2024-08-23T13:58:15.172863+00:00",
            "last_reported": "2024-08-23T13:58:15.172863+00:00",
            "last_updated": "2024-08-23T13:58:15.172863+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": "Cleverio PF100 Factory reset"
            },
            "last_changed": "2024-08-23T13:58:15.173575+00:00",
            "last_reported": "2024-08-23T13:58:15.173575+00:00",
            "last_updated": "2024-08-23T13:58:15.173575+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": "Cleverio PF100 Feed report"
            },
            "last_changed": "2024-08-23T13:58:15.174525+00:00",
            "last_reported": "2024-08-23T13:58:15.174525+00:00",
            "last_updated": "2024-08-23T13:58:15.174525+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": "Cleverio PF100 Manual feed"
            },
            "last_changed": "2024-08-23T13:58:15.183649+00:00",
            "last_reported": "2024-08-23T13:58:15.183649+00:00",
            "last_updated": "2024-08-23T13:58:15.183649+00:00"
          }
        },
        {
          "disabled": false,
          "disabled_by": null,
          "entity_category": null,
          "device_class": null,
          "original_device_class": "weight",
          "icon": null,
          "unit_of_measurement": "g",
          "state": {
            "entity_id": "sensor.cleverio_pf100_feeder_report_exact",
            "state": "9.0",
            "attributes": {
              "state_class": "measurement",
              "unit_of_measurement": "g",
              "device_class": "weight",
              "friendly_name": "Cleverio PF100 feeder report exact"
            },
            "last_changed": "2024-08-23T13:58:15.186951+00:00",
            "last_reported": "2024-08-23T13:58:15.186951+00:00",
            "last_updated": "2024-08-23T13:58:15.186951+00:00"
          }
        }
      ]
    }
  }
}

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": 1724424334748,
  "tid": "5aa0aaef615e11ef883136d89ae34f8e"
}

Product ID

wfkzyy0evslzsmoi

Product Name

Cleverio PF100

Information about how the device functions

Cat feeder.

Have a manual feed that give one portion (6g).

Possible to set meal_plan with:

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

FredrikM97 avatar Aug 23 '24 14:08 FredrikM97