diodeled80
Posts: 1
Joined: Thu Sep 05, 2019 1:26 pm
Location: France

simple lecture/recopie de la chaudiere sur une page web : pas de pilotage

Thu Sep 05, 2019 2:00 pm

Bonjour à Tous,

J'ai pas mal parcouru tous les différents forums et je ne trouve pas mon bonheur.
je ne souhaite PAS PILOTER ma chaudière, mais juste regarder ce qu'il y a sur le tableau de bord via une page web, sans aller dans le garage.

Pas de graphique
Pas de mémorisation de conso
Pas d'usine à gaz avec des beaux graphiques
pas d’accès "ecriture" ou pilotage electrique des fonctions de la chaudiere.
Pas de recopie des positions des boutons ,ils sont bien dans le garage, on touche pas 8-)
riello.jpg
riello.jpg (123.6 KiB) Viewed 178 times
le souhait
lire la température du corps de chauffe pour les radiateur (voir photo il est HS) (1lecture /5 minutes amplement suffisant)
lire la température du ballon d'eau chaude sanitaire (1lecture /5 minutes amplement suffisant)
Lire si la led verte est bien allumée (Mode normal) (1lecture /5 minutes amplement suffisant)
Lire si la led rouge est allumée (mise en défaut) (1lecture /5 minutes amplement suffisant)

Je sais intégrer le capteurs de température facilement (analogique ou numérique)
pour lire l’état des LED, je peux mettre deux optocoupleurs pour recuperer l'etat
à la chaudière, il y a du 220V, du 12V, du wifi et du Ethernet RJ45 de dispo

au niveau des connaissances, un bon niveau en électronique année 1985/2010 avec resistance transistor 555 et CMOS en revanche en microcontrôleur et Rpije débute.

Matos à disposition
Rpi 3 model B 1Gb
capteur de temperatures
petit electronique
page web : je sais coder en HTML ou via dreamweaver.

Voici le projet pour débuter cela me permettra de découvrir cette framboise prometteurs

si ça fonctionne, la fonction cerise sur le gâteau, c'est de faire une fonction "SI" led rouge "then" envoi email pour dire qu'il fera froid ! (mais ça c'est apres)


Image
"Si ce gars a la moindre possibilité de faire une erreur, il la fera" Edward M. :geek:
«La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.» Albert E. ;)

henrig
Posts: 10
Joined: Mon Apr 10, 2017 4:32 pm

Re: simple lecture/recopie de la chaudiere sur une page web : pas de pilotage

Mon Sep 09, 2019 10:10 am

Bonjour,
J'utilise ce code depuis longtemps pour surveiller une imprimante 3D,
c'est du brute de fonderie et pas fini mais c'a fonctionne et ça peut vous dépanner.
Cordialement,
Henri

Code: Select all

# http://picamera.readthedocs.io/en/release-1.0/index.html

import io
import picamera
import datetime as dt
import time
import logging
import socketserver 
from threading import Condition
from http import server
from picamera import Color

PAGE="""\
<html>
<head>
<title>picamera MJPEG streaming demo</title>
</head>
<body>
<center>
<h1>PiCamera MJPEG Streaming Demo de HENRI</h1>
<h1>CARTE de SAUVEGARGE 26/04/2019</h1>
<img src="stream.mjpg" width="640" height="480" />
</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()
                camera.annotate_text = dt.datetime.now().strftime('%d-%m-%Y %H:%M:%S')  # Visu
            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='640x480', framerate=24) as camera:

    camera.rotation='180'    # pour donner une oriantation de seulement 90° à l'image : 0/90/180/270
    # camera.hflip=False     # Retournement à 180 droite/gauche
    # camera.vflip=False     # Retournement à 180 haut/bas
    # camera.start_preview()
    camera.annotate_text_size = 15
    camera.annotate_foreground = Color('black')
    camera.annotate_background = Color('white')    
    # camera.annotate_text = dt.datetime.now().strftime('%d-%m-%Y %H:%M:%S')                 #"Visu"
    output = StreamingOutput()
    camera.start_recording(output, format='mjpeg')
    try:
        address = ('', 8000)
        server = StreamingServer(address, StreamingHandler)
        server.serve_forever()
    finally:
        camera.stop_recording()

User avatar
Pulsar33
Posts: 64
Joined: Sun Aug 25, 2019 4:06 pm
Location: Bordeaux France

Re: simple lecture/recopie de la chaudiere sur une page web : pas de pilotage

Mon Sep 09, 2019 5:47 pm

Bonsoir,

Et pourquoi pas une caméra ? :D

Cordialement
Pulsar33
Pi 4 with 4Gb memory, DVB TV pHAT ------------------- Desktop : Core i5 Linux MINT 19.2

iznobe
Posts: 170
Joined: Sun Feb 05, 2017 4:14 pm

Re: simple lecture/recopie de la chaudiere sur une page web : pas de pilotage

Tue Sep 10, 2019 3:11 pm

Salut ,

si la chaudiere dispose d' un port RJ45 et du wifi , il n ' existe pas une appli sur smartphone avec deja tout de pret a etre utilise ? :D

pour recuperer la temperature , il faut en ajouter une , peut etre plaquee contre la sortie chaude de la tuyauterie puis enrobe le tout avec des rouleaux noirs isolants thermique ( me rappelle plus le nom exact ) et recuperer les infos sur le pi avec un entree numerique c ' est faisable , mais pas tres " propre " . pour le reste , vous avez deja quasiement donne vous meme les reponses .

ensuite , creer une page web qui s' actualise automatiquement toutes les 5 minutes , mais je suis moi-meme a la recherche de comment mettre en place une page web sur le pi :lol: je ne pourrais trop vous dire comment vous y prendre pour cela donc desole .

Return to “Français”