Просмотр исходного кода

Add QR attribute to WiFi Key sensor

ZiB 4 месяцев назад
Родитель
Сommit
8e16ed16b0
1 измененных файлов с 17 добавлено и 1 удалено
  1. 17 1
      custom_components/room_cal_ha/sensor.py

+ 17 - 1
custom_components/room_cal_ha/sensor.py

@@ -48,7 +48,7 @@ async def async_setup_entry(
       ReservationDateTimeSensor(coordinator, entry, slot, device_info, "Check-Out Date", "check_out_date", "check_out_time", "mdi:calendar-end"),
       ReservationTimeSensor(coordinator, entry, slot, device_info, "Check-Out Time", "check_out_time", "mdi:timer-cancel-outline"),
       ReservationStrSensor(coordinator, entry, slot, device_info, "WiFi SSID", "wifi_ssid", "mdi:wifi"),
-      ReservationStrSensor(coordinator, entry, slot, device_info, "WiFi Key", "wifi_key", "mdi:wifi-lock"),
+      WiFiKeySensor(coordinator, entry, slot, device_info),
       ReservationStrSensor(coordinator, entry, slot, device_info, "Door Code", "door_code", "mdi:door-closed-lock"),
       LastRefreshSensor(coordinator, entry, slot, device_info),
     ]
@@ -88,6 +88,22 @@ class ReservationStrSensor(_ReservationSensor):
     return getattr(self._reservation(), self._field)
 
 
+class WiFiKeySensor(_ReservationSensor):
+  def __init__(self, coordinator, entry, slot, device_info) -> None:
+    super().__init__(coordinator, entry, slot, device_info, "WiFi Key", "wifi_key", "mdi:wifi-lock")
+
+  @property
+  def native_value(self) -> str | None:
+    return self._reservation().wifi_key
+
+  @property
+  def extra_state_attributes(self) -> dict[str, str] | None:
+    res = self._reservation()
+    if res.wifi_ssid is None or res.wifi_key is None:
+      return None
+    return {"qr": f"WIFI:S:{res.wifi_ssid};T:WPA;P:{res.wifi_key};;"}
+
+
 class ReservationTimeSensor(_ReservationSensor):
   """Time sensor. HA has no TIME device class for sensors; we expose as string ISO."""