PWSS/main.py

82 lines
2.2 KiB
Python
Raw Normal View History

2022-01-02 00:40:42 +02:00
from flask import Flask
2022-01-02 02:29:31 +02:00
import RPi.GPIO as gpio
from time import sleep
import subprocess
2022-01-02 03:27:13 +02:00
import picamera
import pyshine as ps # pip3 install pyshine==0.0.9
2022-01-02 00:40:42 +02:00
2022-01-02 03:27:13 +02:00
# Camera server
def camera():
HTML="""
<html>
<head>
<title>PyShine Live Streaming</title>
</head>
<body>
<center><h1> PyShine Live Streaming using OpenCV </h1></center>
<center><img src="stream.mjpg" width='640' height='480' autoplay></center>
</body>
</html>
"""
StreamProps = ps.StreamProps
StreamProps.set_Page(StreamProps,HTML)
address = ('0.0.0.0',9000) # Enter your IP address
StreamProps.set_Mode(StreamProps,'picamera')
with picamera.PiCamera(resolution='640x480', framerate=30) as camera:
output = ps.StreamOut()
StreamProps.set_Output(StreamProps,output)
camera.rotation = 90
camera.start_recording(output, format='mjpeg')
try:
server = ps.Streamer(address, StreamProps)
print('Camera serving started at','http://'+address[0]+':'+str(address[1]))
server.serve_forever()
finally:
camera.stop_recording()
2022-01-02 02:29:31 +02:00
# MQ-135 gas sensor
def stinker():
gpio.setmode(gpio.BCM)
gpio.setup(4, gpio.IN)
try:
if gpio.input(4):
return False
else:
return True
sleep(2)
except KeyboardInterrupt:
print("\n")
finally:
print("clean")
gpio.cleanup()
# BME280 Humidity, Temperature, Pressure sensor
def HTP():
string = subprocess.check_output(["./HTP"]).decode(encoding='UTF-8',errors='strict')
string = string.split("temperature:")[1]
temperature = string.split(" pressure:")[0].replace("*C", "C")
string = string.split(" pressure:")[1]
pressure = string.split(" humidity:")[0]
humidity = string.split(" humidity:")[1].replace("\r\n", "")
result = {
"temperature":temperature,
"pressure":pressure,
"humidity":humidity}
# for i in string:
# if i.isdigit():
# result.append(i)
return result
# Flask server
2022-01-02 00:40:42 +02:00
app = Flask(__name__)
@app.route("/")
def hello_world():
2022-01-02 02:29:31 +02:00
return f"<p>{HTP()}</p>"
2022-01-02 00:40:42 +02:00
if __name__=="__main__":
2022-01-02 02:29:31 +02:00
app.run(host='0.0.0.0')