Smart Wifi Switch – Tasmota på Sonoff Basic

Jeg har efterhånden en del Wifi baserede IOT dimser, desværre kommer de altid med  firmware der ringer hjem til producenten for at høre om der er nye instruktioner, der er sådan set ikke noget nyt i dette, har du en smart-el-pære der kan tændes og slukkes via din telefon, har producenten sikkert mulighed for fuld overvågning af dit lokal-net.

Jeg kan varmt anbefale at bruge en lille time på at se:

Den er på tysk, men der er mulighed for undertekster – bestemt værd at se

Det er fandme uhyggeligt du

Der er masser af links/videoer om hvordan man installerer sin egen software på sin El-pære.

Der er to uafhængige projekter der tilbyder fuld kontrol over firmware, værktøjer og firmwaren kan downloades fra nettet.

  • Tasmota der kun supporterer esp8266 og esp32, er i princippet en firmware der indeholder al funtionalitet, for alt,  og det er den samme software i alle IOT-er, man enabler så det man skal bruge, dermed kan man ændre funktion uden at skulle installere ny firmware.  Det er det system vore celler bruger, de har den fulde opskrift på bygge et menneske, alle procedurer er gemt i DNA.   De her dimser kommer med mindst 1Mb kode-plads, så den kan jo ligeså godt udnyttes, men efterhånden er der fundet på så meget funktionalitet at der ikke plads til alt i de mindste enheder, så der er flere versioner.
  • ESPHome compilerer  kun den kode ind som der er behov for. og man kan tilføje selvskrevet programmel hvis man har de tilbøjeligheder,  ESPHome supporterer også andre end ESP chips, så det er nok den jeg burde vælge.

Andreas Spiess har en video hvor han sammeligner dem:

Heldigvis så kan man skifte firmware OTA (over The Air) fra den ene til den anden.  Det er kun første gang når man skal befri dimsen for dens originale firmware at man skal uploade firmware via RS232.

Jeg har valgt at bruge Tasmota i første omgang.

Sonoff  Basic

rs232 flash mode, button pressed/shorted, (gpio-0 low)

Min første Wifi kontrollerede kontakt er fra 2017, den er både FCC og CE registreret, og stadig fuld på højde med hvad man har idag, selvom man dengang ikke havde grejet hvordan man elegant kunne håndtere lokal-tænd-sluk knapper, og så er den i forhold til dagens standard lidt bulky.

Dimsen skal bootes i programming mode, (gpio-0 til GND),  tryk-på-knap  mens USB kabel sættes  i computer.

Check forbindelse

$ esptool.py -p /dev/ttyUSB0 read_mac
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 68:c6:3a:a3:3c:a7
Uploading stub...
Running stub...
Stub running...
MAC: 68:c6:3a:a3:3c:a7
Hard resetting via RTS pin...

Get ID

$ esptool.py -p /dev/ttyUSB0 flash_id
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 68:c6:3a:a3:3c:a7
Stub is already running. No upload is necessary.
Manufacturer: 5e
Device: 4014
Detected flash size: 1MB
Hard resetting via RTS pin...

Backup af firmware der er installeret nu

$ esptool.py --port /dev/ttyUSB0 read_flash 0x00000 0x100000 sonoff-r2-orig.bin
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 68:c6:3a:a3:3c:a7
Stub is already running. No upload is necessary.
Configuring flash size...
1048576 (100 %)
1048576 (100 %)
Read 1048576 bytes at 0x00000000 in 94.8 seconds (88.4 kbit/s)...
Hard resetting via RTS pin...

Download Tasmota firmware

$ wget https://ota.tasmota.com/tasmota/tasmota.bin
--2024-10-23 13:48:40--  https://ota.tasmota.com/tasmota/tasmota.bin
Resolving ota.tasmota.com (ota.tasmota.com)... 18.173.5.34, 18.173.5.54, 18.173.5.61, ...
Connecting to ota.tasmota.com (ota.tasmota.com)|18.173.5.34|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 665568 (650K) [application/octet-stream]
Saving to: ‘tasmota.bin’

tasmota.bin                100%[========================================>] 649.97K  --.-KB/s    in 0.08s   

2024-10-23 13:48:41 (7.85 MB/s) - ‘tasmota.bin’ saved [665568/665568]

Erase

$ esptool.py --port /dev/ttyUSB0 erase_flash                                           
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 68:c6:3a:a3:3c:a7
Stub is already running. No upload is necessary.
Erasing flash (this may take a while)...
Chip erase completed successfully in 3.1s
Hard resetting via RTS pin...

