Besoin d'aide pour un request put

Bonjour à tous,
j’ai besoin d’un petit peu d’aide pour rédiger un script relativement basique, mais mes dernières prog date de la fac (il y a plus de 25 ans) je peux lire et comprendre les scripts, mais je n’ai plus les connaissances pour les rédiger sans erreur.
Ce que je cherche a faire c’est à changer l’état d’une prise socket de homewizard energy. Je me suis basé sur le script pour lire les valeurs du P1 qui existe sur la communauté pour pouvoir lire les valeurs du socket et ca fonctionne. Par contre j’essaye en vain de changer l’état avec une requête put, mais je n’y arrive pas. j’ai essayé plusieurs choses mais j’avais des messages d’erreur. Ici j’ai un script qui ne me renvoie plus de message d’erreur mais il ne change pas non plus l’ état du socket.

mon script est le suivant

import requests
import json

url = 'http://192.168.0.92/api/v1/state'
headers = {'Content-Type': 'application/json', 'Content-Length' : '<length>'}
data = {'"power_on"' : 'false'}

response = requests.put(url, headers=headers, data=data)

print (response)

je me suis basé sur la doc du socket
://api-documentation.homewizard.com/docs/endpoints/api-v1-state

et qui dit ceci

Turn on socket

<Request>
PUT http://{IP address}/api/v1/state HTTP/1.1
Content-Type: application/json
Content-Length: <length>
{  
 "power_on": true
}
<Response>
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: <length>
{  
 "power_on": true
}

Si une âme charitable pouvait m’aider ce serait cool

merci d avance

Bonjour @michichi ,

essaye d’utiliser le bouton image pour mettre ton code en forme stp :wink:

tu veux le faire en quel langage? bash? python? php?
car là tu as montré un bout en python :wink:
je te laisse corriger et préciser ton besoin. php dans un bloc code de scénario c’est le plus facile, mais on peut t’aider si tu veux rester avec le plugin script et du python

edit: as tu vu qu’il y a un tutoriel et des échanges sur homewizard?
https://community.jeedom.com/search?q=homewizard%20order%3Alatest

Salut,
oui j’ai lu les differents post, mais il parle tous du lecteur de compteur qu’on branche sur le port P1. J’en ai un et ca fonctionne. Ici c’est pour utiliser et commander un compteur sur prise qui fait aussi actionneur.
J’arrive a lire les valeurs sans problème car j’ai repris le design du script su P1 que j’ai adapté.
Comme ces scripts étaient redigés en python, je suis reste dans la meme optique, mais techniquement je n’ai pas de préference. je cherche juste un moyen de pouvoir actionner mes socket via jeedom, donc script ou scenario tout est bon.

import requests

# DOC => https://api-documentation.homewizard.com/docs/endpoints/api-v1-state/

# state endpoint
url = 'http://192.168.0.92/api/v1/state'

# données à envoyer
data = {
    'power_on': false
}

# Définissez les en-têtes de la requête
headers = {
    'Content-Type': 'application/json'
}

# Requête PUT
response = requests.put(url, headers=headers, data=data)

# Requête ok si http code 200
if response.status_code == 200:
    # Traitez la réponse JSON
    data = response.json()
    # Ici utilise les données si besoin

else:
    # Gérez l'erreur
    print(f"La requête a échoué avec le code d'état {response.status_code}")

je ferais un truc du genre
je n’ai pas mis le Content-Length, à voir si obligatoire ou automatiquement calculé pour la requete

voila j’ai trouvé, il fallait utilsé json = { « power_on » : False} au lieu de data

ca donne donc ceci

import requests

DOC => Control socket state (/api/v1/state) | HomeWizard Energy API Documentation

state endpoint

url = ‹ http://192.168.0.86/api/v1/state ›

données à envoyer

json = {
« power_on »: False
}

Définissez les en-têtes de la requête

headers = {
‹ Content-Type ›: ‹ application/json ›
}

Requête PUT

response = requests.put(url, json = json,headers =headers )

Édité ton message avec la balise de texte préformaté parce que là ton code est illisible :wink:

voici

import requests

# DOC => https://api-documentation.homewizard.com/docs/endpoints/api-v1-state/

# state endpoint
url = 'http://192.168.0.92/api/v1/state'

# données à envoyer
json = {
    "power_on": False
}

# Définissez les en-têtes de la requête
headers = {
    'Content-Type': 'application/json'
}

# Requête PUT
response = requests.put(url, json = json,headers =headers )saisissez ou collez du code ici
2 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.