Skip to content

Commit

Permalink
Merge branch 'rc-stable7-7.1.021' into wiser2-thermostat-enhancement
Browse files Browse the repository at this point in the history
  • Loading branch information
pipiche38 authored Feb 16, 2025
2 parents aac6d4c + 36890d6 commit 8ba582d
Show file tree
Hide file tree
Showing 14 changed files with 895 additions and 802 deletions.
5 changes: 4 additions & 1 deletion Classes/OTA.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@
"Schneider": {"Folder": "SCHNEIDER-WISER", "ManufCode": 0x105E, "ManufName": "Schneider Electric", "Enabled": True},
"SonOff": {"Folder": "SONOFF", "ManufCode": 0x1286, "ManufName": "Sonoff", "Enabled": True},
"Xiaomi": {"Folder": "XIAOMI", "ManufCode": 0x115f, "ManufName": "Xiaomi", "Enabled": True},
"Lumi": {"Folder": "XIAOMI", "ManufCode": 0x1037, "ManufName": "Lumi", "Enabled": True},
"devbis": {"Folder": "XIAOMI", "ManufCode": 0xdb15, "ManufName": "Lumi", "Enabled": True},
"z03mmc": {"Folder": "XIAOMI", "ManufCode": 0x0084, "ManufName": "Lumi", "Enabled": True},
}


Expand Down Expand Up @@ -1026,7 +1029,7 @@ def ota_extract_image_headers(self, subfolder, image): # OK 13/10
logging(
self,
"Status",
"Available Firmware - ManufCode: %4x ImageType: 0x%04x FileVersion: 0x%8x Size: %8s Bytes Filename: %s"
"Available Firmware - ManufCode: 0x%04x ImageType: 0x%04x FileVersion: 0x%08x Size: %8s Bytes Filename: %s"
% (headers["manufacturer_code"], headers["image_type"], headers["image_version"], headers["size"], image),
)

Expand Down
5 changes: 4 additions & 1 deletion Classes/PluginConf.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
"PluginRetrys": {"type": "bool","default": 0,"current": None,"restart": 0,"hidden": True,"Advanced": True,},
"CaptureRxFrames": {"type": "bool","default": 0,"current": None,"restart": 1,"hidden": False,"Advanced": True,},
"CaptureTxFrames": {"type": "bool","default": 0,"current": None,"restart": 1,"hidden": False,"Advanced": True,},
"enableZclDuplicatecheck": {"type": "bool","default": 1,"current": None,"restart": 0,"hidden": False,"Advanced": True,},
"enableZclDuplicatecheck": {"type": "bool","default": 0,"current": None,"restart": 0,"hidden": False,"Advanced": True,},
"BackupFullDevices": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": False,"ZigpyRadio": "znp" },
"ForceAPSAck": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": True, "Advanced": True, },
"BellowsNoMoreEndDeviceChildren": { "type": "bool", "default": 0, "current": None, "restart": 1, "hidden": False, "Advanced": True, "ZigpyRadio": "ezsp" },
Expand Down Expand Up @@ -300,11 +300,14 @@

"Temperature": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"Thermostats": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"thermoSettings": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"ThreadCommunication": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"ThreadDomoticz": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"ThreadForwarder": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"ThreadWriter": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"Timing": { "type": "bool", "default": 1, "current": None, "restart": 0, "hidden": True, "Advanced": True },
"TimeServer": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },

