besoin d aide pour application/json

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

besoin d aide pour application/json

Message 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
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: besoin d aide pour application/json

Message 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?
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: besoin d aide pour application/json

Message 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"`
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: besoin d aide pour application/json

Message 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?
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: besoin d aide pour application/json

Message par damolc »

grace a toi les unités ont disparu mais pas Temp et Humidity?
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: besoin d aide pour application/json

Message 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:
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: besoin d aide pour application/json

Message 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"`
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
damolc
Messages : 240
Inscription : 24 juil. 2016, 22:08

Re: besoin d aide pour application/json

Message par damolc »

merci de ton aide
tout fonctionne parfaitement
Répondre