Page 1 sur 1

besoin d aide pour application/json

Publié : 13 juin 2020, 17:41
par damolc
Bonjour
J ai mis en route un capteur DHT22
j ai installé AdafruitDHT
j ai trouvé un script qui est dans /domoticz/scripts
voila le script :

Code : Tout sélectionner

   #!/bin/sh
# Domoticz server
SERVER="192.168.1.27:8080"
# DHT IDX
# le numero de l IDX dans la liste des dispositifs Domoticz
DHTIDX="118"
#DHTPIN
# LE GPIO ou est connecte le DHT11
DHTPIN="12"
# si vous avez un DHT22 modifiez plus bas sur la ligne Adafruit_DHT 11 par Adafruit_DHT 22
# TMPFILE : chemin pour fichier temporaire a placer dans le RAMDRIVE pour eviter les
# ecritures sur la SD card
# sinon chemin ou sera ecrit le fichier contenant les temperature
# /tmp/temper.txt est un bon choix si pas de RAMDRIVE installe
# consultez http://www.easydomoticz.com pour tout savoir
TMPFILE="/var/tmp/temper.txt"
while :
cpt=0

do
TEMP=""
sleep 5
sudo nice -20 /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 12 > $TMPFILE
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $1}')
if [ $TEMP ]
then
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $1}')
HUM=$(cat $TMPFILE |grep Temp |awk '{print $2}')
echo $TEMP
echo $HUM
# Send data
curl -s -i -H  "Accept: application/json"  "http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"
    TEMP=""
    HUM=""
    rm $TMPFILE
    exit 0
    fi
    #echo $cpt
    cpt=$(($cpt+1))
    done
    exit 1
mais il me renvoie comme erreur :
>pi@raspi2:~/domoticz/scripts $ sudo ./DHT22
Temp=19.8*
Humidity=81.6%
HTTP/1.1 400 Bad Request
Content-Length: 89
Content-Type: text/html

<html><head><title>Bad Request</title></head><body><h1>400 Bad Request</h1></bod
pourriez vous m aider a trouver l erreur dans ma ligne?
merci

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 18:05
par damolc
je pense que c est lié a l extraction des données qui sont sous la forme :
Temp=19.8*
Humidity=81.6%
comment faire pour n avoir que les chiffres dans mon appel json?

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 18:48
par Chrominator
Y a plein de solutions, en voici une avec sed qui va rechercher et remplacer le caractère indésirable :

Code : Tout sélectionner

TEMP=`echo $TEMP | sed -e "s/*//g"`
HUM=`echo $HUM | sed -e "s/%//g"`

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 19:17
par damolc
merci le log n est plus en echec :
pi@raspi2:~/domoticz/scripts $ sudo ./DHT22
Temp=19.7
Humidity=83.4
HTTP/1.1 200 OK
Content-Length: 49
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=UTF-8

{
"status" : "OK",
"title" : "Update Device"
}
Mais les valeurs ne remonte pas dans Domoticz
j ai fait comme ça :

Code : Tout sélectionner

   #!/bin/sh
# Domoticz server
SERVER="192.168.1.27:8080"
# DHT IDX
# le numero de l IDX dans la liste des dispositifs Domoticz
DHTIDX="118"
#DHTPIN
# LE GPIO ou est connecte le DHT11
DHTPIN="12"
# si vous avez un DHT22 modifiez plus bas sur la ligne Adafruit_DHT 11 par Adafruit_DHT 22
# TMPFILE : chemin pour fichier temporaire a placer dans le RAMDRIVE pour eviter les
# ecritures sur la SD card
# sinon chemin ou sera ecrit le fichier contenant les temperature
# /tmp/temper.txt est un bon choix si pas de RAMDRIVE installe
# consultez http://www.easydomoticz.com pour tout savoir
TMPFILE="/var/tmp/temper.txt"
while :
cpt=0

do
TEMP=""
sleep 5
sudo nice -20 /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 12 > $TMPFILE
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $1}')
if [ $TEMP ]
then
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $1}')
HUM=$(cat $TMPFILE |grep Temp |awk '{print $2}')
TEMP=`echo $TEMP | sed -e "s/*//g"`
HUM=`echo $HUM | sed -e "s/%//g"`

echo $TEMP
echo $HUM
# Send data
curl -s -i -H  "Accept: application/json"  "http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"
    TEMP=""
    HUM=""
    rm $TMPFILE
    exit 0
    fi
    #echo $cpt
    cpt=$(($cpt+1))
    done
    exit 1 
as-tu une idée?

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 19:25
par damolc
grace a toi les unités ont disparu mais pas Temp et Humidity?

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 19:32
par damolc
j y suis presque
avec : sed 's/[^[:digit:]]//g'` les chiffre remonte mais je perd les virgules ce qui est très gênant :oops:

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 20:14
par Chrominator
J'avais pas compris que Temp et Humidity faisait partie de la sortie.
Bah faut continuer sur le même principe par exemple.

Remplacer Temp= par rien du tout comme le *

Code : Tout sélectionner

TEMP=`echo $TEMP | sed -e "s/Temp=//g" | sed -e "s/*//g"`
HUM=`echo $HUM | sed -e "s/Humidity=//g" | sed -e "s/%//g"`

Re: besoin d aide pour application/json

Publié : 13 juin 2020, 20:55
par damolc
merci de ton aide
tout fonctionne parfaitement