Skip to main content

Python library for communication with BMR HC64 Heating Controller units

Project description

PyBmr

Python library for communication with BMR HC64 Heating Controller units.

Product website:

Install:

python3 -m pip install pybmr

Usage examples

Create connection

from pybmr import pybmr

bmr = 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybmr-0.7.2.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

pybmr-0.7.2-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file pybmr-0.7.2.tar.gz.

File metadata

  • Download URL: pybmr-0.7.2.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for pybmr-0.7.2.tar.gz
Algorithm Hash digest
SHA256 1cee4d5478b94c7c2ff53ece2cc46f66e63b2ecb542400bbe685f3bcbe0a881e
MD5 15512f6d729bbabeb27363463fc125f9
BLAKE2b-256 5a75b4249e115575df1c779a8b0fb0ed012cc8702323cadc9bfb11e180a151a5

See more details on using hashes here.

File details

Details for the file pybmr-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: pybmr-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for pybmr-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d97501beec99b4010c21c5bc48010ee331447ab6410b49f8eaf509cc2b7dc8da
MD5 638b8bf8e20974156a0bbed32f9ec2c6
BLAKE2b-256 14b539d0744e676482955db98ff40a7529ae62f3b19f3772fe70b725cc0945b6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page