|
import requests |
|
import websocket |
|
import threading |
|
import json |
|
|
|
class DeepBoreAI: |
|
def __init__(self, host='http://localhost:8000'): |
|
self.host = host |
|
|
|
def post_telemetry(self, data: dict): |
|
url = f"{self.host}/ingest" |
|
response = requests.post(url, json=data) |
|
return response.json() |
|
|
|
def get_recent_alerts(self): |
|
url = f"{self.host}/history" |
|
response = requests.get(url) |
|
return response.json() |
|
|
|
def export_csv(self, out_path='drilling_data.csv'): |
|
url = f"{self.host}/export" |
|
r = requests.get(url) |
|
with open(out_path, 'wb') as f: |
|
f.write(r.content) |
|
return out_path |
|
|
|
def watch_live(self, callback): |
|
def on_message(ws, message): |
|
data = json.loads(message) |
|
callback(data) |
|
|
|
ws = websocket.WebSocketApp(f"{self.host.replace('http', 'ws')}/ws", |
|
on_message=on_message) |
|
thread = threading.Thread(target=ws.run_forever) |
|
thread.daemon = True |
|
thread.start() |
|
return ws |