Բովանդակություն:

Hue Magic: 4 քայլ (նկարներով)
Hue Magic: 4 քայլ (նկարներով)

Video: Hue Magic: 4 քայլ (նկարներով)

Video: Hue Magic: 4 քայլ (նկարներով)
Video: Coldplay - Hymn For The Weekend (Official Video) 2024, Սեպտեմբեր
Anonim
Image
Image

Բարի գալուստ հրաշագործներ:

Մի քանի ամիս առաջ ես փոքրիկ կախարդական տուփ ստեղծեցի գավազանով իմ 3 տարեկան որդու համար: Երբ գավազանով դիպչում է արկղին, արկղից կսկսի ճառագայթել փոփոխվող գույնի լույս: Երբ նա տեսնում է այն գույնը, որն իրեն հատկապես դուր է գալիս, նա կարող է գավազանն ուղղել դեպի սեղանի լամպը (ներսից ՝ Philips Hue լամպով), կախարդել, և տուփի գույնը կախարդական կերպով ցատկել է դեպի լամպը: Տուփից լամպն ու լույսը հանկարծ նույն գույնի են…

Մի քանի վայրկյան անց գույնը մարում է, և սեղանի լամպը հմայքից առաջ վերադառնում է իր վիճակին: Մինչև նոր հմայքը գցելը…

Քայլ 1: Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար

Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար
Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար
Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար
Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար
Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար
Այն, ինչ ձեզ հարկավոր է այս նախագիծը ստեղծելու համար

Այս նախագիծը ստեղծելու համար ձեզ հարկավոր են հետևյալ նյութերը.

    • 1 (կամ ավելի) Philips Hue գունավոր լամպ և Hue Bridge
    • 1 Wemos D1 մինի կամ համանման esp8266 միկրոկոնտրոլեր
    • 1 (Arduino) հպման տվիչ (օրինակ ՝ TTP223R)
    • 1 (Arduino) վայրկենական կոճակ
    • 1 10uF կոնդենսատոր
    • 1 RGB led (ընդհանուր անոդի տեսակը)
    • 5 դիմադրություն (10, 22 և 47 Օմ, 2x 10 Կ Օմ)
    • 2 փոքր նախատիպային PCB (2x3 դյույմ կամ մոտ 5x7 սմ պետք է լինեն բավականաչափ մեծ)
    • որոշ (jumper) լարեր
    • զոդող երկաթ
    • կախարդական փայտիկ (կարելի է գնել որպես պատրաստ խաղալիքների խանութում, կամ կարող եք ինքներդ պատրաստել)
    • ստվարաթղթից կամ փայտից պատրաստված փոքր տուփ (կարող է լինել արդեն գոյություն ունեցող տուփ, բայց իհարկե կարող եք նաև զրոյից տուփ կառուցել)
    • ինչ -որ ժապավեն
    • որոշ սոսինձ և/կամ ընկույզներ և պտուտակներ `տուփի մեջ PCB- ները ամրացնելու համար:
    • ըստ ցանկության ՝ փաթեթավորման թուղթ տուփի համար

Նշում. Շրջանակային սխեմաներ կարդալու մի փոքր փորձառություն օգտակար է այս ուսանելի միջոցով անցնելիս: Իմ դիագրամը չափազանց բարդ չէ. Եթե կարողանաք տարբերակել կոնդենսատորը ռեզիստորից, հավանաբար լավ կլինեք:

Arduino IDE- ի միջոցով Arduino ծրագրավորման որոշ փորձեր նույնպես օգտակար են: Ավելի շուտ հիմնական փորձը պետք է բավական լինի, քանի որ ես ձեզ կտրամադրեմ ամբողջական կոդը ՝ պատճենելու/տեղադրելու համար: Այնուամենայնիվ, դուք պետք է մի քանի բան հարմարեցնեք, որպեսզի այն գործի դնի ձեր հատուկ կառուցվածքում (օրինակ ՝ ձեր ցանցի կարգավորումները և որոշ մանրամասներ ձեր Hue կազմաձևից): Եթե սա մի փոքր վախեցնող է հնչում, մի անհանգստացեք, ես կօգնեմ ձեզ ստանալ անհրաժեշտ բոլոր տեղեկությունները:

Քայլ 2: Տուփ և գավազան

Տուփը և գավազանը
Տուփը և գավազանը
Տուփը և գավազանը
Տուփը և գավազանը

Սովորաբար առաջին քայլերն ամենադժվարն են, բայց ոչ այս խրատականում: Հեշտ մեկնարկի համար պարզապես կարող եք կախարդական փայտիկ գնել խաղալիքների խանութից, իսկ տուփի համար պարզապես կարող եք նորից օգտագործել գոյություն ունեցող փոքր տուփը, որի շուրջ արդեն պառկած եք: Պարզապես համոզվեք, որ տուփը մետաղից չէ, քանի որ դա արգելափակելու է wifi ազդանշանները, և դրանք մեզ անհրաժեշտ են կախարդության համար;-):

Երբ դուք նորից նպատակ եք դնում գոյություն ունեցող տուփի վրա, միակ բանը, որ դուք պետք է անեք, տուփի վերևում երկու անցք անելն է `1 փոքր անցք (չափս 5 մմ = 0.2") RGB լուսադիոդի համար և ավելի մեծ անցք (մոտ 12- 14 մմ կամ մոտ 0.5 ") հպման տվիչի համար:

Անցքերի ճշգրիտ տեղադրումը կարևոր չէ, պարզապես դրանք տեղադրեք ըստ ձեր գեղագիտական զգացողության, բայց մի քանի բան հիշեք.

  • Երկու անցքերի միջև որոշակի հեռավորություն պահեք `համոզվելու համար, որ անցքերի տակ տեղադրված բաղադրիչները (RGB լուսարձակը և հպման տվիչը) երկուսն էլ թույլատրված են բավականաչափ տարածք զբաղեցնել մոնտաժման և լարերի տեղադրման համար:
  • Ամենամեծ անցքը հպման տվիչի համար է: Այս սենսորը տեղադրվելու է անցքի տակ, այնպես, որ գավազանը կարող է դիպչել (և նույնիսկ մի փոքր սեղմել): Այսպիսով, համոզվեք, որ ձեր գնած գավազանը չափազանց հաստ չէ:

Ptionանկության դեպքում դուք կարող եք օգտագործել (լակի) ներկ կամ փաթեթավորման թուղթ և պլաստմասե ծածկույթ `ձեր տուփը մի փոքր ավելի գեղեցիկ դարձնելու և այն սննդի արտահոսքից և կեղտոտ ձեռքերից պաշտպանելու համար:

Եթե այս առաջին քայլը ձեր ցանկությամբ մի փոքր չափազանց ամբիցիոզ է, ապա շարունակեք և ստեղծեք տուփ և ամբողջովին զրոյից գավազան: Կան մի քանի հրահանգներ, որոնք կօգնեն ձեզ ստեղծել գեղեցիկ գավազան

Ինչ ճանապարհ էլ որ ընտրեք, այժմ ժամանակն է ուսումնասիրել տուփի ներսը:

Քայլ 3: Ներքին սարքավորումները

Ներքին սարքավորումները
Ներքին սարքավորումները
Ներքին սարքավորումները
Ներքին սարքավորումները
Ներքին սարքավորումները
Ներքին սարքավորումները

