pymscada 0.1.9__py3-none-any.whl → 0.1.11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pymscada/files.py CHANGED
@@ -6,9 +6,6 @@ from pymscada.periodic import Periodic
6
6
  from pymscada.tag import Tag
7
7
 
8
8
 
9
- RATE = 10
10
-
11
-
12
9
  class Files():
13
10
  """Connect to bus_ip:bus_port, store and provide a value history."""
14
11
 
@@ -23,7 +20,6 @@ class Files():
23
20
 
24
21
  Event loop must be running.
25
22
  """
26
- self.busclient = BusClient(bus_ip, bus_port, module='Files')
27
23
  self.path = Path(path)
28
24
  self.files = files
29
25
  for file in self.files:
@@ -33,11 +29,19 @@ class Files():
33
29
  file['mode'] = 'ro'
34
30
  file['_path'] = self.path.joinpath(file['path'])
35
31
  file['st_mtime_ns'] = 0
32
+ self.busclient = BusClient(bus_ip, bus_port, module='Files')
36
33
  self.rta = Tag(rta_tag, dict)
34
+ self.rta.value = {}
37
35
  self.busclient.add_callback_rta(rta_tag, self.rta_cb)
38
- self.scan_files()
39
36
 
40
- def scan_files(self):
37
+ def rta_cb(self, request):
38
+ """Respond to Request to Author and publish on rta_tag as needed."""
39
+ if 'action' not in request:
40
+ logging.warning(f'rta_cb malformed {request}')
41
+ logging.info(f'files rta_cb {request}')
42
+ pass
43
+
44
+ async def scan_files(self):
41
45
  """Scan folders for files."""
42
46
  update = False
43
47
  for file in self.files:
@@ -57,19 +61,10 @@ class Files():
57
61
  'name': fn.name,
58
62
  'desc': file['desc'],
59
63
  'mode': file['mode']})
60
- self.rta.value = {'__rta_id__': 0, 'dat': info}
61
-
62
- def rta_cb(self, tag):
63
- """Respond to bus requests for data to publish on rta."""
64
- logging.info(f'files rta_cb {tag.name} {tag.value}')
65
- pass
66
-
67
- async def check_files(self):
68
- """Check to see if any files have changed."""
69
- self.scan_files()
64
+ self.rta.value = {'dat': info}
70
65
 
71
66
  async def start(self):
72
67
  """Async startup."""
73
68
  await self.busclient.start()
74
- self.periodic = Periodic(self.check_files, RATE)
69
+ self.periodic = Periodic(self.scan_files, 10.0)
75
70
  await self.periodic.start()
@@ -42,7 +42,7 @@ class AccuWeatherClient:
42
42
  for record in json:
43
43
  epoch = record['EpochDateTime']
44
44
  hour = int((epoch - time_mod) / 3600)
45
- logging.warning(f'epoch {epoch} time_s {time_s} hour {hour}')
45
+ logging.info(f'epoch {epoch} time_s {time_s} hour {hour}')
46
46
  if hour not in self.api['times']:
47
47
  continue
48
48
  suffix = ''
@@ -55,11 +55,13 @@ class AccuWeatherClient:
55
55
  ['Rain', 'Rain', None, 'Value'],
56
56
  ['Snow', 'Snow', None, 'Value']
57
57
  ]:
58
- tag = self.tags[f'{site}{parm}{suffix}']
58
+ tagname = f'{site}{parm}{suffix}'
59
+ tag = self.tags[tagname]
59
60
  if key2 is None:
60
61
  value = record[key1][key]
61
62
  else:
62
63
  value = record[key1][key2][key]
64
+ logging.info(f'{tagname} was {tag.value} new {value}')
63
65
  if tag.value != value:
64
66
  tag.value = value, int(epoch * 1e6), self.map_bus
65
67
 
pymscada/www_server.py CHANGED
@@ -63,9 +63,8 @@ class WSHandler():
63
63
  # logging.debug(f'{self.rta_id} as json {message}')
64
64
  await self.ws.send_json(message)
65
65
  except asyncio.CancelledError:
66
- logging.warn(f'{self.rta_id}: send queue error, close '
67
- f'{self.ws.exception()}')
68
- return
66
+ logging.warning(f'{self.rta_id}: send queue error, close '
67
+ f'{self.ws.exception()}')
69
68
 
70
69
  def publish(self, tag: Tag):
71
70
  """
@@ -200,8 +199,8 @@ class WSHandler():
200
199
  elif msg.type == WSMsgType.BINARY:
201
200
  logging.info(f'{msg.data}')
202
201
  elif msg.type == WSMsgType.ERROR:
203
- logging.warn(f'{self.rta_id}: ws closing error '
204
- f'{self.ws.exception()}')
202
+ logging.warning(f'{self.rta_id}: ws closing error '
203
+ f'{self.ws.exception()}')
205
204
  send_queue.cancel()
206
205
  for tag in self.tag_by_id.values():
207
206
  tag.del_callback_id(self.notify_id)
@@ -263,8 +262,8 @@ class WwwServer:
263
262
  if not path.exists():
264
263
  return web.HTTPNotFound(reason='no such file in path')
265
264
  return web.FileResponse(path)
266
- logging.warning(f"path not configured {request.match_info['path']}")
267
- return web.HTTPForbidden(reason='path not permitted')
265
+ # logging.warning(f"path not configured {request.match_info['path']}")
266
+ # return web.HTTPForbidden(reason='path not permitted')
268
267
 
269
268
  async def websocket_handler(self, request: web.Request):
