Guten Abend zusammen,
ich habe jetzt die Vorschläge von hier aufgegriffen und meinen Sketch überarbeitet. Danke nochmals für die Hilfe und die Erklärungen.
Ich habe zumindest massig an Speicher eingespart 
Weiterhin habe ich etwas was ich immer wieder nutze in eine eigene Funktion ausgelagert was das ganze wie gesagt um etliches weniger Speicherlastig macht.
Anbei mein Sketch in der überarbeiteten Version.
Leider hängt er wieder an exakt der gleichen Stelle.
eine verwegene Idee die ich habe zu der ich mal gerne eure Meinung hören würde.
Kann es sein das millis und I2C nicht gut zusammen klar kommen?
Es hängt jedesmal beim Posten der werte der 1wire Sensoren.
Das aber nur wenn ich den BME mit drin habe.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Seeed_BME280.h> // Implementieren der Seeed Bibliothek, ermöglicht die Kommunikation mit dem BME
#include <Wire.h> // Implementieren der Wire Bibliothek, ermöglicht dem Arduino mit Geräten zu kommunizieren, welche das I²C Protokoll verwenden
BME280 bme280; // Deklarieren der BME280 instanz
#define ONE_WIRE_BUS A0
OneWire oneWire(ONE_WIRE_BUS); // Deklarieren des 1Wire Bus
DallasTemperature sensors(&oneWire);
int deviceCount = 0;
float tempC;
String buffer; // Deklarieren des Stringbuffers
float feucht; // Deklarieren der Variablen für Feuchtigkeit
float Pascal; // Deklarieren der Variablen für Luftdruck
float tempfl; // Deklarieren der Variablen für Temperatur des BME280
int ledPin = 13; // LED connected to digital pin 13
int LinksFenster = 2; // Fenster WZ Links
int LinksTuer = 3; // Tür Terasse Links
int MitteFlLinks = 4; // Tür Terasse Mitte Linker Flügel
int MitteFLRechts = 5; // Tür Terasse Mitte Flügel Rechts
int Rechtstuer = 6; // Tür Terasse Rechts
int RechtsFenster = 7; // Fenster WZ Rechts
int HWRFenster = 8; // Fenster Hauswirtschaftsraum
int Haustuer = 9; // Haustür Kontakt
int Rauchmelder = 10; // Rauchmelder Ausgelöst wenn 1
int Sammelstoerung = 11; // Sammelstörung Rauchmelder Batterie usw...
int valLF = 0; // variable für Fenster Links
int valLT = 0; // variable für Tür Links
int valMTL = 0; // variable für Mitte Tür Linker Flügel
int valMTR = 0; // variable für Mitte Tür Rechter Flügel
int valRT = 0; // variable für Rechte Tür
int valRF = 0; // variable für Fenster Rechts
int valHWR = 0; // variable für Fenster Hauswirtschaftsraum
int valHT = 0; // variable für Haustür
int valSM = 0; // variable für Sammelstörung
int valRM = 0; // variable für Rauchmelder
boolean okToPrint1 = true; // 1 bis 10 sind Sendevariablen dies ermöglicht den String nur bei wertänderung zu senden
boolean okToPrint2 = true;
boolean okToPrint3 = true;
boolean okToPrint4 = true;
boolean okToPrint5 = true;
boolean okToPrint6 = true;
boolean okToPrint7 = true;
boolean okToPrint8 = true;
boolean okToPrint9 = true;
boolean okToPrint10 = true;
float wert_sensor_1; // 1 bis 6 Variablen für die 1Wire Sensoren
float wert_sensor_2;
float wert_sensor_3;
float wert_sensor_4;
float wert_sensor_5;
float wert_sensor_6;
DeviceAddress Sensor1 = { 0x28, 0x44, 0x48, 0xDB, 0x05, 0x00, 0x00, 0xC0 }; // Adressen der 1 Wire Sensoren
DeviceAddress Sensor2 = { 0x28, 0x02, 0x3A, 0xDB, 0x05, 0x00, 0x00, 0xE9 };
DeviceAddress Sensor3 = { 0x28, 0x86, 0xC7, 0xDB, 0x05, 0x00, 0x00, 0x95 };
DeviceAddress Sensor4 = { 0x28, 0x21, 0xF1, 0xDA, 0x05, 0x00, 0x00, 0xDB };
DeviceAddress Sensor5 = { 0x28, 0x8F, 0x47, 0xDB, 0x05, 0x00, 0x00, 0xC8 };
DeviceAddress Sensor6 = { 0x28, 0xCF, 0x9B, 0xDB, 0x05, 0x00, 0x00, 0xC2 };
long vorhermillis = millis();
void setup() {
pinMode(LinksFenster, INPUT_PULLUP); // Interne Pullups Aktivieren. Eingänge werden intern auf High gesetzt alle Signale werden gegen GND geschaltet
pinMode(LinksTuer, INPUT_PULLUP);
pinMode(MitteFlLinks, INPUT_PULLUP);
pinMode(MitteFLRechts, INPUT_PULLUP);
pinMode(Rechtstuer, INPUT_PULLUP);
pinMode(RechtsFenster, INPUT_PULLUP);
pinMode(HWRFenster, INPUT_PULLUP);
pinMode(Haustuer, INPUT_PULLUP);
pinMode(Rauchmelder, INPUT_PULLUP);
pinMode(Sammelstoerung , INPUT_PULLUP);
buffer.reserve(200); // hier maximal Stringlänge einsetzen
Serial.begin(9600); // Serielle Schnittstelle aktivieren und auf 9k6 Baud stellen
sensors.begin(); // 1 Wire initialisieren
}
void loop() {
valLF = digitalRead(LinksFenster); // Status der Input Pins in jedem durchlauf abfragen und den entsprechenden Variablen zuweisen
valLT = digitalRead(LinksTuer);
valMTL = digitalRead(MitteFlLinks);
valMTR = digitalRead(MitteFLRechts);
valRT = digitalRead(Rechtstuer);
valRF = digitalRead(RechtsFenster);
valHWR = digitalRead(HWRFenster);
valHT = digitalRead(Haustuer);
valRM = digitalRead(Rauchmelder);
valSM = digitalRead(Sammelstoerung);
if (millis() - vorhermillis > 10000) // Wenn Zeitwert größer dann .....
{
vorhermillis = millis();
sensors.requestTemperatures(); // alle Sensoren im 1 Wire Bus um die Temperaturen bitten
wert_sensor_1 = sensors.getTempC(Sensor1); // Sensoren 1 - 6 Temperatur den Variablen zuweisen
wert_sensor_2 = sensors.getTempC(Sensor2);
wert_sensor_3 = sensors.getTempC(Sensor3);
wert_sensor_4 = sensors.getTempC(Sensor4);
wert_sensor_5 = sensors.getTempC(Sensor5);
wert_sensor_6 = sensors.getTempC(Sensor6);
buffer = ""; // leeren
buffer += "Innen:";
buffer += wert_sensor_1;
buffer += ":";
buffer += wert_sensor_2;
buffer += ":";
buffer += wert_sensor_3;
buffer += ":";
buffer += wert_sensor_4;
buffer += ":";
buffer += wert_sensor_5;
buffer += ":";
buffer += wert_sensor_6;
Serial.println(buffer);
//Innen = "Innen:" + String(wert_sensor_1) + ":" + String(wert_sensor_2) + ":" + String(wert_sensor_3) + ":" + String(wert_sensor_4) + ":" + String(wert_sensor_5) + ":" + String(wert_sensor_6); // Sendestring aus Sensorwerten zusammenbauen und der Stringvari Innen zuweisen
//Serial.println(Innen); // Seriell Zeilen Druck des Strings Innen
sens(); // Aufrufen der BME280 abfrage
}
// Ab hier Abfrage der Kontakte zusammenbau des Sendestrings und versenden bei Statusänderung eines Kontaktes Update ALLER!!! Kontakt Stati
if(!valLF&&okToPrint1)
{
window();
okToPrint1 = false;
}
if(valLF && !okToPrint1)
{
window();
okToPrint1 = true;
}
if(!valLT&&okToPrint2)
{
window();
okToPrint2 = false;
}
if(valLT && !okToPrint2)
{
window();
okToPrint2 = true;
}
if(!valMTL&&okToPrint3)
{
window();
okToPrint3 = false;
}
if(valMTL && !okToPrint3)
{
window();
okToPrint3 = true;
}
if(!valMTR&&okToPrint4)
{
window();
okToPrint4 = false;
}
if(valMTR && !okToPrint4)
{
window();
okToPrint4 = true;
}
if(!valRT&&okToPrint5)
{
window();
okToPrint5 = false;
}
if(valRT && !okToPrint5)
{
window();
okToPrint5 = true;
}
if(!valRF&&okToPrint6)
{
window();
okToPrint6 = false;
}
if(valRF && !okToPrint6)
{
window();
okToPrint6 = true;
}
if(!valHWR&&okToPrint7)
{
window();
okToPrint7 = false;
}
if(valHWR && !okToPrint7)
{
window();
okToPrint7 = true;
}
if(!valHWR&&okToPrint8)
{
window();
okToPrint8 = false;
}
if(valHT && !okToPrint8)
{
window();
okToPrint8 = true;
}
if(!valHWR&&okToPrint9)
{
window();
okToPrint9 = false;
}
if(valSM && !okToPrint9)
{
window();
okToPrint9 = true;
}
if(!valHWR&&okToPrint10)
{
window();
okToPrint7 = false;
}
if(valRM && !okToPrint10)
{
window();
okToPrint10 = true;
}
}
void sens() // Funktion für BME280
{
buffer = ""; // leeren
buffer += "Umwelt-";
buffer += bme280.getTemperature();
buffer += "-";
buffer += bme280.getHumidity();
buffer += "-";
buffer += bme280.getPressure();
Serial.println(buffer);
}
void window()
{
buffer = ""; // leeren
buffer += "Fenster,";
buffer += valLF;
buffer += ",";
buffer += valLT;
buffer += ",";
buffer += valMTL;
buffer += ",";
buffer += valMTR;
buffer += ",";
buffer += valRT;
buffer += ",";
buffer += valRF;
buffer += ",";
buffer += valHWR;
buffer += ",";
buffer += valHT;
buffer += ",";
buffer += valRM;
buffer += ",";
buffer += valSM;
Serial.println(buffer);
}