Օգտագործեք եռակցման երկաթ `էլեկտրոնային բաղադրիչները միացնելու համար` վերը նշված սխեմայի համաձայն: Կան մի քանի բաների, որոնց պետք է հատուկ ուշադրություն դարձնել.

  • Wemos D1 Mini- ի և RGB led- ի միջև լարերը պետք է բավական երկար լինեն, որպեսզի RGB led- ը տեղադրվի տուփի կափարիչում ձեր արած փոսում:
  • Նույնը հաշվարկվում է վայրկենական անջատիչին և հպման տվիչին ամրացված լարերի համար, քանի որ դրանք պետք է հասանելի լինեն կափարիչի մյուս անցքից:
  • Անմիջական անջատիչի կոճակը պետք է սոսնձված լինի հպման տվիչի ներքևի մասում (ոչ զգայուն կողմը) այնպես, որ կարողանաք կոճակը հետ դնել վայրկենական անջատիչի վրա ՝ վերևում սոսնձված սենսորով (տես նկարը): Հպման տվիչը տեղադրված է պահի անջատիչի վերևում ՝ մատով կատարված կոճակների սեղմումները հայտնաբերելու համար, որի դեպքում կոճակի սեղմումը անտեսվելու է: Միայն այն ժամանակ, երբ կոճակը սեղմվում է կախարդական փայտիկով (որը պետք է լինի ոչ հաղորդիչ, այնպես որ պլաստմասսան և փայտը լավ են), կախարդական ցիկլը կսկսվի:
  • Տեղադրեք պահի կոճակը հպման տվիչով վերևում ՝ կափարիչի անցքից ոչ շատ խորը, քանի որ կախարդական փայտիկը պետք է այն հասանելի դարձնի ՝ կախարդությունը շարժման մեջ դնելու համար:
  • Համակցեք կոնդենսատորի բևեռականությունը այն զոդելիս: Եթե դուք հակադարձեք դրական և բացասական հաղորդումները, ապա կոնդենսատորը, ամենայն հավանականությամբ, մի քանի կախարդական ծուխ կթողնի և ձեր շղթան կդնի հավիտենական քնի մեջ:
  • Սոսինձ կպցրեք, կպցրեք և կամ պտուտակավորեք մարտկոցի ամրակն ու PCB (ներ) ը տեղում: Պարտադիր չէ, որ այն կոկիկ լինի, քանի որ այն տեսադաշտում չի լինի: Այն պետք է ուղղակի ապացույց լինի:

Անցեք ծրագրակազմին:

Քայլ 4: Theրագրակազմ