"Transport": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"Transport8000": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
"Transport8002": { "type": "bool", "default": 0, "current": None, "restart": 0, "hidden": False, "Advanced": True },
Expand Down
85 changes: 31 additions & 54 deletions Classes/WebServer/rest_ZLinky.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,39 +27,41 @@
"EASF06", "BBRHPJR", "EASF07", "EASF08", "EASF09", "EASF10",
"EASD01", "EASD02", "EASD03", "EASD04", ]
ZLINKY_PARAMETERS = {
# Historique
0: (
"ADC0", "BASE", "OPTARIF", "ISOUSC", "IMAX", "PTEC", "DEMAIN", "HHPHC", "PEJP", "ADPS",
"ADC0", "BASE", "OPTARIF", "ISOUSC", "IMAX", "PTEC", "DEMAIN", "HHPHC", "PEJP", "ADPS",
),
2: (
"ADC0", "BASE", "OPTARIF", "ISOUSC", "IMAX",
"IMAX1", "IMAX2", "IMAX3", "PMAX", "PTEC", "DEMAIN", "HHPHC", "PPOT", "PEJP", "ADPS", "ADIR1", "ADIR2", "ADIR3"
),

# Standard
1: (
"ADSC", "NGTF", "LTARF", "NTARF", "DATE", "EAST", "EASF01", "EASF02", "EASF03", "EASF04", "EASF05",
"EASF06", "EASF07", "EASF08", "EASF09", "EASF10", "EASD01", "EASD02", "EASD03", "EASD04", "URMS1",
"PREF", "STGE", "PCOUP",
"PREF", "PCOUP",
"MSG1", "MSG2", "PRM", "STGE", "DPM1", "FPM1", "DPM2", "FPM2", "DPM3", "FPM3", "RELAIS", "NJOURF", "NJOURF+1", "PJOURF+1", "PPOINTE1",
),

3: (
"ADSC", "NGTF", "LTARF", "NTARF", "DATE", "EAST", "EASF01", "EASF02", "EASF03", "EASF04", "EASF05",
"EASF06", "EASF07", "EASF08", "EASF09", "EASF10", "EASD01", "EASD02", "EASD03", "EASD04", "URMS1",
"URMS2", "URMS3", "PREF", "STGE", "PCOUP",
"URMS2", "URMS3", "PREF", "PCOUP",
"MSG1", "MSG2", "PRM", "STGE", "DPM1", "FPM1", "DPM2", "FPM2", "DPM3", "FPM3", "RELAIS", "NJOURF", "NJOURF+1", "PJOURF+1", "PPOINTE1",
),

5: (
"ADSC", "NGTF", "LTARF", "NTARF", "DATE", "EAST", "EASF01", "EASF02", "EASF03", "EASF04", "EASF05",
"EASF06", "EASF07", "EASF08", "EASF09", "EASF10", "EASD01", "EASD02", "EASD03", "EASD04", "EAIT", "URMS1",
"PREF", "STGE", "PCOUP", "SINSTI", "SMAXIN", "SMAXIN-1", "CCAIN", "CCAIN-1", "SMAXN-1", "SMAXN2-1", "SMAXN3-1",
"PREF", "PCOUP", "SINSTI", "SMAXIN", "SMAXIN-1", "CCAIN", "CCAIN-1", "SMAXN-1", "SMAXN2-1", "SMAXN3-1",
"MSG1", "MSG2", "PRM", "STGE", "DPM1", "FPM1", "DPM2", "FPM2", "DPM3", "FPM3", "RELAIS", "NJOURF", "NJOURF+1", "PJOURF+1", "PPOINTE1",
),

7: (
"ADSC", "NGTF", "LTARF", "NTARF", "DATE", "EAST", "EASF01", "EASF02", "EASF03", "EASF04", "EASF05",
"EASF06", "EASF07", "EASF08", "EASF09", "EASF10", "EASD01", "EASD02", "EASD03", "EASD04", "EAIT", "URMS1",
"URMS2", "URMS3", "PREF", "STGE", "PCOUP",
"URMS2", "URMS3", "PREF", "PCOUP",
"SINSTI", "SMAXIN", "SMAXIN-1", "CCAIN", "CCAIN-1", "SMAXN-1", "SMAXN2-1", "SMAXN3-1",
"MSG1", "MSG2", "PRM", "STGE", "DPM1", "FPM1", "DPM2", "FPM2", "DPM3", "FPM3", "RELAIS", "NJOURF", "NJOURF+1", "PJOURF+1", "PPOINTE1",
),
Expand All @@ -73,69 +75,43 @@
"BBR": ( "HHPHC", "HCHP","HCHC", "PEJP", "EJPHN", "EJPHPM",)
}


ZLINKY_STEG_ATTRIBUTS = (
'Contact sec ',
'Organe de coupure ',
'État du cache-bornes distributeur',
'Surtension sur une des phases ',
'Dépassement de la puissance de référence',
'Fonctionnement producteur/consommateur',
'Sens énergie active ',
'Tarif en cours sur le contrat fourniture',
'Tarif en cours sur le contrat distributeur',
'Mode dégradée horloge',
'État de la sortie télé-information ',
'État de la sortie communication',
'Statut du CPL ',
'Synchronisation CPL ',
'Couleur du jour',
'Couleur du lendemain',
'Préavis pointes mobiles ',
'Pointe mobile ',
)
def zlinky_version_infos(self, nwkid ):

