Coder Social home page Coder Social logo

noderedepeverdashboard's Introduction

Node Red EPEver Dashboard

A node red based dashboard for most EPEver/EPSolar solar charge controllers.

This dashboard has been tested with EPSolar Landstar PWM, EPEver Tracer A, Tracer AN and TriRon solar charge controllers.
It reads live and historical stats and displays them in graphs using the standard Node Red UI. It also allows you to change a number of the charging parameters which are accessible when you select 'User' battery type.

Full instructions for installing raspbian, node red and the flow is below.

This has been tested on an original Raspberry Pi 1 as well as a raspberry pi 4 using node red within Hass.io (docker).

I've used a range of different techniques within the flow both for my own learning and to outline to others how it is possible to do many of these processes in different ways. Much of this flow could have been completed in a couple of function nodes, but my javascript skills are fairly basic and I think that may have been more confusing for a node red novice. This is meant to be a basis for people to build upon rather than a finished product.

A full list of EPSolar ModBus Registers is avaialble here: http://www.solar-elektro.cz/data/dokumenty/1733_modbus_protocol.pdf

Install instructions

  1. Download the latest Raspbian from here... https://www.raspberrypi.org/downloads/raspbian/ I choose to use the lite version.
  2. Copy the image to an SD card. I used Etcher available from... https://www.balena.io/etcher/
  3. Once completed, create a file on the boot partition of your SD card called 'ssh'. It should just be called ssh and not have an extension.
  4. Pop the SD card in your raspberry pi and give it some power and network.
  5. Find the IP given to the pi either by plugging in a monitor, or by checking your dhcp server settings on your router.
  6. SSH into your pi. I use putty on windows, available from here... https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
  7. Log in to your pi. The default username is 'pi' and the default password is 'raspberry'.
  8. Type and run

sudo raspi-config

  1. Change the password, expand the file system (in advanced menu) and allow the pi to reboot.
  2. Log back in via SSH and run

sudo apt-get update && sudo apt-get upgrade

  1. At this point you have three options, and I recommend the second - using the official script to install the latest version of node red and npm (the package manager)

1st method - run

sudo apt-get install nodered

2nd method - run

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

3rd method - use Peter Scargills Super Script https://tech.scargill.net/the-script/ (it can be used to install node-red against a load of other handy packages, but is beyond the scope of this guide)

  1. Once either version is installed you can install it as a service...

sudo systemctl enable nodered.service

  1. Now you can start node red by running

node-red-start

  1. Open the user interface in your browser by visiting http://Your.IP.Add.ress:1880
  2. To use all the elements of the flow you will need to install the following packages. It is possible to do this via the node red user interface, so click on the burger in the top right and select palette manager. Search for, and install...
  • node-red-dashboard
  • node-red-contrib-modbus
  • node-red-contrib-influxdb
  • node-red-contrib-moment
  1. Jump back to the command line and restart node red, to ensure the nodes are installed. Because node red is installed as a service, I restart the pi.

sudo reboot now

  1. Back on the dashboard click the burger icon in the top right.
  2. Click on Import.
  3. Paste in the latest code from here: https://github.com/AdamWelchUK/NodeRedEPEverDashboard/blob/master/EPEverDashboardv0.2.json

The two flows will have been imported and you can now set about configuring them.

You will need to configure the Modbus Server by double clicking on one of the red modbus nodes.

If you'd like to log the data to a influxDB or to a csv files these nodes can be enabled and configured by double clicking them.

To access the statistics and adjust settings you must accesshttp://Your.IP.Add.ress:1880/ui

noderedepeverdashboard's People

Contributors

adamwelchuk avatar trockenasche avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

noderedepeverdashboard's Issues

Not working with XTRA series in combination with the ebox-Wif-01

I boughtan Epever XTRA3210N charge controller and connect it to my node-red environment with an ebox-Wif-01.
Unfortunately I can't get it to work!!!! I put the IP-address of the ebox-wifi as a server in the modbus -Flex-getter node. It just don't get any answers back.
Maybe it doesn't work because the XTRA series are different?
Maybe I need a virtual com port (in my case a linux port).
I have tried everything.
Is there someone who can help me, did somebody with an XTRA series controller get it to work???

WiFi Dashboard with eBox-WIFI-01 (directions for relaying Serial connection)

Hiya,

First, massive thank you. This library/setup is vastly better than the "official" apps for the eBox module. The directions below were pulled from a few places and figured newer folks might get the eBox-WIFI-01 module expecting plug and play like I did only to find a massive maze. Might be good for an addendum readme.

