Hallo zusammen
Ich habe nicht viel Erfahrung mit programmieren. Ich versuche mit meinem Arduino mkr gsm 1400 und 4 load cells eine Benachrichtigung per SMS an ein Mobiltelefon zu schicken, wenn der Füllstand eines Tanks zu tief ist. Dieser Teil des Codes funktioniert auch. Nun möchte ich aber das Füllstandniveau ab dem die Benachrichtigung geschickt wird, per SMS ändern. Wie geht das?
Die Empfängernummer der Benachrichtigungen per SMS zu wechseln funktioniert, dank der Hilfe von pylon aus diesem Forum. Der gleiche Code funktioniert aber nicht für das Füllstandniveauproblem. Und ich weiss nicht wie ich diesen Code anpassen muss damit es funktionieren würde.
Ich bin froh um Hilfe.
Mein Code:
// include the GSM library
#include <MKRGSM.h>
// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;
const char adminnummer[20] = "+********"; //Adminnummer für Diagnose
char nummer[20] = "+*****"; //Empfänger nummer definieren
int fuellstand; //Füllstand variable definieren
// Array to hold the number a SMS is retreived from
char senderNumber[20];
#include "HX711.h"
HX711 scale(7, 9); //7-> DOUT, 9->SCK
float calibration_factor = -21.825;
int units;
float ounces;
int warnung1 = 150; //in Gramm
int warnung2 = 100;
int warnung3 = 50;
int warnung4 = 20;
int sms1geschickt;
int sms2geschickt;
int sms3geschickt;
void setup() {
// initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Milchautomat Fuellstand Benachrichtigung");
// connection state
bool connected = false;
// Start GSM connection
while (!connected) {
if (gsmAccess.begin("****") == GSM_READY) {
connected = true;
} else {
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
scale.set_scale(calibration_factor);//für die Waage
scale.tare();
}
void loop(){
int c;//Variable für nachricht
Serial.print("Messung:");
units = scale.get_units(),10;
if (units < 0){
units = 0.00;
}
ounces = units * 0.035274;
Serial.print(units);
Serial.println(" Gramm");
fuellstand = units - 0; // Gewicht 50L Milchkanne tief
//wenn zwischen 15L und 10L
if (fuellstand <= warnung1 && fuellstand > warnung2 && sms1geschickt == 0 && sms2geschickt == 0 && sms3geschickt == 0){
sms.beginSMS(nummer);
sms.print("Milchmenge ca.: ");
sms.print(fuellstand);
sms.print(" ml");
sms.endSMS();
Serial.println("Warnung 1 gesendet");
sms1geschickt = 1;
//wenn zwischen 10L und 5L
} else if (fuellstand <= warnung2 && fuellstand > warnung3 && sms2geschickt == 0 && sms3geschickt == 0){
sms.beginSMS(nummer);
sms.print("Milchmenge ca.: ");
sms.print(fuellstand);
sms.print(" ml");
sms.endSMS();
Serial.println("Warnung 2 gesendet");
sms2geschickt = 1;
//wenn zwischen 5L und 0L
} else if (fuellstand <= warnung3 && fuellstand > 0 && sms3geschickt == 0){
sms.beginSMS(nummer);
sms.print("Warnung! Fuellstand ca.: ");
sms.print(fuellstand);
sms.print(" ml");
sms.endSMS();
Serial.println("Warnung 3 gesendet");
sms3geschickt = 1;
} else if (fuellstand > warnung1) {
sms1geschickt = 0;
sms2geschickt = 0;
sms3geschickt = 0;
Serial.println("sms1-3geschickt auf 0 gestellt");
}
if (sms.available()) { // If there are any SMSs available()
Serial.println("Message received from:");
// Sender nummer in monitor ausgeben
sms.remoteNumber(senderNumber, 20);
Serial.println(senderNumber);
// wenn nachricht mit "+" dann text zurück schicken: "Nummer wechseln zu:"
if (sms.peek() == '+') {
sms.beginSMS(senderNumber);
uint8_t ind = 0;
while ((c= sms.read()) != -1 && ind < 19) {
nummer[ind++] = c;
}
nummer[ind] = 0;
sms.print("Empfaengernummer gewechselt zu: ");
sms.print(nummer);
sms.endSMS();
Serial.println("Empfaengernummer gewechselt zu: ");
Serial.println(nummer);
} else if (sms.peek() == 'f') { //schick den Füllstand
sms.beginSMS(senderNumber);
sms.print("Fuellstand: ");
sms.print(fuellstand);
sms.print(" ml");
sms.endSMS();
Serial.println("Fuellstand auf Anfrage geschickt");
} else if (sms.peek() == 'a') { // ändere Warnung 1
sms.beginSMS(senderNumber);
sms.print("Warnung 1 ist im Moment bei: ");
sms.print(warnung1);
sms.print("ml.");
sms.print(" Wann soll in Zukunft Warnung 1 gesendet werden? (Du hasst 30s Zeit fuer eine Antwort, Antwort in ml!)");
sms.endSMS();
delay(30000);
if (sms.available()) {
//Hier brauche ich Hilfe
sms.beginSMS(senderNumber);
sms.print("Warnung 1 wurde geaendert zu: ");
sms.print(warnung1);
sms.endSMS();
Serial.println("Warnung 1 wurde geaendert zu: ");
Serial.println(warnung1);
} else {
sms.beginSMS(senderNumber);
sms.print("30s abgelaufen, Warnung 1 wurde nicht geaendert");
sms.endSMS();
}
} else if (sms.peek() == 'b') { // ändere Warnung 2
Serial.println("Warnung 2 angepasst");
} else if (sms.peek() == 'c') { // ändere Warnung 3
Serial.println("Warnung 3 angepasst");
} else { // wenn falscher SMS Befehl
sms.beginSMS(nummer);
sms.print("Falscher Befehl");
sms.endSMS();
Serial.println("Empfänger SMS geschickt: Falscher Befehl");
sms.beginSMS(adminnummer);
sms.print("Falscher Befehl. Nachricht: ");
while ((c = sms.read()) != -1) {
sms.print((char)c);
}
sms.endSMS();
Serial.println("Admin SMS geschickt: Falscher Befehl");
}
// Delete message from modem memory
sms.flush();
Serial.println("MESSAGE DELETED");
delay(5000);
}
}