date_build = version_build = ''
# Retreive Build time
if 'SWBUILD_1' in self.ListOfDevices[ nwkid ]:
date_build = self.ListOfDevices[ nwkid ]['SWBUILD_1' ]
# Retreive Version number
if 'SWBUILD_3' in self.ListOfDevices[ nwkid ]:
version_build = self.ListOfDevices[ nwkid ]['SWBUILD_3' ]
cluster_0000 = self.ListOfDevices.get(nwkid, {}).get("Ep",{}).get("01", {}).get("0000",{})

return date_build, version_build
date_build = cluster_0000.get("0006","")
version_build = cluster_0000.get("4000","")


self.logging("Debug", f"rest_zlinky - found date_build: {date_build} version_build {version_build}")
return date_build, version_build


def rest_zlinky(self, verb, data, parameters):

_response = prepResponseMessage(self, setupHeadersResponse())
_response["Data"] = None

self.logging("Debug", "rest_zlinky - for %s %s %s" % (verb, data, parameters))
self.logging("Debug", "rest_zlinky - for %s %s %s" % (verb, data, parameters))
# find if we have a ZLinky
zlinky = []

for nwkid in self.ListOfDevices:
if 'ZLinky' not in self.ListOfDevices[ nwkid ]:
continue
if "PROTOCOL Linky" not in self.ListOfDevices[ nwkid ]['ZLinky']:
zlinky_datas = self.ListOfDevices[ nwkid ].get("ZLinky")
if zlinky_datas is None:
continue

if "PROTOCOL Linky" not in zlinky_datas:
continue
if "OPTARIF" not in self.ListOfDevices[ nwkid ]['ZLinky']:
if "OPTARIF" not in zlinky_datas:
continue

self.logging("Debug", "rest_zlinky - found %s " % (nwkid))
tarif = "BASE"
for _tarif in ZLINK_TARIF_MODE_EXCLUDE:
if _tarif in self.ListOfDevices[ nwkid ]['ZLinky'][ "OPTARIF"]:
tarif = _tarif
break
self.logging("Debug", "rest_zlinky - found %s " % (nwkid))
tarif = next( ( _tarif for _tarif in ZLINK_TARIF_MODE_EXCLUDE if _tarif in zlinky_datas["OPTARIF"] ), "BASE", )

linky_mode = self.ListOfDevices[ nwkid ]["ZLinky"]["PROTOCOL Linky"]
linky_mode = zlinky_datas["PROTOCOL Linky"]
version_info = zlinky_version_infos(self, nwkid )

device = {
'Nwkid': nwkid,
'ZDeviceName': get_device_nickname( self, NwkId=nwkid),
Expand All @@ -150,27 +126,28 @@ def rest_zlinky(self, verb, data, parameters):
self.logging("Debug", "rest_zlinky - Linky DateCode %s " % version_info[0])
self.logging("Debug", "rest_zlinky - Linky Version %s " %version_info[1])


for zlinky_param in ZLINKY_PARAMETERS[ linky_mode ]:
if zlinky_param not in self.ListOfDevices[ nwkid ]["ZLinky"]:
if zlinky_param not in zlinky_datas:
self.logging("Debug", "rest_zlinky - Exclude %s " % (zlinky_param))
continue

if zlinky_param in ZLINK_TARIF_MODE_EXCLUDE[ tarif ]:
self.logging("Debug", "rest_zlinky - Exclude %s " % (zlinky_param))
continue

if zlinky_param == "STGE":
#for x in self.ListOfDevices[ nwkid ]["ZLinky"][ "STGE"]:
# device["Parameters"].append( { x: self.ListOfDevices[ nwkid ]["ZLinky"]["STGE"][x] } )
for x in zlinky_datas[ "STGE"]:
device["Parameters"].append( { f"STGE: {x}": zlinky_datas["STGE"][x] } )
continue

attr_value = self.ListOfDevices[ nwkid ]["ZLinky"][ zlinky_param ]
attr_value = zlinky_datas[ zlinky_param ]
if zlinky_param in ZLINKY_INDEXES:
attr_value = int(attr_value) / 1000

device["Parameters"].append( { zlinky_param: attr_value } )

zlinky.append( device )

self.logging("Debug", "rest_zlinky - Read to send %s " % (zlinky))

if verb == "GET" and len(parameters) == 0:
Expand Down
Loading

0 comments on commit 8ba582d

Please sign in to comment.