diff --git a/main/homepage_template.h b/main/homepage_template.h
index 829f541..ac455c0 100644
--- a/main/homepage_template.h
+++ b/main/homepage_template.h
@@ -6,11 +6,14 @@ String homepage_template(void){
"
"
""
@@ -18,12 +21,26 @@ String homepage_template(void){
"
An REST-API Arduino microcontroller, which allows you to interact with hardware and the physical environment.
"
"
Controller
"
"
"
diff --git a/main/main.ino b/main/main.ino
index 388689b..9dddb46 100644
--- a/main/main.ino
+++ b/main/main.ino
@@ -1,95 +1,104 @@
+/**
+ * Loading classes
+ */
#ifndef UNIT_TEST
#include
#endif
-
-// Infared
#include
#include
#include
#include
-
-// Web
#include
#include
#include
#include
-
-// 433 Mhz
#include
-
-// Sensors
#include
-
-// Configuration
#include "config.h"
-// Define Constants
-const uint16_t pin_ritter = 13;
-const uint16_t pin_pir = 14;
-const uint16_t pin_tmp = 12;
-const uint16_t pin_ir_reciever = 2;
-const uint16_t pin_ir_send = 4;
-const uint16_t pin_ldr = A0;
-const uint16_t pin_active_buzzer = D5;
-const unsigned long ritter_group_address = 13043702;
-const char* parameter_plug_id="plug_id";
-const char* parameter_plug_status="plug_status";
-const char* parameter_ir_type="ir_type";
-const char* parameter_ir_data="ir_code";
-const char* parameter_ir_bits="ir_bits";
-const char* parameter_delay_time_in_ms="delay_time_in_ms";
-const char* parameter_sound_time_in_ms="sound_time_in_ms";
-const char* parameter_list[]={parameter_plug_id,parameter_plug_status,parameter_ir_type,parameter_ir_data,parameter_ir_bits,parameter_delay_time_in_ms,parameter_sound_time_in_ms};
+/**
+ * Define constants
+ */
+const uint16_t PIN_RITTER = 13;
+const uint16_t PIN_PIR = 14;
+const uint16_t PIN_DHT = 12;
+const uint16_t PIN_IR_RECIEVER = 2;
+const uint16_t PIN_IR_SEND = 4;
+const uint16_t PIN_LDR = A0;
+const uint16_t PIN_ACTIVE_BUZZER = D5;
+const unsigned long RITTER_STANDART_GROUP_ADDRESS = 13043702;
+const char* PARAMETER_PLUG_ID="plug_id";
+const char* PARAMETER_PLUG_STATUS="plug_enabled";
+const char* PARAMETER_IR_TYPE="ir_type";
+const char* PARAMETER_IR_CODE="ir_code";
+const char* PARAMETER_IR_BITS="ir_bits";
+const char* PARAMETER_PRE_DELAY_TIME_IN_MS="pre_delay_time_in_ms";
+const char* PARAMETER_SOUND="sound_enabled";
+const char* PARAMETER_LIST[]={PARAMETER_PLUG_ID,PARAMETER_PLUG_STATUS,PARAMETER_IR_TYPE,PARAMETER_IR_CODE,PARAMETER_IR_BITS,PARAMETER_PRE_DELAY_TIME_IN_MS,PARAMETER_SOUND};
-// Define variables
+/**
+ * Define variables
+ */
decode_results results;
decode_type_t last_recieved_ir_type;
-int last_recieved_ir_data;
+int last_recieved_ir_code;
int last_recieved_ir_bits;
-// Setup classes
+/**
+ * Setup classes
+ */
MDNSResponder mdns;
ESP8266WebServer server ( 80 );
-NewRemoteTransmitter transmitter(ritter_group_address, pin_ritter);
-DHT dht(pin_tmp, DHT11);
-IRrecv irrecv(pin_ir_reciever);
-IRsend irsend(pin_ir_send);
+NewRemoteTransmitter transmitter(RITTER_STANDART_GROUP_ADDRESS, PIN_RITTER);
+DHT dht(PIN_DHT, DHT11);
+IRrecv irrecv(PIN_IR_RECIEVER);
+IRsend irsend(PIN_IR_SEND);
-void dump(decode_results *results) {
+/**
+ * Setter functions
+ */
+void setRecievedIr(decode_results *results) {
last_recieved_ir_type = results->decode_type;
- last_recieved_ir_data = results->value;
+ last_recieved_ir_code = results->value;
last_recieved_ir_bits = results->bits;
- Serial.println(getJsonIrLastRecieved());
+ Serial.println("The code \"" + String(last_recieved_ir_code) + "\" was send for type \"" + String(results->decode_type,DEC) + "\" with \"" + String(results->bits,DEC) + "\" bits.");
}
-// Switchs the whole group on
-void setRitterGroup(int state)
+/**
+ * Transmitter functions
+ */
+void sendRemoteGroupSignal(int state)
{
transmitter.sendGroup(state);
- Serial.println("The state \"" + String(state,BIN) + "\" was send to the group \"" + String(ritter_group_address,DEC) + "\".");
+ Serial.println("The state \"" + String(state,BIN) + "\" was send to the group \"" + String(RITTER_STANDART_GROUP_ADDRESS,DEC) + "\".");
}
-// Switchs one plug on
-void setRitterSwitch(int unit, int state)
+void sendRemoteUnitSignal(int unit, int state)
{
transmitter.sendUnit(unit, state);
Serial.println("The state \"" + String(state,BIN) + "\" was send to the switch \"" + String(unit,DEC) + "\".");
}
-void setIrColor(decode_type_t type,uint32_t code, uint16_t bits) {
+void sendIrCode(decode_type_t type,uint32_t code, uint16_t bits) {
irsend.send(type, code, bits);
Serial.println("The code \"" + String(code) + "\" with \"" + String(bits) + "\" bits was send in format \"" + String(type) + "\".");
}
-void setSound(int time_in_ms){
+/**
+ * Actors
+ */
+void makeSound(int time_in_ms){
Serial.println("Making sound for \"" + String(time_in_ms) + "ms.");
- pinMode(pin_active_buzzer,OUTPUT);
- digitalWrite(pin_active_buzzer,LOW);
+ pinMode(PIN_ACTIVE_BUZZER,OUTPUT);
+ digitalWrite(PIN_ACTIVE_BUZZER,LOW);
delay(time_in_ms);
- digitalWrite(pin_active_buzzer,HIGH);
- pinMode(pin_active_buzzer,INPUT);
+ digitalWrite(PIN_ACTIVE_BUZZER,HIGH);
+ pinMode(PIN_ACTIVE_BUZZER,INPUT);
}
+/**
+ * Helper functions
+ */
bool isParameterDefined(String parameter_name){
for (uint8_t parameter_index = 0; parameter_index < server.args(); parameter_index++) {
if(server.argName(parameter_index)==parameter_name){
@@ -99,38 +108,61 @@ bool isParameterDefined(String parameter_name){
return false;
}
+String getParameterType(const char* parameter){
+ if(
+ parameter==PARAMETER_PLUG_ID ||
+ parameter==PARAMETER_IR_TYPE ||
+ parameter==PARAMETER_IR_CODE ||
+ parameter==PARAMETER_PRE_DELAY_TIME_IN_MS ||
+ parameter==PARAMETER_IR_BITS ||
+ parameter==PARAMETER_PLUG_ID
+ ){
+ return "integer";
+ }
+
+ if(
+ parameter==PARAMETER_SOUND ||
+ parameter==PARAMETER_PLUG_STATUS
+ ){
+ return "boolean";
+ }
+ return "text";
+}
+
void controller(void){
- if(isParameterDefined(parameter_sound_time_in_ms)){
- setSound(server.arg(parameter_sound_time_in_ms).toInt());
+ if(isParameterDefined(PARAMETER_SOUND)){
+ makeSound(server.arg(PARAMETER_SOUND).toInt());
}
- if(isParameterDefined(parameter_ir_type) && isParameterDefined(parameter_ir_data) && isParameterDefined(parameter_ir_bits)){
- setIrColor(static_cast(server.arg(parameter_ir_type).toInt()),server.arg(parameter_ir_data).toInt(),server.arg(parameter_ir_bits).toInt());
+ if(isParameterDefined(PARAMETER_IR_TYPE) && isParameterDefined(PARAMETER_IR_CODE) && isParameterDefined(PARAMETER_IR_BITS)){
+ sendIrCode(static_cast(server.arg(PARAMETER_IR_TYPE).toInt()),server.arg(PARAMETER_IR_CODE).toInt(),server.arg(PARAMETER_IR_BITS).toInt());
}
- if(isParameterDefined(parameter_plug_id) && isParameterDefined(parameter_plug_status)){
- if(server.arg(parameter_plug_id)=="group"){
- setRitterGroup(server.arg(parameter_plug_status).toInt());
- }else if(server.arg(parameter_plug_id).toInt()>0){
- setRitterSwitch(server.arg(parameter_plug_id).toInt(),server.arg(parameter_plug_status).toInt());
+ if(isParameterDefined(PARAMETER_PLUG_ID) && isParameterDefined(PARAMETER_PLUG_STATUS)){
+ if(server.arg(PARAMETER_PLUG_ID)=="group"){
+ sendRemoteGroupSignal(server.arg(PARAMETER_PLUG_STATUS).toInt());
+ }else if(server.arg(PARAMETER_PLUG_ID).toInt()>0){
+ sendRemoteUnitSignal(server.arg(PARAMETER_PLUG_ID).toInt(),server.arg(PARAMETER_PLUG_STATUS).toInt());
}
}
}
-
+/**
+ * Getter functions
+ */
String getJsonDht(void){
return "{\"temperature_celcius\":\""+String(dht.readTemperature())+"\",\"humidity\":\""+String(dht.readHumidity())+"\"}";
}
String getJsonPir(void){
- return "{\"motion\":\""+String(digitalRead(pin_pir))+"\"}";
+ return "{\"motion\":\""+String(digitalRead(PIN_PIR))+"\"}";
}
String getJsonLdr(void){
- float volt = 5.0 /1024.0 * analogRead (pin_ldr);
+ float volt = 5.0 /1024.0 * analogRead (PIN_LDR);
return "{\"input_volt\":\""+String(volt)+"\"}";
}
String getJsonIrLastRecieved(void){
- return "{\"last_recieved\":{\"bits\":\""+String(last_recieved_ir_bits)+"\",\"type\":\""+String(last_recieved_ir_type)+"\",\"data\":\""+String(last_recieved_ir_data)+"\"}}";
+ return "{\"last_recieved\":{\"bits\":\""+String(last_recieved_ir_bits)+"\",\"type\":\""+String(last_recieved_ir_type)+"\",\"data\":\""+String(last_recieved_ir_code)+"\"}}";
}
String getJson(void){
@@ -148,10 +180,10 @@ void view(void){
}
int getDelayTime(void){
- if(isParameterDefined(parameter_delay_time_in_ms)){
- int delay_time_in_ms = server.arg(parameter_delay_time_in_ms).toInt();
+ if(isParameterDefined(PARAMETER_PRE_DELAY_TIME_IN_MS)){
+ int delay_time_in_ms = server.arg(PARAMETER_PRE_DELAY_TIME_IN_MS).toInt();
if(delay_time_in_ms>0){
- Serial.println("Applying delay time: " + server.arg(parameter_delay_time_in_ms) + "ms");
+ Serial.println("Applying delay time: " + server.arg(PARAMETER_PRE_DELAY_TIME_IN_MS) + "ms");
return delay_time_in_ms;
}
}
@@ -168,13 +200,13 @@ void handleRequest(void){
//Arduino-Setup
void setup(void)
{
- pinMode(pin_pir, INPUT);
+ pinMode(PIN_PIR, INPUT);
Serial.println("Enable IR-reciever.");
irrecv.enableIRIn();
Serial.println("Enable IR-sender.");
irsend.begin();
Serial.println("Activate active buzzer.");
- setSound(1);
+ makeSound(1);
Serial.begin(9600);
Serial.println("Started program.");
//WiFi.softAPdisconnect(true);
@@ -199,7 +231,7 @@ void loop()
{
server.handleClient();
if (irrecv.decode(&results)) {
- dump(&results);
+ setRecievedIr(&results);
irrecv.resume();
}
}