Initial release
This commit is contained in:
162
Domoticz.py
Normal file
162
Domoticz.py
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
__unit=None
|
||||||
|
__type=None
|
||||||
|
__subtype=None
|
||||||
|
__switchtype=None
|
||||||
|
__options=None
|
||||||
|
__image=None
|
||||||
|
__used=None
|
||||||
|
|
||||||
|
def __init__(self, Unit=None, Name=None, Type=None, Subtype=None, Switchtype=None, Options=None, Image=None, Used=None):
|
||||||
|
self.Name = Name
|
||||||
|
self.Image = Image
|
||||||
|
|
||||||
|
self.__unit = Unit
|
||||||
|
self.__type = Type
|
||||||
|
self.__subtype = Subtype
|
||||||
|
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"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)
|
||||||
|
|
||||||
|
###################
|
||||||
29
run.py
Normal file
29
run.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import time
|
||||||
|
import Domoticz
|
||||||
|
import plugin
|
||||||
|
|
||||||
|
Parameters = {
|
||||||
|
"Address":"localhost",
|
||||||
|
"Port":"8080",
|
||||||
|
"Username":"",
|
||||||
|
"Password":"",
|
||||||
|
"Mode1":"",
|
||||||
|
"Mode2":"",
|
||||||
|
"Mode3":"",
|
||||||
|
"Mode4":"",
|
||||||
|
"Mode5":"",
|
||||||
|
"Mode6":0
|
||||||
|
}
|
||||||
|
|
||||||
|
Images = Domoticz.Images
|
||||||
|
Devices = Domoticz.Devices
|
||||||
|
|
||||||
|
with open("./plugin.py", 'rb') as fileobj:
|
||||||
|
exec(compile(fileobj.read(), "plugin.py", 'exec'), globals(), globals())
|
||||||
|
|
||||||
|
onStart()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
Domoticz.Log("## Plugin Heartbeat ##")
|
||||||
|
onHeartbeat()
|
||||||
|
time.sleep(Domoticz.domo.GetHeartbeat())
|
||||||
Reference in New Issue
Block a user