DOMOTICZ - Tracer une Sinusoïde

Avatar de l’utilisateur
Fred
Messages : 48
Inscription : 18 avril 2020, 15:57
Localisation : Belgique
Contact :

DOMOTICZ - Tracer une Sinusoïde

Message par Fred »

Dans la catégorie Inutile donc Indispensable je vous propose de tracer une sinusoïde dans Domoticz. :roll:
Domoticz_Sinusoïde.png
Bon ok tracer une sinusoïde c'est bien beau mais ça sert à rien, sauf que ça permet de prendre en main les requêtes HTTP vers un serveur Domoticz et ça c'est utile !



Envoyer une requête HTTP à Domoticz n'a rien de sorcier. Vous vous rendez dans votre navigateur favoris et vous taper la requête dans la barre d'adresse.

La requête de base se constitue de l'IP du serveur Domoticz + le port + le numéro IDX du dispositif à actionner, interroger, mettre à jour + la ou les donnée(s) à envoyer. Et entre tout ça il y a 2 - 3 choses superflues à ajouter mais tout aussi indispensable pour que ça fonctionne.

Un exemple sera plus parlant. http://192.168.1.10:8080/json.htm?type=command&param=udevice&idx=220&nvalue=0&svalue=25

L'IDX est propre à chaque dispositif. Vous le trouvez dans le menu "Réglages" -> "Dispositifs"
Domoticz_IDX.jpg
Domoticz_IDX.jpg (25.52 Kio) Consulté 2968 fois
Dans notre cas un capteur virtuel de température fera l'affaire. Vous ne savez pas ou plus comment faire. Aller je vous file un site très bien documenté Easydomoticz, la référence Domoticz Française

Bon je te vois déjà te demander comment on fait une sinusoïde avec cette requête HTTP. On va charger un ESP de calculer le sinus de 1° - 2° - 3° ... 360° pour avoir une sinusoïde complète et d'envoyer la requête à Domoticz.

Restons honnête je me suis inspiré d'un exemple du très bon site Projets DIY dont j'ai nettoyé le code de tout ce qui à attrait au DS18B20 et j'ai juste gardé ce qui sert à se connecter au WiFi et envoyer l'URL et j'y au ajouté calcul Sin(x)

Voilà ce que ça donne. Programme fait dans l'IDE Arduino. N'oubliez pas d'ajouter toutes les librairies nécessaires.


Code : Tout sélectionner

// Pour un ESP32 (le SDK Espressif doit être installé) | For ESP32 (Espressif SDK must be installed) 
#include <WiFi.h>
#include <HTTPClient.h>
// Pour une carte ESP8266 | For ESP8266 development board
//#include <ESP8266WiFi.h>
//#include <ESP8266HTTPClient.h>
#include <PubSubClient.h>


// Parametres WIFI - WiFi settings
#define wifi_ssid "bbox2-6c1c"
#define wifi_password "lesoleilsecouchealouest"

// Paramètres HTTP Domoticz - HTTP Domoticz settings
const char* host = "192.168.1.10";
const int   port = 8080;

#define IDX   220 
HTTPClient http;

float x = 0;

void setup() {
  Serial.begin(115200);

  // Connexion au réseau WiFi, connexion aux sondes
  // Start WiFi connexion and probes
  setup_wifi();           

}


void loop() {

  String url = "/json.htm?type=command&param=udevice&idx=";
  url += String(IDX);
  url += "&nvalue=0&svalue=";    
  url += String(sin((x*3.14159/180))*10); 
  sendToDomoticz(url);
  Serial.print ("x= ");
  Serial.print (x);
  Serial.print ("   ");
  Serial.print ("Sin(x)=  ");
  Serial.println(sin((x*3.14159/180))*10);
  x= x + 1;
  delay(30000);
  if(x>360){x=0;}
}

//Connexion au réseau WiFi
void setup_wifi() {
  delay(10);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(wifi_ssid);

  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connexion OK ");
  Serial.print("=> Addresse IP : ");
  Serial.print(WiFi.localIP());
}


void sendToDomoticz(String url){
  Serial.print("Connecting to ");
  Serial.println(host);
  Serial.print("Requesting URL: ");
  Serial.println(url);
  http.begin(host,port,url);
  int httpCode = http.GET();
    if (httpCode) {
      if (httpCode == 200) {
        String payload = http.getString();
        Serial.println("Domoticz response "); 
        Serial.println(payload);
      }
    }
  Serial.println("closing connection");
  http.end();
}
C'est la première fois que j'utilisais la fonction Sin() de Arduino et je me suis aperçu qu'il utilise des radians. J'ai donc du convertir les degrés en radians (x Pi / 180). J'ai multiplié le tout par 10 pour avoir une certaine amplitude de la courbe.

La liste des commandes API/JSON URL's

Voilà fin de ce petit tuto. J’espère qu'il vous sera utile pour vos projets Domoticz.
Co président de Caliban.be
Répondre