Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions miio/integrations/airdog/airpurifier/airpurifier_airdog.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

from miio import Device, DeviceStatus
from miio.click_common import EnumType, command, format_output
from miio.devicestatus import sensor, setting

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -48,16 +49,23 @@ def __init__(self, data: dict[str, Any]) -> None:
self.data = data

@property
@sensor("Power")
def power(self) -> str:
"""Power state."""
return self.data["power"]

@property
@sensor("Is On")
def is_on(self) -> bool:
"""True if device is turned on."""
return self.power == "on"

@property
@setting(
"Mode",
setter_name="set_mode_and_speed",
choices=OperationMode,
)
def mode(self) -> OperationMode:
"""Operation mode.

Expand All @@ -66,26 +74,37 @@ def mode(self) -> OperationMode:
return OperationMode(self.data["mode"])

@property
@setting(
"Speed",
setter_name="set_mode_and_speed",
min_value=1,
max_value=5,
step=1,
)
def speed(self) -> int:
"""Current speed level."""
return self.data["speed"]

@property
@setting("Child Lock", setter_name="set_child_lock")
def child_lock(self) -> bool:
"""Return True if child lock is on."""
return self.data["lock"] == "lock"

@property
@sensor("Clean Filters")
def clean_filters(self) -> bool:
"""True if the display shows "-C-" and the filter must be cleaned."""
return self.data["clean"] == "y"

@property
@sensor("PM2.5", unit="μg/m³")
def pm25(self) -> int:
"""Return particulate matter value (0...300μg/m³)."""
return self.data["pm"]

@property
@sensor("Formaldehyde")
def hcho(self) -> int | None:
"""Return formaldehyde value."""
if self.data["hcho"] is not None:
Expand Down
15 changes: 15 additions & 0 deletions miio/integrations/cgllc/airmonitor/airqualitymonitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from miio.click_common import command, format_output
from miio.device import Device, DeviceStatus
from miio.devicestatus import sensor, setting

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -57,57 +58,67 @@ def __init__(self, data):
self.data = data

@property
@sensor("Power")
def power(self) -> str | None:
"""Current power state."""
return self.data.get("power")

@property
@sensor("Is On")
def is_on(self) -> bool:
"""Return True if the device is turned on."""
return self.power == "on"

@property
@sensor("USB Power")
def usb_power(self) -> bool | None:
"""Return True if the device's usb is on."""
if "usb_state" in self.data and self.data["usb_state"] is not None:
return self.data["usb_state"] == "on"
return None

@property
@sensor("AQI")
def aqi(self) -> int | None:
"""Air quality index value (0..600)."""
return self.data.get("aqi")

@property
@sensor("Battery", unit="%")
def battery(self) -> int | None:
"""Current battery level (0..100)."""
return self.data.get("battery")

@property
@setting("Display Clock", setter_name="set_display_clock")
def display_clock(self) -> bool | None:
"""Display a clock instead the AQI."""
if "time_state" in self.data and self.data["time_state"] is not None:
return self.data["time_state"] == "on"
return None

@property
@setting("Night Mode", setter_name="set_night_mode")
def night_mode(self) -> bool | None:
"""Return True if the night mode is on."""
if "night_state" in self.data and self.data["night_state"] is not None:
return self.data["night_state"] == "on"
return None

@property
@sensor("Night Time Begin")
def night_time_begin(self) -> str | None:
"""Return the begin of the night time."""
return self.data.get("night_beg_time")

@property
@sensor("Night Time End")
def night_time_end(self) -> str | None:
"""Return the end of the night time."""
return self.data.get("night_end_time")

@property
@sensor("Sensor State")
def sensor_state(self) -> str | None:
"""Sensor state."""
return self.data.get("sensor_state")
Expand All @@ -123,21 +134,25 @@ def co2e(self) -> int | None:
return self.data.get("co2e")

@property
@sensor("Humidity", unit="%")
def humidity(self) -> float | None:
"""Return humidity value (0...100%)."""
return self.data.get("humidity")

@property
@sensor("PM2.5", unit="μg/m³")
def pm25(self) -> float | None:
"""Return pm2.5 value (0...999μg/m³)."""
return self.data.get("pm25")

@property
@sensor("Temperature", unit="°C")
def temperature(self) -> float | None:
"""Return temperature value (-10...50°C)."""
return self.data.get("temperature")

@property
@sensor("TVOC")
def tvoc(self) -> int | None:
"""Return tvoc value."""
return self.data.get("tvoc")
Expand Down
36 changes: 35 additions & 1 deletion miio/integrations/cgllc/airmonitor/airqualitymonitor_miot.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import click

from miio.click_common import command, format_output
from miio.devicestatus import sensor, setting
from miio.miot_device import DeviceStatus, MiotDevice

_LOGGER = logging.getLogger(__name__)
Expand Down Expand Up @@ -107,57 +108,90 @@ def __init__(self, data):
self.data = data

@property
@sensor("Humidity", unit="%")
def humidity(self) -> int:
"""Return humidity value (0...100%)."""
return self.data["humidity"]

@property
@sensor("PM2.5", unit="µg/m³")
def pm25(self) -> int:
"""Return PM 2.5 value (0...1000ppm)."""
return self.data["pm25"]

@property
@sensor("PM10", unit="µg/m³")
def pm10(self) -> int:
"""Return PM 10 value (0...1000ppm)."""
return self.data["pm10"]

@property
@sensor("Temperature", unit="°C")
def temperature(self) -> float:
"""Return temperature value (-30...100°C)."""
return self.data["temperature"]

@property
@sensor("CO2", unit="ppm")
def co2(self) -> int:
"""Return co2 value (0...9999ppm)."""
return self.data["co2"]

@property
@sensor("Battery", unit="%")
def battery(self) -> int:
"""Return battery level (0...100%)."""
return self.data["battery"]

@property
@sensor("Charging State")
def charging_state(self) -> ChargingState:
"""Return charging state."""
return ChargingState(self.data["charging_state"])

@property
@setting(
"Monitoring Frequency",
unit="s",
setter_name="set_monitoring_frequency_duration",
min_value=0,
max_value=600,
)
def monitoring_frequency(self) -> int:
"""Return monitoring frequency time (0..600 s)."""
return self.data["monitoring_frequency"]

@property
@setting(
"Screen Off",
unit="s",
setter_name="set_screen_off_duration",
min_value=0,
max_value=300,
)
def screen_off(self) -> int:
"""Return screen off time (0..300 s)."""
return self.data["screen_off"]

@property
@setting(
"Device Off",
unit="min",
setter_name="set_device_off_duration",
min_value=0,
max_value=60,
)
def device_off(self) -> int:
"""Return device off time (0..60 min)."""
return self.data["device_off"]

@property
def display_temperature_unit(self):
@setting(
"Display Temperature Unit",
setter_name="set_display_temperature_unit",
choices=DisplayTemperatureUnitCGDN1,
)
def display_temperature_unit(self) -> DisplayTemperatureUnitCGDN1:
"""Return display temperature unit."""
return DisplayTemperatureUnitCGDN1(self.data["temperature_unit"])

Expand Down
6 changes: 6 additions & 0 deletions miio/integrations/chuangmi/camera/chuangmi_camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

from miio.click_common import EnumType, command, format_output
from miio.device import Device, DeviceStatus
from miio.devicestatus import sensor

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -126,6 +127,7 @@ def wdr(self) -> bool:
return self.data["wdr"] == "on"

@property
@sensor(name="Track")
def track(self) -> bool:
"""Tracking status."""
return self.data["track"] == "on"
Expand All @@ -136,21 +138,25 @@ def watermark(self) -> bool:
return self.data["watermark"] == "on"

@property
@sensor(name="SD Card Status")
def sdcard_status(self) -> int:
"""SD card status."""
return self.data["sdcard_status"]

@property
@sensor(name="Max Client")
def max_client(self) -> int:
"""Unknown."""
return self.data["max_client"]

@property
@sensor(name="Night Mode")
def night_mode(self) -> int:
"""Night mode."""
return self.data["night_mode"]

@property
@sensor(name="Mini Level")
def mini_level(self) -> int:
"""Unknown."""
return self.data["mini_level"]
Expand Down
5 changes: 5 additions & 0 deletions miio/integrations/chuangmi/plug/chuangmi_plug.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from miio import Device, DeviceException, DeviceStatus
from miio.click_common import command, format_output
from miio.devicestatus import sensor, setting
from miio.utils import deprecated

_LOGGER = logging.getLogger(__name__)
Expand Down Expand Up @@ -45,6 +46,7 @@ def __init__(self, data: dict[str, Any]) -> None:
self.data = data

@property
@sensor("Power")
def power(self) -> bool:
"""Current power state."""
if "on" in self.data:
Expand All @@ -60,6 +62,7 @@ def is_on(self) -> bool:
return self.power

@property
@sensor("Temperature", unit="°C")
def temperature(self) -> int:
return self.data["temperature"]

Expand All @@ -71,6 +74,7 @@ def usb_power(self) -> bool | None:
return None

@property
@sensor("Load Power", unit="W")
def load_power(self) -> float | None:
"""Current power load, if available."""
if "load_power" in self.data and self.data["load_power"] is not None:
Expand All @@ -84,6 +88,7 @@ def wifi_led(self) -> bool | None:
return self.led

@property
@setting("LED", setter_name="set_led")
def led(self) -> bool | None:
"""True if the wifi led is turned on."""
if "wifi_led" in self.data and self.data["wifi_led"] is not None:
Expand Down
Loading
Loading