Naast de hardware is de juiste software voor je project natuurlijk net zo belangrijk. Een praktische en universeel toepasbare firmware voor de ESP8266 bos en weide microcontroller is de Tasmota firmware. Hiermee kun je verschillende projecten realiseren zonder zelf te hoeven programmeren. Bovendien hoef je niet elke keer "het wiel opnieuw uit te vinden" 🙂 .
Voordat je het kunt gebruiken met je microcontroller, moet het er natuurlijk eerst naar worden overgezet. Hoe je dit doet en waar je rekening mee moet houden, wordt beschreven in het volgende artikel.
Veiligheidsinstructies
Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/
Affiliate links / reclame links
De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂
Eisen
Handige artikelen:
Voordat u aan dit artikel begint, moet u de Arduino IDE hebben geïnstalleerd en geconfigureerd. Informatie hierover vind je in het volgende artikel.
Programma's installeren - een voorbeeld
ArduinoIDE - Tips en trucs
Benodigd materiaal:
In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.
Vereist gereedschap:
In de volgende lijst vind je alle tools die je nodig hebt om dit artikel te implementeren.
Kopieer de huidige Tasmota-versie van GitHub
Voordat je kunt beginnen met het configureren en programmeren van de Tasmota firmware, moet je deze eerst downloaden van GitHub.
De bestanden voor de firmware zijn te vinden op: https://github.com/arendst/Sonoff-Tasmota
Hoe je bestanden van een GitHub download wordt beschreven in het artikel GitHub - Hoe kopieer ik bestanden van een GitHub naar mijn computer? beschreven.
Nadat je de gecomprimeerde firmwarebestanden hebt gedownload, moet je ze nog uitpakken. U vindt tips over hoe u dit moet doen in het artikel WinRar? WinZip? WinWat? - Schat ik heb de bestanden verkleind
Configureer de Tasmota-firmware
Veel instellingen van de Tasmota-firmware kunnen ook tijdens het gebruik worden aangepast. Toch vind ik het gemakkelijker om deze instellingen direct te importeren via een correct geconfigureerde firmware.
Bovendien is dit ook absoluut noodzakelijk voor sommige sensoren die worden gebruikt, omdat niet alle softwarecomponenten standaard worden gecompileerd ("toegevoegd aan de firmware") voor elke sensor of actuator.




De verschillende Tasmota-firmware-opties
In het nu geopende "user_config.h" zijn allerlei instelmogelijkheden beschikbaar. Meestal is slechts een fractie daarvan nodig. Voor de volledigheid worden alle opties hier echter opgesomd en kort beschreven.
Zodat je niet alle opties afzonderlijk hoeft te doorlopen, heb ik de opties die je absoluut moet bewerken groen gemarkeerd. Hierachter staan bijvoorbeeld wachtwoorden of URL's die je individueel moet configureren of op zijn minst moet controleren. Controleer deze opties dus voordat je de firmware naar je Tasmota apparaat overzet.








In het gedeelte "MQTT" kunnen de basisparameters voor het verbinden met de MQTT-server worden ingesteld. - MQTT_USE" activeert de MQTT-client.
- MQTT_HOST" definieert het adres van je MQTT-server.
- Onder "MQTT_FINGERPRINTX" kun je de vingerafdruk instellen voor het versleutelen van je MQTT-verbinding. - MQTT_PORT" stelt de poort van je MQTT-server in.
- In "MQTT_USER" en "MQTT_PASS" kun je de gebruikersnaam en het wachtwoord voor je MQTT-server definiëren.
- Met "MQTT_BUTTON_RETAIN", "MQTT_POWER_RETAIN" en "MQTT_SWITCH_RETAIN" kun je de retain flag activeren voor de respectievelijke MQTT-berichten. Dit heeft als effect dat de respectievelijke MQTT-berichten ook verzonden worden naar MQTT-clients die nog niet online waren toen het MQTT-bericht verzonden werd.
- Met "MQTT_STATUS_OFF" kun je de string instellen die wordt gebruikt in commando's om iets uit te schakelen.
- Met "MQTT_STATUS_ON" kun je de string instellen die gebruikt wordt in commando's om iets aan te zetten.
- Met "MQTT_CMND_TOGGLE" kun je de string instellen die wordt gebruikt in commando's om iets aan te zetten.
- Met "MQTT_CMND_HOLD" kun je de string instellen die wordt verzonden wanneer een knop langer wordt ingedrukt dan gespecificeerd in KEY_HOLD_TIME.
In dit gedeelte kunnen verschillende details over de gebruikte MQTT-onderwerpen worden gedefinieerd.
Met "MQTT_FULLOPIC" definieer je de structuur van de gebruikte onderwerpen. Standaard bestaat deze altijd uit de "prefix" en het respectievelijke "topic".
De voorvoegsels worden dan gedefinieerd onder "SUB_PREFIX", "PUB_PREFIX" en "PUB_PREFIX2".
Uw Tasmota apparaat gebruikt de onder "SUB_PREFIX" gespecificeerde prefix als abonnement - d.w.z. om waarden en opdrachten te ontvangen.
De pefix gespecificeerd onder "PUB_PREFIX" wordt gebruikt om waarden te publiceren.
Telemetriegegevens worden verzonden via de prefix gedefinieerd in "PUB_PREFIX2".
De onderwerpen worden dan gedefinieerd onder "MQTT_TOPIC", "MQTT_GRTOPIC", "MQTT_BUTTON_TOPIC", "MQTT_SWITCH_TOPIC".
MQTT_TOPIC" staat voor het individuele onderwerp van het Tasmota apparaat. Er wordt ook altijd een deel van het MAC-adres van het Tasmota apparaat toegevoegd.
"MQTT_GRTOPIC" staat voor een onderwerp waarin je verschillende Tasmota-apparaten kunt groeperen.
Met "MQTT_BUTTON_TOPIC" en "MQTT_SWITCH_TOPIC" kun je speciale onderwerpen instellen voor de eventueel aangesloten knoppen en schakelaars.
Met "MQTT_CLIENT_ID" kun je de naam of de ID van de MQTT-client definiëren.
Normaal gesproken kun je al deze waarden laten zoals ze zijn.





Met deze en de opties in de volgende sectie kun je de criteria voor de zomer-/wintertijdomschakeling definiëren. De parameters die beginnen met "TIME_DST..." bepalen onder welke voorwaarden de omschakeling van standaardtijd (wintertijd) naar zomertijd plaatsvindt. De parameters die beginnen met "TIME_STD_..." zijn daarentegen bepalend voor het omgekeerde geval, d.w.z. de omschakeling van zomer- naar wintertijd. De parameters zijn verder identiek voor beide gebieden: "...HEMISPHERE" bepaalt op welk deel van de wereldbol je je bevindt. Deze optie is niet echt nodig voor de tijdsverandering, maar eerder voor het berekenen van de juiste zonsopgangs- en zonsondergangstijden.
Nu is het tijd om de parameters voor de tijdsverandering in te stellen. Aangezien de tijdsverandering (in ieder geval in Duitsland) van winter- naar zomertijd altijd op de laatste zondag in maart om 2:00 uur plaatsvindt, moet je de parameter "TIME_DST_WEEK" op "Last", de parameter "TIME_DST_DAY" op "Sun" (=zondag), de parameter "TIME_DST_MONTH" op "Mar" (=maart) en de parameter "TIME_DST_HOUR" op twee zetten. Met de parameter "TIME_DST_OFFSET" geef je vervolgens aan welke tijdverschuiving in dit geval optreedt. Je moet ook de afwijking door de tijdzone opgeven. In het geval van Duitsland, waar de tijdzone UTC+1 is, dus +60 minuten, is de zomertijd +120 minuten.
De tijdwisseling van zomer- naar wintertijd (wederom in Duitsland) vindt altijd plaats op de laatste zondag van oktober om 03:00 uur.
Daarom moet je de parameter "TIME_STD_WEEK" instellen op "Last", de parameter "TIME_STD_DAY" op "Sun" (=zondag), de parameter "TIME_STD_MONTH" op "Oct" (=oktober) en de parameter "TIME_STD_HOUR" op drie. Met de parameter "TIME_STD_OFFSET" geef je vervolgens aan welke tijdverschuiving in dit geval optreedt. Je moet ook de afwijking door de tijdzone opgeven. In het geval van Duitsland, waar de tijdzone UTC+1 is, dus +60 minuten, is de standaardtijd (=wintertijd) +60 minuten.
Met de opties "LATITUDE" en "LONGITUDE" kunt u de positie van het Tasmota apparaat instellen. Dit is nodig om de juiste tijden voor zonsopgang en zonsondergang te berekenen. Als u deze functie wilt gebruiken, is het belangrijk dat u hier de juiste gegevens invoert. Hoe u de positie van een willekeurige locatie kunt achterhalen, wordt beschreven in het artikel Breedtegraad en lengtegraad van een positie bepalen met GoogleMaps beschreven. Zorg ervoor dat u de positie (zoals weergegeven) in het decimale systeem opgeeft. Hoe je dit doet staat ook beschreven in het genoemde artikel.
"APP_TIMEZONE" definieert de tijdzone.
"APP_LEDSTATE" definieert de functie van de geïntegreerde LED's (in veel Sonoff-apparaten).
"APP_PULSETIME" definieert de pulsduur in de vorm van veelvouden van 0,1 seconden. Een waarde van 5 komt overeen met 0,5 seconden of 500 milliseconden. Een waarde van 0 deactiveert deze functie.
"APP_POWERON_STATE" bepaalt de toestand van de geconfigureerde relais na het inschakelen. De volgende instellingen zijn hier beschikbaar: POWER_ALL_OFF, POWER_ALL_ON, POWER_ALL_SAVED_TOGGLE, POWER_ALL_SAVED, POWER_ALL_ALWAYS_ON, POWER_ALL_OFF_PULSETIME_ON
"APP_BLINKTIME" definieert de pulslengte van een "knipperend" relais.
"APP_SLEEP" definieert een tijdsperiode tussen 1 en 250 milliseconden waarin de ESP8266 in slaapstand wordt gezet. Op deze manier kan er wat energie bespaard worden. Natuurlijk zal de ESP8266 in het ergste geval pas na 250 milliseconden reageren.
"KEY_DEBOUNCE_TIME" definieert de debounce-tijd van een aangesloten knop. Een waarde van 50 geeft dus aan dat na een gedetecteerde druk op een knop, de knop in kwestie gedurende 50 milliseconden wordt genegeerd.
"KEY_HOLD_TIME" bepaalt hoe lang een knop ingedrukt moet worden tot hij herkend wordt als een permanent ingedrukte knop. De opgegeven waarde wordt opnieuw vermenigvuldigd met 0,1 seconden. Een waarde van 40 komt overeen met een duur van 4 seconden. De gebeurtenis "Knop is ingedrukt" wordt pas na 4 seconden geactiveerd.
"SWITCH_DEBOUNCE_TIME" definieert de debounce-tijd van een aangesloten schakelaar. Een waarde van 50 geeft aan dat na een gedetecteerde wijziging van de schakelaarpositie, de respectieve schakelaar gedurende 50 milliseconden wordt genegeerd.
"SWITCH_MODE" bepaalt het gedrag van het geconfigureerde relais met betrekking tot een aangesloten schakelaar. De volgende opties zijn mogelijk:
SCHAKELAAR; VOLGEN, VOLGEN_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE
"WS2812_LEDS" definieert het aantal aangesloten WS2812 LEDs.
"TEMP_CONVERSION" activeert (=1) of deactiveert (=0) de omzetting van de temperatuur in Fahrenheit.
"TEMP_RESOLUTION" bepaalt de resolutie waarmee de temperatuur wordt weergegeven. Je kunt kiezen tussen geen en maximaal drie decimalen. LET OP: De betreffende resolutie moet natuurlijk ook worden geleverd door de aangesloten sensor. Anders is deze zogenaamd exactere waarde eerder een gok dan een exacte waarde.
"HUMIDITY_RESOLUTION" bepaalt de resolutie waarmee de vochtigheid wordt weergegeven. Je kunt kiezen tussen geen en maximaal drie decimalen. LET OP: De betreffende resolutie moet natuurlijk ook worden geleverd door de aangesloten sensor. Anders is deze zogenaamd exactere waarde eerder een gok dan een exacte waarde.
"PRESSURE_RESOLUTION" bepaalt de resolutie waarmee de luchtdruk wordt weergegeven. Je kunt kiezen tussen geen en maximaal drie decimalen. LET OP: De betreffende resolutie moet natuurlijk ook worden geleverd door de aangesloten sensor. Anders is deze zogenaamd exactere waarde eerder een gok dan een exacte waarde.
"ENERGY_RESOLUTION" bepaalt de resolutie waarmee het energieverbruik wordt weergegeven. Je kunt kiezen tussen geen en maximaal vijf cijfers achter de komma. LET OP: De betreffende resolutie moet natuurlijk ook worden geleverd door de aangesloten sensor. Anders is deze zogenaamd exactere waarde eerder een gok dan een exacte waarde.

