48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import os
|
|
import threading
|
|
import time
|
|
|
|
import systemd.daemon
|
|
import LogstashLogging
|
|
from LogstashLogging import logstash_logger
|
|
from threading import Thread
|
|
import logging
|
|
from Battery import Battery
|
|
from Buzzer import Buzzer
|
|
|
|
__run = """raspivid -t 0 -b 5000000 -w 1280 -h 720 -fps 30 -n -o - | gst-launch-1.0 fdsrc ! video/x-h264,width=1280,height=720,framerate=30/1,noise-reduction=1,profile=high,stream-format=byte-stream ! h264parse ! queue ! flvmux streamable=true ! rtmpsink location=\"rtmp://localhost/live/stream\""""
|
|
|
|
|
|
def check_battery():
|
|
while True:
|
|
time.sleep(2)
|
|
battery = 0
|
|
try:
|
|
battery = Battery.percent()
|
|
except Exception as e:
|
|
logstash_logger.error(f"could not check battery -> {str(e)}")
|
|
if battery <= 15:
|
|
logstash_logger.warning(f"LOW BATTERY DETECTED: '{battery}'")
|
|
Buzzer.set(True)
|
|
time.sleep(1)
|
|
Buzzer.set(False)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
systemd.daemon.notify(systemd.daemon.Notification.READY)
|
|
except:
|
|
logstash_logger.warning("Warning, old systemd version detected")
|
|
systemd.daemon.notify('READY=1')
|
|
|
|
logstash_logger.info("starting battery checker")
|
|
try:
|
|
battery_checker = threading.Thread(target=check_battery)
|
|
battery_checker.start()
|
|
logstash_logger.info("starting battery checker - DONE")
|
|
except Exception as e:
|
|
logstash_logger.error(f"could not start battery checker -> {str(e)}")
|
|
|
|
logstash_logger.info("starting gstreamer background process")
|
|
os.system(__run)
|
|
logstash_logger.error("gstreamer stopped...")
|