/* References: * https://lastminuteengineers.com/multiple-ds18b20-arduino-tutorial/ */ #include "ArduinoJson.h" #include #include // Data wire is conntec to the Arduino digital pin 4 #define ONE_WIRE_BUS 2 #define MOSFET1 3 #define MOSFET2 4 // Setup a oneWire instance to communicate with any OneWire devices OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature sensor DallasTemperature sensors(&oneWire); DeviceAddress Thermometer; int deviceCount = 0; int analogPin = 2; int data = 0; char userInput; char* commandVer; // temperature values in °C float tempSensor1; float tempSensor2; // HighTemp - when to turn on the power float HTemp1 = 12.0; float HTemp2 = 16.0; // LowTemp - when to turn of the power float LTemp1 = 10.0; float LTemp2 = 14.0; bool fetState1; bool fetState2; uint8_t addrSensor1[8] = { 0x28, 0xFF, 0x64, 0x1F, 0x79, 0xD1, 0xB1, 0x75 }; uint8_t addrSensor2[8] = { 0x28, 0xFF, 0x64, 0x1F, 0x79, 0xD7, 0xDA, 0x9A }; void setup() { // put your setup code here, to run once: pinMode(MOSFET1, OUTPUT); pinMode(MOSFET2, OUTPUT); Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); tempSensor1 = sensors.getTempC(addrSensor1); if(tempSensor1 > HTemp1) { digitalWrite(MOSFET1, HIGH); fetState1 = 1; } else if(tempSensor1 < LTemp1) { digitalWrite(MOSFET1, LOW); fetState1 = 0; } tempSensor2 = sensors.getTempC(addrSensor2); if(tempSensor2 > HTemp2) { digitalWrite(MOSFET2, HIGH); fetState2 = 1; } else if(tempSensor1 < LTemp1) { digitalWrite(MOSFET2, LOW); fetState2 = 0; } StaticJsonDocument<96> jsonOut; //jsonOut["sensor"] = "1"; jsonOut[0]["temp"] = tempSensor1; jsonOut[0]["state"] = fetState1; //jsonOut["sensor"] = "2"; jsonOut[1]["temp"] = tempSensor2; jsonOut[1]["state"] = fetState2; serializeJson(jsonOut, Serial); Serial.println(); delay(5000); }