From 5daa54d5c61f91614166edc4eabc9f89a66d2617 Mon Sep 17 00:00:00 2001 From: podput Date: Tue, 4 Jan 2022 00:11:01 +0200 Subject: [PATCH] cleanup --- camera.py | 35 ------------ main.py | 80 -------------------------- saver.py | 35 ------------ static/style.css | 24 -------- stats.py | 130 ------------------------------------------- stats_saver.py | 35 ------------ templates/index.html | 24 -------- 7 files changed, 363 deletions(-) delete mode 100644 camera.py delete mode 100644 main.py delete mode 100644 saver.py delete mode 100644 static/style.css delete mode 100644 stats.py delete mode 100644 stats_saver.py delete mode 100644 templates/index.html diff --git a/camera.py b/camera.py deleted file mode 100644 index 694f59a..0000000 --- a/camera.py +++ /dev/null @@ -1,35 +0,0 @@ -import picamera -import pyshine as ps # pip3 install pyshine==0.0.9 -HTML=""" - - -PyShine Live Streaming - - - -

PyShine Live Streaming using OpenCV

-
- - -""" -def main(): - 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() - - -if __name__=='__main__': - main() - diff --git a/main.py b/main.py deleted file mode 100644 index 2c3bd77..0000000 --- a/main.py +++ /dev/null @@ -1,80 +0,0 @@ -from flask import Flask, render_template, jsonify, redirect, abort, request -import RPi.GPIO as gpio -from time import sleep -import subprocess -import json -import saver - -# Change this if you change the dir -HOME_DIR = "/home/pi/PWSS/" - -# 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: - pass - finally: - gpio.cleanup() - -# BME280 Humidity, Temperature, Pressure sensor -def htp(): - string = subprocess.check_output([f"{HOME_DIR}/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.replace(" ", ""), - "pressure":pressure.replace(" ", ""), - "humidity":humidity.replace(" ", "") - } - # for i in string: - # if i.isdigit(): - # result.append(i) - - return result -# Flask server -app = Flask(__name__) - -@app.route("/") -def home(): - hpt = htp() - stank = stinker() - return render_template("index.html", HTP=hpt, stinker=stank) - -@app.route("/api/all") -def all_data(): - with open(f"{HOME_DIR}/api/all.json","r") as f: - data = json.load(f) - return jsonify(data) - - -@app.route("/api/daily") -def daily_data(): - with open(f"{HOME_DIR}/api/daily.json","r") as f: - data = json.load(f) - return jsonify(data) - - -@app.route("/api/save", methods = ['GET', 'POST']) -def save_data(): - if request.method == "POST": - print("will it save?") - saver.manual() - print("saved main") - return redirect("/") - else: - return redirect("/api/all") - - -if __name__=="__main__": - app.run(host='0.0.0.0') \ No newline at end of file diff --git a/saver.py b/saver.py deleted file mode 100644 index 6f25f79..0000000 --- a/saver.py +++ /dev/null @@ -1,35 +0,0 @@ -from main import stinker, htp, HOME_DIR -from datetime import datetime -import pytz, json - -tz = pytz.timezone('Europe/Sofia') - - -def get(): - data = htp() - data["air_pollution"] = stinker() - data["time"] = datetime.now(tz).strftime("%H:%M:%S") - return data - -def daily(): - data = get() - with open("{HOME_DIR}/api/daily.json", "r+") as f: - f_data = json.load(f) - f_data[date] = data - f.seek(0) - json.dump(f_data, f, indent=4) - f.close() - - -def manual(): - data = get() - - with open(f"{HOME_DIR}/api/all.json", "r+") as f: - f_data = json.load(f) - f_data[f'{datetime.now(tz).strftime("%H:%M:%S")}&{datetime.now(tz).strftime("%x")}'] = data - f.seek(0) - json.dump(f_data, f, indent=4) - - print("Saved") - - diff --git a/static/style.css b/static/style.css deleted file mode 100644 index 8f8e147..0000000 --- a/static/style.css +++ /dev/null @@ -1,24 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Ubuntu"); - -body{ - height:100%; - display:flex; - align-items: center; - justify-content: space-around; - flex-direction: column; - font-family:"Ubuntu"; -} - -#weather-data li{ - list-style: none; -} - -#weather-data{ - font-size: xx-large; - background-color: lightgray; - padding-right: 25px; -} - -#camera{ - padding: 20px; -} \ No newline at end of file diff --git a/stats.py b/stats.py deleted file mode 100644 index ce1cb63..0000000 --- a/stats.py +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright (c) 2017 Adafruit Industries -# Author: Tony DiCola & James DeVito -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -import time - -import Adafruit_GPIO.SPI as SPI -import Adafruit_SSD1306 - -from PIL import Image -from PIL import ImageDraw -from PIL import ImageFont - -import subprocess - -# Raspberry Pi pin configuration: -RST = None # on the PiOLED this pin isnt used -# Note the following are only used with SPI: -DC = 23 -SPI_PORT = 0 -SPI_DEVICE = 0 - -# Beaglebone Black pin configuration: -# RST = 'P9_12' -# Note the following are only used with SPI: -# DC = 'P9_15' -# SPI_PORT = 1 -# SPI_DEVICE = 0 - -# 128x32 display with hardware I2C: -disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST) - -# 128x64 display with hardware I2C: -# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST) - -# Note you can change the I2C address by passing an i2c_address parameter like: -# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_address=0x3C) - -# Alternatively you can specify an explicit I2C bus number, for example -# with the 128x32 display you would use: -# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, i2c_bus=2) - -# 128x32 display with hardware SPI: -# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000)) - -# 128x64 display with hardware SPI: -# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000)) - -# Alternatively you can specify a software SPI implementation by providing -# digital GPIO pin numbers for all the required display pins. For example -# on a Raspberry Pi with the 128x32 display you might use: -# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, sclk=18, din=25, cs=22) - -# Initialize library. -disp.begin() - -# Clear display. -disp.clear() -disp.display() - -# Create blank image for drawing. -# Make sure to create image with mode '1' for 1-bit color. -width = disp.width -height = disp.height -image = Image.new('1', (width, height)) - -# Get drawing object to draw on image. -draw = ImageDraw.Draw(image) - -# Draw a black filled box to clear the image. -draw.rectangle((0,0,width,height), outline=0, fill=0) - -# Draw some shapes. -# First define some constants to allow easy resizing of shapes. -padding = -2 -top = padding -bottom = height-padding -# Move left to right keeping track of the current x position for drawing shapes. -x = 0 - - -# Load default font. -font = ImageFont.load_default() - -# Alternatively load a TTF font. Make sure the .ttf font file is in the same directory as the python script! -# Some other nice fonts to try: http://www.dafont.com/bitmap.php -# font = ImageFont.truetype('Minecraftia.ttf', 8) - -while True: - - # Draw a black filled box to clear the image. - draw.rectangle((0,0,width,height), outline=0, fill=0) - - # Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load - cmd = "hostname -I | cut -d\' \' -f1" - IP = subprocess.check_output(cmd, shell = True ) - cmd = "top -bn1 | grep load | awk '{printf \"CPU Load: %.2f\", $(NF-2)}'" - CPU = subprocess.check_output(cmd, shell = True ) - cmd = "free -m | awk 'NR==2{printf \"Mem: %s/%sMB %.2f%%\", $3,$2,$3*100/$2 }'" - MemUsage = subprocess.check_output(cmd, shell = True ) - cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'" - Disk = subprocess.check_output(cmd, shell = True ) - - # Write two lines of text. - - draw.text((x, top), "IP: " + str(IP), font=font, fill=255) - draw.text((x, top+8), str(CPU), font=font, fill=255) - draw.text((x, top+16), str(MemUsage), font=font, fill=255) - draw.text((x, top+25), str(Disk), font=font, fill=255) - - # Display image. - disp.image(image) - disp.display() - time.sleep(.1) diff --git a/stats_saver.py b/stats_saver.py deleted file mode 100644 index 897d2c2..0000000 --- a/stats_saver.py +++ /dev/null @@ -1,35 +0,0 @@ -from main import stinker, htp -from datetime import datetime -import pytz, json - -tz = pytz.timezone('Europe/Sofia') -date = datetime.now(tz).strftime("%x") -specific_time = datetime.now(tz).strftime("%H:%M:%S") - -def get_data(): - data = htp() - data["air_pollution"] = stinker() - data["time"] = specific_time - return data - -def daily_data(): - data = get_data() - with open("api/daily.json", "r+") as f: - f_data = json.load(f) - f_data[date] = data - f.seek(0) - json.dump(f_data, f, indent=4) - f.close() - - -def manual_data(): - data = get_data() - data["time"] = date - with open("api/all.json", "r+") as f: - f_data = json.load(f) - f_data[specific_time] = data - f.seek(0) - json.dump(f_data, f, indent=4) - f.close() - -manual_data() \ No newline at end of file diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index cdb4658..0000000 --- a/templates/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - PWSS - - - -
- -
- -
-
- - \ No newline at end of file