Merge pull request #918 from esphome/bump-1.16.0b1

1.16.0b1
This commit is contained in:
Jesse Hills 2021-01-09 07:49:06 +13:00 committed by GitHub
commit a745965fb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
104 changed files with 2435 additions and 121 deletions

View File

@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.15.3
PROJECT_NUMBER = 1.16.0b1
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

View File

@ -1,5 +1,5 @@
ESPHOME_PATH = ../esphome
ESPHOME_REF = v1.15.3
ESPHOME_REF = v1.16.0b1
.PHONY: html html-strict cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png

View File

@ -1 +1 @@
1.15.3
1.16.0b1

View File

@ -33,6 +33,7 @@ Changelog - Version 1.15.0 - September 13, 2020
TM1637, components/display/tm1637, tm1637.jpg
SSD1351, components/display/ssd1351, ssd1351.jpg
ST7789V, components/display/st7789v, st7789v.jpg
ILI9341, components/display/ili9341, ili9341.jpg
PCD8544 (Nokia 5110/ 3310), components/display/pcd8544, pcd8544.jpg
BLE Scanner, components/text_sensor/ble_scanner, bluetooth.svg
Custom UART Text Sensor, components/text_sensor/uart, language-cpp.svg

232
changelog/v1.16.0.rst Normal file
View File

@ -0,0 +1,232 @@
New Features
------------
- esphome: Enable reverse display of the Max7219 digit :esphomepr:`1234` by :ghuser:`rspaargaren` (new-feature)
- esphome: Pulse_counter measure total pulses :esphomepr:`1173` by :ghuser:`FrankBakkerNl` (new-feature)
- esphome: Support I2C transactions with combined reads and writes :esphomepr:`996` by :ghuser:`la7dja` (new-feature)
New Integrations
----------------
- esphome: Added tmp102 temperature sensor support :esphomepr:`929` by :ghuser:`timsavage` (new-integration)
- esphome: Add MCP9808 temperature sensor :esphomepr:`1169` by :ghuser:`k7hpn` (new-integration)
- esphome: Add rc522 :esphomepr:`1298` by :ghuser:`glmnet` (new-integration)
- esphome: Pn532 upgrades :esphomepr:`1302` by :ghuser:`jesserockz` (breaking-change) (new-integration)
- esphome: Add support for ATC_MiThermometer :esphomepr:`1291` by :ghuser:`ahpohl` (new-integration)
- esphome: Hbridge christmas light :esphomepr:`1251` by :ghuser:`DotNetDann` (new-integration)
- esphome: add Ili9341 display :esphomepr:`1233` by :ghuser:`Valcob` (new-integration)
- esphome: components: teleinfo: electrical counter information. :esphomepr:`1108` by :ghuser:`0hax` (new-integration)
- esphome: add support for EZO sensor circuits :esphomepr:`1239` by :ghuser:`ssieb` (new-integration)
- esphome: Add climate.hitachi_ac344 :esphomepr:`1336` by :ghuser:`honomoa` (new-integration)
- esphome: SSD1331 display support :esphomepr:`1244` by :ghuser:`kbx81` (new-integration)
- esphome: New display ST7735 :esphomepr:`1066` by :ghuser:`SenexCrenshaw` (new-integration)
- esphome: MCP23SXX I/O Expander - SPI :esphomepr:`1068` by :ghuser:`SenexCrenshaw` (new-integration)
- esphome: Add GIF Animation Support :esphomepr:`1378` by :ghuser:`Syndlex` (new-integration)
- esphome: Canbus + MCP2515 including ExtID support :esphomepr:`1384` by :ghuser:`danielschramm` (new-integration)
- esphome: Add full SSD1327 display support :esphomepr:`1406` by :ghuser:`kbx81` (new-integration)
- esphome: SSD1322 display support :esphomepr:`1405` by :ghuser:`kbx81` (new-integration)
Breaking Changes
----------------
- esphome: Replace CENTER_LEFT with TOP_LEFT to match other printf function :esphomepr:`1295` by :ghuser:`TheZoker` (breaking-change)
- esphome: Float output: Fix min_power and max_power adjusting when output is inverted :esphomepr:`1250` by :ghuser:`dubit0` (breaking-change)
- esphome: Pn532 upgrades :esphomepr:`1302` by :ghuser:`jesserockz` (breaking-change) (new-integration)
All changes
-----------
- docs: Update bang_bang doc, changelog fix :docspr:`667` by :ghuser:`kbx81`
- esphome: Update cryptography requirement from <3,>=2.0.0 to >=2.0.0,<4 :esphomepr:`1206` by :ghuser:`dependabot[bot]`
- esphome: fix dashboard select drop down :esphomepr:`1205` by :ghuser:`glmnet`
- docs: New prometheus configuration :docspr:`713`
- esphome: Cleanup web server prometheus integration :esphomepr:`1192`
- esphome: Remove overview job from CI :esphomepr:`1216`
- esphome: Bump pytest from 5.4.3 to 6.0.0 :esphomepr:`1220` by :ghuser:`dependabot[bot]`
- esphome: Fix ci-custom.py const.py ordered check and improve code :esphomepr:`1222`
- esphome: Add hyphen to supported name characters :esphomepr:`1223` by :ghuser:`ianleeder`
- docs: Add hyphen to supported name characters :docspr:`719` by :ghuser:`ianleeder`
- esphome: Bump protobuf from 3.12.2 to 3.12.4 :esphomepr:`1230` by :ghuser:`dependabot[bot]`
- esphome: Clean up ALLOWED_CHARS :esphomepr:`1235` by :ghuser:`ianleeder`
- esphome: Bump pytest from 6.0.0 to 6.0.1 :esphomepr:`1236` by :ghuser:`dependabot[bot]`
- esphome: Bump pytest-mock from 3.2.0 to 3.3.1 :esphomepr:`1263` by :ghuser:`dependabot[bot]`
- esphome: Bump protobuf from 3.12.4 to 3.13.0 :esphomepr:`1254` by :ghuser:`dependabot[bot]`
- docs: Update diy.rst :docspr:`760` by :ghuser:`kquinsland`
- esphome: Bump pylint from 2.5.3 to 2.6.0 :esphomepr:`1262` by :ghuser:`dependabot[bot]`
- esphome: Bump pytest from 6.0.1 to 6.0.2 :esphomepr:`1280` by :ghuser:`dependabot[bot]`
- esphome: Bump platformio from 4.3.4 to 5.0.1 :esphomepr:`1275` by :ghuser:`dependabot[bot]`
- esphome: Update max31855.cpp :esphomepr:`1273` by :ghuser:`EmbeddedDevver`
- esphome: Add Fan and Swing Support to fujitsu-general Component :esphomepr:`1287` by :ghuser:`kpelzel`
- esphome: Replace CENTER_LEFT with TOP_LEFT to match other printf function :esphomepr:`1295` by :ghuser:`TheZoker` (breaking-change)
- esphome: Enable reverse display of the Max7219 digit :esphomepr:`1234` by :ghuser:`rspaargaren` (new-feature)
- docs: update Max7219 digit with reverse option :docspr:`726` by :ghuser:`rspaargaren`
- esphome: Bump paho-mqtt from 1.5.0 to 1.5.1 :esphomepr:`1297` by :ghuser:`dependabot[bot]`
- esphome: Bump pytest-cov from 2.10.0 to 2.10.1 :esphomepr:`1253` by :ghuser:`dependabot[bot]`
- esphome: CI - Don't fast fail testing so results are not hidden in matrix builds :esphomepr:`1286` by :ghuser:`jesserockz`
- esphome: Support Daikin horizontal swing in climate_ir :esphomepr:`1247` by :ghuser:`buxtronix`
- esphome: Table row wasn't closed :esphomepr:`1310` by :ghuser:`Ivo-tje`
- esphome: Typo in the pm2.5 grid :esphomepr:`1311` by :ghuser:`jamesgao`
- esphome: Float output: Fix min_power and max_power adjusting when output is inverted :esphomepr:`1250` by :ghuser:`dubit0` (breaking-change)
- esphome: Add new time.has_time condition :esphomepr:`1255` by :ghuser:`ashmckenzie`
- docs: Add time.has_time documentation :docspr:`782` by :ghuser:`ashmckenzie`
- esphome: handle windows filenames :esphomepr:`1307` by :ghuser:`glmnet`
- esphome: Bump flake8 from 3.8.3 to 3.8.4 :esphomepr:`1319` by :ghuser:`dependabot[bot]`
- esphome: Bump pytest from 6.0.2 to 6.1.1 :esphomepr:`1320` by :ghuser:`dependabot[bot]`
- esphome: Bump colorlog from 4.2.1 to 4.4.0 :esphomepr:`1323` by :ghuser:`dependabot[bot]`
- esphome: Add LYWSD02 battery sensor :esphomepr:`1334` by :ghuser:`Alex9779`
- docs: add battery sensor for lywsd02 :docspr:`821` by :ghuser:`sermayoral`
- docs: Small typo fixes for Sonoff T1 UK 3 Gang :docspr:`815` by :ghuser:`r15ch13`
- esphome: Added tmp102 temperature sensor support :esphomepr:`929` by :ghuser:`timsavage` (new-integration)
- docs: Added tmp102 Temperature sensor docs :docspr:`451` by :ghuser:`timsavage`
- esphome: Add MCP9808 temperature sensor :esphomepr:`1169` by :ghuser:`k7hpn` (new-integration)
- docs: Add documentation for MCP9808 sensor :docspr:`691` by :ghuser:`k7hpn`
- esphome: Add rc522 :esphomepr:`1298` by :ghuser:`glmnet` (new-integration)
- docs: add rc522 docs :docspr:`810` by :ghuser:`glmnet`
- esphome: Add new codeowners :esphomepr:`1335` by :ghuser:`jesserockz`
- esphome: Pn532 upgrades :esphomepr:`1302` by :ghuser:`jesserockz` (breaking-change) (new-integration)
- docs: Update PN532 docs to add I2C :docspr:`798` by :ghuser:`jesserockz`
- esphome: Fixed CLIMATE_SWING_HORIZONTAL typo :esphomepr:`1340` by :ghuser:`rob-deutsch`
- esphome: add illuminance for xiaomi_mjyd02yla :esphomepr:`1299` by :ghuser:`al-one`
- docs: add illuminance for xiaomi_mjyd02yla :docspr:`779` by :ghuser:`al-one`
- esphome: Add support for WPA2-EAP enterprise WiFi to ESP8266s. :esphomepr:`1332` by :ghuser:`tomtom5152`
- docs: Update enterprise authentication docs to indicate support for ESP8266s :docspr:`814` by :ghuser:`tomtom5152`
- esphome: Pulse_counter measure total pulses :esphomepr:`1173` by :ghuser:`FrankBakkerNl` (new-feature)
- docs: Added docs for pulse_counter total :docspr:`705` by :ghuser:`FrankBakkerNl`
- esphome: Add on_clockwise and on_anticlockwise triggers to rotary encoder :esphomepr:`1330` by :ghuser:`jesserockz`
- docs: Add docs for rotary encoder on_clockwise and on_anticlockwise triggers :docspr:`807` by :ghuser:`jesserockz`
- esphome: FastLED: Add YAML option for data rate :esphomepr:`1338` by :ghuser:`youknow0`
- docs: FastLED: Add docs for new YAML option data_rate :docspr:`824` by :ghuser:`youknow0`
- esphome: [Image] add dither option for image processing :esphomepr:`1317` by :ghuser:`zhujunsan`
- docs: [Image] add dither option for image processing :docspr:`796` by :ghuser:`zhujunsan`
- esphome: Update actions to move away from set-env :esphomepr:`1349` by :ghuser:`jesserockz`
- esphome: Move CONF_CONTRAST to const.py :esphomepr:`1352` by :ghuser:`jesserockz`
- esphome: Bump platformio from 5.0.1 to 5.0.2 :esphomepr:`1355` by :ghuser:`dependabot[bot]`
- docs: Fix connection typo in FAQ :docspr:`831` by :ghuser:`KTibow`
- docs: Add TuyaMCU sample config for WF-DS01 :docspr:`829` by :ghuser:`davet2001`
- docs: Link to Winsen ZE08-CH2O custom component :docspr:`833` by :ghuser:`cretep`
- esphome: Adds support for RF Bridge advanced codes :esphomepr:`1246` by :ghuser:`jesserockz`
- docs: Update RF Bridge documentation for advanced codes :docspr:`731` by :ghuser:`jesserockz`
- esphome: Add contrast option to PCD8544 :esphomepr:`1348` by :ghuser:`dzervas`
- docs: Add contrast option docs to PCD8544 :docspr:`834` by :ghuser:`dzervas`
- esphome: Add support for ATC_MiThermometer :esphomepr:`1291` by :ghuser:`ahpohl` (new-integration)
- docs: Add support for ATC_MiThermometer, update bindkey generation procedure :docspr:`777` by :ghuser:`ahpohl`
- esphome: Bump pytest from 6.1.1 to 6.1.2 :esphomepr:`1342` by :ghuser:`dependabot[bot]`
- esphome: Bump voluptuous from 0.11.7 to 0.12.0 :esphomepr:`1296` by :ghuser:`dependabot[bot]`
- esphome: Bump pytz from 2020.1 to 2020.4 :esphomepr:`1354` by :ghuser:`dependabot[bot]`
- esphome: Add a datapoint to sync the Tuya MCU minimum brightness :esphomepr:`1347` by :ghuser:`cprussin`
- docs: Document tuya dimmer min_value_datapoint :docspr:`832` by :ghuser:`cprussin`
- esphome: Support I2C transactions with combined reads and writes :esphomepr:`996` by :ghuser:`la7dja` (new-feature)
- esphome: Hbridge christmas light :esphomepr:`1251` by :ghuser:`DotNetDann` (new-integration)
- docs: Hbridge christmas light :docspr:`733` by :ghuser:`DotNetDann`
- docs: Add a note about INPUT_PULLUP :docspr:`830` by :ghuser:`wodor`
- docs: Update waveshare_epaper.rst :docspr:`813` by :ghuser:`thedexboy`
- docs: added warning to waveshare 2.7 inch display :docspr:`818` by :ghuser:`damanti-me`
- docs: Update to I2C docs to explain I2C daisy chaining :docspr:`812` by :ghuser:`the-impaler`
- docs: I2c text update :docspr:`839` by :ghuser:`jesserockz`
- esphome: add Ili9341 display :esphomepr:`1233` by :ghuser:`Valcob` (new-integration)
- esphome: Correcting Hertz symbol :esphomepr:`1364` by :ghuser:`robdejonge`
- docs: remove use_custom_code :docspr:`841` by :ghuser:`glmnet`
- esphome: Bump colorlog from 4.4.0 to 4.6.2 :esphomepr:`1367` by :ghuser:`dependabot[bot]`
- esphome: Add support for Tuya MCU 0x1C (obtain local time) :esphomepr:`1344` by :ghuser:`Yarikx`
- docs: Specify clock to be used in Tuya MCU :docspr:`827` by :ghuser:`Yarikx`
- esphome: Separate Tuya climate temperature_multiplier to current/target multiplier :esphomepr:`1345` by :ghuser:`Yarikx`
- docs: Add separate current/target Tuya Climate multipliers :docspr:`828` by :ghuser:`Yarikx`
- esphome: Add bounds check for X :esphomepr:`1371` by :ghuser:`ssieb`
- esphome: scd30: Allow setting ambient pressure compensation :esphomepr:`1365` by :ghuser:`matoxp`
- docs: scd30: Add missing configuration variables :docspr:`842` by :ghuser:`matoxp`
- esphome: components: teleinfo: electrical counter information. :esphomepr:`1108` by :ghuser:`0hax` (new-integration)
- docs: Teleinfo :docspr:`666` by :ghuser:`0hax`
- esphome: Adding ADE7953 irq_pin :esphomepr:`1359` by :ghuser:`djwmarcx`
- docs: Adding ADE7953 irq_pin :docspr:`848` by :ghuser:`djwmarcx`
- docs: Fix MCP23008 example :docspr:`845` by :ghuser:`djtef`
- esphome: add support for EZO sensor circuits :esphomepr:`1239` by :ghuser:`ssieb` (new-integration)
- docs: add docs for new EZO sensor circuits :docspr:`727` by :ghuser:`ssieb`
- esphome: Bump platformio from 5.0.2 to 5.0.3 :esphomepr:`1372` by :ghuser:`dependabot[bot]`
- docs: Add Hitachi AC344 IR Climate documentation :docspr:`822` by :ghuser:`honomoa`
- esphome: Add climate.hitachi_ac344 :esphomepr:`1336` by :ghuser:`honomoa` (new-integration)
- esphome: add CODEOWNER for new ezo component :esphomepr:`1379` by :ghuser:`ssieb`
- esphome: SSD1331 display support :esphomepr:`1244` by :ghuser:`kbx81` (new-integration)
- docs: Add SSD1331 docs :docspr:`729` by :ghuser:`kbx81`
- esphome: Add kbx81 to CODEOWNERS :esphomepr:`1380` by :ghuser:`kbx81`
- esphome: Added 332 color conversion and RGB/BGR/GRB formats :esphomepr:`1381` by :ghuser:`SenexCrenshaw`
- esphome: Fixed logger broken by colorama :esphomepr:`1385` by :ghuser:`Anonym-tsk`
- esphome: Formatted test yaml files :esphomepr:`1382` by :ghuser:`SenexCrenshaw`
- docs: Updated link to ble_monitor (previous mitemp_bt) :docspr:`849` by :ghuser:`Ernst79`
- docs: Fix ac dimmer example code :docspr:`852` by :ghuser:`rradar`
- docs: DIY: Add Blogpost for SP501E as WS2812 LED Controller :docspr:`854` by :ghuser:`margau`
- docs: Replace Hass.io :docspr:`853` by :ghuser:`fabaff`
- docs: Update deep_sleep.rst :docspr:`850` by :ghuser:`anekinloewe`
- docs: Adding IAQ board in cookbook section :docspr:`844` by :ghuser:`nkitanov`
- esphome: New display ST7735 :esphomepr:`1066` by :ghuser:`SenexCrenshaw` (new-integration)
- docs: Fix broken YAML in MQTT on_json_message example :docspr:`620` by :ghuser:`napieraj`
- esphome: Configurable OTA Safe Mode :esphomepr:`1393` by :ghuser:`alexyao2015`
- docs: Update docs for Configurable OTA Safe Mode :docspr:`859` by :ghuser:`alexyao2015`
- docs: Update ethernet.rst :docspr:`863` by :ghuser:`adezerega`
- esphome: Add option to suppress embedded MCU updates on certain datapoints :esphomepr:`1396` by :ghuser:`stubs12`
- docs: Documentation for tuya ignore_mcu_update_on_datapoints setting :docspr:`868` by :ghuser:`stubs12`
- esphome: scd30: Allow setting temperature offset :esphomepr:`1400` by :ghuser:`matoxp`
- docs: scd30: Document temperature_offset setting :docspr:`864` by :ghuser:`matoxp`
- esphome: fix HTTP Request reusing connections with different hosts :esphomepr:`1383` by :ghuser:`Anonym-tsk`
- docs: Ili9341 doc update :docspr:`870` by :ghuser:`kbx81`
- esphome: MCP23SXX I/O Expander - SPI :esphomepr:`1068` by :ghuser:`SenexCrenshaw` (new-integration)
- docs: MCP23S08-Docs :docspr:`613` by :ghuser:`SenexCrenshaw`
- esphome: Bump pyserial from 3.4 to 3.5 :esphomepr:`1394` by :ghuser:`dependabot[bot]`
- esphome: Fix Tuya initialisation regression :esphomepr:`1408` by :ghuser:`rmounce`
- docs: Update max31856.rst :docspr:`883` by :ghuser:`emuehlstein`
- docs: Fix one of the commens in code block :docspr:`881` by :ghuser:`HepoH3`
- docs: Update wifi.rst :docspr:`873` by :ghuser:`Pack3tL0ss`
- docs: Update mirabella-genio-bulb.rst :docspr:`857` by :ghuser:`kalebzettl`
- docs: Update teckin sb50 entry as they cannot be flashed anymore :docspr:`878` by :ghuser:`justyns`
- docs: Change all instances of travis to github actions :docspr:`860` by :ghuser:`alexyao2015`
- docs: Improve obtaining bind key :docspr:`843` by :ghuser:`abelmatser`
- docs: Add clarification about "update_interval" to SDS011 sensor documentation :docspr:`770` by :ghuser:`maurice-schleussinger`
- docs: Cookbook: Light Strip :docspr:`805` by :ghuser:`lein1013`
- docs: Optimize images :docspr:`799` by :ghuser:`JeffResc`
- docs: Add troubleshooting help with light partition :docspr:`851` by :ghuser:`TheLastGimbus`
- docs: Update bang_bang.rst :docspr:`524` by :ghuser:`xheronimo`
- docs: Fixed docs to match xiaomi rename :docspr:`606` by :ghuser:`WoLpH`
- docs: add another example without MQTT :docspr:`573` by :ghuser:`adonno`
- docs: Show example of calling HA script :docspr:`688` by :ghuser:`glmnet`
- docs: Update pulse_counter.rst :docspr:`689` by :ghuser:`neographikal`
- docs: More descriptive information for noobs :docspr:`658` by :ghuser:`haryadoon`
- esphome: Run task for VS Code :esphomepr:`1361` by :ghuser:`gitolicious`
- docs: esp32_dac.rst - Add light component to example :docspr:`885` by :ghuser:`ferbar`
- docs: Update ethernet.rst :docspr:`887` by :ghuser:`dziobson`
- docs: Adding gif animation docs :docspr:`856` by :ghuser:`Syndlex`
- esphome: Add GIF Animation Support :esphomepr:`1378` by :ghuser:`Syndlex` (new-integration)
- docs: Update diy.rst :docspr:`888` by :ghuser:`pieterbrink123`
- esphome: Bump tornado from 6.0.4 to 6.1 :esphomepr:`1353` by :ghuser:`dependabot[bot]`
- esphome: Fix mDNS webserver port and expose prometheus service :esphomepr:`1389` by :ghuser:`richardweinberger`
- esphome: Bump esptool from 2.8 to 3.0 :esphomepr:`1357` by :ghuser:`dependabot[bot]`
- docs: Update diy.rst :docspr:`891` by :ghuser:`lairsdragon`
- docs: Update sim800l.rst :docspr:`893` by :ghuser:`tyomikh`
- docs: docs: necessary registration of node in HA :docspr:`741` by :ghuser:`torwag`
- docs: display: st7789v: Set GPIO0 as INPUT_PULLUP :docspr:`759` by :ghuser:`kylemanna`
- docs: clarify VCC, wrt #1452 :docspr:`753` by :ghuser:`pille`
- docs: Update docs about MQTT lambdas :docspr:`809` by :ghuser:`matikij`
- docs: Add manual for Sonoff T3 EU 3 Gang :docspr:`816` by :ghuser:`r15ch13`
- docs: Add get_setup_priority() to Custom sensor docs :docspr:`819` by :ghuser:`mjkl-gh`
- docs: Change on_message topics into a yaml list for deep_sleep docs :docspr:`867` by :ghuser:`mrrsm`
- docs: Update pzem Example configuration entry (bad stop bit) :docspr:`872` by :ghuser:`Francis-labo`
- docs: Update next from current 20201221 :docspr:`894` by :ghuser:`jesserockz`
- docs: Update sonof_basic.rst - incorrect example :docspr:`892` by :ghuser:`bvansambeek`
- docs: Update apds9960.rst :docspr:`895` by :ghuser:`DrRob`
- esphome: Canbus + MCP2515 including ExtID support :esphomepr:`1384` by :ghuser:`danielschramm` (new-integration)
- docs: Canbus + MCP2515 :docspr:`823` by :ghuser:`danielschramm`
- esphome: Add "ESPHOME_NOGITIGNORE" env var to prevent .gitignore creation :esphomepr:`1425` by :ghuser:`acshef`
- esphome: Add full SSD1327 display support :esphomepr:`1406` by :ghuser:`kbx81` (new-integration)
- docs: Add SSD1327 display docs :docspr:`875` by :ghuser:`kbx81`
- esphome: SSD1322 display support :esphomepr:`1405` by :ghuser:`kbx81` (new-integration)
- docs: Add SSD1322 doc :docspr:`869` by :ghuser:`kbx81`
- esphome: Expose port 6052 to make reverse proxy work :esphomepr:`1437` by :ghuser:`Klarstein`
- esphome: rc_switch: Fix Sync signal sent after the code :esphomepr:`1426` by :ghuser:`M95D`
- docs: added slow mode and detach time to servo :docspr:`896` by :ghuser:`andreashergert1984`
- esphome: added slow mode and detach time to servo :esphomepr:`1413` by :ghuser:`andreashergert1984`
- esphome: Bump pytz from 2020.4 to 2020.5 :esphomepr:`1430` by :ghuser:`dependabot[bot]`
- esphome: Bump pytest from 6.1.2 to 6.2.1 :esphomepr:`1422` by :ghuser:`dependabot[bot]`
- docs: Update diy.rst :docspr:`913` by :ghuser:`mikosoft83`
- docs: Add note about default settings in remote transmitter :docspr:`901` by :ghuser:`darthsebulba04`
- docs: st7735 Docs :docspr:`608` by :ghuser:`SenexCrenshaw`
- esphome: Bump platformio from 5.0.3 to 5.0.4 :esphomepr:`1444` by :ghuser:`dependabot[bot]`
- esphome: Fix SN74HC595 with optional OE pin :esphomepr:`1454` by :ghuser:`rradar`
- esphome: Fix stepper half half step mode :esphomepr:`1397` by :ghuser:`Fractal147`

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@ -45,7 +45,7 @@ The configuration is made up of two parts: The central component, and individual
Base Configuration:
- **address** (*Optional*, integer): The I^2C address of the sensor. Defaults to ``0x5A``.
- **address** (*Optional*, integer): The I²C address of the sensor. Defaults to ``0x5A``.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor.
- **touch_debounce** (*Optional*, integer): The minimum length before a touch is recognized. Range is from 0 to 7.
Defaults to 0.

