RCSwitch Steckdose soll nach erfüllter Bedingung nur einmal schalten (senden)

Hallo liebe Freunde des Arduinos,

ich habe ein neues Projekt begonnen. Und zwar sollen Funksteckdosen Temperaturgesteuert an- bzw. ausgeschaltet werden. Als Temperatursensoren kommen DS18B20 zum Einsatz. Bei der Funksteckdose RCSwitch (alte HX2262 schaltung). Nun habe ich das Problem das nach dem meine if Abfrage erfüllt ist ständig gesendet wird. Dies soll allerdings nur einmal passieren. Ich würde euch bitten mein Problem einmal anzuschauen:

#include <OneWire.h>
#include <DallasTemperature.h>
#include <RCSwitch.h>

int tempsensor1Low = 26;
int tempsensor1High = 28;
int tempsensor2Low = 30;
int tempsensor2High = 32;


boolean steckdose1 = false;
boolean steckdose2 = false;

RCSwitch mySwitch = RCSwitch();

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

//DeviceAddress Sensor1, Sensor2;
DeviceAddress sensor1 = { 0x28, 0xFF, 0x74, 0x93, 0x15, 0x15, 0x01, 0x61 };
DeviceAddress sensor2 = { 0x28, 0xFF, 0x35, 0x98, 0x15, 0x15, 0x01, 0xD1 };

void setup()
{
  // Transmitter is connected to Arduino Pin #10
  mySwitch.enableTransmit(10);
  // start serial port
  //Serial.begin(9600);

  // Start up the library
  sensors.begin();

  // set the sensor resolution
  sensors.setResolution(sensor1, TEMPERATURE_PRECISION);
  sensors.setResolution(sensor2, TEMPERATURE_PRECISION);
  mySwitch.switchOff("11111", "10000");
  mySwitch.switchOff("11111", "01000");
}

void loop()
{ 
  sensors.requestTemperatures();
  float sensor1temp = sensors.getTempC(sensor1);
  float sensor2temp = sensors.getTempC(sensor2);
  Serial.print ("Sensor1: ");
  Serial.print(sensor1temp);
  
   Serial.print (" Sensor2: ");
  Serial.print(sensor2temp);
  Serial.println();
  
  
  //erster Sensor , erste Steckdose 
  
  
  if ((sensor1temp <= tempsensor1Low) && (sensor1temp < tempsensor1High) && (steckdose1 == false) )
 { 
   mySwitch.switchOn("11111", "10000");
   steckdose1 = true;
 }

 if ((sensor1temp >= tempsensor1High)&& (steckdose1 = true) )
 { 
   mySwitch.switchOff("11111", "10000");
   steckdose1 = false;
 }
 
 //zweiter Sensor , Zweite Steckdose
 
   if ((sensor2temp <= tempsensor2Low) && (sensor2temp < tempsensor2High) && (steckdose2 == false) )
 { 
   mySwitch.switchOn("11111", "01000");
   steckdose2 = true;
 }

 if ((sensor2temp >= tempsensor1High)&& (steckdose2 = true) )
 { 
   mySwitch.switchOff("11111", "01000");
   steckdose2 = false;
 }
 
// delay(1000);
  
}

Vielen Dank und Viele Grüße,
DaHu

(steckdose2 = true)

==

Beliebter Fehler :slight_smile:

So gibt eine Zuweisung den zugewiesenen Wert zurück und es ist immer true