Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Log avec linknx
#8
Salut Jef,

En ce qui me concerne, c'est l'option 1 qui m'interesse afin de tracer des evolutions de T° a intervalle régulier par ex. Je ne pense pas qu'il soit tres utile de forcer une nouvelle lecture de la variable avant de l'enregistrer puisque normalement, si j'ai bien suivi, toute modif de cette variable est actualisé non ?

Thierry

Le 24 janv. 2011 à 13:25, jef2000 a écrit :

> Salut,
>
> Juste une petite question pour préciser ce que tu veux faire
> exactement.
> Est-ce que tu veux:
> 1) enregistrer, a intervalle régulier, la dernière valeur que le
> capteur a envoyée,
> 2) envoyer a intervalle régulier une requète de lecture de la valeur
> sur le bus pour obliger le capteur a envoyer sa valeur actuelle, et
> enregistrer cette dernière.
> Pour la 1ère, voir les réponses ci-dessus
> La 2ème solution n'est pas possible avec la dernière release de
> linknx. J'ai ajouté le code permettant de faire ça (forcer l'envoi
> d'une requète de lecture sur le bus) dans CVS dernièrement.
>
> Bien à vous,
>
> Jean-François
>
>
> On 24 jan, 13:00, Frédéric <f...@gbiloba.org> wrote:
>> Le lundi 24 janvier 2011, Frédéric a écrit :
>>
>>> J'essaierai de pondre un petit exemple en Python...
>>
>> Voili (non testé). C'est basique ; il est possible de lire plusieurs valeurs
>> d'un coup, mais il faut ensuite parser plus finement le résultat. Je te
>> laisse te reporter aux diverses doc des modules python utilisés.
>>
>> -----------------------------8<-----------------------------------
>> #/bin/sh python
>> # -*- coding: utf-8 -*-
>>
>> import socket
>> import xml.etree.ElementTree
>>
>> import MySQLdb
>> import MySQLdb.cursors
>>
>> HOST = "localhost"
>> PORT = 1028 # defined in the <xmlserver> 'port' attribute of the <services>
>> section
>> EOF = 0x04
>> MYSQL_USER = "mysql_user"
>> MYSQL_PASSWD = "mysql_passwd"
>> MYSQL_DB = "mysql_db"
>>
>> # Open a socket to communicate with linknx
>> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>> sock.connect((HOST, PORT))
>>
>> # Send a read command
>> sock.send("<read><object id=\"temp_bureau\"/></read>" + EOF)
>>
>> # Read answer ("<read status='success'>20.2</read>")
>> ans = sock.read()
>>
>> # Decode answer(xml)
>> elem = xml.etree.ElementTree.XML(ans)
>> status = elem.attrib.get("status")
>> if status == "success":
>> value = float(elem.text)
>>
>> # Store in MySQL database
>> conn = MySQLdb.Connect(host=HOST, user=MYSQL_USER,
>> passwd=MYSQL_PASSWD, db=MYSQL_DB)
>> cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
>> request = "INSERT INTO %(db)s temp_bureau VALUES %(temp_bureau)f"
>> d = {'db': MYSQL_DB, 'temp_bureau': value}
>> cursor.execute(request % d)
>> conn.commit()
>> -----------------------------8<-----------------------------------
>>
>> --
>> Frédéric


Messages dans ce sujet
Log avec linknx - par sprint95 - 24/01/2011, 08:41:13
Log avec linknx - par Frédéric - 24/01/2011, 08:59:26
Log avec linknx - par sprint95 - 24/01/2011, 10:07:35
Log avec linknx - par Frédéric - 24/01/2011, 11:30:53
Log avec linknx - par Frédéric - 24/01/2011, 13:00:41
Log avec linknx - par jef2000 - 24/01/2011, 13:25:18
Log avec linknx - par Frédéric - 24/01/2011, 13:31:54
Log avec linknx - par Sprint - 24/01/2011, 13:35:32
Log avec linknx - par sprint95 - 24/01/2011, 14:18:55

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)