feat: wifi hotspot provisioning + config integrations block

This commit is contained in:
2026-06-11 11:03:23 +02:00
parent 9efade68ce
commit c19df470f6
3 changed files with 28 additions and 4 deletions

View File

@@ -14,6 +14,22 @@
"node_label": "terminal-01",
"identity_iot_url": "https://api.parta.app/API/V1/identity_layer/identity_iot/",
"identity_tag_url": "https://api.parta.app/API/V1/identity_tag/",
"integrations": {
"openweather": {
"api_key": "abc123"
},
"mqtt": {
"host": "broker.example.com",
"port": 1883,
"username": "user",
"password": "pass",
"topic": "sensors/node-01"
},
"webhook": {
"url": "https://hooks.example.com/xyz",
"api_key": "secret"
}
},
"data_destination_url": "",
"pinout": {
"i2c0_sda": 4,

View File

@@ -11,6 +11,7 @@
["node_access_control.py", "https://git.aeonianengineering.net/wide/identity-micropython-tag/raw/branch/main/node_access_control.py"],
["node_sensor.py", "https://git.aeonianengineering.net/wide/identity-micropython-tag/raw/branch/main/node_sensor.py"],
["node_relay.py", "https://git.aeonianengineering.net/wide/identity-micropython-tag/raw/branch/main/node_relay.py"],
["node_access_control.py", "https://git.aeonianengineering.net/wide/identity-micropython-tag/raw/branch/main/node_access_control.py"],
["main.py", "https://git.aeonianengineering.net/wide/identity-micropython-tag/raw/branch/main/main.py"]
],
"deps": [

View File

@@ -168,9 +168,16 @@ def run_provisioning():
print('[provisioning] connection from', addr)
method, path, body = _parse_http_request(conn)
if method == 'GET' and path == '/':
info = ujson.dumps({'sn': sn, 'ip': ip, 'status': 'awaiting_provision'})
if method == 'GET' and (path == '/' or path == '/info'):
info = ujson.dumps({
'sn': sn,
'ip': ip,
'status': 'awaiting_provision',
'type': 'identity-iot',
'port': HTTP_PORT,
})
_http_response(conn, '200 OK', info)
conn.close()
elif method == 'POST' and path == '/provision':
try:
@@ -184,7 +191,7 @@ def run_provisioning():
# Basic validation
required = ['wifi_ssid', 'wifi_pass', 'comm_key', 'comm_iv',
'base_url', 'tenant_id', 'node_type', 'node_id']
'identity_iot_url', 'tenant_id', 'node_type', 'node_id']
for k in required:
if k not in cfg:
raise Exception('missing field: ' + k)
@@ -209,4 +216,4 @@ def run_provisioning():
udp.close()
srv.close()
return received_cfg
return received_cfg