Skip to content

Commit

Permalink
Telegram, P2P, Time comparison, PCF8574 fixes. Added support for RPI …
Browse files Browse the repository at this point in the history
…Zero 2W
  • Loading branch information
enesbcs committed Nov 23, 2021
1 parent 04023e5 commit fadb803
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 32 deletions.
87 changes: 76 additions & 11 deletions _C013_ESPEasyP2P.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ def __init__(self,controllerindex):
self.controllerport = 65501
self.timer30s = True
self.bgproc = None
self.netmethod = 0
self.ownip = ""
self.ownmac = ""

def controller_init(self,enablecontroller=None):
if enablecontroller != None:
Expand All @@ -44,13 +47,41 @@ def controller_init(self,enablecontroller=None):
self.bgproc.daemon = True
self.bgproc.start()
# self.timer_thirty_second()
try:
nm = self.netmethod
except:
self.netmethod = 0
self.ownip = ""
self.initialized = True
return True

def webform_load(self):
webserver.addFormNote("Hint: only the Controller Port parameter used!")
options = ["Primary net","Secondary net","Manual"]
optionvalues = [0,1,2]
try:
netm = self.netmethod
except:
netm = 0
webserver.addFormSelector("IP address","c013_net",len(optionvalues),options,optionvalues,None,int(netm))
try:
oip = self.ownip
except:
oip = ""
if netm != 2:
oip = ""
elif oip == "":
oip = str(OS.get_ip())
webserver.addFormTextBox("Force own IP to broadcast","c013_ip",str(oip),16)
return True

def webform_save(self,params):
self.netmethod = int(webserver.arg("c013_net",params))
if self.netmethod == 2:
self.ownip = str(webserver.arg("c013_ip",params))
else:
self.ownip = ""

def nodesort(self,item):
v = 0
try:
Expand Down Expand Up @@ -227,17 +258,51 @@ def timer_thirty_second(self):
if self.enabled:
#send alive signals
dp = data_packet()
try:
defdev = Settings.NetMan.getprimarydevice()
except Exception as e:
misc.addLog(rpieGlobals.LOG_LEVEL_ERROR,"C013 sysinfo: "+str(e))
defdev = -1
if defdev != -1:
dp.infopacket["mac"] = Settings.NetworkDevices[defdev].mac
dp.infopacket["ip"] = Settings.NetworkDevices[defdev].ip
else:
dp.infopacket["mac"] = "00:00:00:00:00:00"
dp.infopacket["ip"] = ""
dp.infopacket["mac"] = "00:00:00:00:00:00"
dp.infopacket["ip"] = ""
if self.netmethod == 2:
try:
defdev = Settings.NetMan.getprimarydevice()
except Exception as e:
defdev = -1
if defdev != -1:
try:
dp.infopacket["mac"] = Settings.NetworkDevices[defdev].mac
except:
pass
else:
try:
defdev = Settings.NetMan.getsecondarydevice()
except Exception as e:
defdev = -1
if defdev != -1:
try:
dp.infopacket["mac"] = Settings.NetworkDevices[defdev].mac
except:
pass
dp.infopacket["ip"] = self.ownip
elif self.netmethod == 0:
try:
defdev = Settings.NetMan.getprimarydevice()
except Exception as e:
defdev = -1
if defdev != -1:
try:
dp.infopacket["mac"] = Settings.NetworkDevices[defdev].mac
dp.infopacket["ip"] = Settings.NetworkDevices[defdev].ip
except:
pass
elif self.netmethod == 1:
try:
defdev = Settings.NetMan.getsecondarydevice()
except Exception as e:
defdev = -1
if defdev != -1:
try:
dp.infopacket["mac"] = Settings.NetworkDevices[defdev].mac
dp.infopacket["ip"] = Settings.NetworkDevices[defdev].ip
except:
pass
if dp.infopacket["ip"] == "":
try:
dp.infopacket["ip"] = str(OS.get_ip())
Expand Down
2 changes: 2 additions & 0 deletions _N006_Telegram.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def webform_load(self): # create html page for settings
webserver.addFormTextBox("Server","server",self.server,128)
webserver.addFormNumericBox("Port","port",self.port,1,65535)
webserver.addFormPasswordBox("Token","passw",self.passw,64)
webserver.addFormTextBox("Chat-id","chatid",self.chatid,255)
webserver.addHtml("<TR><TD>Body:<TD><textarea name='body' rows='5' cols='80' size=255 wrap='off'>")
webserver.addHtml(str(self.body))
webserver.addHtml("</textarea>")
Expand All @@ -77,6 +78,7 @@ def webform_save(self,params): # process settings post reply
if "**" not in passw:
self.passw = passw
self.chatid = ""
self.chatid = str(webserver.arg("chatid",params))
self.body = webserver.arg("body",params)
self.plugin_init()
return True
Expand Down
4 changes: 2 additions & 2 deletions _P019_PCF8574.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ def timer_ten_per_second(self):
if self.initialized and self.enabled:
try:
val = self.pcf.readpin(self.rpin)
if int(val) != int(float(self.uservar[0])):
if float(val) != float(self.uservar[0]):
self.set_value(1,val,True)
self._lastdataservetime = rpieTime.millis()
except:
Expand All @@ -172,7 +172,7 @@ def timer_ten_per_second(self):
def timer_once_per_second(self):
if self.initialized and self.enabled:
if self.timer100ms==False:
self.ten_per_second()
self.timer_ten_per_second()
return self.timer1s