Upload den nye firmware

$ esptool.py --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0 tasmota.bin
esptool.py v4.8.1
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 68:c6:3a:a3:3c:a7
Stub is already running. No upload is necessary.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x000a2fff...
Compressed 665568 bytes to 475457...
Wrote 665568 bytes (475457 compressed) at 0x00000000 in 43.2 seconds (effective 123.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Det var det,  hvis du havde lodet gpio-0 til GND, så fjern den og dimsen vil boote i normal mode, ellers lad være med trykke på knappen mens den booter.

Nu kører Dimsen Tasmota, og resten kunne foregå ved at konfigure Dimsen via dens WEB-interface. Først vil enheden optræde som:

  • accesspoint tasmota-A33CA7-7335
  • Forbind en computer/telefon til dette net
  • Configurer Dimsen som beskrevet i en af linkene ovenfor, dvs åbn http://192.168.4.1

Men siden vi nu alligevel har rs232 adgang til dimsen så lad os sætte den op v.hj.a serielle kommanoder og dermed undgår vi at skulle gøre ovenstående.

  1. Oversigt over kommandoerne der både kan bruges via seriel og via Web/Mqtt

Når man tænder Dimsen, blinker den grøn. Så vi forbinder os til den med picocom udfører kommandoerne reset 1 og status, og trykker på knappen et par gange:

$ picocom -l /dev/ttyUSB0 -b 115200 --omap crcrlf --echo --quiet

reset 1
00:00:32.139 CMD: reset 1
00:00:32.143 RSL: RESULT = {"Reset":"Reset and Restarting"}
00:00:32.593 CFG: Use defaults
00:00:34.845 APP: Restarting

 ets Jan  8 2013,rst cause:1, boot mode:(3,6)

load 0x4010f000, len 3584, room 16 
tail 0
chksum 0xb0
csum 0xb0
v3969889e
~ld

00:00:00.001 HDW: ESP8266EX
00:00:00.023 CFG: Loaded from flash at FB, Count 1
00:00:00.028 QPC: Count 1
00:00:00.040 Project tasmota - Tasmota Version 14.3.0(release-tasmota)-2_7_7(2024-10-15T08:18:01)
00:00:00.304 WIF: WifiManager active for 3 minutes
00:00:00.812 HTP: Web server active on tasmota-A33CA7-7335 with IP address 192.168.4.1
00:00:06.942 QPC: Reset
status
00:00:30.712 CMD: status
00:00:30.718 RSL: STATUS = {"Status":{"Module":1,"DeviceName":"Tasmota","FriendlyName":["Tasmota"],"Topic":"tasmota_A33CA7","ButtonTopic":"0","Power":"0","PowerLock":"0","PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0,"InfoRetain":0,"StateRetain":0,"StatusRetain":0}}
00:04:22.563 RSL: RESULT = {"POWER":"ON"}
00:04:22.564 RSL: POWER = ON
00:04:25.821 RSL: RESULT = {"POWER":"OFF"}
00:04:25.823 RSL: POWER = OFF

Efter første tryk er lysdioden konstant grøn, efter næste tryk blinker den igen. Nu kan vi konfigurere de basale ting, nemlig template, wifi access og mqtt. Herefter skulle den være klar til at blive sat i drift, her er de ting jeg sætter.

template {"NAME":"Sonoff Basic","GPIO":[17,255,0,255,0,0,0,0,21,56,255,0,0],"FLAG":0,"BASE":1}

backlog ssid1 Wiot; password1 mit hemmelige password

mqtthost 192.168.100.2.

Nu burde tingesten være på nettet, man kan checke om alt gik vel i terminalen og se hvad navn og ip-addresse den har, og vi kan nu åbne den inbyggede WB=server i en browser:

  • http://tasmota-A33CA7-7335

Dimsen kan nu tænde og slukkes med et tryk på en WEB-side, og yderligere configureringer er lige til.

Normalt vil man jo bruge et eller anden Home Automation system f.ex. Home Assistant,  Det behøver ikke være avanceret, men det er nu smart at man slukke alle lys i kælderen når man går i seng – fra sin seng, eller automatisk kl. 23:00, mere om det en anden gang.

This entry was posted in Embedded, HomeAutomation, internet. Bookmark the permalink.

2 Responses to Smart Wifi Switch – Tasmota på Sonoff Basic

  1. Pingback: Smart Wifi Switch – Tasmota på Sonoff Dual R3 Lite | StorePeter

  2. Pingback: Smart Wifi Switch – Tasmota på Sonoff RE5V1C | StorePeter

Leave a Reply