Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f59f25ee40 | ||
|
|
14030ec15b | ||
|
|
1fd6179408 | ||
|
|
22424fb03b | ||
|
|
97cd06440e | ||
|
|
8346e39ac9 |
@@ -26,8 +26,6 @@ Also there are more people on the forum that can help you with support.
|
||||
|
||||
* Incomplete or unstable plugins should have a PLUGIN_BUILD_DEV #ifdef around them. Also add [DEVELOPMENT] to the name.
|
||||
|
||||
* Do not modify any of the variables passed to your PLUGIN_WRITE handler.
|
||||
|
||||
* New plugins that seem to be working correctly should have a PLUGIN_BUILD_TESTING around until they are tested enough. Also add [TESTING] to the name
|
||||
* New plugins that seem to be working correctly should have a PLUGIN_BUILD_TESTING around until they are tested enough.
|
||||
|
||||
* Also see our general guidelines at: https://www.letscontrolit.com/wiki/index.php/ESPEasyDevelopmentGuidelines
|
||||
|
||||
@@ -1,68 +1,18 @@
|
||||
### Checklist
|
||||
- [ ] The title of this issue is "to the point" and descriptive.
|
||||
- [ ] This issue describes what is happening.
|
||||
- [ ] This issue describes what components are affected (e.g. name of plugin/controller)
|
||||
- [ ] This issue describes how to reproduce it.
|
||||
- [ ] This issue describes when it was introduced (when known) and what version is now showing the problem.
|
||||
|
||||
### I have...
|
||||
- [ ] searched the [issue tracker](https://github.com/letscontrolit/ESPEasy/issues) or the [forum](https://www.letscontrolit.com/forum/viewforum.php?f=1) for a similar issue. (include links when applicable)
|
||||
- [ ] entered a system description using "Copy info to clipboard" on the sysinfo page. (when possible)
|
||||
- [ ] entered the full filename of the used version (e.g. `ESP_Easy_mega-20181001_test_ESP8266_4096_VCC.bin` )
|
||||
- [ ] given a list of active plugins or controllers when applicable.
|
||||
- [ ] filled out all applicable fields below.
|
||||
|
||||
### Steps already tried...
|
||||
- [ ] Tried a clean install (empty `.bin` files are included in the ZIP)
|
||||
- [ ] Tested previous/other build (mention which one already tested)
|
||||
- [ ] Tested on other node to make sure hardware isn't defective.
|
||||
- [ ] Verified if the problem is limited to a single plugin/controller
|
||||
|
||||
|
||||
|
||||
### If you self compile, please state this and PLEASE try to ONLY REPORT ISSUES WITH OFFICIAL BUILDS! ###
|
||||
<!--- If you self compile, please state this and PLEASE try to ONLY REPORT ISSUES WITH OFFICIAL BUILDS! --->
|
||||
<!--- NOTE: This is not a support forum! For questions and support go here: --->
|
||||
<!--- https://www.letscontrolit.com/forum/viewforum.php?f=1 --->
|
||||
<!--- Remove topics that are not applicable to your feature request of issue --->
|
||||
<!--- Remember to have a "to the point" TITLE --->
|
||||
|
||||
|
||||
### Summarize of the problem/feature request
|
||||
<!--- Describe the problem or feature request --->
|
||||
YOUR TEXT GOES HERE
|
||||
|
||||
### Expected behavior
|
||||
<!--- Tell us what should happen? --->
|
||||
YOUR TEXT GOES HERE
|
||||
|
||||
### Actual behavior
|
||||
<!--- Tell us what happens instead? --->
|
||||
YOUR TEXT GOES HERE
|
||||
**NOTE: This is not a support forum! For questions and support go here: https://www.letscontrolit.com/forum/viewforum.php?f=1**
|
||||
|
||||
### Steps to reproduce
|
||||
<!--- How can we trigger this problem? --->
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
How can we trigger this problem?
|
||||
|
||||
Does the problem presist after powering off and on? (just resetting isnt enough sometimes)
|
||||
|
||||
### Expected behavior
|
||||
Tell us what should happen?
|
||||
|
||||
### Actual behavior
|
||||
Tell us what happens instead?
|
||||
|
||||
<!--- Does the problem persists after powering off and on? (just resetting isn't enough sometimes) --->
|
||||
<!--- Please document if you have restarted the unit and if the problem is then gone etc. etc. --->
|
||||
### System configuration
|
||||
<!--- Please add as much information and screenshots as possible --->
|
||||
|
||||
Hardware:
|
||||
|
||||
<!--- You should also provide links to hardware pages etc where we can find more info --->
|
||||
<!--- If you self compile, please state this and PLEASE try to ONLY REPORT ISSUES WITH OFFICIAL BUILDS! --->
|
||||
ESP Easy version:
|
||||
|
||||
<!--- In order to have a better readablity of your issue then you should place screenshots here --->
|
||||
<!--- Simply drag and drop them onto this template, move the text string below the "ESP Easy settings/screenshots" topic --->
|
||||
ESP Easy settings/screenshots:
|
||||
|
||||
### Rules or log data
|
||||
<!--- place your code/rules between the two ``` rows --->
|
||||
<!--- remove if not applicable! --->
|
||||
```
|
||||
|
||||
```
|
||||
Software or git version:
|
||||
|
||||
@@ -1,26 +1,7 @@
|
||||
## OS Specific Hidden Files ####
|
||||
|
||||
# MacOSX Finder *****
|
||||
.DS_Store
|
||||
|
||||
# Fuse FileSystem ***
|
||||
.fuse_hidden*
|
||||
|
||||
|
||||
## PlatformIO ##################
|
||||
.pioenvs
|
||||
.clang_complete
|
||||
.gcc-flags.json
|
||||
.piolibdeps
|
||||
|
||||
## Project #####################
|
||||
lib/readme.txt
|
||||
src/Custom.h
|
||||
/ESPEasy
|
||||
test/output_export.cpp
|
||||
.vscode
|
||||
.vscode/.browse.c_cpp.db*
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
|
||||
docs/build/
|
||||
|
||||
@@ -22,18 +22,17 @@ addons:
|
||||
|
||||
|
||||
install:
|
||||
- pip install -U platformio sphinx recommonmark sphinx_bootstrap_theme
|
||||
- pip install -U platformio
|
||||
|
||||
script:
|
||||
- platformio update
|
||||
- cppcheck --enable=warning src/*.ino -q --force -I src --include=src/ESPEasy.ino --error-exitcode=1
|
||||
# - ./memanalyzer.py ~/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-objdump
|
||||
- PLATFORMIO_BUILD_FLAGS="-D CONTINUOUS_INTEGRATION" platformio run
|
||||
|
||||
# patch platformio core libs for PUYA bug (https://github.com/letscontrolit/ESPEasy/issues/650)
|
||||
- cd patches; ./check_puya_patch; cd ..
|
||||
- PLATFORMIO_BUILD_FLAGS="-D CONTINUOUS_INTEGRATION" platformio run -s --environment dev_ESP8266PUYA_1024
|
||||
|
||||
# - bash ./preflight.sh # make sure input files are OK before wasting time with prereqs
|
||||
# - cppcheck --enable=warning src/*.ino -q --force -I src --include=src/ESPEasy.ino --error-exitcode=1
|
||||
# - ./memanalyzer.py ~/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-objdump
|
||||
- PLATFORMIO_BUILD_FLAGS="-D CONTINUOUS_INTEGRATION" platformio run --target clean
|
||||
- PLATFORMIO_BUILD_FLAGS="-D CONTINUOUS_INTEGRATION" platformio run
|
||||
|
||||
before_deploy:
|
||||
- ./before_deploy
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
The scripts in this directory are so called GIT hooks.
|
||||
Purpose is to do automatic changes after merge, commit and checkout.
|
||||
|
||||
Those files are for a Linux-like environment with basic tools ln, grep, sed and bash.
|
||||
|
||||
Windows users can see them as template.
|
||||
|
||||
To use them simply copy those files into your ESPEasy/.git/hooks directory.
|
||||
@@ -1,44 +1,47 @@
|
||||
|Latest Nightly | Build Status | Docs | Patreon | Ko-Fi | PayPal |
|
||||
|-------|-------|-------|-------|-------|-------|
|
||||
| [](https://github.com/letscontrolit/ESPEasy/releases/latest) | [](https://travis-ci.org/letscontrolit/ESPEasy) | [](https://espeasy.readthedocs.io/en/latest/?badge=latest) | [](https://www.patreon.com/GrovkillenTDer) | [](https://ko-fi.com/grovkillentder) | [](https://www.paypal.me/espeasy) |
|
||||
|
||||
For ways to *support* us, see [this announcement on the forum](https://www.letscontrolit.com/forum/viewtopic.php?f=14&t=5787), or have a look at the [Patreon](https://www.patreon.com/GrovkillenTDer), [Ko-Fi](https://ko-fi.com/grovkillentder) or [PayPal](https://www.paypal.me/espeasy) links above.
|
||||
|
||||
# ESPEasy (development branch)
|
||||
# ESPEasy (v2.0 stable branch)
|
||||
|
||||
Build status: [](https://travis-ci.org/letscontrolit/ESPEasy)
|
||||
|
||||
Introduction and wiki: https://www.letscontrolit.com/wiki/index.php/ESPEasy#Introduction
|
||||
|
||||
**MEGA**
|
||||
:warning:This is the development branch of ESPEasy. All new untested features go into this branch. If you want to do a bugfix, do it on the stable branch, we will merge the fix to the development branch as well.:warning:
|
||||
**v2.0**
|
||||
:warning:This is the stable branch for the next upcoming ESPeasy release (2.0.0).:warning:
|
||||
|
||||
Next stable branch: https://github.com/letscontrolit/ESPEasy/tree/v2.0 (bug fixes only, since oct 2017))
|
||||
If you're living on the edge and want the latest features and bugs, go to the development branch: https://github.com/letscontrolit/ESPEasy/tree/mega
|
||||
|
||||
If you're a developer: Bug fixes go into this v2.0 branch, we will merge them back to the development branch.
|
||||
|
||||
Check here to learn how to use this branch and help us improving ESPEasy: http://www.letscontrolit.com/wiki/index.php/ESPEasy#Source_code_development
|
||||
|
||||
## Versions
|
||||
|
||||
## Automated binary releases
|
||||
* v2.0-YYYYMMDD: These are the nightly builds. Once a day this is automaticly released whenever there are new changes. (this replaces the manual v2.0-devX release system)
|
||||
* v2.0.0-betaX: as soon as we THINK everything is fixed, we start beta testing.
|
||||
* v2.0.0-rcX: release candidates (almost stable)
|
||||
* v2.0.0: This will be the first stable release. After this we will use more standard numbering. Next bugfix release will probably be 2.0.1.
|
||||
|
||||
Every night our build-bot will build a new binary release: https://github.com/letscontrolit/ESPEasy/releases
|
||||
## Firmware binary releases
|
||||
|
||||
The releases are named something like 'mega-20180102' (last number is the build date)
|
||||
Binary development releases are here: https://github.com/letscontrolit/ESPEasy/releases
|
||||
|
||||
Depending on your needs, we release different types of files:
|
||||
Depending on your needs, we release different types of files.
|
||||
|
||||
This uses version v2.0-20181001 as an example.
|
||||
|
||||
Firmware name | Hardware | Included plugins |
|
||||
----------------------------------------------|-------------------------|-----------------------------|
|
||||
ESPEasy_mega-20180102_normal_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable |
|
||||
ESPEasy_mega-20180102_test_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable + Test |
|
||||
ESPEasy_mega-20180102_dev_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable + Test + Development |
|
||||
ESPEasy_mega-20180102_normal_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable |
|
||||
ESPEasy_mega-20180102_test_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable + Test |
|
||||
ESPEasy_mega-20180102_dev_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable + Test + Development |
|
||||
ESPEasy_mega-20180102_normal_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable |
|
||||
ESPEasy_mega-20180102_test_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable + Test |
|
||||
ESPEasy_mega-20180102_dev_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable + Test + Development |
|
||||
ESPEasy_v2.0-20181001_normal_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable |
|
||||
ESPEasy_v2.0-20181001_test_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable + Test |
|
||||
ESPEasy_v2.0-20181001_dev_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable + Test + Development |
|
||||
ESPEasy_v2.0-20181001_normal_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable |
|
||||
ESPEasy_v2.0-20181001_test_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable + Test |
|
||||
ESPEasy_v2.0-20181001_dev_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable + Test + Development |
|
||||
ESPEasy_v2.0-20181001_normal_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable |
|
||||
ESPEasy_v2.0-20181001_test_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable + Test |
|
||||
ESPEasy_v2.0-20181001_dev_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable + Test + Development |
|
||||
|
||||
## More info
|
||||
|
||||
Details and discussion are on the Experimental forum: https://www.letscontrolit.com/forum/viewforum.php?f=18
|
||||
|
||||
Automated builds of the (new) documentation can be found at [ESPEasy.readthedocs.io](https://espeasy.readthedocs.io/en/latest/)
|
||||
We're also on IRC: #ESPEasy @freenode
|
||||
|
||||
@@ -1,70 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
VERSION=$(git describe)
|
||||
TMP_DIST=`mktemp -d`
|
||||
CURPATH=`pwd`
|
||||
|
||||
if [ ! -d ${TMP_DIST} ]; then
|
||||
# Could not create temp dir, so exit
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#Naming convention:
|
||||
# ESP_Easy_[github version]_[plugin set]_[chip type]_[flash memory].bin
|
||||
|
||||
mkdir -p ${TMP_DIST}
|
||||
cp -r dist/* ${TMP_DIST}/
|
||||
|
||||
if [ -d "docs/build" ]; then
|
||||
# Docs have been created
|
||||
mkdir -p ${TMP_DIST}/docs
|
||||
cp -r docs/build/* ${TMP_DIST}/docs/
|
||||
fi
|
||||
|
||||
|
||||
for ENV in \
|
||||
normal_ESP8266_1024 \
|
||||
normal_ESP8266_4096 \
|
||||
normal_ESP8285_1024 \
|
||||
normal_IR_ESP8266_4096 \
|
||||
normal_core_241_ESP8266_1024 \
|
||||
normal_core_241_ESP8266_4096 \
|
||||
normal_ESP8266_1024_DOUT \
|
||||
test_ESP8266_1024\
|
||||
test_ESP8266_4096\
|
||||
test_ESP8266_4096_VCC\
|
||||
test_ESP8266_1024_VCC\
|
||||
test_ESP8285_1024\
|
||||
dev_ESP8266_1024\
|
||||
dev_ESP8266_4096\
|
||||
dev_ESP8285_1024\
|
||||
hard_SONOFF_POW_4M\
|
||||
minimal_ESP8266_1024_OTA\
|
||||
minimal_ESP8285_1024_OTA\
|
||||
esp32dev\
|
||||
esp32test_1M8_partition;\
|
||||
dev_ESP8266PUYA_1024\
|
||||
dev_ESP8266PUYA_1024_VCC;\
|
||||
do
|
||||
echo
|
||||
echo "### Deploying environment $ENV for version $VERSION"
|
||||
BIN=.pioenvs/${ENV}/ESP_Easy_${VERSION}_${ENV}.bin
|
||||
cp .pioenvs/${ENV}/firmware.bin $BIN
|
||||
python2 crc2.py $BIN
|
||||
mv $BIN "${TMP_DIST}/bin/ESP_Easy_${VERSION}_${ENV}.bin"
|
||||
BIN=.pioenvs/$ENV/firmware.bin
|
||||
cp $BIN dist/"ESP_Easy_$VERSION""_$ENV.bin"
|
||||
done
|
||||
|
||||
|
||||
#create a source structure that is the same as the original ESPEasy project (and works with the howto on the wiki)
|
||||
#rm -rf dist/Source 2>/dev/null
|
||||
rm -rf dist/Source 2>/dev/null
|
||||
mkdir dist/Source
|
||||
cp -r lib dist/Source/
|
||||
cp -r src dist/Source/
|
||||
cp platformio.ini dist/Source/
|
||||
|
||||
mkdir -p ${TMP_DIST}/source
|
||||
cp -r lib ${TMP_DIST}/source/
|
||||
cp -r src ${TMP_DIST}/source/
|
||||
cp platformio.ini ${TMP_DIST}/source/
|
||||
|
||||
cd ${TMP_DIST}
|
||||
cd dist
|
||||
|
||||
echo
|
||||
echo "### Creating zip archive"
|
||||
zip ${CURPATH}/ESPEasy_$VERSION.zip -r .
|
||||
|
||||
rm -Rf ${TMP_DIST}/* 2>/dev/null
|
||||
rmdir ${TMP_DIST}
|
||||
zip ../ESPEasy_$VERSION.zip -r .
|
||||
|
||||
@@ -1,116 +0,0 @@
|
||||
|
||||
import sys
|
||||
import binascii
|
||||
import struct
|
||||
import md5
|
||||
import os
|
||||
MD5DUMMY = "MD5_MD5_MD5_MD5_BoundariesOfTheSegmentsGoHere..." #48 chars
|
||||
FILENAMEDUMMY = "ThisIsTheDummyPlaceHolderForTheBinaryFilename64ByteLongFilenames" #64 chars
|
||||
|
||||
MemorySegmentStart,MemorySegmentEnd,MemoryContent=[],[],[]
|
||||
|
||||
##################################################################
|
||||
# this subroutine shows the segments of a part
|
||||
##################################################################
|
||||
def showSegments (fileContent,offset):
|
||||
global MemorySegmentStart, MemorySegmentEnd, MemoryContent
|
||||
header = struct.unpack("ii", fileContent[offset:offset+8])
|
||||
herestr =""
|
||||
herestr2 =""
|
||||
MemorySegmentStart.append(struct.pack("I",header[0]))
|
||||
MemorySegmentEnd.append(struct.pack("I",header[0]+header[1]))
|
||||
MemoryContent.append(fileContent[offset+8:offset+8+header[1]])
|
||||
if fileContent.find( MD5DUMMY, offset+8, offset+8+header[1]) >0 :
|
||||
herestr= " <-- CRC is here."
|
||||
if fileContent.find( FILENAMEDUMMY, offset+8, offset+8+header[1]) >0 :
|
||||
herestr2= " <-- filename is here."
|
||||
print ("SEGMENT "+ str(len(MemorySegmentStart)-1)+ ": memory position: " + hex(header[0])+" to " + hex(header[0]+header[1]) + " length: " + hex(header[1])+herestr+herestr2)
|
||||
#print ("first byte positoin in file: " + hex( offset+8))
|
||||
#print ("last byte postion in file: " + hex(offset+8+header[1]-1))
|
||||
return (8+offset+ header[1]); # return start of next segment
|
||||
|
||||
##################################################################
|
||||
# this subroutine shows the parts of a binary file
|
||||
##################################################################
|
||||
def showParts(fileContent, offset):
|
||||
header = struct.unpack("BBBBi", fileContent[offset:offset+8])
|
||||
print ('\n\nBINARY PART\nSegments: ') + (hex(header[1]))
|
||||
nextpos =offset+8
|
||||
for x in range (0,header[1]):
|
||||
nextpos = showSegments(fileContent,nextpos)
|
||||
nextSegmentOffset = (fileContent.find("\xe9", nextpos))
|
||||
return nextSegmentOffset
|
||||
|
||||
##################################################################
|
||||
# MAIN
|
||||
##################################################################
|
||||
|
||||
#if len(sys.argv) !=2 :
|
||||
# print ("please give a filename")
|
||||
# k=input("press close to exit")
|
||||
# sys.exit(1)
|
||||
FileName = sys.argv[1]#"C:/ArduinoPortable/sketchbooks/build/sketch_jan15a.ino.bin"
|
||||
#FileName = "C:/ArduinoPortable/sketchbooks/build/sketch_jan15a.ino.bin"
|
||||
print( "\n\nReplacing dummy MD5 checksum in .bin file")
|
||||
|
||||
|
||||
|
||||
with open(FileName, mode='rb') as file: # b is important -> binary
|
||||
nextpos =0;
|
||||
fileContent = file.read()
|
||||
while nextpos >=0:
|
||||
nextpos = showParts(fileContent,nextpos)
|
||||
|
||||
startArray,endArray,hashString = "","",""
|
||||
includeStr = "hash includes segments:"
|
||||
# memory sections:
|
||||
# 0: bootloader (not readable)
|
||||
# 1: program memory (SPI flash)
|
||||
# 2: unknown but stable
|
||||
# 3: RAM (initialized by bin file. Can be read but changes as you go :-( )
|
||||
# 4: RAM
|
||||
|
||||
for i in (1,2 ): # use only stable segments, must be 4 in total. We use 2.
|
||||
startArray =startArray + MemorySegmentStart[i]
|
||||
endArray = endArray + MemorySegmentEnd[i]
|
||||
hashString =hashString + MemoryContent[i]
|
||||
with open(FileName+str(i), mode='wb') as file: # b is important -> binary
|
||||
file.write(MemoryContent[i])
|
||||
includeStr = includeStr +" "+ str(i)
|
||||
print (includeStr)
|
||||
# IMPORTANT: pad array with zeros if you use only 3 segments (see above)
|
||||
while len(startArray) < 16 :
|
||||
startArray =startArray + struct.pack("I",0)
|
||||
endArray = endArray + struct.pack("I",0)
|
||||
# debug print (binascii.hexlify(startArray))
|
||||
# debug print (binascii.hexlify(endArray))
|
||||
if (len(endArray) + len (startArray)) != 32 :
|
||||
print("ERROR: please make sure you add / remove padding if you change the semgents.")
|
||||
|
||||
BinaryFileName = "";
|
||||
if fileContent.find( FILENAMEDUMMY) < 0:
|
||||
print("ERROR: FILENAMEDUMMY dummy not found in binary")
|
||||
else:
|
||||
BinaryFileName=os.path.basename(FileName) +"\0"
|
||||
if len(BinaryFileName) >64: # check that filename is <48 chars
|
||||
BinaryFileName=BinaryFileName[0:64] # truncate if necessary. 49th char in ESP is zero already
|
||||
else:
|
||||
BinaryFileName= BinaryFileName.ljust(64,'\0'); # pad with zeros.
|
||||
|
||||
|
||||
if fileContent.find( MD5DUMMY) < 0:
|
||||
print("ERROR: MD5 dummy not found in binary")
|
||||
else:
|
||||
hashString=hashString.replace (MD5DUMMY,"",1)
|
||||
m = md5.new()
|
||||
m.update (hashString) #use segment 1
|
||||
md5hash = m.digest()
|
||||
print("MD5 hash: "+ m.hexdigest())
|
||||
print("\nwriting output file:\n" + FileName)
|
||||
|
||||
fileContent=fileContent.replace(MD5DUMMY,md5hash+startArray+endArray)
|
||||
fileContent=fileContent.replace(FILENAMEDUMMY,BinaryFileName)
|
||||
|
||||
with open(FileName, mode='wb') as file: # b is important -> binary
|
||||
file.write(fileContent)
|
||||
#k=input("press close to exit")
|
||||
@@ -1,66 +0,0 @@
|
||||
_____ ____ ____
|
||||
| ____/ ___|| _ \ ___ __ _ ___ _ _
|
||||
| _| \___ \| |_) / _ \/ _` / __| | | |
|
||||
| |___ ___) | __/ __/ (_| \__ \ |_| |
|
||||
|_____|____/|_| \___|\__,_|___/\__, |
|
||||
|___/
|
||||
|
||||
|
||||
This is the distribution folder for ESPeasy.
|
||||
In here you will find a flash tool to program the ESP module.
|
||||
|
||||
Also a number of binary images is included.
|
||||
|
||||
The filename is quite descriptive:
|
||||
ESP_Easy_mega-<date>_<buildType>_<chip>_<memorySize>.bin
|
||||
|
||||
Build type can be: (differ in included plugins)
|
||||
- normal => Only Stable plugins and controllers
|
||||
- test => Stable + Testing
|
||||
- dev => Stable + Testing + Development
|
||||
|
||||
There is also a number of special builds:
|
||||
- normal_IR => "Normal" + IR receiver/transmitter plugins and library
|
||||
- hard_xxxxx => Special builds for some off-the-shelf hardware.
|
||||
- normal_core_241 => "Normal" using core 2.4.1, since 2.4.2 has issues with PWM
|
||||
- minimal_ESP82xx_1024_OTA => Minimum number of plugins and a limited set of controllers included to be able to perform a 2-step OTA on 1 MB flash nodes.
|
||||
|
||||
Chip can be:
|
||||
- ESP8266 => Most likely option
|
||||
- ESP8285 => Used in some Sonoff modules
|
||||
- ESP32 => Experimental support at this moment
|
||||
|
||||
MemorySize can be:
|
||||
- 1024 => 1 MB flash modules (e.g. almost all Sonoff modules)
|
||||
- 2048 => 2 MB flash modules (e.g. Shelly1/WROOM02)
|
||||
- 4096 => 4 MB flash modules (e.g. NodeMCU/ESP32)
|
||||
|
||||
ESP32 now has 2 builds:
|
||||
- esp32dev Using the default partition layout (1.4 MB for the sketch)
|
||||
- esp32test_1M8_partition Larger sketch partition (1.8MB) smaller SPIFFS (316 kB)
|
||||
|
||||
Please note that changing between those versions will destroy the settings!
|
||||
The SPIFFS partition will be lost and that contains all settings.
|
||||
|
||||
|
||||
To help recover from a bad flash, there are also blank images included.
|
||||
- blank_1MB.bin
|
||||
- blank_2MB.bin
|
||||
- blank_4MB.bin
|
||||
|
||||
When the wrong image is flashed, or the module behaves unstable, or is in a reboot loop,
|
||||
flash these images first and then the right image for the module.
|
||||
|
||||
ESP.Easy.Flasher.exe...
|
||||
... is the new flashing tool for ESP Easy. You need to run it in elevated mode (as admin)
|
||||
for it to fetch the COM ports correctly. If you want you may save YOUR settings using the
|
||||
"Save as default settings" button in the lower left corner. If the window is too big or
|
||||
too small you can experiment with the "Pixels Per Inch" variable in the
|
||||
..\Settings\Default.ini file. Setting it to =96 is working for most users but the
|
||||
application will try to find the most optimal value by default. Sometimes it fails to
|
||||
do that. More information about the tool is found here:
|
||||
https://github.com/Grovkillen/ESP_Easy_Flasher
|
||||
|
||||
Further reading:
|
||||
For more information, see: https://github.com/letscontrolit/ESPEasy
|
||||
Or our forum: https://www.letscontrolit.com/forum/
|
||||
@@ -1,19 +0,0 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
@@ -1,35 +0,0 @@
|
||||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set SOURCEDIR=source
|
||||
set BUILDDIR=build
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.http://sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
|
||||
|
||||
:end
|
||||
popd
|
||||
@@ -1,3 +0,0 @@
|
||||
recommonmark==0.4.0
|
||||
Sphinx==1.8.2
|
||||
sphinx-bootstrap-theme==0.6.5
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C001_page:
|
||||
|
||||
|C001_typename|
|
||||
==================================================
|
||||
|
||||
|C001_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C001_type|
|
||||
|
||||
Name: |C001_name|
|
||||
|
||||
Status: |C001_status|
|
||||
|
||||
GitHub: |C001_github|_
|
||||
|
||||
Maintainer: |C001_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C002_page:
|
||||
|
||||
|C002_typename|
|
||||
==================================================
|
||||
|
||||
|C002_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C002_type|
|
||||
|
||||
Name: |C002_name|
|
||||
|
||||
Status: |C002_status|
|
||||
|
||||
GitHub: |C002_github|_
|
||||
|
||||
Maintainer: |C002_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C003_page:
|
||||
|
||||
|C003_typename|
|
||||
==================================================
|
||||
|
||||
|C003_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C003_type|
|
||||
|
||||
Name: |C003_name|
|
||||
|
||||
Status: |C003_status|
|
||||
|
||||
GitHub: |C003_github|_
|
||||
|
||||
Maintainer: |C003_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C004_page:
|
||||
|
||||
|C004_typename|
|
||||
==================================================
|
||||
|
||||
|C004_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C004_type|
|
||||
|
||||
Name: |C004_name|
|
||||
|
||||
Status: |C004_status|
|
||||
|
||||
GitHub: |C004_github|_
|
||||
|
||||
Maintainer: |C004_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C005_page:
|
||||
|
||||
|C005_typename|
|
||||
==================================================
|
||||
|
||||
|C005_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C005_type|
|
||||
|
||||
Name: |C005_name|
|
||||
|
||||
Status: |C005_status|
|
||||
|
||||
GitHub: |C005_github|_
|
||||
|
||||
Maintainer: |C005_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C006_page:
|
||||
|
||||
|C006_typename|
|
||||
==================================================
|
||||
|
||||
|C006_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C006_type|
|
||||
|
||||
Name: |C006_name|
|
||||
|
||||
Status: |C006_status|
|
||||
|
||||
GitHub: |C006_github|_
|
||||
|
||||
Maintainer: |C006_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C007_page:
|
||||
|
||||
|C007_typename|
|
||||
==================================================
|
||||
|
||||
|C007_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C007_type|
|
||||
|
||||
Name: |C007_name|
|
||||
|
||||
Status: |C007_status|
|
||||
|
||||
GitHub: |C007_github|_
|
||||
|
||||
Maintainer: |C007_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C008_page:
|
||||
|
||||
|C008_typename|
|
||||
==================================================
|
||||
|
||||
|C008_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C008_type|
|
||||
|
||||
Name: |C008_name|
|
||||
|
||||
Status: |C008_status|
|
||||
|
||||
GitHub: |C008_github|_
|
||||
|
||||
Maintainer: |C008_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C009_page:
|
||||
|
||||
|C009_typename|
|
||||
==================================================
|
||||
|
||||
|C009_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C009_type|
|
||||
|
||||
Name: |C009_name|
|
||||
|
||||
Status: |C009_status|
|
||||
|
||||
GitHub: |C009_github|_
|
||||
|
||||
Maintainer: |C009_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C010_page:
|
||||
|
||||
|C010_typename|
|
||||
==================================================
|
||||
|
||||
|C010_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C010_type|
|
||||
|
||||
Name: |C010_name|
|
||||
|
||||
Status: |C010_status|
|
||||
|
||||
GitHub: |C010_github|_
|
||||
|
||||
Maintainer: |C010_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C011_page:
|
||||
|
||||
|C011_typename|
|
||||
==================================================
|
||||
|
||||
|C011_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C011_type|
|
||||
|
||||
Name: |C011_name|
|
||||
|
||||
Status: |C011_status|
|
||||
|
||||
GitHub: |C011_github|_
|
||||
|
||||
Maintainer: |C011_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,39 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C012_page:
|
||||
|
||||
|C012_typename|
|
||||
==================================================
|
||||
|
||||
|C012_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C012_type|
|
||||
|
||||
Name: |C012_name|
|
||||
|
||||
Status: |C012_status|
|
||||
|
||||
GitHub: |C012_github|_
|
||||
|
||||
Maintainer: |C012_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -1,263 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
.. _C013_page:
|
||||
|
||||
|C013_typename|
|
||||
==================================================
|
||||
|
||||
|C013_shortinfo|
|
||||
|
||||
Controller details
|
||||
------------------
|
||||
|
||||
Type: |C013_type|
|
||||
|
||||
Name: |C013_name|
|
||||
|
||||
Status: |C013_status|
|
||||
|
||||
GitHub: |C013_github|_
|
||||
|
||||
Maintainer: |C013_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|improved|
|
||||
Implementation of secure communication and check for valid data.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
ESPEasy is able to communicate between nodes itself.
|
||||
It is an IANA registered service: `espeasy-p2p <https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=8266#ESPeasy>`_
|
||||
|
||||
* Service Name: espeasy-p2p
|
||||
* Port Number: 8266
|
||||
* Transport Protocol: UDP
|
||||
* Description: ESPeasy peer-2-peer communication
|
||||
* Registration date: 2018-11-28
|
||||
|
||||
This protocol is targeted specific for use by ESPeasy to let ESPeasy nodes
|
||||
communicate with each other to create a big swarm of nodes working together
|
||||
without the need for a hosted service like MQTT, which needs a central broker.
|
||||
|
||||
It is currently used for:
|
||||
|
||||
* Discovery of nodes
|
||||
* Sharing sensor data among nodes
|
||||
|
||||
Later updates may add:
|
||||
|
||||
* Distribution of settings
|
||||
* Sending commands
|
||||
|
||||
Sending & Known Nodes
|
||||
---------------------
|
||||
|
||||
ESPEasy keeps track of all nodes advertising themselves via Sysinfo messages.
|
||||
|
||||
This knowledge is kept in a ``NodeStruct`` for at least 10 minutes.
|
||||
If a node is not sending a Sysinfo message in this period, it will be removed from the list.
|
||||
|
||||
Data Format Versions
|
||||
--------------------
|
||||
|
||||
During the IANA port assignment assessment, a number of issues were pointed out by their experts.
|
||||
|
||||
* Versioning
|
||||
* Security
|
||||
* Data validation
|
||||
* Traffic limiting and congestion handling
|
||||
|
||||
There are now 2 versions available:
|
||||
|
||||
* Version "0" - No security, no data validation.
|
||||
* Version "1" - Introduced in ESPeasy build <???>
|
||||
|
||||
Data Format Version 0
|
||||
---------------------
|
||||
|
||||
Sending and receiving is causing issues when the swarm of nodes increases.
|
||||
|
||||
* All nodes with this service enabled will advertise their presence every 30 seconds via broadcast
|
||||
* Nodes can not subscribe to receiving sensor data updates
|
||||
* Non broadcast messages are sent to each individual known node, regardless if the receiving node will use the data
|
||||
* Sensor Data messages are sent to each individual known node
|
||||
* Sensor Info updates are sent to each individual known node when a plugin coupled to this plugin is saved.
|
||||
|
||||
Of each known node the following data is kept:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
struct NodeStruct
|
||||
{
|
||||
String nodeName;
|
||||
byte ip[4];
|
||||
uint16_t build;
|
||||
byte age;
|
||||
byte nodeType;
|
||||
};
|
||||
|
||||
The key to index this ``NodeStruct`` is the nodes unit number.
|
||||
|
||||
ASCII Data
|
||||
~~~~~~~~~~
|
||||
|
||||
Command Message
|
||||
***************
|
||||
|
||||
First byte is not 0xFF.
|
||||
|
||||
The entire message processed as a command like this:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
packetBuffer[len] = 0;
|
||||
String request = &packetBuffer[0];
|
||||
struct EventStruct TempEvent;
|
||||
parseCommandString(&TempEvent, request);
|
||||
TempEvent.Source = VALUE_SOURCE_SYSTEM;
|
||||
if (!PluginCall(PLUGIN_WRITE, &TempEvent, request)) {
|
||||
ExecuteCommand(VALUE_SOURCE_SYSTEM, &packetBuffer[0]);
|
||||
}
|
||||
|
||||
As can be seen, no checks for size, and it is just expected to be a valid ESPeasy command.
|
||||
Also no check to see if the command is supported by the receiving end and no feedback to the sender.
|
||||
|
||||
Binary Data
|
||||
~~~~~~~~~~~
|
||||
|
||||
Binary data is marked with the first byte 0xFF.
|
||||
|
||||
On the receiving end, it is packed in an event in the ``Data`` field and processed like this:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
struct EventStruct TempEvent;
|
||||
TempEvent.Data = reinterpret_cast<byte*>(&packetBuffer[0]);
|
||||
TempEvent.Par1 = remoteIP[3];
|
||||
TempEvent.Par2 = len;
|
||||
PluginCall(PLUGIN_UDP_IN, &TempEvent, dummyString);
|
||||
CPluginCall(CPLUGIN_UDP_IN, &TempEvent);
|
||||
|
||||
N.B. only the controller C013 implements code for handling UDP data.
|
||||
|
||||
Message types supported, determined by the 2nd byte:
|
||||
|
||||
* 1: Sysinfo message
|
||||
* 2: Sensor info pull request (not implemented)
|
||||
* 3: Sensor info
|
||||
* 4: Sensor data pull request (not implemented)
|
||||
* 5: Sensor data
|
||||
|
||||
Sysinfo Message
|
||||
***************
|
||||
|
||||
There are 2 types of Sysinfo messages, a standard and an extended message.
|
||||
The extended message starts with the same information as the standard one.
|
||||
|
||||
Standard Sysinfo message (13 bytes):
|
||||
|
||||
* 2 bytes marker (255 , 1)
|
||||
* 6 byte MAC address
|
||||
* 4 byte IP address
|
||||
* 1 byte unit number
|
||||
|
||||
Extended Sysinfo message (13 + 28 = 41 bytes):
|
||||
|
||||
* 2 bytes ESPeasy data version number (LSB, MSB)
|
||||
* 25 bytes node name
|
||||
* 1 byte node type
|
||||
|
||||
The node type is defined as:
|
||||
|
||||
* 1 = "ESP Easy"
|
||||
* 17 = "ESP Easy Mega"
|
||||
* 33 = "ESP Easy 32"
|
||||
* 65 = "Arduino Easy"
|
||||
* 81 = "Nano Easy"
|
||||
|
||||
Sensor Info message
|
||||
*******************
|
||||
|
||||
Sensor Info messages are just a description of a shared sensor.
|
||||
It contains some information to setup a new sensor on the receiving end.
|
||||
|
||||
These messages are just a serialized byte stream of ``struct C013_SensorInfoStruct`` .
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
struct C013_SensorInfoStruct
|
||||
{
|
||||
byte header = 255;
|
||||
byte ID = 3;
|
||||
byte sourcelUnit;
|
||||
byte destUnit;
|
||||
byte sourceTaskIndex;
|
||||
byte destTaskIndex;
|
||||
byte deviceNumber;
|
||||
char taskName[26];
|
||||
char ValueNames[VARS_PER_TASK][26];
|
||||
};
|
||||
|
||||
|
||||
Sensor Data message
|
||||
*******************
|
||||
|
||||
|
||||
These messages are just a serialized byte stream of ``struct C013_SensorDataStruct`` .
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
struct C013_SensorDataStruct
|
||||
{
|
||||
byte header = 255;
|
||||
byte ID = 5;
|
||||
byte sourcelUnit;
|
||||
byte destUnit;
|
||||
byte sourceTaskIndex;
|
||||
byte destTaskIndex;
|
||||
float Values[VARS_PER_TASK];
|
||||
};
|
||||
|
||||
|
||||
Data Format Version 1
|
||||
---------------------
|
||||
|
||||
This version remains compatible with version 0 for backwards compatibility.
|
||||
It is using the "next" unused marker.
|
||||
|
||||
All messages will have a standard packet data format:
|
||||
|
||||
* 2 bytes Marker (255 , 6)
|
||||
* 2 bytes Version => also determines data offset (header length)
|
||||
* 2 bytes Message type
|
||||
* 2 bytes Size of data block in "N" blocks of 16 bytes
|
||||
* 2 bytes Key/group selector
|
||||
* 2 bytes Sequence number
|
||||
* (16 x N) bytes Data block AES encrypted data (including 2 bytes checksum)
|
||||
* 2 bytes Packet checksum
|
||||
|
||||
This allows to:
|
||||
|
||||
* Distinguish data format versions
|
||||
* Filter on message type before allocating large buffers
|
||||
* Use multiple (pre-shared) encryption keys to have several levels of security or just several groups.
|
||||
* Validate correct transmission of packet (last 2 checksum bytes) before decrypting data.
|
||||
* Allow for larger messages to be sent in sequences. (e.g. firmware upgrades?)
|
||||
* Validate sender and content of data block, since it contains a checksum too, which is part of the encrypted data block.
|
||||
|
||||
Since AES has a block size of 16 bytes (128 bit), the size of the data block is defined as a block of 16 bytes.
|
||||
This allows up-to 1 MB of messages. (2^16 * 2^4 = 2^20)
|
||||
An UDP datagram sent over IPv4 cannot exceed 65,507 bytes (65,535 − 8 byte UDP header − 20 byte IP header).
|
||||
In IPv6 jumbograms it is possible to have UDP packets of size greater than 65,535 bytes.
|
||||
@@ -1,90 +0,0 @@
|
||||
.. include:: _controller_substitutions.repl
|
||||
|
||||
Controller
|
||||
**********
|
||||
|
||||
A controller is a component to enable a plugin to send data elsewhere.
|
||||
|
||||
- Up-to 3 controllers can be active in ESPEasy.
|
||||
- Per plugin up-to 3 active controllers can be selected.
|
||||
- For some controllers an additional parameter can be given.
|
||||
|
||||
For example, Domoticz needs an 'IDX' value to identify the configured entry in
|
||||
Domoticz for which new data is sent.
|
||||
|
||||
Controller Plugins
|
||||
==================
|
||||
|
||||
.. csv-table::
|
||||
:header: "Plugin name", "Plugin status", "Plugin number"
|
||||
:widths: 10, 8, 5
|
||||
|
||||
":ref:`C001_page`","|C001_status|","C001"
|
||||
":ref:`C002_page`","|C002_status|","C002"
|
||||
":ref:`C003_page`","|C003_status|","C003"
|
||||
":ref:`C004_page`","|C004_status|","C004"
|
||||
":ref:`C005_page`","|C005_status|","C005"
|
||||
":ref:`C006_page`","|C006_status|","C006"
|
||||
":ref:`C007_page`","|C007_status|","C007"
|
||||
":ref:`C008_page`","|C008_status|","C008"
|
||||
":ref:`C009_page`","|C009_status|","C009"
|
||||
":ref:`C010_page`","|C010_status|","C010"
|
||||
":ref:`C011_page`","|C011_status|","C011"
|
||||
":ref:`C012_page`","|C012_status|","C012"
|
||||
":ref:`C013_page`","|C013_status|","C013"
|
||||
|
||||
|
||||
Controller Parameters
|
||||
=====================
|
||||
|
||||
Generic fields
|
||||
--------------
|
||||
|
||||
- **Protocol** - The type of controller (e.g. ThingSpeak/OpenHAB MQTT/etc.)
|
||||
- **Locate Controller** - Selection between hostname/IP
|
||||
- **Controller Hostname/IP** - The address to reach the selected service
|
||||
- **Controller Port** - TCP/UDP Port number (0...65536)
|
||||
- **Enabled** - Whether or not the controller is active.
|
||||
|
||||
Send queue parameters
|
||||
---------------------
|
||||
|
||||
Controllers have a queue to keep unsent messages.
|
||||
This queue is used to handle message bursts and also store messages which are recorded
|
||||
before WiFi connection is made or during lost connection.
|
||||
|
||||
- **Minimum Send Interval** - Minimum time between two messages in msec.
|
||||
- **Max Queue Depth** - Maximum length of the buffer queue to keep unsent messages.
|
||||
- **Max Retries** - Maximum number of retries to send a message.
|
||||
- **Full Queue Action** - How to handle when queue is full, ignore new or delete oldest message.
|
||||
- **Client Timeout** - Timeout in msec for an network connection used by the controller.
|
||||
- **Check Reply** - When set to false, a sent message is considered always successful.
|
||||
|
||||
|
||||
Sample ThingSpeak configuration
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Some controllers, like ThingSpeak, need a specific configuration.
|
||||
ThingSpeak only allows a message every 15 seconds for the free accounts.
|
||||
|
||||
- **Minimum Send Interval** - 15000 msec
|
||||
- **Max Queue Depth** - 1 (only report the last value)
|
||||
- **Max Retries** - 2
|
||||
- **Full Queue Action** - Delete Oldest
|
||||
- **Client Timeout** - 500 msec (server is online, so timeout must be a bit longer)
|
||||
|
||||
|
||||
Controller user credentials
|
||||
---------------------------
|
||||
|
||||
- **Controller User** - User name (optional)
|
||||
- **Controller Password** - Password (optional)
|
||||
|
||||
MQTT related settings
|
||||
---------------------
|
||||
|
||||
- **Controller Subscribe** - Subscribe to the given topic.
|
||||
- **Controller Publish** - Publish to the given topic.
|
||||
- **Controller lwl topic** - Topic to which LWT (Last Will Testament) messages should be sent.
|
||||
- **LWT Connect Message** - Connection established message.
|
||||
- **LWT Disconnect Message** - Connection lost message (sent to broker during connect and published by broker when connection is lost)
|
||||
@@ -1,145 +0,0 @@
|
||||
|
||||
|
||||
|
||||
.. |C001_name| replace:: :cyan:`Domoticz HTTP`
|
||||
.. |C001_type| replace:: :cyan:`Controller`
|
||||
.. |C001_typename| replace:: :cyan:`Controller - Domoticz HTTP`
|
||||
.. |C001_status| replace:: :green:`NORMAL`
|
||||
.. |C001_github| replace:: C001.ino
|
||||
.. _C001_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C001.ino
|
||||
.. |C001_usedby| replace:: `.`
|
||||
.. |C001_shortinfo| replace:: `.`
|
||||
.. |C001_maintainer| replace:: `.`
|
||||
.. |C001_compileinfo| replace:: `.`
|
||||
|
||||
.. |C002_name| replace:: :cyan:`Domoticz MQTT`
|
||||
.. |C002_type| replace:: :cyan:`Controller`
|
||||
.. |C002_typename| replace:: :cyan:`Controller - Domoticz MQTT`
|
||||
.. |C002_status| replace:: :green:`NORMAL`
|
||||
.. |C002_github| replace:: C002.ino
|
||||
.. _C002_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C002.ino
|
||||
.. |C002_usedby| replace:: `.`
|
||||
.. |C002_shortinfo| replace:: `.`
|
||||
.. |C002_maintainer| replace:: `.`
|
||||
.. |C002_compileinfo| replace:: `.`
|
||||
|
||||
.. |C003_name| replace:: :cyan:`Nodo Telnet`
|
||||
.. |C003_type| replace:: :cyan:`Controller`
|
||||
.. |C003_typename| replace:: :cyan:`Controller - Nodo Telnet`
|
||||
.. |C003_status| replace:: :green:`NORMAL`
|
||||
.. |C003_github| replace:: C003.ino
|
||||
.. _C003_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C003.ino
|
||||
.. |C003_usedby| replace:: `.`
|
||||
.. |C003_shortinfo| replace:: `.`
|
||||
.. |C003_maintainer| replace:: `.`
|
||||
.. |C003_compileinfo| replace:: `.`
|
||||
|
||||
.. |C004_name| replace:: :cyan:`ThingSpeak`
|
||||
.. |C004_type| replace:: :cyan:`Controller`
|
||||
.. |C004_typename| replace:: :cyan:`Controller - ThingSpeak`
|
||||
.. |C004_status| replace:: :green:`NORMAL`
|
||||
.. |C004_github| replace:: C004.ino
|
||||
.. _C004_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C004.ino
|
||||
.. |C004_usedby| replace:: `.`
|
||||
.. |C004_shortinfo| replace:: `.`
|
||||
.. |C004_maintainer| replace:: `.`
|
||||
.. |C004_compileinfo| replace:: `.`
|
||||
|
||||
.. |C005_name| replace:: :cyan:`OpenHAB MQTT`
|
||||
.. |C005_type| replace:: :cyan:`Controller`
|
||||
.. |C005_typename| replace:: :cyan:`Controller - OpenHAB MQTT`
|
||||
.. |C005_status| replace:: :green:`NORMAL`
|
||||
.. |C005_github| replace:: C005.ino
|
||||
.. _C005_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C005.ino
|
||||
.. |C005_usedby| replace:: `.`
|
||||
.. |C005_shortinfo| replace:: `.`
|
||||
.. |C005_maintainer| replace:: `.`
|
||||
.. |C005_compileinfo| replace:: `.`
|
||||
|
||||
.. |C006_name| replace:: :cyan:`PiDome MQTT`
|
||||
.. |C006_type| replace:: :cyan:`Controller`
|
||||
.. |C006_typename| replace:: :cyan:`Controller - PiDome MQTT`
|
||||
.. |C006_status| replace:: :green:`NORMAL`
|
||||
.. |C006_github| replace:: C006.ino
|
||||
.. _C006_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C006.ino
|
||||
.. |C006_usedby| replace:: `.`
|
||||
.. |C006_shortinfo| replace:: `.`
|
||||
.. |C006_maintainer| replace:: `.`
|
||||
.. |C006_compileinfo| replace:: `.`
|
||||
|
||||
.. |C007_name| replace:: :cyan:`Emoncms`
|
||||
.. |C007_type| replace:: :cyan:`Controller`
|
||||
.. |C007_typename| replace:: :cyan:`Controller - Emoncms`
|
||||
.. |C007_status| replace:: :green:`NORMAL`
|
||||
.. |C007_github| replace:: C007.ino
|
||||
.. _C007_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C007.ino
|
||||
.. |C007_usedby| replace:: `.`
|
||||
.. |C007_shortinfo| replace:: `.`
|
||||
.. |C007_maintainer| replace:: `.`
|
||||
.. |C007_compileinfo| replace:: `.`
|
||||
|
||||
.. |C008_name| replace:: :cyan:`Generic HTTP`
|
||||
.. |C008_type| replace:: :cyan:`Controller`
|
||||
.. |C008_typename| replace:: :cyan:`Controller - Generic HTTP`
|
||||
.. |C008_status| replace:: :green:`NORMAL`
|
||||
.. |C008_github| replace:: C008.ino
|
||||
.. _C008_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C008.ino
|
||||
.. |C008_usedby| replace:: `.`
|
||||
.. |C008_shortinfo| replace:: `.`
|
||||
.. |C008_maintainer| replace:: `.`
|
||||
.. |C008_compileinfo| replace:: `.`
|
||||
|
||||
.. |C009_name| replace:: :cyan:`FHEM HTTP`
|
||||
.. |C009_type| replace:: :cyan:`Controller`
|
||||
.. |C009_typename| replace:: :cyan:`Controller - FHEM HTTP`
|
||||
.. |C009_status| replace:: :green:`NORMAL`
|
||||
.. |C009_github| replace:: C009.ino
|
||||
.. _C009_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C009.ino
|
||||
.. |C009_usedby| replace:: `.`
|
||||
.. |C009_shortinfo| replace:: `.`
|
||||
.. |C009_maintainer| replace:: `.`
|
||||
.. |C009_compileinfo| replace:: `.`
|
||||
|
||||
.. |C010_name| replace:: :cyan:`Generic UDP`
|
||||
.. |C010_type| replace:: :cyan:`Controller`
|
||||
.. |C010_typename| replace:: :cyan:`Controller - Generic UDP`
|
||||
.. |C010_status| replace:: :green:`NORMAL`
|
||||
.. |C010_github| replace:: C010.ino
|
||||
.. _C010_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C010.ino
|
||||
.. |C010_usedby| replace:: `.`
|
||||
.. |C010_shortinfo| replace:: `.`
|
||||
.. |C010_maintainer| replace:: `.`
|
||||
.. |C010_compileinfo| replace:: `.`
|
||||
|
||||
.. |C011_name| replace:: :cyan:`Generic HTTP`
|
||||
.. |C011_type| replace:: :cyan:`Controller`
|
||||
.. |C011_typename| replace:: :cyan:`Controller - Generic HTTP`
|
||||
.. |C011_status| replace:: :yellow:`TESTING`
|
||||
.. |C011_github| replace:: C011.ino
|
||||
.. _C011_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C011.ino
|
||||
.. |C011_usedby| replace:: `.`
|
||||
.. |C011_shortinfo| replace:: `.`
|
||||
.. |C011_maintainer| replace:: `.`
|
||||
.. |C011_compileinfo| replace:: `.`
|
||||
|
||||
.. |C012_name| replace:: :cyan:`Blynk`
|
||||
.. |C012_type| replace:: :cyan:`Controller`
|
||||
.. |C012_typename| replace:: :cyan:`Controller - Blynk`
|
||||
.. |C012_status| replace:: :yellow:`TESTING`
|
||||
.. |C012_github| replace:: C012.ino
|
||||
.. _C012_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C012.ino
|
||||
.. |C012_usedby| replace:: `.`
|
||||
.. |C012_shortinfo| replace:: `.`
|
||||
.. |C012_maintainer| replace:: `.`
|
||||
.. |C012_compileinfo| replace:: `.`
|
||||
|
||||
.. |C013_name| replace:: :cyan:`ESPEasy P2P Networking`
|
||||
.. |C013_type| replace:: :cyan:`Controller`
|
||||
.. |C013_typename| replace:: :cyan:`Controller - ESPEasy P2P Networking`
|
||||
.. |C013_status| replace:: :green:`NORMAL`
|
||||
.. |C013_github| replace:: C013.ino
|
||||
.. _C013_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_C013.ino
|
||||
.. |C013_usedby| replace:: `.`
|
||||
.. |C013_shortinfo| replace:: `.`
|
||||
.. |C013_maintainer| replace:: `.`
|
||||
.. |C013_compileinfo| replace:: `.`
|
||||
@@ -1,138 +0,0 @@
|
||||
About Us
|
||||
********
|
||||
The ESP Easy project is being handled by the core team of TD-er and Grovkillen.
|
||||
TD-er being the head of backend and Grovkillen being head of the frontend.
|
||||
We both dig down into each others areas of responsible on a daily basis though.
|
||||
|
||||
Other than us we have around 100 volunteers that helping us maintain
|
||||
and improve the source code.
|
||||
|
||||
History
|
||||
=======
|
||||
ESP Easy has gone through a lot of changes over the last years and here's some
|
||||
of the major milestones.
|
||||
|
||||
Early days (Nodo Uno)
|
||||
---------------------
|
||||
It's somewhat unknown how it all started but Paul Tonkes (part of the Nodo team)
|
||||
built a IR (infrared) to Kaku controller because he was not happy with the
|
||||
commercial version. That unit came to the world named as Nodo (Uno).
|
||||
|
||||
04/2010 (Nodo Due)
|
||||
------------------
|
||||
Taken from the old Nodo website at the time that the Nodo update was introduced
|
||||
(named Nodo Due). During this time, a nice production class Arduino Shield was
|
||||
also built.
|
||||
|
||||
10/2011 (Joining the Nodo community)
|
||||
------------------------------------
|
||||
The founder of the ESP Easy project, Mvb, read about the Nodo project and
|
||||
ordered his first Nodo Arduino board from the Nodo shop. He was using it to
|
||||
control Kaku lights around his house.
|
||||
|
||||
03/2012 (Nodo Mega)
|
||||
--------------------
|
||||
Beta Nodo Mega was released, based on Arduino Mega 2560 board with Ethernet
|
||||
Shield. Using a hosted web application.
|
||||
|
||||
05/2013 (Nodo NES Shield)
|
||||
-------------------------
|
||||
The hardware guys from the Nodo team released a shield for Arduino Mega 2560
|
||||
that contains everything needed to run Nodo Mega with the web application.
|
||||
|
||||
01/2014 (Exploring new wireless capabilities)
|
||||
---------------------------------------------
|
||||
Nodo got its first 2.4GHz communication plugin, using the well known NRF24L01.
|
||||
This had solved limitations of the 433MHz OOK modules and at the same time it
|
||||
reduced the load on that frequency so Kaku became more reliable.
|
||||
|
||||
Mvb decided to run a setup with two Nodo Mega units in the house. First unit
|
||||
runs the NES board for 433MHz communication, second board was dedicated for
|
||||
NRF24L01 communications. Both Mega's could communicate through I2C or Ethernet.
|
||||
|
||||
02/2015 (Entering the Wi-Fi solution)
|
||||
-------------------------------------
|
||||
Nodo got its first ESP Wi-Fi plugin, using it as a serial to Wi-Fi bridge.
|
||||
At that time we were using the stock firmware that came with the module.
|
||||
|
||||
04/2015 (ESP Connexio)
|
||||
----------------------
|
||||
The ESP Connexio project was initiated as the first effort to port the original
|
||||
Nodo code to the ESP platform using early version of the ESP8266 Arduino Core.
|
||||
The team had to workaround a lot of issues but got it working reasonably.
|
||||
|
||||
05/2015 (ESP Easy initiative)
|
||||
-----------------------------
|
||||
ESP Easy was initiated, mainly because the Nodo Connexio concept was a bit
|
||||
over complicated. It had the same event list as the original Nodo project.
|
||||
Quite powerful but also complicated to end users. So the idea was to have
|
||||
something plug and play to hook up sensors to Domoticz. That decision of
|
||||
targeting Domoticz is still present in current source code since many plugins
|
||||
from the early days have the values setup in such a way that Domoticz can
|
||||
import them with little effort.
|
||||
|
||||
09/2015 (ESP Easy R020)
|
||||
-----------------------
|
||||
As of R017 the Nodo Plugin mechanism was also implemented within ESP Easy.
|
||||
Some other inconvenient bugs were fixed, help buttons added and it was decided
|
||||
that R020 could be the first production edition.
|
||||
|
||||
ESP Easy was launched on Sourceforge as the very first production edition.
|
||||
No programming required.
|
||||
|
||||
02/2016 (ESP Easy R078)
|
||||
-----------------------
|
||||
To make things even more easy, edition R078 was provided as binary images
|
||||
with a simple installer. No need for a complicated Arduino IDE setup.
|
||||
And it also introduced OTA, so subsequent updates could be done without
|
||||
connecting the module to a serial port.
|
||||
|
||||
08/2016 (ESP Easy R120)
|
||||
-----------------------
|
||||
Lots of fixes and additional features:
|
||||
|
||||
* Rules engine
|
||||
* Custom dummy device
|
||||
* GlobalSync
|
||||
* More commands
|
||||
* More controllers
|
||||
* More devices
|
||||
|
||||
Estimated user count was at this time around 7 000.
|
||||
|
||||
11/2016 (ESP Easy Mega)
|
||||
-----------------------
|
||||
ESP Easy Mega was initiated (only for ESP Modules with at least 1MB flash
|
||||
memory). We had to many limitations in ESP Easy, due to the code size that
|
||||
exceeded the 512kB modules flash size. Decided to drop support for these
|
||||
classic modules and went forward with this version.
|
||||
|
||||
02/2017 (Change of roles)
|
||||
-------------------------
|
||||
Psy0rz took over lead development of ESP Easy Mega (2.0.0), he moved the
|
||||
source code onto the GitHub page and started to modularize the code. He also
|
||||
made ESP Easy support multiple controllers and fallback Wi-Fi. During this time
|
||||
nightly releases was introduced and user counts had grown to around 20 000.
|
||||
|
||||
08/2018 (New core team)
|
||||
-----------------------
|
||||
With both Mvb and Psy0rz having little time to spend on the project two of the
|
||||
most eager contributors Grovkillen (mainly wiki documentation and help tools
|
||||
at that time) and TD-er (had already implemented the event based Wi-Fi and
|
||||
scheduler for better timing) stepped in. The aim for the core team is to
|
||||
make the ESP Easy OS as great as can be by dedicating full time commitment to
|
||||
the project.
|
||||
|
||||
User count was at this point approximately around 32 000 and 24 hour download
|
||||
count around 280.
|
||||
|
||||
.. 11/2018 (First stable 2+ version)
|
||||
----------------------------------
|
||||
The first stable release of the new 2.0.0 version was finally released. Much
|
||||
of the features added had been in the nightly releases for more than a year
|
||||
but in the process of modularizing the source code a lot of bugs were fixed,
|
||||
much better timing added, but also some new bugs came into the light. The
|
||||
team wanted to have the official stable release to be just that, stable.
|
||||
|
||||
Estimated user count was at this point around 40 000 and 24 hour download count
|
||||
around 540.
|
||||
@@ -1,2 +0,0 @@
|
||||
ESP Easy Function Blocks
|
||||
************************
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 61 KiB |
@@ -1,35 +0,0 @@
|
||||
Documentation
|
||||
*************
|
||||
|
||||
For documentation we use Sphinx and this will be read by ReadTheDocs.
|
||||
We use the `Sphinx Bootstrap Theme <https://github.com/ryan-roemer/sphinx-bootstrap-theme>`_
|
||||
|
||||
This documentation is included in the GitHub repository.
|
||||
It allows us to create documentation per version of ESPEasy.
|
||||
|
||||
See also the `ESPEasy wiki <https://www.letscontrolit.com/wiki/index.php/ESPEasy>`_
|
||||
for more documentation which has not been moved here.
|
||||
|
||||
Needed Python packages::
|
||||
|
||||
pip install sphinx recommonmark sphinx_bootstrap_theme
|
||||
|
||||
PlatformIO with Atom
|
||||
====================
|
||||
|
||||
With the ESPEasy project open in Atom, open the PIO terminal in Atom.
|
||||
|
||||
Install dependencies::
|
||||
|
||||
cd docs
|
||||
pip install ... (see needed Python packages above)
|
||||
|
||||
Build on Windows::
|
||||
|
||||
cd docs
|
||||
.\make.bat html
|
||||
|
||||
Build on Linux/Mac::
|
||||
|
||||
cd docs
|
||||
./make html
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P000_page:
|
||||
|
||||
|P000_typename|
|
||||
==================================================
|
||||
|
||||
|P000_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P000_type|
|
||||
|
||||
Name: |P000_name|
|
||||
|
||||
Status: |P000_status|
|
||||
|
||||
GitHub: |P000_github|_
|
||||
|
||||
Maintainer: |P000_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P000_usedby_GPIO|, |P000_usedby_RTTTL|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,105 +0,0 @@
|
||||
.. _P000_Buzzer_page:
|
||||
|
||||
Buzzer (RTTTL)
|
||||
==============
|
||||
|
||||
|P000_typename|
|
||||
|P000_status|
|
||||
|
||||
.. image:: P000_Buzzer_RTTTL_1.jpg
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
RTTTL (Ring Tone [Text] Transfer Language) was developed by Nokia to play more "easy on the ear" melodies as ringtones for mobile phones. The tunes over all characteristics are created by using three different commands:
|
||||
|
||||
**d** - duration
|
||||
|
||||
**o** - octave
|
||||
|
||||
**b** - tempo (beat)
|
||||
|
||||
After that the actual tune is then created using standard notes (a, b, c, d, e, f, and g), before the note the duration is set, after the note the octave is set:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<duration><note><octave>
|
||||
|
||||
To compose a jingle you separate the notes with a comma.
|
||||
|
||||
Specifications:
|
||||
* Output sound
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP Buzzer
|
||||
GPIO <--> I/O
|
||||
|
||||
Power
|
||||
3.3V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
No device is needed, generally you use rules to activate different notifications, or you send commands to activate them. Below you find more information on how to do this.
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
From ESP Easy v2.0.0 its possible to play melodies via `RTTTL <https://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language#Technical_specification>`_ (don't forget to remove the spaces and replace # with -, this might be fixed in future releases):
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
http://<ESP IP address>/control?cmd=rtttl,14:d=4,o=5,b=112:8a,8a,a,8a,8a,a,8a,8c6,8f.,16g,2a,8a-,8a-,8a-.,16a-,8a-,8a,8a.,16a,8a,8g,8g,8a,g,c6
|
||||
|
||||
This plays a melody on pin 14.
|
||||
|
||||
You can also use these from rules. We use it to let our alarm system give feedback to the user via a piezo speaker.
|
||||
|
||||
To make a boot-sound on startup, create a rule like this:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
On System#Boot do
|
||||
rtttl,14:d=10,o=6,b=180,c,e,g
|
||||
endon
|
||||
|
||||
`A place to find more tunes <http://www.picaxe.com/RTTTL-Ringtones-for-Tune-Command/>`_, all saved as txt files.
|
||||
|
||||
Besides RTTTL it's also possible to play a single tone on a pin, via a buzzer, speaker or piezo element:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
http://<ESP IP address>/control?cmd=tone,14,1300,200
|
||||
|
||||
Plays a 1300 Hz tone for 200 ms on GPIO-14.
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
No device is needed.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
.. include:: P001_commands_RTTTL.rst
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cMvVWYS4>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
.. More pictures
|
||||
.. -------------
|
||||
|
Before Width: | Height: | Size: 6.3 KiB |
@@ -1,125 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P000_Level_converter_page:
|
||||
|
||||
Level converter
|
||||
===============
|
||||
|
||||
.. image:: P000_Level_converter_1.jpg
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Level-converters, aka level-shifters, aka voltage dividers, are used to adapt between a 3.3V device like the ESP8266 and devices using 5V or more internally.
|
||||
The ESP8266 runs with 3.3V - many devices need 5V or more, for example a LCD display or a Wiegand card reader. It is said that the ESP8266 can
|
||||
take 5V at its inputs. Basically this is correct and confirmand by Espressif, the manufacturer. Anyways this as always has some limitations.
|
||||
|
||||
**First**, overcurrent. If you use a GPIO as input and the output of the connected device has 5V it should work. But if the internal resistance
|
||||
of the device is low the current might exceed the limits of the ESP8266. With some specific settings of the ESP8266 the GPIO can not take 5V,
|
||||
who checks every plugin or never made a setting mistake? So for making sure no GPIO is blown accidentally or by a bug some measurements should be taken.
|
||||
|
||||
**Second**, some devices need higher voltage if GPIO used as output. For example the PCF8574 or the MCP23017, port multiplexer. This chips use
|
||||
3.3V or 5V as you choose. For some purpose higher voltage is useful. If using 5V there is a point you have to take care for:
|
||||
|
||||
The High and Low levels depend on the voltage!
|
||||
|
||||
With the PCF8574 the minimum "High" level Vih = 0.7 × Vdd, with 5V as Vdd it is 3.5V. With the MCP23017 the Vih = 0.8 × Vdd, with 5V as Vdd it is 4V.
|
||||
(Vdd is the supplied voltage) So with 3.3V max from the ESP we are too low. It might work, it might fail. Worse, it might work with one chip
|
||||
and fail with another one due to tolerances. In this case a level-converter is needed.
|
||||
|
||||
Specifications:
|
||||
* Level shifter, aka logic converter. Used to turn logics of higher voltage (5V) down to ESP friendly voltage (3.3V).
|
||||
|
||||
.. note::
|
||||
**Troubleshooting**:
|
||||
If your level converter does not work, please check cabling first. As said cabling mistakes and slack joints with the usual cheap breadboard cables are the most likely reason.
|
||||
If you use breakout board type level converters have a second one at hand. We've seen some "dead on arrival", other died by electrostatic discharge.
|
||||
And again, breadboards are somewhat unreliable. Use a digital multi-meter to check contacts and wires.
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
.. warning::
|
||||
Be careful with wiring. A wrong connection from 5V to the 3.3V rail can cause damages of the ESP and/or the power supply.
|
||||
A direct connection by mistake from 5V to a GPIO may fry your ESP! Handle level-shifters with some care.
|
||||
The used FET transistors are somewhat sensible against electrostatic discharge. Use a anti-static mat.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP Level converter Connected hardware
|
||||
GPIO (X) <--> 3A, LV1, A1 etc. <--> 5A, HV1, B2 etc.
|
||||
GPIO (Y) <--> 3B, LV2, A2 etc. <--> 5B, HV2, B2 etc.
|
||||
|
||||
Power
|
||||
3.3V <--> 3V3, LV, VA, 3V etc.
|
||||
5.0V <--> VIN, HV, VB, +5V etc.
|
||||
GND <--> GND
|
||||
|
||||
Different ways of level converting
|
||||
----------------------------------
|
||||
|
||||
Other than using a level converter it is possible to do it "manually" through resistors.
|
||||
|
||||
Just Input - simple unidirectional
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
As an example we will use a HC-SR04 ultrasonic distance metering module. The HC-SR04 needs 5V, it will not work with 3.3V.
|
||||
It works like bat ears, sending ultrasonic pulses and waiting for the echo. It has an input "Trigger" for sending ultrasonic pulses and an output "Echo" for the received signals.
|
||||
The "trigger" input is no problem as it can take 3.3V for "High". Just connect it to the desired GPIO. But the "Echo" pin sends back 5V signals!
|
||||
As this signaling is working just in one direction ("unidirectional") from the HC-SR04 to the ESP8266, a simple voltage divider does the job. Look at the schematic:
|
||||
|
||||
.. image:: P000_Level_converter_2.jpg
|
||||
|
||||
Note the two resistors R1 and R2, configured as a voltage divider. The divider gives 2.2/(1.2+2.2) = 0.65 so with 5V you get 5V × 0.65 = 3.25V at the GPIO pin.
|
||||
|
||||
Just Input - precise unidirectional
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The simple circuit with two resistors has one disadvantage. It is calculated for 5V. For other voltages you have to calculate another pair of resistor values. And worse,
|
||||
spikes, short spikes of high voltage from unstable power supply or other reasons) pass through the divider. A better and more precise way is using a Zener diode.
|
||||
A Zener diode simplified is a semiconductor that gets conductive at a specific voltage.
|
||||
|
||||
.. image:: P000_Level_converter_3.jpg
|
||||
|
||||
Here a Zener diode is used as voltage limiter. The resistor must not be omitted, it is necessary to limit the current. If a 5V signal comes the diode gets conductive - it would
|
||||
short circuit the device output without the resistor. This circuit is dimensioned for input voltages from 5V to 9V (resistor should have 0.25W!). It can be used nicely for Wiegand
|
||||
card readers for example. You may use even higher voltages, for example if you want to check a 24V pump. You need an adapted resistor value for that.
|
||||
|
||||
Input and Output - Bidirectional Level Converter
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
For devices that use one wire for input and output ("bidirectional") or devices that need higher voltage on an input an active level converter is necessary.
|
||||
This applies mainly to I²C devices as SCL (the clock signal) comes with 3.3V from the ESP and the SDA (data signal) goes in both directions. There are
|
||||
specialized chips for this purpose. Most of them have 8 channels - bit of an overkill for an ESP. There is a much simpler way you can buy as a cheap
|
||||
breakout board or solder together yourself.
|
||||
|
||||
.. image:: P000_Level_converter_4.jpg
|
||||
|
||||
A little FET and two resistors do the job. This is the circuit most level shifters you can buy at the market use.
|
||||
|
||||
How does it work? Lets have a simplified look in a nutshell. A FET gets conductive if the voltage at the gate (pin 1) is higher then the voltage at
|
||||
the source (pin 2). So if the ESP gives 3.3V (High), gate and source have same voltage - the FET isolates both sides (pin 2 & 3) from each other.
|
||||
If the ESP goes to 0.3V (Low), the gate still has 3.3V - now the FET gets conductive pulling the 5V-side down. If the 5V-side goes to zero (low)
|
||||
because your device sends data, the diode inside the FET gets conductive and pulls the 3.3V side down to nearly zero (Low).
|
||||
|
||||
Use of a dedicated level converter
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Quite an easy job. The pins on a level shifter are usually divided in a LV (Low Voltage) and a HV (High Voltage) side. Sometimes it is just called 3V and 5V.
|
||||
Connect the 3V pin to 3.3V from ESP and the 5V pin to 5V from your device, for example a LCD display. Don't forget ground, some breakouts have some additional
|
||||
capacitors which need it. Then connect the GPIOs from the ESP to the LV side, the equivalent pins from your 5V device to the HV side. That's all.
|
||||
|
||||
.. image:: P000_Level_converter_5.jpg
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/c5dMH05S>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
.. More pictures
|
||||
.. -------------
|
||||
|
Before Width: | Height: | Size: 802 KiB |
|
Before Width: | Height: | Size: 308 KiB |
|
Before Width: | Height: | Size: 298 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 135 KiB |
@@ -1,103 +0,0 @@
|
||||
.. _P000_Piezo_element_page:
|
||||
|
||||
Piezo element
|
||||
=============
|
||||
|
||||
|P000_typename|
|
||||
|P000_status|
|
||||
|
||||
.. image:: P000_Piezo_element_RTTTL_1.jpg
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
RTTTL (Ring Tone [Text] Transfer Language) was developed by Nokia to play more "easy on the ear" melodies as ringtones for mobile phones. The tunes over all characteristics are created by using three different commands:
|
||||
|
||||
**d** - duration
|
||||
|
||||
**o** - octave
|
||||
|
||||
**b** - tempo (beat)
|
||||
|
||||
After that the actual tune is then created using standard notes (a, b, c, d, e, f, and g), before the note the duration is set, after the note the octave is set:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<duration><note><octave>
|
||||
|
||||
To compose a jingle you separate the notes with a comma.
|
||||
|
||||
Specifications:
|
||||
* Output sound
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP Piezo
|
||||
GPIO <--> Positive (red)
|
||||
GND <--> Negative (black)
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
No device is needed, generally you use rules to activate different notifications, or you send commands to activate them. Below you find more information on how to do this.
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
From ESP Easy v2.0.0 its possible to play melodies via `RTTTL <https://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language#Technical_specification>`_ (don't forget to remove the spaces and replace # with -, this might be fixed in future releases):
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
http://<ESP IP address>/control?cmd=rtttl,14:d=4,o=5,b=112:8a,8a,a,8a,8a,a,8a,8c6,8f.,16g,2a,8a-,8a-,8a-.,16a-,8a-,8a,8a.,16a,8a,8g,8g,8a,g,c6
|
||||
|
||||
This plays a melody on pin 14.
|
||||
|
||||
You can also use these from rules. We use it to let our alarm system give feedback to the user via a piezo speaker.
|
||||
|
||||
To make a boot-sound on startup, create a rule like this:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
On System#Boot do
|
||||
rtttl,14:d=10,o=6,b=180,c,e,g
|
||||
endon
|
||||
|
||||
`A place to find more tunes <http://www.picaxe.com/RTTTL-Ringtones-for-Tune-Command/>`_, all saved as txt files.
|
||||
|
||||
Besides RTTTL it's also possible to play a single tone on a pin, via a buzzer, speaker or piezo element:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
http://<ESP IP address>/control?cmd=tone,14,1300,200
|
||||
|
||||
Plays a 1300 Hz tone for 200 ms on GPIO-14.
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
No device is needed.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
.. include:: P001_commands_RTTTL.rst
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/CG00mPI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
.. More pictures
|
||||
.. -------------
|
||||
|
Before Width: | Height: | Size: 433 KiB |
@@ -1,339 +0,0 @@
|
||||
.. _P000_Relay_page:
|
||||
|
||||
Relay
|
||||
=====
|
||||
|
||||
|P000_typename|
|
||||
|P000_status|
|
||||
|
||||
.. image:: P000_Relay_1.jpg
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
The ESP8266 can't switch high currents or voltages and no AC at all. But it can switch a relay that can switch high load, isolating high
|
||||
voltage from the ESP circuit. There are several relay types in the wild.
|
||||
|
||||
The ESP can control a relay using one of it's GPIO pins. All relay boards that work with Arduino should also work with the ESP module.
|
||||
Note this is only a possible application of the ESPs ability to send a logic 1/0 (TTL at 3.3V) on a GPIO. These relay are usually available
|
||||
as 1,2,4,8,16 Relay modules and work electromagnetically. They can switch both AC/DC(or imitate a button press of a remote for example)
|
||||
as they are "power operated mechanical switches". Each relay has the screw terminal. The middle one is usually "always connected" terminal.
|
||||
The NC contact will be connected to the middle terminal when the relay is not powered. The NO is connected when the relay is powered
|
||||
and activated. Note that there are "active high" and "active low" versions of these relays.
|
||||
|
||||
There are mainly two relay types in the wild: The good old mechanical relay with the nice "click-clack" sound and the electronic relays, so called
|
||||
"Solid State Relays" (SSR) which are completely silent.
|
||||
|
||||
Specifications:
|
||||
* Opto coupler (mechanical)
|
||||
* Solid state (SSR)
|
||||
|
||||
Relays are the most used actuators in home automation. Most people use breakout boards with a relay on it. Sadly there is no "standard" relay board.
|
||||
It seems every small manufacturing garage in china has it's own layout and schematic. Some use 5V, some use 12V, some do with opto couplers, some without...
|
||||
the perfect chaos. Several problems result from this chaos. Relays keeping switched on no mater what your ESP says. Relays not switching at all.
|
||||
And last but not least - sometimes they work. Let's get some order into that chaos.
|
||||
|
||||
.. note::
|
||||
You have just got your brand new relay board and it does not work. What to do?
|
||||
At first you should check the switching level. Is it switching on with "high" or with "low"?
|
||||
|
||||
* Connect the board to power only (5V or 12V usually).
|
||||
* Plug a jumper cable to one of the inputs.
|
||||
* With the other end of the cable touch GND and +Vcc (5V or 12V).
|
||||
|
||||
On one of these touches the relay should switch. If it switches when connecting to GND the board uses "low" as active (relay on) signal.
|
||||
In this case diodes or a transistor / FET as described above might help.
|
||||
|
||||
Connect the board to the ESP carefully. Check voltages, the power supply should be able to deliver enough current for the relays!
|
||||
Check the connection cables. Jumper cables are well known for slack joints.
|
||||
|
||||
Mechanical relay
|
||||
----------------
|
||||
|
||||
The mechanical relay is a simple construction.
|
||||
It consist of a coil, one or more contacts and a spring. The spring keeps the contact in the "open" position. If the coil gets current, the magnetic
|
||||
field pulls the contact into the second position, the contact closes. As soon as the current is switched off the spring pulls the contact back.
|
||||
Mechanical relays may just have one contact switching to closed if the coil works (Normally open or NO). The contact might be a changeover contact which
|
||||
has a "common" connector and a NO (open without coil current, "normally open") and a NC (closed without coil current, "normally closed") connection.
|
||||
There might even be several contacts in one relay.
|
||||
|
||||
There are several special types of mechanical relay
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Latching relay:
|
||||
|
||||
.. image:: P000_Relay_2.jpg
|
||||
|
||||
One current pulse switches on and keeps on when current goes off, a second pulse switches off.
|
||||
|
||||
|
||||
Polarized relay:
|
||||
|
||||
.. image:: P000_Relay_3.jpg
|
||||
|
||||
These relays have a defined + and - pin for the coil that must be followed.
|
||||
|
||||
.. warning:: These micro relays can not switch mains voltage! Use them for low voltage door openers or similar.
|
||||
|
||||
Pros and cons of mechanical relays
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:green:`+` Several contacts in one relay available.
|
||||
|
||||
:green:`+` NO/NC available.
|
||||
|
||||
:green:`+` Limited resistance to overload and overvoltage.
|
||||
|
||||
:red:`-` Noisy, might disturb in a living room or bedroom.
|
||||
|
||||
:red:`-` Mechanical, moving parts that might wear out over time.
|
||||
|
||||
:red:`-` Contact bumping when switching.
|
||||
|
||||
:red:`-` High current for the coil, needs a transistor or FET for driving and generates peaks on power supply.
|
||||
|
||||
:red:`-` The coil induces high voltage when switching off.
|
||||
|
||||
Solid state relay
|
||||
-----------------
|
||||
|
||||
The solid state relay, SSR for short, is a complex electronic circuit. It uses an opto coupler for input, this isolating the driving circuit from the load voltage.
|
||||
Isolation voltage is usually 2000V, 4000V or more. The switching element usually is a triac for AC switching types. For DC there are types with a MOSFET as switching element.
|
||||
|
||||
There are several special types of SSR relay
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. image:: P000_Relay_4.jpg
|
||||
|
||||
As with the mechanical relays there are specialized types of SSR's.
|
||||
|
||||
**AC Type** : Can only (!!) switch AC. AC with zero crossing circuit. This type switches on and off if the AC voltage is at the zero point. **Expensive** and necessary only for special applications.
|
||||
|
||||
**DC Type** : Can only (!!) switch DC! And a lot more that are reserved for special cases.
|
||||
|
||||
Pros and cons of SSR relays
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:green:`+` Completely noiseless
|
||||
|
||||
:green:`+` Low driving current and voltage available. Some types can be driven directly from the ESP.
|
||||
|
||||
:green:`+` No mechanical parts, no wearing out.
|
||||
|
||||
:green:`+` No contact bumping.
|
||||
|
||||
:green:`+` No voltage peaks on the low voltage side.
|
||||
|
||||
:green:`+` Available for very high current for an affordable price.
|
||||
|
||||
:red:`-` Very sensitive to overvoltage and overcurrent.
|
||||
|
||||
:red:`-` No NC available usually.
|
||||
|
||||
:red:`-` Usually with only one or sometimes three "normally open" circuits.
|
||||
|
||||
:red:`-` Needs cooling! Smaller relays up to 5A must be mounted with at least 1cm distance to other parts.
|
||||
|
||||
:red:`-` Bigger relays usually need a heat sink. Watch out: Heat sink may carry mains voltage with some types!
|
||||
|
||||
:red:`-` Leak current! These relays leak some current even if switched off.
|
||||
|
||||
Leak currents
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Leak Current from SSR's might lead into problems under certain circumstances.
|
||||
The both types shown above ("Hoymk D3805KH" and "Mager GJ-6-L", 5A AC) were tested here.
|
||||
The Mager GJ-5-L showed a low leaking current and is useable for most purposes.
|
||||
The D3805HK showed a really high leaking current, enough for a 10W LED to glow and a small solenoid valve to keep open!
|
||||
This is not recommended for normal use.
|
||||
|
||||
Meanwhile a third sample arrived: The SSR-D32A380/5 sold by Pollin.
|
||||
Similar to the D3805HK it shows a leaking current, as the test LED is slightly glowing in the dark when off.
|
||||
It seems to be a lower leaking then with the D3805HK, this is subject to some further investigation.
|
||||
The advantage of the Pollin SSR: It contains a small LED on the top indicating if the relay is on.
|
||||
This SSR is a bit bigger then the other two types tested, it just fits the case. So holes for the LEDs
|
||||
can be drilled on the top side of the case.
|
||||
|
||||
.. danger::
|
||||
Always remember that a switched-off SSR is not completely switched off!
|
||||
Even a small leaking current is enough to give a shock. Nice surprise if you're on the ladder changing bulbs....
|
||||
|
||||
Choosing your relay
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Which relay should be used?
|
||||
|
||||
Well, this depends on what you want to switch. If you control a heavy motor or pump, I'd always prefer a mechanical relay.
|
||||
The resistance against short overcurrent is a good point here.
|
||||
For experimenting we prefer mechanical relays too - we just love the "click" sound, i.e. we don't have to connect a load to see if it works.
|
||||
If noise counts or if you place the relay in a dusty or humid environment a SSR is the better choice. It's completely encapsulated so dust
|
||||
and humidity can't damage it. As it has no mechanical parts it is completely noise-free. So it's the perfect choice to switch lighting in a living room or sleeping room.
|
||||
Of course you have to chose a relay that fits your parameters.
|
||||
|
||||
Which voltage you want to switch? AC or DC? Which current?
|
||||
|
||||
If you want to use a SSR for high current you have to calculate the space for a heat sink and you have to use a vented case. All these parameters
|
||||
have to be figured into your project. It is also possible to use a small SSR to drive a really heavy external relay for a heavy machine for example.
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP Relay (board)
|
||||
GPIO (X) <--> IN1
|
||||
GPIO (Y) <--> IN2
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
No device is needed, generally you use rules to activate relays, or you send commands to activate them. Below you
|
||||
find more information on how to do this.
|
||||
|
||||
.. note::
|
||||
If you want to monitor and have the GPIO state published you do this by adding as a |P001_typename| ,
|
||||
it will not be a switch per say but you will get the state published automatically.
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
On Switch#State Do
|
||||
if [Switch#State]=1
|
||||
GPIO,12,1
|
||||
else
|
||||
GPIO,12,0
|
||||
endif
|
||||
EndOn
|
||||
|
||||
This rule will turn the relay ON when the button is pressed, and OFF when released.
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
No device is needed.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
.. include:: P001_commands_GPIO.rst
|
||||
|
||||
How to connect your relay
|
||||
-------------------------
|
||||
|
||||
You can connect the relay in multiple ways, we explain them all below.
|
||||
|
||||
Basic ESP circuit: mechanical relays
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The basic circuit is simple.
|
||||
As the relay usually consumes more current as the ESP can handle it needs a transistor or FET to drive the relay.
|
||||
To suppress the voltage peak when switching off the coil a free-wheeling diode is needed. This can be a standard silicium diode, a 1N4148 for example.
|
||||
|
||||
.. image:: P000_Relay_5.jpg
|
||||
|
||||
Well, there is another way to switch the relay. In the above example we used a NPN transistor or a N-channel FET. A PNP transistor or P-Channel FET can be used too.
|
||||
Some board manufacturers do this and now we run into problems promptly. The relays usually need some higher voltage then the ESP, 5V or 12 V in most cases.
|
||||
The PNP transistor in the example is connected to +5V. It will switch the relay to "on" if the voltage at the input is at least 0.7V below the Vcc of 5V.
|
||||
The ESP delivers a maximum of 3.3V if the GPIO is "high", around 0.5V if it is "low". Both voltages are far below the 5V-0.7V = 4.3V threshhold of the relay board.
|
||||
The relay is permanently on, no matter what your ESP says. We can get this to work in a simple way with a 5V relay board. A standard diode has a loss of around 0.7V.
|
||||
We can use this to get a higher output level from the ESP. We simply use two diodes in the connection between relay board and ESP. This raises the voltage from the
|
||||
ESP up to 3.3v + 1.4V = 4.7V. This is above the threshhold of 4.3V. If the board uses a FET it might be necessary to use three diodes. That usually will work.
|
||||
On top: This circuit switches the relay off if the GPIO is "high", this leading to irritations sometimes.
|
||||
The picture shows the basic circuit with a PNP transistor, and the " 2 Diodes " solution:
|
||||
|
||||
.. image:: P000_Relay_6.jpg
|
||||
|
||||
More complex: using an opto coupler
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Many widespread relay boards use opto couplers. Honestly we don't know the reason besides it looks good in advertising.
|
||||
In theory the opto coupler isolates the relay coil from the ESP circuit. Well, that's nice theory. In real world we use the same power supply for relays and ESP.
|
||||
This bridges the opto coupler as the circuits are connected via power supply making the opto coupler completely useless. Anyways the relay isolates the load from
|
||||
the ESP anyways. It might be useful only if relay switching interferes with the ESP. In this case you might try a separate power supply for relay coils.
|
||||
This isolates the ESP completely from the coil circuits. Note that a jumper has to be set for that on some boards.
|
||||
Again there are two possible ways to use this circuit. The opto coupler input has one pin to the ESP and one to ground - this works without any problem but it is not widespread.
|
||||
|
||||
.. image:: P000_Relay_7.jpg
|
||||
|
||||
Most boards we've seen connect the opto coupler to 5V or 12V and the other input pin to the ESP.
|
||||
|
||||
.. image:: P000_Relay_8.jpg
|
||||
|
||||
This runs into same issues as with the PNP transistor above. The high voltage of 3.3V from ESP is far below 5V, this keeping the relay permanently active.
|
||||
The solution is same as with the transistor board above. Use some diodes between ESP and relay board usually does the job with relay boards using 5V.
|
||||
Depending on the circuit you will have to experiment how many diodes are necessary.
|
||||
|
||||
Boards with 12V
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
If your relay board uses 12V and needs "Low" to switch the relay on it gets somewhat more complex. Basically it is possible to use a lot of diodes but
|
||||
it's not very handy. You may try a Zener diode of around 8.5.. 8.7 V. Honestly we don't recommend it. In this case it is better to use an additional
|
||||
transistor or FET to get it to work. This has one advantage: It inverts the switching signal so a "low" output says the relay is off.
|
||||
|
||||
.. image:: P000_Relay_9.jpg
|
||||
|
||||
Special designed boards
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
There are some boards in the wild which can be configured if "low" or "high" should switch the relay on.
|
||||
With this boards you will have to experiment a bit with your ESP and the board, there should be a combination that works.
|
||||
|
||||
.. image:: P000_Relay_10.jpg
|
||||
|
||||
Note the jumpers down left - that's the configuration for switching on high or low level.
|
||||
|
||||
Basic ESP circuit: SSR
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This is more simple. If you got a SSR that has an input of "3...12V" or "3...30V" it usually can be driven directly from the ESP.
|
||||
The only thing you should keep in mind: Do not omit the varistor (RVx in the schematics). It protects the SSR from voltage peaks that
|
||||
may kill it within some milliseconds. Instead of the varistor a TVS diode can be used, for example a P6K400CA.
|
||||
Be careful, you have to use a bidirectional type!
|
||||
|
||||
.. image:: P000_Relay_11.jpg
|
||||
|
||||
It is possible to direct drive a SSR from the ESP but we won't recommend this. We prefer the same circuit as with the mechanical relay.
|
||||
It makes the relay circuit more universal and reduces load on the ESP.
|
||||
|
||||
.. image:: P000_Relay_12.jpg
|
||||
|
||||
Instead of the 2N2222/BC547 you may use a small FET, a BSS138 or 2N7000 / 7002. Omit the 22K resistor if useing a FET.
|
||||
R2 is needed if your relay can't take the Vcc directly. If you use a "3...30V" input SSR it's not necessary.
|
||||
|
||||
Any opto coupler is completely needless if you use a SSR. The SSR has an opto coupler built in to isolate the load from the ESP.
|
||||
At this time there are not that much relay boards with SSR in the market, this will change over time as they get more popular.
|
||||
From what is on the market be careful what you buy. Most boards we've seen nowadays on AliExpress and Ebay have a DC relay installed - they can switch DC only! They can't switch mains voltage.
|
||||
|
||||
Some words about DIY relay boards
|
||||
---------------------------------
|
||||
All in all it's no problem to build your own relay board fitting your needs exactly. But watch out if you want to switch
|
||||
mains voltage. There is a reason why in some countries the policies specify a minimum distance between the parts with high
|
||||
voltage and the low voltage circuits. Do not use experimental PCB's with copper pads or stripes!
|
||||
Good breakout boards are milled out, there is a gap in the PCB for isolating mains from low voltage.
|
||||
Prefer these boards over others without milling.
|
||||
|
||||
.. danger::
|
||||
Be very careful - mains voltage can burn your home or kill you. In case of doubt ask an expert!
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cM59HXVq>`_ `Link 2 ($) <http://s.click.aliexpress.com/e/cerop6s0>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
.. More pictures
|
||||
.. -------------
|
||||
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 626 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 340 KiB |
|
Before Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 389 KiB |
|
Before Width: | Height: | Size: 388 KiB |
|
Before Width: | Height: | Size: 498 KiB |
@@ -1,87 +0,0 @@
|
||||
.. _P000_Servo_motor_page:
|
||||
|
||||
Servo motor
|
||||
===========
|
||||
|
||||
|P000_typename|
|
||||
|P000_status|
|
||||
|
||||
.. image:: P000_Servo_motor_1.jpg
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Usual servos can turn about 180° (90° in both directions from zero point).
|
||||
There are some rare servos with 270° turn. If you use a 180° type you may turn it 90° to the left or to the right.
|
||||
|
||||
.. danger::
|
||||
Trying to turn a servo more then what it can handle will run the servo against a stopper inside the gear.
|
||||
As ESP Easy tries to go further the servo starts humming and gets hot, it will die over time.
|
||||
|
||||
The third type "continuous turn servo" is not supported at this time.
|
||||
|
||||
Specifications:
|
||||
* Controlling servo motors using PWM
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP Servo
|
||||
GPIO (X) <--> S (signal)
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
No device is needed, generally you use rules to activate servos, or you send commands to activate them. Below you
|
||||
find more information on how to do this.
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
On Switch#State Do
|
||||
if [Switch#State]=1
|
||||
Servo,12,1,-45
|
||||
Servo,14,2,45
|
||||
else
|
||||
Servo,12,1,0
|
||||
Servo,14,2,0
|
||||
endif
|
||||
EndOn
|
||||
|
||||
This rule will tilt the servos 45° when the button is pressed, and it'll go back to 0 once released.
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
No device is needed.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
.. include:: P001_commands_GPIO.rst
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/c5RaXUgu>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
.. More pictures
|
||||
.. -------------
|
||||
|
Before Width: | Height: | Size: 864 KiB |
@@ -1,103 +0,0 @@
|
||||
.. _P000_Speaker_page:
|
||||
|
||||
Speaker
|
||||
=======
|
||||
|
||||
|P000_typename|
|
||||
|P000_status|
|
||||
|
||||
.. image:: P000_Speaker_RTTTL_1.jpg
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
RTTTL (Ring Tone [Text] Transfer Language) was developed by Nokia to play more "easy on the ear" melodies as ringtones for mobile phones. The tunes over all characteristics are created by using three different commands:
|
||||
|
||||
**d** - duration
|
||||
|
||||
**o** - octave
|
||||
|
||||
**b** - tempo (beat)
|
||||
|
||||
After that the actual tune is then created using standard notes (a, b, c, d, e, f, and g), before the note the duration is set, after the note the octave is set:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<duration><note><octave>
|
||||
|
||||
To compose a jingle you separate the notes with a comma.
|
||||
|
||||
Specifications:
|
||||
* Output sound
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP Speaker
|
||||
GPIO <--> Positive (red)
|
||||
GND <--> Negative (black)
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
No device is needed, generally you use rules to activate different notifications, or you send commands to activate them. Below you find more information on how to do this.
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
From ESP Easy v2.0.0 its possible to play melodies via `RTTTL <https://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language#Technical_specification>`_ (don't forget to remove the spaces and replace # with -, this might be fixed in future releases):
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
http://<ESP IP address>/control?cmd=rtttl,14:d=4,o=5,b=112:8a,8a,a,8a,8a,a,8a,8c6,8f.,16g,2a,8a-,8a-,8a-.,16a-,8a-,8a,8a.,16a,8a,8g,8g,8a,g,c6
|
||||
|
||||
This plays a melody on pin 14.
|
||||
|
||||
You can also use these from rules. We use it to let our alarm system give feedback to the user via a piezo speaker.
|
||||
|
||||
To make a boot-sound on startup, create a rule like this:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
On System#Boot do
|
||||
rtttl,14:d=10,o=6,b=180,c,e,g
|
||||
endon
|
||||
|
||||
`A place to find more tunes <http://www.picaxe.com/RTTTL-Ringtones-for-Tune-Command/>`_, all saved as txt files.
|
||||
|
||||
Besides RTTTL it's also possible to play a single tone on a pin, via a buzzer, speaker or piezo element:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
http://<ESP IP address>/control?cmd=tone,14,1300,200
|
||||
|
||||
Plays a 1300 Hz tone for 200 ms on GPIO-14.
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
No device is needed.
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
.. include:: P001_commands_RTTTL.rst
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cPcaaQXI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
.. More pictures
|
||||
.. -------------
|
||||
|
Before Width: | Height: | Size: 434 KiB |
@@ -1,221 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
|
||||
|
||||
.. csv-table::
|
||||
:header: "Command", "Class", "Purpose", "Syntax"
|
||||
:widths: 8, 6, 15, 15
|
||||
|
||||
"Debug","
|
||||
:red:`Internal`","
|
||||
Change Serial port debug level","
|
||||
``Debug,<1-4>``"
|
||||
"
|
||||
IP","
|
||||
:red:`Internal`","
|
||||
Change IP address","
|
||||
``IP,<IP address>``"
|
||||
"
|
||||
Name","
|
||||
:red:`Internal`","
|
||||
Set the name of the unit","
|
||||
``Name,<new name>``"
|
||||
"
|
||||
Password","
|
||||
:red:`Internal`","
|
||||
Set the password of the unit","
|
||||
``Password,<new password>``"
|
||||
"
|
||||
Reboot","
|
||||
:red:`Internal`","
|
||||
Reboot the ESP","
|
||||
``Reboot``"
|
||||
"
|
||||
Reset","
|
||||
:red:`Internal`","
|
||||
Reset config to factory default. Caution, all settings will be lost!","
|
||||
``Reset``"
|
||||
"
|
||||
ResetFlashWriteCounter","
|
||||
:red:`Internal`","
|
||||
Reset flash write to zero.","
|
||||
``ResetFlashWriteCounter``"
|
||||
"
|
||||
Rules","
|
||||
:red:`Internal`","
|
||||
Rules enabled (1) or rules disabled (0)","
|
||||
``Rules,<1/0>``"
|
||||
"
|
||||
Save","
|
||||
:red:`Internal`","
|
||||
Save config to persistent flash memory","
|
||||
``Save``"
|
||||
"
|
||||
Settings","
|
||||
:red:`Internal`","
|
||||
Show settings on serial terminal","
|
||||
``Settings``"
|
||||
"
|
||||
TaskClear","
|
||||
:red:`Internal`","
|
||||
Delete the given task/device","
|
||||
``TaskClear,<task/device nr>``"
|
||||
"
|
||||
TaskClearAll","
|
||||
:red:`Internal`","
|
||||
Delete ALL task/device","
|
||||
``TaskClearAll``"
|
||||
"
|
||||
TaskRun","
|
||||
:red:`Internal`","
|
||||
Run/excecute the given task/device, use to manually force an update/read of the task.","
|
||||
``TaskRun,<task/device nr>``"
|
||||
"
|
||||
Unit","
|
||||
:red:`Internal`","
|
||||
Set the unit number","
|
||||
``Unit,<unit number>``"
|
||||
"
|
||||
WifiAPKey","
|
||||
:red:`Internal`","
|
||||
Change AP WPA key","
|
||||
``WifiAPKey,<WPA key>``"
|
||||
"
|
||||
WifiAPMode","
|
||||
:red:`Internal`","
|
||||
Force the unit into AP mode.","
|
||||
``WifiAPMode``"
|
||||
"
|
||||
WifiConnect","
|
||||
:red:`Internal`","
|
||||
Connect to configured wireless network","
|
||||
``WifiConnect``"
|
||||
"
|
||||
WifiDisconnect","
|
||||
:red:`Internal`","
|
||||
Disconnect from wireless network","
|
||||
``WifiDisconnect``"
|
||||
"
|
||||
WifiKey","
|
||||
:red:`Internal`","
|
||||
Change WPA key for primary WiFi","
|
||||
``WifiKey,<Wifi WPA key>``"
|
||||
"
|
||||
WifiKey2","
|
||||
:red:`Internal`","
|
||||
Change WPA key for secondary WiFi","
|
||||
``WifiKey2,<Wifi WPA key>``"
|
||||
"
|
||||
WifiScan","
|
||||
:red:`Internal`","
|
||||
Scan Wireless networks","
|
||||
``WifiScan``"
|
||||
"
|
||||
WifiSSID","
|
||||
:red:`Internal`","
|
||||
Change SSID to connect as primary WiFi","
|
||||
``WifiSSID,<SSID>``"
|
||||
"
|
||||
WifiSSID2","
|
||||
:red:`Internal`","
|
||||
Change SSID to connect as secondry WiFi","
|
||||
``WifiSSID2,<SSID>``"
|
||||
"
|
||||
Delay","
|
||||
:green:`Rules`","
|
||||
Delay rule processing","
|
||||
``Delay,<delay in milliSeconds>``"
|
||||
"
|
||||
Publish","
|
||||
:green:`Rules`","
|
||||
Send command using MQTT broker service","
|
||||
``Publish,<topic>,<value>``"
|
||||
"
|
||||
SendTo","
|
||||
:green:`Rules`","
|
||||
Send command to other ESP (using UDP)","
|
||||
``SendTo,<unit nr>,<command>``"
|
||||
"
|
||||
SendToHTTP","
|
||||
:green:`Rules`","
|
||||
Send command to other network device using HTTP
|
||||
|
||||
``SendToHTTP,temperatur.nu,80,/rapportera.php?hash=123abc456&t=[temp2#out]``","
|
||||
``SendToHTTP,<IP address>,<Portnumber>,<command>``
|
||||
|
||||
``SendToHTTP,<domain>,<Portnumber>,</url>``"
|
||||
"
|
||||
SendToUDP","
|
||||
:green:`Rules`","
|
||||
Send command to other network device using UDP (non-ESP Easy units)","
|
||||
``SendToUDP,<IP address>,<Portnumber>,<command>``"
|
||||
"
|
||||
TaskValueSet","
|
||||
:green:`Rules`","
|
||||
Set values on a **Dummy Task** (device)","
|
||||
``TaskValueSet,<task/device nr>,<value nr>,<value/formula>``"
|
||||
"
|
||||
TimerSet","
|
||||
:green:`Rules`","
|
||||
Start a timed event ","
|
||||
``TimerSet,<timernr>,<timeInSeconds>``
|
||||
|
||||
``TimerSet,<timernr>,0`` disables the timer"
|
||||
"
|
||||
Event","
|
||||
:blue:`Special`","
|
||||
Create an event, it's possible to send a float value along as well.","
|
||||
See event syntax below..."
|
||||
|
||||
|
||||
Event command
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The event command is a special command used to trigger an event. This event can then be acted upon from the rules.
|
||||
You can send 0..4 event values along with the event.
|
||||
|
||||
|
||||
.. csv-table::
|
||||
:header: "Event"
|
||||
:widths: 100
|
||||
|
||||
"
|
||||
``Event,SingleEvent``
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
on SingleEvent do
|
||||
Publish,%sysname%/Info,A single event has been triggered!
|
||||
endon
|
||||
|
||||
|
||||
The event (triggered by any of the launch ways) will make the unit publish a message.
|
||||
"
|
||||
"
|
||||
``Event,SingleEventValue=123``
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
on SingleEventValue do
|
||||
Publish,%sysname%/Info,An event has been sent (%eventvalue%)!
|
||||
endon
|
||||
|
||||
|
||||
The event value ``123`` is intercepted and published.
|
||||
"
|
||||
"
|
||||
``Event,MultipleEventValues=123,456,789,999999``
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
on MultipleEventValues do
|
||||
if %eventvalue4%=9999
|
||||
Publish,%sysname%/Info,Lets compute %eventvalue1%+%eventvalue2%=[%eventvalue1%+%eventvalue2%]
|
||||
else
|
||||
Publish,%sysname%/Info,Lets compute %eventvalue3%-%eventvalue2%=[%eventvalue3%-%eventvalue2%]
|
||||
endif
|
||||
endon
|
||||
|
||||
|
||||
The event value ``9999`` (4) is intercepted and the rule ``Publish, ... %eventvalue1%+%eventvalue2%=[%eventvalue1%+%eventvalue2%]`` is
|
||||
triggered, output payload to MQTT would then be ``Lets compute 123+456=579``
|
||||
"
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P001_page:
|
||||
|
||||
|P001_typename|
|
||||
==================================================
|
||||
|
||||
|P001_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P001_type|
|
||||
|
||||
Name: |P001_name|
|
||||
|
||||
Status: |P001_status|
|
||||
|
||||
GitHub: |P001_github|_
|
||||
|
||||
Maintainer: |P001_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P001_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,69 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P001_Door_switch_page:
|
||||
|
||||
Door switch
|
||||
===========
|
||||
|
||||
|P001_typename|
|
||||
|P001_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P001_PIR_sensor_page:
|
||||
|
||||
PIR sensor
|
||||
==========
|
||||
|
||||
|P001_typename|
|
||||
|P001_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Motion (change in heat)
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,69 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P001_Switch_page:
|
||||
|
||||
Switch
|
||||
======
|
||||
|
||||
|P001_typename|
|
||||
|P001_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,96 +0,0 @@
|
||||
.. include:: _plugin_substitutions_p00x.repl
|
||||
.. These P001 commands should be moved to core (P000)...
|
||||
|
||||
:ref:`P000_page` |P000_status|
|
||||
|
||||
Supported hardware: |P000_usedby_GPIO|
|
||||
|
||||
.. csv-table::
|
||||
:header: "Command (GPIO/Value)", "Extra information"
|
||||
:widths: 20, 30
|
||||
|
||||
"
|
||||
``GPIO,<gpio>,<state>``
|
||||
|
||||
GPIO: 0 ... 16
|
||||
|
||||
State:
|
||||
|
||||
**2** (HIGH-Z)
|
||||
|
||||
**1** (HIGH)
|
||||
|
||||
**0** (LOW)
|
||||
","
|
||||
**Basic on/off.**.
|
||||
We can control a pin with simple http URL commands. To change the pin to high or low steady output. Setting GPIO to **2** means
|
||||
that it will be able to detect low level relays (with high impedance, Z).
|
||||
"
|
||||
"
|
||||
``LongPulse,<GPIO>,<state>,<duration>``
|
||||
|
||||
GPIO: 0 ... 16
|
||||
|
||||
State: 1/0
|
||||
|
||||
Duration: 1 ... 999 S
|
||||
","
|
||||
**To send a *long* pulse to a certain pin.**.
|
||||
A long pulse is basically the same as the plain pulse. The only difference is the time base in seconds rather than in milliseconds.
|
||||
So it's more suitable for longer duration.
|
||||
"
|
||||
"
|
||||
``LongPulse_mS,<GPIO>,<state>,<duration>``
|
||||
|
||||
GPIO: 0 ... 16
|
||||
|
||||
State: 1/0
|
||||
|
||||
Duration: 1000 ... 15000 mS
|
||||
","
|
||||
**To send a *long* pulse to a certain pin.**
|
||||
A long pulse (mS) is the same as the regular long pulse. The only difference is the time base in milliseconds rather than in seconds.
|
||||
"
|
||||
"
|
||||
``Pulse,<GPIO>,<state>,<duration>``
|
||||
|
||||
GPIO: 0 ... 16
|
||||
|
||||
State: 1/0
|
||||
|
||||
Duration: 0 ... 1000 mS
|
||||
","
|
||||
**To send a *short* pulse to a certain pin.**
|
||||
Example to send an active high (1) pulse on GPIO 14 for 500 mSeconds. Pulse duration is in milliseconds. State is 1 or 0.
|
||||
"
|
||||
"
|
||||
``PWM,<GPIO>,<state>``
|
||||
|
||||
``PWM,<GPIO>,<state>,<duration>``
|
||||
|
||||
GPIO: 0 ... **15**
|
||||
|
||||
State: 0 ... 1023
|
||||
|
||||
Duration: 100 ... 15000 mS (optional)
|
||||
","
|
||||
**To set a certain PWM level.**
|
||||
If you have set a certain GPIO to a PWM level and want to use it as a regular HIGH/LOW pin you need to reset by setting the PWM level to 0.
|
||||
You can use the duration (ms) parameter to create a fading.
|
||||
"
|
||||
"
|
||||
``Servo,<servo>,<GPIO>,<position>``
|
||||
|
||||
GPIO: 0 ... **15**
|
||||
|
||||
Servo: 1/2
|
||||
|
||||
Position: -180 ... 180 (see warning below)
|
||||
","
|
||||
**To control a servo motor.**
|
||||
We currently support a maximum of two servo motors so you can build a pan & tilt device if you like.
|
||||
|
||||
.. warning::
|
||||
Most servos are not able to turn full 360°! Normally the servos are able to go from **-90°** to **90°**, some rare servos do allow for -135° to 135°.
|
||||
|
||||
"
|
||||
@@ -1,31 +0,0 @@
|
||||
.. include:: _plugin_substitutions_p00x.repl
|
||||
.. These P001 commands should be moved to core (P000)...
|
||||
|
||||
:ref:`P000_page` |P000_status|
|
||||
|
||||
Supported hardware: |P000_usedby_RTTTL| (Ringtones etc.)
|
||||
|
||||
.. csv-table::
|
||||
:header: "Command (GPIO/Value)", "Extra information"
|
||||
:widths: 20, 30
|
||||
|
||||
"
|
||||
``tone,<gpio>,<tone>,<duration>``
|
||||
|
||||
GPIO: 12 ... 16
|
||||
|
||||
Tone: 20 ... 13000 Hz
|
||||
|
||||
Duration: 100 ... 15000 S
|
||||
","
|
||||
You should try to use GPIO 12...16 since these generally aren't used. The recommended tone range is 20...13000 but you could try tones outside this range. Duration is set in ms.
|
||||
"
|
||||
"
|
||||
``rtttl,<gpio>,<value>``
|
||||
|
||||
GPIO: 12 ... 16
|
||||
|
||||
Value: d=<duration>,o=<octave>,b=<tempo>,<notes...>
|
||||
","
|
||||
You should try to use GPIO 12...16 since these generally aren't used by ESP internal functions.
|
||||
"
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P002_page:
|
||||
|
||||
|P002_typename|
|
||||
==================================================
|
||||
|
||||
|P002_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P002_type|
|
||||
|
||||
Name: |P002_name|
|
||||
|
||||
Status: |P002_status|
|
||||
|
||||
GitHub: |P002_github|_
|
||||
|
||||
Maintainer: |P002_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P002_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,71 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
|
||||
.. _P002_ESP82XX_internal_page:
|
||||
|
||||
ESP82XX internal
|
||||
================
|
||||
|
||||
|P002_typename|
|
||||
|P002_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Analog signal (0-1V)
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P002_PCF8591_page:
|
||||
|
||||
PCF8591
|
||||
=======
|
||||
|
||||
|P002_typename|
|
||||
|P002_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Analog signal (0-5V)
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,71 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P002_Photosensitive_resistor_page:
|
||||
|
||||
Photosensitive resistor
|
||||
=======================
|
||||
|
||||
|P002_typename|
|
||||
|P002_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Light intensity
|
||||
* Analog 1-100% or Binary above/below trigger value
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P003_page:
|
||||
|
||||
|P003_typename|
|
||||
==================================================
|
||||
|
||||
|P003_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P003_type|
|
||||
|
||||
Name: |P003_name|
|
||||
|
||||
Status: |P003_status|
|
||||
|
||||
GitHub: |P003_github|_
|
||||
|
||||
Maintainer: |P003_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P003_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P003_LJ12A3_page:
|
||||
|
||||
LJ12A3
|
||||
======
|
||||
|
||||
|P003_typename|
|
||||
|P003_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Inductive proximity sensor
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P003_Pulse_logic_input_page:
|
||||
|
||||
Pulse logic input
|
||||
=================
|
||||
|
||||
|P003_typename|
|
||||
|P003_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* General, output as pulse
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,71 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P003_TCR5000_page:
|
||||
|
||||
TCR5000
|
||||
=======
|
||||
|
||||
|P003_typename|
|
||||
|P003_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* IR emitter + phototransistor (for ex. water/electricity meters)
|
||||
* Distance
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P004_page:
|
||||
|
||||
|P004_typename|
|
||||
==================================================
|
||||
|
||||
|P004_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P004_type|
|
||||
|
||||
Name: |P004_name|
|
||||
|
||||
Status: |P004_status|
|
||||
|
||||
GitHub: |P004_github|_
|
||||
|
||||
Maintainer: |P004_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P004_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P004_DS18b20_page:
|
||||
|
||||
DS18b20
|
||||
=======
|
||||
|
||||
|P004_typename|
|
||||
|P004_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Temperature (-55 to +125C)
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P005_page:
|
||||
|
||||
|P005_typename|
|
||||
==================================================
|
||||
|
||||
|P005_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P005_type|
|
||||
|
||||
Name: |P005_name|
|
||||
|
||||
Status: |P005_status|
|
||||
|
||||
GitHub: |P005_github|_
|
||||
|
||||
Maintainer: |P005_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P005_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,71 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P005_DHT11_DHT22_page:
|
||||
|
||||
DHT11/DHT22
|
||||
===========
|
||||
|
||||
|P005_typename|
|
||||
|P005_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Temperature (-40 to +85C)
|
||||
* Humidity (0-100 % rel. humidity)
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P006_page:
|
||||
|
||||
|P006_typename|
|
||||
==================================================
|
||||
|
||||
|P006_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P006_type|
|
||||
|
||||
Name: |P006_name|
|
||||
|
||||
Status: |P006_status|
|
||||
|
||||
GitHub: |P006_github|_
|
||||
|
||||
Maintainer: |P006_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P006_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,71 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P006_BMP085_BMP180_page:
|
||||
|
||||
BMP085/BMP180
|
||||
=============
|
||||
|
||||
|P006_typename|
|
||||
|P006_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Temperature (-40 to +85C)
|
||||
* Barometric pressure (300-1100 hPa)
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P007_page:
|
||||
|
||||
|P007_typename|
|
||||
==================================================
|
||||
|
||||
|P007_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P007_type|
|
||||
|
||||
Name: |P007_name|
|
||||
|
||||
Status: |P007_status|
|
||||
|
||||
GitHub: |P007_github|_
|
||||
|
||||
Maintainer: |P007_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P007_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P008_page:
|
||||
|
||||
|P008_typename|
|
||||
==================================================
|
||||
|
||||
|P008_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P008_type|
|
||||
|
||||
Name: |P008_name|
|
||||
|
||||
Status: |P008_status|
|
||||
|
||||
GitHub: |P008_github|_
|
||||
|
||||
Maintainer: |P008_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P008_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P008_Wiegand-26_page:
|
||||
|
||||
Wiegand-26
|
||||
==========
|
||||
|
||||
|P008_typename|
|
||||
|P008_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* RFID
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P009_page:
|
||||
|
||||
|P009_typename|
|
||||
==================================================
|
||||
|
||||
|P009_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P009_type|
|
||||
|
||||
Name: |P009_name|
|
||||
|
||||
Status: |P009_status|
|
||||
|
||||
GitHub: |P009_github|_
|
||||
|
||||
Maintainer: |P009_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P009_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P009_MCP23017_page:
|
||||
|
||||
MCP23017
|
||||
========
|
||||
|
||||
|P009_typename|
|
||||
|P009_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Input / output
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P010_page:
|
||||
|
||||
|P010_typename|
|
||||
==================================================
|
||||
|
||||
|P010_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P010_type|
|
||||
|
||||
Name: |P010_name|
|
||||
|
||||
Status: |P010_status|
|
||||
|
||||
GitHub: |P010_github|_
|
||||
|
||||
Maintainer: |P010_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P010_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P010_BH1750_page:
|
||||
|
||||
BH1750
|
||||
======
|
||||
|
||||
|P010_typename|
|
||||
|P010_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Illuminance, lux
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P011_page:
|
||||
|
||||
|P011_typename|
|
||||
==================================================
|
||||
|
||||
|P011_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P011_type|
|
||||
|
||||
Name: |P011_name|
|
||||
|
||||
Status: |P011_status|
|
||||
|
||||
GitHub: |P011_github|_
|
||||
|
||||
Maintainer: |P011_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P011_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P012_page:
|
||||
|
||||
|P012_typename|
|
||||
==================================================
|
||||
|
||||
|P012_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P012_type|
|
||||
|
||||
Name: |P012_name|
|
||||
|
||||
Status: |P012_status|
|
||||
|
||||
GitHub: |P012_github|_
|
||||
|
||||
Maintainer: |P012_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P012_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P012_LCD_page:
|
||||
|
||||
LCD
|
||||
===
|
||||
|
||||
|P012_typename|
|
||||
|P012_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Output
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||
@@ -1,41 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P013_page:
|
||||
|
||||
|P013_typename|
|
||||
==================================================
|
||||
|
||||
|P013_shortinfo|
|
||||
|
||||
Plugin details
|
||||
--------------
|
||||
|
||||
Type: |P013_type|
|
||||
|
||||
Name: |P013_name|
|
||||
|
||||
Status: |P013_status|
|
||||
|
||||
GitHub: |P013_github|_
|
||||
|
||||
Maintainer: |P013_maintainer|
|
||||
|
||||
|
||||
Supported hardware
|
||||
------------------
|
||||
|
||||
|P013_usedby|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
@@ -1,70 +0,0 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p01x.repl
|
||||
.. _P013_HC-SR04_page:
|
||||
|
||||
HC-SR04
|
||||
=======
|
||||
|
||||
|P013_typename|
|
||||
|P013_status|
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
Specifications:
|
||||
* Ultrasonic distance sensor
|
||||
|
||||
|
||||
Wiring
|
||||
------
|
||||
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
ESP S8
|
||||
GPIO (X) <--> TX
|
||||
GPIO (X) <--> RX
|
||||
|
||||
|
||||
Power
|
||||
5.0V <--> VCC
|
||||
GND <--> GND
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
|
||||
|
||||
Rules examples
|
||||
--------------
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
//Code below...
|
||||
|
||||
|
||||
Indicators (recommended settings)
|
||||
---------------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
|
||||
:widths: 8, 5, 5, 5, 40
|
||||
|
||||
"XXXXXX", "N/A", "", "", ""
|
||||
|
||||
Where to buy
|
||||
------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Store", "Link"
|
||||
:widths: 5, 40
|
||||
|
||||
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/cg1fhDDI>`_"
|
||||
|
||||
|affiliate|
|
||||
|
||||
|
||||
More pictures
|
||||
-------------
|
||||