Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

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

Request support for LSC Pet Feeder #2743

Open
jdeneef opened this issue Jan 6, 2025 · 0 comments
Open

Request support for LSC Pet Feeder #2743

jdeneef opened this issue Jan 6, 2025 · 0 comments
Labels
full_info All info needed was provided new device Unsupported device

Comments

@jdeneef
Copy link

jdeneef commented Jan 6, 2025

Log message

5-01-06 15:33:06.385 DEBUG (SyncWorker_10) [tinytuya.core] decrypted 3.x payload='{"dps":{"103":false},"t":1736173989}'
2025-01-06 15:33:06.386 DEBUG (SyncWorker_10) [tinytuya.core] payload type = <class 'str'>
2025-01-06 15:33:06.386 DEBUG (SyncWorker_10) [tinytuya.core] decoded results='{"dps":{"103":false},"t":1736173989}'
2025-01-06 15:33:06.386 DEBUG (SyncWorker_10) [tinytuya.core] status() received data={'dps': {'103': False}, 't': 1736173989}

Mostly this one:
2025-01-06 15:33:06.396 DEBUG (MainThread) [custom_components.tuya_local.device] Pet feeder received {"103": false, "full_poll": true}

Product ID

knpje5j2wsqlkhna

Product Name

LSC Pet Feeder with Camera

DPS information

