Skip to content

Instantly share code, notes, and snippets.

@chaeplin
Created February 16, 2016 15:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chaeplin/8ff93aedb75266d644d2 to your computer and use it in GitHub Desktop.
Save chaeplin/8ff93aedb75266d644d2 to your computer and use it in GitHub Desktop.
wifi_test.ino
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "/usr/local/src/ap_setting.h"
extern "C" {
#include "user_interface.h"
}
char* topic = "wifitest";
int test_para = 5000;
long lastMsg = 0;
String clientName;
const char* ssid = WIFI_SSID;
const char* password = WIFI_PASSWORD;
IPAddress mqtt_server = MQTT_SERVER;
const long sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
WiFiClient wifiClient;
PubSubClient client(mqtt_server, 1883, wifiClient);
String macToStr(const uint8_t* mac)
{
String result;
for (int i = 0; i < 6; ++i) {
result += String(mac[i], 16);
if (i < 5)
result += ':';
}
return result;
}
boolean reconnect()
{
if (!client.connected()) {
if (client.connect((char*) clientName.c_str())) {
Serial.println("===> mqtt connected");
} else {
Serial.print("---> mqtt failed, rc=");
Serial.println(client.state());
}
}
return client.connected();
}
void sendmqttMsg(char* topictosend, String payload)
{
if (client.connected()) {
Serial.print("Sending payload: ");
Serial.print(payload);
unsigned int msg_length = payload.length();
Serial.print(" length: ");
Serial.println(msg_length);
byte* p = (byte*)malloc(msg_length);
memcpy(p, (char*) payload.c_str(), msg_length);
if ( client.publish(topictosend, p, msg_length)) {
Serial.println("Publish ok");
free(p);
//return 1;
} else {
Serial.println("Publish failed");
free(p);
//return 0;
}
}
}
void wifi_connect()
{
if (WiFi.status() != WL_CONNECTED) {
// WIFI
Serial.println();
Serial.print("===> WIFI ---> Connecting to ");
Serial.println(ssid);
delay(10);
//WiFi.setPhyMode(WIFI_PHY_MODE_11B);
//WiFi.setPhyMode(WIFI_PHY_MODE_11G);
WiFi.setPhyMode(WIFI_PHY_MODE_11N);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
int Attempt = 0;
while (WiFi.status() != WL_CONNECTED) {
Serial.print(". ");
Serial.print(Attempt);
delay(100);
Attempt++;
if (Attempt == 250)
{
Serial.println();
Serial.println("-----> Could not connect to WIFI");
ESP.restart();
delay(200);
}
}
Serial.println();
Serial.print("===> WiFi connected");
Serial.print(" ------> IP address: ");
Serial.println(WiFi.localIP());
}
}
void setup()
{
Serial.begin(74880);
wifi_connect();
clientName += "esp8266-";
uint8_t mac[6];
WiFi.macAddress(mac);
clientName += macToStr(mac);
clientName += "-";
clientName += String(micros() & 0xff, 16);
reconnect();
}
unsigned long millisConnected; // Last time connected
unsigned long startMillis; // Start of sample window
unsigned int peakToPeak; // peak-to-peak level
unsigned int signalMax;
unsigned int signalMin;
void loop()
{
if (WiFi.status() != WL_CONNECTED)
{
Serial.print((millis() - millisConnected) / 1000);
Serial.print(" - mode : ");
const char* phymodes[] = { "", "B", "G", "N" };
Serial.print(phymodes[(int) wifi_get_phy_mode()]);
Serial.print(" - rssi : ");
Serial.print(WiFi.RSSI());
Serial.print(" - peakToPeak : ");
Serial.println(peakToPeak);
Serial.print("not connected");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
millisConnected = millis();
Serial.println();
}
startMillis = millis();
peakToPeak = 0;
signalMax = 0;
signalMin = 1024;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(A0);
// coment out delay(3) below
// and check on serial monitor
// if Wi-Fi connection
// is not being lost and then recovered
// every half a dozen or so seconds
//delay(3);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
double volts = (peakToPeak * 3.3) / 1024; // convert to volts
long now = millis();
if (now - lastMsg > test_para) {
lastMsg = now;
uint32_t really_random = *(volatile uint32_t *)0x3FF20E44;
String payload = "{\"startMills\":";
payload += millis();
payload += ",\"rand\":";
payload += really_random;
payload += ",\"FreeHeap\":";
payload += ESP.getFreeHeap();
payload += ",\"RSSI\":";
payload += WiFi.RSSI();
payload += "}";
sendmqttMsg(topic, payload);
}
client.loop();
}
@chaeplin
Copy link
Author

IDE 1.6.7 / esp8266 git core

// 11.B
===> mqtt connected
Sending payload: {"startMills":5267,"rand":11425048,"FreeHeap":46240,"RSSI":-55} length: 63
Publish ok
Sending payload: {"startMills":10313,"rand":706392399,"FreeHeap":46224,"RSSI":-55} length: 65
Publish ok
14 - mode : B - rssi : 31 - peakToPeak : 1
not connected..........
8 - mode : B - rssi : 31 - peakToPeak : 1
not connected...........
8 - mode : B - rssi : 31 - peakToPeak : 1
not connected..........
8 - mode : B - rssi : 31 - peakToPeak : 1
not connected...

===> mqtt connected
Sending payload: {"startMills":5271,"rand":1532520306,"FreeHeap":46224,"RSSI":-51} length: 65
Publish ok
Sending payload: {"startMills":10311,"rand":1109770069,"FreeHeap":46224,"RSSI":-51} length: 66
Publish ok
13 - mode : B - rssi : 31 - peakToPeak : 1
not connected...........
8 - mode : B - rssi : 31 - peakToPeak : 1
not connected..........

@chaeplin
Copy link
Author

/11G
===> mqtt connected
Sending payload: {"startMills":5262,"rand":206313857,"FreeHeap":46240,"RSSI":-54} length: 64
Publish ok
Sending payload: {"startMills":10303,"rand":3705006238,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":15307,"rand":2486584037,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":20312,"rand":3337503992,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":25318,"rand":108598904,"FreeHeap":46224,"RSSI":-54} length: 65
Publish ok
Sending payload: {"startMills":30321,"rand":2083267847,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":35325,"rand":2353236529,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":40328,"rand":3401426410,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":45331,"rand":3957623798,"FreeHeap":46224,"RSSI":-54} length: 66
Publish ok
Sending payload: {"startMills":50336,"rand":3271589294,"FreeHeap":46224,"RSSI":-56} length: 66
Publish ok

==> mqtt connected
Sending payload: {"startMills":5285,"rand":499910756,"FreeHeap":46240,"RSSI":-50} length: 64
Publish ok
Sending payload: {"startMills":10328,"rand":257884481,"FreeHeap":46224,"RSSI":-50} length: 65
Publish ok
Sending payload: {"startMills":15333,"rand":669367775,"FreeHeap":46224,"RSSI":-48} length: 65
Publish ok
Sending payload: {"startMills":20336,"rand":3951797724,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":25341,"rand":1967791062,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":30345,"rand":1275759507,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":35350,"rand":2551509139,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":40353,"rand":1089683738,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":45357,"rand":4221531697,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":50360,"rand":3211052839,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":55366,"rand":2645443068,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":60371,"rand":3181145900,"FreeHeap":45992,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":65377,"rand":1294356465,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok
Sending payload: {"startMills":70420,"rand":3700418346,"FreeHeap":46224,"RSSI":-48} length: 66
Publish ok

@chaeplin
Copy link
Author

//11N
===> mqtt connected
Sending payload: {"startMills":46456,"rand":688942422,"FreeHeap":46224,"RSSI":-57} length: 65
Publish ok
Sending payload: {"startMills":51500,"rand":309420641,"FreeHeap":46224,"RSSI":-57} length: 65
Publish ok
Sending payload: {"startMills":56504,"rand":734172512,"FreeHeap":46224,"RSSI":-57} length: 65
Publish ok
Sending payload: {"startMills":61517,"rand":2549015087,"FreeHeap":46224,"RSSI":-57} length: 66
Publish ok
Sending payload: {"startMills":66521,"rand":3859670852,"FreeHeap":46224,"RSSI":-57} length: 66
Publish ok
Sending payload: {"startMills":71524,"rand":1695451455,"FreeHeap":46224,"RSSI":-57} length: 66
Publish ok
Sending payload: {"startMills":76528,"rand":56333403,"FreeHeap":46240,"RSSI":-57} length: 64
Publish ok
Sending payload: {"startMills":81533,"rand":2535604176,"FreeHeap":46224,"RSSI":-56} length: 66
Publish ok
Sending payload: {"startMills":86541,"rand":1625656294,"FreeHeap":46224,"RSSI":-56} length: 66
Publish ok

===> mqtt connected
Sending payload: {"startMills":5191,"rand":3657051007,"FreeHeap":46224,"RSSI":-46} length: 65
Publish ok
Sending payload: {"startMills":10233,"rand":4265033220,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":15238,"rand":2792381073,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":20242,"rand":3131046028,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":25247,"rand":2273938601,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":30250,"rand":1665696838,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":35255,"rand":2955714704,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":40259,"rand":4118519235,"FreeHeap":45992,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":45264,"rand":2800663079,"FreeHeap":46224,"RSSI":-46} length: 66
Publish ok
Sending payload: {"startMills":50267,"rand":1975078923,"FreeHeap":45992,"RSSI":-46} length: 66
Publish ok
51 - mode : N - rssi : 31 - peakToPeak : 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment