Merge pull request #33 from livello/IS-ENC

lib_ignore, build_flags, DHT, counter, domoticz, WITH_PRINTEX_LIB, arduino_arch,
This commit is contained in:
2018-10-18 23:05:57 +03:00
committed by GitHub
28 changed files with 380 additions and 313 deletions

7
.gitignore vendored
View File

@@ -3,3 +3,10 @@
.clang_complete .clang_complete
.gcc-flags.json .gcc-flags.json
CMakeListsPrivate.txt CMakeListsPrivate.txt
build_flags_due.sh
build_flags_esp32.sh
build_flags_esp8266.sh
build_flags_stm32.sh
build_flags_due-5500.sh
build_flags_mega2560.sh
build_flags_controllino.sh

View File

@@ -151,11 +151,11 @@ platformio device monitor -b 115200
* ESP_WIFI_AP=MYAP // esp wifi access point name * ESP_WIFI_AP=MYAP // esp wifi access point name
* ESP_WIFI_PWD=MYPWD // esp wifi access point password * ESP_WIFI_PWD=MYPWD // esp wifi access point password
* WIFI_MANAGER_DISABLE //Disable wifi manager for esp8266 * WIFI_MANAGER_DISABLE //Disable wifi manager for esp8266
* DHT_DISABLE //disable DHT Input support * DHT_COUNTER_DISABLE //disable DHT, Counter, Uptime input support (for RAM savings on mega2560)
* RESTART_LAN_ON_MQTT_ERRORS //reinit LAN if many mqtt errors occured * RESTART_LAN_ON_MQTT_ERRORS //reinit LAN if many mqtt errors occured
* WITH_STREAMING_LIB use streaming libriary for serial debug output otherwise use PrintEx library
* DEVICE_NAME short handy device name which is used instead of mac for download config http://{MY_CONFIG_SERVER}/{DEVICE_NAME}_config.json * 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 * 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)
@@ -176,11 +176,11 @@ platformio device monitor -b 115200
* Defailt MQTT input topic: /myhome/in * Defailt MQTT input topic: /myhome/in
* Default MQTT topic to publish device status: /myhome/s_out * Default MQTT topic to publish device status: /myhome/s_out
* Default Alarm output topic /alarm * Default Alarm output topic /alarm
* DHT support enabled * DHT, Counter, Uptime support enabled
* Wifi manager for esp8266 enabled * Wifi manager for esp8266 enabled
* RESTART_LAN_ON_MQTT_ERRORS disabled * RESTART_LAN_ON_MQTT_ERRORS disabled
* WITH_STREAMING_LIB disabled
* DEVICE_NAME disabled * DEVICE_NAME disabled
* SYSLOG_ENABLE disabled * SYSLOG_ENABLE disabled
* WITH_PRINTEX_LIB diabled, using Streaming library
If you've using Arduino IDE to compile & flash firmware, it will use Default options above and you will not able to configure additional compilers options except edit "options.h" file If you've using Arduino IDE to compile & flash firmware, it will use Default options above and you will not able to configure additional compilers options except edit "options.h" file

View File

@@ -1,31 +0,0 @@
#! /bin/bash
# usage:
# first make your own copy of template
# cp build_flags_template.sh build_flags_ENVNAME.sh
# then edit, change or comment something
export FLAGS="-DMY_CONFIG_SERVER=lazyhome.ru"
#export FLAGS="$FLAGS -DWATCH_DOG_TICKER_DISABLE"
#export FLAGS="$FLAGS -DUSE_1W_PIN=12"
#export FLAGS="$FLAGS -DSD_CARD_INSERTED"
export FLAGS="$FLAGS -DSERIAL_BAUD=115200"
export FLAGS="$FLAGS -DWiz5500"
#export FLAGS="$FLAGS -DDISABLE_FREERAM_PRINT"
export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:ff"
# export FLAGS="$FLAGS -DDMX_DISABLE"
# export FLAGS="$FLAGS -DARTNET_ENABLE"
# export FLAGS="$FLAGS -DMODBUS_DISABLE"
# export FLAGS="$FLAGS -DOWIRE_DISABLE"
# export FLAGS="$FLAGS -DAVR_DMXOUT_PIN=18"
# export FLAGS="$FLAGS -DLAN_INIT_DELAY=2000"
# export FLAGS="$FLAGS -DCONTROLLINO"
# export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP"
# export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD"
# export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE"
# export FLAGS="$FLAGS -DDHT_DISABLE"
# export FLAGS="$FLAGS -DRESET_PIN=5"
# export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000"
# export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS"
# export FLAGS="$FLAGS -DW5500_CS_PIN=53"
export FLAGS="$FLAGS -DWITH_STREAMING_LIB"
export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short)
echo $FLAGS

View File

@@ -1,31 +0,0 @@
#! /bin/bash
# usage:
# first make your own copy of template
# cp build_flags_template.sh build_flags_ENVNAME.sh
# then edit, change or comment something
export FLAGS="-DMY_CONFIG_SERVER=lazyhome.ru"
#export FLAGS="$FLAGS -DWATCH_DOG_TICKER_DISABLE"
#export FLAGS="$FLAGS -DUSE_1W_PIN=12"
#export FLAGS="$FLAGS -DSD_CARD_INSERTED"
export FLAGS="$FLAGS -DSERIAL_BAUD=115200"
#export FLAGS="$FLAGS -DWiz5500"
#export FLAGS="$FLAGS -DDISABLE_FREERAM_PRINT"
export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:fe"
# export FLAGS="$FLAGS -DDMX_DISABLE"
# export FLAGS="$FLAGS -DARTNET_ENABLE"
# export FLAGS="$FLAGS -DMODBUS_DISABLE"
# export FLAGS="$FLAGS -DOWIRE_DISABLE"
# export FLAGS="$FLAGS -DAVR_DMXOUT_PIN=18"
# export FLAGS="$FLAGS -DLAN_INIT_DELAY=2000"
# export FLAGS="$FLAGS -DCONTROLLINO"
# export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP"
# export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD"
# export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE"
export FLAGS="$FLAGS -DDHT_DISABLE"
# export FLAGS="$FLAGS -DRESET_PIN=5"
# export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000"
# export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS"
# export FLAGS="$FLAGS -DW5500_CS_PIN=53"
export FLAGS="$FLAGS -DWITH_STREAMING_LIB"
export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short)
echo $FLAGS

View File

