1bc74a8ac8 | ||
---|---|---|
.github | ||
api | ||
arduino | ||
lib | ||
pio | ||
sonoff | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
COPYFILES.BAT | ||
LICENSE.txt | ||
README.md | ||
esp8266.flash.1m0.ld | ||
platformio.ini |
README.md
Sonoff-Tasmota KNX (Development Repository)
Now integrated in Sonoff-Tasmota!
Sonoff-Tasmota_KNX is a modification for Sonoff-Tasmota to add a basic functionality of the KNX IP Protocol.
If you like Sonoff Tasmota KNX, give it a star, or fork it and contribute!
Any help or comment is very welcome.
Table of Contents
- KNX Explanation
- Integration
- Requirement
- Usage Examples
- Development Road Map
- Modifications to Sonoff-Tasmota
- Contributors
- Sonoff-Tasmota
KNX Explanation
The KNX IP Protocol is an international open standard for smart homes and smart buildings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on 224.0.23.12 : 3671, so there is no need for a KNX Router unless you want to communicate to KNX Devices that are not in the WIFI Network (Twisted Pair, RF, Powerline).
Each device has a physical address (like a fixed IP) as 1 . 1 . 0 and that address is used for configuration purposes.
Each device can be configured with group addresses as 2 / 2 / 1 and that address can be used for sending/receiving commands. So, for example, if 2 devices that are configured with the 2 / 2 / 1 for turning on/off their outputs, and other device send Turn ON command to 2 / 2 / 1, both devices will turn on their outputs.
Integration
Several home automation systems have KNX support. For example, Home Assistant has a XKNX Python Library to connect to KNX devices using a KNX Router. If you don't have a KNX Router, you can use a Software KNX Router like KNXd on the same Raspberry Pi than Home Assistant. KNXd is used by Home Assistant for reading this UDP Multicast, although KNXd has other cool features that need extra hardware like connect to KNX devices by Twister Pair, Power Line or RF.
If you use the ETS (KNX Configurator Software) you can add any Sonoff-Tasmota_KNX as a dummy device.
Requirement
- ESP KNX IP Library. A copy of the library is also available here.
It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command.
Usage Examples
There are multiple possible configurations. Here are explained just a few as example. The options for selecting relays, buttons, sensors, etc. are only available if were configured on Configure Module Menu.
To configure KNX, enter on the Configuration Menu of Sonoff-Tasmota and select Configure KNX.
1) Setting Several Sonoff to be controlled as one by a Home Automation System:
We can set one of the group address to be the same in all the devices so as to turn them on or off at the same time. In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops.
DEVICE 1
DEVICE 2
2) Setting 2 Sonoff to be linked as stair lights:
We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop.
DEVICE 1
DEVICE 2
3) Setting a button as initiator of a scene:
Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent.
DEVICE 1
DEVICE 2
4) Setting a Temperature sensor:
We can configure to send the value of temperature or humidity every teleperiod. This teleperiod can be configured. See Sonoff Tasmota wiki. It is recommended also to set the reply temperature address.
Development Road Map
For Sonoff-Tasmota_KNX:
- Add Web Menu
- Add Feature to Receive telegrams and modify Relay Status
- Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes)
- Add Feature to Send telegrams of relay status change
- Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes)
- Add Feature to Send telegrams of button pressed
- Add Feature to receive telegrams to toggle relay status
- Add Feature to read Temperature, Humidity from Tasmota
- Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod)
- Add Feature to receive command to read temperature, Humidity
- Add Feature to recognize Tasmota config to show the same number of relays, buttons, etc.
- Add Feature to Save Config
- Add Feature to Load Config
- Add Log Info
- Complete all the language files with keys
- Add support for other output devices supported by Tasmota
- Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY)
- Add options for increase communication reliability (re send telegrams)
- Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect)
- Add option to support KNX Snooping to debug KNX Network
- Add option for KNXnet/IP Tunneling
- Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNXnet/IP Tunneling
- Add option to support ETS Programming
- Optimize code to reduce Flash and RAM
Modifications to Sonoff-Tasmota
- Added the file /sonoff/xdrv_11_KNX.ino
- Added the entry
#define USE_KNX
on /sonoff/user_config.h - Added entries to the file /sonoff/webserver.ino
- Added entries to the file /sonoff/sonoff.ino
- Added entries to the file /sonoff/sonoff.h
- Added entries to the file /sonoff/settings.h
- Added entries to the file /sonoff/support.ino
- Added entries to sensor files
- Added entries to language files
Up to now, enabling KNX uses +23k of code and +3k3 of memory.
There is NO CONFLICT with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time.
Contributors
- ascillato ( Adrian Scillato )
- sisamiwe - Thanks for the guide on using KNX.
- envy ( Nico Weichbrodt ) - Thanks for the patience and help with the modifications to ESP_KNX_IP.
- arendst ( Theo Arends ) - Thanks for the guide on Tasmota and for the ideas.
- johannesbonn - Thanks for the patience on bug resolutions
- RocketSience - Thanks for the patience on bug resolutions
- jeylites - Thanks for the patience on bug resolutions
- smurfix ( Matthias Urlichs ) - Thanks for the KNX guiding and KNXd use.
- And many others providing testing, bug reporting and feature requests.
Sonoff-Tasmota
Alternative firmware for ESP8266 based devices like iTead Sonoff with web, timers, 'Over The Air' (OTA) firmware updates and sensors support, allowing control under Serial, HTTP, MQTT and KNX, so as to be used on Smart Home Systems. Written for Arduino IDE and PlatformIO.
If you like Sonoff-Tasmota, give it a star, or fork it and contribute!
Development
Current version is 5.14.0a - See sonoff/_releasenotes.ino for change information.
Quick install
Download one of the released binaries from https://github.com/arendst/Sonoff-Tasmota/releases and flash it to your hardware as documented in the wiki.
Important User Compilation Information
If you want to compile Sonoff-Tasmota yourself keep in mind the following:
- Only Flash Mode DOUT is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device. See Wiki for background information.
- Sonoff-Tasmota uses a 1M linker script WITHOUT spiffs for optimal code space. If you compile using ESP/Arduino library 2.3.0 then download the provided new linker script to your Arduino IDE or Platformio base folder. Later version of ESP/Arduino library already contain the correct linker script. See Wiki > Prerequisite.
- To make compile time changes to Sonoff-Tasmota it can use the
user_config_override.h
file. It assures keeping your settings when you download and compile a new version. To useuser_config.override.h
you will have to make a copy of the provideduser_config.override_sample.h
file and add your setting overrides. To enable the override file you will need to use a compile define as documented in theuser_config_override_sample.h
file.
Version Information
- Sonoff-Tasmota provides all (Sonoff) modules in one file and starts with module Sonoff Basic.
- Once uploaded select module using the configuration webpage or the commands
Modules
andModule
. - After reboot select config menu again or use commands
GPIOs
andGPIO
to change GPIO with desired sensor.
See Wiki for more information.
See Community for forum and more user experience.
The following devices are supported:
- iTead Sonoff Basic
- iTead Sonoff RF
- iTead Sonoff SV
- iTead Sonoff TH10/TH16 with temperature sensor
- iTead Sonoff Dual (R2)
- iTead Sonoff Pow with Energy Monitoring
- iTead Sonoff Pow R2 with Energy Monitoring
- iTead Sonoff 4CH (R2)
- iTead Sonoff 4CH Pro (R2)
- iTead S20 Smart Socket
- Sonoff S22 Smart Socket
- iTead Sonoff S31 Smart Socket with Energy Monitoring
- iTead Slampher
- iTead Sonoff Touch
- iTead Sonoff T1
- iTead Sonoff SC
- iTead Sonoff Led
- iTead Sonoff BN-SZ01 Ceiling Led
- iTead Sonoff B1
- iTead Sonoff RF Bridge 433
- iTead Sonoff Dev
- iTead 1 Channel Switch 5V / 12V
- iTead Motor Clockwise/Anticlockwise
- Electrodragon IoT Relay Board
- AI Light or any my9291 compatible RGBW LED bulb
- H801 PWM LED controller
- MagicHome PWM LED controller
- AriLux AL-LC01, AL-LC06 and AL-LC11 PWM LED controller
- Supla device - Espablo-inCan mod. for electrical Installation box
- Luani HVIO board
- Wemos D1 mini, NodeMcu and Ledunia
Firmware release information
Different firmware images are released based on Features and Sensors selection guided by code and memory usage.
- The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter.
- The Classic version allows single OTA uploads as did the previous Sonoff-Tasmota versions.
Available Features and Sensors
Feature or Sensor | sonoff | classic | minimal | knx | allsensors |
---|---|---|---|---|---|
MY_LANGUAGE en-GB | x | x | x | x | x |
MQTT_LIBRARY_TYPE PUBSUBCLIENT | x | x | x | x | x |
USE_DOMOTICZ | x | x | - | x | x |
USE_HOME_ASSISTANT | x | x | - | x | x |
USE_MQTT_TLS | - | - | - | - | - |
USE_KNX | - | - | - | x | - |
USE_WEBSERVER | x | x | x | x | x |
USE_EMULATION | x | x | - | - | x |
USE_DISCOVERY | x | x | - | x | x |
WEBSERVER_ADVERTISE | x | x | - | x | x |
MQTT_HOST_DISCOVERY | x | x | - | x | x |
USE_TIMERS | x | - | - | x | x |
USE_TIMERS_WEB | x | - | - | x | x |
USE_SUNRISE | x | - | - | x | x |
USE_RULES | x | - | - | x | x |
USE_ADC_VCC | x | x | x | x | x |
USE_DS18B20 | x | x | - | x | - |
USE_DS18x20 | - | - | - | - | x |
USE_DS18x20_LEGACY | - | - | - | - | - |
USE_I2C | x | x | - | x | x |
USE_SHT | x | x | - | x | x |
USE_SHT3X | x | x | - | x | x |
USE_HTU | x | x | - | x | x |
USE_BMP | x | x | - | x | x |
USE_BME680 | - | - | - | - | x |
USE_SGP30 | x | - | - | x | x |
USE_BH1750 | x | x | - | x | x |
USE_VEML6070 | - | - | - | - | x |
USE_TSL2561 | - | - | - | - | x |
USE_SI1145 | - | - | - | - | x |
USE_ADS1115 | - | - | - | - | x |
USE_ADS1115_I2CDEV | - | - | - | - | - |
USE_INA219 | - | - | - | - | x |
USE_MGS | - | - | - | - | x |
USE_SPI | - | - | - | - | - |
USE_MHZ19 | x | x | - | x | x |
USE_SENSEAIR | x | x | - | x | x |
USE_PMS5003 | x | x | - | x | x |
USE_NOVA_SDS | x | - | - | x | x |
USE_PZEM004T | x | x | - | x | x |
USE_SERIAL_BRIDGE | x | - | - | x | x |
USE_SDM120 | - | - | - | - | x |
USE_IR_REMOTE | x | x | - | x | x |
USE_IR_HVAC | - | - | - | - | x |
USE_IR_RECEIVE | x | - | - | x | x |
USE_WS2812 | x | x | - | x | x |
USE_WS2812_DMA | - | - | - | - | - |
USE_ARILUX_RF | x | x | - | x | x |
USE_SR04 | x | - | - | x | x |
Typical file size
ESP/Arduino library version | sonoff | classic | minimal | knx | allsensors |
---|---|---|---|---|---|
ESP/Arduino lib v2.3.0 | 529k | 490k | 429k | 538k | 554k |
ESP/Arduino lib v2.4.0 | 534k | 498k | 436k | 542k | 558k |
ESP/Arduino lib v2.4.1 | 536k | 501k | 439k | 545k | 560k |
Contribute
You can contribute to Sonoff-Tasmota by
- providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
- testing new released features and report issues
- donating to acquire hardware for testing and implementing or out of gratitude
Credits
Libraries used
Libraries used with Sonoff-Tasmota are:
- ESP8266 core for Arduino
- Adafruit BME680
- Adafruit Sensor
- Adafruit SGP30
- ArduinoJson
- Esp8266MqttClient
- esp-knx-ip
- esp-mqtt-arduino
- I2Cdevlib
- IRremoteEsp8266
- JobaTsl2561
- MultiChannelGasSensor
- NeoPixelBus
- OneWire
- PubSubClient
People inspiring me
People helping to keep the show on the road:
- David Lang providing initial issue resolution and code optimizations
- Heiko Krupp for his IRSend, HTU21, SI70xx and Wemo/Hue emulation drivers
- Wiktor Schmidt for Travis CI implementation
- Thom Dietrich for PlatformIO optimizations
- Marinus van den Broek for his EspEasy groundwork
- Pete Ba for more user friendly energy monitor calibration
- Lobradov providing compile optimization tips
- Flexiti for his initial timer implementation
- reloxx13 for his SonWeb management tool
- Joachim Banzhaf for his TSL2561 library and driver
- Gijs Noorlander for his MHZ19 and SenseAir drivers
- Emontnemery for his HomeAssistant Discovery concept and many code tuning tips
- Aidan Mountford for his HSB support
- Daniel Ztolnai for his Serial Bridge implementation
- Gerhard Mutz for his SGP30 and Sunrise/Sunset driver
- Nuno Ferreira for his HC-SR04 driver
- Adrian Scillato for his (security)fixes and implementing and maintaining KNX
- Gennaro Tortone for implementing and maintaining Eastron drivers
- Raymond Mouthaan for managing Wemos Wiki information
- Norbert Richter, Frogmore42 and Jason2866 for providing many issue answers
- Many more providing Tips, Pocs or PRs
License
This program is licensed under GPL-3.0