Changer l'état d'une sortie via Python

Bonsoir,

je souhaite ajouter des scenarios à mon IPX800 V3, j’ai un Raspberry Pi2, j’arrive en Python à extraire les valeurs de mes entrées analogiques mais je ne trouve pas comment exécuter un changement d’état d’une sortie, est-ce que quelqu’un aurait un script tout simple pour cela?

Philippe

Pour changer l’état d’une sortie, il faut faire une requête HTTP GET vers http://IPX800_V3/leds.cgi?led=x avec x le numéro de la sortie à commander (de 0 à 31).

Vous trouverez toutes les informations dans la doc de l’API du l’IPX V3 :wink:

1 « J'aime »

Bonsoir,

quelques heures plus tard j’ai trouvé ce que cherchais, ma question se basait plus sur le code python que sur les commandes M2M que je connais déjà bien.

ça servira aux autres: (code qui lit les deux fichiers xml et qui entreprend des actions en fonction)

#!/usr/bin/python
# by GuiguiAbloc
#utilise 2 sources xml
import urllib2, os, socket, time
while 1:
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("192.168.1.20",9870))



    from xml.dom.minidom import parseString
    #filename = "/tmp/eau"
    file = urllib2.urlopen('http://192.168.1.20/status.xml')



    try:
      data = file.read()
      file.close()
      dom = parseString(data)
      xmlTag = dom.getElementsByTagName('analog0')[0].toxml()
      xmlData=xmlTag.replace('<analog0>','').replace('</analog0>','')
      tempsalon = float(xmlData)
      tempsalondeg = round((((tempsalon* 0.00323) - 0.25) / 0.028),1)
      #FILE = open(filename,"w")
      #FILE.write(xmlData)
      #FILE.close()
      #print(tempsalon)

      xmlTag = dom.getElementsByTagName('led4')[0].toxml()
      xmlData=xmlTag.replace('<led4>','').replace('</led4>','')
      poele = float(xmlData)
      #if poele == 1 :
      #    print "poele allumé"
      #else :
      #    print "poele etteint" 
    
      xmlTag = dom.getElementsByTagName('led2')[0].toxml()
      xmlData=xmlTag.replace('<led2>','').replace('</led2>','')
      lampe = float(xmlData)

      xmlTag = dom.getElementsByTagName('time0')[0].toxml()
      xmlData=xmlTag.replace('<time0>','').replace('</time0>','')
      heure = xmlData
      #print heure
                 
    except:
      print "error"

    from xml.dom.minidom import parseString
    #filename = "/tmp/eau"
    file = urllib2.urlopen('http://192.168.1.20/protect/assignio/status.xml')

    try:
      data = file.read()
      file.close()
      dom = parseString(data)
      xmlTag = dom.getElementsByTagName('valhi1')[0].toxml()
      xmlData=xmlTag.replace('<valhi1>','').replace('</valhi1>','')
      tempsalonmax = float(xmlData)
      xmlTag = dom.getElementsByTagName('vallo1')[0].toxml()
      xmlData=xmlTag.replace('<vallo1>','').replace('</vallo1>','')
      tempsalonmin = float(xmlData)
      #print tempsalonmin
      #print tempsalonmax
      
    except:
      print "error"
      
      
    if tempsalon > tempsalonmax and poele ==1:
        Request = "Set050\r\n"
        Request+= "Host: 192.168.1.20\r\n"
        Request+= "Connection: Close\r\n\r\n"
        s.send(Request)
        #data = s.recv(50)
        #print data # on affiche l
        phrase = "extinction " + str(heure) + " " + str(tempsalondeg) + "°C"
        print phrase
        

    if tempsalon < tempsalonmin and poele ==0:
        Request = "Set051\r\n"
        Request+= "Host: 192.168.1.20\r\n"
        Request+= "Connection: Close\r\n\r\n"
        s.send(Request)
        #data = s.recv(50)
        #print data # on affiche la
        phrase = phrase = "allumage " + str(heure) + " " + str(tempsalondeg) + "°C"
        print phrase
    time.sleep(5)