Beta Article update 0 today 05/08/2021
This is about A4 Board from KinCony with ESP32 and connected to Loxone miniserver, I planed to create the code for all the board’s functions to use it connected to Loxone miniserver and install it in my green house on my balcony
Photos:




3D print files for Base:
.stl file click here
.step file click here
Currently I am trying to create the code in Arduino IDE and this is the partial code I managed to make it until now:
/*********
inspiration from https://randomnerdtutorials.com
*********/
// Import required libraries
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "SPIFFS.h"
//#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const int oneWireBus = 13;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
// Replace with your network credentials
const char* ssid = "your wifi name";
const char* password = "your wifi password";
int relay1Val = 0;
int relay2Val = 0;
int relay3Val = 0;
int relay4Val = 0;
//
//String relay1Val;
int relay1 = 2;
int relay2 = 15;
int relay3 = 5;
int relay4 = 4;
// DAC input,s
const int adc1 = 35;
const int adc2 = 34;
const int adc3 = 32;
const int adc4 = 33;
//DAC variable
int adc1_val = 0;
int adc2_val = 0;
int adc3_val = 0;
int adc4_val = 0;
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
// Replaces placeholder with LED state value
String processor(const String& var) {
// Serial.println(var);
// if (var == "STATE") {
// if (digitalRead(relay1)) {
// relay1Val = "ON";
// }
// else {
// relay1Val = "OFF";
// }
// Serial.print(relay1Val);
// return relay1Val;
// }
return String();
}
void setup() {
// Serial port for debugging purposes
Serial.begin(115200);
// Start the DS18B20 sensor
sensors.begin();
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
// Initialize SPIFFS
if (!SPIFFS.begin(true)) {
Serial.println("An Error has occurred while mounting SPIFFS");
return;
}
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Route to load style.css file
server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(SPIFFS, "/style.css", "text/css");
});
// Relay1 to HIGH
server.on("/relay1_on", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay1, HIGH);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay1 to LOW
server.on("/relay1_off", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay1, LOW);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay2 to HIGH
server.on("/relay2_on", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay2, HIGH);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay2 to LOW
server.on("/relay2_off", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay2, LOW);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay3 to HIGH
server.on("/relay3_on", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay3, HIGH);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay3 to LOW
server.on("/relay3_off", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay3, LOW);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay4 to HIGH
server.on("/relay4_on", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay4, HIGH);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Relay4 to LOW
server.on("/relay4_off", HTTP_GET, [](AsyncWebServerRequest * request) {
digitalWrite(relay4, LOW);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Display Relays Value
server.on("/status", HTTP_GET, [](AsyncWebServerRequest * request) {
relay1Val = digitalRead(relay1);
relay2Val = digitalRead(relay2);
relay3Val = digitalRead(relay3);
relay4Val = digitalRead(relay4);
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
float temperatureF = sensors.getTempFByIndex(0);
String str = "relay1=" + String(relay1Val, DEC) +
" relay2=" + String(relay2Val, DEC) +
" relay3=" + String(relay3Val, DEC) +
" relay4=" + String(relay4Val, DEC) +
" temp=" + String(temperatureC, 1);
request->send(200, "text/plain", str);
});
// Display ADC values
server.on("/adc", HTTP_GET, [](AsyncWebServerRequest * request) {
adc1_val = analogRead(adc1);
adc2_val = analogRead(adc2);
adc3_val = analogRead(adc3);
adc4_val = analogRead(adc4);
String str = "ADC1=" + String(adc1_val, DEC) +
" ADC2=" + String(adc2_val, DEC) +
" ADC3=" + String(adc3_val, DEC) +
" ADC4=" + String(adc4_val, DEC);
request->send(200, "text/plain", str);
});
// Display Temp value Value
server.on("/temp", HTTP_GET, [](AsyncWebServerRequest * request) {
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
float temperatureF = sensors.getTempFByIndex(0);
String str = " temp=" + String(temperatureC, 2);
request->send(200, "text/plain", str);
});
// Start server
server.begin();
}
void loop() {
adc1_val = analogRead(adc1);
adc2_val = analogRead(adc2);
adc3_val = analogRead(adc3);
adc4_val = analogRead(adc4);
Serial.println(adc4_val);
delay(500);
}