Node-Red module for streaming Easee charger data.
npm i @runnane/node-red-contrib-easee
Add the easee Charger Streaming Client
node
Configure the node with username/password and the Charger ID.
Configure the node with username/password and a Charger ID ("EH000000").
Streaming telemetry from the signalR enpoint will be available in the fourth output,
the ProductUpdate
one.
Use the easee REST Client
node
Configure the node with an account username/password.
The REST node will not authenticate on its own, so you will need to authenticate/renew tokens.
However, if you use the easee Charger Streaming Client
node,
you do not need to authenticate additionally with the REST node, as the signalR socket
will authenticate and renew automatically.
There are two ways of sending commands:
Send the your selected command as the topic into the node.
You can set the charger, site and/or circuit variables directly in the node, or send them as
msg.charger
, msg.site
and msg.circuit
to override.
Implemented commands that may be sent as topic, are:
login
refresh_token
charger
charger_details
charger_state
charger_site
charger_config
charger_session_latest
charger_session_ongoing
stop_charging
start_charging
pause_charging
resume_charging
toggle_charging
dynamic_current
(Without msg.payload.body for reading (GET), and with msg.payload.body for setting (POST).)reboot
Example, get charger details:
node.send({
topic: "charger_details",
charger: "EH000000",
});
Send the full path as msg.command, and optionally the POST body as msg.payload. See get_api-chargers for full list of commands. When adding a body, the request will be sent as a POST, else as a GET. If you wish to send a POST without body, add an empty object as POST argument.
Example to set dynamic current to 3x25A by doing a custom command with POST body:
Set dynamic current:
node.send({
payload: {
path: "/sites/1234/circuits/1345/dynamic_current",
body: { phase1: 25, phase2: 25, phase3: 25 },
}
});
Pause charging:
node.send({
payload: {
path: "/chargers/EH000000/commands/pause_charging",
body: {},
}
});
See example flows