def get_payload(self): data = super(SetProgramMessage, self).get_payload() data += bytearray([py_day_to_cube_day(self.weekday)]) # the cube happily accepts less than 13 * 2 bytes for the schedules on a day # and will replace the the rest with "low temperature till midnight" schedules for schedule in self.program: result = pack_temp_and_time(schedule.temperature, schedule.end_minutes) rev_temp, rev_minutes = unpack_temp_and_time(result) #print("{0}°C, {1} results in {2:2X} {3:2X} ({2:08b} {3:08b}), revd: {4}°C, {5} minutes ({6} h)".format(schedule.temperature, schedule.end_minutes, result[0], result[1], rev_temp, rev_minutes, rev_minutes / 60.0)) data += result self.dump_bytes(data, "SetProgramMessage payload") return data
def test_pack_temp_and_time(self): self.assertEqual(pack_temp_and_time(16, datetime.time(6, 5)), bytearray([0x40, 0x49])) self.assertEqual(pack_temp_and_time(24, datetime.time(22, 0)), bytearray([0x61, 0x08]))