Triko zdarma Triko zdarma
Pouze tento týden až 80 % sleva na vývoj webů v PHP.
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: ESP8266 a senzor HC-SR04 odeslani data na Domosticz

Hardware PC Hardware Ostatní hardware ESP8266 a senzor HC-SR04 odeslani data na Domosticz American English version English version

Aktivity (1)
Avatar
Milan Černý:2. ledna 9:19

Prosím o kontrolu kodu v arduino ide funguje ale neodesíla data na server Domoticz

#include <ESP8266WiFi.h>
const char* ssid = "";
const char* password = "";
WiFiClient client;
const char * domoticz_server = "192.168.0.41";
int port = 8080; //Domoticz port
int idx = 17; //IDX for virtual sensor, found in Setup -> Devices

#define echoPin D7 // Echo Pin
#define trigPin D6 // Trigger Pin

float distance= 0; // Duration used to calculate distance
long duration ;
unsigned int values_avg = 0;
void setup()

{
Serial.begin (115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("Con­necting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

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

}
Serial.println("");
Serial.println("Wi­Fi connected");
Serial.println("IP address: ");
Serial.println(Wi­Fi.localIP());
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(2000);
}

void loop()
{
printInfo();
delay(600); // Wait 60 seconds
Serial.print("Star­ting variables.");
delay(500);
Serial.print("..");
delay(250);
Serial.println("­...");
delay(250);

distance = 0;
client.print(idx);
Serial.print("A­verage values: ");
Serial.println(va­lues_avg);
Serial.println(dis­tance);
distance = map(values_av­g,0,400,0,100);
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trig­Pin, LOW);
delayMicrosecon­ds(2);
digitalWrite(trig­Pin, HIGH);
delayMicrosecon­ds(10);
digitalWrite(trig­Pin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
Serial.println(dis­tance);
Serial.println(" cm");
//Delay 50ms before next reading.
delay(5000);
}

void printInfo()
{
// Domoticz format /json.htm?type=com­mand&param=ude­vice&idx=IDX&nva­lue=0&svalue=dis­tance

if (client.connec­t(domoticz_ser­ver,port)) {
Serial.println("Sen­ding Values to server...:");
Serial.println(dis­tance);
client.print("GET /json.htm?type=com­mand&param=ude­vice&idx=");
client.print(idx);
client.print("&nva­lue==0&svalue=");
client.print(dis­tance);
client.print(";");
client.print("&sva­lue=");

client.print(";0");
client.println(" HTTP/1.1");
client.print("Host: ");
client.print(do­moticz_server);
client.print(":");
client.println(por­t);
client.println("U­ser-Agent: Arduino-ethernet");
client.println("Con­nection: close");
client.println("Cm");
client.stop();
Serial.println(dis­tance);

}

}

 
Odpovědět 2. ledna 9:19
Avatar
theG
Člen
Avatar
Odpovídá na Milan Černý
theG:4. ledna 12:29

Ahoj, pouze na první pohled, mohlo by to být tím, že závorka na obrázku nemá začátek?

 
Nahoru Odpovědět 4. ledna 12:29
Avatar
Roman
Člen
Avatar
Odpovídá na Milan Černý
Roman:4. ledna 13:42

Priste vkladej kod do tagu, protoze toto se neda cist. Zkontroluj si jestli ma zarizeni spravne pridelenou vychozi branu. Dale pokud navazujes spojeni na domenove jmeno, mel by jsi mit nastaveny dns server. Urcite bych vymenil domenove jmeno za ip adresu aspon pro zacatek. Do budoucna urcite predelat na domenove jmeno.

 
Nahoru Odpovědět 4. ledna 13:42
Avatar
Roman
Člen
Avatar
Odpovídá na theG
Roman:4. ledna 13:45

Zavorka je o tri radky vis za while, ale vzheledem ke vlozenemu kodu bez tagu ...

 
Nahoru Odpovědět 4. ledna 13:45
Avatar
Odpovídá na Milan Černý
don.jarducius:4. ledna 13:52

Ahoj, předpokládám, že SSID a heslo k APčku máš vyplněné a jenom jsi to sem nehodil ...

Můžeš sem přihodit výpis toho co ti ESP pošle na sériový port? Ať víme, kde se to sekne …

 
Nahoru Odpovědět 4. ledna 13:52
Avatar
Odpovídá na don.jarducius
Milan Černý:5. ledna 13:36

Ahoj ,SSID a heslo k APčku mám vyplněné ,výpis toho co mi ESP pošle na sériový port jsem dal do tagu

Connecting to doma
.
WiFi connected
IP address:
192.168.0.241
Sending Values to server...:
0.00
0.00
Starting variables......
Average values: 0
0.00
46.08
 cm
Sending Values to server...:
46.08
46.08
Starting variables......
Average values: 0
0.00
46.49
 cm
Sending Values to server...:
46.49
46.49
 
Nahoru Odpovědět 5. ledna 13:36
Avatar
Odpovídá na Milan Černý
don.jarducius:5. ledna 14:07

Tcp Port 8080 máš na tom PC ve firewallu povolený?

 
Nahoru Odpovědět 5. ledna 14:07
Avatar
Odpovídá na don.jarducius
Milan Černý:5. ledna 14:42

Tcp Port 8080 mám povolený mám podobný kod který mi odesílá taky na Domosticz zalévaní kytek a ten je funkcní vložím ho jsem

#include <ESP8266WiFi.h>
//Connect to BSSID
const int sleepTimeS = 5; // sleep time in minutes
const char* ssid     = "doma";
const char* password = "";
WiFiClient client;
// Domoticz server info
const char * domoticz_server = "192.168.0.41";
 int port = 8080; //Domoticz port
 int idx = 15; //IDX for this virtual sensor, found in Setup -> Devices


const int powersoil = D8; // Digital Pin 8 will power the sensor, acting as switch
const long interval = 400000;
const long interval1 = 100;
float Rain = 0;
const unsigned reading_count = 10; // Numbber of readings each time in order to stabilise
unsigned int analogVals[reading_count];
unsigned int counter = 0;
unsigned int values_avg = 0;
int RainStat = 0; // Status Variable for humidity- It can be Dry, Wet, Normal.




void setup() {
  // initialize serial communication at 115200 bits per second:
  Serial.begin(115200);
  delay(10);
 Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

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

}
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  pinMode(powersoil,OUTPUT);
  delay(200);
}

void loop() {
  Serial.print("Starting variables.");
  delay(500);
  Serial.print("..");
  delay(250);
  Serial.println("...");
  delay(250);
  values_avg = 0;
  Rain = 0;
  counter = 0;

  Serial.print("Average values: ");
  Serial.println(values_avg);
  Serial.print("Rain values: ");
  Serial.println(Rain);
  Serial.print("Counter values: ");
  Serial.println(counter);

  Serial.println("Powering module ON");
  digitalWrite(powersoil, HIGH);
  delay(1000);
  // read the input on analog pin 0:
  for( counter = 0; counter < reading_count; counter++){
    Serial.println("Reading probe value...:");
    analogVals[reading_count] = analogRead(A0);
    delay(100);

    values_avg = (values_avg + analogVals[reading_count]);
    Serial.println(analogVals[reading_count]);
    Serial.print("Total Readings value...:");
    Serial.println(values_avg);
  }
  values_avg = values_avg/reading_count;
  Serial.print("Average Readings value...:");
  Serial.println(values_avg);
  // make average value
  Rain = map(values_avg,0,400,0,100);
  // print out the value the sensor reads:
  Serial.print("Average humidity value...:");
  Serial.println(Rain);
  delay(interval1);
  Serial.println("Powering module off");
  digitalWrite(powersoil, LOW);
  delay(interval);
  RainStat = RainStatFunction(Rain);
  printInfo();
  Serial.print("Entering deep-sleep mode for Xmin*60 sec..");
  delay(1000);
  Serial.print("...");
  delay(1000);
  Serial.println("...");
  delay(1000);
  Serial.println("ESP8266 in sleep mode");
  ESP.deepSleep(sleepTimeS * 50000 * 60, WAKE_RF_DEFAULT);
  delay(100);

}

int RainStatFunction(int Rain){
  int RainStat = 0;
  if( Rain >40 && Rain <80){
    RainStat = 0;//Normal Soil


  }
  else if( Rain >=0 && Rain <=40){
    RainStat = 2;//Dry Soil
  }
  else if( Rain >= 80){
    RainStat = 3;//Wet Soil
  }
  Serial.println(RainStat);
  return RainStat;


}
void printInfo()
 {
    // Domoticz format /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=Rain;Rain_STAT

    if (client.connect(domoticz_server,port)) {
        Serial.println("Sending Values to server...:");
        Serial.println(RainStat);

        client.print("GET /json.htm?type=command&param=udevice&idx=");
        client.print(idx);
        client.print("&nvalue=");
        client.print(Rain);
        client.print("&svalue=");
        client.print(RainStat);
        client.println(" HTTP/1.1");
        client.print("Host: ");
        client.print(domoticz_server);
        client.print(":");
        client.println(port);
        client.println("User-Agent: Arduino-ethernet");
        client.println("Connection: close");
        client.println();
        client.stop();
        Serial.println(Rain);
     }
  }
 
Nahoru Odpovědět 5. ledna 14:42
Avatar
don.jarducius:5. ledna 17:28

Teď jsem si ještě všiml, na konci odesílání dát serveru máš jako poslední řádek "Cm", namísto prázdného radku... Server čeká na další hlavičky, ty ale nedorazí a tak požadavek server zahodí...

 
Nahoru Odpovědět 5. ledna 17:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.