mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-19 09:16:41 +00:00
Add HASP_OBJECT_NOTATION
This commit is contained in:
parent
bbfe673e8b
commit
1a29225f3e
@ -4,85 +4,86 @@
|
||||
#define HASP_USE_APP 1
|
||||
|
||||
#ifndef HASP_USE_DEBUG
|
||||
#define HASP_USE_DEBUG 1
|
||||
#define HASP_USE_DEBUG 1
|
||||
#endif
|
||||
|
||||
/* Network Services */
|
||||
#ifndef HASP_USE_ETHERNET
|
||||
#define HASP_USE_ETHERNET 0
|
||||
#define HASP_USE_ETHERNET 0
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_WIFI
|
||||
#define HASP_USE_WIFI (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_WIFI > 0)
|
||||
#define HASP_USE_WIFI (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_WIFI > 0)
|
||||
#endif
|
||||
|
||||
#define HASP_HAS_NETWORK (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_ETHERNET > 0 || HASP_USE_WIFI > 0)
|
||||
#define HASP_HAS_NETWORK \
|
||||
(ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_ETHERNET > 0 || HASP_USE_WIFI > 0)
|
||||
|
||||
#ifndef HASP_USE_OTA
|
||||
#define HASP_USE_OTA (HASP_HAS_NETWORK)
|
||||
#define HASP_USE_OTA (HASP_HAS_NETWORK)
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_MQTT
|
||||
#define HASP_USE_MQTT (HASP_HAS_NETWORK)
|
||||
#define HASP_USE_MQTT (HASP_HAS_NETWORK)
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_HTTP
|
||||
#define HASP_USE_HTTP (HASP_HAS_NETWORK)
|
||||
#define HASP_USE_HTTP (HASP_HAS_NETWORK)
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_MDNS
|
||||
#define HASP_USE_MDNS (HASP_HAS_NETWORK)
|
||||
#define HASP_USE_MDNS (HASP_HAS_NETWORK)
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_SYSLOG
|
||||
#define HASP_USE_SYSLOG (HASP_HAS_NETWORK)
|
||||
#define HASP_USE_SYSLOG (HASP_HAS_NETWORK)
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_TELNET
|
||||
#define HASP_USE_TELNET 0
|
||||
#define HASP_USE_TELNET 0
|
||||
#endif
|
||||
|
||||
/* Filesystem */
|
||||
#define HASP_HAS_FILESYSTEM (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0)
|
||||
|
||||
#ifndef HASP_USE_SPIFFS
|
||||
#ifndef HASP_USE_LITTLEFS
|
||||
#define HASP_USE_SPIFFS (HASP_HAS_FILESYSTEM)
|
||||
#else
|
||||
#define HASP_USE_SPIFFS (HASP_USE_LITTLEFS <= 0)
|
||||
#endif
|
||||
#ifndef HASP_USE_LITTLEFS
|
||||
#define HASP_USE_SPIFFS (HASP_HAS_FILESYSTEM)
|
||||
#else
|
||||
#define HASP_USE_SPIFFS (HASP_USE_LITTLEFS <= 0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_LITTLEFS
|
||||
#define HASP_USE_LITTLEFS (HASP_USE_SPIFFS <= 0)
|
||||
#define HASP_USE_LITTLEFS (HASP_USE_SPIFFS <= 0)
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_EEPROM
|
||||
#define HASP_USE_EEPROM 1
|
||||
#define HASP_USE_EEPROM 1
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_SDCARD
|
||||
#define HASP_USE_SDCARD 0
|
||||
#define HASP_USE_SDCARD 0
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_GPIO
|
||||
#define HASP_USE_GPIO 1
|
||||
#define HASP_USE_GPIO 1
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_QRCODE
|
||||
#define HASP_USE_QRCODE 1
|
||||
#define HASP_USE_QRCODE 1
|
||||
#endif
|
||||
|
||||
#ifndef HASP_USE_PNGDECODE
|
||||
#define HASP_USE_PNGDECODE 0
|
||||
#define HASP_USE_PNGDECODE 0
|
||||
#endif
|
||||
|
||||
#ifndef HASP_NUM_GPIO_CONFIG
|
||||
#define HASP_NUM_GPIO_CONFIG 8
|
||||
#define HASP_NUM_GPIO_CONFIG 8
|
||||
#endif
|
||||
|
||||
#ifndef HASP_NUM_INPUTS
|
||||
#define HASP_NUM_INPUTS 4 // Number of ACE Buttons
|
||||
#define HASP_NUM_INPUTS 4 // Number of ACE Buttons
|
||||
#endif
|
||||
|
||||
// #ifndef HASP_NUM_OUTPUTS
|
||||
@ -90,126 +91,128 @@
|
||||
// #endif
|
||||
|
||||
#ifndef HASP_NUM_PAGES
|
||||
#if defined(ARDUINO_ARCH_ESP8266)
|
||||
#define HASP_NUM_PAGES 4
|
||||
#else
|
||||
#define HASP_NUM_PAGES 12
|
||||
#endif
|
||||
#if defined(ARDUINO_ARCH_ESP8266)
|
||||
#define HASP_NUM_PAGES 4
|
||||
#else
|
||||
#define HASP_NUM_PAGES 12
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define HASP_OBJECT_NOTATION "p%ub%u"
|
||||
|
||||
/* Includes */
|
||||
#include <Arduino.h>
|
||||
|
||||
#if HASP_USE_SPIFFS > 0
|
||||
// #if defined(ARDUINO_ARCH_ESP32)
|
||||
// #include "SPIFFS.h"
|
||||
// #endif
|
||||
// #include <FS.h> // Include the SPIFFS library
|
||||
#include "hasp_filesystem.h"
|
||||
// #if defined(ARDUINO_ARCH_ESP32)
|
||||
// #include "SPIFFS.h"
|
||||
// #endif
|
||||
// #include <FS.h> // Include the SPIFFS library
|
||||
#include "hasp_filesystem.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_LITTLEFS > 0
|
||||
// #if defined(ARDUINO_ARCH_ESP32)
|
||||
// #include "LITTLEFS.h"
|
||||
// #elif defined(ARDUINO_ARCH_ESP8266)
|
||||
// #include <FS.h> // Include the FS library
|
||||
// #include <LittleFS.h>
|
||||
// #endif
|
||||
#include "hasp_filesystem.h"
|
||||
// #if defined(ARDUINO_ARCH_ESP32)
|
||||
// #include "LITTLEFS.h"
|
||||
// #elif defined(ARDUINO_ARCH_ESP8266)
|
||||
// #include <FS.h> // Include the FS library
|
||||
// #include <LittleFS.h>
|
||||
// #endif
|
||||
#include "hasp_filesystem.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
|
||||
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
||||
#include "lv_zifont.h"
|
||||
#endif
|
||||
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
||||
#include "lv_zifont.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HASP_USE_EEPROM > 0
|
||||
#include "hasp_eeprom.h"
|
||||
#include "hasp_eeprom.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_WIFI > 0
|
||||
#include "net/hasp_wifi.h"
|
||||
#include "net/hasp_wifi.h"
|
||||
|
||||
#if defined(STM32F4xx)
|
||||
#include "WiFiSpi.h"
|
||||
#if defined(STM32F4xx)
|
||||
#include "WiFiSpi.h"
|
||||
static WiFiSpiClass WiFi;
|
||||
#endif
|
||||
#endif
|
||||
#endif // HASP_USE_WIFI
|
||||
|
||||
#if HASP_USE_ETHERNET > 0
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
#include <ETH.h>
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
#include <ETH.h>
|
||||
|
||||
#define ETH_ADDR 0
|
||||
#define ETH_POWER_PIN -1
|
||||
#define ETH_MDC_PIN 23
|
||||
#define ETH_MDIO_PIN 18
|
||||
#define NRST 5
|
||||
#define ETH_TYPE ETH_PHY_LAN8720
|
||||
#define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT
|
||||
#define ETH_ADDR 0
|
||||
#define ETH_POWER_PIN -1
|
||||
#define ETH_MDC_PIN 23
|
||||
#define ETH_MDIO_PIN 18
|
||||
#define NRST 5
|
||||
#define ETH_TYPE ETH_PHY_LAN8720
|
||||
#define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT
|
||||
|
||||
#include "net/hasp_ethernet_esp32.h"
|
||||
#warning Using ESP32 Ethernet LAN8720
|
||||
#include "net/hasp_ethernet_esp32.h"
|
||||
#warning Using ESP32 Ethernet LAN8720
|
||||
|
||||
#else
|
||||
#if USE_BUILTIN_ETHERNET > 0
|
||||
#include <LwIP.h>
|
||||
#include <STM32Ethernet.h>
|
||||
#warning Use built-in STM32 Ethernet
|
||||
#elif USE_UIP_ETHERNET
|
||||
#include <UIPEthernet.h>
|
||||
#include <utility/logging.h>
|
||||
#warning Use ENC28J60 Ethernet shield
|
||||
#else
|
||||
#include "Ethernet.h"
|
||||
#warning Use W5x00 Ethernet shield
|
||||
#endif
|
||||
#include "net/hasp_ethernet_stm32.h"
|
||||
#endif
|
||||
#else
|
||||
#if USE_BUILTIN_ETHERNET > 0
|
||||
#include <LwIP.h>
|
||||
#include <STM32Ethernet.h>
|
||||
#warning Use built-in STM32 Ethernet
|
||||
#elif USE_UIP_ETHERNET
|
||||
#include <UIPEthernet.h>
|
||||
#include <utility/logging.h>
|
||||
#warning Use ENC28J60 Ethernet shield
|
||||
#else
|
||||
#include "Ethernet.h"
|
||||
#warning Use W5x00 Ethernet shield
|
||||
#endif
|
||||
#include "net/hasp_ethernet_stm32.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HASP_USE_MQTT > 0
|
||||
#include "svc/hasp_mqtt.h"
|
||||
#include "svc/hasp_mqtt.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_GPIO > 0
|
||||
#include "hasp_gpio.h"
|
||||
#include "hasp_gpio.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_HTTP > 0
|
||||
#include "svc/hasp_http.h"
|
||||
#include "svc/hasp_http.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_TELNET > 0
|
||||
#include "svc/hasp_telnet.h"
|
||||
#include "svc/hasp_telnet.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_MDNS > 0
|
||||
#include "svc/hasp_mdns.h"
|
||||
#include "svc/hasp_mdns.h"
|
||||
#endif
|
||||
|
||||
#if HASP_USE_OTA > 0
|
||||
#include "svc/hasp_ota.h"
|
||||
#ifndef HASP_OTA_PORT
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
#define HASP_OTA_PORT 3232
|
||||
#elif defined(ARDUINO_ARCH_ESP8266)
|
||||
#define HASP_OTA_PORT 8266
|
||||
#endif
|
||||
#endif
|
||||
#include "svc/hasp_ota.h"
|
||||
#ifndef HASP_OTA_PORT
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
#define HASP_OTA_PORT 3232
|
||||
#elif defined(ARDUINO_ARCH_ESP8266)
|
||||
#define HASP_OTA_PORT 8266
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HASP_USE_TASMOTA_SLAVE > 0
|
||||
#include "svc/hasp_slave.h"
|
||||
#include "svc/hasp_slave.h"
|
||||
#endif
|
||||
|
||||
#ifndef FPSTR
|
||||
#define FPSTR(pstr_pointer) (reinterpret_cast<const __FlashStringHelper *>(pstr_pointer))
|
||||
#define FPSTR(pstr_pointer) (reinterpret_cast<const __FlashStringHelper *>(pstr_pointer))
|
||||
#endif
|
||||
|
||||
#ifndef PGM_P
|
||||
#define PGM_P const char *
|
||||
#define PGM_P const char *
|
||||
#endif
|
||||
|
||||
#endif // HASP_CONF_H
|
@ -181,7 +181,7 @@ void hasp_object_tree(lv_obj_t * parent, uint8_t pageid, uint16_t level)
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(parent, &list);
|
||||
const char * objtype = list.type[0];
|
||||
Log.verbose(TAG_HASP, F("[%d] p%ub%u %s"), level, pageid, parent->user_data.id, objtype);
|
||||
Log.verbose(TAG_HASP, F("[%d] " HASP_OBJECT_NOTATION " %s"), level, pageid, parent->user_data.id, objtype);
|
||||
|
||||
lv_obj_t * child;
|
||||
child = lv_obj_get_child(parent, NULL);
|
||||
@ -586,7 +586,7 @@ void hasp_process_attribute(uint8_t pageid, uint8_t objid, const char * attr, co
|
||||
if(lv_obj_t * obj = hasp_find_obj_from_parent_id(get_page_obj(pageid), objid)) {
|
||||
hasp_process_obj_attribute(obj, attr, payload, strlen(payload) > 0);
|
||||
} else {
|
||||
Log.warning(TAG_HASP, F("Unknown object p%ub%u"), pageid, objid);
|
||||
Log.warning(TAG_HASP, F("Unknown object " HASP_OBJECT_NOTATION ""), pageid, objid);
|
||||
}
|
||||
}
|
||||
|
||||
@ -614,9 +614,10 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id)
|
||||
uint8_t parentid = config[F("parentid")].as<uint8_t>();
|
||||
parent_obj = hasp_find_obj_from_parent_id(parent_obj, parentid);
|
||||
if(!parent_obj) {
|
||||
return Log.warning(TAG_HASP, F("Parent ID p%ub%u not found, skipping..."), pageid, parentid);
|
||||
return Log.warning(TAG_HASP, F("Parent ID " HASP_OBJECT_NOTATION " not found, skipping..."), pageid,
|
||||
parentid);
|
||||
} else {
|
||||
Log.verbose(TAG_HASP, F("Parent ID p%ub%u found"), pageid, parentid);
|
||||
Log.verbose(TAG_HASP, F("Parent ID " HASP_OBJECT_NOTATION " found"), pageid, parentid);
|
||||
}
|
||||
}
|
||||
|
||||
@ -970,7 +971,7 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id)
|
||||
/** verbose reporting **/
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
Log.verbose(TAG_HASP, F(" * p%ub%u = %s"), pageid, temp, list.type[0]);
|
||||
Log.verbose(TAG_HASP, F(" * " HASP_OBJECT_NOTATION " = %s"), pageid, temp, list.type[0]);
|
||||
|
||||
/* test double-check */
|
||||
lv_obj_t * test = hasp_find_obj_from_parent_id(get_page_obj(pageid), (uint8_t)temp);
|
||||
|
@ -133,7 +133,7 @@ void mqtt_send_lwt(bool online)
|
||||
void mqtt_send_object_state(uint8_t pageid, uint8_t btnid, char * payload)
|
||||
{
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 16];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/p%ub%u"), mqttNodeTopic, pageid, btnid);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/" HASP_OBJECT_NOTATION), mqttNodeTopic, pageid, btnid);
|
||||
bool res = mqttPublish(tmp_topic, payload);
|
||||
}
|
||||
|
||||
|
@ -57,9 +57,9 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id)
|
||||
DynamicJsonDocument doc(512);
|
||||
mqtt_ha_add_device(doc);
|
||||
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("p%db%d"), page, id);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR(HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("stype")] = buffer; // subtype = "p0b0"
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~state/p%db%d"), page, id);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~state/" HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("t")] = buffer; // topic
|
||||
|
||||
doc[F("atype")] = "trigger"; // automation_type
|
||||
@ -67,29 +67,29 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id)
|
||||
dispatch_get_event_name(HASP_EVENT_DOWN, buffer, sizeof(buffer));
|
||||
doc[F("pl")] = buffer;
|
||||
doc[F("type")] = "button_short_press";
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName,
|
||||
page, id, "short_press");
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"),
|
||||
discovery_prefix, mqttNodeName, page, id, "short_press");
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
|
||||
dispatch_get_event_name(HASP_EVENT_SHORT, buffer, sizeof(buffer));
|
||||
doc[F("pl")] = buffer;
|
||||
doc[F("type")] = "button_short_release";
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName,
|
||||
page, id, "short_release");
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"),
|
||||
discovery_prefix, mqttNodeName, page, id, "short_release");
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
|
||||
dispatch_get_event_name(HASP_EVENT_LONG, buffer, sizeof(buffer));
|
||||
doc[F("pl")] = buffer;
|
||||
doc[F("type")] = "button_long_press";
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName,
|
||||
page, id, "long_press");
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"),
|
||||
discovery_prefix, mqttNodeName, page, id, "long_press");
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
|
||||
dispatch_get_event_name(HASP_EVENT_UP, buffer, sizeof(buffer));
|
||||
doc[F("pl")] = buffer;
|
||||
doc[F("type")] = "button_long_release";
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName,
|
||||
page, id, "long_release");
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"),
|
||||
discovery_prefix, mqttNodeName, page, id, "long_release");
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
}
|
||||
|
||||
@ -99,16 +99,16 @@ void mqtt_ha_register_switch(uint8_t page, uint8_t id)
|
||||
DynamicJsonDocument doc(512);
|
||||
mqtt_ha_add_device(doc);
|
||||
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("p%db%d"), page, id);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR(HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("stype")] = buffer; // subtype = "p0b0"
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~state/p%db%d"), page, id);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~state/" HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("t")] = buffer; // topic
|
||||
|
||||
doc[F("atype")] = "binary_sensor"; // automation_type
|
||||
doc[F("pl")] = "SHORT"; // payload
|
||||
doc[F("type")] = "button_short_release";
|
||||
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName,
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"), discovery_prefix, mqttNodeName,
|
||||
page, id, "short");
|
||||
|
||||
mqtt_ha_send_json(buffer, doc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user