Note: If you haven't bought the "official" eBox WiFi module yet, consider the alternatives first, other options are more DIY but offer better setup and more options. Skip to 4. for the Serial connection directions.

  1. Attach module and directly connect via browser to eBox-WIFI-01.
  2. If the "STA Settings" tab is not available the loaded firmware might be more restrictive. Search "eBox-WIFI-01 sta mode" and troubleshoot accordingly if you want the WiFi to connect to a local network. Once you have the IP for the eBox, note for later.
  3. Install Node-Red and add the EPEverDashboard as described to desired monitor system (Pi in this example.)
  4. The eBox WiFi module is actually a simple Wireless to Serial connection but lacks translation in it's output. On the Pi (or any other device) we need to bridge the Serial connection to the Wireless on the monitoring device. To do this use socat as a relay:
    sudo socat pty,link=/dev/ttyWiFi211,unlink-close=0,raw,echo=0,mode=777 tcp:[ipofeboxwifi]:8088&
    (Adjust IP, Port, Directory as needed.)
    Source
  5. (Edit, not needed with the mode=777 added above but security still a consideration.) Set the permissions of the link directory.
    sudo chmod 777 /dev/ttyWiFi211
    (These are very open permissions, adjust as security as needed.)
  6. In the Node-Red EPEverDashboard select the modbus-client -> TracerA12 setting and change the Serial Port setting to the link directory created before, /dev/ttyWiFi211
  7. Deploy and check the UI, everything should populate and be able to Read/Write the battery values.

Battery updates & USB options

Changes made from v0.5 from dtabone

  • Line 115, under Name in JSON:
    "name": "EPEver Dashboard", field is where you can replace with your own dashboard name prefix - great if you have multiple sites.
  • XRUSB0 is added to connect via /dev/ttyXRUSB0. It's for the compiled driver option on the likes of Raspberry Pi's
  • Battery settings are modified to allow Equalization of 0 minutes for GEL batteries & compatibility for 24V systems.
    EPEverDashboardv0.5a.zip

Two Epever on one RS485?

Hi,
is it possible to use one USB RS485 Adapter with two Epever in parallel?
I trying it for several hours now, but i´m failing ;)
My Raspi is not even starting if i don´t unplug the USB..

The Error Message i get is: Error: Client Not Ready To Read At State reconnecting
Sometimes one of the Units is working, but never both at the same time. Sometimes Unit-ID 1, sometimes ID 2

Emmpunkt

Solar Power value into influxdb

Hello,

The solar generated power value going to influx is divided by 100. It's sending for instance 2.77W instead of 277W into influxdb. Attached is screenshot of my Node-red showing the value. The correct value is shown on the node-red dashboard.

Please I need help with this in multiplying the value by 100. I'm using Epever iTracer IT6415ND.

Once again, thank you for the effort.
epever

EPEver IP-3000 Inverter

Hi,

I am using this great dashboard for two of my AN controllers and it works really well but I want to be able to get some data from my IP-3000 inverter.

Ideally I would like to pull the Output Power(W) into nodered and then if it drops to 0 (if my system switches back to mains) setup some kind of email notification.

I just can't find anything about monitoring this Epever IP-3000 inverter anywhere. Any help?

FYI, I can use the Epever inverter software to monitor it but its lacking features

Include charging status

Tried for hours to get information from this modbus register data. Couldn't find on other projects too.
Would be useful to include at least D3-2 (show the current status of charging). SOC shows 100% even at beginning of charge process (voltage calculated, I guess). I'm trying to think a more precise calculation using other methods

image

Inconsistent values on solar & batt power?

I have started using you dashboard today, but I wonder if the graphs for solar & batt power need some adjustment, because sometimes they appear to report a value way lower than the values on left panel.
For example, sometimes my generation hits values higher than 500W, but the graph show values like 30 or 50W.
error

Feature request controlling the load-port (on/off)

Hi Adam
thx for your well working nodes and dashboard. I can use it with an EPever XTRA4415N on Pi4 and 485-usb.direct successfully.
My question is, is there a way to integrate a control (set manually on/off) the load-switch?
Writing the settings is possible, so it should be a way there having the registers..
Some guys're using external switches to control by wire, but that's not I'm looking for...
best, Sascha

Flow not working

Hi @AdamWelchUK ,

Thanks for the great work.

Please I need help to get the flow to work. I'm using the original Epever USB to RS485 cable. I have installed the cable driver and set the Modbus Get but the flows seems not working. I have previous used your EPEverDashboardv0.1.json with my old Raspberry Pi with same cable but can't find the old .json code again to try. Please I need help.

Thank you.

Femi

PS:
I'm not a programmer but can follow instruction to get things work.

Attached is the screenshot of my setting.
node-red-flow

xrusb0

connection issues

Hi Adam, Thanks for hard work.

for nubes like me who will came here i leave this issue record.
i have tracer 5420an + ebox-tcp-02 and with default settings i was unable to connect from nodered to get data. issue is that by default there is 23 port in modbus get profile and you need to specify 20108. it will work. perhabs Adam may add comment in workflow about it

Non properly filled array for historical data

Hello,

first of all, many thanks to AdamWelchUK for this great dashboard.
This is my first Node RED project I've deployed so I'm learning a lot.

My setup: Raspi Buster, NodeRED 14.17.3, all palletes up to date.

I'm using Dashboard v0.5.
For historical data I'm trying to modify flow to send data using MQTT to my Home Assistant instead to save to Influxdb.

There are non properly filled payload messages from Switch Node starting from topic MonthConsumed to TotalGenerated.
Only topic TodayConsumed has array of two items.
array[2]
0: 4
1: 0

