-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaindev.py
More file actions
63 lines (50 loc) · 1.85 KB
/
Copy pathmaindev.py
File metadata and controls
63 lines (50 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import os
import json
import uvicorn
from multiprocessing import Process
from disinfo.renderers.background import main as background_renderer
from disinfo.drat.app_states import PubSubManager, PubSubMessage
from disinfo.drat.data_service import main as data_service_main
from disinfo.redis import publish
acts = []
def passthru_acts(channel_name, message: PubSubMessage):
global acts
acts.append(message.payload['cmd'])
PubSubManager().attach('maindev', ('di.pubsub.acts',), passthru_acts)
def run_sensors():
os.environ['BLINKA_MCP2221'] = '1'
from websocket_rpi_matrix.di_remote import setup as setup_sensors, sensor_loop, Config
def callback(payload):
global acts
# print(f"[maindev] Sensor payload: {payload}")
publish('di.pubsub.telemetry', action='update', payload={'data': json.dumps(payload)})
if len(acts):
local_acts = acts.copy()
acts = []
return local_acts
print("[maindev] Setting up sensors")
conf = Config(buzzer_address='0x3d', apds_proximity_enable=True, tof_enable=False, node_name='disalon')
sensors = setup_sensors(conf)
print("[maindev] Starting sensor thread")
sensor_loop(sensors, conf, callback)
def run_server():
uvicorn.run("disinfo.web.server:app", host="0.0.0.0", port=4200)
def run_background_renderer():
background_renderer(fps=38, stats=False)
if __name__ == "__main__":
procs = {
'webserver': run_server,
'renderer': run_background_renderer,
# 'data_loop': data_service_main,
'sensor_loop': run_sensors,
}
processes = []
try:
for name, proc in procs.items():
p = Process(target=proc)
p.start()
processes.append(p)
print(f"[maindev] Started process {name} with PID {p.pid}")
finally:
for p in processes:
p.join()