Olemme auki! Tilaukset lähetetään normaalisti maanantaina 23.

DONOFF iot valonsäädin

Asetettu päälle

Laiteohjelmisto

Mitä tarvitset
Kääntääksesi ja siirtääksesi DONOFF-laiteohjelmiston ESP-01:een tarvitset:
  • Arduino IDE
  • ESP8266-ytimen laajennus (2.4.2 tai 2.5.0)
  • Asennettu "ESP8266 Sketch Upload Tool"
  • PUYA-korjaus (ESP8266-ydinversiolle 2.4.2)

Monissa ESP-01-korteissa, joita voit ostaa nyt, on flash-siru, joka aiheuttaa ongelmia flash-muistin sisällön lukemisessa (niissä on PUYA-merkkinen Flash-siru). Ongelmien ratkaisemiseksi on olemassa väliaikainen korjaustiedosto versiolle 2.4.2 (Kuulehan) saatavilla (todennäköisesti tämä korjaustiedosto sisältyy ESP8266-laajennuksen versioon 2.5.0). Versiossa 2.4.2 (ja aiemmissa) tämä korjaustiedosto on ehdottomasti asennettava työkaluketjuun.

WebSockets – lyhyt esittely

World Wide Web luotiin ajatuksella, että asiakas (esimerkiksi selain) tekee pyynnön palvelimelle ja että palvelin kunnioittaa tätä pyyntöä lähettämällä web-sivun (pyyntö-vastausmalli). Tämän menetelmän haittana on, että palvelin voi lähettää jotain asiakkaalle vain, jos asiakas sitä erikseen pyytää. Mutta entä jos palvelimella on uutta tietoa, jonka se haluaa lähettää asiakkaalle? Tämän ongelman ratkaisemiseksi on kehitetty useita strategioita, joiden avulla palvelin voi "työntää" tietoja asiakkaalle. Yksi suosituimmista strategioista (AJAX:n ulkopuolella) oli pitkä äänestys. Palvelin ja asiakas pitävät HTTP-yhteyden auki, kunnes palvelimella on dataa lähetettäväksi asiakkaalle.

Kaikkien näiden ratkaisujen ongelma on, että niihin liittyy HTTP-protokollan ylimääräisiä kustannuksia. Jokainen "HTTP-pyyntö" lähettää palvelimelle vuoren otsikoita ja evästeitä. Ja siitä tulee nopeasti suuri joukko tietoja, jotka on lähetettävä linjan yli, mikä puolestaan aiheuttaa viiveitä (latenssia). Jos haluat rakentaa jotain selainpohjaisen REAL -aikaisen järjestelmän kaltaista, haluat mahdollisimman vähän viivettä, jotta asiat sujuisivat sujuvasti.

www tarvitsee 'pysyvän', 'pienen viiveen' yhteyden, joka tukee asiakkaan ja/tai palvelimen käynnistämiä tapahtumia! Ja juuri sitä WebSockets tarjoaa, ja DONOFF-laiteohjelmisto hyödyntää tätä toimintoa laajasti.

Miten WebSockets toimii

WebSockets ylläpitää yhteyttä asiakkaan ja palvelimen välillä, jota molemmat osapuolet voivat käyttää viestien lähettämiseen toisilleen milloin tahansa.
Asiakas muodostaa WebSocket-yhteyden prosessin kautta, joka tunnetaan nimellä "WebSocket handshake". Prosessi alkaa, kun asiakas lähettää normaalin HTTP-pyynnön palvelimelle. Tämä pyyntö sisältää ns. 'Upgrade header', jonka kautta palvelin tietää, että asiakas haluaa muodostaa WebSocket-yhteyden.
Jos palvelin tukee WebSocket-protokollaa, se hyväksyy päivityksen ja vahvistaa sen asiakkaalle palauttamalla Upgrade-otsikon.
Nyt kun kättelystä on sovittu, siihen asti käytetty HTTP-yhteys korvataan WebSocket-yhteydellä saman alla olevan TCP/IP-yhteyden kautta. Tästä eteenpäin molemmat osapuolet (asiakas ja palvelin) voivat lähettää tietoja toisilleen. Tiedot lähetetään WebSocketin kautta viestinä yhden tai useamman lähetetyn datan (hyötykuorman) sisältävän paketin kautta.

