3 Commits

25 changed files with 29666 additions and 30090 deletions

View File

@@ -9,10 +9,10 @@ Lighthub allows connecting together:
* Contact sensors (switches, buttons etc)
* Analog sensors (Leak detectors, Knobs etc)
* 1-Wire temperature sensors (up to 20 on single bus)
* Temperature/Humidity/CO2 sensors: DHT22, CS811, HDC1080
* Temperature/Humidity/CO2 sensors: DHT22, CS811, HDC1080 and any type of Modbus connected devices
* Standard nonexpensive Relay board with TTL inputs, [like this](http://ali.pub/2zlosh) to control AC powered lamps, floor heaters, boilers etc
* [Standard nonexpensive LED dimmers](http://ali.pub/2zlokp) and [AC DMX-512 dimmers](http://ali.pub/2zlont)
* Modbus RTU devices (Currently, are deployed two types of Modbus devices: AC Dimmer and Ventilation set (Based on [Vacon 10 controller](http://files.danfoss.com/download/Drives/Vacon-10-Quick-Guide-DPD00714F1-UK.pdf))
* Modbus RTU devices (Currently, possible to control two types of Modbus devices: AC Dimmer and Ventilation set (Based on [Vacon 10 controller](http://files.danfoss.com/download/Drives/Vacon-10-Quick-Guide-DPD00714F1-UK.pdf)) and configure polling of virtually any Modbus device.
* Simple DMX wall sensor panel [like this](http://ali.pub/2zlohe)
[List of non-expensive compatible components from AliExpress here](http://ppv.alipromo.com/custom/promo.php?hash=pjagwaovaero6vkeabjpkpvy4gznbgkc&landing_id=39661)
@@ -22,7 +22,8 @@ Lighthub allows connecting together:
![alt text](docs/LightHubAppDiagram.png "LightHub application diagram")
Where is possible both, to configure local control/mapping between inputs and outputs (light, floor heating thermostats) and remote control from MQTT enabled software. At the moment, LightHub tested and perfectly working with following set of complementary free software:
Where is possible both, to configure local control/mapping between inputs and outputs (light, floor heating thermostats) and remote control from MQTT enabled software and between controllers. At the moment, LightHub tested and perfectly working with following set of complementary free software:
* [HomeAssistant](https://www.home-assistant.io) - the best choice of HomeAutomation system
* [Openhab or Openhab2 Smarthome software](http://www.openhab.org/)
Openhab provides own native mobile app both, for IoS and Android, and even allow you to use Apple's HomeKit and Google Home to say "Siri, turn on light in bedroom" or "Hey Google, set bedroom light to Red" but requires some server to be installed in-premises (Raspberry PI with [Openhabian](https://docs.openhab.org/installation/openhabian) will good enough)
* [HomeRemote mobile client](http://thehomeremote.com/)
@@ -32,11 +33,13 @@ Home Remote mobile applicatios for IoS and Android requires just MQTT broker to
Scalability of Lighthub is virtually unlimited: Setup so many controllers you needed in most convenient places of your house - MQTT broker will allow controllers communicate each other and with Openhab/NodeRed/HomeRemote and propagate commands across network.
# [Please refer to our Wiki for insructions.](https://github.com/anklimov/lighthub/wiki/Configuring)
* [Russian-language Wiki](https://www.lazyhome.ru/dokuwiki/doku.php)
* [Compiling and flashing](https://github.com/anklimov/lighthub/wiki/Compiling-and-flashing)
* [Configuring](https://github.com/anklimov/lighthub/wiki/Configuring)
* [Channel commands](https://github.com/anklimov/lighthub/wiki/Channel-commands)
* [OpenHab integration](https://github.com/anklimov/lighthub/wiki/OpenHab--integration)
* [Doxygen developers documentation](https://anklimov.github.io/lighthub/docs/html/index.html)
* [Latest Release notes](https://github.com/anklimov/lighthub/releases/tag/v3.0.0)
# Platforms specific details:
@@ -55,7 +58,7 @@ Scalability of Lighthub is virtually unlimited: Setup so many controllers you ne
**ESP8266, ESP32**: (Tested)
* DMX-OUT on USART1 TX
* DMX-IN - disabled - not possible to deploy in ESP8266
* Modbus - disabled. Might be configured in future on USART0 instead CLI/DEBUG
* Modbus - disabled on ESP8266, Might be configured in future on USART0 instead CLI/DEBUG, on ESP32 binded with UART2
* Uses Wifi interface instead wired connection
**NRF52840** : Still early development stage
@@ -67,11 +70,14 @@ Scalability of Lighthub is virtually unlimited: Setup so many controllers you ne
* USE_1W_PIN=49 // use direct connection to 1W devices on 49 pin, no I2C bridge DS2482-100
* SD_CARD_INSERTED // enable sd-card support and fix lan starting
* SERIAL_BAUD=115200 // set baud rate for console on Serial0
* Wiz5500 //Use Wiznet 5500 library instead Wiznet 5100
* Wiz5500 //Use Wiznet 5500 library instead universal Wiznet
* Wiz5100 //Use Wiznet 5500 library instead universal Wiznet
* DISABLE_FREERAM_PRINT // disable printing free Ram in bytes
* CUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:00 //set firmware macaddress
* DMX_DISABLE //disable DMX support
* MODBUS_DISABLE // disable Modbus support
* MODBUS_DISABLE // disable old Modbus driver
* MBUS_DISABLE // disable new Modbus driver
* MODBUS_TX_PIN=13
* OWIRE_DISABLE // disable OneWire support
* ARTNET_ENABLE //Enable Artnet protocol support
* AVR_DMXOUT_PIN=18 // Set Pin for DMXOUT on megaatmega2560
@@ -82,11 +88,27 @@ Scalability of Lighthub is virtually unlimited: Setup so many controllers you ne
* WIFI_MANAGER_DISABLE //Disable wifi manager for esp8266
* COUNTER_DISABLE //disable Counter, Uptime input support (for RAM savings on mega2560)
* DHT_DISABLE //disable DHT input support (for RAM savings on mega2560)
* PID_DISABLE // Disable PID regulator
* STATUSLED // Enable RGB status led on pins 50,51,52 (DUE only)
* DMX_SMOOTH //Smooth transition on DMX channels (DUE only)
* OTA // Enable Other The Air firmware upload
* W5500_CS_PIN=53 //Defines CS pin for Ethernet adapter (10-th by default)
* WIFI_ENABLE //Enable WiFi for ESP (Wiznet by default)
* SPILED_DISABLE //Disable SPI LED library
* AC_DISABLE //Disable UART Hayer Air condition driver
* M5STACK //Logging to M5Stack OLED screen
* NO_HOMIE //Disable HOMIE discovery topics
* BRIGHT_STEP //Scale DMX bright - Table1
* BRIGHT_LOG //Scale DMX bright - Table2
* MCP23017 allow I2C input port extender on MCP23017 chip
* RESTART_LAN_ON_MQTT_ERRORS //reinit LAN if many mqtt errors occured
* DEVICE_NAME short handy device name which is used instead of mac for download config http://{MY_CONFIG_SERVER}/{DEVICE_NAME}_config.json
* SYSLOG_ENABLE enable UDP SYSLOG support feature(under DEVELOPMENT) that must be configured through config file
* WITH_PRINTEX_LIB use PrintEx library (develop experimental feature)
* CSSHDC_DISABLE //Disable CS811 and HDC1080 sensors support
* FASTLED - using FASTLED library instead default ADAFRUIT_LED
* SCALE_VOLUME_100 using 0..100 scaling in /set topics instead 0.255 (default)

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
1234567890

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -20,4 +20,5 @@ int abstractOut::isActive()
int abstractOut::Setup()
{
if (item) item->setCmd(CMD_OFF);
return 1;
}

View File

@@ -1041,6 +1041,7 @@ uint16_t readCache::analogReadCached (uint8_t _pin)
uint8_t readCache::digitalReadCached(uint8_t _pin)
{
///TBD
return 0;
}
#ifdef MCP23017

View File

@@ -575,6 +575,46 @@ return 0;
// Recursive function with small stack consumption
// if cmd defined - execute Ctrl for any group members recursively
// else performs Activity check for group members and return true if any member is active
bool digGroup (aJsonObject *itemArr, itemCmd *cmd, char* subItem)
{ if (!itemArr || itemArr->type!=aJson_Array) return false;
// Iterate across array of names
aJsonObject *i = itemArr->child;
configLocked++;
while (i) {
if (i->type == aJson_String)
{ //debugSerial<< i->valuestring<<endl;
aJsonObject *nextItem = aJson.getObjectItem(items, i->valuestring);
if (nextItem && nextItem->type == aJson_Array) //nextItem is correct item
{
Item it(nextItem);
if (cmd && it.isValid()) it.Ctrl(*cmd,subItem,false); //Execute (non recursive)
//Retrieve itemType
aJsonObject * itemtype = aJson.getArrayItem(nextItem,0);
if (itemtype && itemtype->type == aJson_Int && itemtype->valueint == CH_GROUP)
{ //is Group
aJsonObject * itemSubArray = aJson.getArrayItem(nextItem,1);
short res = digGroup(itemSubArray,cmd,subItem);
if (!cmd && res)
{
configLocked--;
return true; //Not execution, just activity check. If any channel is active - return true
}
}
else // Normal channel
if (!cmd && it.isValid() && it.isActive())
{
configLocked--;
return true; //Not execution, just activity check. If any channel is active - return true
}
}
}
i = i->next;
} //while
configLocked--;
return false;
}
/* LOCKS LEAK - maintenance critical fix
bool digGroup (aJsonObject *itemArr, itemCmd *cmd, char* subItem)
{ if (!itemArr || itemArr->type!=aJson_Array) return false;
// Iterate across array of names
@@ -605,6 +645,7 @@ bool digGroup (aJsonObject *itemArr, itemCmd *cmd, char* subItem)
configLocked--;
return false;
}
*/
int Item::Ctrl(itemCmd cmd, char* subItem, bool allowRecursion)
{

View File

@@ -943,23 +943,23 @@ return false;
int itemCmd::doMapping(aJsonObject *mappingData)
{
return 0;
}
int itemCmd::doReverseMapping (aJsonObject *mappingData)
{
return 0;
}
int itemCmd::doMappingCmd(aJsonObject *mappingData)
{
return 0;
}
int itemCmd::doReverseMappingCmd (aJsonObject *mappingData)
{
return 0;
}
char * itemCmd::toString(char * Buffer, int bufLen, int sendFlags, bool scale100 )

View File

@@ -403,7 +403,7 @@ void setupSyslog()
char *syslogServer = getStringFromConfig(udpSyslogArr, 0);
if (n>1) syslogPort = aJson.getArrayItem(udpSyslogArr, 1)->valueint;
inet_ntoa_r(Ethernet.localIP(),syslogDeviceHostname,sizeof(syslogDeviceHostname));
_inet_ntoa_r(Ethernet.localIP(),syslogDeviceHostname,sizeof(syslogDeviceHostname));
infoSerial<<F("Syslog params:")<<syslogServer<<":"<<syslogPort<<":"<<syslogDeviceHostname<<endl;
udpSyslog.server(syslogServer, syslogPort);
udpSyslog.deviceHostname(syslogDeviceHostname);
@@ -820,7 +820,9 @@ void onInitialStateInitLAN() {
WiFi.mode(WIFI_STA); // ESP 32 - WiFi.disconnect(); instead
infoSerial<<F("WIFI AP/Password:")<<QUOTE(ESP_WIFI_AP)<<F("/")<<QUOTE(ESP_WIFI_PWD)<<endl;
#ifndef ARDUINO_ARCH_ESP32
wifi_set_macaddr(STATION_IF,mac); //ESP32 to check
#endif
WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD));
@@ -1256,24 +1258,24 @@ void cmdFunctionIp(int arg_cnt, char **args)
/*
#if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__) || defined(NRF5)
DNSClient dns;
#define inet_aton(cp, addr) dns.inet_aton(cp, addr)
#define _inet_aton(cp, addr) dns._inet_aton(cp, addr)
#else
#define inet_aton(cp, addr) inet_aton(cp, addr)
#define _inet_aton(cp, addr) _inet_aton(cp, addr)
#endif
*/
// switch (arg_cnt) {
// case 5:
if (arg_cnt>4 && inet_aton(args[4], ip)) saveFlash(OFFSET_MASK, ip);
if (arg_cnt>4 && _inet_aton(args[4], ip)) saveFlash(OFFSET_MASK, ip);
else saveFlash(OFFSET_MASK, ip0);
// case 4:
if (arg_cnt>3 && inet_aton(args[3], ip)) saveFlash(OFFSET_GW, ip);
if (arg_cnt>3 && _inet_aton(args[3], ip)) saveFlash(OFFSET_GW, ip);
else saveFlash(OFFSET_GW, ip0);
// case 3:
if (arg_cnt>2 && inet_aton(args[2], ip)) saveFlash(OFFSET_DNS, ip);
if (arg_cnt>2 && _inet_aton(args[2], ip)) saveFlash(OFFSET_DNS, ip);
else saveFlash(OFFSET_DNS, ip0);
// case 2:
if (arg_cnt>1 && inet_aton(args[1], ip)) saveFlash(OFFSET_IP, ip);
if (arg_cnt>1 && _inet_aton(args[1], ip)) saveFlash(OFFSET_IP, ip);
else saveFlash(OFFSET_IP, ip0);
// break;
@@ -1507,10 +1509,23 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args)
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) //|| defined (NRF5)
HTTPClient httpClient;
#if defined(WIFI_ENABLE)
WiFiClient configEthClient;
#else
EthernetClient configEthClient;
#endif
String fullURI = "http://";
fullURI+=configServer;
fullURI+=URI;
#if defined(ARDUINO_ARCH_ESP8266)
httpClient.begin(configEthClient,fullURI);
#else
httpClient.begin(fullURI);
#endif
int httpResponseCode = httpClient.GET();
if (httpResponseCode > 0) {
infoSerial.printf("[HTTP] GET... code: %d\n", httpResponseCode);

View File

@@ -52,6 +52,7 @@ int out_dmx::getChanType()
}
return 0;
}
return 0;
}
int out_dmx::PixelCtrl(itemCmd cmd, char* subItem, bool show)

View File

@@ -323,7 +323,7 @@ void ReadUniqueID( uint32_t * pdwUniqueID )
}
int inet_aton(const char* aIPAddrString, IPAddress& aResult)
int _inet_aton(const char* aIPAddrString, IPAddress& aResult)
{
// See if we've been given a valid IP address
const char* p =aIPAddrString;
@@ -393,7 +393,7 @@ int inet_aton(const char* aIPAddrString, IPAddress& aResult)
* @return either pointer to buf which now holds the ASCII
* representation of addr or NULL if buf was too small
*/
char *inet_ntoa_r(IPAddress addr, char *buf, int buflen)
char *_inet_ntoa_r(IPAddress addr, char *buf, int buflen)
{
short n;
char intbuf[4];

View File

@@ -54,8 +54,8 @@ void parseBytes(const char* str, char separator, byte* bytes, int maxBytes, int
int log(const char *str, ...);
void printFloatValueToStr(float value, char *valstr);
void ReadUniqueID( uint32_t * pdwUniqueID );
int inet_aton(const char* aIPAddrString, IPAddress& aResult);
char *inet_ntoa_r(IPAddress addr, char *buf, int buflen);
int _inet_aton(const char* aIPAddrString, IPAddress& aResult);
char *_inet_ntoa_r(IPAddress addr, char *buf, int buflen);
void printIPAddress(IPAddress ipAddress);
char* setTopic(char* buf, int8_t buflen, topicType tt, const char* suffix = NULL);
void printUlongValueToStr(char *valstr, unsigned long value);

View File

@@ -94,7 +94,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/Ethernet2
ArduinoHttpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/knolleary/pubsubclient.git
@@ -105,8 +105,8 @@ lib_deps =
Streaming
https://github.com/anklimov/NRFFlashStorage
https://github.com/adafruit/Adafruit_NeoPixel.git
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
https://github.com/arcao/Syslog.git
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -141,7 +141,7 @@ lib_ignore =
lib_deps =
https://github.com/ebenolson/WIFIMANAGER-ESP32.git
https://github.com/zhouhan0126/WebServer-esp32.git
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/knolleary/pubsubclient.git
Streaming
@@ -160,8 +160,8 @@ lib_deps =
SparkFun CCS811 Arduino Library@~1.0.7
M5Stack
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
https://github.com/arcao/Syslog.git
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -199,7 +199,7 @@ lib_ignore =
lib_deps =
https://github.com/ebenolson/WIFIMANAGER-ESP32.git
https://github.com/zhouhan0126/WebServer-esp32.git
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/knolleary/pubsubclient.git
Streaming
@@ -216,8 +216,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
https://github.com/arcao/Syslog.git
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -251,7 +251,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxDue
ArduinoHttpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/Ethernet5100
@@ -267,8 +267,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -309,7 +309,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxDue
ArduinoHttpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/Ethernet.git
@@ -325,8 +325,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -355,7 +355,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxSimple
https://github.com/anklimov/httpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial
@@ -371,8 +371,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -402,7 +402,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxSimple
https://github.com/anklimov/httpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial
@@ -417,8 +417,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -464,7 +464,7 @@ lib_deps =
;https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/ESP-Dmx
ESP8266HTTPClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/knolleary/pubsubclient.git
@@ -480,8 +480,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA.git
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -513,7 +513,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxSimple
https://github.com/anklimov/httpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial
@@ -528,8 +528,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -562,7 +562,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxDue
ArduinoHttpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/Ethernet2
@@ -579,8 +579,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -617,7 +617,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxDue
ArduinoHttpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/Ethernet
@@ -634,8 +634,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -665,7 +665,7 @@ lib_deps =
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxSimple
https://github.com/anklimov/httpClient
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial
@@ -680,8 +680,8 @@ lib_deps =
ClosedCube HDC1080
SparkFun CCS811 Arduino Library@~1.0.7
Adafruit NeoPixel
https://github.com/anklimov/ArduinoOTA
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/anklimov/ArduinoOTA#8feeea77869a5039857d2d23d0a46f8a8fe1514a
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
https://github.com/arcao/Syslog.git
br3ttb/PID@^1.2.1
monitor_speed = 115200
@@ -726,7 +726,7 @@ lib_ignore =
M5Stack
ArduinoOTA
lib_deps =
https://github.com/anklimov/aJson
https://github.com/anklimov/aJson#b063de5fb8041e039aaff06b21790edb12c22fdf
https://github.com/anklimov/CmdArduino
ArduinoHttpClient
https://github.com/knolleary/pubsubclient.git
@@ -734,7 +734,7 @@ lib_deps =
UIPEthernet
https://github.com/anklimov/NRFFlashStorage
Adafruit NeoPixel
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library#65438e94ef5cdeb73d7a79d37b8ca46ee9331cd2
SPI
br3ttb/PID@^1.2.1
monitor_speed = 115200