question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

miio_cloud_records for mmgg.feeder.petfeeder

See original GitHub issue

Looking for some clarity over miio_cloud_records.

I’ve got a device that pulls data from https://api.io.mi.com/app/user/get_user_device_data (My beloved petfeeder 😆 )

Request:

{
    "accessKey": "xxx",
    "did": "xxx",
    "group": "raw",
    "key": "feedStats",
    "limit": 1000,
    "time_end": 1643673599,
    "time_start": 1640995200,
    "type": "event",
    "uid": "xxx"
}

Response:

{
    "code": 0,
    "message": "ok",
    "result": [
        {
            "did": "xxx",
            "key": "feedStats",
            "time": 1641198610,
            "type": "event",
            "uid": "xxx",
            "value": "[8,4]"
        },
        {
            "did": "xxx",
            "key": "feedStats",
            "time": 1641112211,
            "type": "event",
            "uid": "xxx",
            "value": "[8,4]"
        },
        {
            "did": "xxx",
            "key": "feedStats",
            "time": 1641025812,
            "type": "event",
            "uid": "xxx",
            "value": "[8,4]"
        }
    ]
}

So the plugin sends start+end time of day, week, month then iterates the response and adds up the first entry in “value”.

var value = JSON.parse(item.value)[0];

(Wonder what the 2nd was meant for…meh)

How best to implement this within the current component? (easy of course in Python, but I don’t think we want to have a load of per device hacks)

Issue Analytics

  • State:open
  • Created 2 years ago
  • Comments:35 (15 by maintainers)

github_iconTop GitHub Comments

2reactions
Wh1teratcommented, Jan 6, 2022

Thanks @al-one

It’s a good point with regard to the root sensor, @al-one is there anyway to override which attribute is used for state? This goes back to my comment on is there a way to disable miot for a mixed miio/miot device (since the spec is almost 100% broken for this device).

total_increasing doesn’t make sense for a daily stats:

total_increasing, a monotonically increasing total, e.g. an amount of consumed gas, water or energy. When supported, the accumulated growth of the sensor’s value since it was first added is updated hourly.

This is how I’ve got the feeder displayed currently:

Screenshot 2022-01-06 at 15 25 21

config:

input_number:
  mmgg_petfeeder_bf89_feed_amount:
    name: "Pet Feeder Amount"
    min: 1
    max: 30
    step: 1
    unit_of_measurement: portion(s)
    mode: slider

template:
  sensor:
    - name: mmgg_petfeeder_bf89_food_level_1
      unique_id: "mmgg_petfeeder_bf89_food_level_1"
      icon: mdi:bowl
      state: |
        {% set sta = states('sensor.mmgg_petfeeder_bf89_food_status') | default | int(-1) -%}
        {% set lst = ['normal','low','empty'] -%}
        {{ lst[sta] | default('unknown') }}

switch:
  - platform: template
    switches:
      mmgg_petfeeder_bf89_wifi_led_1:
        friendly_name: "Pet Feeder Wifi Status led"
        unique_id: "mmgg_petfeeder_bf89_wifi_led_1"
        value_template: "{{ is_state('binary_sensor.mmgg_petfeeder_bf89_wifi_led', 'on') }}"
        icon_template: >
          {% if is_state('binary_sensor.mmgg_petfeeder_bf89_wifi_led', 'on')  %}
            mdi:led-on
          {% else %}
            mdi:led-off
          {% endif %}
        turn_on:
          service: script.mmgg_feeder_set_wifi_led
          data:
            entity_id: sensor.mmgg_petfeeder_bf89_pet_feeder
            state: true
        turn_off:
          service: script.mmgg_feeder_set_wifi_led
          data:
            entity_id: sensor.mmgg_petfeeder_bf89_pet_feeder
            state: false
      mmgg_petfeeder_bf89_feed_plan_1:
        friendly_name: "Pet Feeder Automatic Feeding"
        unique_id: "mmgg_petfeeder_bf89_feed_plan_1"
        icon_template: mdi:refresh-auto
        value_template: "{{ is_state('binary_sensor.mmgg_petfeeder_bf89_feed_plan','on') }}"
        turn_on:
          service: script.mmgg_feeder_set_auto_feed
          data:
            entity_id: sensor.mmgg_petfeeder_bf89_pet_feeder
            state: true
        turn_off:
          service: script.mmgg_feeder_set_auto_feed
          data:
            entity_id: sensor.mmgg_petfeeder_bf89_pet_feeder
            state: false
lock:
  - platform: template
    name: mmgg_petfeeder_bf89_key_lock_1
    unique_id: "mmgg_petfeeder_bf89_key_lock_1"
    value_template: "{{ is_state('binary_sensor.mmgg_petfeeder_bf89_key_lock', 'off') }}"
    lock:
      service: script.mmgg_feeder_set_key_lock
      data:
        entity_id: sensor.mmgg_petfeeder_bf89_pet_feeder
        state: true
    unlock:
      service: script.mmgg_feeder_set_key_lock
      data:
        entity_id: sensor.mmgg_petfeeder_bf89_pet_feeder
        state: false

scripts:

