Files
domoticz-FrameworkPlugin/Domoticz.py

165 lines
3.7 KiB
Python

from datetime import datetime
Images = {}
Devices = {}
###################
class ImageObj(object):
ID = 0
def __init__(self, obj):
pass
class DzImage(object):
__name = None
def __init__(self, name):
if name[-4:].lower() != ".zip":
raise ValueError
self.__name = name[:-4]
def Create(self):
global Images
Images[self.__name] = ImageObj(self)
###################
class DeviceObj(object):
TimedOut = 0
sValue = ""
nValue = 0
Image = None
Name=None
Type=None
SubType=None
__unit=None
__switchtype=None
__options=None
__image=None
__used=None
def __init__(self, Unit=None, Name=None, Type=None, TypeName=None, Subtype=None, Switchtype=None, Options=None, Image=None, Used=None):
self.Name = Name
self.Image = Image
self.Type = Type
self.SubType = Subtype
self.__unit = Unit
self.__typename = TypeName
self.__switchtype = Switchtype
self.__options = Options
self.__used = Used
def __repr__(self):
res = ""
res = res + f"Unit : {self.__unit}"
res = res + f"Name : {self.Name}"
res = res + f"Type : {self.Type}"
res = res + f"Type Name : {self.__typename}"
res = res + f"Subtype : {self.SubType}"
res = res + f"Switchtype: {self.__switchtype}"
res = res + f"Image : {self.Image}"
res = res + f"Options : {self.__options}"
res = res + f"Used : {self.__used}"
return res
def Update(self, nValue=None, sValue=None, TimedOut=None, Image=None):
if nValue is not None and self.nValue != nValue:
self.nValue = nValue
if sValue is not None and self.sValue != sValue:
self.sValue = sValue
if TimedOut is not None and self.TimedOut != TimedOut:
self.TimedOut = TimedOut
if Image is not None and self.Image != Image:
self.Image = Image
def Touch(self):
pass
class DzDevice(object):
__data=None
def __init__(self, **kwargs):
self.__data = kwargs
def Create(self):
global Devices
Devices[self.__data["Unit"]] = DeviceObj(**self.__data)
###################
class BaseDomoticz(object):
__debuglevel = 0
__heartbeat = 30
def __init__(self):
pass
@staticmethod
def __print(message):
print(datetime.now().strftime("%d/%m/%Y %H:%M:%S"), "-", message)
@staticmethod
def Image(name):
return DzImage(name)
@staticmethod
def Device(**kwargs):
return DzDevice(**kwargs)
def Debugging(self, level):
self.__debuglevel = int(level)
def Debug(self, message):
if self.__debuglevel > 0:
self.__print("[DEBUG] "+message)
def Log(self, message):
self.__print("[LOG] "+message)
def Status(self, message):
self.__print("[STATUS] "+message)
def Error(self, message):
self.__print("[ERROR] "+message)
def Heartbeat(self, duration):
self.__heartbeat = duration
def GetHeartbeat(self):
return self.__heartbeat
domo = BaseDomoticz()
###################
def Debugging(level):
"""Debugging"""
domo.Debugging(level)
def Debug(message):
"""Debug"""
domo.Debug(message)
def Log(message):
"""Debugging"""
domo.Log(message)
def Status(message):
"""Status"""
domo.Status(message)
def Error(message):
"""Error"""
domo.Error(message)
def Heartbeat(duration):
"""Heartbeat"""
def DomoticzImage(name):
"""Image"""
return domo.Image(name)
def Device(*args, **kwargs):
"""Device"""
return domo.Device(**kwargs)
###################