110 lines
3.3 KiB
Python
110 lines
3.3 KiB
Python
'''
|
|
____ ___ _ _ _
|
|
/ ___| / _ \| | (_) |_ ___
|
|
\___ \| | | | | | | __/ _ \
|
|
___) | |_| | |___| | || __/
|
|
|____/ \__\_\_____|_|\__\___|
|
|
|
|
Script to set the config
|
|
/usr/bin/python3 /var/www/nebuleair_pro_4g/sqlite/set_config.py
|
|
|
|
in case of readonly error:
|
|
sudo chmod 777 /var/www/nebuleair_pro_4g/sqlite/sensors.db
|
|
'''
|
|
|
|
import sqlite3
|
|
|
|
# Connect to (or create if not existent) the database
|
|
conn = sqlite3.connect("/var/www/nebuleair_pro_4g/sqlite/sensors.db")
|
|
cursor = conn.cursor()
|
|
|
|
print(f"Connected to database")
|
|
|
|
# Note: Using INSERT OR IGNORE to add only new configurations without overwriting existing ones
|
|
print("Adding new configurations (existing ones will be preserved)")
|
|
|
|
|
|
# Insert general configurations
|
|
config_entries = [
|
|
("modem_config_mode", "0", "bool"),
|
|
("deviceID", "XXXX", "str"),
|
|
("latitude_raw", "0", "int"),
|
|
("longitude_raw", "0", "int"),
|
|
("latitude_precision", "0", "int"),
|
|
("longitude_precision", "0", "int"),
|
|
("deviceName", "NebuleAir-proXXX", "str"),
|
|
("SaraR4_baudrate", "115200", "int"),
|
|
("NPM_solo_port", "/dev/ttyAMA5", "str"),
|
|
("sshTunnel_port", "59228", "int"),
|
|
("SARA_R4_general_status", "connected", "str"),
|
|
("SARA_R4_SIM_status", "connected", "str"),
|
|
("SARA_R4_network_status", "connected", "str"),
|
|
("SARA_R4_neworkID", "20810", "int"),
|
|
("WIFI_status", "connected", "str"),
|
|
("send_aircarto", "1", "bool"),
|
|
("send_uSpot", "0", "bool"),
|
|
("send_miotiq", "0", "bool"),
|
|
("npm_5channel", "0", "bool"),
|
|
("envea", "0", "bool"),
|
|
("windMeter", "0", "bool"),
|
|
("BME280", "0", "bool"),
|
|
("MPPT", "0", "bool"),
|
|
("NOISE", "0", "bool"),
|
|
("modem_version", "XXX", "str")
|
|
]
|
|
|
|
for key, value, value_type in config_entries:
|
|
cursor.execute(
|
|
"INSERT OR IGNORE INTO config_table (key, value, type) VALUES (?, ?, ?)",
|
|
(key, value, value_type)
|
|
)
|
|
|
|
# Clean up duplicate envea sondes first (keep only first occurrence of each name)
|
|
print("Cleaning up duplicate envea sondes...")
|
|
cursor.execute("""
|
|
DELETE FROM envea_sondes_table
|
|
WHERE id NOT IN (
|
|
SELECT MIN(id)
|
|
FROM envea_sondes_table
|
|
GROUP BY name
|
|
)
|
|
""")
|
|
deleted_count = cursor.rowcount
|
|
if deleted_count > 0:
|
|
print(f"Deleted {deleted_count} duplicate envea sonde entries")
|
|
|
|
# Insert envea sondes (only if they don't already exist)
|
|
# Attention pour le H2S il y a plusieurs sondes
|
|
# H2S 1ppm -> coef 4
|
|
# H2S 20ppm -> coef 1
|
|
# H2S 200ppm -> coef 10
|
|
|
|
envea_sondes = [
|
|
(False, "ttyAMA4", "h2s", 4), #H2S
|
|
(False, "ttyAMA3", "no2", 1),
|
|
(False, "ttyAMA3", "nh3", 100),
|
|
(False, "ttyAMA3", "so2", 4),
|
|
(False, "ttyAMA2", "o3", 1)
|
|
]
|
|
|
|
for connected, port, name, coefficient in envea_sondes:
|
|
# Check if sensor with this name already exists
|
|
cursor.execute("SELECT COUNT(*) FROM envea_sondes_table WHERE name = ?", (name,))
|
|
exists = cursor.fetchone()[0] > 0
|
|
|
|
if not exists:
|
|
cursor.execute(
|
|
"INSERT INTO envea_sondes_table (connected, port, name, coefficient) VALUES (?, ?, ?, ?)",
|
|
(1 if connected else 0, port, name, coefficient)
|
|
)
|
|
print(f"Added envea sonde: {name}")
|
|
else:
|
|
print(f"Envea sonde '{name}' already exists, skipping")
|
|
|
|
|
|
# Commit and close the connection
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
print("Database updated successfully!")
|