Hallo allerseits,
ich experimentiere gerade mit einem 433MHz RF Modul und einem DHT11.
Ich empfange die Temperatur und die Luftfeuchtigkeit usw. also senden und empfangen klappt.
ABER ich habe das gefühl man kann den STRING bestimmt einfacher zerlegen als ich das gemacht hab.
Hier der gesendete String:
int humiINT = (int)humi;
int tempINT = (int)temp;
int vccINT = (int)readVcc();
snprintf(msg, 26, "s=%d&t=%d&h=%d&v=%d", SENSORID,tempINT,humiINT,vccINT) ;
vw_send((uint8_t *)msg, strlen(msg)); // Daten per VirtualWire-Lib versenden
vw_wait_tx(); // Auf kompletten Versandt warten
Und hier von der empfänger Seite:
void loop(){
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
// Daten-Variable, die die empfangenen Daten hält
char SensorDataTemp[VW_MAX_MESSAGE_LEN+1];
// Daten-Variable, zum Übergeben der Daten an die WebRequest-Funktion
String SensorData;
String Sensor1;
// Empfang von Daten prüfen
if (vw_get_message(buf, &buflen)) {
int i;
memset(SensorDataTemp, 0, VW_MAX_MESSAGE_LEN+1); // Das ganze Array mit 0en füllen
// Datagramm zusammensetzen
for (i = 0; i < buflen; i++) {
SensorDataTemp[i] = (char)buf[i];
}
// Char-Variable terminieren
SensorDataTemp[VW_MAX_MESSAGE_LEN+1] = '\0';
// Char to String-Konvertierung zur Übergabe an die connect()-Funktion
SensorData = SensorDataTemp;
// Serial-Output zum Debuggen
Serial.println();
Serial.print(F("Daten empfangen: "));
Serial.print(SensorData);
Serial.println();
}
}
Und so sieht das aus, was da an kommt:
Daten empfangen: s=1&t=25&h=40&v=4537
s=1 <--SensorID
t=25 <--Temperatur
h=40 <--Luftfeuchte
v=4537 <--Volt
Und zerlegt habe ich das so:
Serial.print(F("Temperatur: "));
Serial.print(SensorData[6]);
Serial.print(SensorData[7]);
Serial.print(F("C "));
Serial.println();
Serial.print(F("Luftfeuchte: "));
Serial.print(SensorData[11]);
Serial.print(SensorData[12]);
Serial.print(F("%"));
Serial.println();
Ich hoffe ihr versteht mich
Ich möchte aus dem String also nur die Temperatur und die Luftfeuchte haben.