Skip to content

Instantly share code, notes, and snippets.

@sventiffe
Last active July 3, 2025 05:13
Show Gist options
  • Save sventiffe/788b25ff50a8b3cc2c3a33cac5576616 to your computer and use it in GitHub Desktop.
Save sventiffe/788b25ff50a8b3cc2c3a33cac5576616 to your computer and use it in GitHub Desktop.
lg150.yaml
# for debugging, modpoll -d 8 -a 20 -c 100 -0 -t 3 /dev/ttyUSB0 for holding
# for debugging, modpoll -d 8 -a 20 -c 100 -0 -t 4 /dev/ttyUSB0 for input
# get modpoll for rpi here: https://www.modbusdriver.com/modpoll.html
modbus:
- name: pichler_lg150
type: serial
port: /dev/ttyUSB0 # Muss entsprechend angepasst werden
baudrate: 19200
bytesize: 8
method: rtu
parity: E
stopbits: 1
delay: 0
message_wait_milliseconds: 30
timeout: 5
switches:
- name: "lg150_betriebsmodus"
slave: 20
address: 1
write_type: holding
command_on: 1 # Sommer
command_off: 2 # Winter
verify:
delay: 1
- name: "lg150_luftfeuchte_regelung"
slave: 20
address: 44
write_type: holding
command_on: 1
command_off: 0
verify:
delay: 1
sensors:
# holding
- name: "lg150_luftstufe"
unique_id: "lg150_luftstufe"
slave: 20
address: 2
input_type: holding
data_type: int16
- name: "lg150_lufstrom_stufe1"
unique_id: "lg150_luftstrom_stufe1"
unit_of_measurement: "m3/h"
slave: 20
address: 9
input_type: holding
data_type: int16
- name: "lg150_lufstrom_stufe2"
unique_id: "lg150_luftstrom_stufe2"
unit_of_measurement: "m3/h"
slave: 20
address: 10
input_type: holding
data_type: int16
- name: "lg150_lufstrom_stufe3"
unique_id: "lg150_luftstrom_stufe3"
unit_of_measurement: "m3/h"
slave: 20
address: 11
input_type: holding
data_type: int16
- name: "lg150_lufstrom_g"
unique_id: "lg150_lufstrom_g"
unit_of_measurement: "m3/h"
slave: 20
address: 12
input_type: holding
data_type: int16
- name: "lg150_abluft_disbalance"
unique_id: "lg150_abluft_disbalance"
unit_of_measurement: "%"
slave: 20
address: 13
input_type: holding
data_type: int16
offset: -50
- name: "lg150_zuluftstrom_temp_sollwert"
unique_id: "lg150_zuluftstrom_temp_sollwert"
unit_of_measurement: "°C"
slave: 20
address: 22
input_type: holding
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
- name: "lg150_luftfeuchte_sollwert"
unique_id: "lg150_luftfeuchte_sollwert"
unit_of_measurement: "%"
slave: 20
address: 45
input_type: holding
data_type: int16
state_class: measurement
- name: "lg150_zuluftstrom_abgesenkt_temp_sollwert"
unique_id: "lg150_zuluftstrom_abgesenkt_temp_sollwert"
unit_of_measurement: "°C"
slave: 20
address: 57
input_type: holding
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
# innput
- name: "lg150_firmware"
unique_id: "lg150_firmware"
slave: 20
address: 23
input_type: input
data_type: int16
precision: 1
scale: 0.1
- name: "lg150_model"
unique_id: "lg150_model"
slave: 20
address: 25
input_type: input
data_type: int16
- name: "lg150_room_temp_touchdisplay"
unique_id: "lg150_room_temp_touchdisplay"
unit_of_measurement: "°C"
slave: 20
address: 29
input_type: input
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
- name: "lg150_temp_frischluft" # 0.0
unique_id: "lg150_temp_aussenluft"
unit_of_measurement: "°C"
slave: 20
address: 30
input_type: input
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
- name: "lg150_temp_fortluft" # 3.0
unique_id: "lg150_temp_fortluft"
unit_of_measurement: "°C"
slave: 20
address: 31
input_type: input
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
- name: "lg150_temp_abluft" # 0.2
unique_id: "lg150_temp_abluft"
unit_of_measurement: "°C"
slave: 20
address: 32
input_type: input
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
- name: "lg150_temp_zuluft"
unique_id: "lg150_temp_zuluft"
unit_of_measurement: "°C"
slave: 20
address: 33
input_type: input
data_type: int16
offset: -100
precision: 1
scale: 0.1
state_class: measurement
device_class: temperature
- name: "lg150_zuluftdrehzahl"
unique_id: "lg150_zuluftdrehzahl"
unit_of_measurement: "rpm"
slave: 20
address: 39
input_type: input
data_type: int16
- name: "lg150_abluftdrehzahl"
unique_id: "lg150_abluftdrehzahl"
unit_of_measurement: "rpm"
slave: 20
address: 40
input_type: input
data_type: int16
- name: "lg150_zuluftstrom"
unique_id: "lg150_zuluftstrom"
unit_of_measurement: "m3/h"
slave: 20
address: 46
input_type: input
data_type: int16
state_class: measurement
device_class: volume_flow_rate
- name: "lg150_abluftstrom"
unique_id: "lg150_abluftstrom"
unit_of_measurement: "m3/h"
slave: 20
address: 47
input_type: input
data_type: int16
state_class: measurement
device_class: volume_flow_rate
- name: "lg150_reststandzeit_filter"
unique_id: "lg150_reststandzeit_filter"
unit_of_measurement: "h"
slave: 20
address: 50
input_type: input
data_type: uint16
- name: "lg150_bypassklappe_position" # 1=WRG, 2=Bypass, 3=Vorheiz, 4=Error
unique_id: "lg150_bypassklappe_position"
slave: 20
address: 51
input_type: input
state_class: measurement
- name: "lg150_co2_reg_out"
unique_id: "lg150_co2_reg_out"
unit_of_measurement: "%"
slave: 20
address: 56
input_type: input
data_type: int16
state_class: measurement
- name: "lg150_gesamtzeit_h_stufe_1"
unique_id: "lg150_gesamtzeit_h_stufe_1"
unit_of_measurement: "h"
slave: 20
address: 87
input_type: input
data_type: uint16
- name: "lg150_gesamtzeit_h_stufe_2"
unique_id: "lg150_gesamtzeit_h_stufe_2"
unit_of_measurement: "h"
slave: 20
address: 81
input_type: input
data_type: uint16
- name: "lg150_gesamtzeit_h_stufe_3"
unique_id: "lg150_gesamtzeit_h_stufe_3"
unit_of_measurement: "h"
slave: 20
address: 82
input_type: input
data_type: uint16
- name: "lg150_gesamtzeit_h_stufe_g"
unique_id: "lg150_gesamtzeit_h_stufe_g"
unit_of_measurement: "h"
slave: 20
address: 83
input_type: input
data_type: uint16
- name: "lg150_gesamtzeit_h"
unique_id: "lg150_gesamtzeit_h"
unit_of_measurement: "h"
slave: 20
address: 84
input_type: input
data_type: uint16
- name: "lg150_gesamtzeit_h_heizung"
unique_id: "lg150_gesamtzeit_h_heizung"
unit_of_measurement: "h"
slave: 20
address: 85
input_type: input
data_type: uint16
- name: "lg150_gesamtzeit_h_bypass"
unique_id: "lg150_gesamtzeit_h_bypass"
unit_of_measurement: "h"
slave: 20
address: 86
input_type: input
data_type: uint16
sensor:
- platform: template
sensors:
lg150_luftstrom_stufe1_render:
friendly_name: "Luftstrom Stufe 1"
unit_of_measurement: "m3/h"
value_template: "{{ (states('sensor.lg150_lufstrom_stufe1') | float * 10) | round(1) }}"
lg150_luftstrom_stufe2_render:
friendly_name: "Luftstrom Stufe 2"
unit_of_measurement: "m3/h"
value_template: "{{ (states('sensor.lg150_lufstrom_stufe2') | float * 10) | round(1) }}"
lg150_luftstrom_stufe3_render:
friendly_name: "Luftstrom Stufe 3"
unit_of_measurement: "m3/h"
value_template: "{{ (states('sensor.lg150_lufstrom_stufe3') | float * 10) | round(1) }}"
lg150_luftstrom_stufeg_render:
friendly_name: "Luftstrom Grundlüftung"
unit_of_measurement: "m3/h"
value_template: "{{ (states('sensor.lg150_lufstrom_g') | float * 10) | round(1) }}"
lg150_bypassklappe_position_render:
friendly_name: "Bypassklappe"
value_template: >-
{% set lg150_bypassklappe_position_mapper = {
1: 'WRG',
2: 'Bypass',
3: 'Vorheiz',
4: 'Error'} %}
{% set state = states('sensor.lg150_bypassklappe_position')|int %}
{{ lg150_bypassklappe_position_mapper[state] if state in lg150_bypassklappe_position_mapper else 'Unknown' }}
template:
- sensor:
- name: "lg150 Heizleistung"
unique_id: "lg150_heizleistung"
state_class: "measurement"
unit_of_measurement: "W"
device_class: power
state: >
{% set vorlauf = states('sensor.lg150_temp_zuluft') | float (0) %}
{% set ruecklauf = states('sensor.lg150_temp_abluft') | float %}
{% set durchfluss = states('sensor.lg150_zuluftstrom') | float %}
{{ ((vorlauf - ruecklauf) * durchfluss * 0.33 ) | round(1, default=0) }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment