#1 5. Juli 2019 Guten Abend ... Lang ist’s her ... wäre cool wenn einer von euch mir folgenden Code kürzen könnte Danke Anfang ——————————————- #include <ESP8266WiFi.h> #include <WiFiUdp.h> #include "DHT.h" #define DHTPIN 12 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); const char* ssid = "FRITZ!Box 6590 Cable MM"; const char* password = "72403974276661513745"; unsigned int localPort = 2000; IPAddress sendIP(192,168,178,255); WiFiUDP udp; char packetBuffer[50]; String inString; char ReplyBuffer[50]; int RelaisPin = 14; int TasterPin = 2; int tasterStatus = LOW; int tasterGedrueckt = 0; int lichtmodus = 1; long tasterZeit = 0; long entprellZeit = 200; int r_Pin = 0; int b_Pin = 5; int g_Pin = 4; void setup() { Serial.begin(9600); dht.begin(); pinMode(RelaisPin, OUTPUT); digitalWrite(RelaisPin, LOW); pinMode(TasterPin,INPUT_PULLUP); pinMode(g_Pin, OUTPUT); pinMode(b_Pin, OUTPUT); pinMode(r_Pin, OUTPUT); // pinMode(DHTPIN, INPUT_PULLUP); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } IPAddress myIP = WiFi.localIP(); Serial.println(""); Serial.print("WiFi connected: "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(myIP); Serial.println("Starting UDP"); udp.begin(localPort); Serial.print("Local port: "); Serial.println(udp.localPort()); Send(ssid); Send(String(myIP[0]) + "." + String(myIP[1]) + "." + String(myIP[2]) + "." + String(myIP[3])); Send("Starting UDP"); Send(String(localPort)); } void PacketBuffer_Loschen(){ for (int i=0; i<50; i++ ){ packetBuffer = 0; } } void receive_packet(){ int packetSize = udp.parsePacket(); if(packetSize) { IPAddress remoteIp = udp.remoteIP(); int len = udp.read(packetBuffer, 255); if(len > 0) packetBuffer[len] = 0; Serial.println(packetBuffer); } } void Send(String SendeText){ SendeText.toCharArray(ReplyBuffer, 50); udp.beginPacket(sendIP, 2000); udp.write(ReplyBuffer); udp.endPacket(); inString = ""; } void Relais(bool RelaisStartus){ if(RelaisStartus == true){ digitalWrite(RelaisPin, HIGH); } else{ digitalWrite(RelaisPin, LOW); } } void Licht_Schalter(){ tasterStatus = digitalRead(TasterPin); if (tasterStatus == HIGH) { tasterZeit = millis(); tasterGedrueckt = 1; } if ((millis() - tasterZeit > entprellZeit ) && tasterGedrueckt == 1) { lichtmodus++; tasterGedrueckt = 0; if (lichtmodus == 1) { Send("Licht AUS"); } else { Send("Licht AN"); } } } void LED_Schalter(char Name, int Wert){ switch(Name) { case 'G': analogWrite(g_Pin,Wert); break; case 'R': analogWrite(r_Pin,Wert); break; case 'B': analogWrite(b_Pin,Wert); break; } } void WartetAufDaten(){ PacketBuffer_Loschen(); receive_packet(); if(String(packetBuffer).length() < 5 ){ String Str_Name = String(packetBuffer).substring(0,1); String Str_Wert = String(packetBuffer).substring(1,4); char *Name = const_cast<char*>(Str_Name.c_str()); int Wert = Str_Wert.toInt(); LED_Schalter(Name[0],Wert); } if(String(packetBuffer) == "Relais"){ if(lichtmodus == 1){ lichtmodus = 0; Send("Licht AN"); } else { lichtmodus = 1; Send("Licht AUS"); } } if(String(packetBuffer) == "Temp"){ TemrperaturSensor(); } if(String(packetBuffer) == "Wlan Info"){ IPAddress myIP = WiFi.localIP(); Send(ssid); Send(String(myIP[0]) + "." + String(myIP[1]) + "." + String(myIP[2]) + "." + String(myIP[3])); Send("Starting UDP"); Send(String(localPort)); PacketBuffer_Loschen(); } } void SchlarfzimmerLicht(){ if(lichtmodus == 1) { Relais(false); } else { Relais(true); } if(lichtmodus >= 2) { lichtmodus = 0; } } void TemrperaturSensor(){ //delay(2000); int h = dht.readHumidity(); int t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println(""); return; } if (String(h).length() > 2 || String(t).length() > 2){ Serial.println(""); return; } String T = "Temperatur: " + String(t) + "C"; String F = "Luftfeuchtigkeit: " + String(h) + "%"; Serial.println(T); Serial.println(F); Send(T); Send(F); } void loop() { Licht_Schalter(); WartetAufDaten(); SchlarfzimmerLicht(); } ————————————— Ende Gruß Giorgio + Multi-Zitat Zitieren
#2 6. Juli 2019 den Code kannst du kürzen in dem du die ganzen Zeilenumbrüche raus nimmst. Ansonsten lässt sich nicht viel Komprimieren, du könntest höchstens die Variablen kürzen aber das ist für die Praxis überflüssig. giorgio gefällt das. + Multi-Zitat Zitieren
#3 6. Juli 2019 Hmm dachte der wäre etwas zu lang , aber wenn der so gut ist wie er ist , dann lassen wir den so , essei denn jemand bekommt den kürzer hin ,ich meine mal gelernt zu haben , dass man sowas auch kürzer hinbekommen könnte weil ausgedruckt wären das immerhin fast 4 Seiten . Ich bin aber natürlich auch über jeden anderen Verbesserungsvorschlag dankbar + Multi-Zitat Zitieren
#4 6. Juli 2019 muddu kleiner ausdrucken öhöhöhöhöhöhööööö giorgio07 gefällt das. + Multi-Zitat Zitieren
#5 7. Juli 2019 In Zeiten von Smartphone kann man den Code doch überall herumzeigen. Wir mussten den Quellcode noch per Hand schreiben in Prüfungen ^^ Wenn du die ganzen Zeilenumbrüche raus nimmst, passt der Code locker auf eine Seite. giorgio07 gefällt das. + Multi-Zitat Zitieren
#6 7. Juli 2019 Zuletzt von einem Moderator bearbeitet: 8. Juli 2019 Genau darauf wollte ich ja hinaus hehe + Multi-Zitat Zitieren