|
EnigmaIOT
0.9.8
Secure sensor and gateway platform based on ESP8266 and ESP32
|
Go to the documentation of this file.
14 #include <CayenneLPP.h>
17 #include <ESP8266WiFi.h>
21 #include <driver/adc.h>
24 #include "soc/rtc_cntl_reg.h"
26 #include <ArduinoJson.h>
29 #define LED_BUILTIN 2 // ESP32 boards normally have a LED in GPIO2 or GPIO5
30 #endif // !LED_BUILTIN
32 #define BLUE_LED LED_BUILTIN
40 Serial.println (
"Registered");
44 Serial.printf (
"Unregistered. Reason: %d\n", reason);
54 Serial.printf (
"Data from %s\n", macstr);
62 Serial.printf (
"Command %s\n", commandStr.c_str ());
64 Serial.printf (
"Encoding: 0x%02X\n", payloadEncoding);
67 DynamicJsonDocument doc (1000);
69 memcpy (tempBuffer, buffer, length);
71 switch (payloadEncoding) {
73 root = doc.createNestedArray ();
74 lpp.decode (tempBuffer, length, root);
75 serializeJsonPretty (doc, Serial);
78 deserializeMsgPack (doc, tempBuffer, length);
79 serializeJsonPretty (doc, Serial);
82 DEBUG_WARN (
"Payload encoding %d is not (yet) supported", payloadEncoding);
88 Serial.begin (115200); Serial.println (); Serial.println ();
89 time_t start = millis ();
94 WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0);
109 if (wifi_get_macaddr (STATION_IF, macAddress))
111 if ((esp_wifi_get_mac (WIFI_IF_STA, macAddress) == ESP_OK))
116 DEBUG_DBG (
"Node address set to %s",
mac2str (macAddress));
118 DEBUG_WARN (
"Node address error");
125 msg.addAnalogInput (0, (
float)(ESP.getVcc ()) / 1000);
127 msg.addAnalogInput (0, (
float)(analogRead (ADC1_CHANNEL_0_GPIO_NUM) * 3.6 / 4096));
129 msg.addTemperature (1, 20.34);
130 msg.addDigitalInput (2, 123);
131 msg.addBarometricPressure (3, 1007.25);
132 msg.addCurrent (4, 2.43);
135 Serial.printf (
"Vcc: %f\n", (
float)(ESP.getVcc ()) / 1000);
137 Serial.printf (
"Vcc: %f\n", (
float)(analogRead (ADC1_CHANNEL_0_GPIO_NUM) * 3.6 / 4096));
141 Serial.printf (
"Trying to send: %s\n",
printHexBuffer (msg.getBuffer (), msg.getSize ()));
145 Serial.println (
"---- Error sending data");
147 Serial.println (
"---- Data sent");
149 Serial.printf (
"Total time: %lu ms\n", millis () - start);
static const size_t ENIGMAIOT_ADDR_LEN
Address size. Mac address = 6 bytes.
nodeMessageType
Message code definition.
static const uint8_t MAX_MESSAGE_LENGTH
Maximum payload size on ESP-NOW.
static const int MAX_DATA_PAYLOAD_SIZE
Maximun payload size for data packets.
void setResetPin(int pin)
Sets a pin to be used to reset configuration it it is connected to ground during startup.
void disconnectEventHandler(nodeInvalidateReason_t reason)
void handle()
This method should be called periodically for instance inside loop() function. It is used for interna...
char * printHexBuffer(const uint8_t *buffer, uint16_t len)
Debug helper function that generates a string that represent a buffer hexadecimal values.
EnigmaIOTNodeClass EnigmaIOTNode
void sleep()
Requests transition to sleep mode (low energy state)
void onDisconnected(onDisconnected_t handler)
Defines a function callback that will be called everytime node is disconnected from gateway.
bool sendData(const uint8_t *data, size_t len, dataMessageType_t dataMsgType, bool encrypt=true, nodePayloadEncoding_t payloadEncoding=CAYENNELPP)
Initiades data transmission distinguissing if it is payload or control data.
void connectEventHandler()
Library to build a node for EnigmaIoT system.
void onConnected(onConnected_t handler)
Defines a function callback that will be called everytime node is registered on gateway.
void begin(Comms_halClass *comm, uint8_t *gateway=NULL, uint8_t *networkKey=NULL, bool useCounter=true, bool sleepy=true)
Initalizes communication basic data and starts node registration.
void setLed(uint8_t led, time_t onTime=FLASH_LED_TIME)
Sets a LED to be flashed every time a message is transmitted.
Espnow_halClass Espnow_hal
Singleton instance of ESP-NOW class.
char * mac2str(const uint8_t *mac, char *extBuffer)
Debug helper function that generates a string that represent a MAC address.
bool setNodeAddress(uint8_t address[ENIGMAIOT_ADDR_LEN])
Set node address to be used in EnigmaIOT communication.
nodeInvalidateReason_t
Key invalidation reason definition.
void processRxData(const uint8_t *mac, const uint8_t *buffer, uint8_t length, nodeMessageType_t command, nodePayloadEncoding_t payloadEncoding)
ESP-NOW communication system abstraction layer. To be used on ESP8266 or ESP32 platforms.
void onDataRx(onNodeDataRx_t handler)
Defines a function callback that will be called on every downlink data message that is received from ...