Giter VIP home page Giter VIP logo

opengarage-firmware's Introduction

This folder contains firmware source code and documentation for OpenGarage. For product details, visit http://opengarage.io

For Firmware release notes, go to https://github.com/OpenGarage/OpenGarage-Firmware/releases

Firmware Compilation Instructions:

Check README.md in the OpenGarage folder.

Updating Firmware

As OpenGarage firmware supports OTA (over-the-air) update, you can upload the firmware through the web interface. At the homepage, find the Update or Update Firmware button and follow that to upload a new firmware. If your OpenGarage is in AP mode and not connected to any WiFi network yet, you can open http://192.168.4.1/update and that's the same interface.

Firmware User Manual and API

Go to the doc folder to find the user manual as well as the API document for each firmware version.

opengarage-firmware's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opengarage-firmware's Issues

Feature Request: Wifi Connect to strongest RSSI rather than first one found.

Been running into problems with the OpenGarage FW where it connects to a weak AP rather that a strong one on same SSID. This is causing issues with delayed Blynk and MQTT.

I believe that WiFi.begin without a channel connects to the first lowest channel it detects on the SSID. A potential solution would be doing a wifi scan and finding the strongest RSSI on the specified SSID instead of letting WiFi.begin select it.

Anyone else having this problem? Agree with solution idea?

Auto close not always working.

I currently have the auto close feature setup, and working, but sometimes it takes much longer then the 20 minutes configured to close the garage. This is more typical when using the RF remote to open the garage. This was not occurring in the previous 1.0.6 release. I am currently running 1.0.8 firmware/

I have included the open and close log below:

Event | DateTime | Details
-- | -- | --
Closed | 4/15/2018, 7:42:51 AM | 97 cm
Opened | 4/15/2018, 7:41:09 AM | 12 cm
Closed | 4/14/2018, 5:52:48 PM | 450 cm
Opened | 4/14/2018, 4:48:30 PM | 13 cm
Closed | 4/14/2018, 4:48:21 PM | 264 cm
Opened | 4/14/2018, 4:40:39 PM | 13 cm
Closed | 4/14/2018, 4:39:45 PM | 263 cm
Opened | 4/14/2018, 4:29:30 PM | 12 cm
Closed | 4/14/2018, 8:56:21 AM | 264 cm
Opened | 4/14/2018, 8:36:03 AM | 13 cm
Closed | 4/14/2018, 6:36:45 AM | 262 cm
Opened | 4/14/2018, 6:35:45 AM | 13 cm
Closed | 4/14/2018, 12:23:12 AM | 90 cm
Opened | 4/13/2018, 11:35:06 PM | 13 cm
Closed | 4/13/2018, 11:01:06 PM | 98 cm
Opened | 4/13/2018, 10:39:12 PM | 13 cm
Closed | 4/13/2018, 9:40:30 PM | 217 cm
Opened | 4/13/2018, 9:34:54 PM | 13 cm
Closed | 4/13/2018, 3:23:18 PM | 261 cm
Opened | 4/13/2018, 2:14:27 PM | 13 cm
Closed | 4/13/2018, 12:24:54 PM | 262 cm
Opened | 4/13/2018, 12:21:36 PM | 13 cm
Closed | 4/13/2018, 11:54:09 AM | 86 cm
Opened | 4/13/2018, 10:10:06 AM | 13 cm
Closed | 4/13/2018, 12:10:51 AM | 87 cm
Opened | 4/12/2018, 10:07:27 PM | 13 cm
Closed | 4/12/2018, 7:36:39 PM | 85 cm
Opened | 4/12/2018, 6:49:00 PM | 13 cm
Closed | 4/12/2018, 1:13:33 PM | 85 cm
Opened | 4/12/2018, 12:53:12 PM | 12 cm
Closed | 4/12/2018, 9:45:21 AM | 261 cm
Opened | 4/12/2018, 9:42:15 AM | 12 cm
Closed | 4/12/2018, 7:23:42 AM | 88 cm
Opened | 4/12/2018, 7:21:12 AM | 13 cm
Closed | 4/11/2018, 10:15:48 PM | 87 cm
Opened | 4/11/2018, 10:15:12 PM | 13 cm
Closed | 4/11/2018, 10:14:33 PM | 87 cm
Opened | 4/11/2018, 10:13:06 PM | 13 cm
Closed | 4/11/2018, 7:31:12 PM | 88 cm
Opened | 4/11/2018, 5:39:46 PM | 12 cm
Closed | 4/11/2018, 4:57:01 PM | 260 cm
Opened | 4/11/2018, 4:55:55 PM | 12 cm
Closed | 4/11/2018, 4:47:22 PM | 85 cm
Opened | 4/11/2018, 4:27:01 PM | 12 cm
Closed | 4/11/2018, 7:48:07 AM | 263 cm
Opened | 4/11/2018, 7:45:43 AM | 13 cm
Closed | 4/11/2018, 6:34:52 AM | 262 cm
Opened | 4/11/2018, 6:33:01 AM | 13 cm
Closed | 4/10/2018, 7:22:55 PM | 86 cm
Opened | 4/10/2018, 6:53:37 PM | 12 cm
Closed | 4/10/2018, 6:48:34 PM | 86 cm
Opened | 4/10/2018, 6:13:28 PM | 12 cm
Closed | 4/10/2018, 4:50:58 PM | 262 cm
Opened | 4/10/2018, 4:45:25 PM | 13 cm
Closed | 4/10/2018, 7:54:43 AM | 86 cm
Opened | 4/10/2018, 7:52:16 AM | 13 cm
Closed | 4/9/2018, 10:36:40 PM | 87 cm
Opened | 4/9/2018, 9:13:58 PM | 13 cm
Closed | 4/9/2018, 8:20:37 PM | 262 cm
Opened | 4/9/2018, 5:59:10 PM | 13 cm
Closed | 4/9/2018, 12:23:04 PM | 262 cm
Opened | 4/9/2018, 12:16:07 PM | 13 cm
Closed | 4/9/2018, 8:43:07 AM | 87 cm
Opened | 4/9/2018, 8:41:55 AM | 13 cm
Closed | 4/9/2018, 8:22:19 AM | 265 cm
Opened | 4/9/2018, 8:10:34 AM | 12 cm
Closed | 4/9/2018, 6:17:22 AM | 88 cm
Opened | 4/9/2018, 6:12:46 AM | 13 cm
Closed | 4/8/2018, 6:41:13 PM | 88 cm
Opened | 4/8/2018, 5:55:40 PM | 13 cm
Closed | 4/8/2018, 7:43:37 AM | 89 cm
Opened | 4/8/2018, 7:31:52 AM | 12 cm
Closed | 4/7/2018, 9:29:55 PM | 88 cm
Opened | 4/7/2018, 9:28:13 PM | 13 cm
Closed | 4/7/2018, 5:55:52 PM | 262 cm
Opened | 4/7/2018, 5:28:43 PM | 12 cm
Closed | 4/7/2018, 12:21:55 PM | 265 cm
Opened | 4/7/2018, 12:20:43 PM | 13 cm
Closed | 4/7/2018, 11:49:55 AM | 90 cm
Opened | 4/7/2018, 11:41:22 AM | 13 cm
Closed | 4/7/2018, 11:23:22 AM | 89 cm
Opened | 4/7/2018, 11:20:52 AM | 13 cm
Closed | 4/6/2018, 7:54:46 PM | 90 cm
Opened | 4/6/2018, 6:40:20 PM | 13 cm
Closed | 4/6/2018, 5:34:53 PM | 89 cm
Opened | 4/6/2018, 5:29:02 PM | 12 cm
Closed | 4/6/2018, 4:31:41 PM | 90 cm
Opened | 4/6/2018, 4:28:20 PM | 13 cm
Closed | 4/6/2018, 4:02:23 PM | 89 cm
Opened | 4/6/2018, 4:00:53 PM | 13 cm
Closed | 4/6/2018, 2:11:59 PM | 264 cm
Opened | 4/6/2018, 1:35:47 PM | 13 cm
Closed | 4/6/2018, 6:36:23 AM | 283 cm
Opened | 4/6/2018, 6:35:32 AM | 13 cm
Closed | 4/5/2018, 7:49:53 PM | 88 cm
Opened | 4/5/2018, 5:56:17 PM | 12 cm
Closed | 4/5/2018, 12:47:02 PM | 88 cm
Closed | 4/5/2018, 9:53:20 AM | 265 cm
Opened | 4/5/2018, 9:46:23 AM | 13 cm

