"""
Class object for AlkoDevice
Documentation: https://github.com/jonkristian/pyalko

Generated by generator/generator.py - 2024-06-22 16:23:41.214380
"""
from .base import AlkoBase, AlkoBaseClient


class Thingattributes(AlkoBase):

    @property
    def thingName(self):
        return self.attributes.get("thingName", "")

    @property
    def thingType(self):
        return self.attributes.get("thingType", "")

    @property
    def articleNumber(self):
        return self.attributes.get("articleNumber", "")

    @property
    def serialNumber(self):
        return self.attributes.get("serialNumber", "")

    @property
    def firmwareWifi(self):
        return self.attributes.get("firmwareWifi", "")

    @property
    def hardwareVersionWifi(self):
        return self.attributes.get("hardwareVersionWifi", "")

    @property
    def firmwareMain(self):
        return self.attributes.get("firmwareMain", "")

    @property
    def firmwareMainLocalization(self):
        return self.attributes.get("firmwareMainLocalization", "")

    @property
    def serialNumberMain(self):
        return self.attributes.get("serialNumberMain", "")

    @property
    def hardwareVersionMain(self):
        return self.attributes.get("hardwareVersionMain", "")

    @property
    def thingModel(self):
        return self.attributes.get("thingModel", "")

    @property
    def firmwareWifiDriver(self):
        return self.attributes.get("firmwareWifiDriver", "")

    @property
    def serialNumberWifi(self):
        return self.attributes.get("serialNumberWifi", "")

    @property
    def fotaMode(self):
        return self.attributes.get("fotaMode", "")

    @property
    def betatester(self):
        return self.attributes.get("betatester", "")


class Accessinformation(AlkoBase):

    @property
    def accessId(self):
        return self.attributes.get("accessId", "")

    @property
    def thingName(self):
        return self.attributes.get("thingName", "")

    @property
    def userId(self):
        return self.attributes.get("userId", "")

    @property
    def idpAccountId(self):
        return self.attributes.get("idpAccountId", "")

    @property
    def userEmail(self):
        return self.attributes.get("userEmail", "")

    @property
    def accessAlias(self):
        return self.attributes.get("accessAlias", "")

    @property
    def accessAdmin(self):
        return self.attributes.get("accessAdmin", "")

    @property
    def accessCreated(self):
        return self.attributes.get("accessCreated", "")


class Accesses(AlkoBase):

    @property
    def accessId(self):
        return self.attributes.get("accessId", "")

    @property
    def thingName(self):
        return self.attributes.get("thingName", "")

    @property
    def userId(self):
        return self.attributes.get("userId", "")

    @property
    def idpAccountId(self):
        return self.attributes.get("idpAccountId", "")

    @property
    def userEmail(self):
        return self.attributes.get("userEmail", "")

    @property
    def accessAlias(self):
        return self.attributes.get("accessAlias", "")

    @property
    def accessAdmin(self):
        return self.attributes.get("accessAdmin", "")

    @property
    def accessCreated(self):
        return self.attributes.get("accessCreated", "")


class ThingstateStateDesired(AlkoBase):
    pass  # No properties defined

class ThingstateStateReportedOperationerror(AlkoBase):

    @property
    def code(self):
        return self.attributes.get("code", "")

    @property
    def type(self):
        return self.attributes.get("type", "")

    @property
    def description(self):
        return self.attributes.get("description", "")


class ThingstateStateReportedLanguagesettings(AlkoBase):

    @property
    def selected(self):
        return self.attributes.get("selected", "")

    @property
    def supported(self):
        return self.attributes.get("supported", [])


class ThingstateStateReportedMowingwindowsMondayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsMondayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsMonday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsMondayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsMondayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindowsTuesdayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsTuesdayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsTuesday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsTuesdayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsTuesdayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindowsWednesdayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsWednesdayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsWednesday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsWednesdayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsWednesdayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindowsThursdayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsThursdayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsThursday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsThursdayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsThursdayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindowsFridayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsFridayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsFriday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsFridayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsFridayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindowsSaturdayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsSaturdayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsSaturday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsSaturdayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsSaturdayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindowsSundayWindow1(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsSundayWindow2(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")


class ThingstateStateReportedMowingwindowsSunday(AlkoBase):

    @property
    def window_1(self):
        return ThingstateStateReportedMowingwindowsSundayWindow1(self.attributes.get("window_1", {}))

    @property
    def window_2(self):
        return ThingstateStateReportedMowingwindowsSundayWindow2(self.attributes.get("window_2", {}))


class ThingstateStateReportedMowingwindows(AlkoBase):

    @property
    def monday(self):
        return ThingstateStateReportedMowingwindowsMonday(self.attributes.get("monday", {}))

    @property
    def tuesday(self):
        return ThingstateStateReportedMowingwindowsTuesday(self.attributes.get("tuesday", {}))

    @property
    def wednesday(self):
        return ThingstateStateReportedMowingwindowsWednesday(self.attributes.get("wednesday", {}))

    @property
    def thursday(self):
        return ThingstateStateReportedMowingwindowsThursday(self.attributes.get("thursday", {}))

    @property
    def friday(self):
        return ThingstateStateReportedMowingwindowsFriday(self.attributes.get("friday", {}))

    @property
    def saturday(self):
        return ThingstateStateReportedMowingwindowsSaturday(self.attributes.get("saturday", {}))

    @property
    def sunday(self):
        return ThingstateStateReportedMowingwindowsSunday(self.attributes.get("sunday", {}))


class ThingstateStateReportedSituationflags(AlkoBase):

    @property
    def operationPermitted(self):
        return self.attributes.get("operationPermitted", "")

    @property
    def batteryWeak(self):
        return self.attributes.get("batteryWeak", "")

    @property
    def batteryFailure(self):
        return self.attributes.get("batteryFailure", "")

    @property
    def batteryWeakSticky(self):
        return self.attributes.get("batteryWeakSticky", "")

    @property
    def mowingWindow(self):
        return self.attributes.get("mowingWindow", "")

    @property
    def marginMowingCompleted(self):
        return self.attributes.get("marginMowingCompleted", "")

    @property
    def userInteraction(self):
        return self.attributes.get("userInteraction", "")

    @property
    def loopSignalValid(self):
        return self.attributes.get("loopSignalValid", "")

    @property
    def chargerContact(self):
        return self.attributes.get("chargerContact", "")

    @property
    def chargerActive(self):
        return self.attributes.get("chargerActive", "")

    @property
    def chargerAllowsRestart(self):
        return self.attributes.get("chargerAllowsRestart", "")

    @property
    def chargerFailure(self):
        return self.attributes.get("chargerFailure", "")

    @property
    def manualOperation(self):
        return self.attributes.get("manualOperation", "")

    @property
    def robotIsActive(self):
        return self.attributes.get("robotIsActive", "")

    @property
    def issueDisplay(self):
        return self.attributes.get("issueDisplay", "")

    @property
    def homingTriggerSchedule(self):
        return self.attributes.get("homingTriggerSchedule", "")

    @property
    def homingTriggerBatteryWaek(self):
        return self.attributes.get("homingTriggerBatteryWaek", "")

    @property
    def homingTriggerUserRequest(self):
        return self.attributes.get("homingTriggerUserRequest", "")

    @property
    def homingTriggerRain(self):
        return self.attributes.get("homingTriggerRain", "")

    @property
    def homingTriggerTemperature(self):
        return self.attributes.get("homingTriggerTemperature", "")

    @property
    def homingTriggerMowingUnitOverload(self):
        return self.attributes.get("homingTriggerMowingUnitOverload", "")

    @property
    def homingTriggerRestart(self):
        return self.attributes.get("homingTriggerRestart", "")

    @property
    def dayCancelled(self):
        return self.attributes.get("dayCancelled", "")

    @property
    def rainDetected(self):
        return self.attributes.get("rainDetected", "")

    @property
    def rainAllowsMowing(self):
        return self.attributes.get("rainAllowsMowing", "")

    @property
    def temperatureMonitoringActive(self):
        return self.attributes.get("temperatureMonitoringActive", "")

    @property
    def temperatureAllowsMowing(self):
        return self.attributes.get("temperatureAllowsMowing", "")

    @property
    def temperatureAllowsHoming(self):
        return self.attributes.get("temperatureAllowsHoming", "")

    @property
    def temperatureAllowsCharging(self):
        return self.attributes.get("temperatureAllowsCharging", "")

    @property
    def wheelMotorTemperatureHigh(self):
        return self.attributes.get("wheelMotorTemperatureHigh", "")

    @property
    def stopAfterIssue(self):
        return self.attributes.get("stopAfterIssue", "")

    @property
    def bladeService(self):
        return self.attributes.get("bladeService", "")

    @property
    def homingTriggerFrost(self):
        return self.attributes.get("homingTriggerFrost", "")

    @property
    def frostDetected(self):
        return self.attributes.get("frostDetected", "")

    @property
    def frostAllowsMowing(self):
        return self.attributes.get("frostAllowsMowing", "")

    @property
    def smarthomeActive(self):
        return self.attributes.get("smarthomeActive", "")


class ThingstateStateReportedOperationissue(AlkoBase):

    @property
    def code(self):
        return self.attributes.get("code", "")

    @property
    def _class(self):
        return self.attributes.get("class", "")

    @property
    def data(self):
        return self.attributes.get("data", "")

    @property
    def flag(self):
        return self.attributes.get("flag", "")


class ThingstateStateReportedCalibrationLoopSlope(AlkoBase):

    @property
    def l(self):
        return self.attributes.get("l", "")

    @property
    def r(self):
        return self.attributes.get("r", "")


class ThingstateStateReportedCalibrationLoopPeak(AlkoBase):

    @property
    def l(self):
        return self.attributes.get("l", "")

    @property
    def r(self):
        return self.attributes.get("r", "")


class ThingstateStateReportedCalibrationLoop(AlkoBase):

    @property
    def slope(self):
        return ThingstateStateReportedCalibrationLoopSlope(self.attributes.get("slope", {}))

    @property
    def peak(self):
        return ThingstateStateReportedCalibrationLoopPeak(self.attributes.get("peak", {}))

    @property
    def length(self):
        return self.attributes.get("length", "")


class ThingstateStateReportedCalibrationAccOffset(AlkoBase):

    @property
    def x(self):
        return self.attributes.get("x", "")

    @property
    def y(self):
        return self.attributes.get("y", "")


class ThingstateStateReportedCalibrationAccSecurity(AlkoBase):

    @property
    def stopAngel(self):
        return self.attributes.get("stopAngel", "")

    @property
    def orientation(self):
        return self.attributes.get("orientation", "")

    @property
    def stopAngle(self):
        return self.attributes.get("stopAngle", "")


class ThingstateStateReportedCalibrationAcc(AlkoBase):

    @property
    def offset(self):
        return ThingstateStateReportedCalibrationAccOffset(self.attributes.get("offset", {}))

    @property
    def security(self):
        return ThingstateStateReportedCalibrationAccSecurity(self.attributes.get("security", {}))


class ThingstateStateReportedCalibrationHallNeutral(AlkoBase):

    @property
    def x(self):
        return self.attributes.get("x", "")

    @property
    def y(self):
        return self.attributes.get("y", "")


class ThingstateStateReportedCalibrationHall(AlkoBase):

    @property
    def zero(self):
        return self.attributes.get("zero", "")

    @property
    def trigger(self):
        return self.attributes.get("trigger", "")

    @property
    def neutral(self):
        return ThingstateStateReportedCalibrationHallNeutral(self.attributes.get("neutral", {}))

    @property
    def triggerLevel(self):
        return self.attributes.get("triggerLevel", "")

    @property
    def flag(self):
        return self.attributes.get("flag", "")


class ThingstateStateReportedCalibrationQhk(AlkoBase):

    @property
    def flag(self):
        return self.attributes.get("flag", "")

    @property
    def left(self):
        return self.attributes.get("left", "")

    @property
    def right(self):
        return self.attributes.get("right", "")

    @property
    def peak(self):
        return self.attributes.get("peak", "")

    @property
    def upperBound(self):
        return self.attributes.get("upperBound", "")

    @property
    def lowerBound(self):
        return self.attributes.get("lowerBound", "")


class ThingstateStateReportedCalibration(AlkoBase):

    @property
    def loop(self):
        return ThingstateStateReportedCalibrationLoop(self.attributes.get("loop", {}))

    @property
    def acc(self):
        return ThingstateStateReportedCalibrationAcc(self.attributes.get("acc", {}))

    @property
    def hall(self):
        return ThingstateStateReportedCalibrationHall(self.attributes.get("hall", {}))

    @property
    def qhk(self):
        return ThingstateStateReportedCalibrationQhk(self.attributes.get("qhk", {}))


class ThingstateStateReportedBattery(AlkoBase):

    @property
    def chargingCurrent(self):
        return self.attributes.get("chargingCurrent", "")

    @property
    def voltage(self):
        return self.attributes.get("voltage", "")


class ThingstateStateReportedLoopInsidefield(AlkoBase):

    @property
    def left(self):
        return self.attributes.get("left", "")

    @property
    def right(self):
        return self.attributes.get("right", "")


class ThingstateStateReportedLoopSignalstrength(AlkoBase):

    @property
    def left(self):
        return self.attributes.get("left", "")

    @property
    def right(self):
        return self.attributes.get("right", "")


class ThingstateStateReportedLoopValue(AlkoBase):

    @property
    def left(self):
        return self.attributes.get("left", "")

    @property
    def right(self):
        return self.attributes.get("right", "")


class ThingstateStateReportedLoopCalibrationvalue(AlkoBase):

    @property
    def left(self):
        return self.attributes.get("left", "")

    @property
    def right(self):
        return self.attributes.get("right", "")


class ThingstateStateReportedLoop(AlkoBase):

    @property
    def insideField(self):
        return ThingstateStateReportedLoopInsidefield(self.attributes.get("insideField", {}))

    @property
    def signalStrength(self):
        return ThingstateStateReportedLoopSignalstrength(self.attributes.get("signalStrength", {}))

    @property
    def value(self):
        return ThingstateStateReportedLoopValue(self.attributes.get("value", {}))

    @property
    def calibrationValue(self):
        return ThingstateStateReportedLoopCalibrationvalue(self.attributes.get("calibrationValue", {}))


class ThingstateStateReportedAcceleration(AlkoBase):

    @property
    def x(self):
        return self.attributes.get("x", "")

    @property
    def y(self):
        return self.attributes.get("y", "")

    @property
    def z(self):
        return self.attributes.get("z", "")


class ThingstateStateReportedHall(AlkoBase):

    @property
    def bumper(self):
        return self.attributes.get("bumper", "")

    @property
    def x(self):
        return self.attributes.get("x", "")

    @property
    def y(self):
        return self.attributes.get("y", "")

    @property
    def bumperTriggered(self):
        return self.attributes.get("bumperTriggered", "")

    @property
    def z(self):
        return self.attributes.get("z", "")

    @property
    def value1(self):
        return self.attributes.get("value1", "")

    @property
    def value2(self):
        return self.attributes.get("value2", "")

    @property
    def value3(self):
        return self.attributes.get("value3", "")

    @property
    def value4(self):
        return self.attributes.get("value4", "")

    @property
    def value5(self):
        return self.attributes.get("value5", "")


class ThingstateStateReportedTemperature(AlkoBase):

    @property
    def battery(self):
        return self.attributes.get("battery", "")

    @property
    def motor(self):
        return self.attributes.get("motor", "")

    @property
    def environment(self):
        return self.attributes.get("environment", "")


class ThingstateStateReportedRpm(AlkoBase):

    @property
    def set(self):
        return self.attributes.get("set", "")

    @property
    def current(self):
        return self.attributes.get("current", "")


class ThingstateStateReportedMotorcurrentWheel(AlkoBase):

    @property
    def left(self):
        return self.attributes.get("left", "")

    @property
    def right(self):
        return self.attributes.get("right", "")


class ThingstateStateReportedMotorcurrent(AlkoBase):

    @property
    def mowingUnit(self):
        return self.attributes.get("mowingUnit", "")

    @property
    def wheel(self):
        return ThingstateStateReportedMotorcurrentWheel(self.attributes.get("wheel", {}))


class ThingstateStateReportedQhk(AlkoBase):

    @property
    def flag(self):
        return self.attributes.get("flag", "")

    @property
    def angle(self):
        return self.attributes.get("angle", "")


class ThingstateStateReportedManualmowing(AlkoBase):

    @property
    def activityMode(self):
        return self.attributes.get("activityMode", "")

    @property
    def marginMode(self):
        return self.attributes.get("marginMode", "")

    @property
    def narrowPassageMode(self):
        return self.attributes.get("narrowPassageMode", "")

    @property
    def startHour(self):
        return self.attributes.get("startHour", "")

    @property
    def startMinute(self):
        return self.attributes.get("startMinute", "")

    @property
    def duration(self):
        return self.attributes.get("duration", "")

    @property
    def entryPoint(self):
        return self.attributes.get("entryPoint", "")


class ThingstateStateReported(AlkoBase):

    @property
    def isConnected(self):
        return self.attributes.get("isConnected", "")

    @property
    def rssi(self):
        return self.attributes.get("rssi", "")

    @property
    def batteryLevel(self):
        return self.attributes.get("batteryLevel", "")

    @property
    def operationState(self):
        return self.attributes.get("operationState", "")

    @property
    def operationSubState(self):
        return self.attributes.get("operationSubState", "")

    @property
    def operationSituation(self):
        return self.attributes.get("operationSituation", "")

    @property
    def operationError(self):
        return ThingstateStateReportedOperationerror(self.attributes.get("operationError", {}))

    @property
    def nextOperation(self):
        return self.attributes.get("nextOperation", "")

    @property
    def remainingDuration(self):
        return self.attributes.get("remainingDuration", "")

    @property
    def operationTimeTotal(self):
        return self.attributes.get("operationTimeTotal", "")

    @property
    def operationTimeMowing(self):
        return self.attributes.get("operationTimeMowing", "")

    @property
    def operationTimeWheelMotorLeft(self):
        return self.attributes.get("operationTimeWheelMotorLeft", "")

    @property
    def operationTimeWheelMotorRight(self):
        return self.attributes.get("operationTimeWheelMotorRight", "")

    @property
    def operationTimeBlade(self):
        return self.attributes.get("operationTimeBlade", "")

    @property
    def mowingCycles(self):
        return self.attributes.get("mowingCycles", "")

    @property
    def chargingCycles(self):
        return self.attributes.get("chargingCycles", "")

    @property
    def remainingBladeLifetime(self):
        return self.attributes.get("remainingBladeLifetime", "")

    @property
    def rtc(self):
        return self.attributes.get("rtc", "")

    @property
    def languageSettings(self):
        return ThingstateStateReportedLanguagesettings(self.attributes.get("languageSettings", {}))

    @property
    def chargingCurrent(self):
        return self.attributes.get("chargingCurrent", "")

    @property
    def tiltSlope(self):
        return self.attributes.get("tiltSlope", "")

    @property
    def entryPoints(self):
        return self.attributes.get("entryPoints", [])

    @property
    def rainSensor(self):
        return self.attributes.get("rainSensor", "")

    @property
    def rainDelay(self):
        return self.attributes.get("rainDelay", "")

    @property
    def ecoMode(self):
        return self.attributes.get("ecoMode", "")

    @property
    def boundaryOverlap(self):
        return self.attributes.get("boundaryOverlap", "")

    @property
    def mowingWindows(self):
        return ThingstateStateReportedMowingwindows(self.attributes.get("mowingWindows", {}))

    @property
    def situationFlags(self):
        return ThingstateStateReportedSituationflags(self.attributes.get("situationFlags", {}))

    @property
    def remainingDurationPercentage(self):
        return self.attributes.get("remainingDurationPercentage", "")

    @property
    def operationIssue(self):
        return ThingstateStateReportedOperationissue(self.attributes.get("operationIssue", {}))

    @property
    def rainSensitivity(self):
        return self.attributes.get("rainSensitivity", "")

    @property
    def frostSensor(self):
        return self.attributes.get("frostSensor", "")

    @property
    def frostDelay(self):
        return self.attributes.get("frostDelay", "")

    @property
    def frostThreshold(self):
        return self.attributes.get("frostThreshold", "")

    @property
    def calibration(self):
        return ThingstateStateReportedCalibration(self.attributes.get("calibration", {}))

    @property
    def batteryWeakVoltage(self):
        return self.attributes.get("batteryWeakVoltage", "")

    @property
    def bladesService(self):
        return self.attributes.get("bladesService", "")

    @property
    def sideBumpTrigger(self):
        return self.attributes.get("sideBumpTrigger", "")

    @property
    def restartLevel(self):
        return self.attributes.get("restartLevel", "")

    @property
    def latSlopeCompUp(self):
        return self.attributes.get("latSlopeCompUp", "")

    @property
    def latSlopeCompDown(self):
        return self.attributes.get("latSlopeCompDown", "")

    @property
    def longDistanceTurn(self):
        return self.attributes.get("longDistanceTurn", "")

    @property
    def mowingStrategy(self):
        return self.attributes.get("mowingStrategy", "")

    @property
    def demoMode(self):
        return self.attributes.get("demoMode", "")

    @property
    def marginMowing(self):
        return self.attributes.get("marginMowing", "")

    @property
    def bladeSpeed(self):
        return self.attributes.get("bladeSpeed", "")

    @property
    def battery(self):
        return ThingstateStateReportedBattery(self.attributes.get("battery", {}))

    @property
    def loop(self):
        return ThingstateStateReportedLoop(self.attributes.get("loop", {}))

    @property
    def acceleration(self):
        return ThingstateStateReportedAcceleration(self.attributes.get("acceleration", {}))

    @property
    def hall(self):
        return ThingstateStateReportedHall(self.attributes.get("hall", {}))

    @property
    def temperature(self):
        return ThingstateStateReportedTemperature(self.attributes.get("temperature", {}))

    @property
    def rpm(self):
        return ThingstateStateReportedRpm(self.attributes.get("rpm", {}))

    @property
    def motorCurrent(self):
        return ThingstateStateReportedMotorcurrent(self.attributes.get("motorCurrent", {}))

    @property
    def manualMarginMowing(self):
        return self.attributes.get("manualMarginMowing", "")

    @property
    def offPitch(self):
        return self.attributes.get("offPitch", "")

    @property
    def resetBladesService(self):
        return self.attributes.get("resetBladesService", "")

    @property
    def qhk(self):
        return ThingstateStateReportedQhk(self.attributes.get("qhk", {}))

    @property
    def manualMowing(self):
        return ThingstateStateReportedManualmowing(self.attributes.get("manualMowing", {}))

    @property
    def ipaddress(self):
        return self.attributes.get("ipaddress", "")


class ThingstateStateDelta(AlkoBase):
    pass  # No properties defined

class ThingstateState(AlkoBase):

    @property
    def desired(self):
        return ThingstateStateDesired(self.attributes.get("desired", {}))

    @property
    def reported(self):
        return ThingstateStateReported(self.attributes.get("reported", {}))

    @property
    def delta(self):
        return ThingstateStateDelta(self.attributes.get("delta", {}))


class Thingstate(AlkoBase):

    @property
    def state(self):
        return ThingstateState(self.attributes.get("state", {}))


class Accessorylist(AlkoBase):

    @property
    def id(self):
        return self.attributes.get("id", "")

    @property
    def artnumber(self):
        return self.attributes.get("artnumber", "")


class Brand(AlkoBase):

    @property
    def id(self):
        return self.attributes.get("id", "")

    @property
    def name(self):
        return self.attributes.get("name", "")


class Additionaldocuments(AlkoBase):

    @property
    def doctype(self):
        return self.attributes.get("doctype", "")

    @property
    def docid(self):
        return self.attributes.get("docid", "")

    @property
    def docstorecat(self):
        return self.attributes.get("docstorecat", "")

    @property
    def docname(self):
        return self.attributes.get("docname", "")

    @property
    def docnumber(self):
        return self.attributes.get("docnumber", "")

    @property
    def version(self):
        return self.attributes.get("version", "")


class Crosssellinglist(AlkoBase):

    @property
    def id(self):
        return self.attributes.get("id", "")

    @property
    def artnumber(self):
        return self.attributes.get("artnumber", "")


class AttributelistParent(AlkoBase):

    @property
    def id(self):
        return self.attributes.get("id", "")

    @property
    def name(self):
        return self.attributes.get("name", "")

    @property
    def exportToShop(self):
        return self.attributes.get("exportToShop", "")

    @property
    def exportToChannable(self):
        return self.attributes.get("exportToChannable", "")

    @property
    def label(self):
        return self.attributes.get("label", "")


class Group(AlkoBase):

    @property
    def id(self):
        return self.attributes.get("id", "")

    @property
    def name(self):
        return self.attributes.get("name", "")

    @property
    def label(self):
        return self.attributes.get("label", "")


class Attributelist(AlkoBase):

    @property
    def id(self):
        return self.attributes.get("id", "")

    @property
    def key(self):
        return self.attributes.get("key", "")

    @property
    def name(self):
        return self.attributes.get("name", "")

    @property
    def attrtype(self):
        return self.attributes.get("attrtype", "")

    @property
    def internalValue(self):
        return self.attributes.get("internalValue", "")

    @property
    def label(self):
        return self.attributes.get("label", "")

    @property
    def value_from(self):
        return self.attributes.get("value_from", "")

    @property
    def value_to(self):
        return self.attributes.get("value_to", "")

    @property
    def unit(self):
        return self.attributes.get("unit", "")

    @property
    def value_once(self):
        return self.attributes.get("value_once", "")

    @property
    def parent(self):
        return AttributelistParent(self.attributes.get("parent", {}))

    @property
    def showShop(self):
        return self.attributes.get("showShop", "")

    @property
    def showDatasheet(self):
        return self.attributes.get("showDatasheet", "")

    @property
    def group(self):
        return [Group(x) for x in self.attributes.get("group", [])]


class AppimagesImage(AlkoBase):

    @property
    def update(self):
        return self.attributes.get("update", "")

    @property
    def mimetype(self):
        return self.attributes.get("mimetype", "")

    @property
    def filename(self):
        return self.attributes.get("filename", "")

    @property
    def fullpath(self):
        return self.attributes.get("fullpath", "")


class Appimages(AlkoBase):

    @property
    def image(self):
        return AppimagesImage(self.attributes.get("image", {}))


class Pim(AlkoBase):

    @property
    def artnumber(self):
        return self.attributes.get("artnumber", "")

    @property
    def accessoryList(self):
        return [Accessorylist(x) for x in self.attributes.get("accessoryList", [])]

    @property
    def price(self):
        return self.attributes.get("price", "")

    @property
    def brand(self):
        return [Brand(x) for x in self.attributes.get("brand", [])]

    @property
    def additionalDocuments(self):
        return [Additionaldocuments(x) for x in self.attributes.get("additionalDocuments", [])]

    @property
    def title(self):
        return self.attributes.get("title", "")

    @property
    def productHierarchy(self):
        return self.attributes.get("productHierarchy", "")

    @property
    def crosssellingList(self):
        return [Crosssellinglist(x) for x in self.attributes.get("crosssellingList", [])]

    @property
    def attributeList(self):
        return [Attributelist(x) for x in self.attributes.get("attributeList", [])]

    @property
    def appimages(self):
        return [Appimages(x) for x in self.attributes.get("appimages", [])]

    @property
    def images(self):
        return self.attributes.get("images", [])


class AlkoDevice(AlkoBaseClient):

    @property
    def thingName(self):
        return self.attributes.get("thingName", "")

    @property
    def thingType(self):
        return self.attributes.get("thingType", "")

    @property
    def thingAttributes(self):
        return Thingattributes(self.attributes.get("thingAttributes", {}))

    @property
    def accessInformation(self):
        return Accessinformation(self.attributes.get("accessInformation", {}))

    @property
    def accesses(self):
        return [Accesses(x) for x in self.attributes.get("accesses", [])]

    @property
    def thingState(self):
        return Thingstate(self.attributes.get("thingState", {}))

    @property
    def pim(self):
        return Pim(self.attributes.get("pim", {}))


