https://github.com/slesinger/pybmr
Python library for controling BMR HC64 heating
https://github.com/slesinger/pybmr
czech-republic heating home-assistant
Last synced: 12 days ago
JSON representation
Python library for controling BMR HC64 heating
- Host: GitHub
- URL: https://github.com/slesinger/pybmr
- Owner: slesinger
- License: apache-2.0
- Created: 2019-09-21T09:49:21.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-17T14:16:39.000Z (8 months ago)
- Last Synced: 2025-03-28T12:38:11.122Z (30 days ago)
- Topics: czech-republic, heating, home-assistant
- Language: Python
- Homepage: https://shop.fenixgroup.cz/z4770-bmr-hc-64-ridici-jednotka
- Size: 72.3 KB
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# PyBmr
Python library for communication with BMR HC64 Heating Controller units.
### Features
- List, read and save heating circuits
- HDO reading
- List, read and set shutter blinds (experimental)Product website:
- https://bmr.cz/produkty/regulace-topeni/rnet
- https://bmr.cz/produkty/regulace-topeni/rt64## Install:
```
python3 -m pip install pybmr
```## Usage examples
### Create connection
```
from pybmr import pybmrbmr = pybmr.Bmr("http://192.168.1.5/", "username, "password")
```### Circuits
Get number of circuits:
```
numCircuits = bmr.getNumCircuits()
```Load circuit status:
```
circuit = bmr.getCircuit(0)
print(f"Circuit {circuit['name']}: temperature is {circuit['temperature']} °C, target temperature is {circuit['target_temperature']} °C")
```Load circuit schedules (what schedule is assigned to what day). It is possible to assign a different schedule for up to 21 days.
```
circuit_schedules = bmr.getCircuitSchedules(0)
print(f"Circuit 0 schedule for the first day is {circuit_schedules['day_schedules'][0]}")
```Save circuit schedules:
```
bmr.setCircuitSchedules(0, [0, 8])
```### Schedules
Load schedules:
```
schedules = bmr.getSchedules()
print(schedule[0]) # Print the name of first schedule
```Get schedule details:
```
schedule = bmr.getSchedule(0)
print(f"Schedule {schedule['name']} has timetable {schedule['timetable']}")
```Save schedule:
```
bmr.setSchedule(0, "New schedule name", [("00:00", 21), ("06:00", 23), ("21:00", 21)])
```Delete schedule:
```
bmr.deleteSchedule(0)
```### Summer mode
Get summer mode:
```
if bmr.getSummerMode():
print("Summer mode is ON")
else:
print("Summer mode is OFF")
```Set summer mode:
```
bmr.setSummerMode(True):
```Load summer mode assignments (which circuits will be affected by turning the
summer mode on):```
assignments = bmr.getSummerModeAssignments()
for circuit_id, value in enumerate(assignments):
if value:
print(f"Circuit {circuit_id} is assigned to summer mode.")
else:
print(f"Circuit {circuit_id} is NOT assigned to summer mode.")
```Add circuits to summer mode:
```
bmr.setSummerModeAssignments([0, 1, 2], True)
```Remove circuits from summer mode:
```
bmr.setSummerModeAssignments([0, 1, 2], False)
```### Low mode
Get low mode:
```
low_mode = bmr.getLowMode()
if low_mode['enabled']:
print(f"Low mode is turned ON since {low_mode['start_date']}, target temperature is {low_mode['temperature']}")
if low_mode['end_date']:
print(f"It will be turned off automatically on {low_mode['end_date']}")
```Turn the low mode ON, set temperature to 18°C:
```
bmr.setLowMode(True, 18)
```Turn the low mode ON and let it turn OFF automatically after 3 days:
```
bmr.setLowMode(True, 18, datetime.now(), datetime.now() + timedelta(days=3))
```Turn the low mode OFF:
```
bmr.setLowMode(False)
```Load low mode assignments (which circuits will be affected by turning the
low mode on):```
assignments = bmr.getLowModeAssignments()
for circuit_id, value in enumerate(assignments):
if value:
print(f"Circuit {circuit_id} is assigned to low mode.")
else:
print(f"Circuit {circuit_id} is NOT assigned to low mode.")
```Add circuits to low mode:
```
bmr.setLowModeAssignments([0, 1, 2, 6, 7, 8], True)
```Remove circuits from low mode:
```
bmr.setLowModeAssignments([0, 1, 2, 6, 7, 8], False)
```### HDO
Load HDO status:
```
hdo = bmr.getHDO()
if hdo:
print("HDO is currently ON")
else:
print("HDO is currently OFF")
```## Backup of BMR Controler Unit Configuration
There is a CLI tool that can be used to backup configuration of actual BMR Controler Unit. It can be used in automations or just as a remote management tool. For more information refer to https://github.com/dankeder/bmrcli