@@ -1,32 +0,0 @@
#! /bin/bash
# usage:
# first make your own copy of template
# cp build_flags_template.sh build_flags_ENVNAME.sh
# then edit, change or comment something
export FLAGS="-DMY_CONFIG_SERVER=lazyhome.ru"
#export FLAGS="$FLAGS -DWATCH_DOG_TICKER_DISABLE"
#export FLAGS="$FLAGS -DUSE_1W_PIN=12"
#export FLAGS="$FLAGS -DSD_CARD_INSERTED"
export FLAGS="$FLAGS -DSERIAL_BAUD=115200"
#export FLAGS="$FLAGS -DWiz5500"
#export FLAGS="$FLAGS -DDISABLE_FREERAM_PRINT"
export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:ed"
# export FLAGS="$FLAGS -DDMX_DISABLE"
# export FLAGS="$FLAGS -DARTNET_ENABLE"
# export FLAGS="$FLAGS -DMODBUS_DISABLE"
export FLAGS="$FLAGS -DOWIRE_DISABLE"
# export FLAGS="$FLAGS -DAVR_DMXOUT_PIN=18"
# export FLAGS="$FLAGS -DLAN_INIT_DELAY=2000"
# export FLAGS="$FLAGS -DCONTROLLINO"
# export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP"
# export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD"
# export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE"
export FLAGS="$FLAGS -DDHT_DISABLE"
# export FLAGS="$FLAGS -DRESET_PIN=5"
# export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000"
# export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS"
# export FLAGS="$FLAGS -DW5500_CS_PIN=53"
# export FLAGS="$FLAGS -DINTERVAL_CHECK_INPUT=20"
# export FLAGS="$FLAGS -DMODBUS_DIMMER_PARAM=SERIAL_8N1"
export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short)
echo $FLAGS

View File

@@ -0,0 +1,8 @@
#! /bin/bash
export FLAGS="$FLAGS -DCONTROLLINO"
export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:07"
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_controllino.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,8 @@
#! /bin/bash
export FLAGS="$FLAGS -DWiz5500"
export FLAGS="$FLAGS -DARTNET_ENABLE"
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_due-5500.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,6 @@
#! /bin/bash
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_due.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,6 @@
#! /bin/bash
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_esp32.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,6 @@
#! /bin/bash
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_esp8266.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,6 @@
#! /bin/bash
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_mega2560-net.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,9 @@
#! /bin/bash
CUSTOM_BUILD_FLAGS_FILE="custom-build-flags/build_flags_mega2560.sh"
#CUSTOM_BUILD_FLAGS_FILE="custom-build-flags/build_flags_$PIOENV.sh"
#echo $PIOENV > custom-build-flags/1.txt
#TODO: make one file for all envs
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,6 @@
#! /bin/bash
CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_stm32.sh
if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then
source $CUSTOM_BUILD_FLAGS_FILE
fi
echo $FLAGS

View File

@@ -0,0 +1,31 @@
#! /bin/bash
# usage:
# first make your own copy of template
# cp build_flags_template.sh my_build_flags.sh
# then edit, change or comment something
# nano my_build_flags.sh
# and source it
# source my_build_flags.sh
export FLAGS="-DMY_CONFIG_SERVER=lighthub.elistech.ru"
export FLAGS="$FLAGS -DWATCH_DOG_TICKER_DISABLE"
#export FLAGS="$FLAGS -DUSE_1W_PIN=12"
#export FLAGS="$FLAGS -DSD_CARD_INSERTED"
export FLAGS="$FLAGS -DSERIAL_BAUD=115200"
# export FLAGS="$FLAGS -DWiz5500"
export FLAGS="$FLAGS -DDISABLE_FREERAM_PRINT"
export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=C2:3E:1f:03:1B:1E"
# export FLAGS="$FLAGS -DDMX_DISABLE"
# export FLAGS="$FLAGS -DMODBUS_DISABLE"
# export FLAGS="$FLAGS -DOWIRE_DISABLE"
#export FLAGS="$FLAGS -DAVR_DMXOUT_PIN=18"
#export FLAGS="$FLAGS -DCONTROLLINO"
# export FLAGS="$FLAGS -DRESET_PIN=8"
export FLAGS="$FLAGS -DLAN_INIT_DELAY=2000"
# export FLAGS="$FLAGS -DESP_WIFI_AP=vent"
# export FLAGS="$FLAGS -DESP_WIFI_PWD=kk007remont"
# export FLAGS="$FLAGS -DSYSLOG_ENABLE"
export FLAGS="$FLAGS -DDEVICE_NAME=kk007_mega2560"
export FLAGS="$FLAGS -DDHT_COUNTER_DISABLE"
#export FLAGS="$FLAGS -DWITH_DOMOTICZ"
#export FLAGS="$FLAGS -DWITH_PRINTEX_LIB"
export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short)

View File

@@ -20,12 +20,13 @@
# export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP" # export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP"
# export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD" # export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD"
# export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE" # export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE"
# export FLAGS="$FLAGS -DDHT_DISABLE"
# export FLAGS="$FLAGS -DRESET_PIN=5" # export FLAGS="$FLAGS -DRESET_PIN=5"
# export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000" # export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000"
# export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS" # export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS"
# export FLAGS="$FLAGS -DW5500_CS_PIN=53" # export FLAGS="$FLAGS -DW5500_CS_PIN=53"
#export FLAGS="$FLAGS -DSYSLOG_ENABLE" #export FLAGS="$FLAGS -DSYSLOG_ENABLE"
#export FLAGS="$FLAGS -DDEVICE_NAME=MYDEVICE" #export FLAGS="$FLAGS -DDEVICE_NAME=MYDEVICE"
#export FLAGS="$FLAGS -DDHT_COUNTER_DISABLE"
#export FLAGS="$FLAGS -DWITH_PRINTEX_LIB"
export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short)
echo $FLAGS echo $FLAGS

View File

