Page 1 sur 1

Stocker dans un fichier un extrait de flux série.

Publié : 09 janv. 2018, 23:04
par benbidouille
Bonjour,

Débutant en domoticz, je souhaite extraire des données depuis un flux de données d'une liaison série pour alimenter Domoticz.

En fait il s'agit d'une pompe a chaleur qui crache un flux continu de données et paramètres environ toutes les minutes sur la ligne série, les data utiles sont toutes dans une seule ligne à plusieurs champs délimitée comme ceci avec un délimiteur de début et de fin de ligne.

>>> champ 1 champ 2 ................... <<<

Connecté au raspberry, et après un stty adhoc, je me suis plus a croire qu'il suffisait de faire un bash script avec un grep ">>>" /dev/ttyUSB pour stockage dans un fichier puis un second script lisant le fichier et procédant à d'extraction des champs (awk ou cut ..... ) pour alimenter Domoticz.

S'agissant d'un /dev et donc d'un flux continue de données, je ne récupère pas la main et ne m'en sort pas en script .sh pour alimenter un fichier avec la seule ligne recherchée.

Débutant niveau 0 en python et lua, je cherche une solution simple et souhaiterait éviter de devoir installer un environnement eclipse ou autre cross compilateur pour faire cette fonction simple en C que je maitrise mieux, cela me parait un peu lourd.

Comment faire une boucle de détection de début de ligne suivie de 3 chevrons dans un flux de donné et le stocké dans un fichier en Python, Lua ou autre ?

Je remercie par avance celui et ceux qui voudront bien me donner le petit coup de pouce pour extraire cette seule ligne.

Re: Stocker dans un fichier un extrait de flux série.

Publié : 10 janv. 2018, 22:24
par papoo
j'y connais pas grand chose mais en bash il semblerait qu'il faille utiliser stty
https://forum.hardware.fr/hfr/OSAlterna ... m#t1315670

Re: Stocker dans un fichier un extrait de flux série.

Publié : 11 janv. 2018, 00:17
par benbidouille
Merci @papoo je vais y jeter un œil

Pour le moment j'ai commencé à faire un script de lecture de la liaison série en Python (mon premier) qui à l'air de tourner correctement lorsque lancé en manuel.

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: utf-8 -*-
#

import serial

def main():
        print("Waiting for PAC data ....")
        ser = serial.Serial('/dev/ttyUSB-MONPAC', 115200, bytesize=serial.EIGHTBITS,
                                                          parity=serial.PARITY_EVEN,
                                                          stopbits=serial.STOPBITS_ONE,
                                                          timeout=3)
        ser.open()

        while True:
                lecture=ser.readline()    # Lecture du port jusqu'au \n (retour ligne)
    #            print("%s" % lecture )
                if lecture[0:3] == ">>>":
                         break
        fichier = open("PAC_data.txt", "w")
        fichier.write(lecture)
        fichier.close()
        print("... Job Done, PAC_data.txt file saved")
        ser.close()
        return 0

if __name__ == '__main__':
        main()
Il me reste à comprendre comment les scripts python s’exécutent de manière automatique dans domoticz, je n'ai pas encore trouvé le truc et j'ai pour le moment au démarrage de domoticz les messages suivant:

2018-01-11 00:06:22.259 Python EventSystem: Module not found - Trying to initialize.
2018-01-11 00:06:22.261 Python EventSystem: Initalizing event module.

Je crois qu'il y a une histoire de load au démarrage de domoticz, il est tard ce sera pour demain maintenant.

Re: Stocker dans un fichier un extrait de flux série.

Publié : 09 févr. 2018, 12:07
par Bruno17
Bonjour,
Le mieux est de lancer ton programme via le raspberry avec la fonction crontab -e, tu détermineras ton délai entre 2 captures indépendamment de domoticz.

Re: Stocker dans un fichier un extrait de flux série.

Publié : 09 févr. 2018, 13:20
par benbidouille
Oui, Merci, c'est exactement ce que j'ai eu fait.
cdlt