Skip to content

Commit

Permalink
[ESPEasy p2p] Add p2pNode#Connected and #Disconnected events
Browse files Browse the repository at this point in the history
  • Loading branch information
TD-er committed May 1, 2024
1 parent aad024e commit b54d2d0
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 0 deletions.
44 changes: 44 additions & 0 deletions docs/source/Plugin/P000_events.repl
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,50 @@
Reboot
endon

"
"
``p2pNode#Connected``

Added: 2024-05-01

Triggered when a new ESPEasy p2p node has been seen.
N.B. Only for nodes with a valid unit ID (not 0)

Eventvalues:

- Unit ID

- Node name

- Build number/date
","

.. code-block:: none

on p2pNode#Connected do
LogEntry,'ESPEasy p2p node %eventvalue1% added: %eventvalue2% with build %eventvalue3%'
endon

"
"
``p2pNode#Disconnected``

Added: 2024-05-01

Triggered when a ESPEasy p2p node has been removed from the nodes list.
N.B. Only for nodes with a valid unit ID (not 0)

Eventvalues:

- Unit ID
","

.. code-block:: none

on p2pNode#Disconnected do
LogEntry,`ESPEasy p2p node %eventvalue1% not seen for a while`
endon

"
"
``WiFi#Connected``
Expand Down
23 changes: 23 additions & 0 deletions src/src/DataStructs/NodesHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
#include "../Globals/ESPEasy_now_state.h"
#endif

#include "../Globals/EventQueue.h"

#include "../DataTypes/NodeTypeID.h"

#if FEATURE_MQTT
Expand All @@ -28,6 +30,8 @@
#include "../Helpers/ESPEasy_time_calc.h"
#include "../Helpers/Misc.h"
#include "../Helpers/PeriodicalActions.h"
#include "../Helpers/StringConverter.h"
#include "../Helpers/StringGenerator_System.h"

#define ESPEASY_NOW_ALLOWED_AGE_NO_TRACEROUTE 35000

Expand Down Expand Up @@ -99,6 +103,20 @@ bool NodesHandler::addNode(const NodeStruct& node)
}
}

if (isNewNode) {
if (Settings.UseRules && node.unit != 0)
{
// Generate event announcing new p2p node
// TODO TD-er: Maybe also add other info like ESP type, IP-address, etc?
eventQueue.addMove(strformat(
F("p2pNode#Connected=%d,'%s','%s'"),
node.unit,
node.getNodeName().c_str(),
formatSystemBuildNr(node.build).c_str()
));
}
}

return isNewNode;
}

Expand Down Expand Up @@ -539,6 +557,11 @@ bool NodesHandler::refreshNodeList(unsigned long max_age_allowed, unsigned long&
}
#endif
if (mustErase) {
if (Settings.UseRules && it->second.unit != 0)
{
// Add event about removing node from nodeslist.
eventQueue.addMove(strformat(F("p2pNode#Disconnected=%d"), it->second.unit));
}
{
_nodes_mutex.lock();
it = _nodes.erase(it);
Expand Down

0 comments on commit b54d2d0

Please sign in to comment.