diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 2347cba22..a4de6d1bd 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -106,8 +106,10 @@ #define D_JSON_PRESSURE "Pressure" #define D_JSON_PRESSUREATSEALEVEL "SeaPressure" #define D_JSON_PRESSURE_UNIT "PressureUnit" +#define D_JSON_PROBETEMPERATURE "ProbeTemperature" #define D_JSON_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_JSON_PROGRAMSIZE "ProgramSize" +#define D_JSON_REFERENCETEMPERATURE "ReferenceTemperature" #define D_JSON_RESET "Reset" #define D_JSON_RESTARTING "Restarting" #define D_JSON_RESTARTREASON "RestartReason" diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 222c62b58..cf899685f 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF датчик" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 45f55af6a..21366053b 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 23d8de9ed..80ea03d1e 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index a8b48ed35..b36efe3b4 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 2ea9c249a..20b4f8ddb 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index fc50b9d6f..dbf69404f 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 0638b408a..1a3cfae5f 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index cd1b0e92e..cbfacad14 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 244d55776..ea2f65ea0 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index a6d0d693c..b497ef04b 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index b3bf10989..df9d4dcb1 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index d80826751..7a42aff61 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 7add978f0..c62816af8 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 9869762b8..5e2b13255 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index d0a3f6933..ef8aaccef 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/sk-SK.h b/sonoff/language/sk-SK.h index f46372426..16da51d32 100644 --- a/sonoff/language/sk-SK.h +++ b/sonoff/language/sk-SK.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Senzor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/sv-SE.h b/sonoff/language/sv-SE.h index f36162a4b..7f1b4ba5a 100644 --- a/sonoff/language/sv-SE.h +++ b/sonoff/language/sv-SE.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 06d82b9cb..4ff68c52f 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 509c90753..5043c857c 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 05bedca81..858d45186 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "安" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 2780181aa..b1a46d3a4 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -540,6 +540,9 @@ #define D_SENSOR_RF_SENSOR "RF Sensor" #define D_SENSOR_AZ_RX "AZ Rx" #define D_SENSOR_AZ_TX "AZ Tx" +#define D_SENSOR_MAX31855_CS "MAX31855 CS" +#define D_SENSOR_MAX31855_CLK "MAX31855 CLK" +#define D_SENSOR_MAX31855_DO "MAX31855 DO" // Units #define D_UNIT_AMPERE "安" diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 8684ac7a0..69f21dec7 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -285,6 +285,9 @@ // #define W1_PARASITE_POWER // If using USE_DS18x20 then optimize for parasite powered sensors // #define DS18B20_INTERNAL_PULLUP // Use INPUT_PULLUP internal pullup resistors for single DS18B20 +// -- SPI sensors ---------------------------------- +#define USE_MAX31855 // Enable MAX31855 K-Type thermocouple sensor + // -- I2C sensors --------------------------------- #define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 7c590085e..2ab1eaaf8 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -143,6 +143,9 @@ enum UserSelectablePins { GPIO_RF_SENSOR, // Rf receiver with sensor decoding GPIO_AZ_TXD, // AZ-Instrument 7798 Serial interface GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface + GPIO_MAX31855CS, // MAX31855 Serial interface + GPIO_MAX31855CLK, // MAX31855 Serial interface + GPIO_MAX31855DO, // MAX31855 Serial interface GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -204,7 +207,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" D_SENSOR_RF_SENSOR "|" - D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX; + D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" + D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO; /********************************************************************************************/ @@ -466,6 +470,11 @@ const uint8_t kGpioNiceList[] PROGMEM = { GPIO_AZ_TXD, // AZ-Instrument 7798 CO2 datalogger Serial interface GPIO_AZ_RXD, // AZ-Instrument 7798 CO2 datalogger Serial interface #endif +#ifdef USE_MAX31855 + GPIO_MAX31855CS, // MAX31855 Serial interface + GPIO_MAX31855CLK, // MAX31855 Serial interface + GPIO_MAX31855DO, // MAX31855 Serial interface +#endif }; const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { diff --git a/sonoff/xsns_39_max31855.ino b/sonoff/xsns_39_max31855.ino new file mode 100644 index 000000000..02288ca4b --- /dev/null +++ b/sonoff/xsns_39_max31855.ino @@ -0,0 +1,176 @@ +/* + xsns_39_max31855.ino - MAX31855 thermocouple sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Markus Past + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_MAX31855 + +#define XSNS_39 39 + +bool initialized = false; + +struct MAX31855_ResultStruct{ + uint8_t ErrorCode; // Error Codes: 0 = No Error / 1 = TC open circuit / 2 = TC short to GND / 4 = TC short to VCC + float ProbeTemperature; // Measured temperature of the 'hot' TC junction (probe temp) + float ReferenceTemperature; // Measured temperature of the 'cold' TC junction (reference temp) +} MAX31855_Result; + +void MAX31855_Init(void){ + if(initialized) + return; + + // Set GPIO modes for SW-SPI + pinMode(pin[GPIO_MAX31855CS], OUTPUT); + pinMode(pin[GPIO_MAX31855CLK], OUTPUT); + pinMode(pin[GPIO_MAX31855DO], INPUT); + + // Chip not selected / Clock low + digitalWrite(pin[GPIO_MAX31855CS], HIGH); + digitalWrite(pin[GPIO_MAX31855CLK], LOW); + + initialized = true; +} + +/* +* MAX31855_GetResult(void) +* Acquires the raw data via SPI, checks for MAX31855 errors and fills result structure +*/ +void MAX31855_GetResult(void){ + int32_t RawData = MAX31855_ShiftIn(32); + uint8_t probeerror = RawData & 0x7; + + MAX31855_Result.ErrorCode = probeerror; + MAX31855_Result.ReferenceTemperature = MAX31855_GetReferenceTemperature(RawData); + if(probeerror) + MAX31855_Result.ProbeTemperature = NAN; // Return NaN if MAX31855 reports an error + else + MAX31855_Result.ProbeTemperature = MAX31855_GetProbeTemperature(RawData); +} + + +/* +* MAX31855_GetProbeTemperature(int32_t RawData) +* Decodes and returns the temperature of TCs 'hot' junction from RawData +*/ +float MAX31855_GetProbeTemperature(int32_t RawData){ + if(RawData & 0x80000000) + RawData = (RawData >> 18) | 0xFFFFC000; // Negative value - Drop lower 18 bits and extend to negative number + else + RawData >>= 18; // Positiv value - Drop lower 18 bits + + float result = (RawData * 0.25); // MAX31855 LSB resolution is 0.25°C for probe temperature + + return (Settings.flag.temperature_conversion) ? ConvertTemp(result) : result; // Check if we have to convert to Fahrenheit +} + +/* +* MAX31855_GetReferenceTemperature(int32_t RawData) +* Decodes and returns the temperature of TCs 'cold' junction from RawData +*/ +float MAX31855_GetReferenceTemperature(int32_t RawData){ + if(RawData & 0x8000) + RawData = (RawData >> 4) | 0xFFFFF000; // Negative value - Drop lower 4 bits and extend to negative number + else + RawData = (RawData >> 4) & 0x00000FFF; // Positiv value - Drop lower 4 bits and mask out remaining bits (probe temp, error bit, etc.) + + float result = (RawData * 0.0625); // MAX31855 LSB resolution is 0.0625°C for reference temperature + + return (Settings.flag.temperature_conversion) ? ConvertTemp(result) : result; // Check if we have to convert to Fahrenheit +} + +/* +* MAX31855_ShiftIn(uint8_t Length) +* Communicates with MAX31855 via SW-SPI and returns the raw data read from the chip +*/ +int32_t MAX31855_ShiftIn(uint8_t Length){ + int32_t dataIn = 0; + + digitalWrite(pin[GPIO_MAX31855CS], LOW); // CS = LOW -> Start SPI communication + delayMicroseconds(1); // CS fall to output enable = max. 100ns + + for(uint8_t i = 0; i < Length; i++) + { + digitalWrite(pin[GPIO_MAX31855CLK], LOW); + delayMicroseconds(1); // CLK pulse width low = min. 100ns / CLK fall to output valid = max. 40ns + dataIn <<= 1; + if(digitalRead(pin[GPIO_MAX31855DO])) + dataIn |= 1; + digitalWrite(pin[GPIO_MAX31855CLK], HIGH); + delayMicroseconds(1); // CLK pulse width high = min. 100ns + } + + digitalWrite(pin[GPIO_MAX31855CS], HIGH); // CS = HIGH -> End SPI communication + digitalWrite(pin[GPIO_MAX31855CLK], LOW); + return dataIn; +} + +void MAX31855_Show(bool Json){ + char probetemp[33]; + char referencetemp[33]; + dtostrfd(MAX31855_Result.ProbeTemperature, Settings.flag2.temperature_resolution, probetemp); + dtostrfd(MAX31855_Result.ReferenceTemperature, Settings.flag2.temperature_resolution, referencetemp); + + if(Json){ + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_PROBETEMPERATURE "\":%s,\"" D_JSON_REFERENCETEMPERATURE "\":%s,\"" D_JSON_ERROR "\":%d}"), \ + mqtt_data, "MAX31855", probetemp, referencetemp, MAX31855_Result.ErrorCode); +#ifdef USE_DOMOTICZ + if (0 == tele_period) { + DomoticzSensor(DZ_TEMP, probetemp); + } +#endif // USE_DOMOTICZ +#ifdef USE_KNX + if (0 == tele_period) { + KnxSensor(KNX_TEMPERATURE, MAX31855_Result.ProbeTemperature); + } +#endif // USE_KNX + } else { +#ifdef USE_WEBSERVER + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "MAX31855", probetemp, TempUnit()); +#endif // USE_WEBSERVER + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +boolean Xsns39(byte function) +{ + boolean result = false; + if((pin[GPIO_MAX31855CS] < 99) && (pin[GPIO_MAX31855CLK] < 99) && (pin[GPIO_MAX31855DO] < 99)){ + + switch (function) { + case FUNC_INIT: + MAX31855_Init(); + break; + case FUNC_EVERY_SECOND: + MAX31855_GetResult(); + break; + case FUNC_JSON_APPEND: + MAX31855_Show(true); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_APPEND: + MAX31855_Show(false); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_MAX31855 \ No newline at end of file