Kuinka DONOFF-laiteohjelmisto toimii

Ennen kuin menen syvemmälle DONOFF-laiteohjelmiston toimintaan, selitän ensin joitain käsitteitä. Mitä tarkoitan:
  • Master - tämä on DONOFF, joka hallitsee omaa paikallista laitettaan ja kaikkia Slave DONOFFeja
  • Slave - tämä on DONOFF, joka ohjaa vain omaa paikallista laitettaan
  • Palvelin – tämä on verkkopalvelin DONOFF-tilassa (joko isäntä- tai orjapalvelin)
  • Asiakas - tämä on selain, joka muodostaa yhteyden DONOFF-verkkopalvelimeen. Se on käyttöliittymä laitteiston ja käyttäjän välillä
  • paikallinen laite – tämä on fyysinen laite, jota jokainen DONOFF (isäntä tai orja) palvelee

Kun DONOFF on kytketty verkkovirtaan, se käynnistää verkkopalvelimen. Jos verkkopalvelimella on URL-osoite, kuten:

"http://hostname.local/"

asiakkaalta palvelin lähettää index.html-sivun asiakkaalle.
Tämä index.html-tiedosto sisältää html-koodin lisäksi myös Javascript-koodin. Javascript-koodi varmistaa, että WebSocket-yhteys muodostetaan verkkopalvelimeen.

Kun tämä yhteys on muodostettu, asiakas lähettää viestin "getDevInfo" palvelimelle, johon se vastaa viestillä, joka sisältää tämän DONOFFin isäntänimen, minkä tyyppinen DONOFF tämä on (Master tai Slave) ja mikä laiteohjelmisto on käynnissä DONOFF.
Asiakas lähettää sitten viestin, jossa kysytään DOM:n uusinta versiota ("updateDOM"). Palvelin rakentaa nyt DOM:n, joka sisältää sen paikallisen laitteen (jos se on isäntä, kaikista muista tiedoistaan DONOFF-laitteista) ja lähettää sen takaisin asiakkaalle.

Tästä eteenpäin kaikki viestintä asiakkaan ja palvelimen välillä on tapahtumalähtöistä. Jos käyttäjä siirtää liukusäädintä näytöllä, asiakas huomaa tämän ja lähettää uuden liukusäätimen arvon palvelimelle, joka puolestaan säätää paikallisen laitteensa voimakkuutta. Kun käyttäjä napsauttaa On/Off-painiketta, asiakas lähettää uuden tilan palvelimelle, joka sitten suorittaa tarvittavat toimenpiteet käyttäjän pyynnön täyttämiseksi.

On kuitenkin jotain muuta, joka laukeaa, kun laitteen tila muuttuu:
  • Jos DONOFF on orja, se lähettää HTTP-pyynnön DONOFF-isännälle paikallisen laitteensa uudella tilalla. Pääpalvelin käsittelee nämä tiedot ja (isäntä)palvelin lähettää tämän uuden tilan asiakkaalleen. Joten jos siirrät liukusäädintä Slave-laitteessa, uusi liukusäätimen sijainti näkyy myös isäntäkoneeseen yhdistetyssä asiakkaassa.
  • Jos DONOFF on isäntä, eikä se ole sen paikallisen laitteen muutos, niin isäntä lähettää HTTP-pyynnön DONOFF-orjalle orjalaitteen uudella tilalla, joka vuorostaan muuttaa paikallisen laitteensa. ja (orja)palvelin lähettää uuden tilan asiakkaalleen, joka sitten päivittää selaimen. Lyhyesti sanottuna jokainen muutos Master-asiakkaassa näkyy myös Slave-asiakkaassa.

Jos isäntä vastaanottaa HTTP-pyynnön orjasta, jota se ei vielä tunne, se sisällyttää uudet orjatiedot laiteluetteloonsa ja rakentaa uuden DOM:n. Sen jälkeen se lähettää päivitetyn DOM:n (jossa on uusi laite) asiakkaalleen. Uusi laite näkyy sitten selaimessa.
Nämä tiedot lähetetään HTTP-pyynnössä:
IP-osoite // tämän DONOFF-tarran yksilöllinen tunniste // kuten näytössä näkyy Tyyppi // onko tämä D)immer vai S)kytkin minState // mikä on pienin PWM-arvo, joka voidaan asettaa maxState // mikä on suurin PWM-arvo, joka voidaan asettaa Tila // mikä on nykyinen PWM-arvo OnOff // sykkiikö lamppu päällä vai pois // milloin tämä DONOFF nähtiin viimeksi?