Deze opties kunnen worden gebruikt om het gedrag te bepalen in het geval dat er geen geldige WLAN toegangsgegevens zijn opgeslagen voor het Tasmota apparaat. Als "USE_WPS" is geactiveerd (d.w.z. de twee // voor de overeenkomstige vermelding zijn verwijderd), kunt u uw Tasmota apparaat met uw router verbinden met behulp van de WPS-functie. Als "USE_SMARTCONFIG" is geactiveerd, kunt u de toegangsgegevens invoeren met de functie Android-app ESP8266 Smart Config configureren.





















De optie "USE_RF_FLASH" maakt het, indien geactiveerd op een SONOFF 433Mhz RF Bridge, mogelijk om de aangesloten co-processor via de web interface van de Tasmota firmware te programmeren. Je kunt hier meer over lezen in het artikel Tasmota - Sonoff RF Bridge RF-Chip (EFM8BB1) met Portic Firmware knipperen vinden.


Start het programmeerproces
Nadat u de firmware naar wens hebt aangepast of geconfigureerd, is het nu tijd om deze over te zetten naar de ESP8266 van uw Tasmota apparaat. In dit voorbeeld wordt een normaal ESP8266 adapterboard van de WEMOS D1-Mini geprogrammeerd met de Tasmota firmware.






Veel plezier met het project
Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂
PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂
In de huidige tasmota-firmwareversie van github bestaat de sonoff-map zoals hierboven beschreven niet meer. Compileren lukt niet. Wat doe ik verkeerd?
Met vriendelijke groeten
Fabian
Hallo Fabian,
je hebt gelijk de mappenstructuur is een beetje veranderd.
Probeer de map "Tasmota" op: https://github.com/arendst/Tasmota/tree/development/tasmota
Als u het bestand "Tasmota.ino" opent, zou u de firmware moeten kunnen compileren. 🙂
Hartelijke groeten
(ook) Fabian 😀