def write_to(self, driver: SH1106_I2C):
        from model import OP_MODE_OFF, STATE_HEAT

        is_heating = (self.data.state == STATE_HEAT)

        wri_t = Writer(driver, freesans40, verbose=False)
        wri_t.set_clip(False, False, False)  # Char wrap
        Writer.set_textpos(driver, 16 + ROW_OFFSET, 26)
        if is_heating:
            driver.fill_rect(0, 14 + ROW_OFFSET, driver.width - 10, wri_t.height(), 1)
        wri_t.printstring(str(int(self.data.current_temperature)) + ".", invert=is_heating)

        wri_t_s = Writer(driver, freesans23, verbose=False)
        wri_t_s.set_clip(False, False, False)  # Char wrap
        Writer.set_textpos(driver, 29 + ROW_OFFSET, 85)
        wri_t_s.printstring(str(self.data.current_temperature)[-1:], invert=is_heating)

        if is_heating:
            driver.fill_rect(0, 52 + ROW_OFFSET, driver.width, 4, 0)
            driver.text("H", driver.width - 8, 16 + ROW_OFFSET)
            driver.text("E", driver.width - 8, 16 + 9 + ROW_OFFSET)
            driver.text("A", driver.width - 8, 16 + 9 * 2 + ROW_OFFSET)
            driver.text("T", driver.width - 8, 16 + 9 * 3 + ROW_OFFSET)

        driver.text("{0:.1f}%RH".format(self.data.sensor_sample.h), 0, ROW_OFFSET)
        pressure_str = "{0:.1f}kPa".format(self.data.sensor_sample.p / 10)
        driver.text(pressure_str, driver.width - len(pressure_str) * 8, 0 + ROW_OFFSET)
        driver.text("room", driver.height - 16, 56 + ROW_OFFSET)
        if self.data.operation_mode == OP_MODE_OFF:
            driver.text("OFF", driver.width - 24, 20 + ROW_OFFSET)
    def write_to(self, driver: SH1106_I2C):
        from model import ATTR_OP_MODE

        driver.text("set", int(driver.width / 2) - 12, 56 + ROW_OFFSET)
        driver.fill_rect(0, ROW_OFFSET, driver.width, 2, 1)  # top
        driver.fill_rect(0, ROW_OFFSET, 2, driver.height, 1)  # left
        driver.fill_rect(driver.width - 2, ROW_OFFSET, 2, driver.height, 1)  # right
        driver.fill_rect(0, driver.height - 2 + ROW_OFFSET, int(driver.width / 2) - 12 - 4, 2, 1)  # bottom-left
        driver.fill_rect(int(driver.width / 2) + 12 + 4,
                         driver.height - 2 + ROW_OFFSET
                         , int(driver.width / 2) - 12 - 4, 2, 1)  # bottom-right

        wri = Writer(driver, freesans40, verbose=False)
        if self.lc.last_item == ATTR_OP_MODE:
            text = self.lc.operation_mode.upper()
            text_w = wri.stringlen(text)
            Writer.set_textpos(driver, 16 + ROW_OFFSET, int((driver.width - text_w) / 2) + 2)
            wri.printstring(text)
        else:
            Writer.set_textpos(driver, 16 + ROW_OFFSET, 26)
            wri.printstring("{0:.1f}".format(self.lc.temperature))