Blynk example

Dependents:   Blynk_Example_WIZwiki-W7500

Fork of Blynk by Volodymyr Shymanskyy

Committer:
jcm931213
Date:
Mon Aug 14 04:28:21 2017 +0000
Revision:
16:5d8386745e22
W7500 Blynk; (This Program needs to work on socket numbers.; I arbitrarily modified TCPSocket Client.);

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jcm931213 16:5d8386745e22 1 /**
jcm931213 16:5d8386745e22 2 * @file BlynkEthernet.h
jcm931213 16:5d8386745e22 3 * @author Volodymyr Shymanskyy
jcm931213 16:5d8386745e22 4 * @license This project is released under the MIT License (MIT)
jcm931213 16:5d8386745e22 5 * @copyright Copyright (c) 2015 Volodymyr Shymanskyy
jcm931213 16:5d8386745e22 6 * @date Jan 2015
jcm931213 16:5d8386745e22 7 * @brief
jcm931213 16:5d8386745e22 8 *
jcm931213 16:5d8386745e22 9 */
jcm931213 16:5d8386745e22 10
jcm931213 16:5d8386745e22 11 #ifndef BlynkEthernet_h
jcm931213 16:5d8386745e22 12 #define BlynkEthernet_h
jcm931213 16:5d8386745e22 13
jcm931213 16:5d8386745e22 14 #ifndef BLYNK_INFO_CONNECTION
jcm931213 16:5d8386745e22 15 #define BLYNK_INFO_CONNECTION "W5000"
jcm931213 16:5d8386745e22 16 #endif
jcm931213 16:5d8386745e22 17
jcm931213 16:5d8386745e22 18 #include <EthernetInterface.h>
jcm931213 16:5d8386745e22 19 #include <BlynkApiMbed.h>
jcm931213 16:5d8386745e22 20 #include <Blynk/BlynkProtocol.h>
jcm931213 16:5d8386745e22 21 #include <Adapters/BlynkMbedClient.h>
jcm931213 16:5d8386745e22 22
jcm931213 16:5d8386745e22 23 EthernetInterface eth;
jcm931213 16:5d8386745e22 24
jcm931213 16:5d8386745e22 25 class BlynkEthernet
jcm931213 16:5d8386745e22 26 : public BlynkProtocol<BlynkMbedClient>
jcm931213 16:5d8386745e22 27 {
jcm931213 16:5d8386745e22 28 typedef BlynkProtocol<BlynkMbedClient> Base;
jcm931213 16:5d8386745e22 29 public:
jcm931213 16:5d8386745e22 30 BlynkEthernet(BlynkMbedClient& transp)
jcm931213 16:5d8386745e22 31 : Base(transp)
jcm931213 16:5d8386745e22 32 {}
jcm931213 16:5d8386745e22 33
jcm931213 16:5d8386745e22 34 void config(const char* auth,
jcm931213 16:5d8386745e22 35 const char* domain = BLYNK_DEFAULT_DOMAIN,
jcm931213 16:5d8386745e22 36 uint16_t port = BLYNK_DEFAULT_PORT)
jcm931213 16:5d8386745e22 37 {
jcm931213 16:5d8386745e22 38 Base::begin(auth);
jcm931213 16:5d8386745e22 39 this->conn.begin(domain, port);
jcm931213 16:5d8386745e22 40 }
jcm931213 16:5d8386745e22 41
jcm931213 16:5d8386745e22 42 void config(const char* auth,
jcm931213 16:5d8386745e22 43 char* ip,
jcm931213 16:5d8386745e22 44 uint16_t port = BLYNK_DEFAULT_PORT)
jcm931213 16:5d8386745e22 45 {
jcm931213 16:5d8386745e22 46 Base::begin(auth);
jcm931213 16:5d8386745e22 47 this->conn.begin(ip, port);
jcm931213 16:5d8386745e22 48 }
jcm931213 16:5d8386745e22 49
jcm931213 16:5d8386745e22 50 // DHCP with domain
jcm931213 16:5d8386745e22 51 void begin( const char* auth,
jcm931213 16:5d8386745e22 52 const char* domain = BLYNK_DEFAULT_DOMAIN,
jcm931213 16:5d8386745e22 53 uint16_t port = BLYNK_DEFAULT_PORT,
jcm931213 16:5d8386745e22 54 uint8_t mac[] = NULL)
jcm931213 16:5d8386745e22 55 {
jcm931213 16:5d8386745e22 56 int phy_link;
jcm931213 16:5d8386745e22 57 eth.init(mac);
jcm931213 16:5d8386745e22 58 // phy link
jcm931213 16:5d8386745e22 59 do{
jcm931213 16:5d8386745e22 60 phy_link = eth.ethernet_link();
jcm931213 16:5d8386745e22 61 printf("...");
jcm931213 16:5d8386745e22 62 wait(2);
jcm931213 16:5d8386745e22 63 }while(!phy_link);
jcm931213 16:5d8386745e22 64
jcm931213 16:5d8386745e22 65 BLYNK_LOG1(BLYNK_F("Getting IP..."));
jcm931213 16:5d8386745e22 66 if (eth.connect()==-1) {
jcm931213 16:5d8386745e22 67 BLYNK_FATAL(BLYNK_F("DHCP Failed!"));
jcm931213 16:5d8386745e22 68 }
jcm931213 16:5d8386745e22 69
jcm931213 16:5d8386745e22 70
jcm931213 16:5d8386745e22 71 // give the Ethernet shield a second to initialize:
jcm931213 16:5d8386745e22 72 ::delay(1000);
jcm931213 16:5d8386745e22 73 char* myip = eth.getIPAddress();
jcm931213 16:5d8386745e22 74 BLYNK_LOG_IP("IP:", myip);
jcm931213 16:5d8386745e22 75
jcm931213 16:5d8386745e22 76 config(auth, domain, port);
jcm931213 16:5d8386745e22 77 printf("configure!\r\n");
jcm931213 16:5d8386745e22 78 while(this->connect() != true) {}
jcm931213 16:5d8386745e22 79 }
jcm931213 16:5d8386745e22 80 //
jcm931213 16:5d8386745e22 81 // // Static IP with domain
jcm931213 16:5d8386745e22 82 // void begin( const char* auth,
jcm931213 16:5d8386745e22 83 // const char* domain,
jcm931213 16:5d8386745e22 84 // uint16_t port,
jcm931213 16:5d8386745e22 85 // char* local,
jcm931213 16:5d8386745e22 86 // char* dns,
jcm931213 16:5d8386745e22 87 // const uint8_t mac[] = NULL)
jcm931213 16:5d8386745e22 88 // {
jcm931213 16:5d8386745e22 89 // BLYNK_LOG1(BLYNK_F("Using static IP"));
jcm931213 16:5d8386745e22 90 // Ethernet.begin(SelectMacAddress(auth, mac), local, dns);
jcm931213 16:5d8386745e22 91 // // give the Ethernet shield a second to initialize:
jcm931213 16:5d8386745e22 92 // ::delay(1000);
jcm931213 16:5d8386745e22 93 // char* myip = Ethernet.localIP();
jcm931213 16:5d8386745e22 94 // BLYNK_LOG_IP("IP:", myip);
jcm931213 16:5d8386745e22 95 //
jcm931213 16:5d8386745e22 96 // config(auth, domain, port);
jcm931213 16:5d8386745e22 97 // while(this->connect() != true) {}
jcm931213 16:5d8386745e22 98 // }
jcm931213 16:5d8386745e22 99 //
jcm931213 16:5d8386745e22 100 // // Static IP with domain, gateway, etc
jcm931213 16:5d8386745e22 101 // void begin( const char* auth,
jcm931213 16:5d8386745e22 102 // const char* domain,
jcm931213 16:5d8386745e22 103 // uint16_t port,
jcm931213 16:5d8386745e22 104 // char* local,
jcm931213 16:5d8386745e22 105 // char* dns,
jcm931213 16:5d8386745e22 106 // char* gateway,
jcm931213 16:5d8386745e22 107 // char* subnet,
jcm931213 16:5d8386745e22 108 // const uint8_t mac[] = NULL)
jcm931213 16:5d8386745e22 109 // {
jcm931213 16:5d8386745e22 110 // BLYNK_LOG1(BLYNK_F("Using static IP"));
jcm931213 16:5d8386745e22 111 // Ethernet.begin(SelectMacAddress(auth, mac), local, dns, gateway, subnet);
jcm931213 16:5d8386745e22 112 // // give the Ethernet shield a second to initialize:
jcm931213 16:5d8386745e22 113 // ::delay(1000);
jcm931213 16:5d8386745e22 114 // char* myip = Ethernet.localIP();
jcm931213 16:5d8386745e22 115 // BLYNK_LOG_IP("IP:", myip);
jcm931213 16:5d8386745e22 116 //
jcm931213 16:5d8386745e22 117 // config(auth, domain, port);
jcm931213 16:5d8386745e22 118 // while(this->connect() != true) {}
jcm931213 16:5d8386745e22 119 // }
jcm931213 16:5d8386745e22 120 //
jcm931213 16:5d8386745e22 121 // // DHCP with server IP
jcm931213 16:5d8386745e22 122 // void begin( const char* auth,
jcm931213 16:5d8386745e22 123 // char* addr,
jcm931213 16:5d8386745e22 124 // uint16_t port = BLYNK_DEFAULT_PORT,
jcm931213 16:5d8386745e22 125 // const uint8_t mac[] = NULL)
jcm931213 16:5d8386745e22 126 // {
jcm931213 16:5d8386745e22 127 // BLYNK_LOG1(BLYNK_F("Getting IP..."));
jcm931213 16:5d8386745e22 128 // if (!Ethernet.begin(SelectMacAddress(auth, mac))) {
jcm931213 16:5d8386745e22 129 // BLYNK_FATAL(BLYNK_F("DHCP Failed!"));
jcm931213 16:5d8386745e22 130 // }
jcm931213 16:5d8386745e22 131 // // give the Ethernet shield a second to initialize:
jcm931213 16:5d8386745e22 132 // ::delay(1000);
jcm931213 16:5d8386745e22 133 // char* myip = Ethernet.localIP();
jcm931213 16:5d8386745e22 134 // BLYNK_LOG_IP("IP:", myip);
jcm931213 16:5d8386745e22 135 //
jcm931213 16:5d8386745e22 136 // config(auth, addr, port);
jcm931213 16:5d8386745e22 137 // while(this->connect() != true) {}
jcm931213 16:5d8386745e22 138 // }
jcm931213 16:5d8386745e22 139 //
jcm931213 16:5d8386745e22 140 // // Static IP with server IP
jcm931213 16:5d8386745e22 141 // void begin( const char* auth,
jcm931213 16:5d8386745e22 142 // char* addr,
jcm931213 16:5d8386745e22 143 // uint16_t port,
jcm931213 16:5d8386745e22 144 // char* local,
jcm931213 16:5d8386745e22 145 // const uint8_t mac[] = NULL)
jcm931213 16:5d8386745e22 146 // {
jcm931213 16:5d8386745e22 147 // BLYNK_LOG1(BLYNK_F("Using static IP"));
jcm931213 16:5d8386745e22 148 // Ethernet.begin(SelectMacAddress(auth, mac), local);
jcm931213 16:5d8386745e22 149 // // give the Ethernet shield a second to initialize:
jcm931213 16:5d8386745e22 150 // ::delay(1000);
jcm931213 16:5d8386745e22 151 // char* myip = Ethernet.localIP();
jcm931213 16:5d8386745e22 152 // BLYNK_LOG_IP("IP:", myip);
jcm931213 16:5d8386745e22 153 //
jcm931213 16:5d8386745e22 154 // config(auth, addr, port);
jcm931213 16:5d8386745e22 155 // while(this->connect() != true) {}
jcm931213 16:5d8386745e22 156 // }
jcm931213 16:5d8386745e22 157 //
jcm931213 16:5d8386745e22 158 // // Static IP with server IP, DNS, gateway, etc
jcm931213 16:5d8386745e22 159 // void begin( const char* auth,
jcm931213 16:5d8386745e22 160 // char* addr,
jcm931213 16:5d8386745e22 161 // uint16_t port,
jcm931213 16:5d8386745e22 162 // char* local,
jcm931213 16:5d8386745e22 163 // char* dns,
jcm931213 16:5d8386745e22 164 // char* gateway,
jcm931213 16:5d8386745e22 165 // char* subnet,
jcm931213 16:5d8386745e22 166 // const uint8_t mac[] = NULL)
jcm931213 16:5d8386745e22 167 // {
jcm931213 16:5d8386745e22 168 // BLYNK_LOG1(BLYNK_F("Using static IP"));
jcm931213 16:5d8386745e22 169 // Ethernet.begin(SelectMacAddress(auth, mac), local, dns, gateway, subnet);
jcm931213 16:5d8386745e22 170 // // give the Ethernet shield a second to initialize:
jcm931213 16:5d8386745e22 171 // ::delay(1000);
jcm931213 16:5d8386745e22 172 // char* myip = Ethernet.localIP();
jcm931213 16:5d8386745e22 173 // BLYNK_LOG_IP("IP:", myip);
jcm931213 16:5d8386745e22 174 //
jcm931213 16:5d8386745e22 175 // config(auth, addr, port);
jcm931213 16:5d8386745e22 176 // while(this->connect() != true) {}
jcm931213 16:5d8386745e22 177 // }
jcm931213 16:5d8386745e22 178 //
jcm931213 16:5d8386745e22 179 //private:
jcm931213 16:5d8386745e22 180 //
jcm931213 16:5d8386745e22 181 // byte* SelectMacAddress(const char* token, const uint8_t mac[])
jcm931213 16:5d8386745e22 182 // {
jcm931213 16:5d8386745e22 183 // if (mac != NULL) {
jcm931213 16:5d8386745e22 184 // return (byte*)mac;
jcm931213 16:5d8386745e22 185 // }
jcm931213 16:5d8386745e22 186 //
jcm931213 16:5d8386745e22 187 // macAddress[0] = 0xFE;
jcm931213 16:5d8386745e22 188 // macAddress[1] = 0xED;
jcm931213 16:5d8386745e22 189 // macAddress[2] = 0xBA;
jcm931213 16:5d8386745e22 190 // macAddress[3] = 0xFE;
jcm931213 16:5d8386745e22 191 // macAddress[4] = 0xFE;
jcm931213 16:5d8386745e22 192 // macAddress[5] = 0xED;
jcm931213 16:5d8386745e22 193 //
jcm931213 16:5d8386745e22 194 // int len = strlen(token);
jcm931213 16:5d8386745e22 195 // int mac_index = 1;
jcm931213 16:5d8386745e22 196 // for (int i=0; i<len; i++) {
jcm931213 16:5d8386745e22 197 // macAddress[mac_index++] ^= token[i];
jcm931213 16:5d8386745e22 198 //
jcm931213 16:5d8386745e22 199 // if (mac_index > 5) { mac_index = 1; }
jcm931213 16:5d8386745e22 200 // }
jcm931213 16:5d8386745e22 201 // /* BLYNK_LOG("MAC: %02X-%02X-%02X-%02X-%02X-%02X",
jcm931213 16:5d8386745e22 202 // macAddress[0], macAddress[1],
jcm931213 16:5d8386745e22 203 // macAddress[2], macAddress[3],
jcm931213 16:5d8386745e22 204 // macAddress[4], macAddress[5]);
jcm931213 16:5d8386745e22 205 // */
jcm931213 16:5d8386745e22 206 // return macAddress;
jcm931213 16:5d8386745e22 207 // }
jcm931213 16:5d8386745e22 208
jcm931213 16:5d8386745e22 209 private:
jcm931213 16:5d8386745e22 210 uint8_t macAddress[6];
jcm931213 16:5d8386745e22 211
jcm931213 16:5d8386745e22 212 };
jcm931213 16:5d8386745e22 213
jcm931213 16:5d8386745e22 214 #endif