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("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(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(2000);
}
void loop()
{
printInfo();
delay(600); // Wait 60 seconds
Serial.print("Starting variables.");
delay(500);
Serial.print("..");
delay(250);
Serial.println("...");
delay(250);
distance = 0;
client.print(idx);
Serial.print("Average values: ");
Serial.println(values_avg);
Serial.println(distance);
distance = map(values_avg,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(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
Serial.println(distance);
Serial.println(" cm");
//Delay 50ms before next reading.
delay(5000);
}
void printInfo()
{
// Domoticz format /json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=distance
if (client.connect(domoticz_server,port)) {
Serial.println("Sending Values to server...:");
Serial.println(distance);
client.print("GET /json.htm?type=command¶m=udevice&idx=");
client.print(idx);
client.print("&nvalue==0&svalue=");
client.print(distance);
client.print(";");
client.print("&svalue=");
client.print(";0");
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("Cm");
client.stop();
Serial.println(distance);
}
}
esp8266 s hc-sr04 odeslání dat do Domoticz
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: esp8266 s hc-sr04 odeslání dat do Domoticz
Podľa tohto predpisu:
Ti to nesedí. Prečo tam odosielaš aj znaky ;, nerobia problém tie?
Pretože odosielaš:
Chýbajú ti aj ďalšie veci, napríklad ak ti vypadne internet v loop slučke, už sa nenapojíš.
2x pri pripojení na server si vypisuješ premennú distance, odošleš ju na 2 krát ale zle a po uzatvorení pripojenia odosielaš idx v slučke po delayi. Zmysel?
V tom kóde je veľa zbytočných chýb. V ArduinoIDE ide, to znamená, že sa skompiluje? Prejde request na server? Nie je chyba v tom, že server nevie spracovať premenné, ktoré majú číslo a ; dvojbodku, ktoré mu posielaš?
Kód: Vybrat vše
// Domoticz format /json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=distance
Pretože odosielaš:
Kód: Vybrat vše
// Domoticz format /json.htm?type=command¶m=udevice&idx=idx&nvalue=0&svalue=distance;&svalue=;0
Kód: Vybrat vše
#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("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(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(2000);
}
void loop()
{
printInfo();
delay(600); // Wait 60 seconds
Serial.print("Starting variables.");
delay(500);
Serial.print("..");
delay(250);
Serial.println("...");
delay(250);
distance = 0;
//client.print(idx);
Serial.print("Average values: ");
Serial.println(values_avg);
Serial.println(distance);
distance = map(values_avg,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(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
Serial.println(distance);
Serial.println(" cm");
//Delay 50ms before next reading.
delay(5000);
}
void printInfo()
{
// Domoticz format /json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=distance
if (client.connect(domoticz_server, port)) {
Serial.println("Sending Values to server...:");
String url = "/json.htm?type=command¶m=udevice&idx=";
url += String(idx);
url += "&nvalue==0&svalue=0"; //dosad si pemenne
Serial.println("Data uspesne odoslane");
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: ESP8266\r\n" + "Connection: close\r\n\r\n");
} else if (!client.connect(host, httpsPort)) {
Serial.println("Nepodarilo sa odoslat data");
}
}
}
2x pri pripojení na server si vypisuješ premennú distance, odošleš ju na 2 krát ale zle a po uzatvorení pripojenia odosielaš idx v slučke po delayi. Zmysel?
V tom kóde je veľa zbytočných chýb. V ArduinoIDE ide, to znamená, že sa skompiluje? Prejde request na server? Nie je chyba v tom, že server nevie spracovať premenné, ktoré majú číslo a ; dvojbodku, ktoré mu posielaš?
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů