1
+ /*
2
+ * If you encounter any issues:
3
+ * - check the readme.md at https://github.com/sinricpro/esp8266-esp32-sdk/blob/master/README.md
4
+ * - ensure all dependent libraries are installed
5
+ * - see https://github.com/sinricpro/esp8266-esp32-sdk/blob/master/README.md#arduinoide
6
+ * - see https://github.com/sinricpro/esp8266-esp32-sdk/blob/master/README.md#dependencies
7
+ * - open serial monitor and check whats happening
8
+ * - check full user documentation at https://sinricpro.github.io/esp8266-esp32-sdk
9
+ * - visit https://github.com/sinricpro/esp8266-esp32-sdk/issues and check for existing issues or open a new one
10
+ */
11
+
12
+ // Uncomment the following line to enable serial debug output
13
+ // #define ENABLE_DEBUG
14
+
15
+ #ifdef ENABLE_DEBUG
16
+ #define DEBUG_ESP_PORT Serial
17
+ #define NODEBUG_WEBSOCKETS
18
+ #define NDEBUG
19
+ #endif
20
+
21
+ #include < Arduino.h>
22
+ #ifdef ESP8266
23
+ #include < ESP8266WiFi.h>
24
+ #endif
25
+ #ifdef ESP32
26
+ #include < WiFi.h>
27
+ #endif
28
+
29
+ #define FASTLED_ESP8266_DMA
30
+ #define FASTLED_ESP8266_RAW_PIN_ORDER
31
+ #include < FastLED.h>
32
+
33
+ #include " SinricPro.h"
34
+ #include " SinricProLight.h"
35
+
36
+ #define WIFI_SSID " YOUR-WIFI-SSID"
37
+ #define WIFI_PASS " YOUR-WIFI-PASSWORD"
38
+ #define APP_KEY " YOUR-APP-KEY" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"
39
+ #define APP_SECRET " YOUR-APP-SECRET" // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
40
+ #define LIGHT_ID " YOUR-DEVICE-ID" // Should look like "5dc1564130xxxxxxxxxxxxxx"
41
+ #define BAUD_RATE 9600 // Change baudrate to your need
42
+
43
+ #define NUM_LEDS 1 // how much LEDs are on the stripe
44
+ #define LED_PIN 3 // LED stripe is connected to PIN 3
45
+
46
+ bool powerState;
47
+ int globalBrightness = 100 ;
48
+ CRGB leds[NUM_LEDS];
49
+
50
+ bool onPowerState (const String &deviceId, bool &state) {
51
+ powerState = state;
52
+ if (state) {
53
+ FastLED.setBrightness (map (globalBrightness, 0 , 100 , 0 , 255 ));
54
+ } else {
55
+ FastLED.setBrightness (0 );
56
+ }
57
+ FastLED.show ();
58
+ return true ; // request handled properly
59
+ }
60
+
61
+ bool onBrightness (const String &deviceId, int &brightness) {
62
+ globalBrightness = brightness;
63
+ FastLED.setBrightness (map (brightness, 0 , 100 , 0 , 255 ));
64
+ FastLED.show ();
65
+ return true ;
66
+ }
67
+
68
+ bool onAdjustBrightness (const String &deviceId, int brightnessDelta) {
69
+ globalBrightness += brightnessDelta;
70
+ brightnessDelta = globalBrightness;
71
+ FastLED.setBrightness (map (globalBrightness, 0 , 100 , 0 , 255 ));
72
+ FastLED.show ();
73
+ return true ;
74
+ }
75
+
76
+ bool onColor (const String &deviceId, byte &r, byte &g, byte &b) {
77
+ fill_solid (leds, NUM_LEDS, CRGB (r, g, b));
78
+ FastLED.show ();
79
+ return true ;
80
+ }
81
+
82
+ void setupFastLED () {
83
+ FastLED.addLeds <WS2812B, LED_PIN, RGB>(leds, NUM_LEDS);
84
+ FastLED.setBrightness (map (globalBrightness, 0 , 100 , 0 , 255 ));
85
+ fill_solid (leds, NUM_LEDS, CRGB::White);
86
+ FastLED.show ();
87
+ }
88
+
89
+ void setupWiFi () {
90
+ Serial.printf (" \r\n [Wifi]: Connecting" );
91
+ WiFi.begin (WIFI_SSID, WIFI_PASS);
92
+
93
+ while (WiFi.status () != WL_CONNECTED) {
94
+ Serial.printf (" ." );
95
+ delay (250 );
96
+ }
97
+ IPAddress localIP = WiFi.localIP ();
98
+ Serial.printf (" connected!\r\n [WiFi]: IP-Address is %s\r\n " , localIP.toString ().c_str ());
99
+ }
100
+
101
+ void setupSinricPro () {
102
+ // get a new Light device from SinricPro
103
+ SinricProLight &myLight = SinricPro[LIGHT_ID];
104
+
105
+ // set callback function to device
106
+ myLight.onPowerState (onPowerState);
107
+ myLight.onBrightness (onBrightness);
108
+ myLight.onAdjustBrightness (onAdjustBrightness);
109
+ myLight.onColor (onColor);
110
+
111
+ // setup SinricPro
112
+ SinricPro.onConnected ([](){ Serial.printf (" Connected to SinricPro\r\n " ); });
113
+ SinricPro.onDisconnected ([](){ Serial.printf (" Disconnected from SinricPro\r\n " ); });
114
+ SinricPro.restoreDeviceStates (true );
115
+ SinricPro.begin (APP_KEY, APP_SECRET);
116
+ }
117
+
118
+ // main setup function
119
+ void setup () {
120
+ Serial.begin (BAUD_RATE); Serial.printf (" \r\n\r\n " );
121
+ setupFastLED ();
122
+ setupWiFi ();
123
+ setupSinricPro ();
124
+ }
125
+
126
+ void loop () {
127
+ SinricPro.handle ();
128
+ }
0 commit comments