Oxygen.lt ventilation unit integration

I have found myself in a home with oxygen.lt ventilation unit that has a proprietary mobile app for control. Opening device IP in a browser presents a simple UI for information and control.

I have come up with this simple configuration using RESTful integration for geting the flow/temperature values and fow control. Hope someone finds this helpful.

/homeassistant/packages/oxygen.yaml

rest:
  - scan_interval: 30
    resource: http://192.168.4.1/status
    binary_sensor:
      - name: "Oxygen Power"
        value_template: "{{ value.split('<br>')[0].split(' ')[1] == 'ON' }}"
    sensor:
      - name: "Oxygen Current Temperature"
        value_template: "{{ value.split('<br>')[1].split(' ')[2] | int }}"
        unit_of_measurement: "°C"
        device_class: "temperature"
      - name: "Oxygen Set Temperature"
        value_template: "{{ value.split('<br>')[2].split(' ')[2] | int }}"
        unit_of_measurement: "°C"
        device_class: "temperature"
      - name: "Oxygen Flow"
        value_template: "{{ value.split('<br>')[3].split(' ')[1] | int }}"
        unit_of_measurement: "%"
        
rest_command:
  oxygen_set_flow:
    url: "http://192.168.4.1/cmd?flowset={{flow}}"
    method: GET
    
input_number:
  oxygen_set_flow:
    initial: 50
    min: 0
    max: 100
    step: 5
    unit_of_measurement: "%"

/homeassistant/configuration.yaml

homeassistant:
  ...
  packages: !include_dir_named packages

Automation

alias: Set Oxygen Flow
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_number.oxygen_set_flow
conditions: []
actions:
  - action: rest_command.oxygen_set_flow
    data:
      flow: "{{ states.input_number.oxygen_set_flow.state }}"
  - action: homeassistant.update_entity
    data:
      entity_id:
        - sensor.oxygen_flow
mode: single

And the dashboard:

views:
  - cards: []
    type: sections
    icon: mdi:home
    sections:
      - type: grid
        cards:
          - type: heading
            icon: ''
            heading: Heat recovery ventilation
            heading_style: title
          - type: tile
            entity: sensor.oxygen_flow
            features_position: bottom
            vertical: false
            icon: mdi:fan
            grid_options:
              columns: full
            state_content:
              - state
              - last_changed
            name: Current Air Flow
          - type: history-graph
            entities:
              - entity: sensor.oxygen_flow
                name: Current Air Flow
          - features:
              - type: numeric-input
                style: buttons
            type: tile
            entity: input_number.oxygen_set_flow
            features_position: inline
            vertical: false
            show_entity_picture: false
            name: Desired Air Flow
            icon: mdi:fan
          - type: entities
            entities:
              - entity: sensor.oxygen_current_temperature
                secondary_info: last-changed
                name: Current Temperature
              - entity: sensor.oxygen_set_temperature
                name: Desired Temperature
                secondary_info: last-changed
    max_columns: 4
1 Like