Dateien nach "/" hochladen

This commit is contained in:
2024-09-27 22:08:30 +02:00
commit 3a87a41d72
5 changed files with 290 additions and 0 deletions
+47
View File
@@ -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";
+110
View File
@@ -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();
}
}
+79
View File
@@ -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
View File
@@ -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;
}
}
+23
View File
@@ -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