Topic MonthConsumed payload array:
array[4]
0: undefined
1: undefined
2: 283
3: 0

Topic Yearconsumed:
array[6]
0: undefined
1: undefined
2: undefined
3: undefined
4: 283
5: 0

As you can see, the array has not only 2 items as the function "32 bit register conversion /100" expect so correct output is only for topic TodayConsumed.

Is there a fix for this behaviour?

Thanks

Radek

Temperatures below zero

Hi Adam, many thanks for your code which I use with a Tracer 2210AN.

In my cabin, the temperature can fall below zero C in winter. I found the Tracer encodes negative values in 2's complement. To display temperatures correctly, I replaced the /100 Range nodes after Tbatt and Tcase with Function nodes, with the following code:

var t = msg.payload;

if (t >> 15) {
    t -= 1 << 16;
}

msg.payload = t/100;

return msg;

Many decimal

Sorry for posting as an issue (must be my config) and for my poor english writing
Thank you for the dashboard. I've been using it for an year. Since first config, I noticed it put more decimal (places?) at random, every refresh of data from solar controllers.
I assume it's should be rounded to 2 decimal by looking at config. May be a raspberry nodered problem?

many decimal
image

Add current time...

Looking over this and it seems to make sense to update the unit's time and date when writing out the settings data.

Problem with configuration modbus-client

Hello Adam,
thank you for your hard work.
I have a connection problem.
I am using epever tracer 3210an, a RS485 USB cable and a RASPI 3b. I installed Node-Red yesterday following your instructions. But unfortunately I can't get in touch with EPEver.
Here is the event in /var/log/daemon.log:
{
Mar 20 16:00:50 rpi3 Node-RED[410]: payload: {
Mar 20 16:00:50 rpi3 Node-RED[410]: value: undefined,
Mar 20 16:00:50 rpi3 Node-RED[410]: unitid: 1,
Mar 20 16:00:50 rpi3 Node-RED[410]: fc: 4,
Mar 20 16:00:50 rpi3 Node-RED[410]: address: 12544,
Mar 20 16:00:50 rpi3 Node-RED[410]: quantity: 18,
Mar 20 16:00:50 rpi3 Node-RED[410]: emptyMsgOnFail: true,
Mar 20 16:00:50 rpi3 Node-RED[410]: keepMsgProperties: true,
Mar 20 16:00:50 rpi3 Node-RED[410]: messageId: new ObjectId("623741a2fcca8f991afd26ab")
Mar 20 16:00:50 rpi3 Node-RED[410]: },
Mar 20 16:00:50 rpi3 Node-RED[410]: topic: 'livestats',
Mar 20 16:00:50 rpi3 Node-RED[410]: _msgid: 'e897b8b8ad8aa219',
Mar 20 16:00:50 rpi3 Node-RED[410]: messageId: new ObjectId("623741a2fcca8f991afd26ab"),
Mar 20 16:00:50 rpi3 Node-RED[410]: error: {
Mar 20 16:00:50 rpi3 Node-RED[410]: message: 'Error: Client Not Ready To Read At State reconnecting',
Mar 20 16:00:50 rpi3 Node-RED[410]: source: {
Mar 20 16:00:50 rpi3 Node-RED[410]: id: '2c18fdaf.8153d2',
Mar 20 16:00:50 rpi3 Node-RED[410]: type: 'modbus-flex-getter',
Mar 20 16:00:50 rpi3 Node-RED[410]: name: 'Modbus Get',
Mar 20 16:00:50 rpi3 Node-RED[410]: count: 1
Mar 20 16:00:50 rpi3 Node-RED[410]: },
Mar 20 16:00:50 rpi3 Node-RED[410]: stack: 'Error: Client Not Ready To Read At State reconnecting\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object. (/home/pi/.node-red/node_modules/node-red-contrib-modbus/modbus/maps/modbus-client.js:472:15)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object.emit (events.js:314:20)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object.emit (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:185:20)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object._inputCallback (/home/pi/.node-red/node_modules/node-red-contrib-modbus/modbus/maps/modbus-flex-getter.js:146:21)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:207:26\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object.trigger (/usr/lib/node_modules/node-red/node_modules/@node-red/util/lib/hooks.js:149:13)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object.Node._emitInput (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:199:11)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object.Node.emit (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:183:25)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Object.Node.receive (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:482:10)\n' +
Mar 20 16:00:50 rpi3 Node-RED[410]: ' at Immediate._onImmediate (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/flows/Flow.js:814:52)'
Mar 20 16:00:50 rpi3 Node-RED[410]: }
Mar 20 16:00:50 rpi3 Node-RED[410]: }


I configured the modbus clients as follows:

Bildschirmfoto vom 2022-03-20 16-04-45

My cable is recognized, a driver is loaded.
I checked that with lsusb and in dmesg.

Can you spot an error in the screenshot?

Many thanks in advance

Frank

EPSolar Dashboard Error

Hi Adam,
Ran into a problem with installing your Dashboard into Node-Red.
Import into clipboard gives an "ERROR: Input not a JSON Array."
See attached screenshot.
image

Regards Warren

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.