Failed compilation with makeESPArduino

I get the following errors when compiling with makeESPArduino. Here are the tags/versions of each required package I am using:

makeESPArduino - 4.11.0
blynk-library - v0.5.1
pubsubclient - v1.99.2
OpenGarage - 1.0.7

root@1eede81c43bf:/usr/local/src/og/OpenGarage# make
uart.c
time.c
Tone.cpp
core_esp8266_wiring_digital.c
core_esp8266_flash_utils.c
pgmspace.cpp
umm_malloc.c
core_esp8266_si2c.c
core_esp8266_wiring_shift.c
core_esp8266_postmortem.c
Schedule.cpp
cbuf.cpp
cont_util.c
base64.cpp
core_esp8266_wiring_analog.c
spiffs_api.cpp
core_esp8266_wiring_pwm.c
libc_replacements.c
core_esp8266_phy.c
StreamString.cpp
core_esp8266_wiring_pulse.c
WMath.cpp
Esp.cpp
HardwareSerial.cpp
WString.cpp
core_esp8266_i2s.c
core_esp8266_timer.c
abi.cpp
core_esp8266_wiring.c
core_esp8266_eboot_command.c
Stream.cpp
MD5Builder.cpp
core_esp8266_main.cpp
debug.cpp
IPAddress.cpp
spiffs_check.c
cdecode.c
spiffs_gc.c
spiffs_nucleus.c
spiffs_hydrogen.c
core_esp8266_noniso.c
spiffs_cache.c
cencode.c
heap.c
Print.cpp
ogMainArduino.ino
cont.S
ESP8266WiFiScan.cpp
WiFiUdp.cpp
ESP8266WiFiSTA.cpp
Wire.cpp
ESP8266WiFi.cpp
ESP8266WiFiMulti.cpp
WiFiClient.cpp
ESP8266WiFiGeneric.cpp
WiFiClientSecure.cpp
WiFiServer.cpp
ESP8266WiFiAP.cpp
ESP8266mDNS.cpp
DNSServer.cpp
BlynkDebug.cpp
ESP8266HTTPClient.cpp
ESP8266WebServer.cpp
main.cpp
Parsing.cpp
utility.cpp
BlynkTimer.cpp
subscribe_spec.cpp
BlynkHandlers.cpp
keepalive_spec.cpp
receive_spec.cpp
connect_spec.cpp
Buffer.cpp
BDDTest.cpp
ShimClient.cpp
publish_spec.cpp
MQTT.cpp
PubSubClient.cpp
Ticker.cpp
OpenGarage.cpp
espconnect.cpp
html2raw.cpp
Updater.cpp
spiffs_hal.cpp
FS.cpp
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15:0,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsgetn(std::basic_streambuf<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15:0,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:1:
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsgetn(std::basic_streambuf<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15:0,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsgetn(std::basic_streambuf<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsputn(const char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15:0,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsgetn(std::basic_streambuf<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsputn(const char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsputn(const char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsputn(const char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15:0,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsgetn(std::basic_streambuf<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/streambuf.tcc: In member function 'virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsputn(const char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/istream.tcc: In member function 'std::streamsize std::basic_istream<_CharT, _Traits>::readsome(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/istream.tcc: In member function 'std::streamsize std::basic_istream<_CharT, _Traits>::readsome(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/istream.tcc: In member function 'std::streamsize std::basic_istream<_CharT, _Traits>::readsome(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_fails_no_network()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:19:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:19:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp: In function 'int test_subscribe_no_qos()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:24:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:24:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp: In function 'int test_keepalive_pings_idle()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:24:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:24:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_fails_on_no_response()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:29:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:29:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_properly_formatted()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:48:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:34:16: error: 'sleep' was not declared in this scope
         sleep(1);
                ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp: In function 'int test_keepalive_pings_with_outbound_qos0()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:53:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:53:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/istream.tcc: In member function 'std::streamsize std::basic_istream<_CharT, _Traits>::readsome(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:48:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_properly_formatted_hostname()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:65:77: error: no matching function for call to 'PubSubClient::PubSubClient(char* const, int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client((char* const)"localhost", 1883, callback, shimClient);
                                                                             ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:65:77: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_fails_on_bad_rc()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:81:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:81:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp: In function 'int test_subscribe_qos_1()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:49:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:49:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:65:16: error: 'sleep' was not declared in this scope
         sleep(1);
                ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp: In function 'int test_keepalive_pings_with_inbound_qos0()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:89:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:89:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:97:16: error: 'sleep' was not declared in this scope
         sleep(1);
                ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp: In function 'int test_keepalive_no_pings_inbound_qos1()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:122:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:122:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp: In function 'int test_publish()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:22:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp: In function 'int test_subscribe_not_connected()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:70:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:70:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_accepts_username_password()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:97:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:97:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp: In function 'int test_subscribe_invalid_qos()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:88:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:88:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:98:78: error: no matching function for call to 'PubSubClient::connect(char*, char*, char*)'
     int rc = client.connect((char*)"client_test1",(char*)"user",(char*)"pass");
                                                                              ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:98:78: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note: bool PubSubClient::connect(String)
    bool connect(String id);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note:   candidate expects 1 argument, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note: bool PubSubClient::connect(String, String, uint8_t, bool, String)
    bool connect(String id, String willTopic, uint8_t willQos, bool willRetain, String willMessage);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note:   candidate expects 5 arguments, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note: bool PubSubClient::connect(MQTT::Connect&)
    bool connect(MQTT::Connect &conn);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note:   candidate expects 1 argument, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp: In function 'int test_unsubscribe()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:110:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:110:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_accepts_username_no_password()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:115:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:115:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:22:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:132:16: error: 'sleep' was not declared in this scope
         sleep(1);
                ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:116:69: error: no matching function for call to 'PubSubClient::connect(char*, char*, char)'
     int rc = client.connect((char*)"client_test1",(char*)"user",'\0');
                                                                     ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:116:69: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp: In function 'int test_publish_bytes()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:49:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp: In function 'int test_unsubscribe_not_connected()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:131:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note: bool PubSubClient::connect(String)
    bool connect(String id);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note:   candidate expects 1 argument, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:131:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note: bool PubSubClient::connect(String, String, uint8_t, bool, String)
    bool connect(String id, String willTopic, uint8_t willQos, bool willRetain, String willMessage);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note:   candidate expects 5 arguments, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note: bool PubSubClient::connect(MQTT::Connect&)
    bool connect(MQTT::Connect &conn);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note:   candidate expects 1 argument, 3 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/subscribe_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp: In function 'int test_keepalive_disconnects_hung()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:150:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:150:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_ignores_password_no_username()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:133:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:49:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:133:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp: In function 'int test_publish_retained()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:76:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/keepalive_spec.cpp:158:16: error: 'sleep' was not declared in this scope
         sleep(1);
                ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:134:69: error: no matching function for call to 'PubSubClient::connect(char*, char, char*)'
     int rc = client.connect((char*)"client_test1",'\0',(char*)"pass");
                                                                     ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:134:69: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:76:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note: bool PubSubClient::connect(String)
    bool connect(String id);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note:   candidate expects 1 argument, 3 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note: bool PubSubClient::connect(String, String, uint8_t, bool, String)
    bool connect(String id, String willTopic, uint8_t willQos, bool willRetain, String willMessage);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note:   candidate expects 5 arguments, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note: bool PubSubClient::connect(MQTT::Connect&)
    bool connect(MQTT::Connect &conn);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note:   candidate expects 1 argument, 3 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_with_will()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:151:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp: In function 'int test_publish_not_connected()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:95:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:151:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:95:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_with_will_username_password()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:169:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:169:59: note: candidates are:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp: In function 'int test_publish_P()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:117:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:117:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/tools/xtensa-lx106-elf/xtensa-lx106-elf/include/c++/4.8.2/bits/istream.tcc: In member function 'std::streamsize std::basic_istream<_CharT, _Traits>::readsome(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize)':
/usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:252:18: error: expected unqualified-id before '(' token
 #define min(a,b) ((a)<(b)?(a):(b))
                  ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:170:126: error: no matching function for call to 'PubSubClient::connect(char*, char*, char*, char*, int, int, char*)'
     int rc = client.connect((char*)"client_test1",(char*)"user",(char*)"password",(char*)"willTopic",1,0,(char*)"willMessage");
                                                                                                                              ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:170:126: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note: bool PubSubClient::connect(String)
    bool connect(String id);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:110:9: note:   candidate expects 1 argument, 7 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note: bool PubSubClient::connect(String, String, uint8_t, bool, String)
    bool connect(String id, String willTopic, uint8_t willQos, bool willRetain, String willMessage);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:122:9: note:   candidate expects 5 arguments, 7 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note: bool PubSubClient::connect(MQTT::Connect&)
    bool connect(MQTT::Connect &conn);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:184:9: note:   candidate expects 1 argument, 7 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:124:61: error: invalid conversion from 'byte* {aka unsigned char*}' to 'const char*' [-fpermissive]
     rc = client.publish_P((char*)"topic",payload,length,true);
                                                             ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/publish_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:162:9: error:   initializing argument 2 of 'bool PubSubClient::publish_P(String, const char*, uint32_t, bool)' [-fpermissive]
    bool publish_P(String topic, PGM_P payload, uint32_t plength, bool retained = false);
         ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp: In function 'int test_connect_disconnect_connect()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:190:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:190:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/connect_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
Makefile:236: recipe for target '/tmp/ogMainArduino/ogMainArduino_generic/subscribe_spec.cpp.o' failed
make: *** [/tmp/ogMainArduino/ogMainArduino_generic/subscribe_spec.cpp.o] Error 1
make: *** Waiting for unfinished jobs....
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp: In function 'int test_receive_callback()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:39:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:39:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp: In function 'int test_receive_stream()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:64:12: error: cannot declare variable 'stream' to be of abstract type 'Stream'
     Stream stream;
            ^
In file included from /usr/local/src/esp8266-arduino/cores/esp8266/HardwareSerial.h:31:0,
                 from /usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:245,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:
/usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:38:7: note:   because the following virtual functions are pure within 'Stream':
 class Stream: public Print {
       ^
In file included from /usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:26:0,
                 from /usr/local/src/esp8266-arduino/cores/esp8266/HardwareSerial.h:31,
                 from /usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:245,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:
/usr/local/src/esp8266-arduino/cores/esp8266/Print.h:55:24: note: 	virtual size_t Print::write(uint8_t)
         virtual size_t write(uint8_t) = 0;
                        ^
In file included from /usr/local/src/esp8266-arduino/cores/esp8266/HardwareSerial.h:31:0,
                 from /usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:245,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:
/usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:47:21: note: 	virtual int Stream::available()
         virtual int available() = 0;
                     ^
/usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:48:21: note: 	virtual int Stream::read()
         virtual int read() = 0;
                     ^
/usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:49:21: note: 	virtual int Stream::peek()
         virtual int peek() = 0;
                     ^
/usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:50:22: note: 	virtual void Stream::flush()
         virtual void flush() = 0;
                      ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:65:12: error: 'class Stream' has no member named 'expect'
     stream.expect((uint8_t*)"payload",7);
            ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:73:67: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&, Stream&)'
     PubSubClient client(server, 1883, callback, shimClient, stream);
                                                                   ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:73:67: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 5 provided
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:4:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:88:21: error: 'class Stream' has no member named 'error'
     IS_FALSE(stream.error());
                     ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/lib/BDDTest.h:9:62: note: in definition of macro 'TEST'
 #define TEST(x) { if (!bddtest_test(__FILE__, __LINE__, #x, (x))) return false;  }
                                                              ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:88:5: note: in expansion of macro 'IS_FALSE'
     IS_FALSE(stream.error());
     ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp: In function 'int test_receive_max_sized_message()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:104:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:104:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:108:19: error: 'MQTT_MAX_PACKET_SIZE' was not declared in this scope
     byte length = MQTT_MAX_PACKET_SIZE;
                   ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp: In function 'int test_receive_oversized_message()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:140:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
Makefile:236: recipe for target '/tmp/ogMainArduino/ogMainArduino_generic/keepalive_spec.cpp.o' failed
make: *** [/tmp/ogMainArduino/ogMainArduino_generic/keepalive_spec.cpp.o] Error 1
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:140:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:144:19: error: 'MQTT_MAX_PACKET_SIZE' was not declared in this scope
     byte length = MQTT_MAX_PACKET_SIZE+1;
                   ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp: In function 'int test_receive_oversized_stream_message()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:167:12: error: cannot declare variable 'stream' to be of abstract type 'Stream'
     Stream stream;
            ^
In file included from /usr/local/src/esp8266-arduino/cores/esp8266/HardwareSerial.h:31:0,
                 from /usr/local/src/esp8266-arduino/cores/esp8266/Arduino.h:245,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:15,
                 from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:
/usr/local/src/esp8266-arduino/cores/esp8266/Stream.h:38:7: note:   since type 'Stream' has pure virtual functions
 class Stream: public Print {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:175:67: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&, Stream&)'
     PubSubClient client(server, 1883, callback, shimClient, stream);
                                                                   ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:175:67: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 5 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:179:19: error: 'MQTT_MAX_PACKET_SIZE' was not declared in this scope
     byte length = MQTT_MAX_PACKET_SIZE+1;
                   ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:188:12: error: 'class Stream' has no member named 'expect'
     stream.expect(bigPublish+9,length-9);
            ^
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:4:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:198:21: error: 'class Stream' has no member named 'error'
     IS_FALSE(stream.error());
                     ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/lib/BDDTest.h:9:62: note: in definition of macro 'TEST'
 #define TEST(x) { if (!bddtest_test(__FILE__, __LINE__, #x, (x))) return false;  }
                                                              ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:198:5: note: in expansion of macro 'IS_FALSE'
     IS_FALSE(stream.error());
     ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp: In function 'int test_receive_qos1()':
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:214:59: error: no matching function for call to 'PubSubClient::PubSubClient(byte [4], int, void (&)(char*, byte*, unsigned int), ShimClient&)'
     PubSubClient client(server, 1883, callback, shimClient);
                                                           ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:214:59: note: candidates are:
In file included from /usr/local/src/esp8266-arduino/libraries/pubsubclient/tests/src/receive_spec.cpp:1:0:
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
    PubSubClient(Client& c, String hostname, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:89:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
    PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:87:4: note:   candidate expects 3 arguments, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
    PubSubClient(Client& c);
    ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:84:4: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
       ^
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
/usr/local/src/esp8266-arduino/libraries/pubsubclient/src/PubSubClient.h:20:7: note:   candidate expects 1 argument, 4 provided
Makefile:236: recipe for target '/tmp/ogMainArduino/ogMainArduino_generic/publish_spec.cpp.o' failed
make: *** [/tmp/ogMainArduino/ogMainArduino_generic/publish_spec.cpp.o] Error 1
Makefile:236: recipe for target '/tmp/ogMainArduino/ogMainArduino_generic/connect_spec.cpp.o' failed
make: *** [/tmp/ogMainArduino/ogMainArduino_generic/connect_spec.cpp.o] Error 1
Makefile:236: recipe for target '/tmp/ogMainArduino/ogMainArduino_generic/receive_spec.cpp.o' failed
make: *** [/tmp/ogMainArduino/ogMainArduino_generic/receive_spec.cpp.o] Error 1
root@1eede81c43bf:/usr/local/src/og/OpenGarage#

Home Assistant integration?

Has anyone looked into integration in homeassistant.io? Myq is a megacorp that is being non-cooperative and this looks like a great potential option.

ap_update.html is missing from html

ap_update.html is missing from html folder, and after running html2raw, firmware fails to compile due to missing const char ap_home_html[] PROGMEM = R in the htmls.h file.

Just ran into this while adding a few more options to my opengarage firmware. I just copied html from original htmls.h to create new ap_update.html and ran html2raw tool. I am guessing not a lot of people have done this since it would definitely create a compile error.

Option Request: Set Hostname

I'd like to be able to set the hostname (set in the dhcp request) to something sane, so I can easily use DNS resolution to address my OG. Right now it's ESP_(random hex) rather than "opengarage".

This is pretty low priority.

WeMos D1 Mini- Access point mode works great but not webserver mode

Today I tried flashing OpenGarage to a WeMos D1 Mini without any of the input / output hardware attached. I changed the defines.h file to reflect the pin assignments of my board.
After it was done uploading, the blue light flashed rapidly, so I knew it was in access point mode. I connected to the access point and entered my credentials. It connected to my home network, and told me the IP address I should visit once I reconnect my device (my phone in this case) to the home network. Since the WeMos's D0 pin (GPIO 16) was not connected to the reset pin, I pressed the reset button and it started this strange flashing pattern with the blue led, two long and one short flash. When I ran the "Fing" app on my phone the ESP showed up on the assigned address, but when I went to ping it, it gave me over 90% packet loss. Could there be a problem since I'm using version 1.6.8 of the Arduino IDE and version 2.2.0 of the Arduino core (in boards manager)? Do I need to connect the ultrasonic range finder or the push button for it to work correctly?
Thanks for your help.

FW 1.1.2 Beta - MQTT non default port bug

Running Firmware 1.1.2

When trying to connect to a mosquitto broker listening on a port other than 1883, the connection is not made. I see nothing logged in the mosquitto log nor are any messages received by subscribers.

to rule out firewall related issues, I issued a message to a new topic using mosquitto_pub while the mosquitto service is running on 1884, and was received fine by mosquitto_sub. Connections are logged properly.

Auto-close not working as expected

(Creating a new issue for this)

Originally posted by @mrblack7 in #23 (comment)

I have it set to auto-close after 50 mins. Most of the time, it is not closing even after 1 hour... (see
attached latest log as an example)
The latest closed event was done manually using the RF remote.

image

image

On a couple of occasions, I have had it auto-close within 10 mins. One time I was backing out the car and it nearly closed the door on me!

I didn't have this issue prior to updating 1.0.9 a couple of weeks ago. I was previously on 1.0.6 I think.

Let me know if you need any more info. Happy to help!

sensor keeps opening/closing & signal beeping

Hi, I have the latest firmware. I also have the Home assistant component and it all works well except a couple of issues:

  1. Keep getting notifaction that the door is open in both Blynk and Home assistant. I have a ceiling mount and threshold set a at 40... This is annoying as I cannot use this for notifications at present as these go off all the time. I have attached a screenshot of the sensor. Red bars indicate that the door is open.
    capture

  2. I use the Linksys Velop wifi mesh. The unit is placed in the Garage (duh ;-) which picks up 2 of the velop AP's. The issue is that the unit then keeps beeping every time it disconnects and reconnects... Is there anyway I can turn this off?

Thanks

Compiling errors out with updater.h file from modified folder.

Arduino 1.6.5... Compiles fine without the modified file (Updater.h) Error message:

`Arduino: 1.6.5 (Windows 8.1), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 4M (1M SPIFFS), ck, Disabled, None"

C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp: In constructor 'UpdaterClass::UpdaterClass()':
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp:17:3: error: class 'UpdaterClass' does not have any field named '_async'
: _async(false)
^
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp: In member function 'bool UpdaterClass::_writeBuffer()':
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp:206:7: error: '_async' was not declared in this scope
if(!_async) yield();
^
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp:208:7: error: '_async' was not declared in this scope
if(!_async) yield();
^
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp:212:7: error: '_async' was not declared in this scope
if(!_async) yield();
^
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp: In member function 'size_t UpdaterClass::write(uint8_t*, size_t)':
C:\Users\Roger\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp:244:9: error: '_async' was not declared in this scope
if(!_async) yield();
^
Error compiling.`

Compiling Error(s)

Trying to compile with current downloads of Blynk and Esp8266 Core. I have ran through it several times and just feel like I am missing something. I am sort of a code retard so I am sure this is just my mistake, any help you can offer would be greatly appreciated! I have made the modifications to Updater.h as well as BlynkSimpleEsp8266.h.

Arduino: 1.6.5 (Mac OS X), Board: "NodeMCU 0.9 (ESP-12 Module), 80 MHz, 115200, 4M (1M SPIFFS)"

/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp: In constructor 'UpdaterClass::UpdaterClass()':
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:18:3: error: class 'UpdaterClass' does not have any field named '_async'
 : _async(false)
   ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp: In member function 'bool UpdaterClass::begin(size_t, int)':
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:55:14: error: 'UPDATE_ERROR_BOOTSTRAP' was not declared in this scope
     _error = UPDATE_ERROR_BOOTSTRAP;
              ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:131:5: error: '_bufferSize' was not declared in this scope
     _bufferSize = FLASH_SECTOR_SIZE;
     ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:133:5: error: '_bufferSize' was not declared in this scope
     _bufferSize = 256;
     ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:135:25: error: '_bufferSize' was not declared in this scope
   _buffer = new uint8_t[_bufferSize];
                         ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp: In member function 'bool UpdaterClass::_writeBuffer()':
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:228:9: error: '_async' was not declared in this scope
     if(!_async) yield();
         ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:233:9: error: '_async' was not declared in this scope
     if(!_async) yield();
         ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp: In member function 'size_t UpdaterClass::write(uint8_t*, size_t)':
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:264:31: error: '_bufferSize' was not declared in this scope
   while((_bufferLen + left) > _bufferSize) {
                               ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:272:9: error: '_async' was not declared in this scope
     if(!_async) yield();
         ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp: In member function 'size_t UpdaterClass::writeStream(Stream&)':
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:351:57: error: '_bufferSize' was not declared in this scope
         toRead = data.readBytes(_buffer + _bufferLen,  (_bufferSize - _bufferLen));
                                                         ^
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp: In member function 'void UpdaterClass::printError(Stream&)':
/Applications/Arduino.app/Contents/Java/hardware/esp8266com/esp8266/cores/esp8266/Updater.cpp:398:24: error: 'UPDATE_ERROR_BOOTSTRAP' was not declared in this scope
   } else if (_error == UPDATE_ERROR_BOOTSTRAP){
                        ^
Error compiling.

  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.

Any firmware past 1.0.8 will not connect with Blynk

How do I get past this? I have left my OpenGarage on 1.0.8 for so long because anytime I upgrade to a newer firmware I keep getting Generic Board offline errors in Blynk and even getting a new key and everything does nothing to fix it while going to the GUI via the IP address on my computer works fine. I go back to 1.0.8 and everything works fine again.

F/W 1.10 unresponsive after 24 hours

Updated to F/W 1.10 on my OpenGarage units about 48 hours ago, and twice now within 24 hours of each reboot, it has stopped responding via WiFi. I have two units, and they usually stop working within close proximity of each other.

According to my WiFi access point, it is still connected, and sitting on the lowest data rate, but it cannot be pinged. Their webpage is not accessible, and nor does the API work. They are still flashing indicating they are polling.

I use them with HomeAssistant which polls through the API. I do not use the Blynk or IFTTT integration.

OG 1.0.9 firmware gives blank page on Options

After upgrading my OG with the new 1.0.9 firmware, I noticed that clicking the options button in the web UI almost always results in a blank page at http://devip/vo. After rebooting the device a couple of times I can finally get the options page to display.

I've replicated this in Chrome and Internet Explorer. I can provide any logs/data you would like.

Thanks,
B.

1.0.8 no connection to Blynk

Hi there,

Running 1.0.8 now and installed Blynk. Scanned QR code to add new project. Emailed the token and put this into OG, saved and rebooted. Blynk app just says "Generic Board wasn't online yet"? How do I debug that? Logs are completely empty.

Possible unnecessary modification of Updater.h in ESP8266 library

I am all for modifying existing libraries when there's a clear purpose. I don't believe we need to expose reset method at all.

The only place I see the reset used is here:

void on_sta_upload_fin() {

  if(!verify_device_key()) {
    server_send_result(HTML_UNAUTHORIZED);
    Update.reset();       // --> To this Update.end(false);
    return;
  }

This is an if statement from bool UpdaterClass::end(bool evenIfRemaining) which can be used to call reset if the upload is not finished, and we give it a false parameter.

if(hasError() || (!isFinished() && !evenIfRemaining)){
#ifdef DEBUG_UPDATER
    DEBUG_UPDATER.printf("premature end: res:%u, pos:%u/%u\n", getError(), progress(), _size);
#endif

    _reset();
    return false;
  }

Did I misinterpreted something along the way?

Unstable WiFi under 1.0.8

Hi there,

I have this deployed under Home Assistant and while I love the integration, the reliability is not so good, at least in my revision.

image

image

I have removed it from the garage and have it sitting next to the router for ping testing and it is consistently intermittent. Anyone else seen this behaviour?

homebridge-og custom polling

It seems the homebridge-og plugin polls for status every 4 minutes or so. This would be great if it can poll more often or have a custom poll, which could be set in the config.json
This would allow automations to fire off when the garage is opened outside of the homekit system (IE RF remote)

Cannot open/close garage with Device Key with Special characters

The device key ByC0b1xN##a9^0w$nz3k works on the all the options pages but gets truncated (as seen via chrome developer tools) when submitting an open/close door command from the main page resulting in an inability to open/close the garage.

Mitigated by switching to a pure alpha character device key.

Firmware version 1.11

Web unresponsive after configuring mqtt

When I point to my Mosquitto server my webui becomes unresponsive. I've tried this twice now after a factory reset, configure wifi, point to MQTT server, and then the webui will not come up. As I'm typing this I just received two messages with the status, so I suppose it's still working I'm just unable to make any other configuration changes.

MQTT with username/password

I've flashed og_1.1.0.bin to a new device, and it works very well.

After I did the basic configuration I've tried to enable mqtt, where I can only insert the IP of my mqtt server. Is there any way to configure username/password for the mqtt broker? If I submit the settings, with only the IP inserted, the webinterface stopped working and I cannot change anything after that. The device is still responding and is connected over Wifi, but http access is gone.

Change Connected SSID without a Reset?

Maybe not an issue, but I was wondering if you'd be open to an additional setting for changing the SSID the device is connected to.

I recently made some changes to my home network and needed to swap SSID and passphrase, which meant climbing my ladder to the top of my garage in the summer heat to reset my OpenGarage.

I know it is fraught with some ugly edge cases (what if the network you are attempting to connect to rejects the connection).

But I think a valid use case could be:

  1. Input new SSID and Passphrase
  2. If connected, OK, proceeed.
    3.a. If failed, move back to Open AP mode.
    OR
    3.b. Go back to the previous SSID and passphrase.

I don't know how close to the memory edge the device is currently and if it could support such a thing.

Thoughts?

Feature Request: Temperature Sensor Support

I really love this project, and it's amazing how polished it is :-)

I've been using this for the last month and have it integrated with Home Assistant along with Home Bridge (for Siri support).

image

More on getting that working here: https://community.home-assistant.io/t/opengarage-open-source-wifi-garage-opener/17228/112?u=mattie47

I've been trying to get a DHT22 sensor to also work, and hopefully report the data via MQTT back to Home Assistant, and possibly report it in the Web interface.

I've tried to follow the instructions in this thread https://opengarage.io/forums/topic/wemos-d1-open-garage-with-dht22-temperaturehumidity-sensor/ however haven't had much luck (and have replied there also).

I'm just curious if there are any plans to add temp support, and or whether there may already be a fork that perhaps have temp support in it? :-)

Thanks,

Matt

Error Code 16 setting STA ssid/password

When I compile this and upload I couldn't get the AP mode page to update the SSID and password, whenever I submit the data it would respond with

Error code: 16, item: ssid

Adding debug statements the ESP isn't receiving any of the arguments - I could verify they were sent in fiddler so the HTML code is correct. Digging into this it seems that the ESP webserver component being used expects the arguments to be in body of the message not query parameters when a POST - the only way I can get this to work is either adding the ?ssid=dsfdsfs&pass=sdfsdf into the body being POSTed or the easier way is to just change the page code to use a GET instead of a POST. This seems to fix it.
Not sure why this hasn't been an issue for the existing code- I am using the later arduino port

From xhr.open('POST', comm, true); xhr.send();
to xhr.open('GET', comm, true); xhr.send();

Fixes it as well as adding the strings to the body via the send

xhr.open('POST', comm, true); xhr.send(comm);

Per this article it seems this is all to be expected as it mentions in a post the form data should be in the body
https://www.w3schools.com/tags/att_form_method.asp

Feature Request: Add temperature and humidity to Blynk

I have tried, and not been able to add the temperature and humidity readings from a sensor to the blynk dashboard. I have worked out that Virtual pins need to be added and mapped but I have not been able to successfully compile a working version - I seem to be missing something...

Cant Compile with Arduino IDE

Nice project! You're about 3 months ahead of my similar project in terms of development cycle but a few years ahead in terms of C++ knowledge... I started my project late last summer but got sidetracked trying to learn Lua and get this working on a NodeMCU which sucked, but I finally decided to use the arduino environment because it's way more feature rich.

So I saw your video on this project on youtube and it was really exciting, because you've built about 90% of what I intended to make... but I cannot get the arduino example to compile, it can't find OpenGarage.h, which makes a little sense. Is that meant to be installed as a library?

Is there a way to build this in Arduino without the example wrapper?

I love the functionality you've built, and I would like to make some modifications (ex. support two open/close reed sensors instead of distance sensor) but can't get the base to compile to start working :(

Not using static ip

Running firmware 1.1.0, opengarage randomly gets the IP from the DHCP instead of using the static one set. Any idea why?

Feature Request: Ultrasonic sensor & NO / NC Switch

Would it be possible to add an option for the ultrasonic sensor to detect if the vehicle is in the garage and simultaneously use a switch to detect if a roller type door is closed or not closed, rather than having them as only mutually exclusive options.

WiFi setup with special characters or long length

My SSID is 32 characters long and includes hyphens, but no other special characters. My password is shorter (12 characters) and does not have any special characters. I am unable to set it up. When in AP mode, entering the SSID and password does nothing when I hit submit.... no beep, no refresh. Also, no wifi networks show up. I added a test SSID to my network that has a short name and password, and it setup just fine. The problem here is that I don't want to have a new SSID just for this device. All my 30 or so other devices are on the other SSID. Is there any way this can be fixed so the code will accept the long input? I am assuming the issue is the length. Or, is there any other secret way I can input my long SSID once I am connected with the shorter testing SSID?

FEATURE REQUEST: Https with Lets Encrypt?

Would be great if there was an HTTPS option, even better if this could be tied into a lets encrypt service so that we can expose the OpenGarage web server confidently...

Thanks again for a great piece of Kit!

Wireless Network Status - Show Signal Strength

It would be handy to show the signal strength in the app, if the chip can support that. There are times when a wireless network signal dips (channel interference, etc) and it would be handy to know the last reading.

Feature Request: Multiple Device Key Types

Just installed OG today and must say that I love it.

It would be great to have an option where I can basically create multiple device keys with different access levels.

Admin Key: Allows to change settings on OG and perform basic operation.
User Key: Only allows open/close of the door.

Currently, if I give the device key to a guest/tenant, they have the ability to really go in and goof things up. It would be nice to avoid that.

If I'm missing something, I'd be delighted. Also happy to help out and throw up a PR if this would be a quick change on the code side -- I'm somewhat capable even though I have only toyed lightly with an Arduino and haven't touched C++ in 15-20 years. ๐Ÿ˜†

Cheers!

click_relay to use set_relay?

Seems like the code would be a bit cleaner if click_relay() were to use set_relay() to avoid another place to change the pin definition if it needed to be.

1.0.7 doesn't stick

Hi there,

Purchased a device 6-8 months ago and only just sparked it up for the 1st time today. Came with 1.0.6 and I tried updating to 1.0.7 and it won't work with that firmware. Do I need newer hardware for that version? I used the og_reflash to roll it back to 1.0.6 and immediately give me the 4 tones after flashing, something 1.0.7 doesn't do.

Configuration option to set time and or chose NTP server

I run with the opengarage completely segregated from the internet. So that log timestamps are accurate, it would be nice to be able set the time manually or, better yet, specify an IP address for time to sync via NTP.

Firmware version 1.11

Ultrasonic sensor issues

I recently bought two separate units. I configured them both the same. One of them is working great, but the other seems to be doing bad things.

  1. When the door is physically open, OG says that it's closed, and that the distance is ~150 cm.
  2. When the door is physically closed, OG says that it's open, and that the distance is 0 cm.

Did I just get a bad unit?

Error at power on (relay click )

Everything is working as it should but each time i turn off (power outage) and power on the device, the relay click 2 short time (+/- 500ms) and 1 long time (+/- 2000ms)
I also have reflashed with nocemcu pyflasher (yes, wypes all data)
and note that if i reboot(via web interface) or press the reset on the d1mini the relay dosent click.

the relay is on pin D8 of a wemo d1 mini. any idea ?

Add capability for MQTT to send closing/opening

I use the Home Assistant integration to read the mqtt messages, which works like a charm for me.
But to really top it off, I would need to also receive the closing and opening events.

On the Home Assistant side it would look like this:

cover:
  - platform: mqtt
    name: "Garage door"
    device_class: "garage"
    state_topic: "My OpenGarage/OUT/STATE"
    command_topic: "My OpenGarage/IN/STATE"
    payload_open: "open"
    payload_close: "close"
    state_open: "OPEN"
    state_opening: "OPENING"
    state_closed: "CLOSED"
    state_closing: "CLOSING"
    optimistic: false
    retain: false

Documentation on this: https://www.home-assistant.io/integrations/cover.mqtt/

No firmware or any other information on web interface

After connecting opengarage to wifi and adding blynk app token, the web interface shows no info about the firmware or status. I've connected the garage door opener to the door and clicking on the hardware button opens and closes the door.

I've attached a screenshot of how the web interface looks like.
OpenGarage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.