68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
from flask import Flask, request, jsonify
|
|
from datetime import datetime
|
|
import sqlite3
|
|
from instances.db import init_db
|
|
|
|
app = Flask(__name__)
|
|
|
|
# Variable to store the status of inputs and outputs
|
|
status = {
|
|
"input1": "off",
|
|
"relay1": "off"
|
|
}
|
|
|
|
@app.route('/log', methods=['POST'])
|
|
def log():
|
|
data = request.json
|
|
if not data:
|
|
return jsonify({"error": "No data provided"}), 400
|
|
|
|
# Extract data from the JSON payload
|
|
hostname = data.get('hostname', 'unknown')
|
|
ip_address = data.get('ip_address', 'unknown')
|
|
message = data.get('message', '')
|
|
|
|
print(f"Board hostname: {hostname}")
|
|
print(f"Board IP address: {ip_address}")
|
|
print(f"Message: {message}")
|
|
|
|
# Update the status of inputs and relays based on the message
|
|
if 'input1' in message:
|
|
status['input1'] = 'on' if 'input1 on' in message else 'off'
|
|
print(f"Input 1 is {status['input1']}")
|
|
if 'relay1' in message:
|
|
status['relay1'] = 'on' if 'relay1 on' in message else 'off'
|
|
print(f"Relay 1 status is {status['relay1']}")
|
|
|
|
# Record the log in the database
|
|
conn = sqlite3.connect('logs.db')
|
|
c = conn.cursor()
|
|
c.execute("INSERT INTO logs (timestamp, hostname, ip_address, message) VALUES (?, ?, ?, ?)",
|
|
(datetime.now().isoformat(), hostname, ip_address, message))
|
|
conn.commit()
|
|
|
|
# Update the board status in the database
|
|
c.execute('''INSERT OR REPLACE INTO boards (hostname, ip_address, input1, relay1)
|
|
VALUES (?, ?, ?, ?)''',
|
|
(hostname, ip_address, status['input1'], status['relay1']))
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
return jsonify({"message": "Log received"}), 200
|
|
|
|
@app.route('/control', methods=['POST'])
|
|
def control():
|
|
data = request.json
|
|
if not data:
|
|
return jsonify({"error": "No data provided"}), 400
|
|
|
|
# Control the relays based on the received data
|
|
if 'relay1' in data:
|
|
status['relay1'] = data['relay1']
|
|
print(f"Setting Relay 1 to {data['relay1']}")
|
|
|
|
return jsonify({"message": "Control command received"}), 200
|
|
|
|
if __name__ == '__main__':
|
|
init_db()
|
|
app.run(host='0.0.0.0', port=80) |