mmgg_feeder_dispense:
  mode: queued
  alias: '[PetFeeder] - Dispense Food'
  description: Dispenses food from the feeder
  icon: mdi:bowl-mix
  fields:
    entity_id:
      description: ID of the PetFeeder
      required: true
      example: sensor.mmgg_petfeeder_bf89_pet_feeder
      selector:
        entity:
          integration: xiaomi_miot
          domain: sensor
    units:
      name: units
      description: Number of units to dispense
      required: false
      default: 1
      example: '1'
      selector:
        number:
          min: 1
          max: 30
          step: 1
          unit_of_measurement: units(s)
          mode: slider
    units_id:
      name: units_id
      description: ID for input_number holding portion value
      example: input_number.mmgg_petfeeder_bf89_feed_amount
      required: false
      selector:
        entity:
          domain: input_number
  sequence:
  - service: xiaomi_miot.send_command
    data_template:
      entity_id: '{{ entity_id }}'
      method: outfood
      params:
      - '{{ expand(units_id)[0].state | int(0) }}'
  max: 10
mmgg_feeder_reset_dryer:
  mode: single
  alias: '[PetFeeder] - Reset Desicant Age'
  description: Resets the descicant age, use when replaced
  icon: mdi:calendar-clock
  fields:
    entity_id:
      description: ID of the PetFeeder
      required: true
      example: sensor.mmgg_petfeeder_bf89_pet_feeder
      selector:
        entity:
          integration: xiaomi_miot
          domain: sensor
  sequence:
  - service: xiaomi_miot.send_command
    data_template:
      entity_id: '{{ entity_id }}'
      method: resetdryer
      params: []
mmgg_feeder_set_key_lock:
  mode: single
  alias: '[PetFeeder] - Lock Dispense Food Button'
  description: Lock Dispense Food Button
  icon: mdi:gesture-tap-button
  fields:
    entity_id:
      description: ID of the PetFeeder
      required: true
      example: sensor.mmgg_petfeeder_bf89_pet_feeder
      selector:
        entity:
          integration: xiaomi_miot
          domain: sensor
    state:
      description: Status
      required: true
      default: false
      example: 'false'
      selector:
        boolean:
  sequence:
  - service: xiaomi_miot.send_command
    data_template:
      entity_id: '{{ entity_id }}'
      method: keylock
      params:
      - '{{ not state | int }}'
mmgg_feeder_set_wifi_led:
  mode: single
  alias: '[PetFeeder] - Set WiFi indicator state '
  description: Turn on/off WiFi status led state
  icon: mdi:led-on
  fields:
    entity_id:
      description: ID of the PetFeeder
      required: true
      example: sensor.mmgg_petfeeder_bf89_pet_feeder
      selector:
        entity:
          integration: xiaomi_miot
          domain: sensor
    state:
      description: Status
      required: true
      default: false
      example: 'false'
      selector:
        boolean:
  sequence:
  - service: xiaomi_miot.send_command
    data_template:
      entity_id: '{{ entity_id }}'
      method: wifiledon
      params:
      - '{{ state | int }}'
mmgg_feeder_set_auto_feed:
  mode: single
  alias: '[PetFeeder] - Set automatic feeding state '
  description: Turn on/off automatic feeding
  icon: mdi:clock
  fields:
    entity_id:
      description: ID of the PetFeeder
      required: true
      example: sensor.mmgg_petfeeder_bf89_pet_feeder
      selector:
        entity:
          integration: xiaomi_miot
          domain: sensor
    state:
      description: Status
      required: true
      default: true
      example: 'true'
      selector:
        boolean:
  sequence:
  - service: xiaomi_miot.send_command
    data_template:
      entity_id: '{{ entity_id }}'
      method: stopfeed
      params:
      - '{{ not state | int }}'
1reaction
al-onecommented, Jan 21, 2022

however I wonder if it’s worth storing extend_miot_specs externally?

That’s what I was thinking too, maybe migrate them to a yaml file.


Call action for miio2miot was fixed in https://github.com/al-one/hass-xiaomi-miot/commit/3daaaeb67d45bbf95a99c22772922b6426f85ca8.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Pet Feeder (mmgg.feeder.petfeeder) · Issue #220 - GitHub
Hi, I have the Mijia branded pet feeder (XWPF01MG) ... appear to be using miio locally, it's all between feeder <> xiaomi cloud...
Read more >
XIAOWAN Smart Pet Feeder - Xiaomi Miot Spec
XIAOWAN Smart Pet Feeder (mmgg.feeder.spec) 小米/米家设备型号、使用说明书查询工具,米家智能家居产品大全,Xiaomi MIoT Spec 规格查询.
Read more >
Xiaomi Wifi devices (Mi IO) - Bindings - openHAB
Device ThingType Device Model Supported AUX Smart Air Conditioner miio:unsupported aux.aircondition.v1 No Mi Air Frying Pan miio:basic careli.fryer.maf01 Experimental Mi Smart Air Fryer (3.5L) miio:basic careli.fryer.maf02...
Read more >
EZMioo Automatic Cat Feeder, Pet Feeders, Auto Robotics ...
EZMioo Automatic Cat Feeder, Pet Feeders, Auto Robotics Dog Food Dispenser with Stainless Steel Food Bowl, Timed Cat Feeder, 1-4 Meals per Day...
Read more >
IfA - River Thames Conditions - Environment Agency - GOV.UK
Valletta fc tickets, Major record label a&r contacts, Bass fishing molalla river ... Cosinus taintignies 2012, Ko je vladimir vukcevic, Lns bar feeder...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found