Add ESP32 support for internal Hall Effect sensor

Add ESP32 support for internal Hall Effect sensor connected to both GPIO36 and GPIO39 only
This commit is contained in:
Theo Arends 2021-03-27 15:15:15 +01:00
parent 597fbb9da9
commit be72bde8f5
37 changed files with 161 additions and 6 deletions

View File

@ -222,6 +222,7 @@
| Feature or Sensor | lite | tasmota | knx | sensors | ir | display | webcam | Remarks
|-----------------------|-------|--------|-----|---------|----|---------|--------|--------
| USE_UFILESYS | x | x | x | x | x | x | x |
| USE_HALLEFFECT | x | x | x | x | x | x | x |
| USE_MI_ESP32 | - | x | - | x | - | - | - | See SetOption115
| USE_IBEACON_ESP32 | - | - | - | - | - | - | - |
| USE_WEBCAM | - | - | - | - | - | - | x |

View File

@ -10,10 +10,11 @@ All notable changes to this project will be documented in this file.
- Support for TM1638 seven segment display by Ajith Vasudevan (#11031)
- Support for MAX7219 seven segment display by Ajith Vasudevan (#11387)
- Support for Frequency monitoring and zero-cross detection on CSE7761 (Sonoff Dual R3)
- IRremoteESP8266 library from v2.7.15 to v2.7.16
- ESP32 support for internal Hall Effect sensor connected to both GPIO36 and GPIO39 only
### Changed
- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12
- IRremoteESP8266 library from v2.7.15 to v2.7.16
## [9.3.1.1]
### Added

View File

@ -98,10 +98,12 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
- ESP32 Extent BLE [#11212](https://github.com/arendst/Tasmota/issues/11212)
- ESP32 support for WS2812 hardware driver via RMT or I2S
- ESP32 support for secondary I2C controller
- ESP32 support for internal Hall Effect sensor connected to both GPIO36 and GPIO39 only
### Changed
- TasmotaSerial library from v3.2.0 to v3.3.0
- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12
- IRremoteESP8266 library from v2.7.15 to v2.7.16
- ESP32 core library from v1.0.5-rc6 to v1.0.5
- TuyaMcu dimmer timeout [#11121](https://github.com/arendst/Tasmota/issues/11121)
- Rename epaper 42 commands [#11222](https://github.com/arendst/Tasmota/issues/11222)

View File

@ -88,6 +88,7 @@
#define D_JSON_GATEWAY "Gateway"
#define D_JSON_GREEN "Green"
#define D_JSON_GROUPS "Groups"
#define D_JSON_HALLEFFECT "HallEffect"
#define D_JSON_HALTING "Halting"
#define D_JSON_HEAPSIZE "Heap"
#define D_JSON_HIGH "High"

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Groep"
#define D_HOST "Gasheer"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Gasheername"
#define D_HUMIDITY "Humiditeit"
#define D_ILLUMINANCE "Verligting"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Шлюз"
#define D_GROUP "Група"
#define D_HOST "Хост"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Име на хоста"
#define D_HUMIDITY "Влажност"
#define D_ILLUMINANCE "Осветеност"
@ -807,6 +808,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Výchozí brána"
#define D_GROUP "Skupina"
#define D_HOST "Server"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Název serveru"
#define D_HUMIDITY "Vlhkost"
#define D_ILLUMINANCE "Osvětlení"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Gruppe"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostname"
#define D_HUMIDITY "Feuchtigkeit"
#define D_ILLUMINANCE "Beleuchtungsstärke"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Puls"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Πύλη"
#define D_GROUP "Ομάδα"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostname"
#define D_HUMIDITY "Υγρασία"
#define D_ILLUMINANCE "Φωτεινότητα"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Group"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostname"
#define D_HUMIDITY "Humidity"
#define D_ILLUMINANCE "Illuminance"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Grupo"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostname"
#define D_HUMIDITY "Humedad"
#define D_ILLUMINANCE "Luminancia"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "Cruce por cero"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Passerelle"
#define D_GROUP "Groupe"
#define D_HOST "Hôte"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Nom d'Hôte"
#define D_HUMIDITY "Humidité"
#define D_ILLUMINANCE "Éclairement"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Poarte"
#define D_GROUP "Groep"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostnamme"
#define D_HUMIDITY "Feuchte"
#define D_ILLUMINANCE "Beljochting"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "שער"
#define D_GROUP "קבוצה"
#define D_HOST "מארח"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "שם מארח"
#define D_HUMIDITY "לחות"
#define D_ILLUMINANCE "רמת חשיפה"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Átjáró"
#define D_GROUP "Csoport"
#define D_HOST "Hoszt"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hosztnév"
#define D_HUMIDITY "Páratartalom"
#define D_ILLUMINANCE "Megvilágítás"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Gruppo"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Nome host"
#define D_HUMIDITY "Umidità"
#define D_ILLUMINANCE "Illuminazione"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ - TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ - RX"
#define D_SENSOR_ZEROCROSS "Impulsi ZC"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "게이트웨이"
#define D_GROUP "그룹"
#define D_HOST "호스트"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "호스트이름"
#define D_HUMIDITY "습도"
#define D_ILLUMINANCE "조도"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Groep"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostnaam"
#define D_HUMIDITY "Luchtvochtigheid"
#define D_ILLUMINANCE "Verlichtingssterkte"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Brama"
#define D_GROUP "Grupa"
#define D_HOST "Serwer"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Nazwa serwera"
#define D_HUMIDITY "Wilgotność"
#define D_ILLUMINANCE "Podświetlanie"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Grupo"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Nome do Host"
#define D_HUMIDITY "Umidade"
#define D_ILLUMINANCE "Luminância"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Grupo"
#define D_HOST "Anfitrião"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Nome Anfitrião"
#define D_HUMIDITY "Humidade"
#define D_ILLUMINANCE "Luminâcia"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Grup"
#define D_HOST "Gazdă"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Hostname"
#define D_HUMIDITY "Umiditate"
#define D_ILLUMINANCE "Iluminare"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Шлюз"
#define D_GROUP "Группа"
#define D_HOST "Хост"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Имя Хоста"
#define D_HUMIDITY "Влажность"
#define D_ILLUMINANCE "Освещенность"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Predvolená brána"
#define D_GROUP "Skupina"
#define D_HOST "Server"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Názov servera"
#define D_HUMIDITY "Vlhkosť"
#define D_ILLUMINANCE "Osvetlenie"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Gateway"
#define D_GROUP "Grupp"
#define D_HOST "Värd"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Värdnamn"
#define D_HUMIDITY "Fuktighet"
#define D_ILLUMINANCE "Belysnings"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Geçit"
#define D_GROUP "Grup"
#define D_HOST "Host"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Host Adresi"
#define D_HUMIDITY "Nem"
#define D_ILLUMINANCE "Aydınlık"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Шлюз"
#define D_GROUP "Група"
#define D_HOST "Хост"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Назва хосту"
#define D_HUMIDITY "Вологість"
#define D_ILLUMINANCE "Освітленність"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "Cổng kết nối"
#define D_GROUP "Nhóm"
#define D_HOST "Máy chủ"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "Tên máy chủ"
#define D_HUMIDITY "Độ ẩm"
#define D_ILLUMINANCE "Độ sáng"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "网关"
#define D_GROUP "组:"
#define D_HOST "主机"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "主机名"
#define D_HUMIDITY "湿度"
#define D_ILLUMINANCE "照度"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -109,6 +109,7 @@
#define D_GATEWAY "閘道器"
#define D_GROUP "群組:"
#define D_HOST "主機"
#define D_HALL_EFFECT "Hall Effect"
#define D_HOSTNAME "主機名稱"
#define D_HUMIDITY "濕度"
#define D_ILLUMINANCE "照度"
@ -808,6 +809,7 @@
#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX"
#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX"
#define D_SENSOR_ZEROCROSS "ZC Pulse"
#define D_SENSOR_HALLEFFECT "HallEffect"
// Units

View File

@ -899,6 +899,7 @@
// #define ETH_CLKMODE 0 // [EthClockMode] 0 = ETH_CLOCK_GPIO0_IN, 1 = ETH_CLOCK_GPIO0_OUT, 2 = ETH_CLOCK_GPIO16_OUT, 3 = ETH_CLOCK_GPIO17_OUT
#define USE_ADC // Add support for ADC on GPIO32 to GPIO39
#define USE_HALLEFFECT // Add support for internal Hall Effcet sensor connected to GPIO36 and GPIO39
//#define USE_SPI // Add support for hardware SPI
//#define USE_MI_ESP32 // Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash)

View File

@ -737,7 +737,9 @@ void ResponseAppendFeatures(void)
#ifdef USE_BERRY
feature8 |= 0x00000008; // xdrv_52_9_berry.ino
#endif
// feature8 |= 0x00000010;
#ifdef USE_HALLEFFECT
feature8 |= 0x00000010; // xsns_87_esp32_halleffect.ino
#endif
// feature8 |= 0x00000020;
// feature8 |= 0x00000040;
// feature8 |= 0x00000080;

View File

@ -183,6 +183,7 @@
#define USE_LIGHT_PALETTE // Add support for color palette (+0k9 code)
#define USE_HALLEFFECT // Add support for internal Hall Effcet sensor connected to GPIO36 and GPIO39
#define USE_DS18x20 // Add support for DS18x20 sensors with id sort, single scan and read retry (+1k3 code)
#define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram)

View File

@ -158,6 +158,9 @@ enum UserSelectablePins {
GPIO_MAX7219CLK, GPIO_MAX7219DIN, GPIO_MAX7219CS, // MAX7219 interface
GPIO_TFMINIPLUS_TX, GPIO_TFMINIPLUS_RX, // TFmini Plus ToF sensor
GPIO_ZEROCROSS,
#ifdef ESP32
GPIO_HALLEFFECT,
#endif
GPIO_SENSOR_END };
enum ProgramSelectablePins {
@ -336,6 +339,9 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_MAX7219_CLK "|" D_SENSOR_MAX7219_DIN "|" D_SENSOR_MAX7219_CS "|"
D_SENSOR_TFMINIPLUS_TX "|" D_SENSOR_TFMINIPLUS_RX "|"
D_SENSOR_ZEROCROSS "|"
#ifdef ESP32
D_SENSOR_HALLEFFECT "|"
#endif
;
const char kSensorNamesFixed[] PROGMEM =
@ -807,11 +813,13 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_MAX7219DIN),
AGPIO(GPIO_MAX7219CS),
#endif // USE_DISPLAY_MAX7219
/*-------------------------------------------------------------------------------------------*\
* ESP32 specifics
\*-------------------------------------------------------------------------------------------*/
#ifdef ESP32
AGPIO(GPIO_HALLEFFECT) + 2, // Hall effect sensor connected to GPIO36 and 39
#ifdef USE_WEBCAM
AGPIO(GPIO_WEBCAM_PWDN),
AGPIO(GPIO_WEBCAM_RESET),
@ -829,7 +837,7 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#ifdef USE_ETHERNET
AGPIO(GPIO_ETH_PHY_POWER),
AGPIO(GPIO_ETH_PHY_MDC),
AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet
AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet
#endif // USE_ETHERNET
/*-------------------------------------------------------------------------------------------*\

View File

@ -391,7 +391,7 @@ uint8_t DomoticzHumidityState(float h) {
return (!h) ? 0 : (h < 40) ? 2 : (h > 70) ? 3 : 1;
}
void DomoticzSensor(uint8_t idx, uint32_t value) {
void DomoticzSensor(uint8_t idx, int value) {
char data[16];
snprintf_P(data, sizeof(data), PSTR("%d"), value);
DomoticzSensor(idx, data);

View File

@ -0,0 +1,86 @@
/*
xsns_87_esp32_halleffect.ino - ESP32 Hall Effect sensor for Tasmota
Copyright (C) 2021 Theo Arends
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 <http://www.gnu.org/licenses/>.
*/
#ifdef ESP32
#ifdef USE_HALLEFFECT
/*********************************************************************************************\
* ESP32 internal Hall Effect sensor connected to both GPIO36 and GPIO39
\*********************************************************************************************/
#define XSNS_87 87
struct {
bool present = false;
} HEData;
void HallEffectInit(void) {
if (PinUsed(GPIO_HALLEFFECT) && PinUsed(GPIO_HALLEFFECT, 1)) {
HEData.present = (((36 == Pin(GPIO_HALLEFFECT)) && (39 == Pin(GPIO_HALLEFFECT, 1))) ||
((39 == Pin(GPIO_HALLEFFECT)) && (36 == Pin(GPIO_HALLEFFECT, 1))));
}
}
#ifdef USE_WEBSERVER
// {s} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
const char HTTP_SNS_HALL_EFFECT[] PROGMEM = "{s}" D_HALL_EFFECT "{m}%d{e}";
#endif // USE_WEBSERVER
void HallEffectShow(bool json) {
int value = hallRead();
if (json) {
ResponseAppend_P(PSTR(",\"" D_JSON_HALLEFFECT "\":%d"), value);
#ifdef USE_DOMOTICZ
if (0 == TasmotaGlobal.tele_period) {
DomoticzSensor(DZ_COUNT, value);
}
#endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER
} else {
WSContentSend_P(HTTP_SNS_HALL_EFFECT, value);
#endif // USE_WEBSERVER
}
}
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
bool Xsns87(uint8_t function) {
bool result = false;
if (FUNC_INIT == function) {
HallEffectInit();
}
else if (HEData.present) {
switch (function) {
case FUNC_JSON_APPEND:
HallEffectShow(1);
break;
#ifdef USE_WEBSERVER
case FUNC_WEB_SENSOR:
HallEffectShow(0);
break;
#endif // USE_WEBSERVER
}
}
return result;
}
#endif // USE_HALLEFFECT
#endif // ESP32

View File

@ -252,7 +252,7 @@ a_features = [[
"USE_TOF10120","USE_SDM72","USE_DISPLAY_TM1637","USE_PROJECTOR_CTRL"
],[
"USE_MPU6886","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY",
"","","","",
"USE_HALLEFFECT","","","",
"","","","",
"","","","",
"","","","",
@ -286,7 +286,7 @@ else:
obj = json.load(fp)
def StartDecode():
print ("\n*** decode-status.py v20210323 by Theo Arends and Jacek Ziolkowski ***")
print ("\n*** decode-status.py v20210327 by Theo Arends and Jacek Ziolkowski ***")
# print("Decoding\n{}".format(obj))