Simple flow to send commands to and receive events from a KEBA P30 wallbox
I use this flow to
- send commands to my KEBA P30X wallbox (eg. start RFID identified charging session)
- query data (eg. last charging session data)
- receive push events from the wallbox (eg. cable plugged in)
Config: set IP of your wallbox in both nodes named "Wallbox" (these are standard UDP nodes). No KEBA specific nodes needed.
Use flow 1 to send commands to the Wallbox (request reports, start RFID authorized session, send text to the wallbox display, ...)
Supported commands see the KEBA UPD programmers guide at https://www.keba.com/file/downloads/e-mobility/KeContact_P20_P30_UDP_ProgrGuide_en.pdf
Sending any one command links your wallbox to your node red server (valid till wallbox reboots). This is needed to receive push events.
Use flow 2 to receive data and events from the wallbox. There is a switch node with three outputs
- "Reply": if you send a command (via flow 1), you get the result/reply here
- "Info Energy Session": While active charging you get a msg every 1,6 seconds with a payload of the power consumption of the current charging session (Wh charged)
- "Event": Events like "cable plugged in" or "session started" are received in realtime here
Possible use cases
- status display: charging state, actual current (in Ampere), energy charged (in Wh), ...
- automation: limit charging current to PV output
- automation: RFID simulation (start session via RFID without physical CARD)
[{"id":"c19fcd4d51343e6d","type":"udp in","z":"e99d253a8c7c59af","name":"Wallbox","iface":"","port":"7090","ipv":"udp4","multicast":"false","group":"","datatype":"utf8","x":90,"y":340,"wires":[["0d1abb873c304e65","f41484bc89f8a257"]]},{"id":"47f9da8c1852165e","type":"udp out","z":"e99d253a8c7c59af","name":"Wallbox","addr":"192.168.1.100","iface":"","port":"7090","ipv":"udp4","outport":"7090","base64":false,"multicast":"false","x":340,"y":40,"wires":[]},{"id":"a8493474f81a80d7","type":"inject","z":"e99d253a8c7c59af","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"600","topic":"","payload":"report 1","payloadType":"str","x":120,"y":40,"wires":[["47f9da8c1852165e"]]},{"id":"a23174fce1f7e6dd","type":"inject","z":"e99d253a8c7c59af","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"report 2","payloadType":"str","x":110,"y":140,"wires":[["47f9da8c1852165e"]]},{"id":"a23ffa12a4817253","type":"inject","z":"e99d253a8c7c59af","name":"Start","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"start 4B...UseYourRFIDhere","payloadType":"str","x":110,"y":220,"wires":[["47f9da8c1852165e"]]},{"id":"23cb90d483bdfd41","type":"inject","z":"e99d253a8c7c59af","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"report 3","payloadType":"str","x":110,"y":180,"wires":[["47f9da8c1852165e"]]},{"id":"f41484bc89f8a257","type":"json","z":"e99d253a8c7c59af","name":"","property":"payload","action":"obj","pretty":false,"x":230,"y":340,"wires":[["ec6fb1c07f1e53a6"]]},{"id":"56ad17ba2dbd1b1e","type":"debug","z":"e99d253a8c7c59af","name":"Reply","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":580,"y":300,"wires":[]},{"id":"3695d4be15c1408b","type":"inject","z":"e99d253a8c7c59af","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"report 100","payloadType":"str","x":120,"y":80,"wires":[["47f9da8c1852165e"]]},{"id":"8104989e9c9e8017","type":"inject","z":"e99d253a8c7c59af","name":"Test","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"display 0 0 0 0 Test","payloadType":"str","x":110,"y":260,"wires":[["47f9da8c1852165e"]]},{"id":"ec6fb1c07f1e53a6","type":"switch","z":"e99d253a8c7c59af","name":"Type of message?","property":"payload","propertyType":"msg","rules":[{"t":"jsonata_exp","v":"$number(payload.\"ID\")>0 = true","vt":"jsonata"},{"t":"jsonata_exp","v":"payload.\"E pres\">0 = true","vt":"jsonata"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":380,"y":340,"wires":[["56ad17ba2dbd1b1e"],["32f925f7a465d108"],["d34b9d1dab27af6d","f4764e60f658dd07"]]},{"id":"32f925f7a465d108","type":"debug","z":"e99d253a8c7c59af","name":"Info Energy Session","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.\"E pres\" / 10000","targetType":"jsonata","statusVal":"","statusType":"auto","x":620,"y":340,"wires":[]},{"id":"d34b9d1dab27af6d","type":"debug","z":"e99d253a8c7c59af","name":"Event","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":580,"y":380,"wires":[]},{"id":"0d1abb873c304e65","type":"debug","z":"e99d253a8c7c59af","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":230,"y":400,"wires":[]}]