Utilisation API BOX DIO

Bonjour,

J’ai trouvé un moyen d’utiliser l’API de la box DIO.

Voilà le script python que j’utilise

#-- importing the requests library
#-- if you don't have requests package yet launch pip install requests
import requests
 
#-- defining the api-endpoint 
DIOBOX_URL = "http://192.168.1.1/cgi-bin/api.cgi"
 
#-- data to be sent to api
#-- cmd  =2 (OFF)
#-- cmd = 1 (ON)
#-- devid is the id of the device. Found it on the configuration page of the room

data = {'cmd':'2',
        'devid':'71E4BD2401',
        'do':'sendcmd',
        'level':'front'}
		
 
#-- sending post request and saving response as response object
r = requests.post(url = DIOBOX_URL, data = data)
 
#-- extracting response text 
DIOBOX_RESPONSE = r.text
print("Response is:%s"%DIOBOX_RESPONSE)
3 J'aimes

Excellent !
Où peut on trouver la doc de cet API ? La liste des commandes et la syntaxe, en particulier…

Merci d’avance.

En fait, mon problème est très concret : je cherche à relever les valeurs de sondes de température, et ce de manière périodique. En utilisant le protocole proposé plus haut, quelle commande faut-il envoyer, et avec quel format ?

Merci d’avance.

Bonjour doubleD78,

J’ai adapté et puis essayé ton script mais ma homebox ( fw 2.4.3 ) n’est pas contente:

Response is:{“data”:{},“error”:13,“message”:“NEW_TOKEN”}

J’en conclus qu’il y a un problème d’authentification, ce qui me semble logique pour la sécurité.

C’est probablement quelque chose de “gros comme une maison” :slight_smile: mais Je ne trouve rien de concluant sur google; aurais-tu des informations à ce sujet ?

Merci,
Bruno

Voici pour ceux qui seraient intéressés par l’équivalent PHP de ton script (j’ai repris ta logique et tes commentaires :wink: ainsi que celle de sky dans ses articles https://www.skymac.org/Admin-Dev/article-0e60ab8a-Receptionner-des-donnees-JSON-en-POST-avec-PHP.htm
et https://www.skymac.org/Admin-Dev/article-a1192fc8-Envoyer-des-donnees-JSON-en-POST-avec-PHP.htm )

#!/usr/bin/php
<?php
/* Creation des donnees */
#-- data to be sent to api
#-- cmd  =2 (OFF)
#-- cmd = 1 (ON)
#-- devid is the id of the device. Found it on the configuration page of the room

$data = array(
    'cmd' => '2',
    'devid' => 'E1A95CCC01',
    'do' => 'sendcmd',
    'level' => 'front'
);

/* Creation des options de contexte */
$options = array(
    'http' => array(
        'method'  => 'POST',
        'header'  => "Content-Type: application/json",
        'ignore_errors' => true,
        'timeout' =>  10,
        'content' => json_encode($data),
    ),
);

/* Creation du contexte HTTP */
$context  = stream_context_create($options);

/* Execution de la requete */
$jsonData = file_get_contents('http://192.168.2.194/cgi-bin/api.cgi', false, $context);
print_r($jsonData);
if (strlen($jsonData) > 0) {
    /* Decoder JSON */
    $data = json_decode($jsonData, true);
    /* Verifie les erreurs et le format final */
    if (!(json_last_error() == JSON_ERROR_NONE and is_array($data)))
        die("Données JSON invalides.\n");
} else
    die("Aucune données JSON.\n");
?>