arthexis 0.1.13__py3-none-any.whl → 0.1.14__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.

Potentially problematic release.


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

Files changed (107) hide show
  1. {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/METADATA +222 -221
  2. arthexis-0.1.14.dist-info/RECORD +109 -0
  3. {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/licenses/LICENSE +674 -674
  4. config/__init__.py +5 -5
  5. config/active_app.py +15 -15
  6. config/asgi.py +43 -43
  7. config/auth_app.py +7 -7
  8. config/celery.py +32 -32
  9. config/context_processors.py +67 -69
  10. config/horologia_app.py +7 -7
  11. config/loadenv.py +11 -11
  12. config/logging.py +59 -48
  13. config/middleware.py +25 -25
  14. config/offline.py +49 -49
  15. config/settings.py +691 -682
  16. config/settings_helpers.py +109 -109
  17. config/urls.py +171 -166
  18. config/wsgi.py +17 -17
  19. core/admin.py +3771 -2809
  20. core/admin_history.py +50 -50
  21. core/admindocs.py +151 -151
  22. core/apps.py +356 -272
  23. core/auto_upgrade.py +57 -57
  24. core/backends.py +265 -236
  25. core/changelog.py +342 -0
  26. core/entity.py +133 -133
  27. core/environment.py +61 -61
  28. core/fields.py +168 -168
  29. core/form_fields.py +75 -75
  30. core/github_helper.py +188 -25
  31. core/github_issues.py +178 -172
  32. core/github_repos.py +72 -0
  33. core/lcd_screen.py +78 -78
  34. core/liveupdate.py +25 -25
  35. core/log_paths.py +100 -100
  36. core/mailer.py +85 -85
  37. core/middleware.py +91 -91
  38. core/models.py +3609 -2795
  39. core/notifications.py +105 -105
  40. core/public_wifi.py +267 -227
  41. core/reference_utils.py +108 -108
  42. core/release.py +721 -368
  43. core/rfid_import_export.py +113 -0
  44. core/sigil_builder.py +149 -149
  45. core/sigil_context.py +20 -20
  46. core/sigil_resolver.py +315 -315
  47. core/system.py +752 -493
  48. core/tasks.py +408 -394
  49. core/temp_passwords.py +181 -181
  50. core/test_system_info.py +186 -139
  51. core/tests.py +2095 -1521
  52. core/tests_liveupdate.py +17 -17
  53. core/urls.py +11 -11
  54. core/user_data.py +641 -633
  55. core/views.py +2175 -1417
  56. core/widgets.py +213 -94
  57. core/workgroup_urls.py +17 -17
  58. core/workgroup_views.py +94 -94
  59. nodes/admin.py +1720 -1161
  60. nodes/apps.py +87 -85
  61. nodes/backends.py +160 -160
  62. nodes/dns.py +203 -203
  63. nodes/feature_checks.py +133 -133
  64. nodes/lcd.py +165 -165
  65. nodes/models.py +1737 -1597
  66. nodes/reports.py +411 -411
  67. nodes/rfid_sync.py +195 -0
  68. nodes/signals.py +18 -0
  69. nodes/tasks.py +46 -46
  70. nodes/tests.py +3810 -3116
  71. nodes/urls.py +15 -14
  72. nodes/utils.py +121 -105
  73. nodes/views.py +683 -619
  74. ocpp/admin.py +948 -948
  75. ocpp/apps.py +25 -25
  76. ocpp/consumers.py +1565 -1459
  77. ocpp/evcs.py +844 -844
  78. ocpp/evcs_discovery.py +158 -158
  79. ocpp/models.py +917 -917
  80. ocpp/reference_utils.py +42 -42
  81. ocpp/routing.py +11 -11
  82. ocpp/simulator.py +745 -745
  83. ocpp/status_display.py +26 -26
  84. ocpp/store.py +601 -541
  85. ocpp/tasks.py +31 -31
  86. ocpp/test_export_import.py +130 -130
  87. ocpp/test_rfid.py +913 -702
  88. ocpp/tests.py +4445 -4094
  89. ocpp/transactions_io.py +189 -189
  90. ocpp/urls.py +50 -50
  91. ocpp/views.py +1479 -1251
  92. pages/admin.py +708 -539
  93. pages/apps.py +10 -10
  94. pages/checks.py +40 -40
  95. pages/context_processors.py +127 -119
  96. pages/defaults.py +13 -13
  97. pages/forms.py +198 -198
  98. pages/middleware.py +205 -153
  99. pages/models.py +607 -426
  100. pages/tests.py +2612 -2200
  101. pages/urls.py +25 -25
  102. pages/utils.py +12 -12
  103. pages/views.py +1165 -1128
  104. arthexis-0.1.13.dist-info/RECORD +0 -105
  105. nodes/actions.py +0 -70
  106. {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/WHEEL +0 -0
  107. {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/top_level.txt +0 -0
@@ -1,221 +1,222 @@
1
- Metadata-Version: 2.4
2
- Name: arthexis
3
- Version: 0.1.13
4
- Summary: Django-based MESH system
5
- Author-email: "Rafael J. Guillén-Osorio" <tecnologia@gelectriic.com>
6
- License-Expression: GPL-3.0-only
7
- Project-URL: Repository, https://github.com/arthexis/arthexis
8
- Project-URL: Homepage, https://arthexis.com
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Framework :: Django
11
- Requires-Python: >=3.10
12
- Description-Content-Type: text/markdown
13
- License-File: LICENSE
14
- Requires-Dist: amqp==5.3.1
15
- Requires-Dist: annotated-types==0.7.0
16
- Requires-Dist: anyio==4.9.0
17
- Requires-Dist: asgiref==3.9.1
18
- Requires-Dist: atproto==0.0.61
19
- Requires-Dist: attrs==25.3.0
20
- Requires-Dist: autobahn==24.4.2
21
- Requires-Dist: Automat==25.4.16
22
- Requires-Dist: billiard==4.2.1
23
- Requires-Dist: bleach==6.2.0
24
- Requires-Dist: black==24.10.0
25
- Requires-Dist: celery==5.5.3
26
- Requires-Dist: certifi==2025.7.14
27
- Requires-Dist: cffi==1.17.1
28
- Requires-Dist: channels==4.1.0
29
- Requires-Dist: charset-normalizer==3.4.2
30
- Requires-Dist: click==8.2.1
31
- Requires-Dist: click-didyoumean==0.3.1
32
- Requires-Dist: click-plugins==1.1.1.2
33
- Requires-Dist: click-repl==0.3.0
34
- Requires-Dist: colorama==0.4.6
35
- Requires-Dist: constantly==23.10.4
36
- Requires-Dist: cron-descriptor==1.4.5
37
- Requires-Dist: cryptography==45.0.5
38
- Requires-Dist: daphne==4.2.1
39
- Requires-Dist: diff-match-patch==20241021
40
- Requires-Dist: defusedxml==0.7.1
41
- Requires-Dist: Django==5.2.4
42
- Requires-Dist: django-celery-beat==2.8.1
43
- Requires-Dist: django-debug-toolbar==6.0.0
44
- Requires-Dist: django-import-export==4.3.9
45
- Requires-Dist: django-object-actions==5.0.0
46
- Requires-Dist: django-otp==1.5.4
47
- Requires-Dist: django-timezone-field==7.1
48
- Requires-Dist: dnspython==2.7.0
49
- Requires-Dist: docutils==0.22
50
- Requires-Dist: gpiozero==2.0.1; sys_platform == "linux"
51
- Requires-Dist: graphviz==0.20.3
52
- Requires-Dist: h11==0.16.0
53
- Requires-Dist: httpcore==1.0.9
54
- Requires-Dist: httpx==0.28.1
55
- Requires-Dist: hyperlink==21.0.0
56
- Requires-Dist: idna==3.10
57
- Requires-Dist: incremental==24.7.2
58
- Requires-Dist: kombu==5.5.4
59
- Requires-Dist: libipld==3.1.1
60
- Requires-Dist: Markdown==3.8.2
61
- Requires-Dist: mdx_truly_sane_lists==1.3
62
- Requires-Dist: mcp==1.14.0
63
- Requires-Dist: mfrc522==0.0.7; sys_platform == "linux"
64
- Requires-Dist: outcome==1.3.0.post0
65
- Requires-Dist: packaging==25.0
66
- Requires-Dist: pillow==11.3.0
67
- Requires-Dist: prompt_toolkit==3.0.51
68
- Requires-Dist: psutil==5.9.8
69
- Requires-Dist: psycopg==3.2.9
70
- Requires-Dist: psycopg-binary==3.2.9
71
- Requires-Dist: pyasn1==0.6.1
72
- Requires-Dist: pyasn1_modules==0.4.2
73
- Requires-Dist: pycparser==2.22
74
- Requires-Dist: pydantic==2.11.7
75
- Requires-Dist: pydantic_core==2.33.2
76
- Requires-Dist: pyOpenSSL==25.1.0
77
- Requires-Dist: pyperclip==1.9.0
78
- Requires-Dist: PySocks==1.7.1
79
- Requires-Dist: python-crontab==3.3.0
80
- Requires-Dist: python-dateutil==2.9.0.post0
81
- Requires-Dist: python-dotenv==1.1.1
82
- Requires-Dist: qrcode==8.2
83
- Requires-Dist: redis==5.0.8
84
- Requires-Dist: requests==2.32.4
85
- Requires-Dist: selenium==4.34.2
86
- Requires-Dist: service-identity==24.2.0
87
- Requires-Dist: setuptools==80.9.0
88
- Requires-Dist: six==1.17.0
89
- Requires-Dist: smbus2==0.5.0
90
- Requires-Dist: sniffio==1.3.1
91
- Requires-Dist: sortedcontainers==2.4.0
92
- Requires-Dist: sqlparse==0.5.3
93
- Requires-Dist: tablib==3.8.0
94
- Requires-Dist: tinycss2==1.4.0
95
- Requires-Dist: toml==0.10.2
96
- Requires-Dist: trio==0.30.0
97
- Requires-Dist: trio-websocket==0.12.2
98
- Requires-Dist: Twisted==25.5.0
99
- Requires-Dist: twine==6.1.0
100
- Requires-Dist: txaio==25.6.1
101
- Requires-Dist: typing-inspection==0.4.1
102
- Requires-Dist: typing_extensions==4.14.1
103
- Requires-Dist: tzdata==2025.2
104
- Requires-Dist: urllib3==2.5.0
105
- Requires-Dist: vine==5.1.0
106
- Requires-Dist: wcwidth==0.2.13
107
- Requires-Dist: webencodings==0.5.1
108
- Requires-Dist: websocket-client==1.8.0
109
- Requires-Dist: websockets==13.1
110
- Requires-Dist: whitenoise==6.9.0
111
- Requires-Dist: plyer==2.1.0; sys_platform == "win32"
112
- Requires-Dist: wsproto==1.2.0
113
- Requires-Dist: zope.interface==7.2
114
- Dynamic: license-file
115
-
116
- # Arthexis Constellation
117
-
118
- [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [![OCPP 1.6 Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)](https://github.com/arthexis/arthexis/blob/main/docs/development/ocpp-user-manual.md)
119
-
120
- ## Purpose
121
-
122
- Arthexis Constellation is a [narrative-driven](https://en.wikipedia.org/wiki/Narrative) [Django](https://www.djangoproject.com/)-based [software suite](https://en.wikipedia.org/wiki/Software_suite) that centralizes tools for managing [electric vehicle charging infrastructure](https://en.wikipedia.org/wiki/Charging_station) and orchestrating [energy](https://en.wikipedia.org/wiki/Energy)-related [products](https://en.wikipedia.org/wiki/Product_(business)) and [services](https://en.wikipedia.org/wiki/Service_(economics)).
123
-
124
- ## Current Features
125
-
126
- - Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system, handling:
127
- - Lifecycle & sessions
128
- - `BootNotification`
129
- - `Heartbeat`
130
- - `StatusNotification`
131
- - `StartTransaction`
132
- - `StopTransaction`
133
- - Access & metering
134
- - `Authorize`
135
- - `MeterValues`
136
- - Maintenance & firmware
137
- - `DiagnosticsStatusNotification`
138
- - `FirmwareStatusNotification`
139
- - [API](https://en.wikipedia.org/wiki/API) integration with [Odoo](https://www.odoo.com/), syncing:
140
- - Employee credentials via `res.users`
141
- - Product catalog lookups via `product.product`
142
- - Runs on [Windows 11](https://www.microsoft.com/windows/windows-11) and [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/)
143
- - Tested for the [Raspberry Pi 4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
144
-
145
- Project under rapid active and open development.
146
-
147
- ## Role Architecture
148
-
149
- Arthexis Constellation ships in four node roles tailored to different deployment scenarios.
150
-
151
- <table border="1" cellpadding="8" cellspacing="0">
152
- <thead>
153
- <tr>
154
- <th align="left">Role</th>
155
- <th align="left">Description &amp; Common Features</th>
156
- </tr>
157
- </thead>
158
- <tbody>
159
- <tr>
160
- <td valign="top"><strong>Terminal</strong></td>
161
- <td valign="top"><strong>Single-User Research &amp; Development</strong><br />Features: GUI Toast</td>
162
- </tr>
163
- <tr>
164
- <td valign="top"><strong>Control</strong></td>
165
- <td valign="top"><strong>Single-Device Testing &amp; Special Task Appliances</strong><br />Features: AP Public Wi-Fi, Celery Queue, GUI Toast, LCD Screen, NGINX Server, RFID Scanner</td>
166
- </tr>
167
- <tr>
168
- <td valign="top"><strong>Satellite</strong></td>
169
- <td valign="top"><strong>Multi-Device Edge, Network &amp; Data Acquisition</strong><br />Features: AP Router, Celery Queue, NGINX Server, RFID Scanner</td>
170
- </tr>
171
- <tr>
172
- <td valign="top"><strong>Constellation</strong></td>
173
- <td valign="top"><strong>Multi-User Cloud &amp; Orchestration</strong><br />Features: Celery Queue, NGINX Server</td>
174
- </tr>
175
- </tbody>
176
- </table>
177
-
178
- ## Quick Guide
179
-
180
- ### 1. Clone
181
- - **[Linux](https://en.wikipedia.org/wiki/Linux)**: open a [terminal](https://en.wikipedia.org/wiki/Command-line_interface) and run `git clone https://github.com/arthexis/arthexis.git`.
182
- - **[Windows](https://en.wikipedia.org/wiki/Microsoft_Windows)**: open [PowerShell](https://learn.microsoft.com/powershell/) or [Git Bash](https://gitforwindows.org/) and run the same command.
183
-
184
- ### 2. Start and stop
185
- Terminal nodes can start directly with the scripts below without installing; Control, Satellite, and Constellation roles require installation first. Both approaches listen on [`http://localhost:8000/`](http://localhost:8000/) by default.
186
-
187
- - **[VS Code](https://code.visualstudio.com/)**
188
- - Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
189
- - Select the **Run Server** (or **Debug Server**) configuration.
190
- - Press the green start button. Stop the server with the red square button (`Shift+F5`).
191
-
192
- - **[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
193
- - Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
194
- - Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
195
-
196
- ### 3. Install and upgrade
197
- - **Linux:**
198
- - Run [`./install.sh`](install.sh) with a node role flag:
199
- - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
200
- - `--control` – prepares the single-device testing appliance.
201
- - `--satellite` – configures the edge data acquisition node.
202
- - `--constellation` – enables the multi-user orchestration stack.
203
- - Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
204
- - Upgrade with [`./upgrade.sh`](upgrade.sh).
205
-
206
- - **Windows:**
207
- - Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
208
- - Installation is not required to start in Terminal mode (the default).
209
-
210
- ### 4. Administration
211
- Visit [`http://localhost:8000/admin/`](http://localhost:8000/admin/) for the [Django admin](https://docs.djangoproject.com/en/stable/ref/contrib/admin/) and [`http://localhost:8000/admindocs/`](http://localhost:8000/admindocs/) for the [admindocs](https://docs.djangoproject.com/en/stable/ref/contrib/admin/admindocs/). Use `--port` with the start scripts or installer when you need to expose a different port.
212
-
213
- ## Support
214
-
215
- Contact us at [tecnologia@gelectriic.com](mailto:tecnologia@gelectriic.com) or visit our [web page](https://www.gelectriic.com/) for [professional services](https://en.wikipedia.org/wiki/Professional_services) and [commercial support](https://en.wikipedia.org/wiki/Technical_support).
216
-
217
- ## About Me
218
-
219
- > "What, you want to know about me too? Well, I enjoy [developing software](https://en.wikipedia.org/wiki/Software_development), [role-playing games](https://en.wikipedia.org/wiki/Role-playing_game), long walks on the [beach](https://en.wikipedia.org/wiki/Beach) and a fourth secret thing."
220
- > --Arthexis
221
-
1
+ Metadata-Version: 2.4
2
+ Name: arthexis
3
+ Version: 0.1.14
4
+ Summary: Django-based MESH system
5
+ Author-email: "Rafael J. Guillén-Osorio" <tecnologia@gelectriic.com>
6
+ License-Expression: GPL-3.0-only
7
+ Project-URL: Repository, https://github.com/arthexis/arthexis
8
+ Project-URL: Homepage, https://arthexis.com
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Framework :: Django
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: amqp==5.3.1
15
+ Requires-Dist: annotated-types==0.7.0
16
+ Requires-Dist: anyio==4.9.0
17
+ Requires-Dist: asgiref==3.10.0
18
+ Requires-Dist: atproto==0.0.61
19
+ Requires-Dist: attrs==25.3.0
20
+ Requires-Dist: autobahn==24.4.2
21
+ Requires-Dist: Automat==25.4.16
22
+ Requires-Dist: billiard==4.2.2
23
+ Requires-Dist: bleach==6.2.0
24
+ Requires-Dist: black==25.9.0
25
+ Requires-Dist: celery==5.5.3
26
+ Requires-Dist: certifi==2025.7.14
27
+ Requires-Dist: cffi==2.0.0
28
+ Requires-Dist: channels==4.1.0
29
+ Requires-Dist: charset-normalizer==3.4.2
30
+ Requires-Dist: click==8.2.1
31
+ Requires-Dist: click-didyoumean==0.3.1
32
+ Requires-Dist: click-plugins==1.1.1.2
33
+ Requires-Dist: click-repl==0.3.0
34
+ Requires-Dist: colorama==0.4.6
35
+ Requires-Dist: constantly==23.10.4
36
+ Requires-Dist: cron-descriptor==1.4.5
37
+ Requires-Dist: cryptography==45.0.5
38
+ Requires-Dist: daphne==4.2.1
39
+ Requires-Dist: diff-match-patch==20241021
40
+ Requires-Dist: defusedxml==0.7.1
41
+ Requires-Dist: Django==5.2.7
42
+ Requires-Dist: django-celery-beat==2.8.1
43
+ Requires-Dist: django-debug-toolbar==6.0.0
44
+ Requires-Dist: django-import-export==4.3.9
45
+ Requires-Dist: django-object-actions==5.0.0
46
+ Requires-Dist: django-otp==1.5.4
47
+ Requires-Dist: django-timezone-field==7.1
48
+ Requires-Dist: dnspython==2.7.0
49
+ Requires-Dist: docutils==0.22.2
50
+ Requires-Dist: gpiozero==2.0.1; sys_platform == "linux"
51
+ Requires-Dist: graphviz==0.21
52
+ Requires-Dist: h11==0.16.0
53
+ Requires-Dist: httpcore==1.0.9
54
+ Requires-Dist: httpx==0.28.1
55
+ Requires-Dist: hyperlink==21.0.0
56
+ Requires-Dist: idna==3.10
57
+ Requires-Dist: incremental==24.7.2
58
+ Requires-Dist: kombu==5.5.4
59
+ Requires-Dist: libipld==3.1.1
60
+ Requires-Dist: Markdown==3.8.2
61
+ Requires-Dist: mdx_truly_sane_lists==1.3
62
+ Requires-Dist: mcp==1.16.0
63
+ Requires-Dist: mfrc522==0.0.7; sys_platform == "linux"
64
+ Requires-Dist: outcome==1.3.0.post0
65
+ Requires-Dist: packaging==25.0
66
+ Requires-Dist: pillow==11.3.0
67
+ Requires-Dist: prompt_toolkit==3.0.51
68
+ Requires-Dist: psutil==5.9.8
69
+ Requires-Dist: psycopg==3.2.9
70
+ Requires-Dist: psycopg-binary==3.2.9
71
+ Requires-Dist: pyasn1==0.6.1
72
+ Requires-Dist: pyasn1_modules==0.4.2
73
+ Requires-Dist: pycparser==2.22
74
+ Requires-Dist: pydantic==2.11.7
75
+ Requires-Dist: pydantic_core==2.33.2
76
+ Requires-Dist: pyOpenSSL==25.1.0
77
+ Requires-Dist: pyperclip==1.9.0
78
+ Requires-Dist: PySocks==1.7.1
79
+ Requires-Dist: python-crontab==3.3.0
80
+ Requires-Dist: python-dateutil==2.9.0.post0
81
+ Requires-Dist: python-dotenv==1.1.1
82
+ Requires-Dist: qrcode==8.2
83
+ Requires-Dist: redis==5.0.8
84
+ Requires-Dist: reportlab==4.2.2
85
+ Requires-Dist: requests==2.32.5
86
+ Requires-Dist: selenium==4.34.2
87
+ Requires-Dist: service-identity==24.2.0
88
+ Requires-Dist: setuptools==80.9.0
89
+ Requires-Dist: six==1.17.0
90
+ Requires-Dist: smbus2==0.5.0
91
+ Requires-Dist: sniffio==1.3.1
92
+ Requires-Dist: sortedcontainers==2.4.0
93
+ Requires-Dist: sqlparse==0.5.3
94
+ Requires-Dist: tablib==3.8.0
95
+ Requires-Dist: tinycss2==1.4.0
96
+ Requires-Dist: toml==0.10.2
97
+ Requires-Dist: trio==0.30.0
98
+ Requires-Dist: trio-websocket==0.12.2
99
+ Requires-Dist: Twisted==25.5.0
100
+ Requires-Dist: twine==6.1.0
101
+ Requires-Dist: txaio==25.6.1
102
+ Requires-Dist: typing-inspection==0.4.1
103
+ Requires-Dist: typing_extensions==4.14.1
104
+ Requires-Dist: tzdata==2025.2
105
+ Requires-Dist: urllib3==2.5.0
106
+ Requires-Dist: vine==5.1.0
107
+ Requires-Dist: wcwidth==0.2.13
108
+ Requires-Dist: webencodings==0.5.1
109
+ Requires-Dist: websocket-client==1.8.0
110
+ Requires-Dist: websockets==13.1
111
+ Requires-Dist: whitenoise==6.9.0
112
+ Requires-Dist: plyer==2.1.0; sys_platform == "win32"
113
+ Requires-Dist: wsproto==1.2.0
114
+ Requires-Dist: zope.interface==7.2
115
+ Dynamic: license-file
116
+
117
+ # Arthexis Constellation
118
+
119
+ [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [![OCPP 1.6 Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)](https://github.com/arthexis/arthexis/blob/main/docs/development/ocpp-user-manual.md)
120
+
121
+ ## Purpose
122
+
123
+ Arthexis Constellation is a [narrative-driven](https://en.wikipedia.org/wiki/Narrative) [Django](https://www.djangoproject.com/)-based [software suite](https://en.wikipedia.org/wiki/Software_suite) that centralizes tools for managing [electric vehicle charging infrastructure](https://en.wikipedia.org/wiki/Charging_station) and orchestrating [energy](https://en.wikipedia.org/wiki/Energy)-related [products](https://en.wikipedia.org/wiki/Product_(business)) and [services](https://en.wikipedia.org/wiki/Service_(economics)).
124
+
125
+ ## Current Features
126
+
127
+ - Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system, handling:
128
+ - Lifecycle & sessions
129
+ - `BootNotification`
130
+ - `Heartbeat`
131
+ - `StatusNotification`
132
+ - `StartTransaction`
133
+ - `StopTransaction`
134
+ - Access & metering
135
+ - `Authorize`
136
+ - `MeterValues`
137
+ - Maintenance & firmware
138
+ - `DiagnosticsStatusNotification`
139
+ - `FirmwareStatusNotification`
140
+ - [API](https://en.wikipedia.org/wiki/API) integration with [Odoo](https://www.odoo.com/), syncing:
141
+ - Employee credentials via `res.users`
142
+ - Product catalog lookups via `product.product`
143
+ - Runs on [Windows 11](https://www.microsoft.com/windows/windows-11) and [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/)
144
+ - Tested for the [Raspberry Pi 4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
145
+
146
+ Project under rapid active and open development.
147
+
148
+ ## Role Architecture
149
+
150
+ Arthexis Constellation ships in four node roles tailored to different deployment scenarios.
151
+
152
+ <table border="1" cellpadding="8" cellspacing="0">
153
+ <thead>
154
+ <tr>
155
+ <th align="left">Role</th>
156
+ <th align="left">Description &amp; Common Features</th>
157
+ </tr>
158
+ </thead>
159
+ <tbody>
160
+ <tr>
161
+ <td valign="top"><strong>Terminal</strong></td>
162
+ <td valign="top"><strong>Single-User Research &amp; Development</strong><br />Features: GUI Toast</td>
163
+ </tr>
164
+ <tr>
165
+ <td valign="top"><strong>Control</strong></td>
166
+ <td valign="top"><strong>Single-Device Testing &amp; Special Task Appliances</strong><br />Features: AP Public Wi-Fi, Celery Queue, GUI Toast, LCD Screen, NGINX Server, RFID Scanner</td>
167
+ </tr>
168
+ <tr>
169
+ <td valign="top"><strong>Satellite</strong></td>
170
+ <td valign="top"><strong>Multi-Device Edge, Network &amp; Data Acquisition</strong><br />Features: AP Router, Celery Queue, NGINX Server, RFID Scanner</td>
171
+ </tr>
172
+ <tr>
173
+ <td valign="top"><strong>Constellation</strong></td>
174
+ <td valign="top"><strong>Multi-User Cloud &amp; Orchestration</strong><br />Features: Celery Queue, NGINX Server</td>
175
+ </tr>
176
+ </tbody>
177
+ </table>
178
+
179
+ ## Quick Guide
180
+
181
+ ### 1. Clone
182
+ - **[Linux](https://en.wikipedia.org/wiki/Linux)**: open a [terminal](https://en.wikipedia.org/wiki/Command-line_interface) and run `git clone https://github.com/arthexis/arthexis.git`.
183
+ - **[Windows](https://en.wikipedia.org/wiki/Microsoft_Windows)**: open [PowerShell](https://learn.microsoft.com/powershell/) or [Git Bash](https://gitforwindows.org/) and run the same command.
184
+
185
+ ### 2. Start and stop
186
+ Terminal nodes can start directly with the scripts below without installing; Control, Satellite, and Constellation roles require installation first. Both approaches listen on [`http://localhost:8000/`](http://localhost:8000/) by default.
187
+
188
+ - **[VS Code](https://code.visualstudio.com/)**
189
+ - Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
190
+ - Select the **Run Server** (or **Debug Server**) configuration.
191
+ - Press the green start button. Stop the server with the red square button (`Shift+F5`).
192
+
193
+ - **[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
194
+ - Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
195
+ - Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
196
+
197
+ ### 3. Install and upgrade
198
+ - **Linux:**
199
+ - Run [`./install.sh`](install.sh) with a node role flag:
200
+ - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
201
+ - `--control` – prepares the single-device testing appliance.
202
+ - `--satellite` – configures the edge data acquisition node.
203
+ - `--constellation` enables the multi-user orchestration stack.
204
+ - Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
205
+ - Upgrade with [`./upgrade.sh`](upgrade.sh).
206
+
207
+ - **Windows:**
208
+ - Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
209
+ - Installation is not required to start in Terminal mode (the default).
210
+
211
+ ### 4. Administration
212
+ Visit [`http://localhost:8000/admin/`](http://localhost:8000/admin/) for the [Django admin](https://docs.djangoproject.com/en/stable/ref/contrib/admin/) and [`http://localhost:8000/admindocs/`](http://localhost:8000/admindocs/) for the [admindocs](https://docs.djangoproject.com/en/stable/ref/contrib/admin/admindocs/). Use `--port` with the start scripts or installer when you need to expose a different port.
213
+
214
+ ## Support
215
+
216
+ Contact us at [tecnologia@gelectriic.com](mailto:tecnologia@gelectriic.com) or visit our [web page](https://www.gelectriic.com/) for [professional services](https://en.wikipedia.org/wiki/Professional_services) and [commercial support](https://en.wikipedia.org/wiki/Technical_support).
217
+
218
+ ## About Me
219
+
220
+ > "What, you want to know about me too? Well, I enjoy [developing software](https://en.wikipedia.org/wiki/Software_development), [role-playing games](https://en.wikipedia.org/wiki/Role-playing_game), long walks on the [beach](https://en.wikipedia.org/wiki/Beach) and a fourth secret thing."
221
+ > --Arthexis
222
+
@@ -0,0 +1,109 @@
1
+ arthexis-0.1.14.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
2
+ config/__init__.py,sha256=AwpOX7il-DAOmkdJ5dVfVJ3CWWebn1lHyQNmkw1EkDw,103
3
+ config/active_app.py,sha256=KJqYh-o91nPQjVXPEdbiJHzsI6cN9IZsBZ9O3iZ6Hyc,373
4
+ config/asgi.py,sha256=T-0QSbtieEWKPIDkEcEdd-q6qjK8ZCwwjCaISOBkWdM,1296
5
+ config/auth_app.py,sha256=cLlKgFYV4VWsMACinKrpP-nZhXXbWZp1aj1RayDszRc,198
6
+ config/celery.py,sha256=c8fPkjfhKw0UQBr6FolzfdvRX2MQAV-dMokSlJ1Afgg,819
7
+ config/context_processors.py,sha256=p74ocuzPRFI9vKSeIaJ42Vu0V2GtGph1t-2DkRo4NMw,2449
8
+ config/horologia_app.py,sha256=puO_hObEYcLvE7PqcY_sGv1thnxJ018YKHKZWqNXha4,187
9
+ config/loadenv.py,sha256=CjXx-wBaTt1wixub4GJ5CMSMFqtiK5JURc7cPXpqO7s,287
10
+ config/logging.py,sha256=1cIbPgRshHuMKnVEEH0jKpRAlJSpewvLFbYDz7sCBG4,2104
11
+ config/middleware.py,sha256=mDU5tye8H4WCjpJqocwd0vmrzoVEYwdz9WTP4Hcr6dI,719
12
+ config/offline.py,sha256=X-yDcyoI4C44Y27lpkUwszY_09GwwFfazEsthKJpQ70,1382
13
+ config/settings.py,sha256=2ANaLD4_Vq3E84rDA2ulqK_DT_hu89Zj4ED5FVEjPBA,21427
14
+ config/settings_helpers.py,sha256=0BdBciUHIkwsWa0vV_RKAd4wDuEzgE7G-42XYiES4YQ,3127
15
+ config/urls.py,sha256=ad9D3kGvv6Fem1ErYo8FtXWKFfjcxVr-6lstKekbO-0,5192
16
+ config/wsgi.py,sha256=zU_mKlya6hejQ21PxKacTui3dUWd4ca_-YJNSYAoMX0,433
17
+ core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ core/admin.py,sha256=K3mgFBcBo32ZAtZxMUVUu9psekBpQ2lDNsNOw3l-BXY,136191
19
+ core/admin_history.py,sha256=XZ4b0ryufIka-xcwboK3DzmOL-INSx5Y2fJO-aJdV70,1783
20
+ core/admindocs.py,sha256=1wJkaVpOklcZnYgeksM14DoISzVpFEigeG5GUGnpji4,5216
21
+ core/apps.py,sha256=VavdJtQ_JIwyI0pbB8oByQLyzQnKNflH3Fobl6BxA6E,14316
22
+ core/auto_upgrade.py,sha256=1EffHHFylgydWdZM_id6CppV0QqBtdNw7cwBYVdbNdk,1715
23
+ core/backends.py,sha256=GLVJpkY6o0V0AyLVCO9BYByU9Logdz4tou6w5n9-Wx0,8838
24
+ core/changelog.py,sha256=grMvuEektkymwvkC1ubXFZF2JFopPybT82k4rUIlfmo,10840
25
+ core/entity.py,sha256=8R9NCZjgrNzsfOmZPAIjGrmxM9iyKHjYhLlNfE96JVI,4372
26
+ core/environment.py,sha256=JLcvxAwU3OTL8O6kzwcUCFNZ3T28KanHrU_4mDBFamU,1584
27
+ core/fields.py,sha256=d-qGahdcv4SRcO4fwCJ6_-NnEAP5xW0k3kODdAAAHSA,5412
28
+ core/form_fields.py,sha256=h2xT8sO8EWbznsiARkxukFk69yoW6mQwqpgonA-d6aA,2496
29
+ core/github_helper.py,sha256=fkjoUPwOB19zbGuk39LNLJ5AbIVKFf3rNCtnu-JISIc,5733
30
+ core/github_issues.py,sha256=tkboxXR92_Im2Mac2eU7fHtqcO-MQMdkEmFg4f6PfDc,5006
31
+ core/github_repos.py,sha256=8KCxcEiO2Ltgde7UDTAFOyHTm_eBeZYUIZegEbrjkWA,1690
32
+ core/lcd_screen.py,sha256=WtHMlSoZXKOsdM0d-v-f8ul-LSA6FA1bEWFwho1t6s8,2573
33
+ core/liveupdate.py,sha256=22m0ueQ10-6b-9pQJHY0_5WRYA98fysXKEXOWzIr550,691
34
+ core/log_paths.py,sha256=XXi6WMJj5PvrGwcM6vBGlIEKnOAA0KZqL8b_whRQqeo,2945
35
+ core/mailer.py,sha256=ciIZBJuKMJkmo5h8ktJPVlyzghzfNvhC8TGq2CSeGEA,2744
36
+ core/middleware.py,sha256=j19K9SX-Emkv7BDDtAacR9g6RWsxhKHwCc8w23JFvMM,3388
37
+ core/models.py,sha256=q5oXmlbbpb_jvMzP_j5V8LntT5iHo1GONkNwuQZBivo,121943
38
+ core/notifications.py,sha256=LYktoKM5k4q7YYWAJuqdeKM-p0Q-3gXgfqdq71qLS68,3916
39
+ core/public_wifi.py,sha256=yydLgxOo9DmJJbM4X_23wGR3gxL3YzHno54v9GssuFA,7213
40
+ core/reference_utils.py,sha256=jeox3V4cZNxzM2Jj31g_mdb3O55zy9S2iXAZu70R1Zc,3627
41
+ core/release.py,sha256=4S8Eezq-asHEWE6U1SBlitpodiQDtpKcbWmoQtXnxNs,23774
42
+ core/rfid_import_export.py,sha256=petyhPvL0WUpehc6uGUDUhjYQ9AVvc6O49zuhDs6YFw,3516
43
+ core/sigil_builder.py,sha256=VLwbrrD7Zr3SHfIDYV-V7uv7LEGiIelCSkeGswHibuc,4843
44
+ core/sigil_context.py,sha256=GCzjfM6fcVvBtSbVNfmE6sx3HU8QnxnXrCIytnNpQzM,439
45
+ core/sigil_resolver.py,sha256=rCsypuX-0oWNfKyM1T9ZLWHY0Ezwhtk4VmI0L3krnsE,11098
46
+ core/system.py,sha256=18XJ22ZieB389M4wrUOe6HwfbJLIRA-rrStQr2Dt9Gg,22693
47
+ core/tasks.py,sha256=mZtVotqyNPOXvMY1tsQtkblLbvGcIxKUvQfx8nNZkd4,12421
48
+ core/temp_passwords.py,sha256=FieUnIUeQHmA1DoXvfJ5U6-Ayv3oDz-hSln5s_vNbA4,5271
49
+ core/test_system_info.py,sha256=V9lzW9fnCFWlOoXZpGJ2aLSqjE6oexQ6lzobbTuGNJE,6371
50
+ core/tests.py,sha256=tnv6ayCzWX0ebheC8JXzdcmTxUgCqesaVU01Ywe60rM,82830
51
+ core/tests_liveupdate.py,sha256=IquU8ztk6zbzC1bQu3Nrr3RzGzuujtPwDkANJHbxg98,510
52
+ core/urls.py,sha256=YPippON1MAP2KeZZ8jHpcLO6mvbnKn1q7fdMv5Vm9dY,425
53
+ core/user_data.py,sha256=02CfvxayELWSWZJCxWpv1Yz7EGg08yEu5MM31Khsi0U,21083
54
+ core/views.py,sha256=Ka91JsMs6uTzStuGSLdAKu0U-Lq2vc_xZ_7BBua8zaw,77158
55
+ core/widgets.py,sha256=vlR9PlFfZGlkHm5X2cqNXuEBZSj8gmWaR6MO1mMy6kg,6904
56
+ core/workgroup_urls.py,sha256=XR9IqwsSBI8epW7_-hHhWFU9wsyJfZehHwNQBhCgmpM,407
57
+ core/workgroup_views.py,sha256=vtumF3-8YaTD-K6nSd8eYvUyq3ftpvWSEwtcp5B-P6o,2889
58
+ nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ nodes/admin.py,sha256=voCMJdIa5ZDcFe76ksO9ZtmJau20ovwzPMXmWpA2eeY,61317
60
+ nodes/apps.py,sha256=AxK-sh9JBJZwNOLjqw9omCQGUQWw-45VRdYH07XhVJU,2732
61
+ nodes/backends.py,sha256=dmmbS0X2YIlCDz2KjoDf_L62dy--nuqZF1rEDoi2JHM,5921
62
+ nodes/dns.py,sha256=D5smXD7Rkh6E4MdL6TBL2WY8GgJg7Rx9z88LZrcMbTw,7048
63
+ nodes/feature_checks.py,sha256=27e4PCkZ8BGWnJCOwMcY2Bo9z7LoeZWiTZuISWGnrzk,3996
64
+ nodes/lcd.py,sha256=iKA8Wmq85KZD52aTzAU8ZmS144_gbdGMOXcE8yuECps,5758
65
+ nodes/models.py,sha256=4LZOlW6ApAA-MXuJxEFSLz9gvxcF-2B0bJSPa3u2xkc,59450
66
+ nodes/reports.py,sha256=NRYh3Y0SlZFhx31Zh2K03yO12ZrpxEHEY6T-dODA6WE,12059
67
+ nodes/rfid_sync.py,sha256=754u-Di1Fzond1LQq4i7mJAcTPRgUwsdKk3Dz5Ba1Dw,6371
68
+ nodes/signals.py,sha256=PtOKdQfb08mV1LgSZvn7ZAcfOyy2c3Xkq4AOpBQyUdE,622
69
+ nodes/tasks.py,sha256=ur59ebu9z02idmvy_IvUQt3eu9LWRyyNpkg2szvIHCQ,1522
70
+ nodes/tests.py,sha256=Ud7pecqDrCqIOxSoGYWWIiWCbqwIGhc5cTq9dJyyQEE,149770
71
+ nodes/urls.py,sha256=HmAxj6sr6nMf0lii_1UX7sNBJUcrkaiKm3R9ofUWhvM,677
72
+ nodes/utils.py,sha256=3Vtjsi5nPvKqI0bdu6dabGJlOZ6ybkeIyFiJ7JPumdM,4406
73
+ nodes/views.py,sha256=TyW7exkVaR-o2_XkJXSi9jQ_BygXOE2cQFs4xlI20Xc,22905
74
+ ocpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ ocpp/admin.py,sha256=9rmECU832lpD7Hcb4_6pkLmQ1D_y9Q6Xl9n8pa3ux8c,31449
76
+ ocpp/apps.py,sha256=i3NqrmIamNEQBT33CIqh7HOSOPmJXCMKrZ-DUd3whqg,842
77
+ ocpp/consumers.py,sha256=WYWh_eieuP7tMkewOncDpXIFH9Z5esfK9p6RYzE2mLI,64500
78
+ ocpp/evcs.py,sha256=q1mZrCVSZxXTrtYsDqH6lkeEcJ6tfSC7p9YxkDmpSCw,28883
79
+ ocpp/evcs_discovery.py,sha256=OmrzgaOHwveDRJs8AIhrM3apX8_k2PPXh_oYaYpNW3c,3876
80
+ ocpp/models.py,sha256=YixI6msHXZ_6YY2uI1iYuESZ_FmQOsSgv4HxKDrCPI8,31401
81
+ ocpp/reference_utils.py,sha256=_UR82GfE93kv4766mHyVIfdhhyYvrT59660r3H6W55M,1072
82
+ ocpp/routing.py,sha256=3kQya-MdJ00778xDmX0esQLBP05P200V45asg-CGNoo,438
83
+ ocpp/simulator.py,sha256=vnyd59QffT79AaPhmfM_jipni_nqfG57X5tXyx1rBoc,28016
84
+ ocpp/status_display.py,sha256=YGFosd5HJETA0DcLdsjvx6EfhZSnI8Aa3cMnHG2WsBE,939
85
+ ocpp/store.py,sha256=rHrP2Iq2ycMFbal1UEJVXb7r4gDtI5yifaE3nT0tjJw,18855
86
+ ocpp/tasks.py,sha256=WnO5C1T1b_Na6M7lzM_QUkwc60ZgeGZmmroupKtGnoQ,874
87
+ ocpp/test_export_import.py,sha256=Zp6xUBlRq7XkdKjOs78BhkujNQdklxi4RLxU8c-udWY,4530
88
+ ocpp/test_rfid.py,sha256=WIeCzdPgnT4XljuhmUOWF8LM2QcOktD8q5LAV3LKO_U,33015
89
+ ocpp/tests.py,sha256=d_IYxv1FJhk_0iB-z4c2GNye-ZaULjb7K0l22qszBj0,173588
90
+ ocpp/transactions_io.py,sha256=YnxI-Tv5UFxv0JuFK3XpoqFYP8eRT8sMuDiqkiMHPtU,7387
91
+ ocpp/urls.py,sha256=3T5O5DSwVk4PbhPx5p4D3UseCWvC5xV5HwJLSM6AfA8,1700
92
+ ocpp/views.py,sha256=LE2mqB5FTno4SYzBWabu9g95o77Ojo2uFtTG6K5W9F0,56311
93
+ pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
+ pages/admin.py,sha256=M2jBaGfNd4dzLhYwp7_QJZjo-USepOxBgS3DqfwgoDA,21187
95
+ pages/apps.py,sha256=AzUNXQX0yRUX5jus-5EDReDb0nOEY8DBgYaM970u6Io,288
96
+ pages/checks.py,sha256=sM8_hUVM_HOIocvtTb2sY3AaSEvbTnOlO46UchGVd-0,1527
97
+ pages/context_processors.py,sha256=8TmtbbXsX0sbkT-_kOfpINzJhUpZbLy9tMHWLVm7n9s,4277
98
+ pages/defaults.py,sha256=l36APPAZO4ub2A8Pp-lQGujKeOVYcyzU6t7-kOk8VoA,522
99
+ pages/forms.py,sha256=T0atqxdNds3IBP8N-9c5-ACf3iR9FzzmhzK4MOa24e8,7058
100
+ pages/middleware.py,sha256=KFgACZokxTju3pI_Xjg8EgMH8Pk2RhwyPt0rDMy41ic,6862
101
+ pages/models.py,sha256=naJoUvgDhRzRp1GXY220ZRGyrhh3zH8VUAmcYjX7T4I,20020
102
+ pages/tests.py,sha256=JwC6SHFh9sWPVIXSyYK4fsrLJUlG3M4y8jOctOsUcOs,102508
103
+ pages/urls.py,sha256=5krM6swAR4IrQmRDAKMUQo-iVBRL49LgcdiNG6qwEng,1042
104
+ pages/utils.py,sha256=lG1C8BlqR1B2Lxjya2zSGaiiWFKThvKhdLqgbKmm8jQ,299
105
+ pages/views.py,sha256=ltYdGZomDhsC_NNe_3G5WBCRGfeLcEtg9rQZR9uMbOU,43394
106
+ arthexis-0.1.14.dist-info/METADATA,sha256=ve3L0d9jOfZSNuGtpsevkdlZMJ1u-LXfImqd88pJPdE,9992
107
+ arthexis-0.1.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
+ arthexis-0.1.14.dist-info/top_level.txt,sha256=J2a2q8_BWrCZ8H2WFUNMBfO2jz8j2gax6zZh-_1QDac,29
109
+ arthexis-0.1.14.dist-info/RECORD,,