Համոզվեք, որ ունեք Arduino ծրագրաշարի վերջին (անվճար) խմբագիրը, որը կարելի է ներբեռնել https://www.arduino.cc/hy/Main/Software կայքից: Wemos D1 mini- ի և ESP8266- ի վրա հիմնված այլ տախտակների համար աջակցություն ավելացնելու համար կատարեք հետևյալ քայլերը.

  • Տեղադրվելուց հետո գործարկեք Arduino ծրագիրը և բացեք «Նախապատվություններ» պատուհանը:
  • Մուտքագրեք https://arduino.esp8266.com/stable/package_esp8266com_index.json «Տախտակի կառավարչի լրացուցիչ հասցեներ» դաշտում: Կարող եք ավելացնել բազմաթիվ հասցեներ ՝ դրանք ստորակետերով առանձնացնելով:
  • Բացեք Տախտակների կառավարիչը Գործիքներ> Տախտակի ընտրացանկից և տեղադրեք esp8266 պլատֆորմը (և մի մոռացեք, որ տեղադրելուց հետո ընտրեք ձեր ESP8266 տախտակը Գործիքներ> Տախտակի ընտրացանկից: "LOLIN (WEMOS) D1 R2 & mini" - ն ամենալավն է աշխատում Wemos D1 mini v2 և v3 համար: տախտակներ:

Եթե Arduino- ի տեղադրման և վարորդների տեղադրման համար ավելի շատ օգնության կարիք ունեք, կարող եք նայել

Arduino խմբագրիչում բացեք նոր ֆայլ (Պատկեր> Նոր) և պատճենեք/տեղադրեք ներքևի ծածկագիրը հենց բացված պատուհանում: Պարզապես վերաշարադրեք այն տողերը, որոնք արդեն առկա են նոր պատուհանում (դատարկ կարգավորում և դատարկ հանգույց):

Այժմ դուք գրեթե պատրաստ եք, բայց դուք պետք է հարմարեցնեք կոդի մի քանի կտոր ձեր հատուկ կազմաձևի համար:

Առաջին բանը, որ պետք է անել, 34 -րդ տողում ip հասցեն փոխելն է (Arduino խմբագրում կոդի տողերը համարակալված են) ձեր Hue կամրջի ip հասցեով: Եթե չգիտեք ձեր Hue Bridge IP հասցեն, այցելեք https://discovery.meethue.com/ և ճիշտ IP հասցեն այն անմիջապես կհայտնվի ձեր դիտարկիչում: IP հասցեն կետավոր համարն է, որին նախորդում է «interioripaddress»:

Hue լույսերի հետ հաղորդակցվելու համար դուք պետք է ստեղծեք Hue API օգտվող Wemos D1 mini- ի համար, որպեսզի Wemos- ը Hue API- ի միջոցով կարողանա հաղորդակցվել Hue լույսին: Դա անելու համար հետևեք https://developers.meethue.com/develop/get-started-2/ հրահանգներին և պատճենեք/տեղադրեք գեներացված (բավականին երկար) օգտվողի անունը Arduino կոդի պատուհանում: Պարզապես փոխարինեք յուրաքանչյուր «YOUR HUE API USERNAME» - ը գեներացված API օգտվողի անունով:

Այնուհետեւ գույնը փոխելու համար անհրաժեշտ է ընտրել ճիշտ Hue լույսը: Hue API- ում յուրաքանչյուր լույս ունի մի շարք, այնպես որ դուք պետք է պարզեք այն համարը, որը համապատասխանում է այն լույսին, որը ցանկանում եք օգտագործել այս նախագծի համար: Android- ի կամ iOS- ի համար Hue Viewer հավելվածի ներբեռնումը ամենահեշտ ձևերից մեկն է ՝ պարզելու, թե որ համարն ունի որոշակի լույս: Arduino կոդի պատուհանում ամենուրեք փոխարինեք «ՔՈ ԼՈTՅՍ ԹԻՎ» տեքստը ճիշտ համարով:

Վերջին բանը, որ պետք է անել, Wemos- ի կարգավորումն է `ձեր wifi ցանցին միանալու համար: Դա արվում է ՝ ծածկագիրը վերբեռնելով Wemos և ձեր նոութբուքի վրա ՝ անցնելով մեկ այլ wifi ցանց ՝ «AutoConnectAP» - ին: Այնուհետև ձեր դիտարկիչը կցուցադրի մի էջ, որտեղ կարող եք ավելացնել ձեր wifi ցանցի SSID- ը (անունը) և գաղտնաբառը, որը Wemos վերահսկիչը կօգտագործի ձեր wifi ցանցին (և Hue կամուրջին) միանալու համար:

Նկ. Ձեր հարթակի (Windows, Mac) վարորդը կարող եք ներբեռնել

Այժմ դուք պատրաստ եք փորձարկել ձեր ստեղծագործությունը:

// ESP8266 Hue Magic Wand // Richard van Kampen - 2018 // Այս կոդը փորձարկվում է Wemos D1 mini- ի վրա, բայց հավանաբար կաշխատի նաև ESP8266- ի վրա հիմնված այլ զարգացման տախտակների վրա // Wemos D1 mini- ի և այլ ESP8266 տախտակների համար աջակցություն ավելացնելու համար: Arduino խմբագրին կատարեք հետևյալ քայլերը. // - Գործարկեք Arduino- ն և բացեք «Նախապատվություններ» պատուհանը: // - Մուտքագրեք https://arduino.esp8266.com/stable/package_esp8266com_index.json Լրացուցիչ խորհրդի մենեջերների URL դաշտը: Կարող եք ավելացնել բազմաթիվ հասցեներ ՝ դրանք ստորակետերով առանձնացնելով: // - Բացեք Տախտակների կառավարիչը Գործիքներ> Տախտակի ընտրացանկից և տեղադրեք esp8266 պլատֆորմը (և մի մոռացեք, որ տեղադրելուց հետո ընտրեք ձեր ESP8266 խորհուրդը Գործիքներ> Տախտակի ընտրացանկից): // օգտագործված գրադարաններ. դեռ սահմանված չէ: #ներառել «ESP8266WebServer.h» // Տեղական վեբ սերվերը ծառայում էր WiFiManager կազմաձևման պորտալին #ներառել «WiFiManager.h» // WiFi կազմաձևման կախարդական գրադարանը, եթե դեռ տեղադրված չէ, ապա դիմեք https://github.com/tzapu/WiFiManager #install-through-library-manager #include "RestClient.h" // https://github.com/fabianofranca/ESP8266RestClient, անհրաժեշտ է Philips Hue API- ի օգտագործման համար (տես https://developers.meethue.com/develop/ երանգ-ապի/): #ներառել «ArduinoJson.h» // https://github.com/bblanchon/ArduinoJson, անհրաժեշտ է վերլուծել Hue API- ի պատասխանը, խնդրում ենք տեղադրել 5.x տարբերակը Arduino- ի գրադարանի մենեջերի միջոցով (մենյու «Էսքիզ»> Ներառել գրադարանը> Կառավարել Գրադարաններ> որոնել ArduinoJson- ը և փոխել տարբերակը վերջին 5.x): Տարբերակ 6 -ը (ներկայումս բետա փուլում է) սխալ է թողնում: // փոփոխականներ և init: Լարային պատասխան; const int redPin = 13; // Wemos- ում սա d7 const int greenPin = 12; // Wemos- ում սա d6 const int bluePin = 14; // Wemos- ում սա d5 const int touchSensor = 5; // Wemos- ում սա is d1 const int activationPin = 4; // Wemos- ում սա d2 bool ակտիվացում է = HIGH; bool touch = LOW; const char* aan_restore; int bri_restore; կրկնակի x_restore; կրկնակի y_restore; կրկնակի x_magic; կրկնակի y_magic; bool first = true; անստորագիր երկար մեկնարկ Միլիս; անստորագիր երկար ընթացիկ Միլիս; անստորագիր երկարաժամկետ Միլիս; RestClient client = RestClient ("192.168.178.23"); // «ձեր Hue Bridge IP հասցեն» // Եթե չգիտեք ձեր Hue Bridge IP հասցեն, այցելեք https://discovery.meethue.com և այն անմիջապես կհայտնվի ձեր դիտարկիչում: IP հասցեն այն կետավոր համարն է, որին նախորդում է «interioripaddress» void setup () {analogWriteRange (255); Serial.begin (9600); // Սկսեք անջատված LED- ով: pinMode (ակտիվացման PIN, INPUT_PULLUP); pinMode (touchSensor, INPUT); startMillis = millis (); checkWand (); } void loop () {// ոչինչ անել այստեղ, դատարկ թողեք…} void checkWand () {int rgbColour [3]; // GBեյմս Հարթոնի RGB գույնի կոդը, https://gist.github.com/jamesotron/766994 // Սկսեք կարմիրով: rgbColour [0] = 255; rgbColour [1] = 0; rgbColour [2] = 0; ակտիվացում = digitalRead (activationPin); // LOW նշանակում է, որ օգտագործվում է գավազան: touch = digitalRead (touchSensor); // HIGH նշանակում է, որ մատը օգտագործվում է գավազանի փոխարեն, ինչը չպետք է լինի: while (ակտիվացում == LOW && touch == LOW) {// Ընտրեք ավելացման և նվազման գույները: համար (int decColour = 0; decColour <3; decColour += 1) {int incColour = decColour == 2? 0: decColour + 1; // = երրորդ օպերատոր, նշանակում է ՝ int incColour; if (decColour == 2) {incColour = 0;} else {incColour = decColour +1;} // խաչաձև մարում է երկու գույները: համար (int i = 0; i <255; i += 1) {rgbColour [decColour] -= 1; rgbColour [incColour] += 1; // քանի որ մեր RGB led- ը կաթոդի փոխարեն ունի ընդհանուր անոդ (այնպես որ մենք պետք է միանանք +3.3 Վ -ին գետնի փոխարեն), մեզ անհրաժեշտ են հակադարձ արժեքներ RGB- ի համար. int red = 255 - rgbColour [0]; int կանաչ = 255 - rgb Գունավոր [1]; int կապույտ = 255 - rgb Գունավոր [2]; analogWrite (redPin, կարմիր); analogWrite (greenPin, կանաչ); analogWrite (bluePin, կապույտ); ուշացում (8); ակտիվացում = digitalRead (activationPin); if (ակտիվացում == HIGH) {// HIGH նշանակում է, որ գավազանը բարձրացված է: goto stopColorCycling; }}}} stopColorCycling: currentMillis = millis (); durationMillis = (ընթացիկMillis - startMillis); if (durationMillis> 1000) {RGBtoxy (rgbColour [0], rgbColour [1], rgbColour [2]); } else {// տեղադրել Wemos- ը քնի ռեժիմ ՝ ESP.deepSleep (0); }} void RGBtoxy (int կարմիր, int կանաչ, int blue) {// տե՛ս https://developers.meethue.com/documentation/color-conversions-rgb-xy կրկնակի R = քարտեզ (կարմիր, 0, 255, 0, 1000); R /= 1000; կրկնակի G = քարտեզ (կանաչ, 0, 255, 0, 1000); G /= 1000; կրկնակի B = քարտեզ (կապույտ, 0, 255, 0, 1000); B /= 1000; R = (R> 0.04045f)? ուժ ((R + 0.055f) / (1.0f + 0.055f), 2.4f): (R / 12.92f); G = (G> 0.04045f)? ուժ ((G + 0.055f) / (1.0f + 0.055f), 2.4f): (G / 12.92f); B = (B> 0.04045f)? ուժ ((B + 0.055f) / (1.0f + 0.055f), 2.4f): (B / 12.92f); կրկնակի X = R * 0.649926f + G * 0.103455f + B * 0.197109f; կրկնակի Y = R * 0.234327f + G * 0.743075f + B * 0.022598f; կրկնակի Z = R * 0.0000000f + G * 0.053077f + B * 1.035763f; կրկնակի x = X / (X + Y + Z); կրկնակի y = Y / (X + Y + Z); // փոխակերպումը լիովին ավարտված չէ, բայց հավանաբար բավականաչափ լավ է այն բանի համար, ինչին մենք ցանկանում ենք հասնել, այնպես որ թողեք այն դրանով և ուղարկեք XY արժեքներ լամպին ՝ sendtoHue (x, y); } void sendtoHue (կրկնակի a, կրկնակի բ) {// իրական գույնի փոփոխություն գավազանի մոգությունից, եթե (առաջին) {// առաջին անցում. ստացեք լամպի ընթացիկ վիճակը getCurrentValues (); } // ապա ուղարկեք կախարդական գավազանի գույներ. // սպասեք ուղղագրության. երկար սպասել; x_magic = a; y_magic = b; // լամպը վառվում է կախարդական փայտիկի գույնով. պատասխան = ""; int temp = պատահական (2, 9); const char* վիճակ = "ճշմարիտ"; for (int i = 1; i <= temp; i ++) {// ստեղծել char array ՝ կամրջին ուղարկելու համար. String temp_body1 = "{" on / ":" + String (state) + ", \" bri / ": 220, / "xy \": [" + Լար (x_magic) +", " + Լար (y_magic) +"], / "անցման ժամանակ \": 1} "; int str_len1 = temp_body1.length () + 1; char post_body1 [str_len1]; temp_body1.toCharArray (post_body1, str_len1); // այժմ մենք ունենք post_body1 որպես char զանգված; // հանգստանալու զանգ. int statusCodePut1 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body1, & reply); սպասել = պատահական (100, 600); ուշացում (սպասել); եթե (վիճակ == "ճշմարիտ") {վիճակ = "կեղծ"; } else {state = "true"; }} // նվազեցնել պայծառությունը …: պատասխան = ""; temp = պատահական (4, 17); // ստեղծել char զանգված ՝ կամրջին ուղարկելու համար. int str_len2 = temp_body2.length () + 1; char post_body2 [str_len2]; temp_body2.toCharArray (post_body2, str_len2); // այժմ մենք ունենք post_body2 որպես char զանգված; // հանգստանալ սպասել = պատահական (1000, 2500); ուշացում (սպասել); //.. և նորից պայծառացրեք. պատասխան = ""; temp = պատահական (4, 17); // ստեղծել char զանգված ՝ կամրջին ուղարկելու համար. int str_len3 = temp_body3.length () + 1; char post_body3 [str_len3]; temp_body3.toCharArray (post_body3, str_len3); // այժմ մենք ունենք post_body3 որպես char զանգված; // հանգստանալու զանգ. int statusCodePut3 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body3, & reply); սպասել = պատահական (2500, 5000); // սպասել 2-5 վայրկյան ուշացում (սպասել); // և մարել հին արժեքին. պատասխան = ""; // ստեղծեք char զանգված ՝ կամուրջ ուղարկելու համար. String temp_body4 = "{" on / ":" + String (aan_restore) + ", \" bri / ":" + String (bri_restore) + ", \" xy / " ՝ [" + Լար (x_restore) +", " + Լար (y_restore) +"], / "անցման ժամանակ \": " + Լար (20) +"} "; int str_len4 = temp_body4.length () + 1; char post_body4 [str_len4]; temp_body4.toCharArray (post_body4, str_len4); // այժմ մենք ունենք post_body4 որպես char զանգված; // հանգստանալու զանգ. int statusCodePut4 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body4, & reply); ESP.deepSleep (0); // նորից քնել… } unsigned int getCurrentValues () {connectWifi (); // նախ միանալ Wifi պատասխանին = ""; // հանգստանալու զանգ. int statusCodeGet = client.get ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER", & պատասխան); Serial.print ("GET- ից հետո սերվերի կարգավիճակի կոդը"); Serial.println (statusCodeGet); Serial.print ("Արձագանքի մարմին սերվերից."); Serial.println (պատասխան); StaticJsonBuffer jsonBuffer; // sonսոնի արձագանքի վերլուծում // օբյեկտի ծառի արմատը: // // Դա հղում է JsonObject- ին, իսկ իրական բայթերը // jsonBuffer- ի ներսում են ՝ օբյեկտի ծառի մնացած բոլոր հանգույցներով: // Հիշողությունը ազատվում է, երբ jsonBuffer- ը դուրս է գալիս շրջանակից: JsonObject & root = jsonBuffer.parseObject (պատասխան); JsonObject & state = root ["state"]; // Փորձարկեք, եթե վերլուծությունը հաջողվի: եթե (! root.success ()) {Serial.println ("parseObject () ձախողվեց"); } // Բեռնել արժեքները: aan_restore = վիճակ [«միացված»]; Serial.println (aan_restore); bri_restore = վիճակ ["bri"]; x_restore = վիճակ ["xy"] [0]; y_restore = վիճակ ["xy"] [1]; առաջին = կեղծ;} void connectWifi () {// Տեղական ինտիալիզացիա:Երբ իր բիզնեսն ավարտվի, կարիք չկա այն պահել WiFiManager wifiManager- ի շուրջ; // վերականգնել պարամետրերը `փորձարկման համար` //wifiManager.resetSettings (); // սահմանել հետադարձ կապ, որը զանգահարվում է նախորդ WiFi- ին միանալիս ձախողվում է և մտնում Մուտքի կետի ռեժիմ wifiManager.setAPCallback (configModeCallback); // բերում է ssid և pass և փորձում է միանալ // եթե այն չի միանում, այն սկսում է մուտքի կետ նշված անունով // այստեղ «AutoConnectAP» // և անցնում է արգելափակման հանգույցի, որը սպասում է կազմաձևման, եթե (! wifiManager.autoConnect ()) {Serial.println ("չհաջողվեց միանալ և սեղմել ժամանակը"); // վերակայեք և նորից փորձեք, կամ գուցե այն դրեք խորը քուն ESP.reset (); ուշացում (1000); } // եթե այստեղ հասնեք, ապա միացել եք WiFi Serial.println- ին («միացված է … այո:)»); Serial.print («Կապված է ՝»); Serial.println (WiFi. SSID ()); Serial.print («IP հասցե ՝»); Serial.println (WiFi.localIP ()); // Ձեր ESP- ին (Wemos) նշանակված IP հասցե // տպեք ստացված ազդանշանի ուժը. Երկար rssi = WiFi. RSSI (); Serial.print ("ազդանշանի ուժգնություն (RSSI):"); Serial.println (rssi); } void configModeCallback (WiFiManager * myWiFiManager) {Serial.println («Մտել է կազմաձևման ռեժիմ»); Serial.println (WiFi.softAPIP ()); // եթե օգտագործել եք ինքնաբերաբար ստեղծված SSID, տպեք այն Serial.println (myWiFiManager-> getConfigPortalSSID ()); }

Խորհուրդ ենք տալիս: