Closed…
leuft alles wie es soll …
wer es optmieren mag gerne doch 
Neben Melder :
#include <ELECHOUSE_CC1101.h>
int outPin = 3;
int i;
void setup() {
Serial.begin(9600);
ELECHOUSE_cc1101.Init(F_433); // F_433 F_868 F_965 ( Funk Freqeunz in Mhz)
pinMode(outPin, INPUT);
}
void send() {
i++;
String tx_message = "Alarmsensor-eingang" ;
int m_length = tx_message.length();
byte txbyte[m_length];
tx_message.getBytes(txbyte, m_length + 1);
Serial.println((char *)txbyte);
ELECHOUSE_cc1101.SendData(txbyte, m_length);
}
void loop() {
while(digitalRead(outPin)==1){
Serial.println("Funk Melder Radar Erkant");
;send() ;
delay(2000);
}
delay(2000);
Serial.println("Keine Bewegung");
}
Zentralle :
#include <SoftwareSerial.h>
#include <ELECHOUSE_CC1101.h>
#include "RunningMedian.h"
#define _SS_MAX_RX_BUFF 1024
byte buffer[100] = {0};
int outPin = 3;
//int ledPin = 13;
String text2Message;
String textMessage;
String lampState = "LOW";
const int relay = 7;
const byte BatPin = A0;
void getBattery();
RunningMedian median1 = RunningMedian(10);
String data1;
String data2;
String data3;
//GSM Einstelungen
SoftwareSerial mySerial(9, 8); // RX, TX Pins
String apn = "pinternet.interkom.de"; //APN
String url = " server eintragen "; //URL for HTTP-POST-REQUEST
void setup() {
delay(6000);
mySerial.begin(9600);
Serial.begin(9600);
Serial.println("Alarmanlage Start...");
ELECHOUSE_cc1101.Init(F_433); // F_433 F_868 F_965 ( Funk Freqeunz in Mhz)
ELECHOUSE_cc1101.SetReceive();
pinMode(outPin, INPUT);
//pinMode(ledPin, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(BatPin, INPUT_PULLUP);
digitalWrite(relay, LOW);
data1 = "Tor Bewegung";
data3 = "Eingang Bewegung";
while (!mySerial.available()) {
mySerial.println("AT");
delay(6000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1");
delay(1000);
mySerial.println("AT+CPMS=\"SM\"\r");
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0");
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\"");
delay(1000);
}
// Interner Melder Sende Teil
void gsm_sendhttp()
{
Serial.println("!!! Alarm !!! Bewegung erkant Sennde daten an Server...");
Serial.println("GSM GPRS Init erfolgt ...");
mySerial.println("AT");
runsl();
delay(4000);
mySerial.println("AT+CSCLK=0");
runsl();
delay(4000);
mySerial.println("AT+SAPBR=3,1,Contype,GPRS");
runsl();
delay(100);
mySerial.println("AT+SAPBR=3,1,APN," + apn);
runsl();
delay(100);
mySerial.println("AT+SAPBR =1,1");
runsl();
delay(100);
mySerial.println("AT+SAPBR=2,1");
runsl();
delay(2000);
mySerial.println("AT+HTTPINIT");
runsl();
delay(100);
mySerial.println("AT+HTTPPARA=CID,1");
runsl();
delay(100);
mySerial.println("AT+HTTPPARA=URL," + url);
runsl();
delay(100);
mySerial.println("AT+HTTPPARA=CONTENT,application/x-www-form-urlencoded");
runsl();
delay(100);
mySerial.println("AT+HTTPDATA=192,10000");
runsl();
delay(100);
mySerial.println("params=" + data1 + " / " + data2);
runsl();
delay(10000);
mySerial.println("AT+HTTPACTION=1");
runsl();
delay(5000);
mySerial.println("AT+HTTPREAD");
runsl();
delay(100);
mySerial.println("AT+HTTPTERM");
runsl();
delay(100);
//mySerial.println ("AT+CMGR=3");
//gsm_sms();
//delay(100);
mySerial.println("AT+CSCLK=2");
runsl();
delay(100);
}
//Print GSM Status
void runsl() {
while (mySerial.available()) {
Serial.write(mySerial.read());
}
}
// Funk Melder Sende Programm
void gsm_sendhttp2()
{
Serial.println("!!! Alarm !!! Bewegung erkant Sennde daten an Server...");
Serial.println("GSM GPRS Init erfolgt ...");
mySerial.println("AT");
runsl();
delay(4000);
mySerial.println("AT+CSCLK=0");
runsl();
delay(4000);
mySerial.println("AT+SAPBR=3,1,Contype,GPRS");
runsl();
delay(100);
mySerial.println("AT+SAPBR=3,1,APN," + apn);
runsl();
delay(100);
mySerial.println("AT+SAPBR =1,1");
runsl();
delay(100);
mySerial.println("AT+SAPBR=2,1");
runsl();
delay(2000);
mySerial.println("AT+HTTPINIT");
runsl();
delay(100);
mySerial.println("AT+HTTPPARA=CID,1");
runsl();
delay(100);
mySerial.println("AT+HTTPPARA=URL," + url);
runsl();
delay(100);
mySerial.println("AT+HTTPPARA=CONTENT,application/x-www-form-urlencoded");
runsl();
delay(100);
mySerial.println("AT+HTTPDATA=192,10000");
runsl();
delay(100);
mySerial.println("params=" + data3);
runsl();
delay(10000);
mySerial.println("AT+HTTPACTION=1");
runsl();
delay(5000);
mySerial.println("AT+HTTPREAD");
runsl();
delay(100);
mySerial.println("AT+HTTPTERM");
runsl();
delay(100);
//mySerial.println ("AT+CMGR=3");
//gsm_sms();
//delay(100);
mySerial.println("AT+CSCLK=2");
runsl();
delay(100);
}
//SMS
void gsm_sms() {
{
mySerial.println("AT+CMGL=\"ALL\"\r");
textMessage = mySerial.readString();
Serial.print(textMessage);
delay(40);
}
if (textMessage.indexOf("An") >= 0) {
digitalWrite(relay, HIGH);
lampState = "on";
Serial.println("Sierene AN");
textMessage = "";
mySerial.println("AT+CMGD=1,4");
runsl();
}
if (textMessage.indexOf("Aus") >= 0) {
digitalWrite(relay, LOW);
lampState = "off";
Serial.println("Sierene Aus");
textMessage = "";
mySerial.println("AT+CMGD=1,4");
runsl();
}
}
// Anruf Anemen
void gsm_call()
{
delay(500); gsm_sms();
while (Serial.available())
{
mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
}
while (mySerial.available())
{
Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
}
}
// Baterie Status
void getBattery()
{
int x = analogRead(BatPin);
median1.add(x);
long m = median1.getMedian();
unsigned long BatValue = m * 100L;
float BatVoltage1 = BatValue * 5 / 1024L;
byte BatRate = map(BatVoltage1, 200, 405, 0, 100);
float BatVoltage = BatVoltage1 / 100.0;
data2 = ("Baterie Stand " + String(BatRate) + "% " + String(BatVoltage) + "V");
}
// Funk Sensor
void funk_sensor()
{
ELECHOUSE_cc1101.ReceiveData(buffer);
String textMessage((char*) buffer);
//Serial.print(textMessage);
ELECHOUSE_cc1101.SetReceive();
{
if (textMessage.indexOf("Alarmsensor-eingang") >= 0) {
Serial.println("Radar Funk Melder");
gsm_sendhttp2();
textMessage = "";
}
}
}
//loop Teil
void loop() {
while (digitalRead(outPin) == 1) {
//digitalWrite(ledPin, HIGH);
gsm_sms();
delay(500);
getBattery();
delay(500);
gsm_sendhttp();
delay(500);
gsm_sms();
delay(2000);
}
//digitalWrite(ledPin, LOW);
delay(2000);
gsm_sms();
gsm_call();
funk_sensor();
}