View File

@ -13,7 +13,7 @@ Component/Hub
The ``pn532`` component allows you to use PN532 NFC/RFID controllers
(`datasheet <https://cdn-shop.adafruit.com/datasheets/pn532ds.pdf>`__, `Adafruit <https://www.adafruit.com/product/364>`__)
with ESPHome. This component is a global hub that establishes the connection to the PN532 via :ref:`SPI <spi>` and
with ESPHome. This component is a global hub that establishes the connection to the PN532 via :ref:`SPI <spi>` or :ref:`I²C <i2c>` and
outputs its data. Using the :ref:`PN532 binary sensors <pn532-tag>` you can then
create individual binary sensors that track if an NFC/RFID tag is currently detected by the PN532.
@ -23,22 +23,22 @@ create individual binary sensors that track if an NFC/RFID tag is currently dete
See :ref:`pn532-setting_up_tags` for information on how to setup individual binary sensors for this component.
As the communication with the PN532 is done using SPI for this integration, you need to set the two switches on
the board to the SPI mode (usually by setting the first one to OFF and the second one to ON). Additionally, you need
to have an :ref:`SPI bus <spi>` in your configuration with both the **miso_pin** and **mosi_pin** set.
The PN532 can be configured to use either the SPI **or** I²C protocol for data communication.
You will need to switch the dip switches located on the module according to the table printed on the board.
SPI is usually switch 1 OFF and switch 2 ON and I²C is usually switch 1 ON and switch 2 OFF.
You will need to have the :ref:`SPI Bus <spi>` or the :ref:`I²C Bus <i2c>` configured depending on your choice.
.. code-block:: yaml
# Example configuration entry
spi:
clk_pin: D0
miso_pin: D1
mosi_pin: D2
pn532:
# Example configuration for SPI (choose which one!)
pn532_spi:
cs_pin: D3
update_interval: 1s
# Example configuration for I²C (choose which one!)
pn532_i2c:
update_interval: 1s
binary_sensor:
- platform: pn532
uid: 74-10-37-94
@ -47,7 +47,7 @@ to have an :ref:`SPI bus <spi>` in your configuration with both the **miso_pin**
Configuration variables:
************************
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that the chip select line
- **cs_pin** (**Required for SPI**, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that the chip select line
is connected to.
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the PN532. This affects the
duration that the individual binary sensors stay active when they're found.
@ -56,6 +56,8 @@ Configuration variables:
when a tag is read. See :ref:`pn532-on_tag`.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component <spi>` if you want
to use multiple I²C buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component.
.. figure:: images/pn532-spi.jpg
@ -69,9 +71,8 @@ Configuration variables:
``on_tag``
----------
This automation will be triggered when the PN532 module responds with a tag. Please note that this
can be called quite often (with an interval of ``update_interval``) as it's triggered repeatedly
if the tag is re-read many times.
This automation will be triggered when the PN532 module responds with a tag. This will only be triggered
if the tag is changed or goes away for one cycle of ``update_interval``.
The parameter ``x`` this trigger provides is of type ``std::string`` and is the tag UID in the format
``74-10-37-94``. The configuration below will for example publish the tag ID on the MQTT topic ``pn532/tag``.
@ -131,7 +132,7 @@ unique id (``uid``) is currently being detected by the PN532 or not.
miso_pin: D1
mosi_pin: D2
pn532:
pn532_spi:
cs_pin: D3
update_interval: 1s

View File

@ -0,0 +1,153 @@
RC522 RFID
==========
.. seo::
:description: Instructions for setting up RC522 RFID tag readers and tags in ESPHome
:image: rc522.jpg
:keywords: RC522, RFID
.. _rc522-component:
Component/Hub
-------------
The ``rc522`` component allows you to use RC522 RFID controllers
(`datasheet <hthttps://www.nxp.com/docs/en/data-sheet/MFRC522.pdff>`__, `Ali Express <https://es.aliexpress.com/item/1260729519.html>`__)
with ESPHome. This component is a global hub that establishes the connection to the RC522 via :ref:`SPI <spi>` and
outputs its data. Using the :ref:`RC522 binary sensors <rc522-tag>` you can then
create individual binary sensors that track if an RFID tag is currently detected by the RC522.
.. figure:: images/rc522-full.jpg
:align: center
:width: 60.0%
See :ref:`rc522-setting_up_tags` for information on how to setup individual binary sensors for this component.
As the communication with the RC522 is done using SPI you need to have an :ref:`SPI bus <spi>` in your configuration with both
the **miso_pin** and **mosi_pin** set.
.. code-block:: yaml
# Example configuration entry
spi:
clk_pin: D0
miso_pin: D1
mosi_pin: D2
rc522_spi:
cs_pin: D3
update_interval: 1s
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID Tag"
Configuration variables:
************************
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that the chip select line
is connected to.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin connected to the RST line. Some tests
shows the RC522 working okay without this.
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the
duration that the individual binary sensors stay active when they're found.
If a device is not found within this time window, it will be marked as not present. Defaults to 1s.
- **on_tag** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when a tag is read. See :ref:`rc522-on_tag`.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component.
.. _rc522-on_tag:
``on_tag``
----------
This automation will be triggered when the RC522 module responds with a tag. Please note that this
can be called quite often (with an interval of ``update_interval``) as it's triggered repeatedly
if the tag is re-read many times.
The parameter ``x`` this trigger provides is of type ``std::string`` and is the tag UID in the format
``74-10-37-94``. The configuration below will for example publish the tag ID on the MQTT topic ``rc522/tag``.
.. code-block:: yaml
rc522:
# ...
on_tag:
then:
- mqtt.publish:
topic: rc522/tag
payload: !lambda 'return x;'
A tag scanned event can also be sent to the Home Assistant tag component
using :ref:`api-homeassistant_tag_scanned_action`.
.. code-block:: yaml
rc522:
# ...
on_tag:
then:
- homeassistant.tag_scanned: !lambda 'return x;'
.. _rc522-tag:
RFID Tag
--------
The ``rc522`` binary sensor platform lets you track if an RFID tag with a given
unique id (``uid``) is currently being detected by the RC522 or not.
.. code-block:: yaml
# Example configuration entry
spi:
clk_pin: D0
miso_pin: D1
mosi_pin: D2
rc522_spi:
cs_pin: D3
update_interval: 1s
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID Tag"
Configuration variables:
************************
- **uid** (**Required**, string): The unique ID of the RFID tag. This is a hyphen-separated list
of hexadecimal values. For example ``74-10-37-94``.
- **name** (**Required**, string): The name of the binary sensor.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
.. _rc522-setting_up_tags:
Setting Up Tags
---------------
To set up binary sensors for specific RFID tags you first have to know their unique IDs. To obtain this
id, first set up a simple RC522 configuration without any binary sensors like above.
When your code is running and you approach the RC522 with an RFID Tag, you should see a message like this:
.. code::
Found new tag '74-10-37-94'
Then copy this id and create a ``binary_sensor`` entry as in the configuration example. Repeat this process for
each tag.
See Also
--------
- :doc:`index`
- :doc:`rdm6300`
- :doc:`pn532`
- :apiref:`rc522_spi/rc522_spi.h`
- :ghedit:`Edit`

369
components/canbus.rst Normal file
View File

@ -0,0 +1,369 @@
.. _canbus:
CAN bus
=======
.. seo::
:description: Instructions for setting up an CAN bus in ESPHome
:image: canbus.png
:keywords: CAN
Controller Area Network (CAN bus) is a serial bus protocol to connect individual systems and sensors
as an alternative to conventional multi-wire looms.
It allows automotive components to communicate on a single or dual-wire networked data bus up to 1Mbps.
CAN is an International Standardization Organization (ISO) defined serial communications bus originally
developed for the automotive industry to replace the complex wiring harness with a two-wire bus. The
specification calls for high immunity to electrical interference and the ability to self-diagnose and repair
data errors. These features have led to CANs popularity in a variety of industries including building
automation, medical, and manufacturing.
The current ESPHome implementation supports single frame data transfer. In this way you may send and
receive data frames up to 8 bytes.
With this you can transmit the press of a button or the feedback from a sensor on the bus.
All other devices on the bus will be able to get this data to switch on/off a light or display the
transmitted data.
The CAN bus itself has only two wires named Can High and Can Low or CanH and CanL. For the ESPHome
CAN bus to work you need to select the device that has the physical CAN bus implemented.
At this moment only the MCP2515 driver is supported. You can configure multiple busses.
Any can bus node can transmit data at any time, and any node can send any ``can_id`` value and any
node can receive any can_id too. Is up to you how to organize the can_id values. You can setup a can
bus network where each node has a can id which will use to broadcast data about itself, if a node
should, e.g. turn on a light, it can listen for can messages with the can id assigned to it.
So you can have several nodes being able to control a light in e.g. node 20.
Base CAN Bus Configuration
--------------------------
Each canbus platform extends this configuration schema.
.. code-block:: yaml
# Example configuration entry
canbus:
- platform: ...
can_id: 4
on_frame:
- can_id: 500
use_extended_id: False
then:
- lambda: |-
std::string b(x.begin(), x.end());
ESP_LOGD("can id 500", "%s", &b[0] );
Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **can_id** (**Required**, integer): default *can id* used for transmitting frames.
- **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*:
*False*: Standard 11 bits IDs, *True*: Extended 29 bits ID
- **bit_rate** (*Optional*, one of the supported bitrates= defaults to ``125KBPS``.
- 5KBPS
- 10KBPS
- 20KBPS
- 31K25BPS
- 33KBPS
- 40KBPS
- 50KBPS
- 80KBPS
- 83K3BPS
- 95KBPS
- 100KBPS
- 125KBPS
- 200KBPS
- 250KBPS
- 500KBPS
- 1000KBPS
Automations:
- **on_frame** (*Optional*, :ref:`Automation <automation>`): An automation to perform when ability
CAN Frame is received. See below.
.. _canbus-on-frame:
``on_frame``
************
This automation will be triggered when a can frame is received. A variable ``x`` of type
``std::vector<uint8_t>`` is passed to the automation for use in lambdas.
.. note::
Messeges this node sends to te same ID will not show up as reveived messages.
.. code-block:: yaml
canbus:
- platform: ...
on_frame:
- can_id: 43 # the received can_id
then:
- if:
condition:
lambda: 'return (x.size() > 0) ? x[0] == 0x11 : false;'
then:
light.toggle: light1
Transmit Frame Action
*********************
The can bus can transmit frames by means of the ``canbus.send`` action.
There are several forms to use it:
.. code-block:: yaml
on_...:
- canbus.send:
data: [ 0x10, 0x20, 0x30 ]
canbus_id: my_mcp2515 # optional if you only have 1 canbus device
can_id: 23 # override the can_id configured in the can bus
on_...:
- canbus.send: [ 0x11, 0x22, 0x33 ]
- canbus.send: 'hello'
# Templated, return type is std::vector<uint8_t>
- canbus.send: !lambda
return {0x00, 0x20, 0x42};
Configuration variables:
- **data** (*Required*, binary data): Data to transmit, up to 8 bytes or
characters are supported by can bus per frame.
- **canbus_id** (*Optional*): Optionally set the can bus id to use for transmitting
the frame. Not needed if you are using only 1 can bus.
- **can_id** (*Optional*, int): Allows to override the can id configured in
the can bus device.
- **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*:
*False*: Standard 11 Bit IDs, *True*: Extended 29Bit ID
MCP2515
-------
The MCP2515 is a spi device and therfore you must first add the configuration for the spi bus to your file.
You need to have an :ref:`SPI bus <spi>` in your configuration with both the **mosi_pin** and **miso_pin** set.
For wireing up the MSP2515 please refer to the section below.
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): Is used to tell the receiving SPI device
when it should listen for data on the SPI bus. Each device has an individual ``CS`` line.
Sometimes also called ``SS``.
- **clock** (*Optional*): One of ``8MHZ``, ``16MHZ`` or ``20MHZ``. Clock crystal used on the MCP2515 device.
Defaults to ``8MHZ``.
- **mode** (*Optional*): Operation mode. Default ot ``NORMAL``
- NORMAL: Normal operation
- LOOPBACK: Loopback mode can be used to just test you spi connections to the device
- LISTENONLY: only receive data
.. code-block:: yaml
# Example configuration entry
canbus:
- platform: mcp2515
cs_pin: D5
can_id: 4
bit_rate: 50kbps
on_frame:
- can_id: 500
then:
- lambda: |-
std::string b(x.begin(), x.end());
ESP_LOGD("canid 500", "%s", &b[0] );
- light.turn_off: light_1
- can_id: 501
then:
- light.turn_on:
id: light_1
brightness: !lambda "return (x.size() > 0) ? (float) x[0]/255 : 0;"
Wiring options
---------------
Easiest approach is to just use fully assembled boards and just add one resistor in the MISO line.
This runs MOSI, SCK and CS out of specification which is nearly never a problem.
.. figure:: images/canbus_mcp2515_resistor.png
:align: center
:target: ../_images/canbus_mcp2515_resistor.png
A more advanced option is to fully convert the 5V and 3.3V logic levels with a level shifter.
.. figure:: images/canbus_mcp2515_txs0108e.png
:align: center
:target: ../_images/canbus_mcp2515_txs0108e.png
Extended ID
-----------
Standard IDs and Extended IDs can coexist on the same segment.
.. note::
It is important to know that for example Standard 0x123 and Extended 0x123 are different addesses.
This example shows how the different ID types are used in the configuration for transmission and receiving.
For the IDs decimal or hexadecimal notation is possible:
0x000 - 0x7ff / 0-2047 for Standard IDs only.
0x00000000 - 0x1fffffff / 0-536870911 for Extended IDs.
.. code-block:: yaml
# Transmission of extended and standard ID 0x100 every second
time:
- platform: sntp
on_time:
- seconds: /1
then:
- canbus.send:
# Extended ID explicit
use_extended_id: True
can_id: 0x100
data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
- canbus.send:
# Standard ID by default
can_id: 0y100
data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
canbus:
- platform: mcp2515
id: my_mcp2515
spi_id: McpSpi
cs_pin: GPIO14
can_id: 0x1fff
use_extended_id: True
bit_rate: 125kbps
on_frame:
- can_id: 0x123
use_extended_id: True
then:
- lambda: |-
std::string b(x.begin(), x.end());
ESP_LOGD("can extended id 0x123", "%s", &b[0] );
- can_id: 0x123
then:
- lambda: |-
std::string b(x.begin(), x.end());
ESP_LOGD("can standard id 0x123", "%s", &b[0] );
Binary Sensor Example
---------------------
Example for the following application:
Button is connected on a can node which sends an A message on ID 0x100 with payload 0x01 for contact closed and 0x00 for contact open.
.. code-block:: yaml
spi:
id: McpSpi
clk_pin: GPIO16
mosi_pin: GPIO5
miso_pin: GPIO4
binary_sensor:
- platform: template
name: "CAN Bus Button"
id: "can_bus_button"
canbus:
- platform: mcp2515
id: my_mcp2515
spi_id: McpSpi
cs_pin: GPIO14
can_id: 4
bit_rate: 125kbps
on_frame:
- can_id: ${0x100}
then:
- lambda: |-
if(x.size() > 0) {
switch(x[0]) {
case 0x0: id(can_bus_button).publish_state(false); break; // button release
case 0x1: id(can_bus_button).publish_state(true); break; // button down
}
}
Cover Example
-------------
Example for following application:
Buttons are connected on the CAN-Node and also the motor is connected via CAN.
.. epigraph::
| **Button 1:** ID 0x50B - 1 byte payload
| (0: Button release, 1: Button down, 2: long down, 3: long release, 4 double click)
| **Button 2:** ID 0x50C - 1 byte payload
| (0: Button release, 1: Button down, 2: long down, 3: long release, 4 double click)
| **Motor:** ID 0x51A - 1 byte payload
| (0: off, 1: open, 2: close)
.. code-block:: yaml
spi:
id: McpSpi
clk_pin: GPIO16
mosi_pin: GPIO5
miso_pin: GPIO4
canbus:
- platform: mcp2515
id: my_mcp2515
spi_id: McpSpi
cs_pin: GPIO14
can_id: 4
bit_rate: 125kbps
on_frame:
- can_id: 0x50c
then:
- lambda: |-
if(x.size() > 0) {
auto call = id(TestCover).make_call();
switch(x[0]) {
case 0x2: call.set_command_open(); call.perform(); break; // long pressed
case 0x1: // button down
case 0x3: call.set_command_stop(); call.perform(); break; // long released
case 0x4: call.set_position(1.0); call.perform(); break; // double click
}
}
- can_id: 0x50b
then:
- lambda: |-
if(x.size() > 0) {
auto call = id(TestCover).make_call();
switch(x[0]) {
case 0x2: call.set_command_close(); call.perform(); break; // long pressed
case 0x1: // button down
case 0x3: call.set_command_stop(); call.perform(); break; // long released
case 0x4: call.set_position(0.0); call.perform(); break; // double click
}
}
cover:
- platform: time_based
name: "MyCanbusTestCover"
id: TestCover
device_class: shutter
has_built_in_endstop: true
open_action:
- canbus.send:
data: [ 0x01 ]
canbus_id: my_mcp2515
can_id: 0x51A
open_duration: 2min
close_action:
- canbus.send:
data: [ 0x02 ]
canbus_id: my_mcp2515
can_id: 0x51A
close_duration: 2min
stop_action:
- canbus.send:
data: [ 0x00 ]
canbus_id: my_mcp2515
can_id: 0x51A
See Also
--------
- :apiref:`spi/spi.h`
- :ghedit:`Edit`

3
components/climate/ir_climate.rst Normal file → Executable file
View File

@ -37,6 +37,8 @@ request so it will be added (see FAQ).
+------------------------+---------------------+----------------------+------------------------------------+
| LG | ``climate_ir_lg`` | yes | |
+------------------------+---------------------+----------------------+------------------------------------+
| Hitachi | ``hitachi_ac344`` | yes | |
+------------------------+---------------------+----------------------+------------------------------------+
This component requires that you have setup a :doc:`/components/remote_transmitter`.
@ -129,6 +131,7 @@ See Also
- :apiref:`coolix.h <coolix/coolix.h>`,
:apiref:`daikin.h <daikin/daikin.h>`
:apiref:`fujitsu_general.h <fujitsu_general/fujitsu_general.h>`,
:apiref:`hitachi_ac344.h <hitachi_ac344/hitachi_ac344.h>`,
:apiref:`mitsubishi.h <mitsubishi/mitsubishi.h>`,
:apiref:`tcl112.h <tcl112/tcl112.h>`,
:apiref:`yashima.h <yashima/yashima.h>`

View File

@ -49,6 +49,10 @@ Configuration variables:
- **target_temperature_datapoint** (**Required**, int): The datapoint id number of the target temperature.
- **current_temperature_datapoint** (**Required**, int): The datapoint id number of the current temperature.
- **temperature_multiplier** (**Optional**, float): A multiplier to modify the incoming and outgoing temperature values - :ref:`see below <temperature-multiplier>`.
If the device has different multipliers for current and target temperatures, **temperature_multiplier** can be replaced with both of:
- **current_temperature_multiplier** (**Optional**, float): A multiplier to modify the current temperature value.
- **target_temperature_multiplier** (**Optional**, float): A multiplier to modify the target temperature value.
- All other options from :ref:`Climate <config-climate>`.
.. _temperature-multiplier:

View File

@ -0,0 +1,127 @@
ILI9341 TFT LCD
===============
.. seo::
:description: Instructions for setting up ILI9341 TFT LCD display drivers.
:image: ili9341-full.jpg
.. _ili9341:
Usage
-----
The ``ili9341`` display platform allows you to use
ILI9341 (`datasheet <https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf>`__,
`Aliexpress <https://s.click.aliexpress.com/e/_dTKH6Mt>`__)
displays with ESPHome. As this is a somewhat higher resolution display and may require pins
beyond the typical SPI connections, it is better suited for use with the ESP32.
.. figure:: images/ili9341-full.jpg
:align: center
:width: 75.0%
ILI9341 display
.. code-block:: yaml
# Example minimal configuration entry
display:
- platform: ili9341
model: TFT 2.4
cs_pin: 14
dc_pin: 27
led_pin: 32 ### see note below ###
reset_pin: 33
lambda: |-
it.fill(COLOR_BLACK);
it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!");
Configuration variables
***********************
- **model** (**Required**): The model of the display. Options are:
- ``M5STACK``
- ``TFT 2.4``
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **led_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The display's backlight pin. **Note:** Connect to a
PWM-capable pin to switch/dim the display's backlight **or** save a pin by connecting it through a 3.3K resistor to the +3V supply.
- **rotation** (*Optional*): Set the rotation of the display. Everything drawn in the ``lambda:`` will be rotated
per this option. One of ```` (default), ``90°``, ``180°``, or ``270°``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
Configuration examples
**********************
To utilize the color capabilities of this display module, you'll likely want to add a ``color:`` section to your
YAML configuration; please see :ref:`color <config-color>` for more detail on this configuration section.
To use colors in your lambada:
.. code-block:: yaml
color:
- id: my_red
red: 100%
green: 3%
blue: 5%
...
display:
...
lambda: |-
it.rectangle(0, 0, it.get_width(), it.get_height(), id(my_red));
To bring in color images:
.. code-block:: yaml
image:
- file: "image.jpg"
id: my_image
resize: 200x200
type: RGB24
...
display:
...
lambda: |-
it.image(0, 0, id(my_image));
To configure a dimmable backlight:
.. code-block:: yaml
# Define a PWM output on the ESP32
output:
- platform: ledc
pin: 32
id: gpio_32_backlight_pwm
# Define a monochromatic, dimmable light for the backlight
light:
- platform: monochromatic
output: gpio_32_backlight_pwm
name: "ILI9341 Display Backlight"
id: back_light
restore_mode: ALWAYS_ON
See Also
--------
- :doc:`index`
- :apiref:`ili9341/ili9341.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

@ -338,6 +338,11 @@ Configuration variables:
- ``GREYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte.
- ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel.
- **dither** (*Optional*): Specifies which dither method used to process the image, only used in GREYSCALE and BINARY type image. Defaults to ``NONE``. You can read more about it `here <https://pillow.readthedocs.io/en/stable/reference/Image.html?highlight=Dither#PIL.Image.Image.convert>`__ and `here <https://en.wikipedia.org/wiki/Dither>`__.
- ``NONE``: Every pixel convert to its nearest color.
- ``FLOYDSTEINBERG``: Uses Floyd-Steinberg dither to approximate the original image luminosity levels.
.. note::
To use images you will need to have the python ``pillow`` package installed.
@ -371,6 +376,47 @@ be supplied to modify the color used to represent the on and off bits respective
You can also use this to invert images in two colors display, use ``COLOR_OFF`` then ``COLOR_ON``
as the additional parameters.
Animation
*********
Animation inherits all options from the image component.
It adds an additional method to change the shown picture of a gif.
.. code-block:: yaml
animation:
- file: "animation.gif"
id: my_animation
resize: 100x100
The animation can be rendered just like the image component with the ``image()`` function of the display component.
To show the next frame of the animation call ``id(my_animation).next_frame()``
This can be combined with all Lambdas:
.. code-block:: yaml
display:
- platform: ...
# ...
lambda: |-
//Ingress shown animation Frame.
id(my_animation).next_frame();
// Draw the animation my_animation at position [x=0,y=0]
it.image(0, 0, id(my_animation), COLOR_ON, COLOR_OFF);
.. note::
To draw the next animation independent of Display draw cycle use an interval:
.. code-block:: yaml
interval:
- interval: 5s
then:
lambda: |-
id(my_animation).next_frame();
.. _display-pages:
Display Pages

View File

@ -57,6 +57,7 @@ Configuration variables:
- **scroll_delay** (*Optional*, :ref:`config-time`): Set delay time before scroll starts. Defaults to ``1s``.
- **scroll_dwell** (*Optional*, :ref:`config-time`): Sets the wait time at the end of the scroll before starting
over. This is only used in mode ``STOP``. Defaults to ``1s``.
- **reverse_enable** (*Optional*, boolean): For some displays the order of the displays is reversed ("DCBA"). This option will reverse the display to ("ABCD") again. Defaults to ``False``.
- **intensity** (*Optional*, integer): The intensity with which the MAX7219 should drive the outputs. Range is
from ``0``, least intense to ``15`` the brightest. Defaults to ``15``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the

View File

@ -39,6 +39,7 @@ VCC to 3.3V and GND to GND.
reset_pin: D0
cs_pin: D8
dc_pin: D1
contrast: 0x7f
lambda: |-
it.print(0, 0, id(font), "Hello World!");
@ -60,6 +61,7 @@ Configuration variables:
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **contrast** (*Optional*, int): Set screen contrast (0-255). Defaults to ``0x7f``.
See Also

View File

@ -0,0 +1,65 @@
SSD1322 OLED Display
====================
.. seo::
:description: Instructions for setting up SSD1322 OLED display drivers.
:image: ssd1322.jpg
.. _ssd1322-spi:
Usage
-----
The ``ssd1322_spi`` display platform allows you to use
SSD1322 (`datasheet <https://www.newhavendisplay.com/specs/NHD-3.12-25664UCW2.pdf>`__,
`Newhaven Display <https://www.newhavendisplay.com/nhd31225664ucw2-p-9583.html>`__)
displays with ESPHome. Note that this component is for displays that are connected via the 4-Wire :ref:`SPI bus <spi>`.
.. figure:: images/ssd1322-full.jpg
:align: center
:width: 75.0%
SSD1322 OLED Display
Connect CLK, DIN, CS, DC, and RST to pins on your ESP. For power, connect
VCC to 3.3V and GND to GND.
.. code-block:: yaml
# Example configuration entry
spi:
clk_pin: D5
mosi_pin: D7
display:
- platform: ssd1322_spi
model: "SSD1322 256x64"
reset_pin: D0
cs_pin: D8
dc_pin: D1
lambda: |-
it.print(0, 0, id(font), "Hello World!");
Configuration variables:
************************
- **model** (**Required**): The model of the display. At present, only one option is available:
- ``SSD1322 256x64``
- **reset_pin** (:ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **cs_pin** (:ref:`Pin Schema <config-pin_schema>`): The CS pin.
- **dc_pin** (:ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
See Also
--------
- :doc:`index`
- :apiref:`ssd1322_base/ssd1322_base.h`
- `SSD1322 Display documentation <https://www.newhavendisplay.com/specs/NHD-3.12-25664UCW2.pdf>`__ at `Newhaven Display <https://www.newhavendisplay.com/nhd31225664ucw2-p-9583.html>`__
- :ghedit:`Edit`

View File

@ -12,9 +12,8 @@ Usage
The ``ssd1325_spi`` display platform allows you to use
SSD1325 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1325.pdf>`__,
`Adafruit <https://www.adafruit.com/product/2674>`__) and SSD1327 (`datasheet <https://www.waveshare.com/w/upload/a/ac/SSD1327-datasheet.pdf>`__,
`Waveshare <https://www.waveshare.com/1.5inch-oled-module.htm>`__)
displays with ESPHome. Note that this component is for displays that are connected via the 4-Wire :ref:`SPI bus <spi>`.
`Adafruit <https://www.adafruit.com/product/2674>`__) displays with ESPHome. Note that this
component is for displays that are connected via the 4-Wire :ref:`SPI bus <spi>`.
.. figure:: images/ssd1325-full.jpg
:align: center
@ -52,10 +51,8 @@ Configuration Variables
- ``SSD1325 128x32`` (SSD1325 with 128 columns and 32 rows)
- ``SSD1325 128x64``
- ``SSD1327 128x128`` (note SSD1327 instead of SSD1325)
- ``SSD1325 96x16``
- ``SSD1325 64x48``
- ``SSD1327 128x128`` **# Note the number seven!**
- **reset_pin** (:ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **cs_pin** (:ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that that the CS line is connected to.

View File

@ -0,0 +1,207 @@
SSD1327 OLED Display
====================
.. seo::
:description: Instructions for setting up SSD1327 OLED display drivers.
:image: ssd1327.jpg
.. _ssd1327-i2c:
Over I²C
--------
The ``ssd1327_i2c`` display platform allows you to use
SSD1327 (`datasheet <https://www.generationrobots.com/media/Ecran_OLED_0_96/SSD1327_datasheet.pdf>`__,
`Waveshare <https://www.waveshare.com/1.5inch-oled-module.htm>`__) displays with ESPHome. Note that this component is for
displays that are connected via the :ref:`I²C Bus <i2c>`. If your SSD1327 is connected via the 4-Wire
:ref:`SPI bus <spi>`, see :ref:`ssd1327-spi`.
.. figure:: images/ssd1327-full.jpg
:align: center
:width: 75.0%
SSD1327 OLED Display
Connect CLK to the SCL (clock) pin you chose for the :ref:`I²C Bus <i2c>` and connect DIN to the SDA (data) pin.
For power, connect VCC to 3.3V and GND to GND. You may also connect the ``RESET`` pin to an available pin on the
ESP; this is recommended as it improves reliability.
.. code-block:: yaml
# Example configuration entry
i2c:
sda: D1
scl: D2
display:
- platform: ssd1327_i2c
model: "SSD1327 128x128"
reset_pin: D0
address: 0x3D
lambda: |-
it.print(0, 0, id(font), "Hello World!");
Configuration variables
***********************
- **model** (**Required**): The model of the display. At present, only one option is available:
- ``SSD1327 128x128``
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
- **address** (*Optional*, int): Manually specify the :ref:`I²C <i2c>` address of the display. Defaults to 0x3D.
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
by this option. One of ```` (default), ``90°``, ``180°``, ``270°``.
- **brightness** (*Optional*): Set the screen brightness in percents 0.0-1.0. Defaults to `1.0` that corresponds to 100%.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **brightness** (*Optional*, float): Manually override display brightness in %. Defaults to ``100%``
.. note::
To speed up the display update process you can select higher I²C frequencies.
.. _ssd1327-spi:
Over SPI
--------
The ``ssd1327_spi`` display platform allows you to use
SSD1327 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1327.pdf>`__, `Adafruit <https://www.adafruit.com/product/326>`__)
displays with ESPHome. Note that this component is for displays that are connected via the 4-Wire :ref:`SPI bus <spi>`.
If your SSD1327 is connected via the :ref:`I²C Bus <i2c>`, see :ref:`ssd1327-i2c`.
.. figure:: images/ssd1327-full.jpg
:align: center
:width: 75.0%
SSD1327 OLED Display
Connect CLK to the SCK (clock) pin you chose for the :ref:`SPI bus <spi>`, connect DIN to the MOSI/SDO pin, and connect ``DC``
to another pin of your choosing. ``CS`` may connect to a pin on the ESP or it may connect to ground if the display is the only
device connected to the SPI bus. For power, connect VCC to 3.3V and GND to GND. You may also connect the ``RESET`` pin to an
available pin on the ESP; this is recommended as it improves reliability.
.. code-block:: yaml
# Example configuration entry
spi:
clk_pin: D0
mosi_pin: D1
display:
- platform: ssd1327_spi
model: "SSD1327 128x128"
cs_pin: D2
dc_pin: D3
reset_pin: D4
lambda: |-
it.print(0, 0, id(font), "Hello World!");
Configuration variables
***********************
- **model** (**Required**): The model of the display. At present, only one option is available:
- ``SSD1327 128x128``
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The Chip Select (CS) pin.
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
by this option. One of ```` (default), ``90°``, ``180°``, ``270°``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **brightness** (*Optional*, float): Manually override display brightness in %. Defaults to ``100%``
Configuration examples
**********************
To utilize the grayscale capabilities of this display module, add a ``color:`` section to your YAML configuration;
please see :ref:`color <config-color>` for more details. As this is a grayscale display, it only uses the white color
element as shown below.
To use grayscale in your lambada:
.. code-block:: yaml
color:
- id: medium_gray
white: 50%
...
display:
...
lambda: |-
it.rectangle(0, 0, it.get_width(), it.get_height(), id(medium_gray));
To bring in grayscale images:
.. code-block:: yaml
image:
- file: "image.jpg"
id: my_image
resize: 120x120
type: GRAYSCALE
...
display:
...
lambda: |-
it.image(0, 0, id(my_image));
In this case, the image will be converted to grayscale (regardless of its original format) and rendered as such
when drawn on the display. Note that the original image may require some adjustment as not all images immediately
convert nicely to the 4-bit grayscale format this display supports.
Note that if ``type: GRAYSCALE`` is omitted, the image will render as a binary image (no grayscale); in this
case, a color attribute may be passed to the ``image()`` method as follows:
.. code-block:: yaml
image:
- file: "image.jpg"
id: my_image
resize: 120x120
...
display:
...
lambda: |-
it.image(0, 0, id(medium_gray), id(my_image));
This will draw the complete image with the given shade of gray.
To create a new color as needed in code:
.. code-block:: yaml
display:
...
lambda: |-
float white_intensity = 0.5;
Color variable_gray(0, 0, 0, white_intensity);
it.rectangle(0, 0, it.get_width(), it.get_height(), variable_gray);
The last argument of the ``Color`` constructor is the intensity of the white element; it is a percentage
(value of range 0 to 1). It may be defined by another variable so it is adjustable in code.
See Also
--------
- :doc:`index`
- :apiref:`ssd1327_base/ssd1327_base.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,100 @@
SSD1331 OLED Display
====================
.. seo::
:description: Instructions for setting up SSD1331 OLED display drivers.
:image: ssd1331.jpg
.. _ssd1331-spi:
Usage
-----
The ``ssd1331_spi`` display platform allows you to use
SSD1331 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1331_1.2.pdf>`__,
`Adafruit <https://www.adafruit.com/product/684>`__)
displays with ESPHome. This component is for displays that are connected via the 4-Wire :ref:`SPI bus <spi>`.
.. figure:: images/ssd1331-full.jpg
:align: center
:width: 75.0%
SSD1331 96x64 OLED Display
Connect CLK (CK), MOSI (SI), CS (OC), DC, and RST (R) to pins on your ESP. For power, the Adafruit modules
require 5 volts connected to their ``+`` pin. Connect the GND or G pin to ground.
.. code-block:: yaml
# Example configuration entry
spi:
clk_pin: D5
mosi_pin: D7
display:
- platform: ssd1331_spi
reset_pin: D0
cs_pin: D8
dc_pin: D1
lambda: |-
it.print(0, 0, id(font), "Hello World!");
Configuration variables
***********************
- **reset_pin** (:ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that that the CS line is connected to.
The CS line can be connected to GND if this is the only device on the SPI bus.
- **dc_pin** (:ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
Configuration examples
**********************
You may wish to add a ``color:`` section to your YAML configuration to make using colors easier; please see
:ref:`color <config-color>` for more detail on this optional configuration section.
.. code-block:: yaml
color:
- id: my_red
red: 100%
green: 3%
blue: 5%
...
display:
...
lambda: |-
it.rectangle(0, 0, it.get_width(), it.get_height(), id(my_red));
To bring in color images:
.. code-block:: yaml
image:
- file: "image.jpg"
id: my_image
resize: 96x64
type: RGB
...
display:
...
lambda: |-
it.image(0, 0, id(my_image));
See Also
--------
- :doc:`index`
- :apiref:`ssd1331_base/ssd1331_base.h`
- `SSD1331 Library <https://github.com/adafruit/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino>`__ by `Adafruit <https://www.adafruit.com/>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,81 @@
ST7735 Display
==============
.. seo::
:description: Instructions for setting up a ST7735 display drivers.
:keywords: ST7735
:image: ST7735.png
ST7735 Display Driver.
Usage
-----
The ST7735 component allows you to use a ST7735 display
(`datasheet and information <https://learn.adafruit.com/1-8-tft-display/downloads>`__,
`Adafruit <https://www.adafruit.com/product/358>`__) in ESPHome.
It uses the :ref:`SPI Bus <spi>` for communication.
.. figure:: images/st7735.jpg
:align: center
:width: 75.0%
ST7735 Display
There are numerous board types out there. Some initialize differently as well. This driver will take a few options to narrow down the right settings.
.. code-block:: yaml
# Example configuration entry
display:
- platform: st7735
model: "INITR_18BLACKTAB"
reset_pin: D4
cs_pin: D1
dc_pin: D2
rotation: 0
devicewidth: 128
deviceheight: 160
colstart: 0
rowstart: 0
eightbitcolor: true
update_interval: 5s
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **model** (**Required**, "See Models Below"): This the model to use. INITR_BLACKTAB is the default
- **reset_pin** (:ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **cs_pin** (:ref:`Pin Schema <config-pin_schema>`): The CS pin.
- **dc_pin** (:ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **devicewidth** (**Required**, int): The device width. 128 is default
- **deviceheight** (**Required**, int): The device height. 160 is default
- **colstart** (**Required**, int): The device height. 160 is default
- **rowstart** (**Required**, int): The device height. 160 is default
- **eightbitcolor** (*Optional*, "True/False" ): 8bit mode. Default is False. This saves 50% of the buffer required for the display.
Memory notes:
~~~~~~~~~~~~~
- 8Bit color saves 50% of the buffer required.
- eightbitcolor: True 160x128 = 20480 *Important for memory constrained devices*
- eightbitcolor: False 160x128x2 = 40960
Models:
~~~~~~~
- INITR_GREENTAB
- INITR_REDTAB
- INITR_BLACKTAB
- INITR_MIN_I160X80
- INITR_18BLACKTAB
- INITR_18REDTAB
See Also
--------
- :ref:`spi`
- :apiref:`st7735/st7735.h`
- :ghedit:`Edit`

View File

@ -45,10 +45,10 @@ Connection Options:
- **frequency** (*Optional*, float): The frequency of the external clock, must be either 20MHz
or 10MHz. Defaults to ``20MHz``.
- **i2c_pins** (**Required**): The I^2C control pins of the camera.
- **i2c_pins** (**Required**): The I²C control pins of the camera.
- **sda** (**Required**, pin): The SDA pin of the I^2C interface. Also called ``SIOD``.
- **scl** (**Required**, pin): The SCL pin of the I^2C interface. Also called ``SIOC``.
- **sda** (**Required**, pin): The SDA pin of the I²C interface. Also called ``SIOD``.
- **scl** (**Required**, pin): The SCL pin of the I²C interface. Also called ``SIOC``.
- **reset_pin** (*Optional*, pin): The ESP pin the reset pin of the camera is connected to.
If set, this will reset the camera before the ESP boots.
@ -261,8 +261,8 @@ Configuration for TTGO T-Journal
# Image settings
name: My Camera
# ...
Configuration for TTGO-Camera Plus
----------------------------------

View File

@ -24,7 +24,7 @@ Configuration variables:
- **name** (**Required**, string): This is the name of the node. It
should always be unique in your ESPhome network. May only contain lowercase
characters, digits and underscores. See :ref:`esphome-changing_node_name`.
characters, digits, underscores and hyphens. See :ref:`esphome-changing_node_name`.
- **platform** (**Required**, string): The platform your board is on,
either ``ESP32`` or ``ESP8266``. See :ref:`esphome-arduino_version`.
- **board** (**Required**, string): The board ESPHome should

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

View File

@ -123,6 +123,8 @@ Configuration variables:
- **max_refresh_rate** (*Optional*, :ref:`config-time`):
A time interval used to limit the number of commands a light can handle per second. For example
16ms will limit the light to a refresh rate of about 60Hz. Defaults to the default value for the used chipset.
- **data_rate** (*Optional*, frequency): The data rate to use for shifting data to the light. Can help if you
have long cables or slow level-shifters.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Light <config-light>`.

View File

@ -0,0 +1,59 @@
H-bridge Light
==============
.. seo::
:description: Instructions for setting up a hbridge light.
:image: brightness-medium.png
The ``hbridge`` light platform creates a dual color brightness controlled light from two
:ref:`float output component <output>`.
.. figure:: images/hbridge-ui.png
:align: center
:width: 40.0%
H-bridge lights are very common for Christmas lighting and they use 2 wires for a bunch of LEDs.
The pins are switched alternatively to allow two sets of lights to operate.
.. code-block:: yaml
# Example configuration entry
# Specify the two pins of the h-bridge as PWM pins
output:
- platform: esp8266_pwm
id: pina
pin: GPIO12
- platform: esp8266_pwm
id: pinb
pin: GPIO14
# Create a light using the hbridge
light:
- platform: hbridge
id: mainlight
name: "Hbridge Lights"
pin_a: pina
pin_b: pinb
Configuration variables:
------------------------
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the light.
- **pin_a** (**Required**, :ref:`config-id`): The id of the first float :ref:`output` to use for this light.
- **pin_b** (**Required**, :ref:`config-id`): The id of the second float :ref:`output` to use for this light.
- All other options from :ref:`Light <config-light>`.
.. note::
As we are switching the h-bridge in software, the light may glitch every so often when other tasks run on the MCU.
See Also
--------
- :doc:`/components/light/index`
- :doc:`/components/output/esp8266_pwm`
- :apiref:`hbridge/light/hbridge_light.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -65,6 +65,7 @@ Now you can create the light.
- platform: "tuya"
name: "dim1"
dimmer_datapoint: 3
min_value_datapoint: 2
switch_datapoint: 1
Configuration variables:
@ -73,6 +74,8 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the light.
- **dimmer_datapoint** (*Optional*, int): The datapoint id number of the dimmer value.
- **min_value_datapoint** (*Optional*, int): The datapoint id number of the MCU minimum value
setting. If this is set then ESPHome will sync the **min_value** to the MCU on startup.
- **switch_datapoint** (*Optional*, int): The datapoint id number of the power switch. My dimmer
required this to be able to turn the light on and off. Without this you would only be able to
change the brightness and would have to toggle the light using the physical buttons.

View File

@ -94,7 +94,7 @@ Possible log levels are (sorted by severity):
- ``VERY_VERBOSE``
- All internal messages are logged. Including all the data flowing through data buses like
I2C, SPI or UART. Warning: May cause the device to slow down and have trouble staying
I²C, SPI or UART. Warning: May cause the device to slow down and have trouble staying
connecting due to amount of generated messages. Color: white
.. _logger-manual_tag_specific_levels:
@ -185,7 +185,7 @@ using ``message`` (``const char *``), ``level`` (``int``) and ``tag`` (``const c
.. note::
Logging will not work in the ``on_message`` trigger. You can't use the :ref:`logger.log <logger-log_action>` action
Logging will not work in the ``on_message`` trigger. You can't use the :ref:`logger.log <logger-log_action>` action
and the ``ESP_LOGx`` logging macros in this automation.
See Also

128
components/mcp23Sxx.rst Normal file
View File

@ -0,0 +1,128 @@
MCP23Sxx I/O Expander
=====================
.. seo::
:description: Instructions for setting up MCP23S08, MCP23S16 or MCP23S17 digital port expander in ESPHome. This is exactly the same API as the MCP23SXX I/O Expander except talks on the SPI bus
:image: mcp23Sxx.png
The Microchip MCP23Sxx series of general purpose, parallel I/O expansion for SPI bus applications.
This is exactly the same API as the MCP23SXX I/O Expander except talks on the SPI bus
**Supported Variants :**
- :ref:`mcp23S08-label`
- :ref:`mcp23S17-label`
.. _mcp23S08-label:
MCP23S08
--------
The MCP23S08 component (`datasheet <http://ww1.microchip.com/downloads/en/DeviceDoc/MCP23008-MCP23S08-Data-Sheet-20001919F.pdf>`__,
`Digi-Key <https://www.digikey.com/product-detail/en/microchip-technology/MCP23S08-E-P/MCP23S08-E-P-ND/735954>`__) has 8 GPIOs that can be configured independently.
.. code-block:: yaml
# Example configuration entry
mcp23s08:
- id: 'mcp23s08_hub'
cs_pin: D8
deviceaddress: 0
# Individual outputs
switch:
- platform: gpio
name: "MCP23S08 Pin #0"
pin:
mcp23s08_id: mcp23s08_hub
# Use pin number 0
number: 0
# One of INPUT, INPUT_PULLUP or OUTPUT
mode: OUTPUT
inverted: False
# Individual inputs
binary_sensor:
- platform: gpio
name: "MCP23S08 Pin #1"
pin:
mcp23s08_id: mcp23s08_hub
# Use pin number 1
number: 1
# One of INPUT or INPUT_PULLUP
mode: INPUT
inverted: False
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **id** (**Required**, :ref:`config-id`): The id to use for this MCP23S08 component.
- **cs_pin** (*Required*, int): The SPI chip select pin to use
- **deviceaddress** (*Optional*, int): The address of the chip.
Defaults to ``0``.
.. _mcp23S17-label:
MCP23S17
--------
The MCP23S17 component allows you to use MCP23S17 I/O expanders
(`datasheet <http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf>`__,
`Digi-Key <https://www.digikey.com/product-detail/en/microchip-technology/MCP23S17-E-SP/MCP23S17-E-SP-ND/894276>`__) in ESPHome.
It uses the :ref:`SPI Bus <spi>` for communication.
Once configured, you can use any of the 16 pins as
pins for your projects. Within ESPHome they emulate a real internal GPIO pin
and can therefore be used with many of ESPHome's components such as the GPIO
binary sensor or GPIO switch.
.. code-block:: yaml
# Example configuration entry
mcp23s17:
- id: 'mcp23s17_hub'
cs_pin: D8
deviceaddress: 0
# Individual outputs
switch:
- platform: gpio
name: "MCP23S17 Pin #0"
pin:
mcp23s17_id: mcp23s17_hub
# Use pin number 0
number: 0
mode: OUTPUT
inverted: False
# Individual inputs
binary_sensor:
- platform: gpio
name: "MCP23S17 Pin #1"
pin:
mcp23s17_id: mcp23s17_hub
# Use pin number 1
number: 1
# One of INPUT or INPUT_PULLUP
mode: INPUT_PULLUP
inverted: False
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **id** (**Required**, :ref:`config-id`): The id to use for this MCP23S17 component.
- **cs_pin** (*Required*, int): The SPI chip select pin to use.
- **deviceaddress** (*Optional*, int): The address of the chip.
Defaults to ``0``.
See Also
--------
- :ref:`spi`
- :doc:`switch/gpio`
- :doc:`binary_sensor/gpio`
- :apiref:`API Reference (MCP23S08) <mcp23S08/mcp23S08.h>`
- :apiref:`API Reference (MCP23S17) <mcp23S17/mcp23S17.h>`
- :ghedit:`Edit`

View File

@ -13,8 +13,8 @@ uploads. ESPHome natively supports this through its ``run`` and
ESPHome also has an "OTA safe mode". If for some reason your
node gets into a boot loop, ESPHome will automatically try to detect
this and will go over into a safe mode after 10 unsuccessful boot
attempts. In that mode, all components are disabled and only Serial
this and will go over into a safe mode after the configured unsuccessful boot
attempts (Defaults to ``10``). In that mode, all components are disabled and only Serial
Logging+WiFi+OTA are initialized, so that you can upload a new binary.
.. code-block:: yaml
@ -33,6 +33,9 @@ Configuration variables:
- **port** (*Optional*, int): The port to use for OTA updates. Defaults
to ``3232`` for the ESP32 and ``8266`` for the ESP8266.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **reboot_timeout** (*Optional*, :ref:`time <config-time>`): The amount of time to wait before rebooting when in
safe mode. Defaults to ``5min``.
- **num_attempts** (*Optional*, int): The number of attempts to wait before entering safe mode. Defaults to ``10``.
.. note::

View File

@ -101,6 +101,34 @@ Configuration options:
id(rf_bridge).send_code(0x700, 0x800, 0x1000, 0xABC123);
.. _rf_bridge-send_raw_action:
``rf_bridge.send_raw`` Action
-----------------------------
Send a raw RF code using this action in automations.
.. code-block:: yaml
on_...:
then:
- rf_bridge.send_code:
raw: AAA5070008001000ABC12355
Configuration options:
- **raw** (**Required**, string, :ref:`templatable <config-templatable>`): RF raw string
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the RF Bridge if you have multiple components.
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
.. code-block:: cpp
id(rf_bridge).send_raw("AAA5070008001000ABC12355");
.. _rf_bridge-learn_action:
``rf_bridge.learn`` Action
@ -128,6 +156,118 @@ Configuration options:
id(rf_bridge).learn();
Portisch firmware
-----------------
If you have flashed the secondary MCU with the `"Portisch firmware" <https://github.com/Portisch/RF-Bridge-EFM8BB1>`,
ESPHome is able to receive the extra protocols that can be decoded as well as activate the other modes supported.
.. _rf_bridge-on_advanced_code_received:
``on_advanced_code_received`` Trigger
-------------------------------------
Similar to :ref:`rf_bridge-on_code_received`, this trigger receives the codes after advanced sniffing is started.
To use the code, use a :ref:`lambda <config-lambda>` template, the code and the corresponding protocol and length
are available inside that lambda under the variables named ``code``, ``protocol`` and ``length``.
.. code-block:: yaml
on_advanced_code_received:
- homeassistant.event:
event: esphome.rf_advanced_code_received
data:
length: !lambda 'char buffer [10];return itoa(data.length,buffer,16);'
protocol: !lambda 'char buffer [10];return itoa(data.protocol,buffer,16);'
code: !lambda 'return data.code;'
.. _rf_bridge-send_advanced_code_action:
``rf_bridge.send_advanced_code`` Action
---------------------------------------
Send an RF code using this action in automations.
.. code-block:: yaml
on_...:
then:
- rf_bridge.send_advanced_code:
length: 0x04
protocol: 0x01
code: "ABC123"
Configuration options:
- **length** (**Required**, int, :ref:`templatable <config-templatable>`): Length of code plus protocol
- **protocol** (**Required**, int, :ref:`templatable <config-templatable>`): RF Protocol
- **code** (**Required**, string, :ref:`templatable <config-templatable>`): RF code
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the RF Bridge if you have multiple components.
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
.. code-block:: cpp
id(rf_bridge).send_advanced_code(0x04, 0x01, "ABC123");
.. _rf_bridge-start_advanced_sniffing_action:
``rf_bridge.start_advanced_sniffing`` Action
--------------------------------------------
Tell the RF Bridge to listen for the advanced/extra protocols defined in the portisch firmware.
The decoded codes with length and protocol will be returned to :ref:`rf_bridge-on_advanced_code_received`
.. code-block:: yaml
on_...:
then:
- rf_bridge.start_advanced_sniffing
Configuration options:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the RF Bridge if you have multiple components.
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
.. code-block:: cpp
id(rf_bridge).start_advanced_sniffing();
.. _rf_bridge-stop_advanced_sniffing_action:
``rf_bridge.stop_advanced_sniffing`` Action
-------------------------------------------
Tell the RF Bridge to stop listening for the advanced/extra protocols defined in the portisch firmware.
.. code-block:: yaml
on_...:
then:
- rf_bridge.stop_advanced_sniffing
Configuration options:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the RF Bridge if you have multiple components.
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
.. code-block:: cpp
id(rf_bridge).stop_advanced_sniffing();
Getting started with Home Assistant
-----------------------------------

View File

@ -27,6 +27,7 @@ required to be set up in your configuration for this sensor to work.
# Example configuration entry
sensor:
- platform: ade7953
irq_pin: GPIO16
voltage:
name: ADE7953 Voltage
current_a:
@ -42,7 +43,8 @@ required to be set up in your configuration for this sensor to work.
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x38``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x38``.
- **irq_pin** (*Optional*, :ref:`config-pin`): The pin connected to the ADE7935 IRQ line (if connected)
- **voltage** (*Optional*): Use the voltage value of the sensor in volt. All options from
:ref:`Sensor <config-sensor>`.
- **current_a** (*Optional*): Use the current value of the A channel in amperes. All options from
@ -61,12 +63,13 @@ Use with Shelly 2.5
The Shelly 2.5 device contains this sensor for power monitoring. An example config for the Shelly 2.5
is given below.
There are two oddities with the Shelly 2.5:
There are three oddities with the Shelly 2.5:
- First, the A and B channels are mixed up - the chip's A channel is label B on the outside and
vice versa. Probably to make the PCB easier to manufacture.
- Secondly, due to the first point the active_power values are inverted. This is fixed by
using a multiply filter as seen in the config below.
- Lastly, the ADE7953 IRQ line is connected to the GPIO16. The irq_pin MUST be set to GPIO16 to prevent device overheat (>70ºC idling).
Additionally, the device has an ::doc:`NTC temperature sensor <ntc>`.
@ -78,6 +81,7 @@ Additionally, the device has an ::doc:`NTC temperature sensor <ntc>`.
sensor:
- platform: ade7953
irq_pin: GPIO16
voltage:
name: Shelly Voltage
current_a:

View File

@ -7,7 +7,7 @@ AM2320 Temperature+Humidity Sensor
:keywords: am2320
The ``am2320`` Temperature+Humidity sensor allows you to use your AM2320
(`datasheet <https://akizukidenshi.com/download/ds/aosong/AM2320.pdf>`__) I^2C-based sensor with ESPHome.
(`datasheet <https://akizukidenshi.com/download/ds/aosong/AM2320.pdf>`__) I²C-based sensor with ESPHome.
.. figure:: images/am2320-full.jpg
:align: center

View File

@ -45,7 +45,7 @@ and direction binary sensors.
Base Configuration:
- **address** (*Optional*, integer): The I2C address of the sensor. Defaults to ``0x39``.
- **address** (*Optional*, integer): The I²C address of the sensor. Defaults to ``0x39``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval
to check the sensor. Defaults to ``60s``.

View File

@ -14,7 +14,7 @@ The AS3935 can detect the presence of lightning activity and provide an estimati
on the distance to the head of the storm. The chip issues a notification through an interrupt
pin.
The AS3935 can be configured to use either the SPI **or** I^2C protocol for data communication.
The AS3935 can be configured to use either the SPI **or** I²C protocol for data communication.
First choose which communication method you want to use for the sensor, set the SI pin for the appropriate
level and set up the ESPhome integration for the chosen communication method.
@ -52,7 +52,7 @@ A1 I²C address selection MSB
as3935_spi:
cs_pin: GPIO12
irq_pin: GPIO13
# Example configuration for I2C (decide for one!)
# Example configuration for I²C (decide for one!)
as3935_i2c:
irq_pin: GPIO12
@ -114,14 +114,14 @@ Sensor entries:
the ID used for code generation.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
Configuration variables (I^2C):
Configuration variables (I²C):
-------------------------------
Use this if you want to use your AS3935 in I^2C mode.
Use this if you want to use your AS3935 in I²C mode.
.. code-block:: yaml
# Example configuration for I2C (decide for one!)
# Example configuration for I²C (decide for one!)
as3935_i2c:
irq_pin: GPIO12
# Example shared configuration
@ -135,7 +135,7 @@ Use this if you want to use your AS3935 in I^2C mode.
- platform: as3935
name: "Storm Alert"
- **address** (*Optional*, int): Manually specify the I^2C address of
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x03`` (``A0` and ``A1`` pins pulled low).
Another address can be ``0x02``.

View File

@ -41,7 +41,7 @@ Configuration variables:
------------------------
- **name** (**Required**, string): The name for the sensor.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x23`` (address if address pin is pulled low). If the address pin is pulled high,
the address is ``0x5C``.
- **measurement_time** (*Optional*, int): Manually specifiy the measurement time between ``31``

View File

@ -63,7 +63,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x77``. Another address can be ``0x76``.
- **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of
``OFF``, ``2x``, ``4x``, ``16x``. Defaults to ``OFF``.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -69,7 +69,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x76``. Another address can be ``0x77``.
- **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of
``OFF``, ``1x``, ``3x``, ``7x``, ``15x``, ``31x``, ``63x`` and ``127x``. Defaults to ``OFF``.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -53,7 +53,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x77``. Another address can be ``0x76``.
- **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of
``OFF``, ``2x``, ``4x``, ``16x``. Defaults to ``OFF``.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -8,7 +8,7 @@ DHT12 Temperature+Humidity Sensor
The ``dht12`` Temperature+Humidity sensor allows you to use your DHT12
(`datasheet <http://www.robototehnika.ru/file/DHT12.pdf>`__,
`electrodragon`_) I^2C-based sensor with ESPHome. This sensor is also called AM2320 by some sellers.
`electrodragon`_) I²C-based sensor with ESPHome. This sensor is also called AM2320 by some sellers.
.. figure:: images/dht12-full.jpg
:align: center

65
components/sensor/ezo.rst Normal file
View File

@ -0,0 +1,65 @@
EZO sensor circuits
===================
.. seo::
:description: Instructions for setting up EZO sensor circuits in esphome
:image: ezo-ph-circuit.png
:keywords: ezo ph ec rtd sensor circuit esphome
The ``ezo`` sensor platform allows you to use your EZO sensor circuits with
ESPHome. The :ref:`I²C Bus <i2c>` is
required to be set up in your configuration for this sensor to work.
.. figure:: images/ezo-ph-circuit.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ezo
id: ph_ezo
address: 99
unit_of_measurement: "pH"
update_interval: 10s
- platform: ezo
id: rtd_ezo
name: "RTD Temperature"
address: 102
accuracy_decimals: 2
unit_of_measurement: "°C"
update_interval: 10s
Configuration variables:
------------------------
- **address** (**Required**, int): Specify the I²C address of the sensor.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
lambda calls
------------
From :ref:`lambdas <config-lambda>`, you can set the temperature compensation for the
sensors that support that option.
- ``set_tempcomp_value()``: Send the given temperature to the sensor.
.. code-block:: cpp
// Within a lambda, set the temperature compensation value from the temperature sensor
id(ph_ezo).set_tempcomp_value(id(rtd_ezo).state);
See Also
--------
- :ref:`sensor-filters`
- :apiref:`ezo/ezo.h`
- :ghedit:`Edit`

View File

@ -9,7 +9,7 @@ The ``HM3301`` sensor platform allows you to use your HM3301 particulate matter
(`more info <http://wiki.seeedstudio.com/Grove-Laser_PM2.5_Sensor-HM3301>`__)
sensors with ESPHome.
The sensor communicate with board by ``I2C`` protocol, and requires 3.3v.
The sensor communicate with board by :ref:`I²C <i2c>` protocol, and requires 3.3v.
.. code-block:: yaml

View File

@ -42,7 +42,7 @@ for this sensor to work.
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x1E``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x1E``.
- **field_strength_x** (*Optional*): The field strength in microtesla along the X-Axis. All options from
:ref:`Sensor <config-sensor>`.
- **field_strength_y** (*Optional*): The field strength in microtesla along the Y-Axis. All options from

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

View File

@ -47,7 +47,7 @@ required to be set up in your configuration for this sensor to work.
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x40``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x40``.
- **shunt_resistance** (*Optional*, float): The value of the shunt resistor on the board for current calculation.
Defaults to ``0.1 ohm``.
- **max_voltage** (*Optional*, float): The maximum bus voltage you are expecting. ESPHome will use this to

View File

@ -42,7 +42,7 @@ required to be set up in your configuration for this sensor to work.
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x40``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x40``.
- **shunt_resistance** (*Optional*, float): The value of the shunt resistor on the board for current calculation.
Defaults to ``0.1 ohm``.
- **max_current** (*Optional*, float): The maximum current you are expecting. ESPHome will use this to

View File

@ -50,7 +50,7 @@ required to be set up in your configuration for this sensor to work.
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x40``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x40``.
- **channel_1** (*Optional*): The configuration options for the 1st channel.
- **shunt_resistance** (*Optional*, float): The value of the shunt resistor on this channel for current calculation.

View File

@ -0,0 +1,56 @@
MCP9808 Temperature Sensor
==========================
.. seo::
:description: Instructions for setting up MCP9808 temperature sensor.
:image: mcp9808.jpg
:keywords: MCP9808
The MCP9808 Temperature sensor allows you to use your MCP9808
(`datasheet <http://ww1.microchip.com/downloads/en/DeviceDoc/25095A.pdf>`__,
`Adafruit <https://www.adafruit.com/product/1782>`__) sensors with
ESPHome. The :ref:`I²C Bus <i2c>` is
required to be set up in your configuration for this sensor to work.
.. figure:: images/mcp9808-full.jpg
:align: center
:target: `Adafruit`_
:width: 50.0%
MCP9808 Temperature Sensor. Image by `Adafruit`_.
.. _Adafruit: https://www.adafruit.com/product/1782
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: mcp9808
name: "Living Room Temperature"
update_interval: 60s
Configuration variables:
------------------------
- **temperature** (**Required**): The information for the temperature sensor.
- **name** (**Required**, string): The name for the temperature sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x18``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :doc:`dht`
- :doc:`dht12`
- :doc:`htu21d`
- :doc:`sht3xd`
- :doc:`hdc1080`
- :apiref:`mcp9808/mcp9808.h`
- `MCP9808 Library <https://github.com/adafruit/Adafruit_MCP9808_Library>`__ by `AdaFruit <https://www.adafruit.com/>`__
- :ghedit:`Edit`

View File

@ -53,7 +53,7 @@ new feature. Supporting all possible use-cases would be quite hard.
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x68``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x68``.
- **accel_x** (*Optional*): Use the X-Axis of the Accelerometer. All options from
:ref:`Sensor <config-sensor>`.
- **accel_y** (*Optional*): Use the Y-Axis of the Accelerometer. All options from

View File

@ -51,7 +51,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x77``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.

View File

@ -47,6 +47,10 @@ Configuration variables:
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **total** (*Optional*): Report the total number of pulses
All options from :ref:`Sensor <config-sensor>`.
- All other options from :ref:`Sensor <config-sensor>`.
.. note::
@ -73,6 +77,31 @@ count the light pulses on a power meter, you can do the following:
filters:
- multiply: 0.06
Counting total pulses
---------------------
When the total sensor is configured, the pulse_counter also reports the total
number of pulses measured. When used on a power meter, this can be used to
measure the total consumed energy in kWh.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pulse_counter
pin: 12
unit_of_measurement: 'kW'
name: 'Power Meter House'
filters:
- multiply: 0.06
total:
unit_of_measurement: 'kWh'
name: 'Energy Meter House'
filters:
- multiply: 0.001
See Also
--------

View File

@ -59,6 +59,10 @@ Configuration variables:
the knob further will not decrease the number. Defaults to no minimum.
- **max_value** (*Optional*, int): The maximum value this rotary encoder will go to, turning
the knob further will not increase the number. Defaults to no maximum.
- **on_clockwise** (*Optional*, :ref:`Automation <automation>`): Actions to be performed when
the knob is turned clockwise. See :ref:`sensor-rotary_encoder-triggers`.
- **on_anticlockwise** (*Optional*, :ref:`Automation <automation>`): Actions to be performed when
the knob is turned anticlockwise. See :ref:`sensor-rotary_encoder-triggers`.
- All other options from :ref:`Sensor <config-sensor>`.
.. _sensor-rotary_encoder-set_value_action:
@ -95,6 +99,23 @@ Configuration options:
- **value** (**Required**, int, :ref:`templatable <config-templatable>`):
The value to set the internal counter to.
.. _sensor-rotary_encoder-triggers:
``on_clockwise`` and ``on_anticlockwise`` Triggers
--------------------------------------------------
With these configuration options, you can run automations based on the direction
that the encoder has been turned, and not the value that it currently holds.
These triggers ignore the min and max values and will trigger on every step.
.. code-block:: yaml
on_clockwise:
- logger.log: "Turned Clockwise"
on_anticlockwise:
- logger.log: "Turned Anticlockwise"
See Also
--------

View File

@ -27,6 +27,7 @@ The :ref:`I²C Bus <i2c>` is required to be set up in your configuration for thi
humidity:
name: "Workshop Humidity"
accuracy_decimals: 1
temperature_offset: 1.5 °C
address: 0x61
update_interval: 5s
@ -53,7 +54,23 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor.
- **temperature_offset** (*Optional*, float): Temperature and humidity
offsets may occur when operating the sensor in end-customer
devices. This variable allows the compensation of those effects by
setting a temperature offset.
- **automatic_self_calibration** (*Optional*, bool): Whether to enable
automatic self calibration (ASC). Defaults to ``true``.
- **ambient_pressure_compensation** (*Optional*, int): Enable compensation
of measured CO₂ values based on given ambient pressure in mBar.
- **altitude_compensation** (*Optional*, int): Enable compensating
deviations due to current altitude (in metres). Notice: setting
*altitude_compensation* is ignored if *ambient_pressure_compensation*
is set.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x61``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the

View File

@ -43,7 +43,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x58``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the

View File

@ -44,7 +44,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x44``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.

View File

@ -47,7 +47,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x70``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.

View File

@ -109,7 +109,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the i^2c address of the sensor.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x69``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.

View File

@ -28,7 +28,7 @@ Configuration variables:
------------------------
- **name** (**Required**, string): The name for the temperature sensor.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x4A``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.

View File

@ -64,7 +64,7 @@ Configuration variables:
values are ``1x`` (default), ``4x``, ``16x``, ``60x`` (highest gain).
- **integration_time** (*Optional*): The amount of time the light sensor is exposed. Valid values are
``2.4ms`` (default), ``24ms``, ``50ms``, ``101ms``, ``154ms``, ``700ms``.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x29``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x29``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.

View File

@ -0,0 +1,104 @@
Teleinformation from Linky electrical counter.
==============================================
.. seo::
:description: Instructions for setting up French Teleinformation
:image: teleinfo.jpg
:keywords: teleinfo
The ``teleinfo`` component allows you to retrieve data from a
French electrical counter using Teleinformation (`datasheet <https://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_54E.pdf>`__). It works with Linky electrical
counter but also legacy EDF electrical counter.
.. figure:: images/teleinfo-full.jpg
:align: center
:width: 50.0%
Linky electrical counter
..
A simple electronic assembly with an optocoupler and a resistor could
let you retrieve detailed power consumption or power production.
There is plenty of example on the web.
As the communication with the Teleinformation is done using UART, you need to
have an :ref:`UART bus <uart>` in your configuration with the ``rx_pin``
connected to the output of the optocoupler component. Additionally, you need to
set the baud rate to 9600bps if counter is configured to work in standard
mode or 1200bps in historical mode. To find out which mode you are using,
simply press -/+ buttons on the counter and look for `Standard mode` or
`Historical mode` as below.
.. figure:: images/teleinfo-standard.jpg
:align: center
:width: 50.0%
Linky electrical counter configured in standard mode.
..
.. figure:: images/teleinfo-historical.jpg
:align: center
:width: 50.0%
Linky electrical counter configured in historical mode.
..
.. code-block:: yaml
# Example configuration entry
uart:
id: uart_bus
rx_pin: GPIO3
tx_pin: GPIO1
baud_rate: 1200
parity: EVEN
data_bits: 7
sensor:
- platform: teleinfo
tags:
- name: "HCHC"
sensor:
name: "hchc"
unit_of_measurement: "Wh"
icon: mdi:flash
- name: "HCHP"
sensor:
name: "hchp"
unit_of_measurement: "Wh"
icon: mdi:flash
- name: "PAPP"
sensor:
name: "papp"
unit_of_measurement: "VA"
icon: mdi:flash
update_interval: 60s
historical_mode: true
Configuration variables:
------------------------
- **tags** (**Required**): Specify the tag you want to retrieve from the Teleinformation and select with what name to transmit it.
- **name** (**Required**, string): The name of the tag corresponding to what the electrical counter send.
- **sensor** (**Required**, :ref:`Sensor <config-sensor>`): Associate a sensor with the tag. See options from :ref:`Sensor <config-sensor>`.
- **historical_mode** (*Optional*): Wether to use historical mode or standard mode.
With historical mode, baudrate of 1200 must be used whereas 9600 must be used in
standard mode. Defaults to ``False``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses.
See Also
--------
- :apiref:`teleinfo/teleinfo.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,52 @@
TMP102 Temperature Sensor
=========================
.. seo::
:description: Instructions for setting up TMP102 temperature sensors.
:image: tmp102.jpg
:keywords: TMP102
The TMP102 Temperature sensor allows you to use your TMP102
(`Sparkfun <https://www.sparkfun.com/products/13314>`__) sensors with
ESPHome. The :ref:`I²C Bus <i2c>` is required to be set up in your
configuration for this sensor to work.
.. figure:: images/tmp102-full.jpg
:align: center
:width: 50.0%
TMP102 Temperature Sensor.
.. figure:: images/temperature.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: tmp102
name: "Living Room Temperature"
update_interval: 60s
Configuration variables:
------------------------
- **name** (**Required**, string): The name for the temperature sensor.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
- **address** (*Optional*, int): The I²C address of the sensor. Defauls to ``0x48``.
See :ref:`I²C Addresses <tmp117_i2c_addresses>` for more information.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
See Also
--------
- :ref:`sensor-filters`
- :doc:`dht`
- :doc:`dht12`
- :doc:`hdc1080`
- :doc:`sht3xd`
- :doc:`htu21d`
- :apiref:`tmp102/tmp102.h`
- :ghedit:`Edit`

View File

@ -20,7 +20,7 @@ sensors with ESPHome.
.. _Sparkfun: https://www.sparkfun.com/products/15805
The TMP117 is a high precision temperature sensor that communicates over I2C. Each sensor is tested on a NIST tracable test setup during Texas Instruments' production process. Accuracy should be at worst 0.1C across the -20C to +50C temperature range.
The TMP117 is a high precision temperature sensor that communicates over I²C. Each sensor is tested on a NIST tracable test setup during Texas Instruments' production process. Accuracy should be at worst 0.1C across the -20C to +50C temperature range.
To use the sensor, first set up an :ref:`I²C Bus <i2c>` and connect the sensor to the specified pins.

View File

@ -37,7 +37,7 @@ Configuration variables:
------------------------
- **name** (**Required**, string): The name for the sensor.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x39``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x39``.
- **integration_time** (*Optional*, :ref:`config-time`):
The time the sensor will take for each measurement. Longer means more accurate values. One of
``14ms``, ``101ms``, ``402ms``. Defaults to ``402ms``.

View File

@ -53,7 +53,7 @@ Configuration variables:
- All other options from :ref:`Sensor <config-sensor>`.
- **long_range** (*Optional*, bool): Set the sensor in long range mode. The signal_rate_limit is overruled
to ``0.1``. Defaults to false.
- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x29``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x29``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
See Also

View File

@ -115,7 +115,7 @@ Configuration example:
LYWSD02
*******
Hygro thermometer, rectangular body, e-ink display, broadcasts temperature and humidity values, no battery status
Hygro thermometer, rectangular body, e-ink display, broadcasts temperature, humidity and battery level.
.. figure:: images/xiaomi_lywsd02.jpg
:align: center
@ -132,6 +132,8 @@ Configuration example:
name: "LYWSD02 Temperature"
humidity:
name: "LYWSD02 Humidity"
battery_level:
name: "LYWSD02 Battery Level"
CGG1
****
@ -159,13 +161,21 @@ Configuration example:
LYWSD03MMC
**********
Hygro thermometer, small square body, segment LCD, encrypted, broadcasts temperature, humidity and battery status. Requires a bindkey in order to decrypt the received data (see :ref:`obtaining_the_bindkey`).
Hygro thermometer, small square body, segment LCD, encrypted, broadcasts temperature, humidity and battery status.
.. figure:: images/xiaomi_lywsd03mmc.jpg
:align: center
:width: 30.0%
Configuration example:
There are the following possibilities to operate this sensor:
1. Xiaomi stock firmware (requires a bindkey in order to decrypt the received data, see :ref:`obtaining_the_bindkey`)
2. Device flashed with `ATC MiThermometer <https://github.com/atc1441/ATC_MiThermometer>`__ custom firmware
- "Mi Like" advertisement (dummy bindkey required)
- "Custom" advertisement (no bindkey required)
Configuration example for Xiaomi stock firmware or ATC MiThermometer firmware set to "Mi Like" advertisement:
.. code-block:: yaml
@ -180,6 +190,22 @@ Configuration example:
battery_level:
name: "LYWSD03MMC Battery Level"
Configuration example for ATC MiThermometer firmware set to "Custom" advertisement:
.. code-block:: yaml
sensor:
- platform: atc_mithermometer
mac_address: "A4:C1:38:B1:CD:7F"
temperature:
name: "ATC Temperature"
humidity:
name: "ATC Humidity"
battery_level:
name: "ATC Battery-Level"
battery_voltage:
name: "ATC Battery-Voltage"
CGD1
****
@ -207,7 +233,7 @@ Configuration example:
JQJCY01YM
*********
Xiaomi (Honeywell) formaldehyde sensor, OLED display, broadcasts temperature, humidity, formaldehyde concentration (mg/m³) and battery status.
Xiaomi (Honeywell) formaldehyde sensor, OLED display, broadcasts temperature, humidity, formaldehyde concentration (mg/m³) and battery status.
.. figure:: images/xiaomi_jqjcy01ym.jpg
:align: center
@ -299,6 +325,8 @@ Configuration example:
name: "MJYD02YL-A Light Status"
battery_level:
name: "MJYD02YL-A Battery Level"
illuminance:
name: "MJYD02YL-A Illuminance"
Setting Up Devices
------------------
@ -340,14 +368,32 @@ It can sometimes take some time for the first BLE broadcast to be received. Once
Obtaining The Bindkey
---------------------
To set up an encrypted device such as the LYWSD03MMC or CGD1, you first need to obain the bind key. The ``xiaomi_ble`` sensor component is not able to automatically generate a bind key, so you need a different option.
To set up an encrypted device such as the LYWSD03MMC (with Xiaomi stock firmware) and CGD1, you first need to obtain the bind key. The ``xiaomi_ble`` sensor component is not able to automatically generate a bind key so other workarounds are necessary.
LYWSD03MMC
**********
If the LYWSD03MMC sensor is operated with the Xiaomi stock firmware, you can use the `TeLink flasher application <https://atc1441.github.io/TelinkFlasher.html>`__ to easily generate a new bind key and upload the key to the device without the need to flash a new firmware (see figure). For this, you load the flasher `webpage <https://atc1441.github.io/TelinkFlasher.html>`__ with a `supported browser <https://github.com/WebBluetoothCG/web-bluetooth/blob/master/implementation-status.md>`__ and connect the device by pressing "Connect". After the connection is established, you press the "Do Activation" button and the new key will be shown in the "Mi Bind Key" field. The key can be copied directly into the sensor YAML configuration.
.. figure:: images/telink_flasher.jpg
:align: center
:width: 100.0%
Telink flasher application.
.. warning::
The new bind key will work with ESPHome, but the Mi Home app will not recognise the sensor anymore once the device has been activated by the TeLink flasher application. To use the sensor again with the Xiaomi Mi Home app, the device needs to be removed and then re-added inside the Mi Home app.
Other encrypted devices
***********************
The easiest method (confirmed to work for LYWSD03MMC) is to use the `Telink flasher method <https://github.com/atc1441/ATC_MiThermometer>`__. The accompanying `video
<https://www.youtube.com/watch?v=NXKzFG61lNs>`_ shows how to wirelessly flash a LYWSD03MMC, or how to obtain the bind key of the stock firmware (watch till around 13:10). The custom firmware allows you to change several settings of the device, including the smiley and the advertising interval. Keep in mind that when flashing the custom firmware, you need to enable the 'Advertising Type' to be 'Mi Like' and to give ESPHome a dummy bind key, as it still expects one even though the custom firmware does not encrypt the data.
The other option is to use the original Mi Home app to add the sensor once. While adding the device, a new key is generated and uploaded into the Xiaomi cloud and to the device itself. Currently a chinese server needs to be selected as the rest of the world doesn't support most of these devices yet. Once generated, the key will not change again until the device is removed and re-added in the Xiaomi app.
In order to obtain the bind key, a SSL packet sniffer needs to be setup on either an Android phone or the iPhone. A good choice for Android is the `Remote PCAP <https://play.google.com/store/apps/details?id=com.egorovandreyrm.pcapremote&hl=en>`__ in combination with `Wireshark <https://www.wireshark.org/>`__. A tutorial on how to setup the Remote PCAP packet sniffer can be found `here <https://egorovandreyrm.com/pcap-remote-tutorial/>`__. Instructions how to obtain the key using an iPhone are `here <https://github.com/custom-components/sensor.mitemp_bt/blob/master/faq.md#my-sensors-ble-advertisements-are-encrypted-how-can-i-get-the-key>`__. Once the traffic between the Mi Home app and the Xiaomi has been recorded, the bind key will show in clear text:
In order to obtain the bind key, a SSL packet sniffer needs to be setup on either an Android phone or the iPhone. A good choice for Android is the `Remote PCAP <https://play.google.com/store/apps/details?id=com.egorovandreyrm.pcapremote&hl=en>`__ in combination with `Wireshark <https://www.wireshark.org/>`__. A tutorial on how to setup the Remote PCAP packet sniffer can be found `here <https://egorovandreyrm.com/pcap-remote-tutorial/>`__ and `here <https://github.com/ahpohl/xiaomi_lywsd03mmc>`__. Instructions how to obtain the key using an iPhone are `here <https://github.com/custom-components/sensor.mitemp_bt/blob/master/faq.md#my-sensors-ble-advertisements-are-encrypted-how-can-i-get-the-key>`__. Once the traffic between the Mi Home app and the Xiaomi servers has been recorded, the bind key will show in clear text:
.. code-block:: yaml
@ -355,8 +401,8 @@ In order to obtain the bind key, a SSL packet sniffer needs to be setup on eithe
"data" = "{"did":"blt.3.129q4nasgeg00","token":"20c665a7ff82a5bfb5eefc36","props":[{"type":"prop","key":"bind_key","value":"cfc7cc892f4e32f7a733086cf3443cb0"}, {"type":"prop","key":"smac","value":"A4:C1:38:8C:34:B7"}]}"
The ``bind_key`` is the 32 digits "value" item in the above output which needs to be inserted into the config file.
The ``bind_key`` is the 32 digits "value" item in the above output which needs to be inserted into the config file.
See Also
--------
@ -367,6 +413,7 @@ See Also
- Passive BLE monitor integration for Home Assistant (ble_monitor custom component) `<https://github.com/custom-components/ble_monitor>`__
by `@Magalex2x14 <https://github.com/Magalex2x14>`__ and `@Ernst79 <https://github.com/Ernst79>`__
- Xiaomi LYWSD03MMC passive sensor readout `<https://github.com/ahpohl/xiaomi_lywsd03mmc>`__ by `@ahpohl <https://github.com/ahpohl>`__
- Mi-standardauth `<https://github.com/danielkucera/mi-standardauth>`__
- Custom firmware for the Xiaomi Thermometer LYWSD03MMC `<https://github.com/atc1441/ATC_MiThermometer>`__
- TeLink flasher application `<https://atc1441.github.io/TelinkFlasher.html>`__
- :ghedit:`Edit`

View File

@ -55,6 +55,9 @@ Advanced Options:
- **restore** (*Optional*, boolean): Whether to restore the state of the servo motor at startup.
This is useful if you have an absolute servo motor and it goes back to its 0 position at startup.
Defaults to ``false``.
- **auto_detach_time** (*Optional*, :ref:`config-time`): The time after reaching the target value when the servo will be detached`, if set to zero, servo will not be detached. Defaults to ``0s``.
- **transition_length** (*Optional*, :ref:`config-time`): The time needed for a full movement (-1.0 to 1.0). This will effectively limit the speed of the servo, the larger the value, the slowest the servo will move. Defaults to `` 0s``
This can slow down the servo to avoid loud noises or just make the movement not jerking.
.. note::

View File

@ -17,7 +17,7 @@ The SX1509 can do much more than just simple digital pin control. It can produce
And, with a built-in keypad engine, it can interface with up to 64 buttons set up in an 8x8 matrix.
Any option accepting a :ref:`Pin Schema <config-pin_schema>` can theoretically be used, but some more
complicated components that use the pin schema will not work. For example the I2C or SPI pins.
complicated components that use the pin schema will not work. For example the I²C or SPI pins.
.. figure:: images/sx1509-full.jpg
:align: center

View File

@ -334,6 +334,21 @@ In the ``seconds:``, ``minutes:``, ... fields you can use the following operator
then:
- switch.toggle: my_switch
.. _time-has_time_condition:
``time.has_time`` Condition
----------------------------
This :ref:`Condition <config-condition>` checks if time has been set and is valid.
.. code-block:: yaml
on_...:
if:
condition:
time.has_time:
then:
- logger.log: Time has been set and is valid!
See Also
--------

View File

@ -52,6 +52,13 @@ Here is an example output for a Tuya fan controller:
[12:39:45][C][tuya:032]: Datapoint 9: switch (value: OFF)
[12:39:45][C][tuya:046]: Product: '{"p":"hqq73kftvzh8c92u","v":"1.0.0","m":0}'
Configuration variables:
------------------------
- **time_id** (*Optional*, :ref:`config-id`): Some Tuya devices support obtaining local time from ESPHome.
Specify the ID of the :ref:`Time Component <time>` which will be used.
- **ignore_mcu_update_on_datapoints** (*Optional*, list): A list of datapoints to ignore MCU updates for. Useful for certain broken/erratic hardware and debugging.
See Also
--------

View File

@ -189,7 +189,7 @@ Configuration variables:
Enterprise Authentication
-------------------------
WPA2_EAP Enterprise Authentication is supported on ESP32s.
WPA2_EAP Enterprise Authentication is supported on ESP32s and ESP8266s.
In order to configure this feature you must use the :ref:`wifi-networks` style configuration.
The ESP32 is known to work with PEAP, EAP-TTLS, and the certificate based EAP-TLS.
These are advanced settings and you will usually need to consult your enterprise network administrator.

View File

@ -70,9 +70,9 @@ author = 'Otto Winter'
# built documents.
#
# The short X.Y version.
version = '1.15'
version = '1.16'
# The full version, including alpha/beta/rc tags.
release = '1.15.3'
release = '1.16.0b1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -6,7 +6,7 @@ BME280 Environment
:image: bme280.jpg
:keywords: BME280
The :doc:`/components/sensor/bme280` is a simple temperature, humidity, and pressure sensor with communication over I2C.
The :doc:`/components/sensor/bme280` is a simple temperature, humidity, and pressure sensor with communication over :ref:`I²C <i2c>`.
With some simple math it is possible to either determine the height of the sensor, or the current pressure at sea level.
This guide can be applied to any sensor measuring temperature and pressure at the same time, like the
:doc:`/components/sensor/bmp280`, or :doc:`/components/sensor/bme680`.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -388,6 +388,7 @@ All Conditions
- :ref:`sensor.in_range <sensor-in_range_condition>`
- :ref:`wifi.connected <wifi-connected_condition>` / :ref:`api.connected <api-connected_condition>`
/ :ref:`mqtt.connected <mqtt-connected_condition>`
- :ref:`time.has_time <time-has_time_condition>`
- :ref:`script.is_running <script-is_running_condition>`
- :ref:`sun.is_above_horizon / sun.is_below_horizon <sun-is_above_below_horizon-condition>`
- :ref:`text_sensor.state <text_sensor-state_condition>`

View File

@ -291,7 +291,7 @@ config in non-destructive way so you could always override some bits and pieces
configuration.
Consider the following example where author put common pieces of configuration like WiFi,
I2C into base files and extends it with some devices specific configurations in the main config.
I²C into base files and extends it with some devices specific configurations in the main config.
Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets
merged with the services definitions from main config file.
@ -342,7 +342,7 @@ merged with the services definitions from main config file.
board: wemos_d1_mini32
build_path: ./build/${node_name}
# I2C Bus
# I²C Bus
i2c:
sda: GPIO21
scl: GPIO22

View File

@ -580,7 +580,7 @@ Standard for the esphome-core codebase:
communication interface, please consider implementing the library natively in ESPHome.
- This depends on the communication interface of course - if the library is directly working
with pins or doesn't do any I/O itself, it's ok. However if it's something like I^2C, then ESPHome's
with pins or doesn't do any I/O itself, it's ok. However if it's something like I²C, then ESPHome's
own communication abstractions should be used. Especially if the library accesses a global variable/state
like ``Wire`` there's a problem because then the component may not modular (i.e. not possible
to create two instances of a component on one ESP)

View File

@ -38,11 +38,11 @@ Blog Posts & Videos
- `Detecting Sound with ESP8266 <https://thibmaek.com/post/detecting-sound-level-using-esp8266-and-esphome>`__ by `Thibault Maekelbergh <https://thibmaek.com>`__
- `SW420 Vibration Sensor with Remote Notifications <https://github.com/rmooreID/Home-Assistant-Appliance-Monitor/>`__ by :ghuser:`rmooreID`
- `DIY Irrigation Controller (with Internal Scheduler + Lovelace UI) <https://brianhanifin.com/posts/diy-irrigation-controller-esphome-home-assistant/>`__ by :ghuser:`BrianHanifin`
- `Smart Intercom <https://frog32.ch/smart-intercom.html>`__ by `Marc Egli <https://frog32.ch/>`__
- `Esp32 six shutters controller <https://github.com/Gio-dot/Six-shutters-ESP32-controller>`__ by `Gio-dot <https://github.com/Gio-dot>`__
- `Washing machine phases detector (Sonoff Pow R2) <https://github.com/Gio-dot/Washing-Machine-Sonoff-Pow-R2-Esphome>`__ by `Gio-dot <https://github.com/Gio-dot>`__
- `Smart Intercom <https://frog32.ch/smart-intercom.html>`__ by `Marc Egli <https://frog32.ch/>`__
- `Esp32 six shutters controller <https://github.com/Gio-dot/Six-shutters-ESP32-controller>`__ by `Gio-dot <https://github.com/Gio-dot>`__
- `Washing machine phases detector (Sonoff Pow R2) <https://github.com/Gio-dot/Washing-Machine-Sonoff-Pow-R2-Esphome>`__ by `Gio-dot <https://github.com/Gio-dot>`__
- `Sonoff L1 LED Strip <https://emorydunn.com/blog/2020/08/10/sonoff-l1-home-assistant/>`__ by :ghuser:`emorydunn`
- `ESPHome for SP501E LED Controller <https://margau.net/posts/2020-11-21-2h-led-hack/>`__ by `margau <https://margau.net>`__
- `ESPHome for SP501E LED Controller <https://margau.net/posts/2020-11-21-2h-led-hack/>`__ by `margau <https://margau.net>`__
Custom Components & Code
------------------------
@ -70,6 +70,7 @@ Custom Components & Code
- `Jura Impressa J6 coffee machine custom component <https://github.com/ryanalden/esphome-jura-component>`__ by :ghuser:`ryanalden`
- `Paradox alarm system sensors custom component <https://github.com/Margriko/Paradox-ESPHome>`__ by :ghuser:`Margriko`
- `DSC POWER832 (PC5010) alarm system custom component <https://github.com/Dilbert66/esphome-dsckeybus>`__ by :ghuser:`Dilbert66`
- `Custom UART component for WS3 weather station and air particulate matter sensor <https://github.com/kquinsland/ws3-to-esphome-bridge>`__ by :ghuser:`kquinsland`
- `ADEMCO/VISTA/Honeywell alarm system custom component <https://github.com/Dilbert66/esphome-vistaECP>`__ by :ghuser:`Dilbert66`
- `Winsen ZE08-CH2O (Formaldehyde sensor) custom component <https://gist.github.com/cretep/f96606dc6a4eae0d85993d6085959220>`__ by :ghuser:`cretep`
@ -94,7 +95,7 @@ Sample Configurations
- `ESPHome Home Assistant Cheap Cat Feeder <https://github.com/rubengargar/diy-cheap-cat-feeder>`__ by :ghuser:`rubengargar`
- `ESPHome configs <https://github.com/nuttytree/ESPHome-Devices>`__ by :ghuser:`nuttytree`
- `ESPHome Home Assistant stepper motor blinds/curtain <https://github.com/icarome/esphome/blob/master/cortina.yaml>`__ by :ghuser:`icarome`
- `Control LG UD79-B monitor via UART <https://github.com/kquinsland/lg-m43mu79-esp-home-bridge>`__ by :ghuser:`kquinsland`
- `ESPHome AXA Remote 2 control <https://github.com/galagaking/espaxa/>`__ by :ghuser:`galagaking`
- `ESPHome WF-DS01 TuyaMCU based dimmable bedside touch lamp <https://github.com/davet2001/miscellaneous/blob/master/tuyamcu_ws-df01_touchlamp.yaml>`__ by :ghuser:`davet2001`
- `Universal menu system for devices with rotary encoder with push and SSD1306 I2C display <https://github.com/mikosoft83/pithy_screen_menu_system>`__ by :ghuser:`mikosoft83`

View File

@ -107,7 +107,7 @@ For me to fix the issue quickly, there are some things that would be really help
help given just that information?
2. A snippet of the code/configuration file used is always great to reproduce this issue.
Please read `How to create a Minimal, Complete, and Verifiable example <https://stackoverflow.com/help/mcve>`__.
3. If it's an I^2C or hardware communication issue please also try setting the
3. If it's an I²C or hardware communication issue please also try setting the
:ref:`log level <logger-log_levels>` to ``VERY_VERBOSE`` as it provides helpful information
about what is going on.
4. Please also include what you've already tried and didn't work as that can help us track down the issue.

View File

@ -101,30 +101,38 @@ Contributors
(in alphabetical order)
- `0hax (@0hax) <https://github.com/0hax>`__ - 2 contributions
- `0hax (@0hax) <https://github.com/0hax>`__ - 3 contributions
- `2016for (@2016for) <https://github.com/2016for>`__ - 1 contribution
- `Pavel Golovin (@31337Ghost) <https://github.com/31337Ghost>`__ - 2 contributions
- `David Martin (@3ative) <https://github.com/3ative>`__ - 1 contribution
- `Aalian Khan (@AalianKhan) <https://github.com/AalianKhan>`__ - 5 contributions
- `Abel Matser (@abelmatser) <https://github.com/abelmatser>`__ - 1 contribution
- `Abílio Costa (@abmantis) <https://github.com/abmantis>`__ - 3 contributions
- `acshef (@acshef) <https://github.com/acshef>`__ - 1 contribution
- `adamgreg (@adamgreg) <https://github.com/adamgreg>`__ - 1 contribution
- `Attila Darazs (@adarazs) <https://github.com/adarazs>`__ - 2 contributions
- `adezerega (@adezerega) <https://github.com/adezerega>`__ - 1 contribution
- `Andrea Donno (@adonno) <https://github.com/adonno>`__ - 1 contribution
- `Adrian Cuzman (@adriancuzman) <https://github.com/adriancuzman>`__ - 2 contributions
- `Johan Bloemberg (@aequitas) <https://github.com/aequitas>`__ - 6 contributions
- `Anders (@ahd71) <https://github.com/ahd71>`__ - 1 contribution
- `Alexander Pohl (@ahpohl) <https://github.com/ahpohl>`__ - 2 contributions
- `Alexander Pohl (@ahpohl) <https://github.com/ahpohl>`__ - 3 contributions
- `Airy André (@airy10) <https://github.com/airy10>`__ - 1 contribution
- `akoivist (@akoivist) <https://github.com/akoivist>`__ - 1 contribution
- `Andrej Komelj (@akomelj) <https://github.com/akomelj>`__ - 3 contributions
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__ - 9 contributions
- `Alone (@al-one) <https://github.com/al-one>`__ - 1 contribution
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__ - 10 contributions
- `Alexandre Danault (@AlexDanault) <https://github.com/AlexDanault>`__ - 1 contribution
- `Alex Mekkering (@AlexMekkering) <https://github.com/AlexMekkering>`__ - 3 contributions
- `Alex (@alexyao2015) <https://github.com/alexyao2015>`__ - 2 contributions
- `Amish Vishwakarma (@amishv) <https://github.com/amishv>`__ - 3 contributions
- `András Bíró (@andrasbiro) <https://github.com/andrasbiro>`__ - 1 contribution
- `Andreas Hergert (@andreashergert1984) <https://github.com/andreashergert1984>`__ - 1 contribution
- `Andrzej (@andriej) <https://github.com/andriej>`__ - 1 contribution
- `Andreas (@anduchs) <https://github.com/anduchs>`__ - 1 contribution
- `anekinloewe (@anekinloewe) <https://github.com/anekinloewe>`__ - 1 contribution
- `ankycooper (@ankycooper) <https://github.com/ankycooper>`__ - 1 contribution
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__ - 33 contributions
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__ - 35 contributions
- `Adriaan Peeters (@apeeters) <https://github.com/apeeters>`__ - 4 contributions
- `Darius Ratkevičius (@aphex008) <https://github.com/aphex008>`__ - 1 contribution
- `Ash McKenzie (@ashmckenzie) <https://github.com/ashmckenzie>`__ - 1 contribution
@ -140,7 +148,7 @@ Contributors
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__ - 1 contribution
- `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__ - 1 contribution
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__ - 1 contribution
- `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__ - 3 contributions
- `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__ - 4 contributions
- `Mauricio Bonani (@bonanitech) <https://github.com/bonanitech>`__ - 1 contribution
- `Patrik Hermansson (@bphermansson) <https://github.com/bphermansson>`__ - 1 contribution
- `Bram Kragten (@bramkragten) <https://github.com/bramkragten>`__ - 2 contributions
@ -148,6 +156,7 @@ Contributors
- `Brian Hanifin (@brianhanifin) <https://github.com/brianhanifin>`__ - 1 contribution
- `brianrjones69 (@brianrjones69) <https://github.com/brianrjones69>`__ - 1 contribution
- `buxtronix (@buxtronix) <https://github.com/buxtronix>`__ - 7 contributions
- `bvansambeek (@bvansambeek) <https://github.com/bvansambeek>`__ - 1 contribution
- `bwente (@bwente) <https://github.com/bwente>`__ - 1 contribution
- `Carlos Gustavo Sarmiento (@carlos-sarmiento) <https://github.com/carlos-sarmiento>`__ - 4 contributions
- `Carlos Garcia Saura (@CarlosGS) <https://github.com/CarlosGS>`__ - 1 contribution
@ -159,17 +168,21 @@ Contributors
- `James Crook (@cooljimy84) <https://github.com/cooljimy84>`__ - 1 contribution
- `Corban Mailloux (@corbanmailloux) <https://github.com/corbanmailloux>`__ - 5 contributions
- `Dmitry Berezovsky (@corvis) <https://github.com/corvis>`__ - 2 contributions
- `Connor Prussin (@cprussin) <https://github.com/cprussin>`__ - 1 contribution
- `cretep (@cretep) <https://github.com/cretep>`__ - 1 contribution
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__ - 3 contributions
- `Chris Talkington (@ctalkington) <https://github.com/ctalkington>`__ - 1 contribution
- `Alex Solomaha (@CyanoFresh) <https://github.com/CyanoFresh>`__ - 1 contribution
- `Luar Roji (@cyberplant) <https://github.com/cyberplant>`__ - 2 contributions
- `Dale Higgs (@dale3h) <https://github.com/dale3h>`__ - 1 contribution
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__ - 1 contribution
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__ - 2 contributions
- `Daniel Bjørnbakk (@danibjor) <https://github.com/danibjor>`__ - 1 contribution
- `Daniel Kucera (@danielkucera) <https://github.com/danielkucera>`__ - 1 contribution
- `Danny Sauer (@dannysauer) <https://github.com/dannysauer>`__ - 1 contribution
- `Daniel Schramm (@danielschramm) <https://github.com/danielschramm>`__ - 1 contribution
- `Chris (@darthsebulba04) <https://github.com/darthsebulba04>`__ - 1 contribution
- `DAVe3283 (@DAVe3283) <https://github.com/DAVe3283>`__ - 3 contributions
- `Dave Richer (@davericher) <https://github.com/davericher>`__ - 3 contributions
- `Dave T (@davet2001) <https://github.com/davet2001>`__ - 1 contribution
- `Dave Wongillies (@davewongillies) <https://github.com/davewongillies>`__ - 1 contribution
- `David De Sloovere (@DavidDeSloovere) <https://github.com/DavidDeSloovere>`__ - 3 contributions
- `David Beitey (@davidjb) <https://github.com/davidjb>`__ - 1 contribution
@ -178,18 +191,23 @@ Contributors
- `deftdawg (@deftdawg) <https://github.com/deftdawg>`__ - 1 contribution
- `Rsan (@deltazerorsan) <https://github.com/deltazerorsan>`__ - 1 contribution
- `Mickaël Le Baillif (@demikl) <https://github.com/demikl>`__ - 2 contributions
- `dependabot[bot] (@dependabot[bot]) <https://github.com/dependabot[bot]>`__ - 26 contributions
- `dependabot[bot] (@dependabot[bot]) <https://github.com/dependabot[bot]>`__ - 41 contributions
- `Destix (@Destix) <https://github.com/Destix>`__ - 1 contribution
- `Alain Turbide (@Dilbert66) <https://github.com/Dilbert66>`__ - 2 contributions
- `Mark (@Diramu) <https://github.com/Diramu>`__ - 1 contribution
- `Dirk Jahnke (@dirkj) <https://github.com/dirkj>`__ - 1 contribution
- `djtef (@djtef) <https://github.com/djtef>`__ - 1 contribution
- `Marcos Pérez Ferro (@djwmarcx) <https://github.com/djwmarcx>`__ - 1 contribution
- `dmkif (@dmkif) <https://github.com/dmkif>`__ - 1 contribution
- `Jiang Sheng (@doskoi) <https://github.com/doskoi>`__ - 1 contribution
- `Robert Schütz (@dotlambda) <https://github.com/dotlambda>`__ - 3 contributions
- `Daniel Hyles (@DotNetDann) <https://github.com/DotNetDann>`__ - 2 contributions
- `Daniel Hyles (@DotNetDann) <https://github.com/DotNetDann>`__ - 3 contributions
- `dr-oblivium (@dr-oblivium) <https://github.com/dr-oblivium>`__ - 2 contributions
- `Drew Perttula (@drewp) <https://github.com/drewp>`__ - 2 contributions
- `DrRob (@DrRob) <https://github.com/DrRob>`__ - 1 contribution
- `dubit0 (@dubit0) <https://github.com/dubit0>`__ - 1 contribution
- `Dimitris Zervas (@dzervas) <https://github.com/dzervas>`__ - 1 contribution
- `dziobson (@dziobson) <https://github.com/dziobson>`__ - 1 contribution
- `Ermanno Baschiera (@ebaschiera) <https://github.com/ebaschiera>`__ - 1 contribution
- `Niclas Larsson (@edge90) <https://github.com/edge90>`__ - 1 contribution
- `Eenoo (@Eenoo) <https://github.com/Eenoo>`__ - 1 contribution
@ -199,21 +217,24 @@ Contributors
- `EmbeddedDevver (@EmbeddedDevver) <https://github.com/EmbeddedDevver>`__ - 1 contribution
- `EmmanuelLM (@EmmanuelLM) <https://github.com/EmmanuelLM>`__ - 1 contribution
- `Emory Dunn (@emorydunn) <https://github.com/emorydunn>`__ - 1 contribution
- `Eric Muehlstein (@emuehlstein) <https://github.com/emuehlstein>`__ - 1 contribution
- `Anders Persson (@emwap) <https://github.com/emwap>`__ - 4 contributions
- `Nico Weichbrodt (@envy) <https://github.com/envy>`__ - 1 contribution
- `Evan Petousis (@epetousis) <https://github.com/epetousis>`__ - 1 contribution
- `Wilhelm Erasmus (@erasmuswill) <https://github.com/erasmuswill>`__ - 1 contribution
- `erazor666 (@erazor666) <https://github.com/erazor666>`__ - 1 contribution
- `Eric Hiller (@erichiller) <https://github.com/erichiller>`__ - 1 contribution
- `Ernst Klamer (@Ernst79) <https://github.com/Ernst79>`__ - 1 contribution
- `escoand (@escoand) <https://github.com/escoand>`__ - 7 contributions
- `esphomebot (@esphomebot) <https://github.com/esphomebot>`__ - 4 contributions
- `esphomebot (@esphomebot) <https://github.com/esphomebot>`__ - 5 contributions
- `Evan Coleman (@evandcoleman) <https://github.com/evandcoleman>`__ - 3 contributions
- `Malte Franken (@exxamalte) <https://github.com/exxamalte>`__ - 2 contributions
- `Fabian Affolter (@fabaff) <https://github.com/fabaff>`__ - 24 contributions
- `Fabian Affolter (@fabaff) <https://github.com/fabaff>`__ - 28 contributions
- `C W (@fake-name) <https://github.com/fake-name>`__ - 2 contributions
- `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__ - 1 contribution
- `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__ - 2 contributions
- `Francis-labo (@Francis-labo) <https://github.com/Francis-labo>`__ - 1 contribution
- `Francisk0 (@Francisk0) <https://github.com/Francisk0>`__ - 1 contribution
- `Frank Bakker (@FrankBakkerNl) <https://github.com/FrankBakkerNl>`__ - 1 contribution
- `Frank Bakker (@FrankBakkerNl) <https://github.com/FrankBakkerNl>`__ - 2 contributions
- `Frankster-NL (@Frankster-NL) <https://github.com/Frankster-NL>`__ - 1 contribution
- `Fredrik Erlandsson (@fredrike) <https://github.com/fredrike>`__ - 1 contribution
- `Evgeny (@freekode) <https://github.com/freekode>`__ - 8 contributions
@ -225,9 +246,9 @@ Contributors
- `Geoff Davis (@geoffdavis) <https://github.com/geoffdavis>`__ - 2 contributions
- `Gerard (@gerard33) <https://github.com/gerard33>`__ - 1 contribution
- `Giovanni (@Gio-dot) <https://github.com/Gio-dot>`__ - 2 contributions
- `gitolicious (@gitolicious) <https://github.com/gitolicious>`__ - 15 contributions
- `gitolicious (@gitolicious) <https://github.com/gitolicious>`__ - 16 contributions
- `The Gitter Badger (@gitter-badger) <https://github.com/gitter-badger>`__ - 1 contribution
- `Guillermo Ruffino (@glmnet) <https://github.com/glmnet>`__ - 171 contributions
- `Guillermo Ruffino (@glmnet) <https://github.com/glmnet>`__ - 184 contributions
- `Giorgos Logiotatidis (@glogiotatidis) <https://github.com/glogiotatidis>`__ - 1 contribution
- `Germain Masse (@gmasse) <https://github.com/gmasse>`__ - 2 contributions
- `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__ - 1 contribution
@ -238,9 +259,12 @@ Contributors
- `h0-- (@h0--) <https://github.com/h0-->`__ - 1 contribution
- `Boris Hajduk (@hajdbo) <https://github.com/hajdbo>`__ - 4 contributions
- `Gavin Mogan (@halkeye) <https://github.com/halkeye>`__ - 1 contribution
- `Charles Thompson (@haryadoon) <https://github.com/haryadoon>`__ - 1 contribution
- `Héctor Giménez (@hectorgimenez) <https://github.com/hectorgimenez>`__ - 2 contributions
- `Jimmy Hedman (@HeMan) <https://github.com/HeMan>`__ - 5 contributions
- `HepoH3 (@HepoH3) <https://github.com/HepoH3>`__ - 1 contribution
- `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__ - 1 contribution
- `MoA (@honomoa) <https://github.com/honomoa>`__ - 1 contribution
- `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__ - 2 contributions
- `icarome (@icarome) <https://github.com/icarome>`__ - 1 contribution
- `igg (@igg) <https://github.com/igg>`__ - 5 contributions
@ -256,8 +280,8 @@ Contributors
- `JbLb (@jblb) <https://github.com/jblb>`__ - 1 contribution
- `Joshua Dadswell (@jdads1) <https://github.com/jdads1>`__ - 1 contribution
- `jeff-h (@jeff-h) <https://github.com/jeff-h>`__ - 2 contributions
- `Jeff Rescignano (@JeffResc) <https://github.com/JeffResc>`__ - 10 contributions
- `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__ - 44 contributions
- `Jeff Rescignano (@JeffResc) <https://github.com/JeffResc>`__ - 11 contributions
- `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__ - 50 contributions
- `Jonathan Jefferies (@jjok) <https://github.com/jjok>`__ - 1 contribution
- `Jeppe Ladefoged (@jladefoged) <https://github.com/jladefoged>`__ - 2 contributions
- `Jonathan Martens (@jmartens) <https://github.com/jmartens>`__ - 1 contribution
@ -270,27 +294,35 @@ Contributors
- `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__ - 2 contributions
- `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__ - 1 contribution
- `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__ - 1 contribution
- `Justyn Shull (@justyns) <https://github.com/justyns>`__ - 1 contribution
- `Jasper van der Neut - Stulen (@jvanderneutstulen) <https://github.com/jvanderneutstulen>`__ - 2 contributions
- `João Vitor M. Roma (@jvmr1) <https://github.com/jvmr1>`__ - 1 contribution
- `Jack Wozny (@jwozny) <https://github.com/jwozny>`__ - 1 contribution
- `Harald Nagel (@k7hpn) <https://github.com/k7hpn>`__ - 1 contribution
- `kalebzettl (@kalebzettl) <https://github.com/kalebzettl>`__ - 1 contribution
- `Krasimir Nedelchev (@kaykayehnn) <https://github.com/kaykayehnn>`__ - 1 contribution
- `kbouchard111 (@kbouchard111) <https://github.com/kbouchard111>`__ - 1 contribution
- `Keith Burzinski (@kbx81) <https://github.com/kbx81>`__ - 15 contributions
- `Keith Burzinski (@kbx81) <https://github.com/kbx81>`__ - 19 contributions
- `Robert Kiss (@kepten) <https://github.com/kepten>`__ - 2 contributions
- `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__ - 1 contribution
- `kimonm (@kimonm) <https://github.com/kimonm>`__ - 1 contribution
- `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__ - 1 contribution
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__ - 1 contribution
- `Kevin Lewis (@kll) <https://github.com/kll>`__ - 1 contribution
- `korellas (@korellas) <https://github.com/korellas>`__ - 1 contribution
- `Kevin Pelzel (@kpelzel) <https://github.com/kpelzel>`__ - 1 contribution
- `krahabb (@krahabb) <https://github.com/krahabb>`__ - 2 contributions
- `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__ - 1 contribution
- `kroimon (@kroimon) <https://github.com/kroimon>`__ - 2 contributions
- `Kendell R (@KTibow) <https://github.com/KTibow>`__ - 1 contribution
- `Kendell R (@KTibow) <https://github.com/KTibow>`__ - 2 contributions
- `kvvoff (@kvvoff) <https://github.com/kvvoff>`__ - 1 contribution
- `Ken Davidson (@kwdavidson) <https://github.com/kwdavidson>`__ - 1 contribution
- `Kyle Manna (@kylemanna) <https://github.com/kylemanna>`__ - 1 contribution
- `la7dja (@la7dja) <https://github.com/la7dja>`__ - 1 contribution
- `Stefan Lässer (@Laess3r) <https://github.com/Laess3r>`__ - 1 contribution
- `Steffen Weinreich (@lairsdragon) <https://github.com/lairsdragon>`__ - 1 contribution
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__ - 1 contribution
- `lein1013 (@lein1013) <https://github.com/lein1013>`__ - 1 contribution
- `Lazar Obradovic (@lobradov) <https://github.com/lobradov>`__ - 4 contributions
- `Joakim Sørensen (@ludeeus) <https://github.com/ludeeus>`__ - 11 contributions
- `Lukas Klass (@LukasK13) <https://github.com/LukasK13>`__ - 1 contribution
@ -298,12 +330,13 @@ Contributors
- `Luke Fitzgerald (@lwfitzgerald) <https://github.com/lwfitzgerald>`__ - 1 contribution
- `Lewis Juggins (@lwis) <https://github.com/lwis>`__ - 1 contribution
- `Michael Klamminger (@m1ch) <https://github.com/m1ch>`__ - 1 contribution
- `M95D (@M95D) <https://github.com/M95D>`__ - 1 contribution
- `Marc-Antoine Courteau (@macourteau) <https://github.com/macourteau>`__ - 1 contribution
- `magnus (@magnusja) <https://github.com/magnusja>`__ - 1 contribution
- `Magnus Øverli (@magnusoverli) <https://github.com/magnusoverli>`__ - 1 contribution
- `Major Péter (@majorpeter) <https://github.com/majorpeter>`__ - 2 contributions
- `Marcel van der Veldt (@marcelveldt) <https://github.com/marcelveldt>`__ - 2 contributions
- `Marvin Gaube (@margau) <https://github.com/margau>`__ - 3 contributions
- `Marvin Gaube (@margau) <https://github.com/margau>`__ - 4 contributions
- `Martynas Griškonis (@Margriko) <https://github.com/Margriko>`__ - 1 contribution
- `Mario (@mario-tux) <https://github.com/mario-tux>`__ - 3 contributions
- `Matthew Harrold (@marrold) <https://github.com/marrold>`__ - 1 contribution
@ -311,6 +344,9 @@ Contributors
- `Martin Hjelmare (@MartinHjelmare) <https://github.com/MartinHjelmare>`__ - 1 contribution
- `MartinWelsch (@MartinWelsch) <https://github.com/MartinWelsch>`__ - 1 contribution
- `MasterTim17 (@MasterTim17) <https://github.com/MasterTim17>`__ - 1 contribution
- `matikij (@matikij) <https://github.com/matikij>`__ - 1 contribution
- `Michel Marti (@matoxp) <https://github.com/matoxp>`__ - 2 contributions
- `Maurice Schleußinger (@maurice-schleussinger) <https://github.com/maurice-schleussinger>`__ - 1 contribution
- `mbo18 (@mbo18) <https://github.com/mbo18>`__ - 1 contribution
- `Joseph Mearman (@Mearman) <https://github.com/Mearman>`__ - 1 contribution
- `Mechotronic (@Mechotronic) <https://github.com/Mechotronic>`__ - 1 contribution
@ -319,13 +355,16 @@ Contributors
- `Marco (@Melkor82) <https://github.com/Melkor82>`__ - 2 contributions
- `micw (@micw) <https://github.com/micw>`__ - 1 contribution
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__ - 2 contributions
- `mikosoft83 (@mikosoft83) <https://github.com/mikosoft83>`__ - 1 contribution
- `Matthew Edwards (@mje-nz) <https://github.com/mje-nz>`__ - 1 contribution
- `Maarten (@mjkl-gh) <https://github.com/mjkl-gh>`__ - 1 contribution
- `mjoshd (@mjoshd) <https://github.com/mjoshd>`__ - 2 contributions
- `mnaz (@mnaz) <https://github.com/mnaz>`__ - 1 contribution
- `Michael Nieß (@mniess) <https://github.com/mniess>`__ - 1 contribution
- `Matt N. (@mnoorenberghe) <https://github.com/mnoorenberghe>`__ - 1 contribution
- `morph027 (@morph027) <https://github.com/morph027>`__ - 1 contribution
- `Matthew Pettitt (@mpettitt) <https://github.com/mpettitt>`__ - 1 contribution
- `Ryan Matthews (@mrrsm) <https://github.com/mrrsm>`__ - 1 contribution
- `MrZetor (@MrZetor) <https://github.com/MrZetor>`__ - 1 contribution
- `mtl010957 (@mtl010957) <https://github.com/mtl010957>`__ - 9 contributions
- `Michiel van Turnhout (@mvturnho) <https://github.com/mvturnho>`__ - 15 contributions
@ -333,13 +372,15 @@ Contributors
- `Niels Ulrik Andersen (@myplacedk) <https://github.com/myplacedk>`__ - 1 contribution
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__ - 1 contribution
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__ - 1 contribution
- `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__ - 6 contributions
- `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__ - 7 contributions
- `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__ - 1 contribution
- `Nebula (@nebula-it) <https://github.com/nebula-it>`__ - 1 contribution
- `neographikal (@neographikal) <https://github.com/neographikal>`__ - 1 contribution
- `nepozs (@nepozs) <https://github.com/nepozs>`__ - 1 contribution
- `nickrout (@nickrout) <https://github.com/nickrout>`__ - 1 contribution
- `Nick Whyte (@nickw444) <https://github.com/nickw444>`__ - 3 contributions
- `nicuh (@nicuh) <https://github.com/nicuh>`__ - 1 contribution
- `Nikolay Kitanov (@nkitanov) <https://github.com/nkitanov>`__ - 1 contribution
- `nldroid (@nldroid) <https://github.com/nldroid>`__ - 2 contributions
- `Alex (@nnmalex) <https://github.com/nnmalex>`__ - 1 contribution
- `ffabi (@norges) <https://github.com/norges>`__ - 2 contributions
@ -349,6 +390,7 @@ Contributors
- `Olivér Falvai (@ofalvai) <https://github.com/ofalvai>`__ - 1 contribution
- `Oncleben31 (@oncleben31) <https://github.com/oncleben31>`__ - 1 contribution
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__ - 4 contributions
- `Pack3tL0ss (@Pack3tL0ss) <https://github.com/Pack3tL0ss>`__ - 1 contribution
- `Panuruj Khambanonda (PK) (@panuruj) <https://github.com/panuruj>`__ - 2 contributions
- `Paul Deen (@PaulAntonDeen) <https://github.com/PaulAntonDeen>`__ - 2 contributions
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__ - 3 contributions
@ -358,7 +400,8 @@ Contributors
- `perjury (@perjury) <https://github.com/perjury>`__ - 1 contribution
- `Philip Rosenberg-Watt (@PhilRW) <https://github.com/PhilRW>`__ - 1 contribution
- `phjr (@phjr) <https://github.com/phjr>`__ - 2 contributions
- `pille (@pille) <https://github.com/pille>`__ - 1 contribution
- `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__ - 1 contribution
- `pille (@pille) <https://github.com/pille>`__ - 2 contributions
- `pixiandreas (@pixiandreas) <https://github.com/pixiandreas>`__ - 1 contribution
- `Peter Kuehne (@pkuehne) <https://github.com/pkuehne>`__ - 5 contributions
- `Plácido Revilla (@placidorevilla) <https://github.com/placidorevilla>`__ - 2 contributions
@ -372,21 +415,26 @@ Contributors
- `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__ - 2 contributions
- `Quinn Hosler (@quinnhosler) <https://github.com/quinnhosler>`__ - 1 contribution
- `r-jordan (@r-jordan) <https://github.com/r-jordan>`__ - 1 contribution
- `Richard Kuhnt (@r15ch13) <https://github.com/r15ch13>`__ - 2 contributions
- `Pär Stålberg (@rabbadab) <https://github.com/rabbadab>`__ - 1 contribution
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__ - 1 contribution
- `Robert Cambridge (@rcambrj) <https://github.com/rcambrj>`__ - 1 contribution
- `Ronald Dehuysser (@rdehuyss) <https://github.com/rdehuyss>`__ - 1 contribution
- `Alex Reid (@reidprojects) <https://github.com/reidprojects>`__ - 2 contributions
- `richardweinberger (@richardweinberger) <https://github.com/richardweinberger>`__ - 1 contribution
- `Rich Foley (@RichFoley) <https://github.com/RichFoley>`__ - 1 contribution
- `Richard Lewis (@richrd) <https://github.com/richrd>`__ - 3 contributions
- `rlowens (@rlowens) <https://github.com/rlowens>`__ - 3 contributions
- `LMR (@rmooreID) <https://github.com/rmooreID>`__ - 1 contribution
- `Ryan Mounce (@rmounce) <https://github.com/rmounce>`__ - 1 contribution
- `rnauber (@rnauber) <https://github.com/rnauber>`__ - 3 contributions
- `Rob Deutsch (@rob-deutsch) <https://github.com/rob-deutsch>`__ - 1 contribution
- `Rob de Jonge (@robdejonge) <https://github.com/robdejonge>`__ - 1 contribution
- `Robin Smidsrød (@robinsmidsrod) <https://github.com/robinsmidsrod>`__ - 2 contributions
- `RockBomber (@RockBomber) <https://github.com/RockBomber>`__ - 1 contribution
- `Jérôme W. (@RomRider) <https://github.com/RomRider>`__ - 1 contribution
- `Robbie Page (@rorpage) <https://github.com/rorpage>`__ - 1 contribution
- `rradar (@rradar) <https://github.com/rradar>`__ - 4 contributions
- `rradar (@rradar) <https://github.com/rradar>`__ - 5 contributions
- `rspaargaren (@rspaargaren) <https://github.com/rspaargaren>`__ - 5 contributions
- `Rubén G. (@rubengargar) <https://github.com/rubengargar>`__ - 1 contribution
- `rudgr (@rudgr) <https://github.com/rudgr>`__ - 1 contribution
@ -395,7 +443,7 @@ Contributors
- `Nils Schulte (@Schnilz) <https://github.com/Schnilz>`__ - 1 contribution
- `Ville Skyttä (@scop) <https://github.com/scop>`__ - 3 contributions
- `sekkr1 (@sekkr1) <https://github.com/sekkr1>`__ - 1 contribution
- `SenexCrenshaw (@SenexCrenshaw) <https://github.com/SenexCrenshaw>`__ - 2 contributions
- `SenexCrenshaw (@SenexCrenshaw) <https://github.com/SenexCrenshaw>`__ - 6 contributions
- `Sergio (@sergio303) <https://github.com/sergio303>`__ - 2 contributions
- `Sergio Mayoral Martínez (@sermayoral) <https://github.com/sermayoral>`__ - 2 contributions
- `sethcohn (@sethcohn) <https://github.com/sethcohn>`__ - 1 contribution
@ -413,31 +461,38 @@ Contributors
- `Paul Krischer (@SqyD) <https://github.com/SqyD>`__ - 1 contribution
- `sredfern (@sredfern) <https://github.com/sredfern>`__ - 2 contributions
- `srg74 (@srg74) <https://github.com/srg74>`__ - 1 contribution
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__ - 10 contributions
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__ - 13 contributions
- `stubs12 (@stubs12) <https://github.com/stubs12>`__ - 1 contribution
- `Jordan Vohwinkel (@sublime93) <https://github.com/sublime93>`__ - 1 contribution
- `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__ - 1 contribution
- `Teemu Mikkonen (@T3m3z) <https://github.com/T3m3z>`__ - 2 contributions
- `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__ - 2 contributions
- `Levente Tamas (@tamisoft) <https://github.com/tamisoft>`__ - 2 contributions
- `TBobsin (@TBobsin) <https://github.com/TBobsin>`__ - 1 contribution
- `Team Super Panda (@teamsuperpanda) <https://github.com/teamsuperpanda>`__ - 1 contribution
- `The Impaler (@the-impaler) <https://github.com/the-impaler>`__ - 1 contribution
- `Nejc (@thedexboy) <https://github.com/thedexboy>`__ - 1 contribution
- `Thomas Eckerstorfer (@TheEggi) <https://github.com/TheEggi>`__ - 5 contributions
- `Spencer Hachmeister (@TheHackmeister) <https://github.com/TheHackmeister>`__ - 1 contribution
- `thejonesyboy (@thejonesyboy) <https://github.com/thejonesyboy>`__ - 1 contribution
- `TheJulianJES (@TheJulianJES) <https://github.com/TheJulianJES>`__ - 3 contributions
- `Jozef Zuzelka (@TheKuko) <https://github.com/TheKuko>`__ - 2 contributions
- `Mateusz Soszyński (@TheLastGimbus) <https://github.com/TheLastGimbus>`__ - 1 contribution
- `Andrew Quested (@thenameiwantedwastaken) <https://github.com/thenameiwantedwastaken>`__ - 1 contribution
- `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__ - 8 contributions
- `Thomas Klingbeil (@thomasklingbeil) <https://github.com/thomasklingbeil>`__ - 3 contributions
- `Andrew Thompson (@thompsa) <https://github.com/thompsa>`__ - 2 contributions
- `thubot (@thubot) <https://github.com/thubot>`__ - 1 contribution
- `tiagofreire-pt (@tiagofreire-pt) <https://github.com/tiagofreire-pt>`__ - 1 contribution
- `Tijs-B (@Tijs-B) <https://github.com/Tijs-B>`__ - 1 contribution
- `Tim P (@timpur) <https://github.com/timpur>`__ - 2 contributions
- `Tim Savage (@timsavage) <https://github.com/timsavage>`__ - 5 contributions
- `Tim Savage (@timsavage) <https://github.com/timsavage>`__ - 6 contributions
- `Tom Brien (@TomBrien) <https://github.com/TomBrien>`__ - 1 contribution
- `TomFahey (@TomFahey) <https://github.com/TomFahey>`__ - 2 contributions
- `Tommy Kihlstrøm (@tomludd) <https://github.com/tomludd>`__ - 1 contribution
- `tomlut (@tomlut) <https://github.com/tomlut>`__ - 2 contributions
- `Tom Price (@tomtom5152) <https://github.com/tomtom5152>`__ - 2 contributions
- `Tom Price (@tomtom5152) <https://github.com/tomtom5152>`__ - 3 contributions
- `Torwag (@torwag) <https://github.com/torwag>`__ - 1 contribution
- `Felix Eckhofer (@tribut) <https://github.com/tribut>`__ - 1 contribution
- `Troon (@Troon) <https://github.com/Troon>`__ - 1 contribution
- `truglodite (@truglodite) <https://github.com/truglodite>`__ - 1 contribution
@ -446,8 +501,9 @@ Contributors
- `tubalainen (@tubalainen) <https://github.com/tubalainen>`__ - 3 contributions
- `Tuckie (@Tuckie) <https://github.com/Tuckie>`__ - 1 contribution
- `Alexey Vlasov (@turbulator) <https://github.com/turbulator>`__ - 1 contribution
- `tyomikh (@tyomikh) <https://github.com/tyomikh>`__ - 1 contribution
- `ukewea (@ukewea) <https://github.com/ukewea>`__ - 1 contribution
- `Vc (@Valcob) <https://github.com/Valcob>`__ - 3 contributions
- `Vc (@Valcob) <https://github.com/Valcob>`__ - 4 contributions
- `Nad (@valordk) <https://github.com/valordk>`__ - 14 contributions
- `Víctor Ferrer García (@vicfergar) <https://github.com/vicfergar>`__ - 1 contribution
- `voibit (@voibit) <https://github.com/voibit>`__ - 2 contributions
@ -458,12 +514,17 @@ Contributors
- `Ian Wells (@wellsi) <https://github.com/wellsi>`__ - 1 contribution
- `Wilmar den Ouden (@wilmardo) <https://github.com/wilmardo>`__ - 1 contribution
- `Emil Hesslow (@WizKid) <https://github.com/WizKid>`__ - 1 contribution
- `Rick van Hattem (@WoLpH) <https://github.com/WoLpH>`__ - 1 contribution
- `Artur 'Wodor' Wielogorski (@wodor) <https://github.com/wodor>`__ - 1 contribution
- `Rick van Hattem (@WoLpH) <https://github.com/WoLpH>`__ - 2 contributions
- `wutr (@wutr) <https://github.com/wutr>`__ - 1 contribution
- `xheronimo (@xheronimo) <https://github.com/xheronimo>`__ - 1 contribution
- `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__ - 2 contributions
- `Marcin Jaworski (@yawor) <https://github.com/yawor>`__ - 2 contributions
- `Pavel (@yekm) <https://github.com/yekm>`__ - 2 contributions
- `Atsuko Ito (@yottatsa) <https://github.com/yottatsa>`__ - 1 contribution
- `Nico B (@youknow0) <https://github.com/youknow0>`__ - 1 contribution
- `YuanL.Lee (@yuanl) <https://github.com/yuanl>`__ - 1 contribution
- `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__ - 1 contribution
- `San (@zhujunsan) <https://github.com/zhujunsan>`__ - 1 contribution
*This page was last updated October 22, 2020.*
*This page was last updated January 7, 2021.*

93
images/canbus.svg Normal file
View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="135mm"
height="60mm"
viewBox="0 0 135 60"
version="1.1"
id="svg100"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="canbus.svg">
<defs
id="defs94" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="377.23571"
inkscape:cy="206.93478"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata97">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Laag 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-237)">
<path
d="m 16.440094,239.55732 100.197636,-0.82276 c 7.87458,-0.0647 14.25779,8.06718 14.25779,18.01748 v 19.94787 c 0,9.9503 -6.38398,17.95186 -14.25779,18.01651 l -100.197636,0.82277 c -7.8745723,0.0647 -14.2585483,-8.0662 -14.2585483,-18.0165 v -19.94792 c 0,-9.95124 6.383809,-18.01745 14.2577863,-18.01745 z"
id="path69"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssssssssc"
style="stroke-width:0.85861504" />
<path
d="m 16.440094,239.55732 100.342446,-0.33525 c 7.87473,-0.0255 14.25779,8.06715 14.25779,18.01745 v 19.94792 c 0,9.9503 -6.38383,17.9902 -14.25779,18.01649 l -100.342446,0.33526 c -7.8747113,0.0255 -14.2585483,-8.0662 -14.2585483,-18.0165 v -19.94792 c 0,-9.95124 6.383809,-18.01745 14.2577863,-18.01745 z"
stroke-miterlimit="10"
id="path71"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:1.14453387;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
sodipodi:nodetypes="cssssssssc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36.63424301px;line-height:1.25;font-family:'Arial Rounded MT Bold';-inkscape-font-specification:'Arial Rounded MT Bold, ';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.85861504"
x="19.823954"
y="250.492"
id="text114"
transform="scale(0.8895678,1.1241414)"><tspan
sodipodi:role="line"
id="tspan112"
x="19.823954"
y="250.492"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36.63424301px;line-height:1.25;font-family:'Arial Rounded MT Bold';-inkscape-font-specification:'Arial Rounded MT Bold, ';fill:#ffffff;stroke-width:0.85861504">CAN</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.48880768px;line-height:1.25;font-family:'Arial Rounded MT Bold';-inkscape-font-specification:'Arial Rounded MT Bold, ';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.86666292"
x="-352.34537"
y="87.275421"
id="text118"
transform="matrix(0,-0.80144605,1.2477446,0,0,0)"><tspan
sodipodi:role="line"
id="tspan116"
x="-352.34537"
y="87.275421"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.48880768px;font-family:'Arial Rounded MT Bold';-inkscape-font-specification:'Arial Rounded MT Bold, ';fill:#ffffff;stroke-width:0.86666292">BUS</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/ezo-ph-circuit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
images/ili9341.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
images/mcp9808.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
images/rc522.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/ssd1322.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/ssd1327.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
images/ssd1331.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
images/st7735.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Some files were not shown because too many files have changed in this diff Show More