mirror of https://github.com/arendst/Tasmota.git
Merge branch 'development' into new-windmeter-sensor
# Conflicts: # tasmota/language/bg_BG.h # tasmota/language/cs_CZ.h # tasmota/language/de_DE.h # tasmota/language/el_GR.h # tasmota/language/en_GB.h # tasmota/language/es_ES.h # tasmota/language/fr_FR.h # tasmota/language/he_HE.h # tasmota/language/hu_HU.h # tasmota/language/it_IT.h # tasmota/language/ko_KO.h # tasmota/language/nl_NL.h # tasmota/language/pl_PL.h # tasmota/language/pt_BR.h # tasmota/language/pt_PT.h # tasmota/language/ro_RO.h # tasmota/language/ru_RU.h # tasmota/language/sk_SK.h # tasmota/language/sv_SE.h # tasmota/language/tr_TR.h # tasmota/language/uk_UA.h # tasmota/language/zh_CN.h # tasmota/language/zh_TW.h
This commit is contained in:
commit
a3455f235b
|
@ -20,3 +20,480 @@ jobs:
|
|||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32
|
||||
|
||||
|
||||
tasmota32-minimal:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-minimal
|
||||
|
||||
tasmota32-lite:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-lite
|
||||
|
||||
tasmota32-knx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-knx
|
||||
|
||||
tasmota32-sensors:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-sensors
|
||||
|
||||
tasmota32-display:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-display
|
||||
|
||||
tasmota32-ir:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-ir
|
||||
|
||||
tasmota32-BG:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-BG
|
||||
|
||||
tasmota32-BR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-BR
|
||||
|
||||
tasmota32-CN:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-CN
|
||||
|
||||
tasmota32-CZ:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-CZ
|
||||
|
||||
tasmota32-DE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-DE
|
||||
|
||||
tasmota32-ES:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-ES
|
||||
|
||||
|
||||
tasmota32-FR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-FR
|
||||
|
||||
tasmota32-GR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-GR
|
||||
|
||||
tasmota32-HE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-HE
|
||||
|
||||
tasmota32-HU:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-HU
|
||||
|
||||
tasmota32-IT:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-IT
|
||||
|
||||
tasmota32-KO:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-KO
|
||||
|
||||
tasmota32-NL:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-NL
|
||||
|
||||
tasmota32-PL:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-PL
|
||||
|
||||
tasmota32-PT:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-PT
|
||||
|
||||
tasmota32-RO:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-RO
|
||||
|
||||
tasmota32-RU:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-RU
|
||||
|
||||
tasmota32-SE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-SE
|
||||
|
||||
tasmota32-SK:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-SK
|
||||
|
||||
tasmota32-TR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-TR
|
||||
|
||||
tasmota32-TW:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-TW
|
||||
|
||||
tasmota32-UK:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
cp platformio_override_sample.ini platformio_override.ini
|
||||
platformio run -e tasmota32-UK
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
|
||||
|-----------------------|---------|-------|--------|-----|---------|----|---------|--------
|
||||
| MY_LANGUAGE en-GB | x | x | x | x | x | x | x |
|
||||
| MY_LANGUAGE en_GB | x | x | x | x | x | x | x |
|
||||
| USE_ARDUINO_OTA | - | - | - | - | - | - | - |
|
||||
| USE_DOMOTICZ | - | - | x | x | x | x | - |
|
||||
| USE_HOME_ASSISTANT | - | - | x | x | x | x | - |
|
||||
|
|
|
@ -22,8 +22,8 @@ In addition to the [release webpage](https://github.com/arendst/Tasmota/releases
|
|||
|
||||
[![Dev Version](https://img.shields.io/badge/development%20version-v8.2.x.x-blue.svg)](https://github.com/arendst/Tasmota)
|
||||
[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/tasmota/)
|
||||
![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)
|
||||
![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)
|
||||
[![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22)
|
||||
[![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22)
|
||||
|
||||
See [tasmota/CHANGELOG.md](tasmota/CHANGELOG.md) for detailed change information.
|
||||
|
||||
|
@ -145,7 +145,7 @@ People helping to keep the show on the road:
|
|||
- Stefan Bode for his Shutter and Deep sleep drivers
|
||||
- Jacek Ziółkowski for his [TDM](https://github.com/jziolkowski/tdm) management tool and [Tasmotizer](https://github.com/tasmota/tasmotizer) flashing tool
|
||||
- Christian Staars for NRF24L01 and HM-10 Bluetooth sensor support
|
||||
- Pail Diem for UDP Group communication support
|
||||
- Paul Diem for UDP Group communication support
|
||||
- Jörg Schüler-Maroldt for his initial ESP32 port
|
||||
- Many more providing Tips, Wips, Pocs, PRs and Donations
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
Import('env')
|
||||
import os
|
||||
import shutil
|
||||
|
||||
# copy tasmota/user_config_override_sample.h to tasmota/user_config_override.h
|
||||
if os.path.isfile("tasmota/user_config_override.h"):
|
||||
print ("*** use provided user_config_override.h as planned ***")
|
||||
else:
|
||||
shutil.copy("tasmota/user_config_override_sample.h", "tasmota/user_config_override.h")
|
|
@ -8,8 +8,10 @@
|
|||
; http://docs.platformio.org/en/stable/projectconf.html
|
||||
|
||||
[platformio]
|
||||
description = Provide ESP8266 based devices with Web, MQTT and OTA firmware
|
||||
src_dir = tasmota
|
||||
build_dir = .pioenvs
|
||||
workspace_dir = .pioenvs
|
||||
build_cache_dir = .cache
|
||||
extra_configs = platformio_tasmota_env.ini
|
||||
platformio_override.ini
|
||||
|
@ -64,11 +66,8 @@ platform_packages = ${core_active.platform_packages}
|
|||
build_flags = ${core_active.build_flags}
|
||||
|
||||
; *********************************************************************
|
||||
; *** Uncomment, by deleting ";" in line below, to use custom settings from file user_config_override.h
|
||||
; -DUSE_CONFIG_OVERRIDE
|
||||
;
|
||||
; *** alternatively can be done in: platformio_override.ini
|
||||
; *** See example: platformio_override_sample.ini
|
||||
; *** Use custom settings from file user_config_override.h
|
||||
-DUSE_CONFIG_OVERRIDE
|
||||
; *********************************************************************
|
||||
|
||||
; *** Fix espressif8266@1.7.0 induced undesired all warnings
|
||||
|
@ -86,6 +85,7 @@ extra_scripts = ${scripts_defaults.extra_scripts}
|
|||
extra_scripts = pio/strip-floats.py
|
||||
pio/name-firmware.py
|
||||
pio/gzip-firmware.py
|
||||
pio/override_copy.py
|
||||
|
||||
[esp_defaults]
|
||||
build_flags = -D_IR_ENABLE_DEFAULT_=false
|
||||
|
@ -99,7 +99,8 @@ build_flags = ${esp_defaults.build_flags}
|
|||
-D NDEBUG
|
||||
-mtarget-align
|
||||
-DFP_IN_IROM
|
||||
|
||||
; the following removes the 4-bytes alignment for PSTR(), waiting for a cleaner flag from Arduino Core
|
||||
-DPSTR\(s\)=\(__extension__\(\{static\ const\ char\ __c\[\]\ __attribute__\(\(__aligned__\(1\)\)\)\ __attribute__\(\(section\(\ \"\\\\\".irom0.pstr.\"\ __FILE__\ \".\"\ __STRINGIZE\(__LINE__\)\ \".\"\ \ __STRINGIZE\(__COUNTER__\)\ \"\\\\\"\,\ \\\\\"aSM\\\\\"\,\ \@progbits\,\ 1\ \#\"\)\)\)\ =\ \(s\)\;\ \&__c\[0\]\;\}\)\)
|
||||
|
||||
[irremoteesp_full]
|
||||
build_flags = -DUSE_IR_REMOTE_FULL
|
||||
|
@ -113,7 +114,7 @@ build_flags = ${tasmota_core.build_flags}
|
|||
|
||||
[tasmota_core]
|
||||
; *** Esp8266 Arduino core 2.7.0
|
||||
platform = espressif8266@2.4.0
|
||||
platform = espressif8266@2.5.0
|
||||
platform_packages = framework-arduinoespressif8266 @ https://github.com/tasmota/Arduino/releases/download/2.7.0/esp8266-2.7.0.zip
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
-DBEARSSL_SSL_BASIC
|
||||
|
|
|
@ -83,7 +83,7 @@ extra_scripts = ${scripts_defaults.extra_scripts}
|
|||
|
||||
[tasmota_stage]
|
||||
; *** Esp8266 core for Arduino version Tasmota stage
|
||||
platform = espressif8266@2.4.0
|
||||
platform = espressif8266@2.5.0
|
||||
platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#36e047e908cfa6eafaaf824988070b49f2c2ff2a
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
-DBEARSSL_SSL_BASIC
|
||||
|
@ -127,7 +127,7 @@ build_flags = ${esp82xx_defaults.build_flags}
|
|||
|
||||
[core_stage]
|
||||
; *** Esp8266 core for Arduino version latest development version
|
||||
platform = espressif8266@2.4.0
|
||||
platform = espressif8266@2.5.0
|
||||
platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
-DBEARSSL_SSL_BASIC
|
||||
|
|
|
@ -38,67 +38,67 @@ build_flags = ${common.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_I
|
|||
build_flags = ${common.build_flags} ${irremoteesp_full.build_flags}
|
||||
|
||||
[env:tasmota-BG]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=bg_BG
|
||||
|
||||
[env:tasmota-BR]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=pt_BR
|
||||
|
||||
[env:tasmota-CN]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=zh_CN
|
||||
|
||||
[env:tasmota-CZ]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=cs_CZ
|
||||
|
||||
[env:tasmota-DE]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=de_DE
|
||||
|
||||
[env:tasmota-ES]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=es-ES
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=es_ES
|
||||
|
||||
[env:tasmota-FR]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=fr_FR
|
||||
|
||||
[env:tasmota-GR]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=el_GR
|
||||
|
||||
[env:tasmota-HE]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=he-HE
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=he_HE
|
||||
|
||||
[env:tasmota-HU]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=hu_HU
|
||||
|
||||
[env:tasmota-IT]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=it_IT
|
||||
|
||||
[env:tasmota-KO]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=ko-KO
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=ko_KO
|
||||
|
||||
[env:tasmota-NL]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=nl_NL
|
||||
|
||||
[env:tasmota-PL]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=pl_PL
|
||||
|
||||
[env:tasmota-PT]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=pt_PT
|
||||
|
||||
[env:tasmota-RO]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=ro-RO
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=ro_RO
|
||||
|
||||
[env:tasmota-RU]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=ru_RU
|
||||
|
||||
[env:tasmota-SE]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=sv-SE
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=sv_SE
|
||||
|
||||
[env:tasmota-SK]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=sk-SK
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=sk_SK
|
||||
|
||||
[env:tasmota-TR]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=tr-TR
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=tr_TR
|
||||
|
||||
[env:tasmota-TW]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=zh_TW
|
||||
|
||||
[env:tasmota-UK]
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UA
|
||||
build_flags = ${common.build_flags} -DMY_LANGUAGE=uk_UA
|
||||
|
|
|
@ -47,88 +47,88 @@ build_flags = ${common32.build_flags} ${irremoteesp_full.build_flags
|
|||
|
||||
[env:tasmota32-BG]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=bg-BG
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=bg_BG
|
||||
|
||||
[env:tasmota32-BR]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=pt-BR
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=pt_BR
|
||||
|
||||
[env:tasmota32-CN]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=zh-CN
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=zh_CN
|
||||
|
||||
[env:tasmota32-CZ]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=cs-CZ
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=cs_CZ
|
||||
|
||||
[env:tasmota32-DE]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=de-DE
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=de_DE
|
||||
|
||||
[env:tasmota32-ES]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=es-ES
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=es_ES
|
||||
|
||||
[env:tasmota32-FR]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=fr-FR
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=fr_FR
|
||||
|
||||
[env:tasmota32-GR]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=el-GR
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=el_GR
|
||||
|
||||
[env:tasmota32-HE]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=he-HE
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=he_HE
|
||||
|
||||
[env:tasmota32-HU]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=hu-HU
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=hu_HU
|
||||
|
||||
[env:tasmota32-IT]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=it-IT
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=it_IT
|
||||
|
||||
[env:tasmota32-KO]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=ko-KO
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=ko_KO
|
||||
|
||||
[env:tasmota32-NL]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=nl-NL
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=nl_NL
|
||||
|
||||
[env:tasmota32-PL]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=pl-PL
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=pl_PL
|
||||
|
||||
[env:tasmota32-PT]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=pt-PT
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=pt_PT
|
||||
|
||||
[env:tasmota32-RO]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=ro-RO
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=ro_RO
|
||||
|
||||
[env:tasmota32-RU]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=ru-RU
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=ru_RU
|
||||
|
||||
[env:tasmota32-SE]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=sv-SE
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=sv_SE
|
||||
|
||||
[env:tasmota32-SK]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=sk-SK
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=sk_SK
|
||||
|
||||
[env:tasmota32-TR]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=tr-TR
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=tr_TR
|
||||
|
||||
[env:tasmota32-TW]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=zh-TW
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=zh_TW
|
||||
|
||||
[env:tasmota32-UK]
|
||||
extends = env:tasmota32
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=uk-UA
|
||||
build_flags = ${common32.build_flags} -DMY_LANGUAGE=uk_UA
|
||||
|
|
|
@ -617,7 +617,7 @@
|
|||
#define D_ASTERISK_PWD "****"
|
||||
|
||||
#ifndef MY_LANGUAGE
|
||||
#include "language/en-GB.h"
|
||||
#include "language/en_GB.h"
|
||||
#else
|
||||
#define QUOTEME(x) QUOTEME_1(x)
|
||||
#define QUOTEME_1(x) #x
|
||||
|
@ -625,7 +625,7 @@
|
|||
#include INCLUDE_FILE(MY_LANGUAGE)
|
||||
#endif
|
||||
#ifndef LANGUAGE_LCID
|
||||
#define LANGUAGE_LCID 2057 // en-GB
|
||||
#define LANGUAGE_LCID 2057 // en_GB
|
||||
#endif
|
||||
|
||||
// Common
|
||||
|
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -62,7 +62,7 @@
|
|||
#define D_BRIGHTLIGHT "Luminoso"
|
||||
#define D_BSSID "BSSId"
|
||||
#define D_BUTTON "Pulsante"
|
||||
#define D_BY "da" // Written by me
|
||||
#define D_BY "di" // Written by me
|
||||
#define D_BYTES "Byte"
|
||||
#define D_CELSIUS "Celsius"
|
||||
#define D_CHANNEL "Canale"
|
||||
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL - RX"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL - TX"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
||||
|
@ -773,26 +764,26 @@
|
|||
#define D_SCRIPT_UPLOAD_FILES "Upload file"
|
||||
|
||||
//xsns_67_as3935.ino
|
||||
#define D_AS3935_GAIN "gain:"
|
||||
#define D_AS3935_ENERGY "energy:"
|
||||
#define D_AS3935_DISTANCE "distance:"
|
||||
#define D_AS3935_DISTURBER "disturber:"
|
||||
#define D_AS3935_GAIN "guadagno:"
|
||||
#define D_AS3935_ENERGY "energia:"
|
||||
#define D_AS3935_DISTANCE "distanza:"
|
||||
#define D_AS3935_DISTURBER "disturbatore:"
|
||||
#define D_AS3935_VRMS "µVrms:"
|
||||
#define D_AS3935_APRX "aprx.:"
|
||||
#define D_AS3935_AWAY "away"
|
||||
#define D_AS3935_LIGHT "lightning"
|
||||
#define D_AS3935_OUT "lightning out of range"
|
||||
#define D_AS3935_NOT "distance not determined"
|
||||
#define D_AS3935_ABOVE "lightning overhead"
|
||||
#define D_AS3935_NOISE "noise detected"
|
||||
#define D_AS3935_DISTDET "disturber detected"
|
||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||
#define D_AS3935_NOMESS "listening..."
|
||||
#define D_AS3935_ON "On"
|
||||
#define D_AS3935_OFF "Off"
|
||||
#define D_AS3935_INDOORS "Indoors"
|
||||
#define D_AS3935_OUTDOORS "Outdoors"
|
||||
#define D_AS3935_CAL_FAIL "calibration failed"
|
||||
#define D_AS3935_CAL_OK "calibration set to:"
|
||||
#define D_AS3935_APRX "apross.:"
|
||||
#define D_AS3935_AWAY "lontano"
|
||||
#define D_AS3935_LIGHT "illuminazione"
|
||||
#define D_AS3935_OUT "illuminazione fuori intervallo"
|
||||
#define D_AS3935_NOT "distanza non determinata"
|
||||
#define D_AS3935_ABOVE "illuminazione ambientale"
|
||||
#define D_AS3935_NOISE "rilevato rumore"
|
||||
#define D_AS3935_DISTDET "rilevato disturbatore"
|
||||
#define D_AS3935_INTNOEV "Interrupt senza evento!"
|
||||
#define D_AS3935_NOMESS "in ascolto..."
|
||||
#define D_AS3935_ON "ON"
|
||||
#define D_AS3935_OFF "OFF"
|
||||
#define D_AS3935_INDOORS "Interno"
|
||||
#define D_AS3935_OUTDOORS "Esterno"
|
||||
#define D_AS3935_CAL_FAIL "calibrazione fallita"
|
||||
#define D_AS3935_CAL_OK "calibrazione impostata a:"
|
||||
|
||||
#endif // _LANGUAGE_IT_IT_H_
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -666,27 +666,18 @@
|
|||
#define D_SENSOR_HRXL_RX "HRXL Rx"
|
||||
#define D_SENSOR_ELECTRIQ_MOODL "MOODL Tx"
|
||||
#define D_SENSOR_AS3935 "AS3935"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Speed"
|
||||
#define D_SENSOR_WINDMETER_SPEED "WindMeter Spd"
|
||||
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
|
||||
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
|
||||
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
|
||||
#define D_GPIO_WEBCAM_SIOD "CAM_SIOD"
|
||||
#define D_GPIO_WEBCAM_SIOC "CAM_SIOC"
|
||||
#define D_GPIO_WEBCAM_Y9 "CAM_Y9"
|
||||
#define D_GPIO_WEBCAM_Y8 "CAM_Y8"
|
||||
#define D_GPIO_WEBCAM_Y7 "CAM_Y7"
|
||||
#define D_GPIO_WEBCAM_Y6 "CAM_Y6"
|
||||
#define D_GPIO_WEBCAM_Y5 "CAM_Y5"
|
||||
#define D_GPIO_WEBCAM_Y4 "CAM_Y4"
|
||||
#define D_GPIO_WEBCAM_Y3 "CAM_Y3"
|
||||
#define D_GPIO_WEBCAM_Y2 "CAM_Y2"
|
||||
#define D_GPIO_WEBCAM_DATA "CAM_DATA"
|
||||
#define D_GPIO_WEBCAM_VSYNC "CAM_VSYNC"
|
||||
#define D_GPIO_WEBCAM_HREF "CAM_HREF"
|
||||
#define D_GPIO_WEBCAM_PCLK "CAM_PCLK"
|
||||
#define D_GPIO_WEBCAM_PSCLK "CAM_PSCLK"
|
||||
#define D_GPIO_WEBCAM_HSD1 "CAM_HSD1"
|
||||
#define D_GPIO_WEBCAM_HSD2 "CAM_HSD2"
|
||||
#define D_GPIO_WEBCAM_HSD3 "CAM_HSD3"
|
||||
#define D_GPIO_WEBCAM_HSD "CAM_HSD"
|
||||
#define D_GPIO_WEBCAM_PSRCS "CAM_PSRCS"
|
||||
|
||||
// Units
|
|
@ -313,29 +313,29 @@
|
|||
|
||||
// -- Localization --------------------------------
|
||||
// If non selected the default en-GB will be used
|
||||
//#define MY_LANGUAGE bg-BG // Bulgarian in Bulgaria
|
||||
//#define MY_LANGUAGE cs-CZ // Czech in Czech
|
||||
//#define MY_LANGUAGE de-DE // German in Germany
|
||||
//#define MY_LANGUAGE el-GR // Greek in Greece
|
||||
//#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default
|
||||
//#define MY_LANGUAGE es-ES // Spanish in Spain
|
||||
//#define MY_LANGUAGE fr-FR // French in France
|
||||
//#define MY_LANGUAGE he-HE // Hebrew in Israel
|
||||
//#define MY_LANGUAGE hu-HU // Hungarian in Hungary
|
||||
//#define MY_LANGUAGE it-IT // Italian in Italy
|
||||
//#define MY_LANGUAGE ko-KO // Korean in Korea
|
||||
//#define MY_LANGUAGE nl-NL // Dutch in the Netherlands
|
||||
//#define MY_LANGUAGE pl-PL // Polish in Poland
|
||||
//#define MY_LANGUAGE pt-BR // Portuguese in Brazil
|
||||
//#define MY_LANGUAGE pt-PT // Portuguese in Portugal
|
||||
//#define MY_LANGUAGE ro-RO // Romanian in Romania
|
||||
//#define MY_LANGUAGE ru-RU // Russian in Russia
|
||||
//#define MY_LANGUAGE sk-SK // Slovak in Slovakia
|
||||
//#define MY_LANGUAGE sv-SE // Swedish in Sweden
|
||||
//#define MY_LANGUAGE tr-TR // Turkish in Turkey
|
||||
//#define MY_LANGUAGE uk-UA // Ukrainian in Ukraine
|
||||
//#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China
|
||||
//#define MY_LANGUAGE zh-TW // Chinese (Traditional) in Taiwan
|
||||
//#define MY_LANGUAGE bg_BG // Bulgarian in Bulgaria
|
||||
//#define MY_LANGUAGE cs_CZ // Czech in Czech
|
||||
//#define MY_LANGUAGE de_DE // German in Germany
|
||||
//#define MY_LANGUAGE el_GR // Greek in Greece
|
||||
//#define MY_LANGUAGE en_GB // English in Great Britain. Enabled by Default
|
||||
//#define MY_LANGUAGE es_ES // Spanish in Spain
|
||||
//#define MY_LANGUAGE fr_FR // French in France
|
||||
//#define MY_LANGUAGE he_HE // Hebrew in Israel
|
||||
//#define MY_LANGUAGE hu_HU // Hungarian in Hungary
|
||||
//#define MY_LANGUAGE it_IT // Italian in Italy
|
||||
//#define MY_LANGUAGE ko_KO // Korean in Korea
|
||||
//#define MY_LANGUAGE nl_NL // Dutch in the Netherlands
|
||||
//#define MY_LANGUAGE pl_PL // Polish in Poland
|
||||
//#define MY_LANGUAGE pt_BR // Portuguese in Brazil
|
||||
//#define MY_LANGUAGE pt_PT // Portuguese in Portugal
|
||||
//#define MY_LANGUAGE ro_RO // Romanian in Romania
|
||||
//#define MY_LANGUAGE ru_RU // Russian in Russia
|
||||
//#define MY_LANGUAGE sk_SK // Slovak in Slovakia
|
||||
//#define MY_LANGUAGE sv_SE // Swedish in Sweden
|
||||
//#define MY_LANGUAGE tr_TR // Turkish in Turkey
|
||||
//#define MY_LANGUAGE uk_UA // Ukrainian in Ukraine
|
||||
//#define MY_LANGUAGE zh_CN // Chinese (Simplified) in China
|
||||
//#define MY_LANGUAGE zh_TW // Chinese (Traditional) in Taiwan
|
||||
|
||||
// -- Wifi Config tools ---------------------------
|
||||
#define WIFI_SOFT_AP_CHANNEL 1 // Soft Access Point Channel number between 1 and 13 as used by Wifi Manager web GUI
|
||||
|
|
|
@ -481,6 +481,9 @@ struct {
|
|||
uint8_t shutter_position[MAX_SHUTTERS]; // E80
|
||||
uint8_t shutter_startrelay[MAX_SHUTTERS]; // E84
|
||||
uint8_t pcf8574_config[MAX_PCF8574]; // E88
|
||||
|
||||
uint8_t free_e8c[4]; // E8C
|
||||
|
||||
uint16_t dimmer_hw_min; // E90
|
||||
uint16_t dimmer_hw_max; // E92
|
||||
uint32_t deepsleep; // E94
|
||||
|
|
|
@ -715,6 +715,12 @@ void SettingsDefaultSet2(void)
|
|||
{
|
||||
memset((char*)&Settings +16, 0x00, sizeof(Settings) -16);
|
||||
|
||||
// this little trick allows GCC to optimize the assignment by grouping values and doing only ORs
|
||||
SysBitfield flag = { 0 };
|
||||
SysBitfield2 flag2 = { 0 };
|
||||
SysBitfield3 flag3 = { 0 };
|
||||
SysBitfield4 flag4 = { 0 };
|
||||
|
||||
#ifdef ESP8266
|
||||
// Settings.config_version = 0; // ESP8266 (Has been 0 for long time)
|
||||
#endif // ESP8266
|
||||
|
@ -722,13 +728,13 @@ void SettingsDefaultSet2(void)
|
|||
Settings.config_version = 1; // ESP32
|
||||
#endif // ESP32
|
||||
|
||||
Settings.flag.stop_flash_rotate = APP_FLASH_CYCLE;
|
||||
Settings.flag.global_state = APP_ENABLE_LEDLINK;
|
||||
Settings.flag3.sleep_normal = APP_NORMAL_SLEEP;
|
||||
Settings.flag3.no_power_feedback = APP_NO_RELAY_SCAN;
|
||||
Settings.flag3.fast_power_cycle_disable = APP_DISABLE_POWERCYCLE;
|
||||
Settings.flag3.bootcount_update = DEEPSLEEP_BOOTCOUNT;
|
||||
Settings.flag3.compatibility_check = OTA_COMPATIBILITY;
|
||||
flag.stop_flash_rotate |= APP_FLASH_CYCLE;
|
||||
flag.global_state |= APP_ENABLE_LEDLINK;
|
||||
flag3.sleep_normal |= APP_NORMAL_SLEEP;
|
||||
flag3.no_power_feedback |= APP_NO_RELAY_SCAN;
|
||||
flag3.fast_power_cycle_disable |= APP_DISABLE_POWERCYCLE;
|
||||
flag3.bootcount_update |= DEEPSLEEP_BOOTCOUNT;
|
||||
flag3.compatibility_check |= OTA_COMPATIBILITY;
|
||||
Settings.save_data = SAVE_DATA;
|
||||
Settings.param[P_BACKLOG_DELAY] = MIN_BACKLOG_DELAY;
|
||||
Settings.param[P_BOOT_LOOP_OFFSET] = BOOT_LOOP_OFFSET; // SetOption36
|
||||
|
@ -739,7 +745,7 @@ void SettingsDefaultSet2(void)
|
|||
}
|
||||
|
||||
// Module
|
||||
// Settings.flag.interlock = 0;
|
||||
// flag.interlock |= 0;
|
||||
Settings.interlock[0] = 0xFF; // Legacy support using all relays in one interlock group
|
||||
Settings.module = MODULE;
|
||||
ModuleDefault(WEMOS);
|
||||
|
@ -751,7 +757,7 @@ void SettingsDefaultSet2(void)
|
|||
SettingsUpdateText(SET_OTAURL, PSTR(OTA_URL));
|
||||
|
||||
// Power
|
||||
Settings.flag.save_state = SAVE_STATE;
|
||||
flag.save_state |= SAVE_STATE;
|
||||
Settings.power = APP_POWER;
|
||||
Settings.poweronstate = APP_POWERON_STATE;
|
||||
Settings.blinktime = APP_BLINKTIME;
|
||||
|
@ -769,8 +775,8 @@ void SettingsDefaultSet2(void)
|
|||
Settings.seriallog_level = SERIAL_LOG_LEVEL;
|
||||
|
||||
// Wifi
|
||||
Settings.flag3.use_wifi_scan = WIFI_SCAN_AT_RESTART;
|
||||
Settings.flag3.use_wifi_rescan = WIFI_SCAN_REGULARLY;
|
||||
flag3.use_wifi_scan |= WIFI_SCAN_AT_RESTART;
|
||||
flag3.use_wifi_rescan |= WIFI_SCAN_REGULARLY;
|
||||
Settings.wifi_output_power = 170;
|
||||
Settings.param[P_ARP_GRATUITOUS] = WIFI_ARP_INTERVAL;
|
||||
ParseIp(&Settings.ip_address[0], WIFI_IP_ADDRESS);
|
||||
|
@ -791,38 +797,38 @@ void SettingsDefaultSet2(void)
|
|||
Settings.syslog_level = SYS_LOG_LEVEL;
|
||||
|
||||
// Webserver
|
||||
Settings.flag2.emulation = EMULATION;
|
||||
Settings.flag3.gui_hostname_ip = GUI_SHOW_HOSTNAME;
|
||||
Settings.flag3.mdns_enabled = MDNS_ENABLED;
|
||||
flag2.emulation |= EMULATION;
|
||||
flag3.gui_hostname_ip |= GUI_SHOW_HOSTNAME;
|
||||
flag3.mdns_enabled |= MDNS_ENABLED;
|
||||
Settings.webserver = WEB_SERVER;
|
||||
Settings.weblog_level = WEB_LOG_LEVEL;
|
||||
SettingsUpdateText(SET_WEBPWD, PSTR(WEB_PASSWORD));
|
||||
SettingsUpdateText(SET_CORS, PSTR(CORS_DOMAIN));
|
||||
|
||||
// Button
|
||||
Settings.flag.button_restrict = KEY_DISABLE_MULTIPRESS;
|
||||
Settings.flag.button_swap = KEY_SWAP_DOUBLE_PRESS;
|
||||
Settings.flag.button_single = KEY_ONLY_SINGLE_PRESS;
|
||||
flag.button_restrict |= KEY_DISABLE_MULTIPRESS;
|
||||
flag.button_swap |= KEY_SWAP_DOUBLE_PRESS;
|
||||
flag.button_single |= KEY_ONLY_SINGLE_PRESS;
|
||||
Settings.param[P_HOLD_TIME] = KEY_HOLD_TIME; // Default 4 seconds hold time
|
||||
|
||||
// Switch
|
||||
for (uint32_t i = 0; i < MAX_SWITCHES; i++) { Settings.switchmode[i] = SWITCH_MODE; }
|
||||
|
||||
// MQTT
|
||||
Settings.flag.mqtt_enabled = MQTT_USE;
|
||||
Settings.flag.mqtt_response = MQTT_RESULT_COMMAND;
|
||||
Settings.flag.mqtt_offline = MQTT_LWT_MESSAGE;
|
||||
Settings.flag.mqtt_power_retain = MQTT_POWER_RETAIN;
|
||||
Settings.flag.mqtt_button_retain = MQTT_BUTTON_RETAIN;
|
||||
Settings.flag.mqtt_switch_retain = MQTT_SWITCH_RETAIN;
|
||||
Settings.flag.mqtt_sensor_retain = MQTT_SENSOR_RETAIN;
|
||||
// Settings.flag.mqtt_serial = 0;
|
||||
Settings.flag.device_index_enable = MQTT_POWER_FORMAT;
|
||||
Settings.flag3.time_append_timezone = MQTT_APPEND_TIMEZONE;
|
||||
Settings.flag3.button_switch_force_local = MQTT_BUTTON_SWITCH_FORCE_LOCAL;
|
||||
Settings.flag3.no_hold_retain = MQTT_NO_HOLD_RETAIN;
|
||||
Settings.flag3.use_underscore = MQTT_INDEX_SEPARATOR;
|
||||
Settings.flag3.grouptopic_mode = MQTT_GROUPTOPIC_FORMAT;
|
||||
flag.mqtt_enabled |= MQTT_USE;
|
||||
flag.mqtt_response |= MQTT_RESULT_COMMAND;
|
||||
flag.mqtt_offline |= MQTT_LWT_MESSAGE;
|
||||
flag.mqtt_power_retain |= MQTT_POWER_RETAIN;
|
||||
flag.mqtt_button_retain |= MQTT_BUTTON_RETAIN;
|
||||
flag.mqtt_switch_retain |= MQTT_SWITCH_RETAIN;
|
||||
flag.mqtt_sensor_retain |= MQTT_SENSOR_RETAIN;
|
||||
// flag.mqtt_serial |= 0;
|
||||
flag.device_index_enable |= MQTT_POWER_FORMAT;
|
||||
flag3.time_append_timezone |= MQTT_APPEND_TIMEZONE;
|
||||
flag3.button_switch_force_local |= MQTT_BUTTON_SWITCH_FORCE_LOCAL;
|
||||
flag3.no_hold_retain |= MQTT_NO_HOLD_RETAIN;
|
||||
flag3.use_underscore |= MQTT_INDEX_SEPARATOR;
|
||||
flag3.grouptopic_mode |= MQTT_GROUPTOPIC_FORMAT;
|
||||
SettingsUpdateText(SET_MQTT_HOST, MQTT_HOST);
|
||||
Settings.mqtt_port = MQTT_PORT;
|
||||
SettingsUpdateText(SET_MQTT_CLIENT, MQTT_CLIENT_ID);
|
||||
|
@ -856,13 +862,13 @@ void SettingsDefaultSet2(void)
|
|||
Settings.mqttlog_level = MQTT_LOG_LEVEL;
|
||||
|
||||
// Energy
|
||||
Settings.flag.no_power_on_check = ENERGY_VOLTAGE_ALWAYS;
|
||||
Settings.flag2.current_resolution = 3;
|
||||
// Settings.flag2.voltage_resolution = 0;
|
||||
// Settings.flag2.wattage_resolution = 0;
|
||||
Settings.flag2.energy_resolution = ENERGY_RESOLUTION;
|
||||
Settings.flag3.dds2382_model = ENERGY_DDS2382_MODE;
|
||||
Settings.flag3.hardware_energy_total = ENERGY_HARDWARE_TOTALS;
|
||||
flag.no_power_on_check |= ENERGY_VOLTAGE_ALWAYS;
|
||||
flag2.current_resolution |= 3;
|
||||
// flag2.voltage_resolution |= 0;
|
||||
// flag2.wattage_resolution |= 0;
|
||||
flag2.energy_resolution |= ENERGY_RESOLUTION;
|
||||
flag3.dds2382_model |= ENERGY_DDS2382_MODE;
|
||||
flag3.hardware_energy_total |= ENERGY_HARDWARE_TOTALS;
|
||||
Settings.param[P_MAX_POWER_RETRY] = MAX_POWER_RETRY;
|
||||
// Settings.energy_power_delta = 0;
|
||||
Settings.energy_power_calibration = HLW_PREF_PULSE;
|
||||
|
@ -892,12 +898,12 @@ void SettingsDefaultSet2(void)
|
|||
Settings.param[P_OVER_TEMP] = ENERGY_OVERTEMP;
|
||||
|
||||
// IRRemote
|
||||
Settings.flag.ir_receive_decimal = IR_DATA_RADIX;
|
||||
Settings.flag3.receive_raw = IR_ADD_RAW_DATA;
|
||||
flag.ir_receive_decimal |= IR_DATA_RADIX;
|
||||
flag3.receive_raw |= IR_ADD_RAW_DATA;
|
||||
Settings.param[P_IR_UNKNOW_THRESHOLD] = IR_RCV_MIN_UNKNOWN_SIZE;
|
||||
|
||||
// RF Bridge
|
||||
Settings.flag.rf_receive_decimal = RF_DATA_RADIX;
|
||||
flag.rf_receive_decimal |= RF_DATA_RADIX;
|
||||
// for (uint32_t i = 0; i < 17; i++) { Settings.rf_code[i][0] = 0; }
|
||||
memcpy_P(Settings.rf_code[0], kDefaultRfCode, 9);
|
||||
|
||||
|
@ -913,43 +919,43 @@ void SettingsDefaultSet2(void)
|
|||
// }
|
||||
|
||||
// Sensor
|
||||
Settings.flag.temperature_conversion = TEMP_CONVERSION;
|
||||
Settings.flag.pressure_conversion = PRESSURE_CONVERSION;
|
||||
Settings.flag2.pressure_resolution = PRESSURE_RESOLUTION;
|
||||
Settings.flag2.humidity_resolution = HUMIDITY_RESOLUTION;
|
||||
Settings.flag2.temperature_resolution = TEMP_RESOLUTION;
|
||||
Settings.flag3.ds18x20_internal_pullup = DS18X20_PULL_UP;
|
||||
Settings.flag3.counter_reset_on_tele = COUNTER_RESET;
|
||||
flag.temperature_conversion |= TEMP_CONVERSION;
|
||||
flag.pressure_conversion |= PRESSURE_CONVERSION;
|
||||
flag2.pressure_resolution |= PRESSURE_RESOLUTION;
|
||||
flag2.humidity_resolution |= HUMIDITY_RESOLUTION;
|
||||
flag2.temperature_resolution |= TEMP_RESOLUTION;
|
||||
flag3.ds18x20_internal_pullup |= DS18X20_PULL_UP;
|
||||
flag3.counter_reset_on_tele |= COUNTER_RESET;
|
||||
// Settings.altitude = 0;
|
||||
|
||||
// Rules
|
||||
// Settings.rule_enabled = 0;
|
||||
// Settings.rule_once = 0;
|
||||
// for (uint32_t i = 1; i < MAX_RULE_SETS; i++) { Settings.rules[i][0] = '\0'; }
|
||||
Settings.flag2.calc_resolution = CALC_RESOLUTION;
|
||||
flag2.calc_resolution |= CALC_RESOLUTION;
|
||||
|
||||
// Timer
|
||||
Settings.flag3.timers_enable = TIMERS_ENABLED;
|
||||
flag3.timers_enable |= TIMERS_ENABLED;
|
||||
|
||||
// Home Assistant
|
||||
Settings.flag.hass_light = HASS_AS_LIGHT;
|
||||
Settings.flag.hass_discovery = HOME_ASSISTANT_DISCOVERY_ENABLE;
|
||||
Settings.flag3.hass_tele_on_power = TELE_ON_POWER;
|
||||
flag.hass_light |= HASS_AS_LIGHT;
|
||||
flag.hass_discovery |= HOME_ASSISTANT_DISCOVERY_ENABLE;
|
||||
flag3.hass_tele_on_power |= TELE_ON_POWER;
|
||||
|
||||
// Knx
|
||||
Settings.flag.knx_enabled = KNX_ENABLED;
|
||||
Settings.flag.knx_enable_enhancement = KNX_ENHANCED;
|
||||
flag.knx_enabled |= KNX_ENABLED;
|
||||
flag.knx_enable_enhancement |= KNX_ENHANCED;
|
||||
|
||||
// Light
|
||||
Settings.flag.pwm_control = LIGHT_MODE;
|
||||
Settings.flag.ws_clock_reverse = LIGHT_CLOCK_DIRECTION;
|
||||
Settings.flag.light_signal = LIGHT_PAIRS_CO2;
|
||||
Settings.flag.not_power_linked = LIGHT_POWER_CONTROL;
|
||||
Settings.flag.decimal_text = LIGHT_COLOR_RADIX;
|
||||
Settings.flag3.pwm_multi_channels = LIGHT_CHANNEL_MODE;
|
||||
Settings.flag3.slider_dimmer_stay_on = LIGHT_SLIDER_POWER;
|
||||
Settings.flag4.alexa_ct_range = LIGHT_ALEXA_CT_RANGE;
|
||||
Settings.flag4.pwm_ct_mode = LIGHT_PWM_CT_MODE;
|
||||
flag.pwm_control |= LIGHT_MODE;
|
||||
flag.ws_clock_reverse |= LIGHT_CLOCK_DIRECTION;
|
||||
flag.light_signal |= LIGHT_PAIRS_CO2;
|
||||
flag.not_power_linked |= LIGHT_POWER_CONTROL;
|
||||
flag.decimal_text |= LIGHT_COLOR_RADIX;
|
||||
flag3.pwm_multi_channels |= LIGHT_CHANNEL_MODE;
|
||||
flag3.slider_dimmer_stay_on |= LIGHT_SLIDER_POWER;
|
||||
flag4.alexa_ct_range |= LIGHT_ALEXA_CT_RANGE;
|
||||
flag4.pwm_ct_mode |= LIGHT_PWM_CT_MODE;
|
||||
|
||||
Settings.pwm_frequency = PWM_FREQ;
|
||||
Settings.pwm_range = PWM_RANGE;
|
||||
|
@ -1036,13 +1042,18 @@ void SettingsDefaultSet2(void)
|
|||
SettingsEnableAllI2cDrivers();
|
||||
|
||||
// Tuya
|
||||
Settings.flag3.tuya_apply_o20 = TUYA_SETOPTION_20;
|
||||
Settings.flag3.tuya_serial_mqtt_publish = MQTT_TUYA_RECEIVED;
|
||||
flag3.tuya_apply_o20 |= TUYA_SETOPTION_20;
|
||||
flag3.tuya_serial_mqtt_publish |= MQTT_TUYA_RECEIVED;
|
||||
|
||||
Settings.flag3.buzzer_enable = BUZZER_ENABLE;
|
||||
Settings.flag3.shutter_mode = SHUTTER_SUPPORT;
|
||||
Settings.flag3.pcf8574_ports_inverted = PCF8574_INVERT_PORTS;
|
||||
Settings.flag4.zigbee_use_names = ZIGBEE_FRIENDLY_NAMES;
|
||||
flag3.buzzer_enable |= BUZZER_ENABLE;
|
||||
flag3.shutter_mode |= SHUTTER_SUPPORT;
|
||||
flag3.pcf8574_ports_inverted |= PCF8574_INVERT_PORTS;
|
||||
flag4.zigbee_use_names |= ZIGBEE_FRIENDLY_NAMES;
|
||||
|
||||
Settings.flag = flag;
|
||||
Settings.flag2 = flag2;
|
||||
Settings.flag3 = flag3;
|
||||
Settings.flag4 = flag4;
|
||||
}
|
||||
|
||||
/********************************************************************************************/
|
||||
|
|
|
@ -87,10 +87,7 @@ void ResponseCmndIdxNumber(int value)
|
|||
|
||||
void ResponseCmndChar_P(const char* value)
|
||||
{
|
||||
size_t buf_size = strlen_P(value);
|
||||
char buf[buf_size + 1];
|
||||
strcpy_P(buf, value);
|
||||
Response_P(S_JSON_COMMAND_SVALUE, XdrvMailbox.command, buf);
|
||||
Response_P(S_JSON_COMMAND_SVALUE, XdrvMailbox.command, value);
|
||||
}
|
||||
|
||||
void ResponseCmndChar(const char* value)
|
||||
|
|
|
@ -68,7 +68,7 @@ const uint8_t MAX_XDRV_DRIVERS = 96; // Max number of allowed driver driv
|
|||
const uint8_t MAX_XSNS_DRIVERS = 96; // Max number of allowed sensor drivers
|
||||
const uint8_t MAX_I2C_DRIVERS = 96; // Max number of allowed i2c drivers
|
||||
const uint8_t MAX_SHUTTERS = 4; // Max number of shutters
|
||||
const uint8_t MAX_PCF8574 = 8; // Max number of PCF8574 devices
|
||||
const uint8_t MAX_PCF8574 = 4; // Max number of PCF8574 devices
|
||||
const uint8_t MAX_RULE_SETS = 3; // Max number of rule sets of size 512 characters
|
||||
const uint16_t MAX_RULE_SIZE = 512; // Max number of characters in rules
|
||||
|
||||
|
|
|
@ -118,11 +118,13 @@ enum UserSelectablePins {
|
|||
ADC0_BUTTON, ADC0_BUTTON_INV, // Analog Button
|
||||
ADC0_RANGE, // Analog Range
|
||||
ADC0_CT_POWER, // ANalog Current
|
||||
GPIO_WEBCAM_PWDN, GPIO_WEBCAM_RESET, GPIO_WEBCAM_XCLK, GPIO_WEBCAM_SIOD, GPIO_WEBCAM_SIOC, // Webcam
|
||||
GPIO_WEBCAM_Y9, GPIO_WEBCAM_Y8, GPIO_WEBCAM_Y7, GPIO_WEBCAM_Y6,
|
||||
GPIO_WEBCAM_Y5, GPIO_WEBCAM_Y4, GPIO_WEBCAM_Y3, GPIO_WEBCAM_Y2,
|
||||
GPIO_WEBCAM_VSYNC, GPIO_WEBCAM_HREF, GPIO_WEBCAM_PCLK, GPIO_WEBCAM_PSCLK,
|
||||
GPIO_WEBCAM_HSD1, GPIO_WEBCAM_HSD2, GPIO_WEBCAM_HSD3, GPIO_WEBCAM_PSRCS,
|
||||
GPIO_WEBCAM_PWDN, GPIO_WEBCAM_RESET, GPIO_WEBCAM_XCLK, // Webcam
|
||||
GPIO_WEBCAM_SIOD, GPIO_WEBCAM_SIOC, // Webcam I2C
|
||||
GPIO_WEBCAM_DATA,
|
||||
GPIO_WEBCAM_VSYNC, GPIO_WEBCAM_HREF, GPIO_WEBCAM_PCLK,
|
||||
GPIO_WEBCAM_PSCLK,
|
||||
GPIO_WEBCAM_HSD,
|
||||
GPIO_WEBCAM_PSRCS,
|
||||
GPIO_SENSOR_END };
|
||||
|
||||
enum ProgramSelectablePins {
|
||||
|
@ -203,16 +205,21 @@ const char kSensorNames[] PROGMEM =
|
|||
D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|"
|
||||
D_RANGE "|"
|
||||
D_CT_POWER "|"
|
||||
D_GPIO_WEBCAM_PWDN "|" D_GPIO_WEBCAM_RESET "|" D_GPIO_WEBCAM_XCLK "|" D_GPIO_WEBCAM_SIOD "|" D_GPIO_WEBCAM_SIOC "|"
|
||||
D_GPIO_WEBCAM_Y9 "|" D_GPIO_WEBCAM_Y8 "|" D_GPIO_WEBCAM_Y7 "|" D_GPIO_WEBCAM_Y6 "|"
|
||||
D_GPIO_WEBCAM_Y5 "|" D_GPIO_WEBCAM_Y4 "|" D_GPIO_WEBCAM_Y3 "|" D_GPIO_WEBCAM_Y2 "|"
|
||||
D_GPIO_WEBCAM_VSYNC "|" D_GPIO_WEBCAM_HREF "|" D_GPIO_WEBCAM_PCLK "|" D_GPIO_WEBCAM_PSCLK "|"
|
||||
D_GPIO_WEBCAM_HSD1 "|" D_GPIO_WEBCAM_HSD2 "|" D_GPIO_WEBCAM_HSD3 "|" D_GPIO_WEBCAM_PSRCS
|
||||
D_GPIO_WEBCAM_PWDN "|" D_GPIO_WEBCAM_RESET "|" D_GPIO_WEBCAM_XCLK "|"
|
||||
D_GPIO_WEBCAM_SIOD "|" D_GPIO_WEBCAM_SIOC "|"
|
||||
D_GPIO_WEBCAM_DATA "|"
|
||||
D_GPIO_WEBCAM_VSYNC "|" D_GPIO_WEBCAM_HREF "|" D_GPIO_WEBCAM_PCLK "|"
|
||||
D_GPIO_WEBCAM_PSCLK "|"
|
||||
D_GPIO_WEBCAM_HSD "|"
|
||||
D_GPIO_WEBCAM_PSRCS
|
||||
;
|
||||
|
||||
const char kSensorNamesFixed[] PROGMEM =
|
||||
D_SENSOR_USER;
|
||||
|
||||
#define MAX_WEBCAM_DATA 8
|
||||
#define MAX_WEBCAM_HSD 3
|
||||
|
||||
const uint16_t kGpioNiceList[] PROGMEM = {
|
||||
GPIO_NONE, // Not used
|
||||
AGPIO(GPIO_KEY1) + MAX_KEYS, // Buttons
|
||||
|
@ -516,21 +523,29 @@ const uint16_t kGpioNiceList[] PROGMEM = {
|
|||
AGPIO(GPIO_WEBCAM_XCLK),
|
||||
AGPIO(GPIO_WEBCAM_SIOD),
|
||||
AGPIO(GPIO_WEBCAM_SIOC),
|
||||
AGPIO(GPIO_WEBCAM_Y9),
|
||||
AGPIO(GPIO_WEBCAM_Y8),
|
||||
AGPIO(GPIO_WEBCAM_Y7),
|
||||
AGPIO(GPIO_WEBCAM_Y6),
|
||||
AGPIO(GPIO_WEBCAM_Y5),
|
||||
AGPIO(GPIO_WEBCAM_Y4),
|
||||
AGPIO(GPIO_WEBCAM_Y3),
|
||||
AGPIO(GPIO_WEBCAM_Y2),
|
||||
|
||||
// AGPIO(GPIO_WEBCAM_Y9),
|
||||
// AGPIO(GPIO_WEBCAM_Y8),
|
||||
// AGPIO(GPIO_WEBCAM_Y7),
|
||||
// AGPIO(GPIO_WEBCAM_Y6),
|
||||
// AGPIO(GPIO_WEBCAM_Y5),
|
||||
// AGPIO(GPIO_WEBCAM_Y4),
|
||||
// AGPIO(GPIO_WEBCAM_Y3),
|
||||
// AGPIO(GPIO_WEBCAM_Y2),
|
||||
|
||||
AGPIO(GPIO_WEBCAM_DATA) + MAX_WEBCAM_DATA,
|
||||
|
||||
AGPIO(GPIO_WEBCAM_VSYNC),
|
||||
AGPIO(GPIO_WEBCAM_HREF),
|
||||
AGPIO(GPIO_WEBCAM_PCLK),
|
||||
AGPIO(GPIO_WEBCAM_PSCLK),
|
||||
AGPIO(GPIO_WEBCAM_HSD1),
|
||||
AGPIO(GPIO_WEBCAM_HSD2),
|
||||
AGPIO(GPIO_WEBCAM_HSD3),
|
||||
|
||||
// AGPIO(GPIO_WEBCAM_HSD1),
|
||||
// AGPIO(GPIO_WEBCAM_HSD2),
|
||||
// AGPIO(GPIO_WEBCAM_HSD3),
|
||||
|
||||
AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD,
|
||||
|
||||
AGPIO(GPIO_WEBCAM_PSRCS),
|
||||
#endif
|
||||
};
|
||||
|
|
|
@ -246,13 +246,15 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM =
|
|||
"q.appendChild(o);"
|
||||
"}"
|
||||
"function ot(g,s){" // g = id and name, s = value
|
||||
"var p,l,t=qs('#h'+g),u=s&0x001f;"
|
||||
"var a=s&0xffe0,b=0,c,p,l,t=qs('#h'+g),u=s&0x001f;"
|
||||
"l=t.options.length;" // Remove current options
|
||||
"for(i=l;i;i--){p=t.options[i-1].parentNode;p.removeChild(t.options[i-1]);}"
|
||||
"l=hs.length;" // Find max indexes for s
|
||||
"for(i=0;i<l;i++){c=hs[i]&0xffe0;if(a==c){b=hs[i]&0x001f;break;}}"
|
||||
"s>>=5;" // Add options
|
||||
"for(i=1;i<=hs[s];i++){ce((i<10)?(' '+i):i,t);}"
|
||||
"for(i=1;i<=b;i++){ce((i<10)?(' '+i):i,t);}"
|
||||
"eb('h'+g).value=u+1;" // Set selected value
|
||||
"t.style.visibility=(hs[s]>0)?'':'hidden';"
|
||||
"t.style.visibility=(b>0)?'':'hidden';"
|
||||
"}"
|
||||
"function sk(s,g){" // s = value, g = id and name
|
||||
"var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\")</option>\");"
|
||||
|
@ -842,9 +844,7 @@ void WSContentStart_P(const char* title, bool auth)
|
|||
WSContentBegin(200, CT_HTML);
|
||||
|
||||
if (title != nullptr) {
|
||||
char ctitle[strlen_P(title) +1];
|
||||
strcpy_P(ctitle, title); // Get title from flash to RAM
|
||||
WSContentSend_P(HTTP_HEADER1, SettingsText(SET_FRIENDLYNAME1), ctitle);
|
||||
WSContentSend_P(HTTP_HEADER1, SettingsText(SET_FRIENDLYNAME1), title);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1469,28 +1469,14 @@ void HandleTemplateConfiguration(void)
|
|||
#ifdef ESP32
|
||||
WSContentSend_P(PSTR("hs=["));
|
||||
bool first_done = false;
|
||||
/*
|
||||
for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) {
|
||||
uint32_t midx = pgm_read_word(kGpioNiceList + i) & 0x001F;
|
||||
for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { // hs=[36,68,100,132,168,200,232,264,292,324,356,388,421,453];
|
||||
uint32_t midx = pgm_read_word(kGpioNiceList + i);
|
||||
if (midx & 0x001F) {
|
||||
if (first_done) { WSContentSend_P(PSTR(",")); }
|
||||
WSContentSend_P(PSTR("%d"), midx);
|
||||
first_done = true;
|
||||
}
|
||||
*/
|
||||
uint32_t j = 0;
|
||||
for (uint32_t i = 0; i < GPIO_SENSOR_END; i++) {
|
||||
uint32_t midx = pgm_read_word(kGpioNiceList + j);
|
||||
if ((midx >> 5) != i) {
|
||||
midx = 0;
|
||||
} else {
|
||||
midx &= 0x001F;
|
||||
j++;
|
||||
}
|
||||
if (first_done) { WSContentSend_P(PSTR(",")); }
|
||||
WSContentSend_P(PSTR("%d"), midx);
|
||||
first_done = true;
|
||||
}
|
||||
|
||||
WSContentSend_P(PSTR("];"));
|
||||
#endif // ESP32
|
||||
|
||||
|
@ -1651,28 +1637,14 @@ void HandleModuleConfiguration(void)
|
|||
#ifdef ESP32
|
||||
WSContentSend_P(PSTR("hs=["));
|
||||
bool first_done = false;
|
||||
/*
|
||||
for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) {
|
||||
midx = pgm_read_word(kGpioNiceList + i) & 0x001F;
|
||||
for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { // hs=[36,68,100,132,168,200,232,264,292,324,356,388,421,453];
|
||||
midx = pgm_read_word(kGpioNiceList + i);
|
||||
if (midx & 0x001F) {
|
||||
if (first_done) { WSContentSend_P(PSTR(",")); }
|
||||
WSContentSend_P(PSTR("%d"), midx);
|
||||
first_done = true;
|
||||
}
|
||||
*/
|
||||
uint32_t j = 0;
|
||||
for (uint32_t i = 0; i < GPIO_SENSOR_END; i++) {
|
||||
midx = pgm_read_word(kGpioNiceList + j);
|
||||
if ((midx >> 5) != i) {
|
||||
midx = 0;
|
||||
} else {
|
||||
midx &= 0x001F;
|
||||
j++;
|
||||
}
|
||||
if (first_done) { WSContentSend_P(PSTR(",")); }
|
||||
WSContentSend_P(PSTR("%d"), midx);
|
||||
first_done = true;
|
||||
}
|
||||
|
||||
WSContentSend_P(PSTR("];"));
|
||||
#endif // ESP32
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ void DomoticzUpdateFanState(void)
|
|||
void MqttPublishDomoticzPowerState(uint8_t device)
|
||||
{
|
||||
if (Settings.flag.mqtt_enabled) { // SetOption3 - Enable MQTT
|
||||
if ((device < 1) || (device > devices_present)) { device = 1; }
|
||||
if ((device < 1) || (device > devices_present) || (device > MAX_DOMOTICZ_IDX)) { device = 1; }
|
||||
if (Settings.domoticz_relay_idx[device -1]) {
|
||||
#ifdef USE_SHUTTER
|
||||
if (domoticz_is_shutter) {
|
||||
|
|
|
@ -70,6 +70,8 @@ uint32_t DecodeLightId(uint32_t hue_id);
|
|||
|
||||
#include "FS.h"
|
||||
#include "SPIFFS.h"
|
||||
|
||||
|
||||
void SaveFile(const char *name,const uint8_t *buf,uint32_t len) {
|
||||
File file = SPIFFS.open(name, FILE_WRITE);
|
||||
if (!file) return;
|
||||
|
@ -2048,7 +2050,14 @@ chknext:
|
|||
fvar=wc_set_motion_detect(fvar2);
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef USE_FACE_DETECT
|
||||
case 7:
|
||||
{ float fvar2;
|
||||
lp=GetNumericResult(lp,OPER_EQU,&fvar2,0);
|
||||
fvar=wc_set_face_detect(fvar2);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
fvar=0;
|
||||
}
|
||||
|
@ -5224,10 +5233,11 @@ bool Xdrv10(uint8_t function)
|
|||
case FUNC_WEB_ADD_BUTTON:
|
||||
WSContentSend_P(HTTP_BTN_MENU_RULES);
|
||||
break;
|
||||
#ifdef USE_SCRIPT_WEB_DISPLAY
|
||||
case FUNC_WEB_ADD_MAIN_BUTTON:
|
||||
ScriptWebShow('&');
|
||||
break;
|
||||
|
||||
#endif // USE_SCRIPT_WEB_DISPLAY
|
||||
case FUNC_WEB_ADD_HANDLER:
|
||||
Webserver->on("/" WEB_HANDLE_SCRIPT, HandleScriptConfiguration);
|
||||
Webserver->on("/ta",HTTP_POST, HandleScriptTextareaConfiguration);
|
||||
|
|
|
@ -626,10 +626,8 @@ void ZigbeeStateMachine_Run(void) {
|
|||
case ZGB_INSTR_MQTT_STATE:
|
||||
{
|
||||
const char *f_msg = (const char*) cur_ptr1;
|
||||
char buf[strlen_P(f_msg) + 1];
|
||||
strcpy_P(buf, f_msg);
|
||||
Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{\"Status\":%d,\"Message\":\"%s\"}}"),
|
||||
cur_d8, buf);
|
||||
cur_d8, f_msg);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE));
|
||||
XdrvRulesProcess();
|
||||
}
|
||||
|
|
|
@ -23,9 +23,7 @@
|
|||
* ESP32 webcam based on example in Arduino-ESP32 library
|
||||
*
|
||||
* Template as used on ESP32-CAM WiFi + bluetooth Camera Module Development Board ESP32 With Camera Module OV2640 Geekcreit for Arduino
|
||||
* {"NAME":"AITHINKER CAM No SPI","GPIO":[4992,65504,65504,65504,5472,5312,65504,65504,5504,5536,65504,65504,5568,5440,5280,5248,0,5216,5408,5376,0,5344,5024,5056,0,0,0,0,4928,65504,5120,5088,5184,0,0,5152],"FLAG":0,"BASE":1}
|
||||
* Template with SPI configured. This needs define USE_SPI
|
||||
* {"NAME":"AITHINKER CAM","GPIO":[4992,65504,672,65504,5472,5312,65504,65504,5504,5536,736,704,5568,5440,5280,5248,0,5216,5408,5376,0,5344,5024,5056,0,0,0,0,4928,65504,5120,5088,5184,0,0,5152],"FLAG":0,"BASE":1}
|
||||
* {"NAME":"AITHINKER CAM No SPI","GPIO":[4992,65504,65504,65504,65504,5088,65504,65504,65504,65504,65504,65504,65504,65504,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,65504,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1}
|
||||
*
|
||||
* Command: Webcam <number>
|
||||
* 0 = Stop streaming
|
||||
|
@ -50,10 +48,13 @@
|
|||
|
||||
#define CAMERA_MODEL_AI_THINKER
|
||||
|
||||
//#define USE_TEMPLATE
|
||||
#define USE_TEMPLATE
|
||||
|
||||
#define WC_LOGLEVEL LOG_LEVEL_INFO
|
||||
|
||||
#include "fb_gfx.h"
|
||||
#include "fd_forward.h"
|
||||
#include "fr_forward.h"
|
||||
|
||||
#define PWDN_GPIO_NUM 32
|
||||
#define RESET_GPIO_NUM -1
|
||||
|
@ -81,6 +82,30 @@ uint8_t wc_up;
|
|||
uint16_t wc_width;
|
||||
uint16_t wc_height;
|
||||
uint8_t wc_stream_active;
|
||||
#ifdef USE_FACE_DETECT
|
||||
uint8_t faces;
|
||||
uint16_t face_detect_time;
|
||||
#endif
|
||||
|
||||
bool WcPinUsed(void) {
|
||||
bool pin_used = true;
|
||||
for (uint32_t i = 0; i < MAX_WEBCAM_DATA; i++) {
|
||||
if (!PinUsed(GPIO_WEBCAM_DATA, i)) {
|
||||
pin_used = false;
|
||||
}
|
||||
// if (i < MAX_WEBCAM_HSD) {
|
||||
// if (!PinUsed(GPIO_WEBCAM_HSD, i)) {
|
||||
// pin_used = false;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
if (!PinUsed(GPIO_WEBCAM_XCLK) || !PinUsed(GPIO_WEBCAM_PCLK) ||
|
||||
!PinUsed(GPIO_WEBCAM_VSYNC) || !PinUsed(GPIO_WEBCAM_HREF) ||
|
||||
!PinUsed(GPIO_WEBCAM_SIOD) || !PinUsed(GPIO_WEBCAM_SIOC)) {
|
||||
pin_used = false;
|
||||
}
|
||||
return pin_used;
|
||||
}
|
||||
|
||||
uint32_t wc_setup(int32_t fsiz) {
|
||||
if (fsiz > 10) { fsiz = 10; }
|
||||
|
@ -89,11 +114,13 @@ uint32_t wc_setup(int32_t fsiz) {
|
|||
|
||||
if (fsiz < 0) {
|
||||
esp_camera_deinit();
|
||||
wc_up = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (wc_up) {
|
||||
esp_camera_deinit();
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: deinit"));
|
||||
//return wc_up;
|
||||
}
|
||||
|
||||
|
@ -125,31 +152,25 @@ uint32_t wc_setup(int32_t fsiz) {
|
|||
config.pin_pwdn = PWDN_GPIO_NUM;
|
||||
config.pin_reset = RESET_GPIO_NUM;
|
||||
#else
|
||||
if (PinUsed(GPIO_WEBCAM_Y2) && PinUsed(GPIO_WEBCAM_Y3) && PinUsed(GPIO_WEBCAM_Y4) && PinUsed(GPIO_WEBCAM_Y5)\
|
||||
&& PinUsed(GPIO_WEBCAM_Y6) && PinUsed(GPIO_WEBCAM_Y7) && PinUsed(GPIO_WEBCAM_Y8) && PinUsed(GPIO_WEBCAM_Y9)\
|
||||
&& PinUsed(GPIO_WEBCAM_XCLK) && PinUsed(GPIO_WEBCAM_PCLK) && PinUsed(GPIO_WEBCAM_VSYNC) && PinUsed(GPIO_WEBCAM_HREF)\
|
||||
&& PinUsed(GPIO_WEBCAM_SIOD) && PinUsed(GPIO_WEBCAM_SIOC)) {
|
||||
config.pin_d0 = Pin(GPIO_WEBCAM_Y2); //Y2_GPIO_NUM;
|
||||
config.pin_d1 = Pin(GPIO_WEBCAM_Y3); //Y3_GPIO_NUM;
|
||||
config.pin_d2 = Pin(GPIO_WEBCAM_Y4); //Y4_GPIO_NUM;
|
||||
config.pin_d3 = Pin(GPIO_WEBCAM_Y5); //Y5_GPIO_NUM;
|
||||
config.pin_d4 = Pin(GPIO_WEBCAM_Y6); //Y6_GPIO_NUM;
|
||||
config.pin_d5 = Pin(GPIO_WEBCAM_Y7); //Y7_GPIO_NUM;
|
||||
config.pin_d6 = Pin(GPIO_WEBCAM_Y8); //Y8_GPIO_NUM;
|
||||
config.pin_d7 = Pin(GPIO_WEBCAM_Y9); //Y9_GPIO_NUM;
|
||||
if (WcPinUsed()) {
|
||||
config.pin_d0 = Pin(GPIO_WEBCAM_DATA); // Y2_GPIO_NUM;
|
||||
config.pin_d1 = Pin(GPIO_WEBCAM_DATA, 1); // Y3_GPIO_NUM;
|
||||
config.pin_d2 = Pin(GPIO_WEBCAM_DATA, 2); // Y4_GPIO_NUM;
|
||||
config.pin_d3 = Pin(GPIO_WEBCAM_DATA, 3); // Y5_GPIO_NUM;
|
||||
config.pin_d4 = Pin(GPIO_WEBCAM_DATA, 4); // Y6_GPIO_NUM;
|
||||
config.pin_d5 = Pin(GPIO_WEBCAM_DATA, 5); // Y7_GPIO_NUM;
|
||||
config.pin_d6 = Pin(GPIO_WEBCAM_DATA, 6); // Y8_GPIO_NUM;
|
||||
config.pin_d7 = Pin(GPIO_WEBCAM_DATA, 7); // Y9_GPIO_NUM;
|
||||
config.pin_xclk = Pin(GPIO_WEBCAM_XCLK); // XCLK_GPIO_NUM;
|
||||
config.pin_pclk = Pin(GPIO_WEBCAM_PCLK); // PCLK_GPIO_NUM;
|
||||
config.pin_vsync = Pin(GPIO_WEBCAM_VSYNC); // VSYNC_GPIO_NUM;
|
||||
config.pin_href = Pin(GPIO_WEBCAM_HREF); // HREF_GPIO_NUM;
|
||||
config.pin_sscb_sda = Pin(GPIO_WEBCAM_SIOD); // SIOD_GPIO_NUM;
|
||||
config.pin_sscb_scl = Pin(GPIO_WEBCAM_SIOC); // SIOC_GPIO_NUM;
|
||||
int16_t xpin;
|
||||
xpin = Pin(GPIO_WEBCAM_PWDN);
|
||||
if (99 == xpin) { xpin = -1; }
|
||||
config.pin_pwdn = xpin; //PWDN_GPIO_NUM;
|
||||
xpin = Pin(GPIO_WEBCAM_RESET);
|
||||
if (99 == xpin) { xpin=-1; }
|
||||
config.pin_reset = xpin; //RESET_GPIO_NUM;
|
||||
config.pin_pwdn = (PinUsed(GPIO_WEBCAM_PWDN)) ? Pin(GPIO_WEBCAM_PWDN) : -1; // PWDN_GPIO_NUM;
|
||||
config.pin_reset = (PinUsed(GPIO_WEBCAM_RESET)) ? Pin(GPIO_WEBCAM_RESET) : -1; // RESET_GPIO_NUM;
|
||||
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: User template"));
|
||||
} else {
|
||||
// defaults to AI THINKER
|
||||
config.pin_d0 = Y2_GPIO_NUM;
|
||||
|
@ -168,6 +189,7 @@ uint32_t wc_setup(int32_t fsiz) {
|
|||
config.pin_sscb_scl = SIOC_GPIO_NUM;
|
||||
config.pin_pwdn = PWDN_GPIO_NUM;
|
||||
config.pin_reset = RESET_GPIO_NUM;
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: Default template"));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -221,6 +243,11 @@ uint32_t wc_setup(int32_t fsiz) {
|
|||
wc_height = wc_fb->height;
|
||||
esp_camera_fb_return(wc_fb);
|
||||
|
||||
|
||||
#ifdef USE_FACE_DETECT
|
||||
fd_init();
|
||||
#endif
|
||||
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: Initialized"));
|
||||
|
||||
wc_up = 1;
|
||||
|
@ -441,6 +468,141 @@ void handleMjpeg(void) {
|
|||
//}
|
||||
}
|
||||
|
||||
#ifdef USE_FACE_DETECT
|
||||
|
||||
static mtmn_config_t mtmn_config = {0};
|
||||
|
||||
void fd_init(void) {
|
||||
mtmn_config.type = FAST;
|
||||
mtmn_config.min_face = 80;
|
||||
mtmn_config.pyramid = 0.707;
|
||||
mtmn_config.pyramid_times = 4;
|
||||
mtmn_config.p_threshold.score = 0.6;
|
||||
mtmn_config.p_threshold.nms = 0.7;
|
||||
mtmn_config.p_threshold.candidate_number = 20;
|
||||
mtmn_config.r_threshold.score = 0.7;
|
||||
mtmn_config.r_threshold.nms = 0.7;
|
||||
mtmn_config.r_threshold.candidate_number = 10;
|
||||
mtmn_config.o_threshold.score = 0.7;
|
||||
mtmn_config.o_threshold.nms = 0.7;
|
||||
mtmn_config.o_threshold.candidate_number = 1;
|
||||
}
|
||||
|
||||
#define FACE_COLOR_WHITE 0x00FFFFFF
|
||||
#define FACE_COLOR_BLACK 0x00000000
|
||||
#define FACE_COLOR_RED 0x000000FF
|
||||
#define FACE_COLOR_GREEN 0x0000FF00
|
||||
#define FACE_COLOR_BLUE 0x00FF0000
|
||||
#define FACE_COLOR_YELLOW (FACE_COLOR_RED | FACE_COLOR_GREEN)
|
||||
#define FACE_COLOR_CYAN (FACE_COLOR_BLUE | FACE_COLOR_GREEN)
|
||||
#define FACE_COLOR_PURPLE (FACE_COLOR_BLUE | FACE_COLOR_RED)
|
||||
void draw_face_boxes(dl_matrix3du_t *image_matrix, box_array_t *boxes, int face_id);
|
||||
|
||||
/*
|
||||
void draw_face_boxes(dl_matrix3du_t *image_matrix, box_array_t *boxes, int face_id) {
|
||||
int x, y, w, h, i;
|
||||
uint32_t color = FACE_COLOR_YELLOW;
|
||||
if(face_id < 0){
|
||||
color = FACE_COLOR_RED;
|
||||
} else if(face_id > 0){
|
||||
color = FACE_COLOR_GREEN;
|
||||
}
|
||||
fb_data_t fb;
|
||||
fb.width = image_matrix->w;
|
||||
fb.height = image_matrix->h;
|
||||
fb.data = image_matrix->item;
|
||||
fb.bytes_per_pixel = 3;
|
||||
fb.format = FB_BGR888;
|
||||
for (i = 0; i < boxes->len; i++){
|
||||
// rectangle box
|
||||
x = (int)boxes->box[i].box_p[0];
|
||||
y = (int)boxes->box[i].box_p[1];
|
||||
w = (int)boxes->box[i].box_p[2] - x + 1;
|
||||
h = (int)boxes->box[i].box_p[3] - y + 1;
|
||||
fb_gfx_drawFastHLine(&fb, x, y, w, color);
|
||||
fb_gfx_drawFastHLine(&fb, x, y+h-1, w, color);
|
||||
fb_gfx_drawFastVLine(&fb, x, y, h, color);
|
||||
fb_gfx_drawFastVLine(&fb, x+w-1, y, h, color);
|
||||
#if 0
|
||||
// landmark
|
||||
int x0, y0, j;
|
||||
for (j = 0; j < 10; j+=2) {
|
||||
x0 = (int)boxes->landmark[i].landmark_p[j];
|
||||
y0 = (int)boxes->landmark[i].landmark_p[j+1];
|
||||
fb_gfx_fillRect(&fb, x0, y0, 3, 3, color);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#define DL_SPIRAM_SUPPORT
|
||||
|
||||
uint32_t wc_set_face_detect(int32_t value) {
|
||||
if (value >= 0) { face_detect_time = value; }
|
||||
return faces;
|
||||
}
|
||||
|
||||
uint32_t face_ltime;
|
||||
|
||||
uint32_t detect_face(void);
|
||||
|
||||
uint32_t detect_face(void) {
|
||||
dl_matrix3du_t *image_matrix;
|
||||
size_t out_len, out_width, out_height;
|
||||
uint8_t * out_buf;
|
||||
bool s;
|
||||
bool detected = false;
|
||||
int face_id = 0;
|
||||
camera_fb_t *fb;
|
||||
|
||||
if ((millis() - face_ltime) > face_detect_time) {
|
||||
face_ltime = millis();
|
||||
fb = esp_camera_fb_get();
|
||||
if (!fb) { return ESP_FAIL; }
|
||||
|
||||
image_matrix = dl_matrix3du_alloc(1, fb->width, fb->height, 3);
|
||||
if (!image_matrix) {
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: dl_matrix3du_alloc failed"));
|
||||
esp_camera_fb_return(fb);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
out_buf = image_matrix->item;
|
||||
//out_len = fb->width * fb->height * 3;
|
||||
//out_width = fb->width;
|
||||
//out_height = fb->height;
|
||||
|
||||
s = fmt2rgb888(fb->buf, fb->len, fb->format, out_buf);
|
||||
esp_camera_fb_return(fb);
|
||||
if (!s){
|
||||
dl_matrix3du_free(image_matrix);
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: to rgb888 failed"));
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
box_array_t *net_boxes = face_detect(image_matrix, &mtmn_config);
|
||||
if (net_boxes){
|
||||
detected = true;
|
||||
faces = net_boxes->len;
|
||||
//if(recognition_enabled){
|
||||
// face_id = run_face_recognition(image_matrix, net_boxes);
|
||||
//}
|
||||
//draw_face_boxes(image_matrix, net_boxes, face_id);
|
||||
free(net_boxes->score);
|
||||
free(net_boxes->box);
|
||||
free(net_boxes->landmark);
|
||||
free(net_boxes);
|
||||
} else {
|
||||
faces = 0;
|
||||
}
|
||||
dl_matrix3du_free(image_matrix);
|
||||
//Serial.printf("face detected: %d",faces);
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void handleMjpeg_task(void) {
|
||||
camera_fb_t *wc_fb;
|
||||
size_t _jpg_buf_len = 0;
|
||||
|
@ -472,6 +634,7 @@ void handleMjpeg_task(void) {
|
|||
goto exit;
|
||||
}
|
||||
|
||||
|
||||
if (wc_fb->format != PIXFORMAT_JPEG) {
|
||||
jpeg_converted = frame2jpg(wc_fb, 80, &_jpg_buf, &_jpg_buf_len);
|
||||
if (!jpeg_converted){
|
||||
|
@ -524,7 +687,6 @@ void CamHandleRoot(void) {
|
|||
//CamServer->redirect("http://" + String(ip) + ":81/cam.mjpeg");
|
||||
CamServer->sendHeader("Location", WiFi.localIP().toString() + ":81/cam.mjpeg");
|
||||
CamServer->send(302, "", "");
|
||||
//Serial.printf("WC root called");
|
||||
AddLog_P2(WC_LOGLEVEL, PSTR("CAM: root called"));
|
||||
}
|
||||
|
||||
|
@ -589,12 +751,10 @@ void detect_motion(void) {
|
|||
}
|
||||
|
||||
void wc_show_stream(void) {
|
||||
#ifndef USE_SCRIPT
|
||||
if (CamServer) {
|
||||
WSContentSend_P(PSTR("<p></p><center><img src='http://%s:81/stream' alt='Webcam stream' style='width:99%%;'></center><p></p>"),
|
||||
WiFi.localIP().toString().c_str());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t wc_set_streamserver(uint32_t flag) {
|
||||
|
@ -625,6 +785,9 @@ uint32_t wc_set_streamserver(uint32_t flag) {
|
|||
|
||||
void WcStreamControl(uint32_t resolution) {
|
||||
wc_set_streamserver(resolution);
|
||||
/*if (0 == resolution) {
|
||||
resolution=-1;
|
||||
}*/
|
||||
wc_setup(resolution);
|
||||
}
|
||||
|
||||
|
@ -632,6 +795,9 @@ void wc_loop(void) {
|
|||
if (CamServer) { CamServer->handleClient(); }
|
||||
if (wc_stream_active) { handleMjpeg_task(); }
|
||||
if (motion_detect) { detect_motion(); }
|
||||
#ifdef USE_FACE_DETECT
|
||||
if (face_detect_time) { detect_face(); }
|
||||
#endif
|
||||
}
|
||||
|
||||
void wc_pic_setup(void) {
|
||||
|
@ -672,6 +838,7 @@ void WcInit(void) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************************************************\
|
||||
* Commands
|
||||
\*********************************************************************************************/
|
||||
|
@ -711,8 +878,13 @@ bool Xdrv39(uint8_t function) {
|
|||
wc_pic_setup();
|
||||
break;
|
||||
case FUNC_WEB_ADD_MAIN_BUTTON:
|
||||
//if (Settings.esp32_webcam_resolution) {
|
||||
#ifndef USE_SCRIPT
|
||||
WcStreamControl(Settings.esp32_webcam_resolution);
|
||||
delay(50); // Give the webcam webserver some time to prepare the stream
|
||||
wc_show_stream();
|
||||
#endif
|
||||
//}
|
||||
break;
|
||||
case FUNC_COMMAND:
|
||||
result = DecodeCommand(kWCCommands, WCCommand);
|
||||
|
@ -720,6 +892,7 @@ bool Xdrv39(uint8_t function) {
|
|||
case FUNC_PRE_INIT:
|
||||
WcInit();
|
||||
break;
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -64,9 +64,13 @@
|
|||
|
||||
// TODO() : Move to my_user_config.h file
|
||||
#define USE_APDS9960_GESTURE // Enable Gesture feature (+2k code)
|
||||
#define USE_APDS9960_PROXIMITY // Enable Proximity feature (Not use)
|
||||
#define USE_APDS9960_COLOR // Enable Color feature (Not use)
|
||||
#define USE_APDS9960_PROXIMITY // Enable Proximity feature (>50 code)
|
||||
#define USE_APDS9960_COLOR // Enable Color feature (+0.8k code)
|
||||
|
||||
#define APDS9960_MODE_GESTURE 0
|
||||
#define APDS9960_MODE_COLOR 1
|
||||
|
||||
#define USE_APDS9960_STARTMODE APDS9960_MODE_GESTURE
|
||||
|
||||
/* Gesture parameters */
|
||||
#define GESTURE_THRESHOLD_OUT 10
|
||||
|
@ -96,16 +100,19 @@ const char APDS9960_TAG[] PROGMEM = "APDS9960"; // Only one actualy
|
|||
#ifdef USE_WEBSERVER
|
||||
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
|
||||
const char HTTP_SNS_GESTURE[] PROGMEM = "{s}%s " D_GESTURE "{m}%s{e}";
|
||||
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
#ifdef USE_APDS9960_COLOR
|
||||
const char HTTP_SNS_COLOR_RED[] PROGMEM = "{s}%s " D_COLOR_RED "{m}%u{e}";
|
||||
const char HTTP_SNS_COLOR_GREEN[] PROGMEM = "{s}%s " D_COLOR_GREEN "{m}%u{e}";
|
||||
const char HTTP_SNS_COLOR_BLUE[] PROGMEM = "{s}%s " D_COLOR_BLUE "{m}%u{e}";
|
||||
const char HTTP_SNS_CCT[] PROGMEM = "{s}%s " D_CCT "{m}%u " D_UNIT_KELVIN "{e}";
|
||||
#endif // USE_APDS9960_COLOR
|
||||
|
||||
#ifdef USE_APDS9960_PROXIMITY
|
||||
const char HTTP_SNS_PROXIMITY[] PROGMEM = "{s}%s " D_PROXIMITY "{m}%u{e}";
|
||||
#endif // USE_APDS9960_PROXIMITY
|
||||
|
||||
#endif // USE_WEBSERVER
|
||||
|
||||
|
@ -321,6 +328,7 @@ typedef struct gesture_type {
|
|||
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
#if defined(USE_APDS9960_COLOR) || defined(USE_APDS9960_PROXIMITY)
|
||||
typedef struct color_data_type {
|
||||
uint16_t a; // measured ambient
|
||||
uint16_t r; // Red
|
||||
|
@ -331,32 +339,33 @@ typedef struct color_data_type {
|
|||
uint16_t cct; // calculated color temperature
|
||||
uint16_t lux; // calculated illuminance - atm only from rgb
|
||||
} color_data_t;
|
||||
#endif // USE_APDS9960_COLOR || USE_APDS9960_PROXIMITY
|
||||
|
||||
/******************************************************************************\
|
||||
* Globals
|
||||
\******************************************************************************/
|
||||
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
|
||||
gesture_data_t gesture_data;
|
||||
gesture_t gesture;
|
||||
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
char currentGesture[6];
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
|
||||
#if defined(USE_APDS9960_COLOR) || defined(USE_APDS9960_PROXIMITY)
|
||||
color_data_t color_data;
|
||||
#endif // USE_APDS9960_COLOR || USE_APDS9960_PROXIMITY
|
||||
|
||||
volatile uint8_t recovery_loop_counter = 0; // count number of stateloops to switch the sensor off, if needed
|
||||
bool APDS9960_overload = false;
|
||||
uint8_t APDS9960_aTime = DEFAULT_ATIME;
|
||||
uint8_t APDS9960_type = 0;
|
||||
uint8_t gesture_mode = 1;
|
||||
uint8_t gesture_mode = 1; // 1 : Gesture | 2 : Color
|
||||
|
||||
/******************************************************************************\
|
||||
* Helper functions
|
||||
\******************************************************************************/
|
||||
|
||||
#ifdef USE_APDS9960_COLOR
|
||||
/**
|
||||
* Taken from the Adafruit-library
|
||||
* @brief Converts the raw R/G/B values to color temperature in degrees
|
||||
|
@ -388,6 +397,7 @@ void calculateColorTemperature(void) {
|
|||
|
||||
return;
|
||||
}
|
||||
#endif // USE_APDS9960_COLOR
|
||||
|
||||
/******************************************************************************\
|
||||
* Getters and setters for register values
|
||||
|
@ -1249,7 +1259,6 @@ bool APDS9960_init(void) {
|
|||
|
||||
/* Set default values for gesture sense registers */
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
|
||||
setGestureEnterThresh(DEFAULT_GPENTH);
|
||||
setGestureExitThresh(DEFAULT_GEXTH);
|
||||
|
||||
|
@ -1267,7 +1276,6 @@ bool APDS9960_init(void) {
|
|||
I2cWrite8(APDS9960_I2C_ADDR, APDS9960_GCONF3, DEFAULT_GCONF3);
|
||||
|
||||
setGestureIntEnable(DEFAULT_GIEN);
|
||||
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
disablePower(); // go to sleep
|
||||
|
@ -1543,6 +1551,7 @@ inline void disablePower(void) {
|
|||
* Ambient light and color sensor controls
|
||||
\******************************************************************************/
|
||||
|
||||
#if defined(USE_APDS9960_COLOR) || defined(USE_APDS9960_PROXIMITY)
|
||||
/**
|
||||
* @brief Reads the ARGB-Data and fills color_data
|
||||
*/
|
||||
|
@ -1553,6 +1562,38 @@ inline void readAllColorAndProximityData(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void APDS9960_adjustATime(void) { // not really used atm
|
||||
// readAllColorAndProximityData();
|
||||
I2cValidRead16LE(&color_data.a, APDS9960_I2C_ADDR, APDS9960_CDATAL);
|
||||
// disablePower();
|
||||
|
||||
if (color_data.a < (uint16_t)20) {
|
||||
APDS9960_aTime = 0x40;
|
||||
} else if (color_data.a < (uint16_t)40) {
|
||||
APDS9960_aTime = 0x80;
|
||||
} else if (color_data.a < (uint16_t)50) {
|
||||
APDS9960_aTime = DEFAULT_ATIME;
|
||||
} else if (color_data.a < (uint16_t)70) {
|
||||
APDS9960_aTime = 0xc0;
|
||||
}
|
||||
|
||||
if (color_data.a < 200) {
|
||||
APDS9960_aTime = 0xe9;
|
||||
}
|
||||
/* if (color_data.a < 10000){
|
||||
APDS9960_aTime = 0xF0;
|
||||
}*/
|
||||
else {
|
||||
APDS9960_aTime = 0xff;
|
||||
}
|
||||
|
||||
// disableLightSensor();
|
||||
I2cWrite8(APDS9960_I2C_ADDR, APDS9960_ATIME, APDS9960_aTime);
|
||||
enablePower();
|
||||
enableLightSensor();
|
||||
delay(20);
|
||||
}
|
||||
#endif // USE_APDS9960_COLOR || USE_APDS9960_PROXIMITY
|
||||
|
||||
/******************************************************************************\
|
||||
* High-level gesture controls
|
||||
|
@ -1754,42 +1795,6 @@ void handleGesture(void) {
|
|||
}
|
||||
}
|
||||
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
void APDS9960_adjustATime(void) { // not really used atm
|
||||
// readAllColorAndProximityData();
|
||||
I2cValidRead16LE(&color_data.a, APDS9960_I2C_ADDR, APDS9960_CDATAL);
|
||||
// disablePower();
|
||||
|
||||
if (color_data.a < (uint16_t)20) {
|
||||
APDS9960_aTime = 0x40;
|
||||
} else if (color_data.a < (uint16_t)40) {
|
||||
APDS9960_aTime = 0x80;
|
||||
} else if (color_data.a < (uint16_t)50) {
|
||||
APDS9960_aTime = DEFAULT_ATIME;
|
||||
} else if (color_data.a < (uint16_t)70) {
|
||||
APDS9960_aTime = 0xc0;
|
||||
}
|
||||
|
||||
if (color_data.a < 200) {
|
||||
APDS9960_aTime = 0xe9;
|
||||
}
|
||||
/* if (color_data.a < 10000){
|
||||
APDS9960_aTime = 0xF0;
|
||||
}*/
|
||||
else {
|
||||
APDS9960_aTime = 0xff;
|
||||
}
|
||||
|
||||
// disableLightSensor();
|
||||
I2cWrite8(APDS9960_I2C_ADDR, APDS9960_ATIME, APDS9960_aTime);
|
||||
enablePower();
|
||||
enableLightSensor();
|
||||
delay(20);
|
||||
}
|
||||
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
|
||||
void APDS9960_loop(void) {
|
||||
if (recovery_loop_counter > 0) {
|
||||
recovery_loop_counter -= 1;
|
||||
|
@ -1835,9 +1840,17 @@ void APDS9960_detect(void) {
|
|||
I2cSetActiveFound(APDS9960_I2C_ADDR, APDS9960_TAG);
|
||||
|
||||
enableProximitySensor();
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
|
||||
#if defined(USE_APDS9960_GESTURE) && USE_APDS9960_STARTMODE == APDS9960_MODE_GESTURE
|
||||
gesture_mode = 1;
|
||||
enableGestureSensor();
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
#if ( defined(USE_APDS9960_COLOR) || defined(USE_APDS9960_PROXIMITY) ) && USE_APDS9960_STARTMODE == APDS9960_MODE_COLOR
|
||||
gesture_mode = 0;
|
||||
enableLightSensor();
|
||||
APDS9960_overload = false;
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
} else {
|
||||
APDS9960_type = 0;
|
||||
}
|
||||
|
@ -1845,7 +1858,9 @@ void APDS9960_detect(void) {
|
|||
APDS9960_type = 0;
|
||||
}
|
||||
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
currentGesture[0] = '\0';
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
}
|
||||
|
||||
/*********************************************************************************************\
|
||||
|
@ -1856,6 +1871,8 @@ void APDS9960_show(bool json) {
|
|||
if (!APDS9960_type) { return; }
|
||||
|
||||
if (!gesture_mode && !APDS9960_overload) {
|
||||
|
||||
#if defined(USE_APDS9960_COLOR) || defined(USE_APDS9960_PROXIMITY)
|
||||
uint16_t ambient;
|
||||
|
||||
readAllColorAndProximityData();
|
||||
|
@ -1865,8 +1882,11 @@ void APDS9960_show(bool json) {
|
|||
I2cWrite8(APDS9960_I2C_ADDR, APDS9960_ATIME, DEFAULT_ATIME); // reset to default
|
||||
enableLightSensor();*/
|
||||
|
||||
#ifdef USE_APDS9960_COLOR
|
||||
calculateColorTemperature(); // and calculate Lux
|
||||
#endif // USE_APDS9960_COLOR
|
||||
if (json) {
|
||||
#if defined(USE_APDS9960_COLOR) && defined(USE_APDS9960_PROXIMITY)
|
||||
ResponseAppend_P(PSTR(",\"%s\":{\"Red\":%u,\"Green\":%u,\"Blue\":%u,\"" D_JSON_ILLUMINANCE "\":%u,\"CCT\":%u,\"Proximity\":%u}"),
|
||||
APDS9960_TAG,
|
||||
color_data.r,
|
||||
|
@ -1875,16 +1895,44 @@ void APDS9960_show(bool json) {
|
|||
ambient,
|
||||
color_data.cct,
|
||||
color_data.p);
|
||||
#else
|
||||
|
||||
#ifdef USE_APDS9960_COLOR
|
||||
ResponseAppend_P(PSTR(",\"%s\":{\"Red\":%u,\"Green\":%u,\"Blue\":%u,\"" D_JSON_ILLUMINANCE "\":%u,\"CCT\":%u}"),
|
||||
APDS9960_TAG,
|
||||
color_data.r,
|
||||
color_data.g,
|
||||
color_data.b,
|
||||
ambient,
|
||||
color_data.cct);
|
||||
#endif // USE_APDS9960_COLOR
|
||||
|
||||
#ifdef USE_APDS9960_PROXIMITY
|
||||
ResponseAppend_P(PSTR(",\"%s\":{\"Proximity\":%u}"),
|
||||
APDS9960_TAG,
|
||||
color_data.p);
|
||||
#endif // USE_APDS9960_PROXIMITY
|
||||
|
||||
#endif // USE_APDS9960_COLOR && USE_APDS9960_PROXIMITY
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
|
||||
#ifdef USE_APDS9960_COLOR
|
||||
WSContentSend_PD(HTTP_SNS_COLOR_RED, APDS9960_TAG, color_data.r);
|
||||
WSContentSend_PD(HTTP_SNS_COLOR_GREEN, APDS9960_TAG, color_data.g);
|
||||
WSContentSend_PD(HTTP_SNS_COLOR_BLUE, APDS9960_TAG, color_data.b);
|
||||
WSContentSend_PD(HTTP_SNS_ILLUMINANCE, APDS9960_TAG, ambient);
|
||||
WSContentSend_PD(HTTP_SNS_CCT, APDS9960_TAG, color_data.cct);
|
||||
#endif // USE_APDS9960_COLOR
|
||||
|
||||
#ifdef USE_APDS9960_PROXIMITY
|
||||
WSContentSend_PD(HTTP_SNS_PROXIMITY, APDS9960_TAG, color_data.p);
|
||||
#endif // USE_APDS9960_PROXIMITY
|
||||
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
#endif // USE_APDS9960_COLOR || USE_APDS9960_PROXIMITY
|
||||
|
||||
#ifdef USE_APDS9960_GESTURE
|
||||
} else {
|
||||
if (currentGesture[0] != '\0') {
|
||||
|
@ -1898,6 +1946,7 @@ void APDS9960_show(bool json) {
|
|||
}
|
||||
}
|
||||
#endif // USE_APDS9960_GESTURE
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue