pymscada 0.1.11b7__tar.gz → 0.1.11b8__tar.gz

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.

Potentially problematic release.


This version of pymscada might be problematic. Click here for more details.

Files changed (89) hide show
  1. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/PKG-INFO +2 -2
  2. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/pyproject.toml +2 -2
  3. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/bus_server.py +5 -1
  4. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/tags.yaml +57 -1
  5. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/wwwserver.yaml +46 -0
  6. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/www_server.py +0 -2
  7. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/LICENSE +0 -0
  8. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/README.md +0 -0
  9. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/__init__.py +0 -0
  10. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/__main__.py +0 -0
  11. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/bus_client.py +0 -0
  12. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/checkout.py +0 -0
  13. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/config.py +0 -0
  14. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/console.py +0 -0
  15. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/README.md +0 -0
  16. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/__init__.py +0 -0
  17. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/accuweather.yaml +0 -0
  18. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/bus.yaml +0 -0
  19. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/files.yaml +0 -0
  20. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/history.yaml +0 -0
  21. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/logixclient.yaml +0 -0
  22. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/modbus_plc.py +0 -0
  23. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/modbusclient.yaml +0 -0
  24. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/modbusserver.yaml +0 -0
  25. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/openweather.yaml +0 -0
  26. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/opnotes.yaml +0 -0
  27. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/ping.yaml +0 -0
  28. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-bus.service +0 -0
  29. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-demo-modbus_plc.service +0 -0
  30. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-files.service +0 -0
  31. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-history.service +0 -0
  32. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-io-accuweather.service +0 -0
  33. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-io-logixclient.service +0 -0
  34. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-io-modbusclient.service +0 -0
  35. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-io-modbusserver.service +0 -0
  36. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-io-ping.service +0 -0
  37. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-io-snmpclient.service +0 -0
  38. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-opnotes.service +0 -0
  39. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/pymscada-wwwserver.service +0 -0
  40. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/demo/snmpclient.yaml +0 -0
  41. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/files.py +0 -0
  42. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/history.py +0 -0
  43. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/__init__.py +0 -0
  44. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/accuweather.py +0 -0
  45. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/logix_client.py +0 -0
  46. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/logix_map.py +0 -0
  47. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/modbus_client.py +0 -0
  48. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/modbus_map.py +0 -0
  49. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/modbus_server.py +0 -0
  50. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/openweather.py +0 -0
  51. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/ping_client.py +0 -0
  52. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/ping_map.py +0 -0
  53. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/snmp_client.py +0 -0
  54. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/iodrivers/snmp_map.py +0 -0
  55. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/main.py +0 -0
  56. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/misc.py +0 -0
  57. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/module_config.py +0 -0
  58. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/opnotes.py +0 -0
  59. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/pdf/__init__.py +0 -0
  60. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/pdf/one.pdf +0 -0
  61. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/pdf/two.pdf +0 -0
  62. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/periodic.py +0 -0
  63. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/protocol_constants.py +0 -0
  64. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/samplers.py +0 -0
  65. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/tag.py +0 -0
  66. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/tools/snmp_client2.py +0 -0
  67. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/tools/walk.py +0 -0
  68. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/src/pymscada/validate.py +0 -0
  69. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/__init__.py +0 -0
  70. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/bus_echo.py +0 -0
  71. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/iodrivers/test_logix.py +0 -0
  72. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/iodrivers/test_modbus.py +0 -0
  73. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/busserver.yaml +0 -0
  74. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/db.sqlite +0 -0
  75. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/hist_tag_0_0.dat +0 -0
  76. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/hist_tag_0_10_2.dat +0 -0
  77. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/hist_tag_0_15.dat +0 -0
  78. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/hist_tag_0_26.dat +0 -0
  79. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_assets/hist_tag_0_50.dat +0 -0
  80. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_bus_server.py +0 -0
  81. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_config.py +0 -0
  82. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_history.py +0 -0
  83. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_misc.py +0 -0
  84. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_openweather.py +0 -0
  85. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_opnotes.py +0 -0
  86. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_periodic.py +0 -0
  87. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_samplers.py +0 -0
  88. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_tag.py +0 -0
  89. {pymscada-0.1.11b7 → pymscada-0.1.11b8}/tests/test_validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymscada
3
- Version: 0.1.11b7
3
+ Version: 0.1.11b8
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
@@ -15,7 +15,7 @@ Project-URL: Bug Tracker, https://github.com/jamie0walton/pymscada/issues
15
15
  Requires-Python: >=3.9
16
16
  Requires-Dist: PyYAML>=6.0.1
17
17
  Requires-Dist: aiohttp>=3.8.5
18
- Requires-Dist: pymscada-html>=0.1.10b2
18
+ Requires-Dist: pymscada-html>=0.1.10b4
19
19
  Requires-Dist: cerberus>=1.3.5
20
20
  Requires-Dist: pycomm3>=1.2.14
21
21
  Requires-Dist: pysnmplib>=5.0.24
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pymscada"
3
- version = "0.1.11b7"
3
+ version = "0.1.11b8"
4
4
  description = "Shared tag value SCADA with python backup and Angular UI"
