pir python

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
ledouble33
Messages : 286
Inscription : 07 févr. 2015, 07:45

pir python

Message par ledouble33 »

bonjour j ai recuperer un script python qui fonctionne avec un capteur pir filaire qui actionne un switch dans domoticz
je le lance le script et quand je passe devant le capteur pir j ai le message d erreur suivant

Code : Tout sélectionner

Waiting for PIR to settle ...
  Ready
  Mouvement !
Traceback (most recent call last):
  File "./pir2.py", line 31, in <module>
    test = urllib.urlopen("http://192.168.1.40:8080/json.htm?type=command&param=                                                                                                                     switchlight&idx=10&switchcmd=On&level=0")
  File "/usr/lib/python2.7/urllib.py", line 86, in urlopen
    return opener.open(url)
  File "/usr/lib/python2.7/urllib.py", line 207, in open
    return getattr(self, name)(url)
  File "/usr/lib/python2.7/urllib.py", line 358, in open_http
    return self.http_error(url, fp, errcode, errmsg, headers)
  File "/usr/lib/python2.7/urllib.py", line 371, in http_error
    result = method(url, fp, errcode, errmsg, headers)
  File "/usr/lib/python2.7/urllib.py", line 682, in http_error_401
    errcode, errmsg, headers)
  File "/usr/lib/python2.7/urllib.py", line 380, in http_error_default
    raise IOError, ('http error', errcode, errmsg, headers)
IOError: ('http error', 401, 'Unauthorized', <httplib.HTTPMessage instance at 0x                                                                                                                     cc9c10>)
le script python :

Code : Tout sélectionner

usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib

GPIO.setmode(GPIO.BCM)

GPIO_PIR = 25

print "PIR Module Test (CTRL-C pour quitter)"

GPIO.setup(GPIO_PIR,GPIO.IN)

Current_State  = 0
Previous_State = 0

try:

  print "Waiting for PIR to settle ..."
  while GPIO.input(GPIO_PIR)==1:
    Current_State  = 0    

  print "  Ready"     
    
  while True :
   
    Current_State = GPIO.input(GPIO_PIR)
   
    if Current_State==1 and Previous_State==0:
      print "  Mouvement !" 
      test = urllib.urlopen("http://192.168.1.69:8080/json.htm?type=command&param=switchlight&idx=10&switchcmd=On&level=0")
      time.sleep(80) 
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      print "  Ready"
      Previous_State=0
      
    time.sleep(0.01)      
      
except KeyboardInterrupt:
  print "  Quit" 
  GPIO.cleanup()
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: pir python

Message par patrice »

Bonjour

Ton Domoticz n'est il pas protégé par mot de passe ?
je pense que oui (erreur 401)
supprime le mot de passe Domoticz et reteste,




D'autre part la librairie urllib est obsolète,ancienne et mal foutue
il faut utiliser la librairie request bien plus puissante, supportant https correctement, etc, etc
il faut installer request par un
sudo pip install requests
puis faire un import requests à la place de urllib
puis aux endroits ou tu fais
test = urllib.urlopen("http://192.168.1.69:8080/json.h
il faudra
test = requests.get("http://192.168.1.69:8080/json.h

Si tu as mis un user/password Dans Domoticz, la librairie request supporte aussi les identifications user/password
il faut importer en tete du script python :

from requests.auth import HTTPBasicAuth et plus de import requests

puis mettre une variable

user='patrice'
password='aC6*D"RTyopJ4'

et on appelle les urls vers Domoricz à chaque fois qu'on en a besoin
r=requests.get ("http://192.168.1.69:8080/json.h........ ... ,password))

A noter que si iil n'y a pas de user/password dans Domoticz,on laisse user='' et password='' (vides donc)
et aucun mot de passe n'est transmis à Domoticz

Je pense avoir été exhaustif sur le coup.
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
ledouble33
Messages : 286
Inscription : 07 févr. 2015, 07:45

Re: pir python

Message par ledouble33 »

salut ,merci pour ton aide ca fonctionne, ca venais du mot de passe .
j ai ajouter l adresse ip du raspberry dans la configuration de domoticz.
impossible d installer sudo pip install requests
Répondre