270
269
  """Wait for connections. Create a new one each time."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymscada
3
- Version: 0.1.9
3
+ Version: 0.1.11
4
4
  Summary: Shared tag value SCADA with python backup and Angular UI
5
5
  Author-Email: Jamie Walton <jamie@walton.net.nz>
6
6
  License: GPL-3.0-or-later
@@ -10,6 +10,8 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
10
10
  Classifier: Operating System :: OS Independent
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Development Status :: 1 - Planning
13
+ Project-URL: Homepage, https://github.com/jamie0walton/pymscada
14
+ Project-URL: Bug tracker, https://github.com/jamie0walton/pymscada/issues
13
15
  Requires-Python: >=3.9
14
16
  Requires-Dist: PyYAML>=6.0.1
15
17
  Requires-Dist: aiohttp>=3.8.5
@@ -1,7 +1,7 @@
1
- pymscada-0.1.9.dist-info/METADATA,sha256=3D696ZoCkzbsYGjCUULLVPhuZLcWjBikuzCa2BvrtUs,2205
2
- pymscada-0.1.9.dist-info/WHEEL,sha256=rSwsxJWe3vzyR5HCwjWXQruDgschpei4h_giTm0dJVE,90
3
- pymscada-0.1.9.dist-info/entry_points.txt,sha256=AcZZ7HFj8k1ztP6ge-5bdRinYF8glW2s6lFEQG3esN4,57
4
- pymscada-0.1.9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
1
+ pymscada-0.1.11.dist-info/METADATA,sha256=itDYWXs3JwiNNw8EJCAtxZ6tjVmQyrnO4ufYA-xgFLw,2344
2
+ pymscada-0.1.11.dist-info/WHEEL,sha256=pM0IBB6ZwH3nkEPhtcp50KvKNX-07jYtnb1g1m6Z4Co,90
3
+ pymscada-0.1.11.dist-info/entry_points.txt,sha256=j_UgZmqFhNquuFC2M8g5-8X9FCpp2RaDb7NrExzkj1c,72
4
+ pymscada-0.1.11.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
5
5
  pymscada/__init__.py,sha256=NV_cIIwe66Ugp8ns426rtfJIIyskWbqwImD9p_5p0bQ,739
6
6
  pymscada/__main__.py,sha256=WcyVlrYOoDdktJhOoyubTOycMwpayksFdxwelRU5xpQ,272
7
7
  pymscada/bus_client.py,sha256=NWumdtLNy4-_LdTumHy687q0ebQX7fdynSp13dZgpYo,8899
@@ -36,10 +36,10 @@ pymscada/demo/pymscada-wwwserver.service,sha256=7Qy2wsMmFEsQn-b5mgAcsrAQZgXynkv8
36
36
  pymscada/demo/snmpclient.yaml,sha256=z8iACrFvMftYUtqGrRjPZYZTpn7aOXI-Kp675NAM8cU,2013
37
37
  pymscada/demo/tags.yaml,sha256=GH90X3QRBANUhvd2E9OuyIoiZD25OBihHHlDBw1uzlw,4231
38
38
  pymscada/demo/wwwserver.yaml,sha256=MhZbvnxAfkc3OutXyZVaVKif4ZD9VSch5NfBbO0T_-E,12597
39
- pymscada/files.py,sha256=FSEvFs6gNgErx_B7mtWkt6EsGNSc-TlxEbDW59NxIZs,2439
39
+ pymscada/files.py,sha256=MisnKoWvkffPMSj6sGVmm-4fh866x4UX3t9LJg4oCfk,2400
40
40
  pymscada/history.py,sha256=G079gHfzasmGtI5ANS8MdETD4bdZg5vHE_yTKk7atHw,9504
41
41
  pymscada/iodrivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- pymscada/iodrivers/accuweather.py,sha256=XS7s-E-TCnAOlWYKPZd6WTs0BCmKUiiEQDJxrCTglaY,3732
42
+ pymscada/iodrivers/accuweather.py,sha256=p_OYJtCrtbSQYjgf06Yk3Qc9wGpkx8ogn81XNGd19fE,3842
43
43
  pymscada/iodrivers/logix_client.py,sha256=eqmiYLYUBHbr7wTljomGIZVNvXe-5WleGKfzwcHXO8w,2829
44
44
  pymscada/iodrivers/logix_map.py,sha256=ljjBAMJcw199v1V5u0Yfl38U6zbZzba5mdY4I3ZvdIM,5401
45
45
  pymscada/iodrivers/modbus_client.py,sha256=DIGrEPz_Bwwj9CEeog5fQqiAu1UMV7xVL6KxlKgXNPs,9592
@@ -62,5 +62,5 @@ pymscada/tag.py,sha256=Oxh70q2MrPAEI94v4QsWt4gD8QP6BlfzNv9xXeeUFys,10103
62
62
  pymscada/tools/snmp_client2.py,sha256=pdn5dYyEv4q-ubA0zQ8X-3tQDYxGC7f7Xexa7QPaL40,1675
63
63
  pymscada/tools/walk.py,sha256=OgpprUbKLhEWMvJGfU1ckUt_PFEpwZVOD8HucCgzmOc,1625
64
64
  pymscada/validate.py,sha256=VPpAVEwfgori5OREEwWlbPoPxz5Tfqr6dw-O5pINHyI,13125
65
- pymscada/www_server.py,sha256=LzkT1DiKq6ql66MPncHefYU3qgoi9HxoYLETjjTMNvY,12024
66
- pymscada-0.1.9.dist-info/RECORD,,
65
+ pymscada/www_server.py,sha256=bDa3Mh1Dcjk67yk3nPd6HadWF8GjoDYY1t_1g8mfmdk,12021
66
+ pymscada-0.1.11.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: pdm-backend (2.3.3)
2
+ Generator: pdm-backend (2.4.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,3 +1,5 @@
1
1
  [console_scripts]
2
2
  pymscada = pymscada.__main__:cmd_line
3
3
 
4
+ [gui_scripts]
5
+