Testprogramm MQTT ESP01 und Nucleo-F401-RE

Dependencies:   LCD_i2c_GSOE ESP8266MQTT

Committer:
petripakkanen
Date:
Tue Sep 15 19:37:13 2020 +0000
Revision:
0:0046df9d5380
Child:
1:f6ebd1725aae
Works with l432kc (UART1 hardcoded).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
petripakkanen 0:0046df9d5380 1 /*
petripakkanen 0:0046df9d5380 2 * Copyright (c) 2006-2020 Arm Limited and affiliates.
petripakkanen 0:0046df9d5380 3 * SPDX-License-Identifier: Apache-2.0
petripakkanen 0:0046df9d5380 4 */
petripakkanen 0:0046df9d5380 5 #include "mbed.h"
petripakkanen 0:0046df9d5380 6 #include "TCPSocket.h"
petripakkanen 0:0046df9d5380 7 #include "ESP8266Interface.h"
petripakkanen 0:0046df9d5380 8
petripakkanen 0:0046df9d5380 9 ESP8266Interface wifi(D5, D4);
petripakkanen 0:0046df9d5380 10
petripakkanen 0:0046df9d5380 11 const char *sec2str(nsapi_security_t sec)
petripakkanen 0:0046df9d5380 12 {
petripakkanen 0:0046df9d5380 13 switch (sec) {
petripakkanen 0:0046df9d5380 14 case NSAPI_SECURITY_NONE:
petripakkanen 0:0046df9d5380 15 return "None";
petripakkanen 0:0046df9d5380 16 case NSAPI_SECURITY_WEP:
petripakkanen 0:0046df9d5380 17 return "WEP";
petripakkanen 0:0046df9d5380 18 case NSAPI_SECURITY_WPA:
petripakkanen 0:0046df9d5380 19 return "WPA";
petripakkanen 0:0046df9d5380 20 case NSAPI_SECURITY_WPA2:
petripakkanen 0:0046df9d5380 21 return "WPA2";
petripakkanen 0:0046df9d5380 22 case NSAPI_SECURITY_WPA_WPA2:
petripakkanen 0:0046df9d5380 23 return "WPA/WPA2";
petripakkanen 0:0046df9d5380 24 case NSAPI_SECURITY_UNKNOWN:
petripakkanen 0:0046df9d5380 25 default:
petripakkanen 0:0046df9d5380 26 return "Unknown";
petripakkanen 0:0046df9d5380 27 }
petripakkanen 0:0046df9d5380 28 }
petripakkanen 0:0046df9d5380 29
petripakkanen 0:0046df9d5380 30 void scan_demo(WiFiInterface *wifi)
petripakkanen 0:0046df9d5380 31 {
petripakkanen 0:0046df9d5380 32 WiFiAccessPoint *ap;
petripakkanen 0:0046df9d5380 33
petripakkanen 0:0046df9d5380 34 printf("Scan:\r\n");
petripakkanen 0:0046df9d5380 35
petripakkanen 0:0046df9d5380 36 int count = wifi->scan(NULL, 0);
petripakkanen 0:0046df9d5380 37
petripakkanen 0:0046df9d5380 38 /* Limit number of network arbitrary to 15 */
petripakkanen 0:0046df9d5380 39 count = count < 15 ? count : 15;
petripakkanen 0:0046df9d5380 40
petripakkanen 0:0046df9d5380 41 ap = new WiFiAccessPoint[count];
petripakkanen 0:0046df9d5380 42
petripakkanen 0:0046df9d5380 43 count = wifi->scan(ap, count);
petripakkanen 0:0046df9d5380 44 for (int i = 0; i < count; i++) {
petripakkanen 0:0046df9d5380 45 printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\r\n", ap[i].get_ssid(),
petripakkanen 0:0046df9d5380 46 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
petripakkanen 0:0046df9d5380 47 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
petripakkanen 0:0046df9d5380 48 }
petripakkanen 0:0046df9d5380 49 printf("%d networks available.\r\n", count);
petripakkanen 0:0046df9d5380 50
petripakkanen 0:0046df9d5380 51 delete[] ap;
petripakkanen 0:0046df9d5380 52 }
petripakkanen 0:0046df9d5380 53
petripakkanen 0:0046df9d5380 54 void http_demo(NetworkInterface *net)
petripakkanen 0:0046df9d5380 55 {
petripakkanen 0:0046df9d5380 56 // Open a socket on the network interface, and create a TCP connection to mbed.org
petripakkanen 0:0046df9d5380 57 TCPSocket socket;
petripakkanen 0:0046df9d5380 58 socket.open(net);
petripakkanen 0:0046df9d5380 59
petripakkanen 0:0046df9d5380 60 SocketAddress a;
petripakkanen 0:0046df9d5380 61 net->gethostbyname("ifconfig.io", &a);
petripakkanen 0:0046df9d5380 62 a.set_port(80);
petripakkanen 0:0046df9d5380 63 socket.connect(a);
petripakkanen 0:0046df9d5380 64 // Send a simple http request
petripakkanen 0:0046df9d5380 65 char sbuffer[] = "GET / HTTP/1.1\r\nHost: ifconfig.io\r\n\r\n";
petripakkanen 0:0046df9d5380 66 int scount = socket.send(sbuffer, sizeof sbuffer);
petripakkanen 0:0046df9d5380 67 printf("sent %d [%.*s]\n", scount, strstr(sbuffer, "\r\n") - sbuffer, sbuffer);
petripakkanen 0:0046df9d5380 68
petripakkanen 0:0046df9d5380 69 // Recieve a simple http response and print out the response line
petripakkanen 0:0046df9d5380 70 char rbuffer[64];
petripakkanen 0:0046df9d5380 71 int rcount = socket.recv(rbuffer, sizeof rbuffer);
petripakkanen 0:0046df9d5380 72 printf("recv %d [%.*s]\n", rcount, strstr(rbuffer, "\r\n") - rbuffer, rbuffer);
petripakkanen 0:0046df9d5380 73
petripakkanen 0:0046df9d5380 74 // Close the socket to return its memory and bring down the network interface
petripakkanen 0:0046df9d5380 75 socket.close();
petripakkanen 0:0046df9d5380 76 }
petripakkanen 0:0046df9d5380 77
petripakkanen 0:0046df9d5380 78 int main()
petripakkanen 0:0046df9d5380 79 {
petripakkanen 0:0046df9d5380 80 SocketAddress a;
petripakkanen 0:0046df9d5380 81
petripakkanen 0:0046df9d5380 82 printf("WiFi example\r\n\r\n");
petripakkanen 0:0046df9d5380 83
petripakkanen 0:0046df9d5380 84 scan_demo(&wifi);
petripakkanen 0:0046df9d5380 85
petripakkanen 0:0046df9d5380 86 printf("\r\nConnecting...\r\n");
petripakkanen 0:0046df9d5380 87 int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
petripakkanen 0:0046df9d5380 88 if (ret != 0) {
petripakkanen 0:0046df9d5380 89 printf("\r\nConnection error\r\n");
petripakkanen 0:0046df9d5380 90 return -1;
petripakkanen 0:0046df9d5380 91 }
petripakkanen 0:0046df9d5380 92
petripakkanen 0:0046df9d5380 93 printf("Success\r\n\r\n");
petripakkanen 0:0046df9d5380 94 printf("MAC: %s\r\n", wifi.get_mac_address());
petripakkanen 0:0046df9d5380 95 wifi.get_ip_address(&a);
petripakkanen 0:0046df9d5380 96 printf("IP: %s\r\n", a.get_ip_address());
petripakkanen 0:0046df9d5380 97 wifi.get_netmask(&a);
petripakkanen 0:0046df9d5380 98 printf("Netmask: %s\r\n", a.get_ip_address());
petripakkanen 0:0046df9d5380 99 wifi.get_gateway(&a);
petripakkanen 0:0046df9d5380 100 printf("Gateway: %s\r\n", a.get_ip_address());
petripakkanen 0:0046df9d5380 101 printf("RSSI: %d\r\n\r\n", wifi.get_rssi());
petripakkanen 0:0046df9d5380 102
petripakkanen 0:0046df9d5380 103 http_demo(&wifi);
petripakkanen 0:0046df9d5380 104
petripakkanen 0:0046df9d5380 105 wifi.disconnect();
petripakkanen 0:0046df9d5380 106
petripakkanen 0:0046df9d5380 107 printf("\r\nDone\r\n");
petripakkanen 0:0046df9d5380 108 }