thingpark output:
{
  "result": {
    "model": "{\"modelId\":\"000004bl7c\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"默认服务\",\"properties\":[{\"abilityId\":103,\"accessMode\":\"rw\",\"code\":\"basic_flip\",\"description\":\"设备设置页面-基本功能设置\\n使直播画面垂直翻转,true打开翻转,false关闭翻转\",\"extensions\":{\"iconName\":\"icon-setting\",\"attribute\":\"1024\"},\"name\":\"Flip\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":106,\"accessMode\":\"rw\",\"code\":\"motion_sensitivity\",\"description\":\"0-2,灵敏度依次增加;仅为灵敏度,0并不是关闭移动侦测报警;规定0为低灵敏度,1为中灵敏度,2为高灵敏度。\",\"extensions\":{\"iconName\":\"icon-setting\",\"attribute\":\"1024\"},\"name\":\"Motion detector sensitivity\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\"]}},{\"abilityId\":108,\"accessMode\":\"rw\",\"code\":\"basic_nightvision\",\"description\":\"0:自动\\n1:关\\n2:开\",\"extensions\":{\"iconName\":\"icon-setting\",\"attribute\":\"1024\"},\"name\":\"Night Vision\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\"]}},{\"abilityId\":109,\"accessMode\":\"ro\",\"code\":\"sd_storge\",\"description\":\"单位改为kb\\n---\\n3503775744|778977280|2718158848\\n其中第一字符串是总容量,第二个字符串是已使用的容量,第三个是剩余容量\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"获取存储卡容量\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":110,\"accessMode\":\"ro\",\"code\":\"sd_status\",\"description\":\"status:sd卡状态,1-正常,2-异常,3-空间不足,4-正在格式化,5-无SD卡;\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"存储卡状态\",\"typeSpec\":{\"type\":\"value\",\"max\":5,\"min\":1,\"scale\":0,\"step\":1}},{\"abilityId\":111,\"accessMode\":\"rw\",\"code\":\"sd_format\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"存储卡格式化\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":115,\"accessMode\":\"ro\",\"code\":\"movement_detect_pic\",\"description\":\"该功能实现请参考SDK\\n---------------\\n{\\\"dp_id\\\",\\\"bucket;object;key\\\"}/{\\\"dp_id\\\",\\\"bucket;object;\\\"}\\n\\nbucket:根文件夹;objcet:文件路径;key:加密\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"检测到移动\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":117,\"accessMode\":\"ro\",\"code\":\"sd_format_state\",\"description\":\"返回错误码:\\n-2000:SD卡正在格式化\\n-2001:SD卡格式化异常\\n-2002:无SD卡\\n-2003:SD卡错误\\n\\n//正数为格式化进度\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"格式化状态\",\"typeSpec\":{\"type\":\"value\",\"max\":200000,\"min\":-20000,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":134,\"accessMode\":\"rw\",\"code\":\"motion_switch\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"移动侦测\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":150,\"accessMode\":\"rw\",\"code\":\"record_switch\",\"description\":\"设备设置页面-存储卡设置\\nSD卡录像开关,true为打开,false为关闭\\n功能关闭时,不录像到SD卡\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"SD卡录像开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":151,\"accessMode\":\"rw\",\"code\":\"record_mode\",\"description\":\"设备设置页面-存储卡设置\\nSD卡录像模式选择,1为事件录像(检测到移动再录像到SD卡),2为连续录像\",\"extensions\":{\"iconName\":\"icon-setting\"},\"name\":\"录像模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"1\",\"2\"]}},{\"abilityId\":231,\"accessMode\":\"rw\",\"code\":\"feed_num\",\"description\":\"返回数值说明:0:投食失败,1-20为投食的数量,若下发的投食3分,都投成功了,则返回3,APP则显示投食成功。\",\"name\":\"手动投食\",\"typeSpec\":{\"type\":\"value\",\"max\":20,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":232,\"accessMode\":\"ro\",\"code\":\"food_weight\",\"description\":\"每份食物的重量,单位g\\t\",\"name\":\"每份食物重量\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":1,\"scale\":0,\"step\":1,\"unit\":\"g\"}},{\"abilityId\":233,\"accessMode\":\"ro\",\"code\":\"realtime_data\",\"description\":\"0:余粮不足 1:出粮口有异物\",\"name\":\"实时数据\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\"]}},{\"abilityId\":234,\"accessMode\":\"rw\",\"code\":\"history_data\",\"description\":\"\",\"name\":\"历史记录\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":235,\"accessMode\":\"rw\",\"code\":\"feed_voice_record\",\"description\":\"1:开启录音\\n0:关闭录音\",\"name\":\"短音录制\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\"]}},{\"abilityId\":236,\"accessMode\":\"rw\",\"code\":\"schedule\",\"description\":\"面板将一个单任务用15个字节表示,然后转为string类型下发给设备端。前9位为有效位,后6位000000。\\n注意:设备端收到指令后先转换格式,byte2~byte8转为十进制整型数,byte0~byte1按照十六进制处理。\",\"name\":\"定时\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}}]}]}"
  },
  "success": true,
  "t": 1736175665377,
  "tid": "0d7f5a6dcc3f11efa76ab217c6c149bc"
}
Translated and in json.
{
  "result": {
    "model": {
      "modelId": "000004bl7c",
      "services": [
        {
          "actions": [],
          "code": "",
          "description": "",
          "events": [],
          "name": "Default service",
          "properties": [
            {
              "abilityId": 103,
              "accessMode": "rw",
              "code": "basic_flip",
              "description": "Device settings page - basic function settings\\nFlip the live screen vertically, true turns on flipping, false turns off flipping ",
              "extensions": {
                "iconName": "icon-setting",
                "attribute": "1024"
              },
              "name": "Flip",
              "typeSpec": {
                "type": "bool"
              }
            },
            {
              "abilityId": 106,
              "accessMode": "rw",
              "code": "motion_sensitivity",
              "description": "0-2, the sensitivity increases in sequence; it is only the sensitivity, 0 does not turn off the motion detection alarm; it is stipulated that 0 is low sensitivity, 1 is medium sensitivity, and 2 is high sensitivity. ",
              "extensions": {
                "iconName": "icon-setting",
                "attribute": "1024"
              },
              "name": "Motion detector sensitivity",
              "typeSpec": {
                "type": "enum",
                "range": [
                  "0",
                  "1",
                  "2"
                ]
              }
            },
            {
              "abilityId": 108,
              "accessMode": "rw",
              "code": "basic_ nightvision",
              "description": "0:Auto\\n1:Off\\n2:On",
              "extensions": {
                "iconName": "icon-setting",
                "attribute": "1024"
              },
              "name": "Night Vision",
              "typeSpec": {
                "type": "enum",
                "range": [
                  "0",
                  "1",
                  "2"
                ]
              }
            },
            {
              "abilityId": 109,
              "accessMode": "ro",
              "code": "sd_storge",
              "description": "The unit is changed to kb\\n---\\n3503775744|778977280|2718158848\\nThe first string is the total capacity, the second string is the used capacity, and the third is the remaining capacity",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name ": "Get memory card capacity",
              "typeSpec": {
                "type": "string",
                "maxlen": 255
              }
            },
            {
              "abilityId": 110,
              "accessMode": "ro",
              "code": "sd_status",
              "description": "status: SD card status, 1-normal, 2-abnormal, 3-insufficient space, 4-formatting, 5-no SD card;",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name": "Memory card status",
              "typeSpec": {
                "type": "value",
                "max": 5,
                "min": 1,
                "scale": 0,
                "step": 1
              }
            },
            {
              "abilityId": 111,
              "accessMode": "rw",
              "code": "sd_format",
              "description": "",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name": "Memory card format",
              "typeSpec": {
                "type": "bool"
              }
            },
            {
              "abilityId": 115,
              "accessMode": "ro",
              "code": "movement_d etect_pic",
              "description": "For this function implementation, please refer to SDK\\n---------------\\n{'dp_id','bucket;object;key'}/{'dp_id','bucket;object;'}\\n\\nbucket:root folder;objcet:file path;key:encryption",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name": "Motion detected",
              "typeSpec": {
                "type": "raw",
                "maxlen": 128
              }
            },
            {
              "abilityId": 117,
              "accessMode": "ro",
              "code": "sd_format_state",
              "description": "Return error code:\\n-2000: SD card is being formatted\\n-2001: SD card formatting exception\\n-2002: No SD card\\n-2003: SD card error\\n\\n//Positive number is formatting progress",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name": "Formatting status",
              "typeSpec": {
                "type": "value",
                "max": 200000,
                "min ": -20000,
                "scale": 0,
                "step": 1,
                "unit": ""
              }
            },
            {
              "abilityId": 134,
              "accessMode": "rw",
              "code": "motion_switch",
              "description": "",
              "extensi ons": {
                "iconName": "icon-setting"
              },
              "name": "Motion detection",
              "typeSpec": {
                "type": "bool"
              }
            },
            {
              "abilityId": 150,
              "accessMode": "rw",
              "code": "recor d_switch",
              "description": "Device Settings Page - Memory Card Settings\\nSD card recording switch, true is on, false is off\\nWhen the function is off, no recording is done to the SD card",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name": "SD card recording switch",
              "typeSpec": {
                "type": "bool"
              }
            },
            {
              "abilityId": 151,
              "accessMode": "rw",
              "code": "record_mode",
              "description": "Device Settings Page - Memory Card Settings\\nSD card recording mode mode selection, 1 is event recording (detecting motion and then recording to SD card), 2 is continuous recording",
              "extensions": {
                "iconName": "icon-setting"
              },
              "name": "Recording mode",
              "typeSpec": {
                "type": "enum",
                "range": [
                  "1",
                  "2"
                ]
              }
            },
            {
              "abilityId": 231,
              "accessMode": "rw",
              "code": "feed_num",
              "description": "Return value description: 0: feeding failure, 1-20 is the number of feedings. If all 3 points of feeding are successfully sent, 3 will be returned and the APP will show that the feeding is successful. ",
              "name": "Manual feeding",
              "typeSpec": {
                "type": "value",
                "max": 20,
                "min": 0,
                "scale": 0,
                "step": 1,
                "unit": ""
              }
            },
            {
              "abilityId": 232,
              "accessMode": "ro",
              "code": "food_weight",
              "description": "The weight of each portion of food, in g\\ t",
              "name": "Weight of each serving",
              "typeSpec": {
                "type": "value",
                "max": 100,
                "min": 1,
                "scale": 0,
                "step": 1,
                "unit": "g"
              }
            },
            {
              "abilityId": 233,
              "accessMode": "ro",
              "code": "realtime_data",
              "description": "0: Insufficient food 1: There is foreign matter at the grain outlet",
              "name": "Real-time data",
              "typeSpec": {
                "type": "enum",
                "range": [
                  "0",
                  "1"
                ]
              }
            },
            {
              "abilityId": 234,
              "accessMode": "rw",
              "code": "history_data",
              "description": "",
              "name": "Historical record",
              "typeSpec": {
                "type": "bool"
              }
            },
            {
              "abilityId": 235,
              "accessMode": "rw w",
              "code": "feed_voice_record",
              "description": "1: Enable recording\\n0: Disable recording",
              "name": "Short voice recording",
              "typeSpec": {
                "type": "enum",
                "range": [
                  "0",
                  "1"
                ]
              }
            },
            {
              "abilityId": 236,
              "accessMode": "rw",
              "code": "schedule",
              "description": "The panel represents a single task with 15 bytes, and then converts it to string type and sends it to the device. The first 9 bits are valid bits, and the last 6 bits are 000000. \\nNote: After receiving the command, the device first converts the format, converts byte2~byte8 to decimal integers, and processes byte0~byte1 as hexadecimal. ",
              "name": "Timing",
              "typeSpec": {
                "type": "string",
                "maxlen": 255
              }
            }
          ]
        }
      ]
    }
  },
  "success": true,
  "t": 1734613581780,
  "tid": "0b1d1f2cbe0a11efae3a529172fa76b1"
}

Information about how the device functions

Only really working and interesting items id DPS 231, setting this to a number results in the number of feeds, reading it back gives a result, where 0 is error, and the number of feeds is success. The camera is not working, need to use the tuya cloud to generate unique link. Other buttons are working for me with custom yaml file, however eg dps 103 always flips back, dunno, and not really interesting since I can't see the camera anyways.

Note that it identifies as 3.3 protocol, but only works with 3.2(!)

LSC pet feeder @ Action NL

Edit: fixed a typo, added link to shop and hid the translated json for easy reading

@jdeneef jdeneef added the new device Unsupported device label Jan 6, 2025
@make-all make-all added the full_info All info needed was provided label Jan 6, 2025
@make-all make-all moved this to 🔖 Ready in Tuya Local Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
full_info All info needed was provided new device Unsupported device
Projects
Status: 🔖 Ready
Development

No branches or pull requests

2 participants