INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Sensordaten aufteilen ?
05.12.2018, 16:27
Beitrag #1
Sensordaten aufteilen ?
Hey Leute,

ich überlege schon ne Weile wie ich folgendes hinbekomme leider ohne Erfolg:

http://192.168.1.200//signalInput.php?se...sorWert=20

Zum Verständnis die Url sendet eine Sensor ID + Sensorwert an meine Haussteuerung.
In dem Fall ID: 12345 mit dem Sensorwert: 20 die Haussteuerung visualisiert dann alles.

Wenn ich mir eigene Sensoren baue auf 433Mhz Basis dann kann ich denen sagen immer wenn sich der Wert ändert soll er einmal auf 433Mhz senden. zb. die 12345 indem ich folgendes mache: mySwitch.send(12345, 24); soweit alles gut.

Ich müsste es aber irgentwie hinbekommen das ich den aktuellen Sensorwert an die Sensorid dran hänge also zb. bei 20 Grad mySwitch.send(1234520, 24); usw.

Hier mein Code:
Code:
// Temp sender 433Mhz Test
// ID: 12345
// http://192.168.1.200//signalInput.php?sensorId=12345&sensorWert=20   // Web URL zum übertragen der Werte



#include "DHT.h"
#include <RCSwitch.h>


#define DHTPIN 8    

#define DHTTYPE DHT22  
DHT dht(DHTPIN, DHTTYPE);


RCSwitch mySwitch = RCSwitch();

unsigned long previousMillis = 0;        
const long interval = 10000;  

String baseUrl = "http://192.168.1.200//signalInput.php?";                       // http://192.168.1.200//signalInput.php?sensorId=12345&sensorWert=20       // Ziel-Adresse, Sensorwerte !


// int sensordaten = 0;  
String sensorid = "12345";
String sensorwert = "";



void sendtemp() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  Serial.print("Luftfeuchte: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatur: ");
  Serial.print(t);

  (t) = sensorwert;
  sensorid = 12345;

  request();

  
}

void request() {                        
  
  HTTPClient http;
  sensorwert = sensordaten;
  String url = baseUrl + "sensorId=" + sensorid + "&sensorWert=" + sensorwert;
  Serial.print("Url: "); Serial.println(url);
  http.begin(url);
  Serial.print("GET - httpCode: ");
  int httpCode = http.GET();
  Serial.println(httpCode);
  if (httpCode == HTTP_CODE_OK) {
    Serial.print("Antwort: "); Serial.println(http.getString());
  }
  http.end();
}

void setup() {

   dht.begin();

   mySwitch.enableTransmit(10);                                              

   mySwitch.setPulseLength(320);

  }


void loop() {

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    
    sendtemp();                                             // Temperatursenden aufrufen
    
    previousMillis = currentMillis;
    
  }
}


Er sagt aber folgenden Fehler: cannot convert 'String' to 'float' in assignment

Kann mir da jemand weiterhelfen Wink

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2018, 16:38
Beitrag #2
RE: Sensordaten aufteilen ?
Du suchst dtostrf.

Falls Du einen "normalen" Arduino (NANO,MEGA,UNO) benutzt, ist die Verwendung der Klasse String ungünstig, da sie Dir bei Deiner Verwendung den RAM fragmentiert, so dass nach einer Weile nichts mehr geht.
Entweder Du arbeitest sehr genau geplant mit der Methode reserve(x) der Klasse String oder Du benutzt gleich Char-Arrays (auch C-Strings genannt). Infos dazu gibt es z.B. hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2018, 17:11
Beitrag #3
RE: Sensordaten aufteilen ?
(05.12.2018 16:27)Marc2014 schrieb:  .....
mySwitch.send(12345, 24); soweit alles gut......

Ich müsste es aber irgentwie hinbekommen das ich den aktuellen Sensorwert an die Sensorid dran hänge.....

Kann mir da jemand weiterhelfen ;
Um Sensordaten zu übertragen, solltest du besser die Library "VirtualWire" einsetzen.
Die ist dafür deutlich besser geeignet. Da kannst du Char Arrays direkt verwenden und musst nicht immer hin und her wandeln.

RCSwitch ist zum Schalten gedacht, so wie der Name es auch sagt.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2018, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2018 14:12 von Marc2014.)
Beitrag #4
RE: Sensordaten aufteilen ?
@ tommy

Danke dir leider komme ich Absolut nicht klar mit dieser Funktion ich hab mir Beispiele angesehen aber ich steig da nicht durch ?!
Ich nutze einen arduino pro mini
Falls du zeit hast und mir noch ein paar tipps geben könntest wär ich dir sehr dankbar

@ hotsystems

Klar verständlich das die RCSwitch lib generell zum schalten gedacht ist, ich habe aber alles mit dieser Lib perfekt zum laufen gebracht und diese VirtualWire auch mal angesehen. Wenn man es mit der VirtualWire macht ist es wesentlich mehr code den ich ja bisher auch nicht gebraucht habe. Es geht ja nur darum dieses eine Problem das ich habe zu lösen da wär es nicht sehr sinnvoll wenn ich alle geräte neu mache und mit der virtualwire ansteure

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2018, 14:48 (Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2018 14:49 von Tommy56.)
Beitrag #5
RE: Sensordaten aufteilen ?
Also mal mit String, auch wenn es evtl. für den Dauerbetrieb ungünstig ist:
Lies Dir auch mal das durch.

Ungetestet:
Code:
String url;
float h,t;

void setup() {
  url.reserve(200); // Diesen Wert musst Du aus Deiner realen URL auszählen
}

void loop() {
  h = dht.readHumidity();
  t = dht.readTemperature();
  ...
}

void request() {                        
  ...
  String url = baseUrl + "sensorId=" + String(sensorid) + "&sensorWert=" + String(sensorwert);
  Serial.print("Url: "); Serial.println(url);
...
}

Für die Variante mit Char-Arrays brauchst Du dtostrf, strcpy und strcat. Anleitungen dazu hast Du.
Das Lernen, die Grundlagen zu verstehen, kann Dir keiner abnehmen. Das musst Du selbst machen. Wir können Dir nur den Weg zeigen.

Gruß Tommy

Edit: Wirf als erstes die Zeile "(t) = sensorwert;" raus.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2018, 17:24
Beitrag #6
RE: Sensordaten aufteilen ?
(06.12.2018 14:07)Marc2014 schrieb:  Klar verständlich das die RCSwitch lib generell zum schalten gedacht ist, ich habe aber alles mit dieser Lib perfekt zum laufen gebracht und diese VirtualWire auch mal angesehen. Wenn man es mit der VirtualWire macht ist es wesentlich mehr code den ich ja bisher auch nicht gebraucht habe......

Du musst wissen was du machst.
Und mit wesentlich mehr Code stimmt def. nicht. Da machst du etwas falsch.
Aber ok, weiterhin viel erfolg.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Scetch in mehrere Scripte aufteilen? Lanzet3 7 613 13.08.2018 20:55
Letzter Beitrag: ardu_arne
  sensordaten auf OLED bringen Klawino 20 2.877 12.03.2018 12:00
Letzter Beitrag: Tommy56
  Sensordaten per I2C senden ElAleMaNo 2 1.816 30.03.2016 23:44
Letzter Beitrag: ElAleMaNo
  Sensordaten in MYSQL speichern rieders 3 4.598 02.03.2016 19:58
Letzter Beitrag: rieders
  Integrität von Sensordaten Laura 10 3.273 17.08.2015 12:59
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste