Skip to content

Commit

Permalink
Use entity attributes in Obihai sensor (#93564)
Browse files Browse the repository at this point in the history
  • Loading branch information
gjohansson-ST committed May 30, 2023
1 parent c25ccb9 commit 49ae298
Showing 1 changed file with 19 additions and 42 deletions.
61 changes: 19 additions & 42 deletions homeassistant/components/obihai/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,86 +50,63 @@ class ObihaiServiceSensors(SensorEntity):
def __init__(self, pyobihai: PyObihai, serial: str, service_name: str) -> None:
"""Initialize monitor sensor."""
self._service_name = service_name
self._state = None
self._name = f"{OBIHAI} {self._service_name}"
self._attr_name = f"{OBIHAI} {self._service_name}"
self._pyobihai = pyobihai
self._unique_id = f"{serial}-{self._service_name}"

@property
def name(self):
"""Return the name of the sensor."""
return self._name

@property
def native_value(self):
"""Return the state of the sensor."""
return self._state

@property
def available(self):
"""Return if sensor is available."""
if self._state is not None:
return True
return False

@property
def unique_id(self):
"""Return the unique ID."""
return self._unique_id

@property
def device_class(self):
"""Return the device class for uptime sensor."""
self._attr_unique_id = f"{serial}-{self._service_name}"
if self._service_name == "Last Reboot":
return SensorDeviceClass.TIMESTAMP
return None
self._attr_device_class = SensorDeviceClass.TIMESTAMP

@property
def icon(self):
def icon(self) -> str:
"""Return an icon."""
if self._service_name == "Call Direction":
if self._state == "No Active Calls":
if self._attr_native_value == "No Active Calls":
return "mdi:phone-off"
if self._state == "Inbound Call":
if self._attr_native_value == "Inbound Call":
return "mdi:phone-incoming"
return "mdi:phone-outgoing"
if "Caller Info" in self._service_name:
return "mdi:phone-log"
if "Port" in self._service_name:
if self._state == "Ringing":
if self._attr_native_value == "Ringing":
return "mdi:phone-ring"
if self._state == "Off Hook":
if self._attr_native_value == "Off Hook":
return "mdi:phone-in-talk"
return "mdi:phone-hangup"
if "Service Status" in self._service_name:
if "OBiTALK Service Status" in self._service_name:
return "mdi:phone-check"
if self._state == "0":
if self._attr_native_value == "0":
return "mdi:phone-hangup"
return "mdi:phone-in-talk"
if "Reboot Required" in self._service_name:
if self._state == "false":
if self._attr_native_value == "false":
return "mdi:restart-off"
return "mdi:restart-alert"
return "mdi:phone"

def update(self) -> None:
"""Update the sensor."""
if not self._pyobihai.check_account():
self._state = None
self._attr_native_value = None
self._attr_available = False
return

services = self._pyobihai.get_state()

if self._service_name in services:
self._state = services.get(self._service_name)
self._attr_native_value = services.get(self._service_name)

services = self._pyobihai.get_line_state()

if services is not None and self._service_name in services:
self._state = services.get(self._service_name)
self._attr_native_value = services.get(self._service_name)

call_direction = self._pyobihai.get_call_direction()

if self._service_name in call_direction:
self._state = call_direction.get(self._service_name)
self._attr_native_value = call_direction.get(self._service_name)

if self._attr_native_value is None:
self._attr_available = False
self._attr_available = True

0 comments on commit 49ae298

Please sign in to comment.