def plugin_read(self): # deal with data processing at specified time interval
Expand Down
70 changes: 52 additions & 18 deletions commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -1029,7 +1029,7 @@ def parseconversions(cvalue):
return retval

def parseruleline(linestr,rulenum=-1):
global GlobalRules, EventValues
global GlobalRules, EventValues, SysVars
cline = linestr.strip()
state = "CMD"
if "[" in linestr:
Expand Down Expand Up @@ -1090,6 +1090,19 @@ def parseruleline(linestr,rulenum=-1):
cline = cline.replace(">==",">=")
cline = cline.replace("<==","<=")
tline = cline
if (SysVars[0] in linestr) or (SysVars[1] in linestr): #convert time strings
m = re.findall(r"(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)", cline)
for tm in m:
st = timeStringToSeconds(tm)
if st != None:
st = str(st)
cline = cline.replace(tm,st)
m = re.findall(r"(?:[01]\d|2[0-3]):(?:[0-5]\d)", cline)
for tm in m:
st = timeStringToSeconds(tm)
if st != None:
st = str(st)
cline = cline.replace(tm,st)
state = "IFST"
try:
cline = eval(cline[3:])
Expand Down Expand Up @@ -1152,23 +1165,23 @@ def rulesProcessing(eventstr,efilter=-1,startn=0): # fire events
EventValues[1] = str(rpieTime.Timers[tn-1].loopcount)
except:
pass
else: # hack taskvalues to eventvalues for lazy users
try:
tname = estr
if "=" in tname:
tarr = tname.split("=")
tname = tarr[0].strip()
if '#' in tname:
ev = gettaskvaluefromname(tname)
if ev is not None:
EventValues = [0,0,0,0]
EventValues[0] = str(ev)
else:
ev = gettaskvaluefromnames(tname)
if len(ev) > 0:
EventValues = ev
except:
pass
# else: # hack taskvalues to eventvalues for lazy users
# try:
# tname = estr
# if "=" in tname:
# tarr = tname.split("=")
# tname = tarr[0].strip()
# if '#' in tname:
# ev = gettaskvaluefromname(tname)
# if ev is not None:
# EventValues = [0,0,0,0]
# EventValues[0] = str(ev)
# else:
# ev = gettaskvaluefromnames(tname)
# if len(ev) > 0:
# EventValues = ev
# except:
# pass

This comment has been minimized.

Copy link
@clumsy-stefan

clumsy-stefan Nov 23, 2021

Contributor

May I ask, why this has been removed as I think I'm using this?

This comment has been minimized.

Copy link
@TD-er

TD-er Nov 23, 2021

This comment has been minimized.

Copy link
@clumsy-stefan

clumsy-stefan Nov 23, 2021

Contributor

overlooked it, sorry... thx for pointing!

This comment has been minimized.

Copy link
@enesbcs

enesbcs Nov 23, 2021

Author Owner

Taskvalueset hacking may be added as an option in settings which defaults to disabled, if needed.

for r in range(startn,len(GlobalRules)):
if efilter!=-1:
if GlobalRules[r]["ecat"]==efilter: # check event based on filter
Expand Down Expand Up @@ -1313,3 +1326,24 @@ def comparetime(tstr):
except:
result = False
return result

def timeStringToSeconds(tstr):
cc = tstr.count(':')
tv = None
if cc==1 or cc==2:
tv = 0
try:
tva = tstr.split(':')
h = int(tva[0])
m = int(tva[1])
if h>24 or h<0 or m<0 or m>59:
return None
tv = (h * 3600) + (m*60)
if cc==2:
s = int(tva[2])
if s <0 or s>59:
return None
tv += s
except:
tv = None
return tv
8 changes: 8 additions & 0 deletions linux_os.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,14 @@ def getRPIVer():
"wlan": "1",
"bt":"1"
}
elif (hwid == "902120"):
hwarr = {
"name": "Pi Zero 2W",
"ram": "512MB",
"pins": "40",
"wlan": "1",
"bt":"1"
}
elif (hwid == "a02082") or (hwid == "a22082") or (hwid == "a32082") or (hwid == "a52082") or (hwid == "a22083"):
hwarr = {
"name": "Pi 3 Model B",
Expand Down
2 changes: 1 addition & 1 deletion rpieGlobals.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# Copyright (C) 2018-2020 by Alexander Nagy - https://bitekmindenhol.blog.hu/
#
PROGNAME = "RPIEasy"
BUILD = 21234
BUILD = 21327
PROGVER = str(BUILD)[:1]+"."+str(BUILD)[1:2]+"."+str(BUILD)[2:]

gpMenu = []
Expand Down

0 comments on commit fadb803

Please sign in to comment.