summaryrefslogtreecommitdiff
path: root/datasources/arduino/arduinoAnalogHTTP/analogethernet.ino
diff options
context:
space:
mode:
Diffstat (limited to 'datasources/arduino/arduinoAnalogHTTP/analogethernet.ino')
-rwxr-xr-xdatasources/arduino/arduinoAnalogHTTP/analogethernet.ino99
1 files changed, 99 insertions, 0 deletions
diff --git a/datasources/arduino/arduinoAnalogHTTP/analogethernet.ino b/datasources/arduino/arduinoAnalogHTTP/analogethernet.ino
new file mode 100755
index 0000000..63c53e7
--- /dev/null
+++ b/datasources/arduino/arduinoAnalogHTTP/analogethernet.ino
@@ -0,0 +1,99 @@
+// vim: filetype=cpp
+#include <SPI.h>
+#include <Ethernet.h>
+
+byte mac[] = { 0xAD, 0xEE, 0x00, 0xEF, 0xFE, 0xED };
+const int ledPin = 13; // select the pin for the LED
+
+const long ADC_REF_MV = 3300;
+const long ADC_MAX_STEP = 1024;
+const long OV_FACTOR = 4; // Op. Verstärker Faktor = 4; 10mV = 1dB
+
+EthernetClient client;
+
+void sendKeyValue(const char *key, const char *value) {
+ char hdrbuf[512];
+ snprintf(hdrbuf, 512, "Content-Length: %d\r\n", strlen(value));
+
+ if ( ! client.connect("10.1.0.1", 8080)) {
+ Serial.println("Failed to connect");
+ delay(500);
+ return;
+ }
+ Serial.print("Send ");
+ Serial.print(key);
+ Serial.print("=");
+ Serial.println(value);
+
+ client.write("PUT /api/value/");
+ client.write(key);
+ client.write(" HTTP/1.1\r\n");
+ client.write(hdrbuf);
+ client.write("\r\n");
+ client.write(value);
+
+ client.stop();
+}
+
+void sendPinValue() {
+ long sensorValue,
+ sensorValueMV,
+ sensorValueDBA,
+ pinnr;
+ char buf[12];
+ char *sensorKey = "arduino.aX",
+ *sensorKeyMV = "arduino.aX.mv",
+ *sensorKeyDBA = "arduino.aX.dba";
+ for (int i = A0; i <= A5; i++) {
+ pinnr = i - A0;
+
+ sensorValue = analogRead(i);
+ sensorKey[9] = '0' + pinnr;
+ snprintf(buf, 8, "%u", sensorValue);
+ sendKeyValue(sensorKey, buf);
+
+ sensorValueMV = sensorValue * (ADC_REF_MV*100/ADC_MAX_STEP);
+ sensorKeyMV[9] = '0' + pinnr;
+ snprintf(buf, 8, "%ld.%03ld", sensorValueMV/100, sensorValue%100);
+ sendKeyValue(sensorKeyMV, buf);
+
+ sensorValueDBA = sensorValueMV / OV_FACTOR;
+ sensorKeyDBA[9] = '0' + pinnr;
+ snprintf(buf, 12, "%ld.%04ld", sensorValueDBA/1000, sensorValueDBA%1000);
+ sendKeyValue(sensorKeyDBA, buf);
+ }
+}
+
+
+void setup() {
+ Serial.begin(9600);
+ Serial.println("Begin init");
+
+ // declare the ledPin as an OUTPUT:
+ pinMode(ledPin, OUTPUT);
+
+ // start the Ethernet and UDP: Use DHCP for IP-Configuration
+ Ethernet.begin(mac);
+ Serial.println("Ethernet init done");
+
+ analogReference(EXTERNAL);
+ delay(1000);
+ Serial.println("Start loop()");
+}
+
+
+
+char buf[512];
+
+void loop() {
+ unsigned long dt = millis();
+ digitalWrite(ledPin, HIGH);
+
+ sendPinValue();
+
+ digitalWrite(ledPin, LOW);
+
+ dt = (millis() - dt);
+ if (dt < 1000) delay(1000 - dt);
+}
+