update
This commit is contained in:
228
services/setup_services.sh
Normal file
228
services/setup_services.sh
Normal file
@@ -0,0 +1,228 @@
|
||||
#!/bin/bash
|
||||
# File: /var/www/nebuleair_pro_4g/services/setup_services.sh
|
||||
# Purpose: Set up all systemd services for NebuleAir data collection
|
||||
# to install:
|
||||
# sudo chmod +x /var/www/nebuleair_pro_4g/services/setup_services.sh
|
||||
# sudo /var/www/nebuleair_pro_4g/services/setup_services.sh
|
||||
|
||||
echo "Setting up NebuleAir systemd services and timers..."
|
||||
|
||||
# Create directory for logs if it doesn't exist
|
||||
mkdir -p /var/www/nebuleair_pro_4g/logs
|
||||
|
||||
# Create service and timer files for NPM Data
|
||||
cat > /etc/systemd/system/nebuleair-npm-data.service << 'EOL'
|
||||
[Unit]
|
||||
Description=NebuleAir NPM Data Collection Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/NPM/get_data_modbus_v3.py
|
||||
User=root
|
||||
WorkingDirectory=/var/www/nebuleair_pro_4g
|
||||
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/npm_service.log
|
||||
StandardError=append:/var/www/nebuleair_pro_4g/logs/npm_service_errors.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
cat > /etc/systemd/system/nebuleair-npm-data.timer << 'EOL'
|
||||
[Unit]
|
||||
Description=Run NebuleAir NPM Data Collection every 10 seconds
|
||||
Requires=nebuleair-npm-data.service
|
||||
|
||||
[Timer]
|
||||
OnBootSec=10s
|
||||
OnUnitActiveSec=10s
|
||||
AccuracySec=1s
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOL
|
||||
|
||||
# Create service and timer files for Envea Data
|
||||
cat > /etc/systemd/system/nebuleair-envea-data.service << 'EOL'
|
||||
[Unit]
|
||||
Description=NebuleAir Envea Data Collection Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/envea/read_value_v2.py
|
||||
User=root
|
||||
WorkingDirectory=/var/www/nebuleair_pro_4g
|
||||
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/envea_service.log
|
||||
StandardError=append:/var/www/nebuleair_pro_4g/logs/envea_service_errors.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
cat > /etc/systemd/system/nebuleair-envea-data.timer << 'EOL'
|
||||
[Unit]
|
||||
Description=Run NebuleAir Envea Data Collection every 10 seconds
|
||||
Requires=nebuleair-envea-data.service
|
||||
|
||||
[Timer]
|
||||
OnBootSec=10s
|
||||
OnUnitActiveSec=10s
|
||||
AccuracySec=1s
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOL
|
||||
|
||||
# Create service and timer files for SARA Data (No Lock File Needed)
|
||||
cat > /etc/systemd/system/nebuleair-sara-data.service << 'EOL'
|
||||
[Unit]
|
||||
Description=NebuleAir SARA Data Transmission Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/loop/SARA_send_data_v2.py
|
||||
User=root
|
||||
WorkingDirectory=/var/www/nebuleair_pro_4g
|
||||
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/sara_service.log
|
||||
StandardError=append:/var/www/nebuleair_pro_4g/logs/sara_service_errors.log
|
||||
RuntimeMaxSec=200s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
cat > /etc/systemd/system/nebuleair-sara-data.timer << 'EOL'
|
||||
[Unit]
|
||||
Description=Run NebuleAir SARA Data Transmission every 60 seconds
|
||||
Requires=nebuleair-sara-data.service
|
||||
|
||||
[Timer]
|
||||
OnBootSec=60s
|
||||
OnUnitActiveSec=60s
|
||||
AccuracySec=1s
|
||||
# This is the key setting that prevents overlap
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOL
|
||||
|
||||
# Create service and timer files for BME280 Data
|
||||
cat > /etc/systemd/system/nebuleair-bme280-data.service << 'EOL'
|
||||
[Unit]
|
||||
Description=NebuleAir BME280 Data Collection Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/BME280/get_data_v2.py
|
||||
User=root
|
||||
WorkingDirectory=/var/www/nebuleair_pro_4g
|
||||
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/bme280_service.log
|
||||
StandardError=append:/var/www/nebuleair_pro_4g/logs/bme280_service_errors.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
cat > /etc/systemd/system/nebuleair-bme280-data.timer << 'EOL'
|
||||
[Unit]
|
||||
Description=Run NebuleAir BME280 Data Collection every 120 seconds
|
||||
Requires=nebuleair-bme280-data.service
|
||||
|
||||
[Timer]
|
||||
OnBootSec=120s
|
||||
OnUnitActiveSec=120s
|
||||
AccuracySec=1s
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOL
|
||||
|
||||
# Create service and timer files for MPPT Data
|
||||
cat > /etc/systemd/system/nebuleair-mppt-data.service << 'EOL'
|
||||
[Unit]
|
||||
Description=NebuleAir MPPT Data Collection Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/MPPT/read.py
|
||||
User=root
|
||||
WorkingDirectory=/var/www/nebuleair_pro_4g
|
||||
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/mppt_service.log
|
||||
StandardError=append:/var/www/nebuleair_pro_4g/logs/mppt_service_errors.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
cat > /etc/systemd/system/nebuleair-mppt-data.timer << 'EOL'
|
||||
[Unit]
|
||||
Description=Run NebuleAir MPPT Data Collection every 120 seconds
|
||||
Requires=nebuleair-mppt-data.service
|
||||
|
||||
[Timer]
|
||||
OnBootSec=120s
|
||||
OnUnitActiveSec=120s
|
||||
AccuracySec=1s
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOL
|
||||
|
||||
# Create service and timer files for Database Cleanup
|
||||
cat > /etc/systemd/system/nebuleair-db-cleanup-data.service << 'EOL'
|
||||
[Unit]
|
||||
Description=NebuleAir Database Cleanup Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/sqlite/flush_old_data.py
|
||||
User=root
|
||||
WorkingDirectory=/var/www/nebuleair_pro_4g
|
||||
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/db_cleanup_service.log
|
||||
StandardError=append:/var/www/nebuleair_pro_4g/logs/db_cleanup_service_errors.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOL
|
||||
|
||||
cat > /etc/systemd/system/nebuleair-db-cleanup-data.timer << 'EOL'
|
||||
[Unit]
|
||||
Description=Run NebuleAir Database Cleanup daily
|
||||
Requires=nebuleair-db-cleanup-data.service
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1h
|
||||
OnUnitActiveSec=24h
|
||||
AccuracySec=1h
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOL
|
||||
|
||||
# Reload systemd to recognize new services
|
||||
systemctl daemon-reload
|
||||
|
||||
# Enable and start all timers
|
||||
echo "Enabling and starting all services..."
|
||||
for service in npm envea sara bme280 mppt db-cleanup; do
|
||||
systemctl enable nebuleair-$service-data.timer
|
||||
systemctl start nebuleair-$service-data.timer
|
||||
echo "Started nebuleair-$service-data timer"
|
||||
done
|
||||
|
||||
echo "Checking status of all timers..."
|
||||
systemctl list-timers | grep nebuleair
|
||||
|
||||
echo "Setup complete. All NebuleAir services are now running."
|
||||
echo "To check the status of a specific service:"
|
||||
echo " sudo systemctl status nebuleair-npm-data.service"
|
||||
echo "To view logs for a specific service:"
|
||||
echo " sudo journalctl -u nebuleair-npm-data.service"
|
||||
echo "To restart a specific timer:"
|
||||
echo " sudo systemctl restart nebuleair-npm-data.timer"
|
||||
Reference in New Issue
Block a user