Raspebery PI 3 avec mutliple entrée/sortie

Bonjour,

Pour améliorer le fonctionnement d’une vanne 3 voie sur ma chaudière à granulés sur une installation à l’hydraulique compliquée, je souhaite utiliser un raspberry PI3 qui est très peu chargé.
Je l’utilise donc comme Broker.
J’ai donc les données suivantes:
-3 sondes de températures DS18B20
-1 potentiomètre raccordé à un MCP3008
et 4 sorties relais sur GPIO.
Mon soucis est que je n’arrive pas a configurer le tout en mqtt.
J’arrive a voir les températures via rpi-temperature-mqtt.
J’essaye de comprendre le fonctionnement des GPIO dans mqtt. Je test « python3 -m mqtt_io » mais il ne me fait pas de « publish » uniquement des susbscibe…
Reste le MCP3008 qui devrait être utilisable dans mqtt_io mais pas encore trouvé la bonne config.

J’ai essayé Jeedouino/Ext mais il ne gère pas le MCP3008.
Si un utilisateur a plus d’expérience ou d’autres alternatives ?

Mon idée est d’utiliser Jeedom comme « supervision » (historique/courbes) et d’avoir un script local sur le PI pour gérer le bypass de la V3V lors du démarrage de la chaudière.
Mais avant, je dois logger les valeurs de températures/position V3V.

1 « J'aime »

Salut,

Faute de réponse, j’ai mis les mains dans le python et commencé une routine de lecture des capteurs et de publier les données en MQTT si besoins.
Voici un extrait du code que j’utilise:

#!/usr/bin/python3
import signal
import time
import busio
import digitalio
import board
import adafruit_mcp3xxx.mcp3008 as MCP
import paho.mqtt.client as mqtt
from w1thermsensor import W1ThermSensor, Sensor
from adafruit_mcp3xxx.analog_in import AnalogIn

# Connexion au Broker
    client = mqtt.Client()
    client.connect("localhost",1883,60)

# Lecture d'une moyenne de l'entrée analogique (je vais surement réduire la boucle)
    somme_Pot = 0
    for i in range (0,100) :
        somme_Pot = somme_Pot + ORP()

# Mise à l'échelle et arrondi (0-100% du potentiomètre que j'adapterai aux 90° de la V3V
    v3v = round(somme_Pot/100*30.3425,0)
    if v3v != last_v3v:
        client.publish("home/V3V", v3v);
        last_v3v = v3v
        print('Update V3V=', v3v)
    
# Températures

    sensor1 = W1ThermSensor(Sensor.DS18B20, "01193a060753") 
    chaudiere = round(sensor1.get_temperature(),1)
    if abs(chaudiere-last_chaud) > 0.1:
        client.publish("home/Chaudiere", chaudiere);
        last_chaud=chaudiere
        print('Update chaudière=', chaudiere)
    
    sensor2 = W1ThermSensor(Sensor.DS18B20, "01193a178ce6")
    depart = round(sensor2.get_temperature(),1)
    if abs(depart-last_depart) > 0.1:
        client.publish("home/Depart_Eau", depart);
        last_depart=depart
        print('Update depart=', depart)
        
    sensor3 = W1ThermSensor(Sensor.DS18B20, "01193a182a95")
    retour = round(sensor3.get_temperature(),1)
    if abs(retour-last_retour) > 0.1:
        client.publish("home/Retour_Eau", retour);
        last_retour=retour
        print('Update retour=', retour)

# Relais état que j'inverse car LOW active le relais
    relais1 =  1-GPIO.input(17)
    if relais1 != last_R1:
        last_R1 = relais1
        print('Update relais1=', relais1)
        client.publish("home/Relais1", relais1);

    relais2 =  1-GPIO.input(23)
    if relais2 != last_R2:
        last_R2 = relais2
        print('Update relais2=', relais2)
        client.publish("home/Relais2", relais2);

# Changement d'état
    GPIO.output(17,0) # ON
    GPIO.output(17,1) # OFF

# Deconnexion
    client.disconnect();

J’ai bien les valeurs dans le jMQTT:

Mais les valeurs ne sont rafaichie que toutes les 5 mins!
Est-ce qu’il y a une solution pour avoir une meilleurs résolution ?

Merci

Donc mes problèmes de valeurs non rafraîchie était une « fonctionnalité », le mode de lissage par moyenne… Le boulet

Mais si mon exemple de script peut servir :slight_smile:

A+

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.