DingSwitch – en esp8266 basseret stikkontakt til IHC

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

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

  • Under opstart vil led (hvis konfigureret) blinke mens DingSwitch forsøger at forbinde til Wifi.
  • Hvis DingSwitch ikke kan forbinde til dit Wifi, så kan du får den til at starte HotSpot ved at holde knappen inde lige efter opstart (Hvis du gør det for tidligt vil den gå i flash mode). Led vil lyse konstant.
  • Kig e.v.t i Log på info siden og se om der er nogen problemer.

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.

 

 

15 responses to “DingSwitch – en esp8266 basseret stikkontakt til IHC”

  1. Martin says:

    Hej, er der nogen plan mht. punkt 6 – er meget interesseret i hvordan det virker?

    • Jens says:

      Det skal nok komme – jeg vil ikke love hvornår. Det er sådan i perioder at jeg har tid til at rode med det.
      Lige nu er jeg ved at kigge på sonoff touch og få DingSwitch til at virke på den.

  2. Martin says:

    Hej Jens,
    ok – det lyder også meget spændende.
    Giv endelig lyd, når der er noget på trapperne.

  3. Martin says:

    Hej igen,
    lige en ide – hvad med en ESP8266 som IHC -> mqtt gateway.
    MQTT som snitflade giver mange muligheder for ekstra enheder.
    Der findes et udemærket projekt der understøtter mange af sonoff varianterne:
    https://github.com/arendst/Sonoff-Tasmota

    Hvad siger du til ideen?

    • Jens says:

      Jeg tror ikke det er realistisk at få det til at kører ordentligt på esp8266, hvis den skal håndterer ret mange in/output (for lidt ram). jeg har rodet med noget tilsvarende på raspberry pi og det kan godt lade sig gøre. (Som interface til domoticz). Jeg var ikke tilfreds med domoticz, så jeg mangler stadigvæk at finde det perfekte home automation system der kan samle det hele (jeg bliver nok nød til selv at lave det:-)

  4. Martin says:

    Ok, har du set Home Assistent, måske der kunne laves en IHC komponent og platform?

    • Jens says:

      Jeg har set det men det er et stykke tid siden så der er sikert sket en del siden. Det kan være jeg skal tage et kig igen.

  5. Martin says:

    Hej Jens, det kunne være fedt med en Home Assistant platform til IHC – så er der næsten ubegrænset muligheder for tilslutning af andre enheder.

    • Jens says:

      Jeg vil kigge lidt på Home assistant igen (Jeg er ikke så vild med at det er baseret på python, men det vil jeg ikke kommer nærmere ind på her- så bliver det en meget lang kommentar)

    • Jens says:

      Jeg har rodet lidt med Home Assistant nu og jeg har lavet integration til IHC. Du kan se mere i seneste post.

  6. Martin says:

    Hej Jens, spændende med din integration. Hvad er din umiddelbare opfattelse af Home Assistant sammen med IHC?

  7. Lasse says:

    Har fået flashet kontakten og den virker som den skal. Kan dog ikke lige greje hvordan jeg opretter den i IHC (visual) så jeg kan linke kontakten til IHC.

    Nogen den kan give en udførlig beskrivelse af hvad jeg præcist skal oprette i IHC Visual for at oprette min nye stikkontakt/DingSwitch?

    På forhånd tak.

    • Jens says:

      Du kan forbinde til alle on/off in eller out-put på både funktions blokke og produkter i IHC visual. Du kan f.eks. lave en funktionsblok med et enkelt on/off output, som du så forbinder til dingswitch.

  8. Henning Larsen says:

    Købte en S20 og fulgte din anvisning – super let og det virkede første gang. Efterfølgende har jeg tænkt på om man kan ”modificere” programmet således at man har 4 x Button og 4 x mulighed for at koble dem sammen med resource (on/off ind- eller ud-gang) = wireless kontakt (ved at bruge et ESP8266 modul).

Leave a Reply

Your email address will not be published. Required fields are marked *