Récuperer valeur d'un dispositif

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.
espagne1988
Messages : 19
Inscription : 03 déc. 2016, 22:24

Récuperer valeur d'un dispositif

Message par espagne1988 »

Bonjour,

Je vous écris afin de solliciter votre aide.
Je ne parviens pas à trouver comment récupérer les valeurs d'un dispositif afin de pouvoir les exploiter dans un script python

Je voudrais récupérer la température extérieure afin de faire une comparaison avec la température intérieure.

Image

Comment faire pour recupérer la donnée 31,9°C ?

Merci d'avance
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Récuperer valeur d'un dispositif

Message par Chrominator »

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
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Récuperer valeur d'un dispositif

Message par papoo »

le plus simple est de passer par l'api json
https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

exemple de requête qui retourne les données d'un device au format Json
http://AdresseIP:Port/json.htm?type=devices&rid=IDX
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
espagne1988
Messages : 19
Inscription : 03 déc. 2016, 22:24

Re: Récuperer valeur d'un dispositif

Message par espagne1988 »

papoo a écrit : 27 août 2019, 22:08 le plus simple est de passer par l'api json
https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

exemple de requête qui retourne les données d'un device au format Json
http://AdresseIP:Port/json.htm?type=devices&rid=IDX
J'ai bien compris le JSON ca m'a vraiment pas mal aidé par contre par contre je ne comprends pas comment inputer une variable de la valeur 26.5 ?

Image
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Récuperer valeur d'un dispositif

Message par vil1driver »

espagne1988 a écrit : 27 août 2019, 17:07 Je voudrais récupérer la température extérieure afin de faire une comparaison avec la température intérieure.
salut,

tu veux vraiment utiliser python ?

car en lua ou même blocky, ce serait déjà réglé ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Récuperer valeur d'un dispositif

Message par papoo »

il faut "parser" (décoder) les données qui sont au format json
https://docs.python.org/fr/3/library/json.html
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Récuperer valeur d'un dispositif

Message par papoo »

ceci pourra surement t'aider
viewtopic.php?t=8618
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
espagne1988
Messages : 19
Inscription : 03 déc. 2016, 22:24

Re: Récuperer valeur d'un dispositif

Message par espagne1988 »

Merci, j'ai réussi à m'inspirer des autres sujets

pour finir j'ai fait :

- sudo apt-get update
- sudo apt-get upgrade
- sudo pip3 install --upgrade setuptools

Et ensuite le code suivant:

Code : Tout sélectionner

#!/usr/bin/python3
# -*- coding: latin-1 -*-

#Permet de récupérer une valeur dans domoticz

import requests
import chardet
import json

# Variable utilisateur : http://192.168.1.8:8080/json.htm?type=command&param=getuservariable&idx=6
# Récupérer valeur d'un dispositif : http://192.168.1.8:8080/json.htm?type=devices&rid=17

url = 'http://192.168.1.8:8080/json.htm?type=command&param=getuservariable&idx=6'
Response = requests.get(url)

if(Response.ok):
    result = json.loads(Response.content.decode(chardet.detect(Response.content)["encoding"]))
    print (result['result'][0]['Temp'])
    Temp=str(result['result'][0]['Temp'])
    print("la valeur de la variable dz est à " + Temp)
On peut cloturer le sujet
A+
Répondre