74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
import os
|
|
import threading
|
|
import time
|
|
|
|
import systemd.daemon
|
|
import LogstashLogging
|
|
from LogstashLogging import logstash_logger
|
|
from threading import Thread
|
|
import logging
|
|
import socket
|
|
|
|
RUN_IP_CHECK = False
|
|
try:
|
|
from compLib.Display import Display
|
|
from compLib.Spi import Spi
|
|
except Exception as e:
|
|
logstash_logger.warning(f"Could not import display or spi for ip output {str(e)}")
|
|
|
|
|
|
__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\""""
|
|
|
|
STREAM_RASPI = False if os.getenv("STREAM_RASPI", "false") == "false" else True
|
|
IP_OUTPUT = False if os.getenv("IP_OUTPUT", "false") == "false" else True
|
|
|
|
|
|
def get_ip():
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
try:
|
|
s.connect(('10.255.255.255', 1))
|
|
IP = s.getsockname()[0]
|
|
except Exception:
|
|
IP = '127.0.0.1'
|
|
finally:
|
|
s.close()
|
|
return IP
|
|
|
|
|
|
def write_ip_to_screen():
|
|
while not os.getenv("IP_OUTPUT", "false") == "false":
|
|
ip = str(get_ip())
|
|
logstash_logger.info(f"writing {ip} to display")
|
|
Display.write(1, ip)
|
|
time.sleep(60)
|
|
|
|
|
|
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 ip output")
|
|
ip_output = None
|
|
if RUN_IP_CHECK and IP_OUTPUT:
|
|
try:
|
|
Spi.disable_health_check()
|
|
ip_output = threading.Thread(target=write_ip_to_screen)
|
|
ip_output.start()
|
|
logstash_logger.info("starting ip output - DONE")
|
|
except Exception as e:
|
|
logstash_logger.error(f"could not start ip output -> {str(e)}")
|
|
|
|
if STREAM_RASPI:
|
|
logstash_logger.info("starting gstreamer background process")
|
|
os.system(__run)
|
|
logstash_logger.error("gstreamer stopped...")
|
|
else:
|
|
logstash_logger.info("not starting gstreamer background process and only checking for battery")
|
|
if ip_output is not None:
|
|
ip_output.join()
|
|
else:
|
|
logstash_logger.info("ip display output failed to initialize.. sleeping for a day, good night")
|
|
time.sleep(60*60*24)
|