/*
Simple http clinet for influx
you need an ethernetclient
f41_ardu 04/2024 better now as Dr. Druck
Start the simulstion and see the serial print statements
Remove commeted code, adopt according your requirements
and implement your sensors.
Imroved example using an real simulated sensor.
*/
/*
#include <SPI.h>
#include <Ethernet.h>
// replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 40, 16, 23);
EthernetClient InFluxClient;
*/
#include "DHT.h"
#define DHTPIN 3
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
String influxServerIP = "192.168.1.99"; // replace by our influx server IP
// InfluxDB settings
int HTTP_PORT = 6100; // Port of InfluxDB server
char HOST_NAME[] = "192.168.1.99"; // InfluxDB server IP
String token = "replace_by_your_token"; // InfluxDB token
String organisation = "private"; // InfluxDB organization name
String bucket = "ArduinoTest"; // InfluxDB bucket name
void setup() {
Serial.begin(9600);
dht.begin();
}
// Function to send data to InfluxDB
void unfluxdb(String data) {
Serial.println("Connected to InfluxDB server");
// Construct HTTP POST request
Serial.println("POST /api/v2/write?org=" + organisation + "&bucket=" + bucket + "&precision=ns HTTP/1.1");
Serial.println("Host: " + String(HOST_NAME));
Serial.println("Authorization: Token " + token);
Serial.println("Content-Type: text/plain; charset=utf-8");
Serial.println("Accept: application/json");
Serial.println("Content-Length: " + String(data.length()));
Serial.println();
Serial.println(data);
}
void loop() {
// Read temperature and humidity from DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if sensor readings are valid
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Construct InfluxDB line protocol data
String data = "TFAOutDoor,sensor_id=7c temperature=" + String(temperature) + ",humidity=" + String(humidity);
// Send data to InfluxDB
unfluxdb(data);
// Delay before next read
delay(5000);
}