Dateien nach "/" hochladen
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// WiFi als AccessPoint
|
||||
#define SECRET_AP_SSID "Salatmaschine";
|
||||
#define SECRET_AP_PASSWD "87494659+1456265+48salaSchmine";
|
||||
// Salatmaschine ist Client in folgendem WiFi
|
||||
#define SECRET_SSID "HuiBu";
|
||||
#define SECRET_PASSWD "dandy jackknife importer affair boastful salami frenzy finite";
|
||||
|
||||
|
||||
const char* serverExt = "www.superschurkenhauptquartier.de"; // Server URL
|
||||
const char* pathExt = "/salatmaschine/receiver.php"; // Server URL
|
||||
|
||||
// root certificate authority, to verify the server
|
||||
// change it to your server root CA
|
||||
// SHA1 fingerprint is broken now!
|
||||
|
||||
const char* shq_root_ca =
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
"MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\n"
|
||||
"TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n"
|
||||
"cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\n"
|
||||
"WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\n"
|
||||
"ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\n"
|
||||
"MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\n"
|
||||
"h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n"
|
||||
"0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\n"
|
||||
"A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\n"
|
||||
"T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\n"
|
||||
"B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\n"
|
||||
"B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\n"
|
||||
"KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\n"
|
||||
"OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\n"
|
||||
"jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\n"
|
||||
"qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\n"
|
||||
"rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n"
|
||||
"HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\n"
|
||||
"hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\n"
|
||||
"ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n"
|
||||
"3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\n"
|
||||
"NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\n"
|
||||
"ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\n"
|
||||
"TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\n"
|
||||
"jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\n"
|
||||
"oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n"
|
||||
"4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\n"
|
||||
"mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\n"
|
||||
"emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n"
|
||||
"-----END CERTIFICATE-----\n";
|
||||
@@ -0,0 +1,110 @@
|
||||
unsigned long lastDelay = millis();
|
||||
int delayIt = 300;
|
||||
// Eingabe
|
||||
|
||||
// Auxiliar variables to store the current output state
|
||||
String stateButtonsWaterMore = "off";
|
||||
String stateButtonsWaterLess = "off";
|
||||
String stateButtonsWaterNow = "off";
|
||||
String stateButtonsIntMore = "off";
|
||||
String stateButtonsIntLess = "off";
|
||||
String stateButtonsResetAll = "off";
|
||||
|
||||
void setupButtons() {
|
||||
|
||||
// Tastatur
|
||||
pinMode(tasterWaterMore, INPUT_PULLUP);
|
||||
pinMode(tasterWaterLess, INPUT_PULLUP);
|
||||
pinMode(tasterWaterNow, INPUT_PULLUP);
|
||||
pinMode(tasterIntMore, INPUT_PULLUP);
|
||||
pinMode(tasterIntLess, INPUT_PULLUP);
|
||||
pinMode(tasterReset, INPUT_PULLUP);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Push Hardware-Buttons
|
||||
void buttonsWaterLess() {
|
||||
// Bewässerungsdauer reduzieren
|
||||
if (millis() >= lastDelay + delayIt) {
|
||||
if (max_water - 1000 > 0) {
|
||||
max_water = max_water - 1000;
|
||||
}
|
||||
Serial.println("MaxWater -1");
|
||||
|
||||
lastDelay = millis();
|
||||
}
|
||||
}
|
||||
void buttonsWaterMore() {
|
||||
// Bewässerungsdauer verlängern
|
||||
if (millis() >= lastDelay + delayIt) {
|
||||
max_water = max_water + 1000;
|
||||
Serial.println("MaxWater +1");
|
||||
|
||||
lastDelay = millis();
|
||||
}
|
||||
}
|
||||
void buttonsIntLess() {
|
||||
// Bewässerungsintervall verkürzen
|
||||
if (millis() >= lastDelay + delayIt) {
|
||||
if (duration_interval - 60000 > 0) {
|
||||
duration_interval = duration_interval - 60000;
|
||||
}
|
||||
Serial.println("IntWater -60");
|
||||
|
||||
lastDelay = millis();
|
||||
}
|
||||
}
|
||||
void buttonsIntMore() {
|
||||
// Bewässerungsintervall erhöhen
|
||||
if (millis() >= lastDelay + delayIt) {
|
||||
duration_interval = duration_interval + 60000;
|
||||
Serial.println("IntWater +60");
|
||||
|
||||
lastDelay = millis();
|
||||
}
|
||||
}
|
||||
void buttonsWaterNow() {
|
||||
// sofort wässern
|
||||
if (millis() >= lastDelay + delayIt) {
|
||||
last_water = millis() - duration_interval;
|
||||
Serial.print("NOW ------------------- ");
|
||||
Serial.print(last_water);
|
||||
|
||||
lastDelay = millis();
|
||||
}
|
||||
}
|
||||
void buttonsResetAll() {
|
||||
// Werte zuruecksetzen
|
||||
if (millis() >= lastDelay + delayIt) {
|
||||
max_water = std_max_water;
|
||||
duration_interval = std_duration_interval;
|
||||
last_water = millis();
|
||||
Serial.println("RESET");
|
||||
|
||||
lastDelay = millis();
|
||||
}
|
||||
}
|
||||
|
||||
void loopButtons() {
|
||||
|
||||
// Push Hardware-Buttons
|
||||
if (digitalRead(tasterWaterLess) == LOW) {
|
||||
buttonsWaterLess();
|
||||
}
|
||||
if (digitalRead(tasterWaterMore) == LOW) {
|
||||
buttonsWaterMore();
|
||||
}
|
||||
if (digitalRead(tasterIntLess) == LOW) {
|
||||
buttonsIntLess();
|
||||
}
|
||||
if (digitalRead(tasterIntMore) == LOW) {
|
||||
buttonsIntMore();
|
||||
}
|
||||
if (digitalRead(tasterWaterNow) == LOW) {
|
||||
buttonsWaterNow();
|
||||
}
|
||||
if (digitalRead(tasterReset) == LOW) {
|
||||
buttonsResetAll();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
//U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /*reset=*/ U8X8_PIN_NONE);
|
||||
//Anzeige
|
||||
|
||||
|
||||
//Anzeige
|
||||
#include <U8g2lib.h>
|
||||
|
||||
#ifdef U8X8_HAVE_HW_SPI
|
||||
#include <SPI.h>
|
||||
#endif
|
||||
#ifdef U8X8_HAVE_HW_I2C
|
||||
#include <Wire.h>
|
||||
#endif
|
||||
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
|
||||
|
||||
|
||||
void setupDisplay() {
|
||||
// Display
|
||||
u8g2.begin();
|
||||
}
|
||||
void loopSalatdisplay() {
|
||||
|
||||
|
||||
float temp0 = tempSensor[0];
|
||||
float temp1 = tempSensor[1];
|
||||
|
||||
// DISPLAY
|
||||
u8g2.clearBuffer(); // clear the internal memory
|
||||
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
|
||||
|
||||
|
||||
u8g2.setCursor(0, 10);
|
||||
if (accessPointMode == true) {
|
||||
u8g2.print(local_ip);
|
||||
} else {
|
||||
u8g2.print(WiFi.localIP());
|
||||
}
|
||||
u8g2.setCursor(85, 10);
|
||||
u8g2.print(trigger);
|
||||
|
||||
|
||||
u8g2.setCursor(0, 20);
|
||||
u8g2.print("Int wet");
|
||||
u8g2.setCursor(55, 20);
|
||||
u8g2.print(duration_interval / 1000);
|
||||
u8g2.setCursor(85, 20);
|
||||
u8g2.print(dry_time_left / 1000);
|
||||
|
||||
u8g2.setCursor(0, 30);
|
||||
u8g2.print("H2O");
|
||||
u8g2.setCursor(55, 30);
|
||||
u8g2.print(max_water / 1000);
|
||||
u8g2.setCursor(85, 30);
|
||||
u8g2.print(wet_time_left / 1000);
|
||||
|
||||
u8g2.setCursor(0, 40);
|
||||
u8g2.print("Int dry");
|
||||
u8g2.setCursor(55, 40);
|
||||
u8g2.print("--");
|
||||
u8g2.setCursor(85, 40);
|
||||
u8g2.print(dry_since / 1000);
|
||||
|
||||
u8g2.setCursor(0, 50);
|
||||
u8g2.print("Hum %");
|
||||
u8g2.setCursor(55, 50);
|
||||
u8g2.print(minMoisture);
|
||||
u8g2.setCursor(85, 50);
|
||||
//u8g2.print( WiFi.localIP());
|
||||
u8g2.print(sensor_moisture_value);
|
||||
|
||||
|
||||
u8g2.setCursor(0, 60);
|
||||
u8g2.print("Temp ");
|
||||
//u8g2.setCursor(55, 60);
|
||||
//u8g2.print(temp1);
|
||||
u8g2.setCursor(85, 60);
|
||||
u8g2.print(temp0);
|
||||
u8g2.sendBuffer(); // transfer internal memory to the display
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
|
||||
int sensorPin = sensorMoisturePin; // siehe pins.h
|
||||
int sensorValue;
|
||||
|
||||
int dryAnalogValue = 4095;
|
||||
|
||||
int wetAnalogValue = 1023;
|
||||
int DryValuePercent = 0;
|
||||
int WetValuepercent = 100;
|
||||
|
||||
int moistureValuePercent;
|
||||
|
||||
int sensor_moisture_value;
|
||||
void setupHumidity() {
|
||||
Serial.print("Setting up Humidity");
|
||||
}
|
||||
void getHumidity() {
|
||||
|
||||
if (sensorValue = analogRead(sensorPin)) {
|
||||
Serial.print("Analog moisture Value : ");
|
||||
Serial.println(sensorValue);
|
||||
moistureValuePercent = map(sensorValue, dryAnalogValue, wetAnalogValue, DryValuePercent, WetValuepercent);
|
||||
Serial.print("moisture percent: ");
|
||||
Serial.print(moistureValuePercent);
|
||||
Serial.println("%");
|
||||
if (moistureValuePercent < DryValuePercent) {
|
||||
Serial.println("plant is dry !! ");
|
||||
}
|
||||
sensor_moisture_value = moistureValuePercent;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// Buttons
|
||||
int tasterWaterMore = 27;
|
||||
int tasterWaterLess = 14;
|
||||
int tasterWaterNow = 32;
|
||||
int tasterIntMore = 33;
|
||||
int tasterIntLess = 12;
|
||||
int tasterReset = 26;
|
||||
|
||||
// Humidity
|
||||
int sensorMoisturePin = 36;
|
||||
|
||||
// Temperature
|
||||
#define ONE_WIRE_BUS 23
|
||||
|
||||
// Betriebsanzeige
|
||||
int LED = 25;
|
||||
|
||||
// Relais
|
||||
// digitale Ausgaenge für Relaissteuerung
|
||||
//int relais = 18;
|
||||
int relais = 19;
|
||||
// Noch nicht benutzt, aber schon verkabelt, 09.06.2023 kaputt!!
|
||||
// 25.09.24 neues Relais eingebaut, zuerst Nr. 1 = Pin 18 benutzt
|
||||
Reference in New Issue
Block a user