Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Newbie help combining two scripts
#1
Hi all. I'm new to Python, but have some experience in HTML/CSS/JS. I'm running Raspberry Pi to be able to monitor my daughter's rabbit in the shed outside. So far I've been able to accomplish the following:

-RPI webpage (created with a Python example script), displaying the camera (mjpeg) stream can be accessed via dynamic dns :)
-Another Python script that access the temperature sensor works in console :)

Now, my challenge here is to display the output of the temperature script on the same Python generated webpage, which displays the camera stream. I've been banging my head with this for a few days, but I just cannot grasp the thing how to "access" the temperature script output from the webpage :/ Like I said the Python code generating the webpage is not my creation, but an example from the internets.

Could someone more experienced help me accomplish this what I'm trying to achieve here? The more simple solution, the better :)
Here's the script that creates the webpage and displays the mjpeg stream:

# Web streaming example
# Source code from the official PiCamera package
# http://picamera.readthedocs.io/en/latest/recipes2.html#web-streaming

import io
import picamera
import logging
import socketserver
from threading import Condition
from http import server

PAGE="""\
<html>
<head>
<title>Raspberry Pi - Surveillance Camera</title>
</head>
<body>
<center><h1>Raspberry Pi - Surveillance Camera</h1></center>
<center><img src="stream.mjpg" width="1280" height="720"></center>
</body>
</html>
"""

class StreamingOutput(object):
    def __init__(self):
        self.frame = None
        self.buffer = io.BytesIO()
        self.condition = Condition()

    def write(self, buf):
        if buf.startswith(b'\xff\xd8'):
            # New frame, copy the existing buffer's content and notify all
            # clients it's available
            self.buffer.truncate()
            with self.condition:
                self.frame = self.buffer.getvalue()
                self.condition.notify_all()
            self.buffer.seek(0)
        return self.buffer.write(buf)

class StreamingHandler(server.BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/':
            self.send_response(301)
            self.send_header('Location', '/index.html')
            self.end_headers()
        elif self.path == '/index.html':
            content = PAGE.encode('utf-8')
            self.send_response(200)
            self.send_header('Content-Type', 'text/html')
            self.send_header('Content-Length', len(content))
            self.end_headers()
            self.wfile.write(content)
        elif self.path == '/stream.mjpg':
            self.send_response(200)
            self.send_header('Age', 0)
            self.send_header('Cache-Control', 'no-cache, private')
            self.send_header('Pragma', 'no-cache')
            self.send_header('Content-Type', 'multipart/x-mixed-replace; boundary=FRAME')
            self.end_headers()
            try:
                while True:
                    with output.condition:
                        output.condition.wait()
                        frame = output.frame
                    self.wfile.write(b'--FRAME\r\n')
                    self.send_header('Content-Type', 'image/jpeg')
                    self.send_header('Content-Length', len(frame))
                    self.end_headers()
                    self.wfile.write(frame)
                    self.wfile.write(b'\r\n')
            except Exception as e:
                logging.warning(
                    'Removed streaming client %s: %s',
                    self.client_address, str(e))
        else:
            self.send_error(404)
            self.end_headers()

class StreamingServer(socketserver.ThreadingMixIn, server.HTTPServer):
    allow_reuse_address = True
    daemon_threads = True

with picamera.PiCamera(resolution='1280x720', framerate=24) as camera:
    output = StreamingOutput()
    #Uncomment the next line to change your Pi's Camera rotation (in degrees)
    #camera.rotation = 90
    camera.start_recording(output, format='mjpeg')
    try:
        address = ('', 8000)
        server = StreamingServer(address, StreamingHandler)
        server.serve_forever()
    finally:
        camera.stop_recording()
Here's the script that shows the temperature reading in console:

import os
import glob
import time
 
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
 
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
 
def read_temp_raw():
    f = open(device_file, 'r')
    lines = f.readlines()
    f.close()
    return lines
 
def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_c, temp_f
	
while True:
	print(read_temp())	
	time.sleep(1)
Reply


Messages In This Thread
Newbie help combining two scripts - by emuola - Oct-01-2020, 06:36 AM
RE: Newbie help combining two scripts - by scidam - Oct-01-2020, 07:50 AM
RE: Newbie help combining two scripts - by emuola - Oct-01-2020, 10:41 AM
RE: Newbie help combining two scripts - by emuola - Oct-01-2020, 01:45 PM
RE: Newbie help combining two scripts - by emuola - Oct-02-2020, 03:14 PM
RE: Newbie help combining two scripts - by scidam - Oct-02-2020, 10:27 AM
RE: Newbie help combining two scripts - by scidam - Oct-02-2020, 11:39 PM
RE: Newbie help combining two scripts - by emuola - Oct-03-2020, 09:30 AM
RE: Newbie help combining two scripts - by emuola - Oct-03-2020, 02:15 PM
RE: Newbie help combining two scripts - by scidam - Oct-03-2020, 11:45 AM
RE: Newbie help combining two scripts - by emuola - Oct-03-2020, 06:03 PM
RE: Newbie help combining two scripts - by emuola - Oct-04-2020, 07:50 AM
RE: Newbie help combining two scripts - by scidam - Oct-03-2020, 11:40 PM
RE: Newbie help combining two scripts - by scidam - Oct-04-2020, 12:09 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Combining 2 scripts wpothers 5 4,729 Feb-21-2017, 12:38 PM
Last Post: wavic

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020