@@ -23,7 +23,7 @@ e-mail anklimov@gmail.com
#include "options.h" #include "options.h"
#ifdef _dmxin #ifdef _dmxin
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
#include <DMXSerial.h> #include <DMXSerial.h>
#endif #endif
#endif #endif
@@ -207,7 +207,7 @@ void DMXinSetup(int channels)
#if defined(_dmxin) #if defined(_dmxin)
DMXin = new uint8_t [channels]; DMXin = new uint8_t [channels];
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
DMXSerial.init(DMXReceiver,0,channels); DMXSerial.init(DMXReceiver,0,channels);
if (DMXSerial.getBuffer()) {Serial.print(F("Init in ch:"));Serial.println(channels);} else Serial.println(F("DMXin Buffer alloc err")); if (DMXSerial.getBuffer()) {Serial.print(F("Init in ch:"));Serial.println(channels);} else Serial.println(F("DMXin Buffer alloc err"));
//DMXSerial.maxChannel(channels); //DMXSerial.maxChannel(channels);
@@ -230,7 +230,7 @@ dmxin.begin();
void DMXoutSetup(int channels) void DMXoutSetup(int channels)
{ {
#ifdef _dmxout #ifdef _dmxout
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
DmxSimple.usePin(AVR_DMXOUT_PIN); DmxSimple.usePin(AVR_DMXOUT_PIN);
DmxSimple.maxChannel(channels); DmxSimple.maxChannel(channels);
#endif #endif

View File

@@ -33,7 +33,7 @@ e-mail anklimov@gmail.com
#if defined(_dmxout) #if defined(_dmxout)
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
#include <DmxSimple.h> #include <DmxSimple.h>
#define DmxWrite DmxSimple.write #define DmxWrite DmxSimple.write
#endif #endif
@@ -56,7 +56,7 @@ extern Artnet *artnet;
#endif #endif
#ifdef _dmxin #ifdef _dmxin
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
#include <DMXSerial.h> #include <DMXSerial.h>
#endif #endif
#endif #endif

View File

@@ -23,9 +23,10 @@ e-mail anklimov@gmail.com
#include "utils.h" #include "utils.h"
#include <PubSubClient.h> #include <PubSubClient.h>
#ifndef DHT_DISABLE #ifndef DHT_COUNTER_DISABLE
#if defined(ESP8266) || defined(ARDUINO_ARCH_ESP32) #if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
#include <DHTesp.h> #include <DHTesp.h>
#else #else
#include "DHT.h" #include "DHT.h"
#endif #endif
@@ -33,14 +34,14 @@ e-mail anklimov@gmail.com
extern PubSubClient mqttClient; extern PubSubClient mqttClient;
#ifndef DHT_COUNTER_DISABLE
static volatile unsigned long nextPollMillisValue[5]; static volatile unsigned long nextPollMillisValue[5];
static volatile int nextPollMillisPin[5] = {0,0,0,0,0}; static volatile int nextPollMillisPin[5] = {0,0,0,0,0};
#if defined(ARDUINO_ARCH_AVR)
#if defined(__AVR__)
static volatile long counter_value[6]; static volatile long counter_value[6];
#endif #endif
#if defined(ESP8266) #if defined(ARDUINO_ARCH_ESP8266)
static volatile long counter_value[6]; static volatile long counter_value[6];
#endif #endif
@@ -53,6 +54,9 @@ static short counter_irq_map[54];
static long counter_value[54]; static long counter_value[54];
static int counters_count; static int counters_count;
#endif #endif
#endif
Input::Input(char * name) //Constructor Input::Input(char * name) //Constructor
{ {
if (name) if (name)
@@ -87,31 +91,24 @@ void Input::Parse()
store = NULL; store = NULL;
inType = 0; inType = 0;
pin = 0; pin = 0;
if (inputObj && (inputObj->type == aJson_Object)) { if (inputObj && (inputObj->type == aJson_Object)) {
aJsonObject *s; aJsonObject *s;
s = aJson.getObjectItem(inputObj, "T"); s = aJson.getObjectItem(inputObj, "T");
if (s) inType = static_cast<uint8_t>(s->valueint); if (s) inType = static_cast<uint8_t>(s->valueint);
pin = static_cast<uint8_t>(atoi(inputObj->name)); pin = static_cast<uint8_t>(atoi(inputObj->name));
s = aJson.getObjectItem(inputObj, "S"); s = aJson.getObjectItem(inputObj, "S");
if (!s) { if (!s) {
Serial.print(F("In: ")); debugSerial<<F("In: ")<<pin<<F("/")<<inType<<endl;
Serial.print(pin);
Serial.print(F("/"));
Serial.println(inType);
aJson.addNumberToObject(inputObj, "S", 0); aJson.addNumberToObject(inputObj, "S", 0);
s = aJson.getObjectItem(inputObj, "S"); s = aJson.getObjectItem(inputObj, "S");
} }
if (s) store = (inStore *) &s->valueint; if (s) store = (inStore *) &s->valueint;
} }
} }
int Input::poll() { int Input::poll() {
if (!isValid()) return -1; if (!isValid()) return -1;
#ifndef DHT_COUNTER_DISABLE
if (inType & IN_DHT22) if (inType & IN_DHT22)
dht22Poll(); dht22Poll();
else if (inType & IN_COUNTER) else if (inType & IN_COUNTER)
@@ -121,13 +118,16 @@ int Input::poll() {
else else
contactPoll(); contactPoll();
return 0; return 0;
#endif
contactPoll();
} }
#ifndef DHT_COUNTER_DISABLE
void Input::counterPoll() { void Input::counterPoll() {
if(nextPollTime()>millis()) if(nextPollTime()>millis())
return; return;
if (store->logicState == 0) { if (store->logicState == 0) {
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
#define interrupt_number pin #define interrupt_number pin
if (interrupt_number >= 0 && interrupt_number < 6) { if (interrupt_number >= 0 && interrupt_number < 6) {
const short mega_interrupt_array[6] = {2, 3, 21, 20, 19, 18}; const short mega_interrupt_array[6] = {2, 3, 21, 20, 19, 18};
@@ -150,7 +150,7 @@ void Input::counterPoll() {
return; return;
} }
long counterValue = counter_value[pin]; long counterValue = counter_value[pin];
Serial.print(F("IN:"));Serial.print(pin);Serial.print(F(" Counter type. val="));Serial.print(counterValue); debugSerial<<F("IN:")<<(pin)<<F(" Counter type. val=")<<counterValue;
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit"); aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
if (emit) { if (emit) {
@@ -160,16 +160,18 @@ void Input::counterPoll() {
sprintf(valstr, "%d", counterValue); sprintf(valstr, "%d", counterValue);
mqttClient.publish(addrstr, valstr); mqttClient.publish(addrstr, valstr);
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT); setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
Serial.print(F(" NextPollMillis="));Serial.println(nextPollTime()); debugSerial<<F(" NextPollMillis=")<<nextPollTime();
} }
else else
Serial.print(F(" No emit data!")); debugSerial<<F(" No emit data!");
} }
#endif
#ifndef DHT_COUNTER_DISABLE
void Input::attachInterruptPinIrq(int realPin, int irq) { void Input::attachInterruptPinIrq(int realPin, int irq) {
pinMode(realPin, INPUT); pinMode(realPin, INPUT);
int real_irq; int real_irq;
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
real_irq = irq; real_irq = irq;
#endif #endif
#if defined(__SAM3X8E__) #if defined(__SAM3X8E__)
@@ -200,32 +202,39 @@ void Input::attachInterruptPinIrq(int realPin, int irq) {
} }
} }
void Input::dht22Poll() { void Input::dht22Poll() {
#ifndef DHT_DISABLE if (nextPollTime() > millis())
if(nextPollTime()>millis())
return; return;
#if defined(ESP8266) || defined(ARDUINO_ARCH_ESP32) #if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
DHTesp dhtSensor; DHTesp dhtSensor;
dhtSensor.setup(pin, DHTesp::DHT22); dhtSensor.setup(pin, DHTesp::DHT22);
TempAndHumidity dhtSensorData = dhtSensor.getTempAndHumidity(); TempAndHumidity dhtSensorData = dhtSensor.getTempAndHumidity();
float temp = dhtSensorData.temperature; float temp = roundf(dhtSensorData.temperature * 10) / 10;
float humidity = dhtSensorData.humidity; float humidity = roundf(dhtSensorData.humidity);
#else #else
DHT dht(pin, DHT22); DHT dht(pin, DHT22);
float temp = dht.readTemperature(); float temp = dht.readTemperature();
float humidity = dht.readHumidity(); float humidity = dht.readHumidity();
#endif #endif
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit"); aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
Serial.print(F("IN:")); debugSerial << F("IN:") << pin << F(" DHT22 type. T=") << temp << F("°C H=") << humidity << F("%");
Serial.print(pin);
Serial.print(F(" DHT22 type. T="));
Serial.print(temp);
Serial.print(F("°C H="));
Serial.print(humidity);
Serial.print(F("%"));
if (emit && temp && humidity && temp == temp && humidity == humidity) { if (emit && temp && humidity && temp == temp && humidity == humidity) {
char valstr[10];
char addrstr[100] = ""; char addrstr[100] = "";
#ifdef WITH_DOMOTICZ
aJsonObject *idx = aJson.getObjectItem(inputObj, "idx");
if (idx && idx->valuestring) {//DOMOTICZ json format support
debugSerial << endl << idx->valuestring << F(" Domoticz valstr:");
char valstr[50];
sprintf(valstr, "{\"idx\":%s,\"svalue\":\"%.1f;%.0f;0\"}", idx->valuestring, temp, humidity);
debugSerial << valstr;
mqttClient.publish(emit->valuestring, valstr);
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
debugSerial << F(" NextPollMillis=") << nextPollTime() << endl;
return;
}
#endif
char valstr[10];
strcat(addrstr, emit->valuestring); strcat(addrstr, emit->valuestring);
strcat(addrstr, "T"); strcat(addrstr, "T");
printFloatValueToStr(temp, valstr); printFloatValueToStr(temp, valstr);
@@ -233,12 +242,11 @@ void Input::dht22Poll() {
addrstr[strlen(addrstr) - 1] = 'H'; addrstr[strlen(addrstr) - 1] = 'H';
printFloatValueToStr(humidity, valstr); printFloatValueToStr(humidity, valstr);
mqttClient.publish(addrstr, valstr); mqttClient.publish(addrstr, valstr);
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT); setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
Serial.print(" NextPollMillis="); debugSerial << F(" NextPollMillis=") << nextPollTime() << endl;
Serial.println(nextPollTime());
} else } else
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT / 3); setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT / 3);
#endif
} }
unsigned long Input::nextPollTime() const { unsigned long Input::nextPollTime() const {
@@ -253,6 +261,7 @@ unsigned long Input::nextPollTime() const {
return 0; return 0;
} }
void Input::setNextPollTime(unsigned long pollTime) { void Input::setNextPollTime(unsigned long pollTime) {
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
if (nextPollMillisPin[i] == pin) { if (nextPollMillisPin[i] == pin) {
@@ -266,6 +275,50 @@ void Input::setNextPollTime(unsigned long pollTime) {
} }
} }
void Input::uptimePoll() {
if(nextPollTime()>millis())
return;
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
if (emit) {
char valstr[11];
// printUlongValueToStr(valstr,millis());
printUlongValueToStr(valstr,millis());
mqttClient.publish(emit->valuestring, valstr);
}
setNextPollTime(millis() +UPTIME_POLL_DELAY_DEFAULT);
}
void Input::onCounterChanged(int i) {
#if defined(__SAM3X8E__)
counter_value[counter_irq_map[i]]++;
#endif
#if defined(ARDUINO_ARCH_AVR)
counter_value[i]++;
#endif
}
void Input::onCounterChanged0() {
onCounterChanged(0);
}
void Input::onCounterChanged1() {
onCounterChanged(1);
}
void Input::onCounterChanged2() {
onCounterChanged(2);
}
void Input::onCounterChanged3() {
onCounterChanged(3);
}
void Input::onCounterChanged4() {
onCounterChanged(4);
}
void Input::onCounterChanged5() {
onCounterChanged(5);
}
#endif
void Input::contactPoll() { void Input::contactPoll() {
@@ -273,7 +326,7 @@ void Input::contactPoll() {
#if defined(ARDUINO_ARCH_STM32F1) #if defined(ARDUINO_ARCH_STM32F1)
WiringPinMode inputPinMode; WiringPinMode inputPinMode;
#endif #endif
#if defined(__SAM3X8E__)||defined(__AVR__)||defined(ESP8266)||defined(ARDUINO_ARCH_ESP32) #if defined(__SAM3X8E__)||defined(ARDUINO_ARCH_AVR)||defined(ARDUINO_ARCH_ESP8266)||defined(ARDUINO_ARCH_ESP32)
uint32_t inputPinMode; uint32_t inputPinMode;
#endif #endif
@@ -307,85 +360,54 @@ void Input::contactPoll() {
store->bounce = SAME_STATE_ATTEMPTS; store->bounce = SAME_STATE_ATTEMPTS;
} }
void Input::uptimePoll() {
if(nextPollTime()>millis())
return; void Input::onContactChanged(int newValue) {
debugSerial << F("IN:") << (pin) << F("=") << newValue << endl;
aJsonObject *item = aJson.getObjectItem(inputObj, "item");
aJsonObject *scmd = aJson.getObjectItem(inputObj, "scmd");
aJsonObject *rcmd = aJson.getObjectItem(inputObj, "rcmd");
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit"); aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
if (emit) { if (emit) {
char valstr[11]; #ifdef WITH_DOMOTICZ
// printUlongValueToStr(valstr,millis()); aJsonObject *idx = aJson.getObjectItem(inputObj, "idx");
printUlongValueToStr(valstr,millis()); if (idx->valuestring) {
mqttClient.publish(emit->valuestring, valstr); debugSerial << endl << idx->valuestring << F(" Domoticz valstr:");
char valstr[80];
char *switchCmd;
(newValue)? sprintf(valstr, "{\"command\":\"switchlight\",\"idx\":%s,\"switchcmd\":\"On\"}", idx->valuestring)
: sprintf(valstr,"{\"command\":\"switchlight\",\"idx\":%s,\"switchcmd\":\"Off\"}",idx->valuestring);
debugSerial << valstr;
mqttClient.publish(emit->valuestring, valstr);
} else
#endif
if (newValue) { //send set command
if (!scmd) mqttClient.publish(emit->valuestring, "ON", true);
else if (strlen(scmd->valuestring))
mqttClient.publish(emit->valuestring, scmd->valuestring, true);
} else { //send reset command
if (!rcmd) mqttClient.publish(emit->valuestring, "OFF", true);
else if (strlen(rcmd->valuestring))mqttClient.publish(emit->valuestring, rcmd->valuestring, true);
}
} }
setNextPollTime(millis() +UPTIME_POLL_DELAY_DEFAULT);
}
void Input::onContactChanged(int val) if (item) {
{ Item it(item->valuestring);
Serial.print(F("IN:")); Serial.print(pin);Serial.print(F("="));Serial.println(val); if (it.isValid()) {
aJsonObject * item = aJson.getObjectItem(inputObj,"item"); if (newValue) { //send set command
aJsonObject * scmd = aJson.getObjectItem(inputObj,"scmd"); if (!scmd) it.Ctrl(CMD_ON, 0, NULL, true);
aJsonObject * rcmd = aJson.getObjectItem(inputObj,"rcmd"); else if (strlen(scmd->valuestring))
aJsonObject * emit = aJson.getObjectItem(inputObj,"emit"); it.Ctrl(scmd->valuestring, true);
} else { //send reset command
if (emit) if (!rcmd) it.Ctrl(CMD_OFF, 0, NULL, true);
{ else if (strlen(rcmd->valuestring))
it.Ctrl(rcmd->valuestring, true);
if (val)
{ //send set command
if (!scmd) mqttClient.publish(emit->valuestring,"ON",true); else if (strlen(scmd->valuestring)) mqttClient.publish(emit->valuestring,scmd->valuestring,true);
} }
else }
{ //send reset command }
if (!rcmd) mqttClient.publish(emit->valuestring,"OFF",true); else if (strlen(rcmd->valuestring)) mqttClient.publish(emit->valuestring,rcmd->valuestring,true);
}
}
if (item)
{
Item it(item->valuestring);
if (it.isValid())
{
if (val)
{ //send set command
if (!scmd) it.Ctrl(CMD_ON,0,NULL,true); else if (strlen(scmd->valuestring)) it.Ctrl(scmd->valuestring,true);
}
else
{ //send reset command
if (!rcmd) it.Ctrl(CMD_OFF,0,NULL,true); else if (strlen(rcmd->valuestring)) it.Ctrl(rcmd->valuestring,true);
}
}
}
} }
void Input::onCounterChanged(int i) {
#if defined(__SAM3X8E__)
counter_value[counter_irq_map[i]]++;
#endif
#if defined(__AVR__)
counter_value[i]++;
#endif
}
void Input::onCounterChanged0() {
onCounterChanged(0);
}
void Input::onCounterChanged1() {
onCounterChanged(1);
}
void Input::onCounterChanged2() {
onCounterChanged(2);
}
void Input::onCounterChanged3() {
onCounterChanged(3);
}
void Input::onCounterChanged4() {
onCounterChanged(4);
}
void Input::onCounterChanged5() {
onCounterChanged(5);
}
void Input::printUlongValueToStr(char *valstr, unsigned long value) { void Input::printUlongValueToStr(char *valstr, unsigned long value) {
char buf[11]; char buf[11];

View File

@@ -91,7 +91,7 @@ public:
boolean isValid(); boolean isValid();
void onContactChanged(int val); void onContactChanged(int newValue);
int poll(); int poll();

View File

@@ -891,7 +891,7 @@ int Item::VacomSetHeat(int addr, int8_t val, int8_t cmd) {
int Item::modbusDimmerSet(int addr, uint16_t _reg, int _regType, int _mask, uint16_t value) { int Item::modbusDimmerSet(int addr, uint16_t _reg, int _regType, int _mask, uint16_t value) {
if (_regType != MODBUS_COIL_REG_TYPE || _regType != MODBUS_HOLDING_REG_TYPE) { if (_regType != MODBUS_COIL_REG_TYPE || _regType != MODBUS_HOLDING_REG_TYPE) {
} }
if (modbusBusy) { if (modbusBusy) {
@@ -933,7 +933,7 @@ int Item::modbusDimmerSet(int addr, uint16_t _reg, int _regType, int _mask, uint
default: default:
Serial.println(F("Not supported reg type")); Serial.println(F("Not supported reg type"));
} }
modbusBusy = 0; modbusBusy = 0;
} }
@@ -1051,7 +1051,7 @@ boolean Item::checkModbusRetry() {
if (cmd & CMD_RETRY) { // if last sending attempt of command was failed if (cmd & CMD_RETRY) { // if last sending attempt of command was failed
int val = getVal(); int val = getVal();
Serial.println(F("Retrying CMD")); Serial.println(F("Retrying CMD"));
cmd &= ~CMD_RETRY; // Clean retry flag cmd &= ~CMD_RETRY; // Clean retry flag
Ctrl(cmd,1,&val); // Execute command again Ctrl(cmd,1,&val); // Execute command again
return true; return true;
@@ -1062,13 +1062,13 @@ return false;
int Item::checkModbusDimmer() { int Item::checkModbusDimmer() {
if (modbusBusy) return -1; if (modbusBusy) return -1;
if (checkModbusRetry()) return -2; if (checkModbusRetry()) return -2;
short numpar = 0; short numpar = 0;
if ((itemArg->type != aJson_Array) || ((numpar = aJson.getArraySize(itemArg)) < 2)) { if ((itemArg->type != aJson_Array) || ((numpar = aJson.getArraySize(itemArg)) < 2)) {
Serial.println(F("Illegal arguments")); Serial.println(F("Illegal arguments"));
return -3; return -3;
} }
modbusBusy = 1; modbusBusy = 1;
uint8_t result; uint8_t result;

View File

@@ -68,20 +68,13 @@ PWM Out
#include "main.h" #include "main.h"
#include "options.h" #include "options.h"
#include "utils.h" #include "utils.h"
#ifdef WITH_STREAMING_LIB
#include "Streaming.h"
#else
#include "PrintEx.h"
using namespace ios;
#endif
#if defined(__SAM3X8E__) #if defined(__SAM3X8E__)
DueFlashStorage EEPROM; DueFlashStorage EEPROM;
EthernetClient ethClient; EthernetClient ethClient;
#endif #endif
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
EthernetClient ethClient; EthernetClient ethClient;
#endif #endif
@@ -209,20 +202,20 @@ void mqttCallback(char *topic, byte *payload, unsigned int length) {
void printIPAddress(IPAddress ipAddress) { void printIPAddress(IPAddress ipAddress) {
for (byte i = 0; i < 4; i++) for (byte i = 0; i < 4; i++)
#ifdef WITH_STREAMING_LIB #ifdef WITH_PRINTEX_LIB
(i < 3) ? debugSerial << _DEC(ipAddress[i]) << F(".") : debugSerial << _DEC(ipAddress[i]) << F(", ");
#else
(i < 3) ? debugSerial << (ipAddress[i]) << F(".") : debugSerial << (ipAddress[i])<<F(", "); (i < 3) ? debugSerial << (ipAddress[i]) << F(".") : debugSerial << (ipAddress[i])<<F(", ");
#else
(i < 3) ? debugSerial << _DEC(ipAddress[i]) << F(".") : debugSerial << _DEC(ipAddress[i]) << F(", ");
#endif #endif
} }
void printMACAddress() { void printMACAddress() {
debugSerial<<F("Configured MAC:"); debugSerial<<F("Configured MAC:");
for (byte i = 0; i < 6; i++) for (byte i = 0; i < 6; i++)
#ifdef WITH_STREAMING_LIB #ifdef WITH_PRINTEX_LIB
(i < 5) ?debugSerial<<_HEX(mac[i])<<F(":"):debugSerial<<_HEX(mac[i])<<endl;
#else
(i < 5) ?debugSerial<<hex <<(mac[i])<<F(":"):debugSerial<<hex<<(mac[i])<<endl; (i < 5) ?debugSerial<<hex <<(mac[i])<<F(":"):debugSerial<<hex<<(mac[i])<<endl;
#else
(i < 5) ?debugSerial<<_HEX(mac[i])<<F(":"):debugSerial<<_HEX(mac[i])<<endl;
#endif #endif
} }
@@ -299,7 +292,7 @@ lan_status lanLoop() {
{ {
#if defined(__AVR__) || defined(__SAM3X8E__) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__)
wdt_dis(); wdt_dis();
if (lanStatus > 0) if (lanStatus > 0)
switch (Ethernet.maintain()) { switch (Ethernet.maintain()) {
@@ -445,17 +438,14 @@ void onInitialStateInitLAN() {
if(!wifiInitialized) { if(!wifiInitialized) {
WiFi.mode(WIFI_STA); WiFi.mode(WIFI_STA);
WiFi.disconnect(); WiFi.disconnect();
debugSerial<<F("WIFI AP/Password:")); debugSerial<<F("WIFI AP/Password:")<<QUOTE(ESP_WIFI_AP)<<F("/")<<QUOTE(ESP_WIFI_PWD);
debugSerial<<QUOTE(ESP_WIFI_AP));
debugSerial<<F("/"));
debugSerial<<QUOTE(ESP_WIFI_PWD));
WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD)); WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD));
int wifi_connection_wait = 10000; int wifi_connection_wait = 10000;
while (WiFi.status() != WL_CONNECTED && wifi_connection_wait > 0) { while (WiFi.status() != WL_CONNECTED && wifi_connection_wait > 0) {
delay(500); delay(500);
wifi_connection_wait -= 500; wifi_connection_wait -= 500;
debugSerial<<"."); debugSerial<<".";
} }
wifiInitialized = true; wifiInitialized = true;
} }
@@ -463,18 +453,16 @@ void onInitialStateInitLAN() {
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266) #if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
if (WiFi.status() == WL_CONNECTED) { if (WiFi.status() == WL_CONNECTED) {
debugSerial<<F("WiFi connected. IP address: "); debugSerial<<F("WiFi connected. IP address: ")<<WiFi.localIP();
debugSerial<<WiFi.localIP();
lanStatus = HAVE_IP_ADDRESS;//1; lanStatus = HAVE_IP_ADDRESS;//1;
} else } else
{ {
debugSerial<<F("Problem with WiFi!"); debugSerial<<F("Problem with WiFi!");
nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL/5; nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL/5;
} }
#endif #endif
#if defined(__AVR__) || defined(__SAM3X8E__)||defined(ARDUINO_ARCH_STM32F1) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__)||defined(ARDUINO_ARCH_STM32F1)
#ifdef W5500_CS_PIN #ifdef W5500_CS_PIN
Ethernet.w5500_cspin = W5500_CS_PIN; Ethernet.w5500_cspin = W5500_CS_PIN;
debugSerial<<F("Use W5500 pin: "); debugSerial<<F("Use W5500 pin: ");
@@ -505,7 +493,7 @@ void onInitialStateInitLAN() {
else { else {
debugSerial<<"\nNo IP data found in flash\n"; debugSerial<<"\nNo IP data found in flash\n";
wdt_dis(); wdt_dis();
#if defined(__AVR__) || defined(__SAM3X8E__) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__)
res = Ethernet.begin(mac, 12000); res = Ethernet.begin(mac, 12000);
#endif #endif
#if defined(ARDUINO_ARCH_STM32F1) #if defined(ARDUINO_ARCH_STM32F1)
@@ -537,7 +525,7 @@ void softRebootFunc() {
} }
#endif #endif
#if defined(__AVR__) || defined(__SAM3X8E__) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__)
void (*softRebootFunc)(void) = 0; void (*softRebootFunc)(void) = 0;
void printCurentLanConfig(); void printCurentLanConfig();
@@ -926,7 +914,7 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args)
#endif #endif
debugSerial<<F("Config URI: http://")<<configServer<<URI<<eol; debugSerial<<F("Config URI: http://")<<configServer<<URI<<eol;
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
FILE *configStream; FILE *configStream;
//byte hserver[] = { 192,168,88,2 }; //byte hserver[] = { 192,168,88,2 };
wdt_dis(); wdt_dis();
@@ -1171,10 +1159,10 @@ void printFirmwareVersionAndBuildOptions() {
#else #else
debugSerial<<F("\n(+)OWIRE"); debugSerial<<F("\n(+)OWIRE");
#endif #endif
#ifndef DHT_DISABLE #ifndef DHT_COUNTER_DISABLE
debugSerial<<F("\n(+)DHT"); debugSerial<<F("\n(+)DHT COUNTER");
#else #else
debugSerial<<F("\n(-)DHT"); debugSerial<<F("\n(-)DHT COUNTER");
#endif #endif
#ifdef SD_CARD_INSERTED #ifdef SD_CARD_INSERTED

View File

@@ -34,7 +34,7 @@
//#define wdt_en() //#define wdt_en()
//#define wdt_dis() //#define wdt_dis()
//#endif //#endif
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
#if defined(WATCH_DOG_TICKER_DISABLE) #if defined(WATCH_DOG_TICKER_DISABLE)
#define wdt_en() wdt_disable() #define wdt_en() wdt_disable()
#define wdt_dis() wdt_disable() #define wdt_dis() wdt_disable()
@@ -75,7 +75,7 @@
#include <ArduinoHttpClient.h> #include <ArduinoHttpClient.h>
#endif #endif
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
#include "HTTPClient.h" #include "HTTPClient.h"
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#include <avr/wdt.h> #include <avr/wdt.h>
@@ -104,7 +104,7 @@
#endif #endif
#if defined(__AVR__) || defined(__SAM3X8E__) || defined(ESP8266) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__) || defined(ESP8266)
#ifdef Wiz5500 #ifdef Wiz5500
#include <Ethernet2.h> #include <Ethernet2.h>
#else #else

View File

@@ -101,7 +101,7 @@
#define LAN_INIT_DELAY 500 #define LAN_INIT_DELAY 500
#endif #endif
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
//All options available //All options available
#ifdef CONTROLLINO #ifdef CONTROLLINO
#define modbusSerial Serial3 #define modbusSerial Serial3
@@ -121,7 +121,6 @@
#if defined(ARDUINO_ARCH_ESP8266) #if defined(ARDUINO_ARCH_ESP8266)
#undef _dmxin #undef _dmxin
#undef _modbus #undef _modbus
#define WITH_STREAMING_LIB
#ifndef DMX_DISABLE #ifndef DMX_DISABLE
#define _espdmx #define _espdmx
@@ -129,6 +128,9 @@
#define modbusSerial Serial1 #define modbusSerial Serial1
#endif #endif
#if defined(ARDUINO_ARCH_ESP32)
#endif
#ifndef _dmxout #ifndef _dmxout
#undef _artnet #undef _artnet
#endif #endif

View File

@@ -86,7 +86,7 @@ unsigned long freeRam ()
{return system_get_free_heap_size();} {return system_get_free_heap_size();}
#endif #endif
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
unsigned long freeRam () unsigned long freeRam ()
{ {
extern int __heap_start, *__brkval; extern int __heap_start, *__brkval;
@@ -141,7 +141,7 @@ void printFloatValueToStr(float value, char *valstr) {
#if defined(ESP8266) || defined(ARDUINO_ARCH_ESP32) #if defined(ESP8266) || defined(ARDUINO_ARCH_ESP32)
sprintf(valstr, "%2.1f", value); sprintf(valstr, "%2.1f", value);
#endif #endif
#if defined(__AVR__) #if defined(ARDUINO_ARCH_AVR)
sprintf(valstr, "%d", (int)value); sprintf(valstr, "%d", (int)value);
int fractional = 10.0*((float)abs(value)-(float)abs((int)value)); int fractional = 10.0*((float)abs(value)-(float)abs((int)value));
int val_len =strlen(valstr); int val_len =strlen(valstr);

View File

@@ -24,6 +24,13 @@ e-mail anklimov@gmail.com
#define VAR_NAME_VALUE(var) #var "=" VALUE(var) #define VAR_NAME_VALUE(var) #var "=" VALUE(var)
#include <Arduino.h> #include <Arduino.h>
#include "options.h"
#ifdef WITH_PRINTEX_LIB
#include "PrintEx.h"
using namespace ios;
#else
#include "Streaming.h"
#endif
void PrintBytes(uint8_t* addr, uint8_t count, bool newline); void PrintBytes(uint8_t* addr, uint8_t count, bool newline);
void SetBytes(uint8_t* addr, uint8_t count, char * out); void SetBytes(uint8_t* addr, uint8_t count, char * out);

2
mosquitto_examples.sh Normal file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
mosquitto_pub -t 'domoticz/in' -h broker_url -p port -u user -P pass -m '{"command": "udevice", "idx": 20, "svalue": "15"}'

View File

@@ -9,8 +9,8 @@
; http://docs.platformio.org/page/projectconf.html ; http://docs.platformio.org/page/projectconf.html
[platformio] [platformio]
src_dir = lighthub src_dir = lighthub
env_default = ;env_default =
megaatmega2560 ; megaatmega2560
; megaatmega2560-net ; megaatmega2560-net
; due ; due
; esp8266 ; esp8266
@@ -20,19 +20,27 @@ env_default =
; controllino ; controllino
; stm32 ; stm32
;build_dir = !sh pioenvs.sh ${platformio.env_default} ;build_dir = /tmp/pioenvs
;libdeps_dir = !sh piolibdeps.sh ${platformio.env_default} ;libdeps_dir = /tmp/piolibdeps
[env:esp32] [env:esp32]
platform = espressif32 platform = espressif32
framework = arduino framework = arduino
board = pico32 board = pico32
lib_ldf_mode = chain+ build_flags = !bash check_custom_build_flags_esp32.sh
build_flags = !sh build_flags_esp32.sh lib_ignore =
DmxSimple
DMXSerial
DmxDue
DueFlashStorage
SD
SdFat
httpClient
WifiManager
Ethernet
lib_deps = lib_deps =
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
https://github.com/anklimov/DS2482_OneWire https://github.com/anklimov/DS2482_OneWire
ESP8266HTTPClient
Ethernet3 Ethernet3
https://github.com/anklimov/aJson https://github.com/anklimov/aJson
https://github.com/anklimov/CmdArduino https://github.com/anklimov/CmdArduino
@@ -44,40 +52,20 @@ lib_deps =
DHT sensor library for ESPx DHT sensor library for ESPx
DHT sensor library DHT sensor library
Streaming Streaming
https://github.com/Chris--A/PrintEx.git https://github.com/livello/PrintEx#is-select-redecl
[env:stm32]
platform = ststm32
framework = arduino
board = nucleo_f103rb
upload_protocol = stlink
debug_tool = stlink
extra_scripts = pre:!pre_stm32.sh
;lib_ldf_mode = chain+
build_flags = !sh build_flags_stm32.sh
lib_deps =
DallasTemperature
https://github.com/anklimov/aJson
https://github.com/anklimov/CmdArduino
ArduinoHttpClient
https://github.com/anklimov/ModbusMaster
; https://github.com/Serasidis/Ethernet_STM.git
; https://github.com/livello/Ethernet_STM.git
https://github.com/knolleary/pubsubclient.git
Adafruit Unified Sensor
DHT sensor library
; https://github.com/anklimov/DMXSerial
; Syslog
; https://github.com/No3x/Syslog.git
https://github.com/arcao/Syslog.git
; UIPEthernet
[env:due] [env:due]
platform = atmelsam platform = atmelsam
framework = arduino framework = arduino
board = due board = due
lib_ldf_mode = chain+ build_flags = !bash check_custom_build_flags_due.sh
build_flags = !sh build_flags_due.sh lib_ignore =
DHT sensor library for ESPx
DMXSerial
DmxSimple
httpClient
ESPDMX
WifiManager
lib_deps = lib_deps =
https://github.com/sebnil/DueFlashStorage https://github.com/sebnil/DueFlashStorage
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
@@ -96,6 +84,7 @@ lib_deps =
Adafruit Unified Sensor Adafruit Unified Sensor
DHT sensor library DHT sensor library
https://github.com/arcao/Syslog.git https://github.com/arcao/Syslog.git
Streaming
[env:megaatmega2560] [env:megaatmega2560]
@@ -103,9 +92,15 @@ platform = atmelavr
board = megaatmega2560 board = megaatmega2560
;upload_port = net:192.168.88.31:23 ;upload_port = net:192.168.88.31:23
framework = arduino framework = arduino
;lib_ldf_mode = chain+ build_flags = !bash check_custom_build_flags_mega2560.sh
build_flags = !sh build_flags_mega2560.sh lib_ignore =
DHT sensor library for ESPx
DmxDue
DueFlashStorage
WifiManager
lib_deps = lib_deps =
https://github.com/anklimov/Arduino-Temperature-Control-Library.git
https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/DmxSimple https://github.com/anklimov/DmxSimple
https://github.com/anklimov/httpClient https://github.com/anklimov/httpClient
https://github.com/anklimov/aJson https://github.com/anklimov/aJson
@@ -113,7 +108,6 @@ lib_deps =
https://github.com/anklimov/ModbusMaster https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial https://github.com/anklimov/DMXSerial
https://github.com/anklimov/Ethernet https://github.com/anklimov/Ethernet
https://github.com/PaulStoffregen/SPI.git
https://github.com/knolleary/pubsubclient.git https://github.com/knolleary/pubsubclient.git
https://github.com/anklimov/Artnet.git https://github.com/anklimov/Artnet.git
FastLED FastLED
@@ -122,14 +116,20 @@ lib_deps =
DHT sensor library DHT sensor library
https://github.com/arcao/Syslog.git https://github.com/arcao/Syslog.git
Streaming Streaming
https://github.com/Chris--A/PrintEx.git
[env:esp8266] [env:esp8266]
platform = espressif8266 platform = espressif8266
framework = arduino framework = arduino
board = nodemcuv2 board = nodemcuv2
lib_ldf_mode = chain+ build_flags = !bash check_custom_build_flags_esp8266.sh
build_flags = !sh build_flags_esp8266.sh lib_ignore =
DmxSimple
DMXSerial
DmxDue
DueFlashStorage
SD
SdFat
httpClient
lib_deps = lib_deps =
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
https://github.com/anklimov/DS2482_OneWire https://github.com/anklimov/DS2482_OneWire
@@ -146,7 +146,6 @@ lib_deps =
DHT sensor library DHT sensor library
WifiManager WifiManager
https://github.com/arcao/Syslog.git https://github.com/arcao/Syslog.git
https://github.com/livello/PrintEx.git#is-select-redecl
Streaming Streaming
[env:megaatmega2560-net] [env:megaatmega2560-net]
@@ -154,8 +153,13 @@ platform = atmelavr
board = megaatmega2560 board = megaatmega2560
framework = arduino framework = arduino
upload_port = net:192.168.88.2:23000 upload_port = net:192.168.88.2:23000
build_flags = !sh build_flags_mega2560-net.sh build_flags = !bash check_custom_build_flags_mega2560-net.sh
;lib_ldf_mode = chain+ lib_ignore =
DHT sensor library for ESPx
DmxDue
DueFlashStorage
ESP-Dmx
WifiManager
lib_deps = lib_deps =
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
https://github.com/anklimov/DS2482_OneWire https://github.com/anklimov/DS2482_OneWire
@@ -166,7 +170,6 @@ lib_deps =
https://github.com/anklimov/ModbusMaster https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial https://github.com/anklimov/DMXSerial
https://github.com/anklimov/Ethernet https://github.com/anklimov/Ethernet
https://github.com/PaulStoffregen/SPI.git
https://github.com/knolleary/pubsubclient.git https://github.com/knolleary/pubsubclient.git
https://github.com/anklimov/Artnet.git https://github.com/anklimov/Artnet.git
FastLED FastLED
@@ -180,9 +183,18 @@ lib_deps =
platform = atmelsam platform = atmelsam
framework = arduino framework = arduino
board = due board = due
;lib_ldf_mode = chain+ build_flags = !bash check_custom_build_flags_due-5500.sh
build_flags = -D Wiz5500 -D ARTNET_ENABLE lib_ignore =
build_flags = !sh build_flags_due-5500.sh DHT sensor library for ESPx
https://github.com/anklimov/Ethernet
ESP-Dmx
DMXSerial
ESPDMX
WifiManager
DmxSimple
httpClient
Ethernet
lib_deps = lib_deps =
https://github.com/sebnil/DueFlashStorage https://github.com/sebnil/DueFlashStorage
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
@@ -202,16 +214,19 @@ lib_deps =
DHT sensor library DHT sensor library
https://github.com/arcao/Syslog.git https://github.com/arcao/Syslog.git
Streaming Streaming
; PrintEx https://github.com/livello/PrintEx#is-select-redecl
https://github.com/livello/PrintEx.git#is-select-redecl
[env:controllino] [env:controllino]
platform = atmelavr platform = atmelavr
board = megaatmega2560 board = megaatmega2560
framework = arduino framework = arduino
;lib_ldf_mode = chain+ build_flags = !bash check_custom_build_flags_controllino.sh
build_flags = !echo -n "-DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) lib_ignore =
build_flags = -D CONTROLLINO -D CUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:07 DHT sensor library for ESPx
DmxDue
DueFlashStorage
ESP-Dmx
WifiManager
lib_deps = lib_deps =
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
https://github.com/anklimov/DS2482_OneWire https://github.com/anklimov/DS2482_OneWire
@@ -222,10 +237,45 @@ lib_deps =
https://github.com/anklimov/ModbusMaster https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/DMXSerial https://github.com/anklimov/DMXSerial
https://github.com/anklimov/Ethernet https://github.com/anklimov/Ethernet
https://github.com/PaulStoffregen/SPI.git
https://github.com/knolleary/pubsubclient.git https://github.com/knolleary/pubsubclient.git
https://github.com/anklimov/Artnet.git https://github.com/anklimov/Artnet.git
FastLED FastLED
EEPROM EEPROM
Adafruit Unified Sensor Adafruit Unified Sensor
DHT sensor library DHT sensor library
Streaming
https://github.com/livello/PrintEx#is-select-redecl
;TODO:STM32 compilation problems
;[env:stm32]
;platform = ststm32
;framework = arduino
;board = nucleo_f103rb
;upload_protocol = stlink
;debug_tool = stlink
;build_flags = !bash check_custom_build_flags_stm32.sh
;lib_ignore =
; DHT sensor library for ESPx
; DmxDue
; DueFlashStorage
; ESP-Dmx
; WifiManager
; FastLED
; Ethernet
;lib_deps =
; DallasTemperature
; https://github.com/anklimov/aJson
; https://github.com/anklimov/CmdArduino
; ArduinoHttpClient
; https://github.com/anklimov/ModbusMaster
;; https://github.com/Serasidis/Ethernet_STM.git
;; https://github.com/livello/Ethernet_STM.git
; https://github.com/knolleary/pubsubclient.git
; Adafruit Unified Sensor
; DHT sensor library
;; https://github.com/anklimov/DMXSerial
;; Syslog
;; https://github.com/No3x/Syslog.git
; https://github.com/arcao/Syslog.git
;; UIPEthernet
; Streaming

View File

@@ -1,4 +0,0 @@
#! /bin/bash
rm /tmp/piolibdeps -Rf
mkdir /tmp/piolibdeps_stm32
ln -s /tmp/piolibdeps_stm32 /tmp/piolibdeps