148 lines
7.0 KiB
Python
148 lines
7.0 KiB
Python
from pyModbusTCP.client import ModbusClient
|
|
|
|
|
|
|
|
def get_sensors():
|
|
mbconn = ModbusClient(host="192.168.1.20", port=502, auto_open=True, auto_close=True)
|
|
"""
|
|
port 1: 256
|
|
port 2: 272
|
|
port 3: 288
|
|
port 4: 304
|
|
port 5: 320
|
|
port 6: 336
|
|
port 7: 352
|
|
port 8: 368
|
|
"""
|
|
out = list()
|
|
for reg in [352, 288, 304, 368]:
|
|
val = mbconn.read_holding_registers(reg)[0] # read only one register
|
|
print(val)
|
|
if val == 1:
|
|
out.append(True)
|
|
else:
|
|
out.append(False)
|
|
|
|
return out
|
|
|
|
def get_open_spot(sensordata):
|
|
for x in range(len(sensordata)):
|
|
sens = sensordata[x]
|
|
if not sens:
|
|
return x
|
|
|
|
# if we get here, every spot is full
|
|
|
|
return False
|
|
|
|
|
|
testmb = get_sensors()
|
|
print(testmb)
|
|
print("Spot open", get_open_spot(testmb))
|
|
|
|
exit()
|
|
|
|
class Ring:
|
|
def __init__(self) -> None:
|
|
self.leds = [0] * 24
|
|
self.id = 0
|
|
self.dirty = False
|
|
|
|
def __iter__(self) -> iter:
|
|
yield from self.leds
|
|
|
|
def __repr__(self) -> str:
|
|
return f"Ring<id={self.id}, led_state={' '.join(list(map(lambda x: str(x+1), self.leds)))}, dirty={self.dirty}>"
|
|
|
|
def __add__(self, other):
|
|
self.leds.extend(other)
|
|
return self
|
|
|
|
def __bool__(self):
|
|
return self.dirty
|
|
|
|
def __getitem__(self, index):
|
|
return self.leds[index]
|
|
|
|
def __setitem__(self, index, value):
|
|
ivalue = self.leds[index]
|
|
if ivalue != value:
|
|
self.dirty = True
|
|
self.leds[index] = value
|
|
|
|
def __getattr__(self, name):
|
|
import word2num
|
|
name = int(word2num.word2num(name))
|
|
print(name)
|
|
if 0 <= name < len(self.leds):
|
|
return self.leds[name]
|
|
|
|
|
|
|
|
a = Ring()
|
|
print(a)
|
|
b = Ring()
|
|
b.leds[2] = 3
|
|
|
|
print(a + b)
|
|
|
|
b.active = True
|
|
|
|
if b:
|
|
print("Bexist")
|
|
|
|
c = [a, b, b, a, a]
|
|
|
|
d = list(filter(lambda x: bool(x), c))
|
|
|
|
print(d)
|
|
|
|
for i, ring in enumerate(c):
|
|
ring[0] = i
|
|
print(ring)
|
|
|
|
print(a, b)
|
|
|
|
print(f"\u001b[32m{a}")
|
|
print(f"\u001b[37ma")
|
|
|
|
print(getattr(a, "twenty two"))
|
|
|
|
# eval(f"getattr(a,\"{input()}\")")
|
|
|
|
|
|
# a = r"wow this string is cursed; for example \n"
|
|
|
|
|
|
# SEARCHDATA=r"""{ "q": "{QUERY}", "sortCriteria": "relevancy", "numberOfResults": "250", "sortCriteria": "@catalogitemwebdisplaypriority ascending", "searchHub": "products-only-search", "pipeline": "Site Search", "maximumAge": "900000", "tab": "products-search", "locale": "en", "aq": "(NOT @z95xtemplate==(ADB6CA4F03EF4F47B9AC9CE2BA53FF97,FE5DD82648C6436DB87A7C4210C7413B)) ((@syssource==\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\" @catalogitemprimarycategorypublished==true)) ((@catalogitemregionavailable=Global) (@z95xlanguage==en))", "cq": "((@z95xlanguage==en) (@z95xlatestversion==1) (@source==\"Coveo_web_index - rg-nc-prod-sitecore-prod\")) OR (@source==(\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\",\"website_001002_Category_index-rg-nc-prod-sitecore-prod\"))", "firstResult": "0" }, "categoryFacets": "[{\"field\":\"@catalogitemcategories\",\"path\":[],\"injectionDepth\":1000,\"maximumNumberOfValues\":6,\"delimitingCharacter\":\"|\"}]", "facetOptions": "{}", "groupBy": " [{\"field\":\"@contenttype\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[\"Products\"],\"queryOverride\":\"{QUERY}\",\"advancedQueryOverride\":\"(NOT @z95xtemplate==(ADB6CA4F03EF4F47B9AC9CE2BA53FF97,FE5DD82648C6436DB87A7C4210C7413B)) ((((((((@z95xpath=3324AF2D58F64C0FB725521052F679D2 @z95xid<>3324AF2D58F64C0FB725521052F679D2) ((@z95xpath=C292F3A37B3A4E6BAB345DF87ADDE516 @z95xid<>C292F3A37B3A4E6BAB345DF87ADDE516) @z95xtemplate==E4EFEB787BDC4B1A908EFC64D56CB2A4)) OR ((@z95xpath=723501A864754FEEB8AE377E4C710271 @z95xid<>723501A864754FEEB8AE377E4C710271) ((@z95xpath=600114EAB0E5407A84AAA9F0985B6575 @z95xid<>600114EAB0E5407A84AAA9F0985B6575) @z95xtemplate==2BE4FD6B3B2C49EBBD9E1F6C92238B05))) OR (@syssource==\\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\\" @catalogitemprimarycategorypublished==true)) OR ((@z95xpath=3324AF2D58F64C0FB725521052F679D2 @z95xid<>3324AF2D58F64C0FB725521052F679D2) @z95xpath<>C292F3A37B3A4E6BAB345DF87ADDE516)) OR @syssource==\\"website_001002_Category_index-rg-nc-prod-sitecore-prod\\") NOT @z95xtemplate==(ADB6CA4F03EF4F47B9AC9CE2BA53FF97,FE5DD82648C6436DB87A7C4210C7413B))) ((@catalogitemregionavailable=Global) (@z95xlanguage==en) OR (@contenttype=(Blogs,Resources,Other)) (NOT @ez120xcludefromcoveo==1))\",\"constantQueryOverride\":\"((@z95xlanguage==en) (@z95xlatestversion==1) (@source==\\"Coveo_web_index - rg-nc-prod-sitecore-prod\\")) OR (@source==(\\"website_001002_catalog_index-rg-nc-prod-sitecore-prod\\",\\"website_001002_Category_index-rg-nc-prod-sitecore-prod\\"))\"},{\"field\":\"@catalogitembrand\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@catalogitemenvironment\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@catalogitemregionalavailability\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@prez45xtez120xt\",\"maximumNumberOfValues\":5,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@tags\",\"maximumNumberOfValues\":4,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetassettype\",\"maximumNumberOfValues\":3,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetbrand\",\"maximumNumberOfValues\":3,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetmarket\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetsolution\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]},{\"field\":\"@facetsearchcontentpagetype\",\"maximumNumberOfValues\":6,\"sortCriteria\":\"occurrences\",\"injectionDepth\":1000,\"completeFacetWithStandardValues\":true,\"allowedValues\":[]}]" }"""
|
|
|
|
# QUERY = "AAAAAAAAAAAA"
|
|
|
|
# b = SEARCHDATA.replace(r"{QUERY}", QUERY)
|
|
|
|
q = [i * 2 for i in range(10)]
|
|
|
|
d = {a : b for a,b in enumerate(q)}
|
|
|
|
print(q)
|
|
|
|
print(d)
|
|
|
|
def stalin_sort(a):
|
|
b = sum(a)
|
|
b /= len(a)
|
|
return [b for _ in range(len(a))]
|
|
|
|
def mao_sort(a):
|
|
i = 0
|
|
while i < len(a) - 1:
|
|
if a[i+1] < a[i]:
|
|
del a[i]
|
|
else:
|
|
i += 1
|
|
return a
|
|
|
|
print(stalin_sort(list(range(10))))
|
|
print(mao_sort([1, 3, 2, 4, 5, 8, 7, 6, 9]))
|
|
|
|
# i l |