//*************************************
// Geigerzähler-Web-Bridge
// 
//  01.01.2018  JM  
//  
//  Jürgen, DL8MA www.DL8MA.de
//
//  Übertragung der Ortsdosisleistungswerte über Serielle Schnittstelle vom Geigerzähler R42 an Arduino 
//
//  Ausgabe der Messwerte an Webserver:  http://192.168.178.108/db0gh/in.php?odl=114&einheit=1
//

#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xFF };

IPAddress server( 192,168,178,108);  
IPAddress ip(192, 168, 178, 99);

EthernetClient client;

String  telCall = "db0gh";
String  telPfad = "/" + telCall + "/in.php";

String  telArrayLabel[] = { "odl", "einheit" };
int     telArrayValue[] = { 0, 0 };
boolean telArrayFlag[]  = { 0, 0 };

String buffer;

//**************************

void setup() {
  Serial.begin(9600); 
  Serial1.begin( 115100 ); 

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }

  Serial.print("IP Addresse: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++)
  {
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("."); 
  }
}

//**************************

void loop() {
  int einheit, zeiger;
  while(Serial1.available()) {
    buffer = Serial1.readString();
    buffer = buffer.substring( 41 );
    buffer.trim();
    Serial.println(buffer);

    telArrayValue[ 0 ] = buffer.toInt();
    telArrayFlag[ 0 ] = 1;

    if( buffer.indexOf('n') > 0 ) {
      einheit = 1;
    }
    else
      einheit = 2;
    telArrayValue[ 1 ] = einheit;
    telArrayFlag[ 1 ] = 1;

    httpRequest();
  }
}

//**************************

void httpRequest() {

  int i;
  String pfadString = telPfad;

  if( sizeof( telArrayFlag ) > 0 ) 
    pfadString += "?";

  for( i = 0; i < sizeof( telArrayFlag ); i++ ) {
      if( telArrayFlag[ i ] == 1 ) {

        pfadString += telArrayLabel[ i ];
        pfadString += "=";
        pfadString += telArrayValue[ i ];
        if( i < sizeof( telArrayFlag ) - 1 ) 
          pfadString += "&";
        telArrayFlag[ i ] = 0;
        
      }
    }

  Serial.println( pfadString );
  
  client.stop();

  if (client.connect(server, 80)) {
    Serial.println("connecting...");
    // send the HTTP GET request:
    client.println("GET " + pfadString + " HTTP/1.1");
    client.println("Host: www.arduino.cc");
    client.println("User-Agent: arduino-ethernet");
    client.println("Connection: close");
    client.println();
  
  } else {
    Serial.println("connection failed");
  }
}