Categories

Keywords

DingSwitch - en esp8266 basseret stikkontakt til IHC

NOTE 2023: jeg kommer ikke til at vidreudvikle på nedenstående dingswitch. Jeg vil anbefale esphome sammen med HA - det er super nemt.

En billig fjerstyret stikkontakt til ca 80kr som kan styres fra IHC eller en browser! Den orginale stikkontakt fra LK koster ca 700-800kr (Desuden syntes jeg den er grim og klodset sammenlignet med den her)

Dette projekt er mit første som forbinder til IHC controlleren fra en Esp8266 over wifi med soap. Den er basseret på en Sonoff S20 (Læs e.v.t. de andre indlæg jeg har lavet om Sonoff)

Firmware til DingSwitch behøver ikke at køre på en Sonoff - enhver esp8266 baseret enhed med minimum 1MB flash ram skulle kunne anvendes. Den alm sonoff til ca 5-6$ kan også bruges.

Jeg har selv haft DingSwitch kørende i flere uger, og det virker rimeligt godt - jeg har kun behøvet at genstarte en enkelt gang. (Det var efter at jeg havde opdateret IHC projektet på controlleren). Så jeg tror det er rimeligt stabilt nu og har derfor bestemt mig for at offentligøre det så andre kan få gavn af det. DingSwitch kan godt bruges uden IHC - du kan slukke/tænde via en web side på DingSwitch.

Først læs ansvarsfraskrivelse (det her er 220v så hvis du ikke har styr på hvad du laver så lad være)

Flashing af DingSwitch firmware

DingSwitch firmware kan downloades her. Tilslut Sonoff S20 med en USB til seriel adapter og sæt esp8266 i flash mode (Hold knappen inde på s20 mens du tænder den). Hvis du har en USB adapter som kan give 3,3v kan du godt bruge de 3,3v til esp8266 under flashing (Det er som regel ikke nok til at køre stabilt med esp8266 med wifi tændt). Du skal IKKE have 220V på mens Sonoff er åben eller forbundet til USB adapter.

Der findes flere programmer til at flashe esp8266 med. Det orginale flashtool fra espressif her - (det har jeg aldrig selv brug). Eller brug esptool.py fra en kommando linie:

esptool.py –port COMX -b 115200 write_flash –flash_size=detect -fm dio 0 sti-til-dingswitch.bin

Hvis du gerne vil have et windows program kan du bruge nodemcu-flasher

Hvis der er nogen som gerne vil have mere hjælp til flash af firmware kan jeg e.v.t. lave et separat indlæg om det.

Efter flashing er det en god ide at genstarte ved at tage strømmen (ellers kan Esp8266 have problemer med genstart fra software)

Wifi setup

Første gang DingSwitch startes, laves et Wifi hotspot med navnet DingXXX (hvor XXX er mac nummer på enheden). Forbind til dette hotpspot (password 12345678) og åbn en browser med http://192.168.1.1

Tryk på “Scan” knappen og vælg dit wifi netværk i listen. (Eller indtast SSID manuelt). Indtast adgangskode til dit wifi netværk.

Du kan evt. give DingSwitch et andet navn.

Desuden kan du angive et brugernavn og adgangskode som skal bruges for at tilgå setup på DingSwitch.

Tryk på “Gem opsætning og genstart”.

Nu forbinder DingSwitch til dit lokale wifi netværk istedet for at lavet et hotspot. Dingsiwtch bruger SSDP til at annoncerer sin tilstedeværelse på netværket. På Windows skulle du kunne se enheden i “netwærk” (Under andre enheder). Ellers må du finde det tildelte IP nummer i din router.

Hardware setup

Fordi de forskellige versioner af sonoff og kloner (se de andre indlæg om sonoff) har lidt forskellige opsætning af hardware, har jeg lavet det så man konfigurerer hvilken IO pin led, knap og relæ sidder på. Desuden angives om “On” er Low eller High. Efter du har lavet ændringer tryk på Gem opsætning og genstart DingSwitch.

Opsætningen på billedet her svarer til en orginal sonoff s20.

IHC opsætning

Indtast ip eller domænenavn for IHC controller, samt bruger navn og adgangskode. Tryk derfter på “hent projekt” - det lager lidt tid - herefter vises IHC projektet i et træ i bunden.

Herfra kan du vælge den resource (on/off ind- eller ud-gang) som DingSwitch skal kobles sammen med.

Tryk på “Gem opsætning” og genstart DingSwitch.

Betjening

Du kan tænde/slukke på ved at:

  1. Bruge knappen på DingSwitch (hvis du har sat det op i hardware)
  2. Via den resource du har linket til på IHC controlleren. D.v.s. hvad som helt styret fra IHC
  3. Via forsiden på den web server der kører på DingSwitch:

Problem løsning

Source code

Jeg kommer ikke til at frigive den komplette source code til DingSwitch på nuværende tidspunkt. Der indgår for mange af mine “standard” libraries og programmer i projektet som ikke er klar til offentliggørelse

  1. Et proprocessor program jeg anvender til at includerer script og css i en enkelt html fil. Det er for at siderne ikke skal lave flere http requests (som ikke kan foregå parallelt på esp8266 web serveren). Det optimere hastigheden for sidevisninger.
  2. Et proprocessor program som pakker html til gz komprimeret og lave til cpp er nemmere at includere i koden. Sammen med 1) gør det at siderne loader meget hurtigere. Jeg har bla. anvendt jquery på ihc siden - og uden ovennævnte optimering tager det laaaaang tid at hente siderne.
  3. En Software “Real time clock” der synkroniserer med ntp.
  4. En Log funktion der virker ved at kun huske de sidste x kb data (p.g.a. den begrænsede hukommelse på esp8266)
  5. Et typescript library til at behandle IHC projekt filen client side i browseren.
  6. IHC soap client - med long polling til at implementere “WaitForResourceValueChanges”.

Det er sikkert 6) der er mest interessante for andre så det blive nok det første jeg kigger på at offentligøre.

(c) 2010-2023 dingus.dk