async def get_reports(self):
        cmd = OTGW_CMD_REPORT
        reports = {}
        for value in OTGW_REPORTS.keys():
            ret = await self._wait_for_cmd(cmd, value)
            if ret is None:
                reports[value] = None
                continue
            reports[value] = ret[2:]
        status = {
            OTGW_ABOUT: reports.get(OTGW_REPORT_ABOUT),
            OTGW_BUILD: reports.get(OTGW_REPORT_BUILDDATE),
            OTGW_CLOCKMHZ: reports.get(OTGW_REPORT_CLOCKMHZ),
            OTGW_MODE: reports.get(OTGW_REPORT_GW_MODE),
            OTGW_SMART_PWR: reports.get(OTGW_REPORT_SMART_PWR),
            OTGW_THRM_DETECT: reports.get(OTGW_REPORT_THERMOSTAT_DETECT),
            OTGW_DHW_OVRD: reports.get(OTGW_REPORT_DHW_SETTING),
        }
        ovrd_mode = reports.get(OTGW_REPORT_SETPOINT_OVRD)
        if ovrd_mode is not None:
            ovrd_mode = str.upper(ovrd_mode[0])
            status.update({OTGW_SETP_OVRD_MODE: ovrd_mode})
        gpio_funcs = reports.get(OTGW_REPORT_GPIO_FUNCS)
        if gpio_funcs is not None:
            status.update({
                OTGW_GPIO_A: int(gpio_funcs[0]),
                OTGW_GPIO_B: int(gpio_funcs[1]),
            })
        led_funcs = reports.get(OTGW_REPORT_LED_FUNCS)
        if led_funcs is not None:
            status.update({
                OTGW_LED_A: led_funcs[0],
                OTGW_LED_B: led_funcs[1],
                OTGW_LED_C: led_funcs[2],
                OTGW_LED_D: led_funcs[3],
                OTGW_LED_E: led_funcs[4],
                OTGW_LED_F: led_funcs[5],
            })
        tweaks = reports.get(OTGW_REPORT_TWEAKS)
        if tweaks is not None:
            status.update({
                OTGW_IGNORE_TRANSITIONS: int(tweaks[0]),
                OTGW_OVRD_HB: int(tweaks[1]),
            })
        sb_temp = reports.get(OTGW_REPORT_SETBACK_TEMP)
        if sb_temp is not None:
            status.update({OTGW_SB_TEMP: float(sb_temp)})
        vref = reports.get(OTGW_REPORT_VREF)
        if vref is not None:
            status.update({OTGW_VREF: int(vref)})
        if (ovrd_mode is not None and ovrd_mode != OTGW_SETP_OVRD_DISABLED):
            status[DATA_ROOM_SETPOINT_OVRD] = float(
                reports[OTGW_REPORT_SETPOINT_OVRD][1:])
        self._update_status(status)
        return dict(self._protocol.status)