Hello,
il y a encore du monde qui tâte les pins du GPIO ?
j’utilise les GPIO d’un pi2 alimenté en POE pour remonter des capteurs d’ouverture de portes filaires en mqtt dans home assistant. bon ça ça fonctionne sur le bureau.
Après quelques soucis notamment de code sur une pin du GPIO qui m’a fait pas mal chercher en amont avant de comprendre que c’était le code… ça semble fonctionner sauf que j’ai un soucis sur le GPIO 27 du rpi2
- je branche mon capteur sur cette pin, je boot le pi, le boot ne va pas au bout, le pi s’éteint.
- je ne branche pas mon capteur sur cette pin, je démarre le rpi2, il démarre normalement, je teste avec le contact, ça détecte, c’est fonctionnel, j’enlève je remet … ça fonctionne. je laisse le capteur quelques secondes le pi s’éteint.
Donc ma question, y a t’il une subtilité que je ne connais pas sur ce GPIO27 ? j’ai testé sur un autre pi, les résultats sont identiques. chaque capteur branché pompe 0.4mA sur chaque pin du GPIO utilisée
vu que je ne suis pas très à l’aise avec le python, j’ai demandé un coup de main à chatgpt, du coup je met également le code du script que j’utilise au cas où
import time
import RPi.GPIO as GPIO
import paho.mqtt.client as mqtt
# MQTT settings
MQTT_BROKER = "xxx.xxx.xxx.xxx" # Remplacez par l'adresse IP de votre broker MQTT
MQTT_TOPIC_PREFIX = "xxx"
MQTT_USERNAME = "xxx" # Nom d'utilisateur MQTT
MQTT_PASSWORD = "xxx" # Mot de passe MQTT
# GPIO settings
GPIO.setmode(GPIO.BCM)
sensor_pins = [18, 4, 5, 6, 13, 17, 22, 26, 27]
for pin in sensor_pins:
GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# MQTT client setup
client = mqtt.Client()
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!" )
else:
print(f"Failed to connect, return code {rc}\n" )
client.on_connect = on_connect
# Set username and password
client.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)
print("Connecting to MQTT broker..." )
client.connect(MQTT_BROKER, 1883, 60)
client.loop_start()
try:
while True:
for i, pin in enumerate(sensor_pins):
sensor_state = GPIO.input(pin)
if sensor_state == GPIO.HIGH:
state = "OPEN"
else:
state = "CLOSED"
topic = f"{MQTT_TOPIC_PREFIX}{i+1}"
result = client.publish(topic, state)
status = result.rc
if status == 0:
print(f"Sent {state} to topic {topic}" )
else:
print(f"Failed to send message to topic {topic}" )
time.sleep(1)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
client.loop_stop()
si vous avez des idées, n’hésitez pas, moi à force de retourner le problème je ne suis plus objectif, il me faut un regard neuf.
merci