5
5
  authors = [
6
6
  { name = "Jamie Walton", email = "jamie@walton.net.nz" },
@@ -8,7 +8,7 @@ authors = [
8
8
  dependencies = [
9
9
  "PyYAML>=6.0.1",
10
10
  "aiohttp>=3.8.5",
11
- "pymscada-html>=0.1.10b2",
11
+ "pymscada-html>=0.1.10b4",
12
12
  "cerberus>=1.3.5",
13
13
  "pycomm3>=1.2.14",
14
14
  "pysnmplib>=5.0.24",
@@ -265,7 +265,11 @@ class BusServer:
265
265
  if len(data) > 300:
266
266
  logging.warning(f'process: log message too long from {bus_id}')
267
267
  else:
268
- logging.warning(data.decode())
268
+ log_msg = data.decode()
269
+ logging.warning(log_msg)
270
+ client_addr = self.connections[bus_id].addr
271
+ self.bus_tag.value = f'\x03{client_addr}: {log_msg}'.encode()
272
+ self.bus_tag.time_us = int(time.time() * 1e6)
269
273
  else: # consider disconnecting
270
274
  logging.warn(f'invalid message {cmd}')
271
275
 
@@ -116,4 +116,60 @@ localhost_ping:
116
116
  google_ping:
117
117
  desc: Ping time to google
118
118
  type: float
119
- units: ms
119
+ units: ms
120
+ Murupara_Temp:
121
+ desc: Murupara Temperature
122
+ type: float
123
+ units: '°C'
124
+ dp: 1
125
+ min: -50
126
+ max: 50
127
+ Murupara_WindSpeed:
128
+ desc: Murupara Wind Speed
129
+ type: float
130
+ units: 'm/s'
131
+ dp: 1
132
+ min: 0
133
+ max: 200
134
+ Murupara_WindDir:
135
+ desc: Murupara Wind Direction
136
+ type: float
137
+ units: '°'
138
+ dp: 0
139
+ min: 0
140
+ max: 360
141
+ Murupara_Rain:
142
+ desc: Murupara Rainfall
143
+ type: float
144
+ units: 'mm'
145
+ dp: 1
146
+ min: 0
147
+ max: 1000
148
+ Murupara_Temp_03:
149
+ desc: Murupara Temperature 3-Hour Forecast
150
+ type: float
151
+ units: '°C'
152
+ dp: 1
153
+ min: -50
154
+ max: 50
155
+ Murupara_WindSpeed_03:
156
+ desc: Murupara Wind Speed 3-Hour Forecast
157
+ type: float
158
+ units: 'm/s'
159
+ dp: 1
160
+ min: 0
161
+ max: 200
162
+ Murupara_WindDir_03:
163
+ desc: Murupara Wind Direction 3-Hour Forecast
164
+ type: float
165
+ units: '°'
166
+ dp: 0
167
+ min: 0
168
+ max: 360
169
+ Murupara_Rain_03:
170
+ desc: Murupara Rainfall 3-Hour Forecast
171
+ type: float
172
+ units: 'mm'
173
+ dp: 1
174
+ min: 0
175
+ max: 1000
@@ -78,3 +78,49 @@ pages:
78
78
  scale: mS
79
79
  color: red
80
80
  dp: 1
81
+ - name: Weather
82
+ parent:
83
+ items:
84
+ - type: uplot
85
+ ms:
86
+ desc: Weather
87
+ age: 172800
88
+ legend_pos: left
89
+ time_pos: left
90
+ time_res: m
91
+ axes:
92
+ - scale: x
93
+ range: [-86400, 0] # 24 hours of data
94
+ - scale: temp
95
+ range: [-10, 40] # Temperature in Celsius
96
+ dp: 1
97
+ - scale: wind
98
+ range: [0, 100] # Wind speed in km/h
99
+ dp: 1
100
+ - scale: dir
101
+ range: [0, 360] # Wind direction in degrees
102
+ dp: 0
103
+ - scale: rain
104
+ range: [0, 50] # Rain in mm
105
+ dp: 1
106
+ series:
107
+ - tagname: Murupara_Temp
108
+ label: Temperature
109
+ scale: temp
110
+ color: red
111
+ dp: 1
112
+ - tagname: Murupara_WindSpeed
113
+ label: Wind Speed
114
+ scale: wind
115
+ color: blue
116
+ dp: 1
117
+ - tagname: Murupara_WindDir
118
+ label: Wind Direction
119
+ scale: dir
120
+ color: green
121
+ dp: 0
122
+ - tagname: Murupara_Rain
123
+ label: Rainfall
124
+ scale: rain
125
+ color: lightblue
126
+ dp: 1
@@ -182,8 +182,6 @@ class WSHandler():
182
182
  if action == 'set': # pc.CMD_SET
183
183
  self.tag_by_name[tagname].value = value, time_us, bus
184
184
  elif action == 'rta': # pc.CMD_RTA
185
- if tagname not in self.tag_by_name:
186
- self.do_sub(tagname)
187
185
  if 'File' in value:
188
186
  file = await anext(self.ws)
189
187
  value['_file_data'] = file.data
File without changes
File without changes