#include // Diese beiden Bibliotheken werden nur für den Temperatursensor benötigt. #include #include #include // Das GSM-Shield kommuniziert über die SoftwareSerial-Ports 7 und 8 des Arduino SoftwareSerial GPRS(7, 8); Adafruit_BME280 bme; #define SEALEVELPRESSURE_HPA (1013.25) unsigned char buffer[64]; int count=0; uint16_t tempCount=0; uint8_t zweitCount=0; String werte; int val = 0; void setup() { GPRS.begin(9600); Serial.begin(9600); // ab hier Temperatursensor-Initialisierung unsigned status; status = bme.begin(); if (!status) { Serial.println("Could not find BME280"); while (1) delay(10); } } void loop() { serialGateway(); delay(10); tempCount++; // Generiere String mit allen Messdaten, der bei Bedarf per SMS verschickt werden kann. // Lese dafür Temperatursensor und analogen Eingang (Spannungen) aus if (tempCount == 6000) { werte = "T="; werte += bme.readTemperature(); werte += " *C, F="; // werte += (bme.readPressure() / 100.0F); // werte += " hPa / F="; werte += bme.readHumidity(); werte += " %, "; val = analogRead(A3); werte += "U1="; werte += val/34.13; val = analogRead(A2); werte += " V, U2="; werte += val/68.26; werte += " V"; Serial.println(werte); zweitCount++; if (zweitCount == 10) { http(); zweitCount=0; } tempCount=0; } } void serialGateway() { // Diese Routine liest Daten vom GSM-Modul, verarbeitet sie und gibt sie an den Rechner als Debugwerte aus if (GPRS.available()) { while(GPRS.available()) { buffer[count++]=GPRS.read(); if(count == 64) break; delay(10); } Serial.write(buffer,count); // Warte bis das Modul Ready sagt. Es ist dann betriebsbereit. if (strstr(buffer,"Ready")) { Serial.println("#Init#"); GPRS.write("AT+CNMI=2,2,0,0,0\r\n"); // zeige SMS automatisch } // Reagiere auf eingehende SMS if (strstr(buffer,"+CMT:")) { Serial.println("#SMS#"); // Generiere Antwort-SMS GPRS.write("AT+CMGF=1\r"); delay(500); GPRS.write("AT+CMGS=\"+491701234567\"\r"); delay(500); GPRS.println(werte); delay(500); GPRS.println((char)26); delay(5000); } clearBufferArray(); count = 0; } // Leite vom Computer empfangene AT-Befehle ans Modul weiter if (Serial.available()) { GPRS.write(Serial.read()); } } void clearBufferArray() { for (int i=0; i