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