Requests time out

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
Répondre
espagne1988
Messages : 17
Enregistré le : 03 déc. 2016, 22:24

Requests time out

Message par espagne1988 »

Salut les gars,

Je viens vers vous car je suis dans l'impasse,
J'essaie de faire un thermostat avec des commandes JSON en utilisant le module requests.

Lorsque je veux allumer ou éteindre ma chaudiere, le module requests tombe en time out. (Aussi bien en python qu'en python3)
Je ne comprends vraiment pas car la commande r = requests.get("") est utilisée dans d'autres scripts et cela fonctionne parfaitement.

Pouvez-vous m'aiguiller ?

Code : Tout sélectionner

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

# basé sur le script Adafruit et adapté pour Domoticz

import os
import sys
from requests.auth import HTTPBasicAuth
import datetime   
import time
import requests
import chardet
import json


############# Parametres ################################# 

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

domoticz_ip='192.168.1.8'
domoticz_port='8080'
user=''
password=''

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de l'heure 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

heure = datetime.datetime.now().strftime('%H,%M') # control des minutes et secondes
print(heure)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Récupère la température de chez Clémence
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

url = 'http://192.168.1.8:8080/json.htm?type=devices&rid=27'
Response = requests.get(url)

if(Response.ok): #Récupère la temperature de l'idx 27
    result = json.loads(Response.content.decode(chardet.detect(Response.content)["encoding"]))
    print (result['result'][0]['Temp'])
    ClemTemp=str(result['result'][0]['Temp'])
    print("la temperature dans la chambre de Clem est de " + ClemTemp + "°C")

############# Fin des parametres ################################# 


# Thermostat

if heure >= "10,00" and heure <= "23,00":
	if ClemTemp <= "18.0":
		print("Démarrage de la chaudière")
		r = requests.get("http://lamaisondeju.ddns.net:8080/json.htm?type=command&param=setsetpoint&idx=15&setpoint=21")
	elif ClemTemp >= "19.0":
		print("Arret de la chaudiere")
		r = requests.get ("http://lamaisondeju.ddns.net:8080/json.htm?type=command&param=setsetpoint&idx=15&setpoint=17")	
	else: 
		print("Il fait bon dans sa chambre")
		
else: 
	print("il n'est pas l'heure")

	
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
#Next step 
Voici un printscreen de mon erreur :
Image

Merci d'avance

froglock30
Messages : 22
Enregistré le : 21 oct. 2019, 09:31
Localisation : Gard
Contact :

Re: Requests time out

Message par froglock30 »

Salut,

Pour interroger les devices Domoticz j'ai fait ça :

Un script python "time"

Code : Tout sélectionner

import DomoticzEvents as DE
lBallonHaut = float(DE.Devices["Ballon Haut"].n_value_string) # pour récupérer la température de mon ballon tampon
lChaudiereAllumee = DE.Devices["Chaudière ON/OFF"].n_value_string # Pour récupérer le status de mon interrupteur chaudière

#Pour allumer la chaudière 
DE.Command("Chaudière ON/OFF", "On")
# Pour éteindre 
DE.Command("Chaudière ON/OFF", "Off")
L'interrupteur est un module zWave (fibaro) contact sec qui déclenche la chauffe de la chaudière

J'ai mis mon script complet la : viewtopic.php?f=17&t=9113

L'avantage c'est que l'on passe par un module domoticz (les lectures sont immédiates et les "ordres" très rapide aussi)

espagne1988
Messages : 17
Enregistré le : 03 déc. 2016, 22:24

Re: Requests time out

Message par espagne1988 »

Merci pour ta réponse, mais je n'ai jamais réussi à importer le module domoticz :x connais tu la commande ?

froglock30 a écrit :
22 nov. 2019, 15:53
Salut,

Pour interroger les devices Domoticz j'ai fait ça :

Un script python "time"

Code : Tout sélectionner

import DomoticzEvents as DE
lBallonHaut = float(DE.Devices["Ballon Haut"].n_value_string) # pour récupérer la température de mon ballon tampon
lChaudiereAllumee = DE.Devices["Chaudière ON/OFF"].n_value_string # Pour récupérer le status de mon interrupteur chaudière

#Pour allumer la chaudière 
DE.Command("Chaudière ON/OFF", "On")
# Pour éteindre 
DE.Command("Chaudière ON/OFF", "Off")
L'interrupteur est un module zWave (fibaro) contact sec qui déclenche la chauffe de la chaudière

J'ai mis mon script complet la : viewtopic.php?f=17&t=9113

L'avantage c'est que l'on passe par un module domoticz (les lectures sont immédiates et les "ordres" très rapide aussi)

froglock30
Messages : 22
Enregistré le : 21 oct. 2019, 09:31
Localisation : Gard
Contact :

Re: Requests time out

Message par froglock30 »

Salut,

A force de recherche sur les forums, c'est pas le domoticz qu'il faut importer mais le DomoticzEvents (avec les majuscules) l'exemple par défaut lorsque tu créé le script est faux (surement obsolète) par contre ceux que tu trouve dans le sous dossier de domoticz sont bon.

Tu peux les trouvez dans le sous dossier ci-dessous

./domoticz/var/scripts/python

Fred

Code : Tout sélectionner

 # script_device_demo
import DomoticzEvents as DE

DE.Log("Python: Changed: " + DE.changed_device.Describe())

if DE.changed_device_name == "Test":
    if DE.Devices["Test_Target"].n_value_string == "On":
        DE.Command("Test_Target", "Off")

    if DE.Devices["Test_Target"].n_value_string == "Off":
        DE.Command("Test_Target", "On")

DE.Log("Python: Number of user_variables: " + str(len(DE.user_variables)))

# All user_variables are treated as strings, convert as necessary
for key, value in DE.user_variables.items():
    DE.Log("Python: User-variable '{0}' has value: {1}".format(key, value))

# Description of Device_object should go here...

Code : Tout sélectionner

 # script_time_demo
 import DomoticzEvents as DE

if DE.is_daytime:
    DE.Log("Python: It's daytime!")

if DE.is_nighttime:
    DE.Log("Python: It's nighttime!")

DE.Log("Python: Sunrise in minutes: " + str(DE.sunrise_in_minutes))
DE.Log("Python: Sunset in minutes: " + str(DE.sunset_in_minutes))
DE.Log("Python: Minutes since midnight: " + str(DE.minutes_since_midnight))

espagne1988
Messages : 17
Enregistré le : 03 déc. 2016, 22:24

Re: Requests time out

Message par espagne1988 »

J'ai réussi a by-passer mon time out en utilsant les commandes :

Code : Tout sélectionner

url = "http://192.168.1.8:8080/json.htm?type=devices&rid=27"
		Response = requests.get(url)
		if(Response.ok):
			result = json.loads(Response.content.decode(chardet.detect(Response.content)["encoding"]))
			#print (result['result'][0]['Temp'])
			TempClem=str(result['result'][0]['Temp'])
			ClemTemp=float(TempClem)


Sujet remonté par espagne1988 le 08 déc. 2019, 10:37.

Répondre