55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
import logging
|
|
import psutil
|
|
import socket
|
|
import subprocess
|
|
import time
|
|
|
|
import ha_mqtt_discoverable
|
|
import ha_mqtt_discoverable.sensors
|
|
from paho.mqtt.client import Client, MQTTMessage
|
|
|
|
from enum import Enum
|
|
|
|
class Device:
|
|
name = ""
|
|
device_id = ""
|
|
mqtt_settings = None
|
|
mqtt_device = None
|
|
|
|
def __init__(self, name, device_id, mqtt_settings: ha_mqtt_discoverable.Settings.MQTT):
|
|
self.name = name
|
|
self.device_id = device_id
|
|
self.mqtt_settings = mqtt_settings
|
|
|
|
device_manufacturer = self._read_device_manufacturer()
|
|
device_model = self._read_device_model()
|
|
device_hw_version = self._read_device_hw_version()
|
|
|
|
self.mqtt_device = ha_mqtt_discoverable.DeviceInfo(
|
|
name=name,
|
|
identifiers=device_id,
|
|
manufacturer=device_manufacturer,
|
|
model=device_model,
|
|
hw_version=device_hw_version)
|
|
|
|
def _read_device_manufacturer(self) -> str:
|
|
with open('/sys/devices/virtual/dmi/id/chassis_vendor') as f:
|
|
return f.readline()
|
|
|
|
def _read_device_model(self) -> str:
|
|
with open('/sys/devices/virtual/dmi/id/product_family') as f:
|
|
return f.readline()
|
|
|
|
def _read_device_hw_version(self) -> str:
|
|
with open('/sys/devices/virtual/dmi/id/product_name') as f:
|
|
return f.readline()
|
|
|
|
def get_device_id(self):
|
|
return self.device_id
|
|
|
|
def get_mqtt_device(self):
|
|
return self.mqtt_device
|
|
|
|
def get_mqtt_settings(self):
|
|
return self.mqtt_settings
|