Problème PYTHON - JSON

Fermé
Zarwax Messages postés 18 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 24 mars 2021 - Modifié le 30 mars 2021 à 12:52
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 30 mars 2021 à 12:53
Bonjour,

J'ai un problème avec un script que je viens de faire sur mon raspberry. (J'ai un arduino qui m'envoie des données en sans fil avec un module HC12 sur le raspberry pour envoyer sur un serveur)

J'arrive à lire les données, les préparer et les envoyer sur le serveur comme je veux, mais lorsque je veux récupérer les données une 2ème fois (2ème fois que l'arduino envoie une donnée) je reçois cette erreur :
Traceback (most recent call last):
File "tip_ws.py", line 33, in <module>
data_j = json.loads(data)
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting object: line 1 column 156 (char 155)


Est-ce que vous pourriez m'aider ? Merci beaucoup déjà d'avance !


Voici le code de mon script :
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from time import sleep
import serial
import requests
import json
import time

url='myURL'

data = ""
letter_last=""

ser = serial.Serial ("/dev/ttyS0", 9600)    #Open port with baud rate
while True:
    data += ser.read()
    #received_data = ser.read()              #read serial port
    #sleep(0.03)
    #data_left = ser.inWaiting()             #check for remaining byte
    #received_data += ser.read(data_left)
    #received_data = received_data.strip()


    #Récupération du dernier caractère
    letter_last = data[-1]

    #Si dernier caractère est égal à "]" le message est terminé !
    if letter_last == "]":
        #Récupération du contenu sans les accolades "[" et "]"
        data = data[1:-1]
        #Decodage des données en JSON
        data_j = json.loads(data)

        #Récupération des données
        password = "mypassword"
        stationmeteo = data_j.get('stationMeteo')
        pression = data_j.get('pression')
        temperature = data_j.get('temperature')
        humidite = data_j.get('humidite')
        luminosite = data_j.get('luminosite')
        uv = data_j.get('uv')
        pluie = data_j.get('pluie')
        qualiteAir = data_j.get('qualiteAir')
        vent = data_j.get('vent')

#Préparation de l'objet JSON à envoyer dans la requête HTTP au serveur
        content = {
                'password' : password,
                'stationMeteo' : stationmeteo,
                'pression' : pression,
                'temperature' : temperature,
                'humidite' : humidite,
                'luminosite' : luminosite,
                'uv' : uv,
                'pluie' : pluie,
                'qualiteAir' : qualiteAir,
                'vent' : vent
        }

        #Création de la requête HTTP avec l'url et l'objet JSON
        response = requests.post(url, content)

        #Affichage des informations
        print ('AJOUT DONNEES - ' + time.strftime("%Y/%m/%d %H:%M:%S") + '\n')
        print (content)
        print ('\n')
        print (response.json().get('response'))
        print ('---------------------------------')

        #Réinitialisation des données
        data = ""
        letter_last = ""
        content = ""
        data_j = ""

1 réponse

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
30 mars 2021 à 12:53
Bonjour,

D'après le message d'erreur, ton fichier json est mal formé. Il faudrait le joindre à ta question pour qu'on voit ce qui cloche.

Bonne chance
0