Naast de hardware is de juiste software voor uw project uiteraard net zo belangrijk. Een praktische en universeel toepasbare firmware voor de bos- en weidemicrocontroller ESP8266 is de Tasmota-firmware. Hierdoor kunt u diverse projecten uitvoeren zonder dat u zelf hoeft te 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 voor sommige gebruikte sensoren absoluut noodzakelijk, omdat niet standaard voor elke sensor of actuator alle softwarecomponenten zijn gecompileerd (“toegevoegd aan de firmware”).
De verschillende Tasmota-firmware-opties
In het nu geopende “user_config.h” zijn er allerlei instelmogelijkheden. Meestal heb je er maar een fractie van nodig. Voor de volledigheid worden hier alle mogelijkheden 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 de sectie “MQTT” kunt u de basisparameters instellen voor verbinding met de MQTT-server. – – “MQTT_USE” activeert de MQTT-client.
– “MQTT_HOST” stelt het adres van uw MQTT-server in.
– Onder “MQTT_FINGERPRINTX” kunt u de vingerafdruk instellen voor het coderen van uw MQTT-verbinding. – – – “MQTT_PORT” stelt de poort van uw MQTT-server in.
– In “MQTT_USER” en “MQTT_PASS” kunt u de gebruikersnaam en het wachtwoord voor uw MQTT-server instellen.
– Met “MQTT_BUTTON_RETAIN”, “MQTT_POWER_RETAIN” en “MQTT_SWITCH_RETAIN” kunt u de bewaarvlag voor de betreffende MQTT-berichten activeren. Dit betekent dat de betreffende MQTT-berichten ook worden verzonden naar MQTT-clients die nog niet online waren op het moment dat het MQTT-bericht werd verzonden.
– Met “MQTT_STATUS_OFF” kunt u de string instellen die in opdrachten wordt gebruikt 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 gebruikt wordt in commando’s om iets te schakelen.
– Met “MQTT_CMND_HOLD” kunt u de string instellen die moet worden 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” specificeert u de structuur van de gebruikte onderwerpen. Standaard bestaat dit altijd uit het “prefix” en het betreffende “onderwerp”.
De voorvoegsels worden vervolgens gespecificeerd onder “SUB_PREFIX”, “PUB_PREFIX” en “PUB_PREFIX2”.
Uw Tasmota-apparaat gebruikt het voorvoegsel dat is opgegeven onder “SUB_PREFIX” als abonnement – d.w.z. om waarden en opdrachten te ontvangen.
Het pefix dat is opgegeven onder “PUB_PREFIX” wordt gebruikt om waarden te publiceren.
Telemetriegegevens worden verzonden via het voorvoegsel dat is opgegeven in “PUB_PREFIX2”.
De onderwerpen worden vervolgens gedefinieerd onder “MQTT_TOPIC”, “MQTT_GRTOPIC”, “MQTT_BUTTON_TOPIC”, “MQTT_SWITCH_TOPIC”.
“MQTT_TOPIC” staat voor het individuele onderwerp van het Tasmota-apparaat. Een deel van het MAC-adres van uw Tasmota-apparaat wordt altijd toegevoegd.
“MQTT_GRTOPIC” staat voor een onderwerp waarin je meerdere Tasmota-apparaten in een groep kunt combineren.
Met “MQTT_BUTTON_TOPIC” en “MQTT_SWITCH_TOPIC” kun je speciale onderwerpen instellen voor eventueel aangesloten knoppen en schakelaars.
Met “MQTT_CLIENT_ID” kunt u de naam of ID van de MQTT-client opgeven.
Normaal gesproken kun je al deze waarden laten zoals ze zijn.
Met deze en de opties in de volgende sectie kunt u de criteria voor de zomer-/wintertijdwijziging instellen. De parameters die beginnen met “TIME_DST...” bepalen onder welke omstandigheden de overgang van standaardtijd (wintertijd) naar zomertijd plaatsvindt. De parameters die beginnen met “TIME_STD_...” zijn daarentegen cruciaal voor het tegenovergestelde geval, namelijk de overgang van zomer- naar wintertijd. Voor het overige zijn de parameters voor beide gebieden identiek: “…HEMISPHERE” bepaalt in welk deel van de aardbol u zich bevindt. Deze optie is eigenlijk niet nodig voor de tijdsverandering, maar voor het berekenen van de juiste zonsopgang- en zonsondergangtijden.
Nu is het tijd om de parameters voor de tijdverandering in te stellen. Omdat de tijdverandering (tenminste in Duitsland) van winter- naar zomertijd altijd plaatsvindt op de laatste zondag van maart om 02.00 uur, moet u de parameter “TIME_DST_WEEK” op “Last” en de parameter “TIME_DST_DAY” op “ Sun” (=zondag). , stelt u de parameter “TIME_DST_MONTH” in op “Mar” (=maart) en de parameter “TIME_DST_HOUR” op twee. Met de parameter “TIME_DST_OFFSET” geeft u vervolgens aan welk tijdsverschil er in dit geval optreedt. Ook moet u de afwijking als gevolg van de tijdzone opgeven. In het geval van Duitsland, waar de tijdzone UTC+1 is, d.w.z. +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 u 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” geeft u vervolgens aan welk tijdsverschil er in dit geval optreedt. Ook moet u de afwijking als gevolg van de tijdzone opgeven. Voor Duitsland, waar de tijdzone UTC+1 heeft, d.w.z. +60 minuten, geldt hier de standaardtijd (=wintertijd) +60 minuten.
U kunt de opties "LATITUDE" en "LONGITUDE" gebruiken om de positie van het Tasmota-apparaat in te stellen. Dit is nodig om de juiste zonsopgang- en zonsondergangtijden te berekenen. Als u van deze functie gebruik wilt maken, is het belangrijk dat u hier de juiste gegevens opgeeft. Hoe je de positie van elke plaats kunt achterhalen, staat 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 veelvouden van 0,1 seconden. Een waarde van 5 komt overeen met 0,5 seconde of 500 milliseconden. Een waarde van 0 schakelt deze functie uit.
“APP_POWERON_STATE” definieert de toestand van de geconfigureerde relais na het inschakelen. De volgende instellingen zijn 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 de slaapmodus wordt gezet. Zo kun je wat energie besparen. Uiteraard reageert de ESP8266 in het ergste geval pas 250 milliseconden later.
“KEY_DEBOUNCE_TIME” definieert de debouncetijd van een verbonden knop. Een waarde van 50 geeft aan dat na een gedetecteerde toetsaanslag de betreffende knop 50 milliseconden wordt genegeerd.
“KEY_HOLD_TIME” definieert de tijdsduur dat een knop moet worden ingedrukt totdat deze wordt herkend als een permanent ingedrukte knop. De opgegeven waarde wordt opnieuw met 0,1 seconde vermenigvuldigd. Een waarde van 40 komt overeen met een tijdsperiode van 4 seconden. De gebeurtenis “knop is ingedrukt” wordt pas na 4 seconden geactiveerd.
“SWITCH_DEBOUNCE_TIME” definieert de debouncetijd van een aangesloten schakelaar. Een waarde van 50 geeft aan dat nadat een schakelaarstandverandering wordt gedetecteerd, de betreffende schakelaar gedurende 50 milliseconden wordt genegeerd.
“SWITCH_MODE” definieert het gedrag van het geconfigureerde relais ten opzichte van 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-LED's.
“TEMP_CONVERSION” activeert (=1) of deactiveert (=0) de conversie van de temperatuur naar de Fahrenheit-eenheid.
“TEMP_RESOLUTION” definieert de resolutie waarmee de temperatuur wordt weergegeven. U kunt kiezen tussen geen en maximaal drie decimalen. LET OP: De betreffende resolutie moet uiteraard ook door de aangesloten sensor worden geleverd. Anders is deze zogenaamd nauwkeurigere waarde meer giswerk dan exact.
“HUMIDITY_RESOLUTION” definieert de resolutie waarmee de luchtvochtigheid wordt weergegeven. U kunt kiezen tussen geen en maximaal drie decimalen. LET OP: De betreffende resolutie moet uiteraard ook door de aangesloten sensor worden geleverd. Anders is deze zogenaamd nauwkeurigere waarde meer giswerk dan exact.
“PRESSURE_RESOLUTION” definieert de resolutie waarmee de luchtdruk wordt weergegeven. U kunt kiezen tussen geen en maximaal drie decimalen. LET OP: De betreffende resolutie moet uiteraard ook door de aangesloten sensor worden geleverd. Anders is deze zogenaamd nauwkeurigere waarde meer giswerk dan exact.
“ENERGY_RESOLUTION” definieert de resolutie waarmee het energieverbruik wordt weergegeven. U kunt kiezen tussen geen en maximaal vijf decimalen. LET OP: De betreffende resolutie moet uiteraard ook door de aangesloten sensor worden geleverd. Anders is deze zogenaamd nauwkeurigere waarde meer giswerk dan exact.
Met deze opties kan het gedrag worden bepaald in het geval dat er nog geen geldige WLAN-toegangsgegevens voor het Tasmota-apparaat zijn opgeslagen. Als “USE_WPS” is geactiveerd (d.w.z. de twee // vóór de overeenkomstige vermelding zijn verwijderd), heeft u de mogelijkheid om uw Tasmota-apparaat met uw router te verbinden met behulp van de WPS-functie. Als “USE_SMARTCONFIG” is geactiveerd, kunt u de toegangsgegevens invoeren met de Android-app ESP8266 Smart Config configureren.
Met de optie “USE_RF_FLASH”, indien geactiveerd op een SONOFF 433Mhz RF-brug, kan de aangesloten co-processor worden geprogrammeerd via de Tasmota-firmware-webinterface. Meer hierover leest u 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 het met de map "Tasmota" onder: 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 😀