Détecteur d'ouverture

Forum dédié aux questions concernant la configuration de votre serveur sous Linux
poopeye
Messages : 41
Inscription : 13 janv. 2016, 19:28

Re: Détecteur d'ouverture

Message par poopeye »

Salut,
pchatill a écrit :Mais pourquoi ne pas adapter tes scripts Lua de la meme maniere que moi mes scripts python?Si detection d'un front montant ou descendant, alors tout petit time-sleep puis verification du niveau de mon GPIO et de l'etat precedent du GPIO et enfin action ou pas action.
A la base c'est ce que je voulais faire mais étant novice, je galère... En fait je l'ai fait via un bouton virtuel avec un blocky: Si mon capteur réel passe à ON et que mon capteur virtuel était à OFF, alors mon capteur virtuel passe à ON, (mon script lua étant basé sur le changement d'état du capteur virtuel). Sinon (donc dans le cas d'un passage de ON à ON ou de OFF à OFF, pas d'action) Et même chose dans l'autre sens.
Mais c'est vrai qu'avec un seul script lua ça serait plus propre...
L'idéal, le plus propre serait à mon sens de régler le problème "en matériel" (je vais d'ailleurs tester une isolation des GPIO entrées via condensateur + trigger de schmit+ optocoupleur afin de créer une sorte de piège à parasites... Mais c'est pas encore en place!!)
Je profite donc de ce post pour te poser la question suivante: avec Lua, comment traduire "alors tout petit time-sleep puis vérification du niveau de mon GPIO et de l'état précèdent du GPIO", ce que tu fais via python ?

Enfin, par rapport à la réactivité de wiring pi, je ne perçois pas de soucis. J'ai besoin de gérer les entrées "physiquement" uniquement pour des capteurs d'ouverture, tout le reste sera des boutons virtuels déclenchant des optocoupleurs cablés sur des GPIO out de la PI, eux mêmes reliés sur des entrées d'un autre système domotique (100% filaire) déjà en place chez moi..
V 2.3530
bobjones62
Messages : 92
Inscription : 15 févr. 2016, 18:58

Re: Détecteur d'ouverture

Message par bobjones62 »

Bonjour,

Je rencontre actuellement le même problème qu'a décrit pchatill de mise à jour de mon interrupteur virtuel sans changement d'état Off à Off.
Sachant que je récupère l'information d'un contact normalement fermé.
Il semble avoir résolu le problème à priori provenant d'interférence en intégrant un time sleep
Ci-dessous le script python que j'utilise, il y a déjà un time sleep en fin de programme.
Est-ce bien comme cela qu'il faut l'intégrer pour résoudre le problème ?

Code : Tout sélectionner

#!/usr/bin/python

import RPi.GPIO as GPIO
import time
import urllib

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def Loop1(channel):
    if GPIO.input(17):
        urllib.urlopen("http://192.168.X.YY:8080/json.htm?type=command&param=switchlight&idx=8&switchcmd=On&level=0")
    else:
        urllib.urlopen("http://192.168.X.YY:8080/json.htm?type=command&param=switchlight&idx=8&switchcmd=Off&level=0")

GPIO.add_event_detect(17, GPIO.BOTH, callback=Loop1, bouncetime=200)

while True:
    time.sleep(100)
pchatill
Messages : 139
Inscription : 12 août 2015, 15:57

Re: Détecteur d'ouverture

Message par pchatill »

Salut.
Desolé pour le retard, mais c'était les vacances ...

En gros voici ce que j'ai fait dans mon script python:
Je detecte une modification de mon contact (ici front descendant) avec:
GPIO.add_event_detect(18, GPIO.FALLING, callback=my_callback2,bouncetime=150)
Je met un petit time sleep (a essayer) et je reteste la condition dans mon callback
def my_callback2(channel):

if GPIO.input(18)==0:
print('Condition verifiée, je traite l'information')

time.sleep(0.05)
elif GPIO.input(18)==1:
print('Condition non verifiée, c'est un parasite: je ne fais rien')
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.4
Répondre