Update capteur virtuel DS18B20 dans domoticz

Le bus 1-Wire, connectique, et intégration dans Domoticz
Répondre
bartras
Messages : 50
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Update capteur virtuel DS18B20 dans domoticz

Message par bartras » 13 janv. 2019, 15:44

Bonjour,

Je débute avec le Wemos D1 mini que je viens d'acheter sur Aliexpress plus une carte DS18B20.

J'ai réussi à téléverser le code suivant, mais mon capteur virtuel dans domoticz ne se mets pas à jour...

J'avoue que ça fait 3 heures que je me débat et que je commence à perdre espoir... d'où ce post.

Code : Tout sélectionner

/*
 * Read multiple One-Wire DS18B20 probes and publish value on Domoticz with HTTP request
 * Lecture multiple de sonde OneWire DS18B20 et plublication des mesures sur un serveur Domoticz requete HTTP
 * Code adapté - Code adaptated 
 * 
 */
#include <OneWire.h>
#include <DallasTemperature.h>
// 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>

// Data wire is plugged into port 4 on the Arduino or ESP32
#define ONE_WIRE_BUS 4
#define TEMPERATURE_PRECISION 10

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

// Tableaux contenant l'adresse de chaque sonde OneWire | arrays to hold device addresses
DeviceAddress insideThermometer = { 0x28,  0xB2,  0x2F,  0x35,  0x16,  0x13,  0x1,  0x55 };

// Parametres WIFI - WiFi settings
#define wifi_ssid "wifi_maison"
#define wifi_password "mdp_perso"

// Paramètres HTTP Domoticz - HTTP Domoticz settings
const char* host = "192.168.1.100";
const int   port = 8080;
#define IDX_insideTemp    621
HTTPClient http;

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

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

  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" devices.");

  // report parasite power requirements
  Serial.print("Parasite power is: "); 
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");

  // Vérifie sir les capteurs sont connectés | check and report if sensors are conneted 
  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 

  // set the resolution to 9 bit per device
  sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);

  // On vérifie que le capteur st correctement configuré | Check that ensor is correctly configured
  Serial.print("Device 0 Resolution: ");
  Serial.print(sensors.getResolution(insideThermometer), DEC); 
  Serial.println();
}

void printTemperature(String label, DeviceAddress deviceAddress){
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print(label);
  if (tempC == -127.00) {
    Serial.print("Error getting temperature");
  } else {
    // Format JSON à respecter pour l'API Domoticz - Domoticz JSON API 
    // /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP
    // https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Temperature
      String url = "/json.htm?type=command&param=udevice&idx=";
        url += String(IDX_insideTemp);
        url += "&nvalue=0&svalue=";    
        url += String(tempC);
      sendToDomoticz(url);
    }
  }  

void loop() {
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures();
  Serial.println("DONE");

  // print the device information
  printTemperature("Inside : ", insideThermometer);
  //printTemperature("Outside : ", outsideThermometer);
  
  delay(5000);
}

//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();
}
Le moniteur série affiche :
Requesting temperatures...DONE
Inside : Connecting to 192.168.1.100
Requesting URL: /json.htm?type=command&param=udevice&idx=621&nvalue=0&svalue=21.12
closing connection
Et pourtant quand je passe par le navigateur et que j'envoie la commande directement ça le met bien à jour...

Je ne sais plus quoi faire. Si quelqu'un peut m'aider ?

Merci à la communauté.
Domoticz Version 4.9700
RFXtrx433 ; Sonoff basic ; Sonoff RF ; DANIU 433MHz ; OWL Micro+

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


mike913
Messages : 97
Enregistré le : 18 oct. 2014, 10:22
Localisation : Morsang / Orge - Essonne
Contact :

Re: Update capteur virtuel DS18B20 dans domoticz

Message par mike913 » 13 janv. 2019, 16:31

Bonjour
Remplace ta procédure sendToDomoticz par:

Code : Tout sélectionner

void sendToDomoticz(String url){
  srting URL2 = "http://192.168.1.100:8080";
  URL2 += url;
  Serial.println (URL2);
  http.begin(URL2);
  int httpCode = http.GET();
  Serial.println (httpCode);
    if (httpCode) {
      if (httpCode == 200) {
        String payload = http.getString();
        Serial.println("Domoticz response "); 
        Serial.println(payload);
      }
    }
  Serial.println("closing connection");
  http.end();
  }
  
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

bartras
Messages : 50
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Re: Update capteur virtuel DS18B20 dans domoticz

Message par bartras » 13 janv. 2019, 17:43

J'ai testé, sans succès.

Mais je viens de me rendre compte que si je ne me suis pas connecté avec mon identifiant et pass à domoticz, j'avais le message suivant dans le navigateur :
401 Unauthorized
Du coup, je pense qu'il faut que j'envoie l'identifiant et le pass dans le code...
Mais je ne sais pas comment faire, j'ai fait quelque essai avec les infos de ce lien https://easydomoticz.com/traduction-fra ... -domoticz/

J'ai ajouté le pass, mais je ne vois pas comment ajouter l'identifiant... ?

Code : Tout sélectionner

http://192.168.1.100:8080/json.htm?type=command&param=udevice&idx=621&nvalue=0&svalue=24.25&passcode=ton_mdp
Domoticz Version 4.9700
RFXtrx433 ; Sonoff basic ; Sonoff RF ; DANIU 433MHz ; OWL Micro+

bartras
Messages : 50
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Re: Update capteur virtuel DS18B20 dans domoticz

Message par bartras » 13 janv. 2019, 17:59

C'est bon j'ai réussi, en regardant sur le wiki officiel en anglais !

https://www.domoticz.com/wiki/Domoticz_ ... horization

Il fallait ajouter le code suivant :
Authorization with parameters

An other way to set username and password when calling the API is :

http://domoticz-ip<:port>/json.htm?username=MkE=&password=OVM=&api-call

MkE= is the base64 encoded username ('2A' in this example)
OVM= is the base64 encoded password ('9S' in this example)
Domoticz Version 4.9700
RFXtrx433 ; Sonoff basic ; Sonoff RF ; DANIU 433MHz ; OWL Micro+

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


mike913
Messages : 97
Enregistré le : 18 oct. 2014, 10:22
Localisation : Morsang / Orge - Essonne
Contact :

Re: Update capteur virtuel DS18B20 dans domoticz

Message par mike913 » 13 janv. 2019, 19:30

Si tu es en réseau local tu n'as pas besoin de joindre identifiant et mot de passe, dans réglage->paramètres:
Il suffit pour cela d'aller un peu plus bas, et dans la section Réseaux locaux (pas d'identification) : entrez 192.168.20.*;127.0.0.1 en remplaçant 192.168.20.* par le début de l'IP d'accès à Domoticz sur votre réseau.
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

bartras
Messages : 50
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Re: Update capteur virtuel DS18B20 dans domoticz

Message par bartras » 14 janv. 2019, 21:11

Merci pour l'info.
Domoticz Version 4.9700
RFXtrx433 ; Sonoff basic ; Sonoff RF ; DANIU 433MHz ; OWL Micro+

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre