arendst 3403ca1e0a v5.10.0
5.10.0 20171201
 * Upgrade library ArduinoJson to 5.11.2
 * Upgrade
library IRRemoteEsp8266 to 2.2.1 + 2 commits but disabled some protocols
(code size reduction)
 * Upgrade library NeoPixelBus to 2.2.9
 * Upgrade
library OneWire to 2.3.3 + 6 commits and disabled CRC lookup-table
(#define ONEWIRE_CRC8_TABLE 0) (code size reduction)
 * Update library
PubSubClient to 2.6 + 9 commits and additional delay (#790)
 * Update
core_esp8266_wiring_digital.c to latest (staged) level
 * Patch library
I2Cdevlib-Core for esp8266-core 2.4.0-rc2 compatibility
 * Remove
command EnergyReset 1..3 now replaced by ENergyReset1 to EnergyReset3
 *
Remove spaces in JSON messages (code size reduction)
 * Renamed
xsns_05_ds18x20.ino to xsns_05_ds18x20_legacy.ino still using library
OneWire and providing dynamic sensor scan
 * Fix possible iram1_0_seg
compile error by shrinking ICACHE_RAM_ATTR code usage
 * Fix PWM
watchdog timeout if Dimmer is set to 100 or Color set to 0xFF (#1146)
 *
Fix Sonoff Bridge Learn Mode hang caused by unrecognised RF code
(#1181)
 * Fix blank console log window by using XML character encoding
(#1187)
 * Fix wrong response name for command HlwISet (#1214)
 * Fix
DHT type sensor timeout recognition by distinguish "signal already
there" from "timeout" (#1233)
 * Add fixed color options 1..12 to
command Color
 * Add + (plus) and - (minus) to commands Dimmer
(+10/-10), Speed and Scheme
 * Add + (plus) and - (minus) to command
Color to select 1 out of 12 preset colors
 * Add + (plus) and - (minus)
to command Ct to control ColdWarm led ColorTemperature (+34/-34)
 * Add
commands EnergyReset1 0..42500, EnergyReset2 0..42500 and EnergyReset3
0..42500000
 *  to (Re)set Energy Today, Yesterday or Total respectively
in Wh (#406, #685, #1202)
 * Add optional ADS1115 driver as alternative
for unsupported I2Cdevlib in esp8266-core 2.4.0-rc2
 * Add support for
INA219 Voltage and Current sensor to be enabled in user_config.h with
define USE_INA219
 * Add support for Arilux LC11 (Clearing RF home code
when selecting no Arilux module)
 * Add support for WS2812 RGBW
ledstrips to be enabled in user_config.h with define USE_WS2812_CTYPE
(#1156)
 * Add SettingsSaveAll routine to command SaveData to be used
before controlled power down (#1202)
 * Add option PUSHBUTTON_TOGGLE
(SwitchMode 7) to allow toggling on any switch change (#1221)
 * Add new
xdrv_05_ds18x20.ino free from library OneWire and add the following
features:
 *  Add support for DS1822
 *  Add forced setting of 12-bit
resolution for selected device types (#1222)
 *  Add read temperature
retry counter (#1215)
 *  Fix lost sensors by performing sensor probe at
restart only thereby removing dynamic sensor probe (#1215)
 *  Fix
sensor address sorting using ascending sort on sensor type followed by
sensor address
 *  Rewrite JSON resulting in shorter message allowing
more sensors in default firmware image:
 *
"DS18B20-1":{"Id":"00000483C23A","Temperature":19.5},"DS18B20-2":{"Id":"0000048EC44C","Temperature":19.6}

* Add additional define in user_config.h to select either single sensor
(defines disabled), new multi sensor (USE_DS18X20) or legacy multi
sensor (USE_DS18X20_LEGACY)
 * Add clock support for more different
pixel counts (#1226)
 * Add support for Sonoff Dual R2 (#1249)
 * Add
FriendlyName to web page tab and add program information to web page
footer (#1275)
2017-12-01 14:42:22 +01:00
..
2017-12-01 14:42:22 +01:00
2017-12-01 14:42:22 +01:00
2017-12-01 14:42:22 +01:00
2017-12-01 14:42:22 +01:00
2017-12-01 14:42:22 +01:00
2017-12-01 14:42:22 +01:00

Arduino Client for MQTT Test Suite

This is a regression test suite for the PubSubClient library.

There are two parts:

  • Tests that can be compiled and run on any machine
  • Tests that build the example sketches using the Arduino IDE

It is a work-in-progress and is subject to complete refactoring as the whim takes me.

Local tests

These are a set of executables that can be run to test specific areas of functionality. They do not require a real Arduino to be attached, nor the use of the Arduino IDE.

The tests include a set of mock files to stub out the parts of the Arduino environment the library depends on.

Dependencies

  • g++

Running

Build the tests using the provided Makefile:

$ make

This will create a set of executables in ./bin/. Run each of these executables to test the corresponding functionality.

Note: the connect_spec and keepalive_spec tests involve testing keepalive timers so naturally take a few minutes to run through.

Arduino tests

Note: INO Tool doesn't currently play nicely with Arduino 1.5. This has broken this test suite.

Without a suitable arduino plugged in, the test suite will only check the example sketches compile cleanly against the library.

With an arduino plugged in, each sketch that has a corresponding python test case is built, uploaded and then the tests run.

Dependencies

  • Python 2.7+
  • INO Tool - this provides command-line build/upload of Arduino sketches

Running

The test suite does not run an MQTT server - it is assumed to be running already.

$ python testsuite.py

A summary of activity is printed to the console. More comprehensive logs are written to the logs directory.

What it does

For each sketch in the library's examples directory, e.g. mqtt_basic.ino, the suite looks for a matching test case testcases/mqtt_basic.py.

The test case must follow these conventions:

  • sub-class unittest.TestCase
  • provide the class methods setUpClass and tearDownClass (TODO: make this optional)
  • all test method names begin with test_

The suite will call the setUpClass method before uploading the sketch. This allows any test setup to be performed before the sketch runs - such as connecting a client and subscribing to topics.

Settings

The file testcases/settings.py is used to config the test environment.

  • server_ip - the IP address of the broker the client should connect to (the broker port is assumed to be 1883).
  • arduino_ip - the IP address the arduino should use (when not testing DHCP).

Before each sketch is compiled, these values are automatically substituted in. To do this, the suite looks for lines that start with the following:

 byte server[] = {
 byte ip[] = {

and replaces them with the appropriate values.