23-11-2020, 12:41 AM
Muy buenas, estoy en un proyecto y he llegado a un punto que no paso de ahi, a ver si comentandolo por aqui, podeis echarme una ano, gracias.
Lo primero , os pongo dos codigos:
Este es uno de los TX:
Este es el RX:
El problema que tengo, es que en la base de datos , no me entra bien los valores, o bien me coge los del TX1 o los del TX2 , pero no los diferencia, viendo en el monitor serial , si se diferencia bien:
Pero viendo el log de mi base de datos, se puede apreciar que los datos no estan bien:
Como se puede observar, en sensor1=2(el TX2) pero en sensor2=2 , osea el mismo , despues de unas lineas entra el TX1 y asi , pero no los diferencia correctamente.
Alguna sugerencia??? Gracias!!!
Lo primero , os pongo dos codigos:
Este es uno de los TX:
Código:
#include <SPI.h>
#include "RF24.h"
#include "RF24Network.h"
#include "RF24Mesh.h"
#include "DHT.h"
RF24 radio(7,8);
RF24Network network(radio);
RF24Mesh mesh(radio,network);
#define nodeID 2
#define NOMESHMASTER
#define dnt_pin 2
DHT dht;
struct dataOut {
uint32_t nid;
float temp;
float hum;
};
uint32_t sendTimer = 0;
uint32_t sendInterval = 6000;
void setup() {
Serial.begin(115200);
dht.setup(dnt_pin);
mesh.setNodeID(nodeID);
mesh.begin(72,RF24_250KBPS,30000);
radio.setPALevel(RF24_PA_LOW);
radio.printDetails();
}
void loop() {
if (millis() - sendTimer >= sendInterval) {
sendData();
sendTimer = millis();
}
}
void sendData() {
float t = dht.getTemperature();
float h = dht.getHumidity();
dataOut payload = {
nodeID,
t,
h,
};
mesh.update();
if ( !mesh.write(&payload,1,sizeof(payload),0) ) {
Serial.println("Envio Fallido");
if ( !mesh.checkConnection() ) {
Serial.println("Renovando la Direccion");
mesh.renewAddress();
} else {
Serial.println("Envio Fallido, test ok");
}
} else {
delay(5);
Serial.println("Envio Correcto!!");
}
}
Este es el RX:
Código:
#include <SPI.h>
#include "RF24.h"
#include "RF24Network.h"
#include "RF24Mesh.h"
#include <Ethernet.h>
#define INTERWAL 3000
RF24 radio(7,8);
RF24Network network(radio);
RF24Mesh mesh(radio,network);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "xxxxxxxxxx.es";
EthernetClient client;
unsigned long tiempo_conexion = 0;
struct nodoIn {
uint32_t nid;
float temp;
float hum;
};
void setup() {
Serial.begin(115200);
mesh.setNodeID(0);
mesh.begin(72,RF24_250KBPS,30000);
radio.setPALevel(RF24_PA_LOW);
radio.printDetails();
Serial.println("Estacion Base Lista");
Ethernet.begin(mac);
}
void loop() {
mesh.update();
mesh.DHCP();
while (network.available()) {
RF24NetworkHeader header;
network.peek(header);
nodoIn nodoData;
switch(header.type) {
case 1:
case 2:
network.read(header,&nodoData,sizeof(nodoData));
Serial.print("sensor:");
Serial.print(nodoData.nid);
Serial.print("temperatura:");
Serial.print(nodoData.temp);
Serial.print("humedad:");
Serial.print(nodoData.hum);
Serial.println(" ");
break;
default:
Serial.println("Mensaje no Definido");
break;
}
}
if (millis() - tiempo_conexion > INTERWAL) {
}
nodoIn nodoData;
RF24NetworkHeader header;
network.peek(header);
switch(header.type) {
case 1:
case 2:
network.read(header,&nodoData,sizeof(nodoData));
client.stop();
if (client.connect(server, 80)) {
client.print("GET /insertar.php?");
client.print("&sensor1=");
client.print(nodoData.nid);
client.print("&temperatura1=");
client.print(nodoData.temp);
client.print("&humedad1=");
client.print(nodoData.hum);
client.print("&sensor2=");
client.print(nodoData.nid);
client.print("&temperatura2=");
client.print(nodoData.temp);
client.print("&humedad2=");
client.print(nodoData.hum);
client.println(" HTTP/1.1");
client.println("Host: xxxxxxx.es");
client.println("Connection: close");
client.println();
tiempo_conexion = millis();
}
}
}
El problema que tengo, es que en la base de datos , no me entra bien los valores, o bien me coge los del TX1 o los del TX2 , pero no los diferencia, viendo en el monitor serial , si se diferencia bien:
Pero viendo el log de mi base de datos, se puede apreciar que los datos no estan bien:
Como se puede observar, en sensor1=2(el TX2) pero en sensor2=2 , osea el mismo , despues de unas lineas entra el TX1 y asi , pero no los diferencia correctamente.
Alguna sugerencia??? Gracias!!!