Ajoittain jokainen Slave lähettää HTTP-pyynnön isännälle ilmoittaakseen, että se on edelleen online-tilassa. Joka kerta kun isäntä vastaanottaa HTTP-pyynnön, se nollaa orjan sydämenlyönnin. Jos sykearvo ylittää tietyn rajan, Master päättelee, että Slave ei ole enää online-tilassa ja poistaa tämän Slaven tiedot laiteluettelostaan, rakentaa uuden DOM:n ja lähettää sen asiakkaalleen.

Multicast Domain Name System

DONOFF-laiteohjelmisto hyödyntää laajasti Multicast Domain Name Systemin (mDNS) toimintoja. Pienissä (paikallisissa) tietokoneverkoissa mDNS-protokolla muuttaa isäntänimet IP-osoitteiksi. Se on niin kutsuttu nollakonfigurointipalvelu. Tämän protokollan ansiosta on mahdollista päästä palvelimeen tai muuhun laitteeseen käyttämällä sen mDNS-nimeä (isäntänimeä) IP-osoitteen sijaan. Toisin sanoen, jos kirjoitat selaimen URL-osoitteeksi "DONOFF.local", mDNS etsii DONOFF-laitteen IP-osoitteen ja näyttää DONOFF-isäntälaitteen (tai orjan) verkkosivun.
Slaven DONOFF-laiteohjelmisto käyttää tätä DONOFF-isäntälaitteen IP-osoitteen etsimiseen ja IP-osoitteen muutosten seuraamiseen. DONOFF ei käytä kiinteitä IP-osoitteita, joten ajoittain DONOFF Masterin IP-osoite saattaa muuttua. Vaikka mDNS "toimii" useimmissa verkoissa, on olemassa joitakin (vanhoja) WiFi-reitittimiä ja WiFi-laajennuksia, jotka estävät mDNS-paketit. Jos et pääse käsiksi DONOFFiin sen isäntänimellä (.local), sinun on luultavasti päivitettävä reitittimesi ja/tai laajentimesi tai käytettävä vain IP-osoitteita.

POISTA HTML ja CSS

En ole sankari verkkosivujen suunnittelun ja ulkoasun suhteen. Tästä syystä DONOFF-käyttöliittymä on melko yksinkertainen. Olen käyttänyt vain CSS:ää, jonka ymmärrän, enkä ole käyttänyt mitään hienoja kirjastoja, kuten bootstrap. Koska käytetyt html ja css ovat niin yksinkertaisia, voit muokata käyttöliittymää mieleiseksesi (ja lähetä minulle kuvakaappauksia tekemistäsi)!
Tämänhetkinen sivu 9. Laiteohjelmisto 1. Johdanto 2. Projektin tavoitteet 3. Elektroniikka 4. Verkko AC DC 5. MOSFET-ohjauspiiri 6. optoerotinpiiri 7. ESP8266 mikroprosessori 8. 3v3 DC virtalähde 9. Laiteohjelmisto 10. Lataa laiteohjelmisto 11. Ensimmäinen käynnistyskerta 12. telnet-palvelin 13. rakentaa DONOFF lähettänyt Verkkosivusto Willem Aandewiel (1955) on tausta elektroniikasta ja digitaalitekniikasta. Suurimman osan työelämästään hän on kuitenkin työskennellyt automaation parissa, jossa hän on työskennellyt lähes kaikilla aloilla ohjelmoijasta projektijohtajaan ja projektipäälliköön. Willem oli yksi ensimmäisistä hollantilaisista, joilla oli mikrotietokone (KIM-1, 1976) aikana, jolloin PC:tä ei ollut vielä keksitty. Nykyään hän keskittyy pääasiassa pienten mikroprosessoreilla varustettujen elektronisten piirien suunnitteluun ja tuotantoon. Hänen "elämäntehtävänsä" on saada ihmiset innostumaan omien elektronisten piirien, mikrotietokoneiden ja ohjelmoinnin tekemisestä.

Kommentit

Webwinkelkeur Kiyoh Trustpilot Opencircuit