Supla LS1024B Reader

Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

Przedstawiam wszystkim zainteresowanym swój nowy projekt.
Na bazie firmware ESP8266 Primary GUI v2 dostępnego tutaj viewtopic.php?f=11&t=5233 przygotowałem drobną modyfikację umożliwiającą odczyt kilku parametrów pracy regulatora ładowania akumulatora z paneli fotowoltaicznych.

Regulator z którego korzystam to Epever LS1024B (kompatybilne są również inne modele tego producenta).
Parametry odczytuję z wykorzystaniem protokołu Modbus RTU i magistrali RS485.

Do realizacji projektu wykorzystałem moduł ESP8266 NodeMCU v3 CH340G, konwerter UART TTL/RS485 XY-017 oraz regulator ładowania Epever LS1024B.

Wszystko dostępne na znanym portalu z Chin
Epever LS1024B https://pl.aliexpress.com/item/40002830 ... hweb201603_
ESP8266 NodeMCU v3 CH340G https://pl.aliexpress.com/item/32408097 ... hweb201603_
UART TTL/RS485 XY-017 https://pl.aliexpress.com/item/32385757 ... 5c0frsTkXc

Kod źródłowy oraz plik .bin do pobrania z GitHub'a https://github.com/Yepestis/Supla_LS1024B_Reader
W kodzie jest bałagan więc jestem gotowy na krytykę :lol:

Na obecną chwilę odczytuję 11 parametrów. Do wyświetlania parametrów wykorzystuję kanały termometrów, stąd jednostka stopnia. Czekam na kanał pomiarowy ogólnego przeznaczenia, lub kanał licznika energii elektrycznej na Arduino ;)
12 kanał zawiera informację o procentowej ilości błędów komunikacji ESP z regulatorem.
W planie jest jeszcze możliwość zdalnego włączania i wyłączania odbiorników przyłączonych do regulatora oraz sprawdzania ich stanu w aplikacji.

Kolejność kanałów przedstawiam na poniższym zrzucie ekranu:
AplikacjaAndroidResize.jpg
Urządzenia należy połączyć zgodnie z poniższym schematem:
SchematPodłączenia.JPG
You do not have the required permissions to view the files attached to this post.
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Ma kolega gdzieś manuala do tego regulatora odnośnie RS485? Wartości mierzone są rzeczywiste czy odbiegają od prawdy? Zainteresowała mnie wersja na 20A gdyż ja mam łącznie 300W/20V/15A panele i aku łącznie prawie 180Ah.
Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

Pomiary są dość dokładne jak na takie urządzenie. Multimetr wskazuje zbliżone wartości. Czasem jakiś odczyt lekko odbiega od prawdy ale kolejny już jest prawidłowy, nie zdarza się to jednak zbyt często.

Tak to się prezentuje na wykresach z ostatniego tygodnia przy odczycie co godzinę.

Napięcie:
WykresNapięcia.JPG
Prąd:
WykresPrądu.JPG

Mapa rejestrów w załączniku:

ControllerProtocolV2.3.pdf
You do not have the required permissions to view the files attached to this post.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Widzę, że bardzo brakuje kanału pomiarowego ogólnego przeznaczenia ;)

Natomiast "total generated energy" mógłbyś wrzucić pod licznik impulsów i byłoby w "kWh" natywnie
Najlepsze suple dla Twojego domu :mrgreen:
Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

klew wrote: Mon Jun 01, 2020 11:36 am Natomiast "total generated energy" mógłbyś wrzucić pod licznik impulsów i byłoby w "kWh" natywnie
No właśnie nie mogłem bo kanał licznika impulsów zlicza przyrosty więc historia by się błędnie wyświetlała.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Yepestis wrote: Mon Jun 01, 2020 11:51 am No właśnie nie mogłem bo kanał licznika impulsów zlicza przyrosty więc historia by się błędnie wyświetlała.
To co on pokazuje? Dla mnie "total" oznacza "total" ;). Ta produkcja to "daily total"?
Najlepsze suple dla Twojego domu :mrgreen:
Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

klew wrote: Mon Jun 01, 2020 12:17 pm
Yepestis wrote: Mon Jun 01, 2020 11:51 am No właśnie nie mogłem bo kanał licznika impulsów zlicza przyrosty więc historia by się błędnie wyświetlała.
To co on pokazuje? Dla mnie "total" oznacza "total" ;). Ta produkcja to "daily total"?
Pokazuje produkcję od początku świata w formie aktualnej wartości.
Ale z tego co ja rozumiem to w przypadku licznika impulsów wysyłamy na serwer przyrosty a nie aktualną wartość.
Chyba że się mylę.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Yepestis wrote: Mon Jun 01, 2020 12:32 pm
Pokazuje produkcję od początku świata w formie aktualnej wartości.
Ale z tego co ja rozumiem to w przypadku licznika impulsów wysyłamy na serwer przyrosty a nie aktualną wartość.
Chyba że się mylę.
Jak od początku świata, to będzie ok :)

Licznik impulsów wysyła "total", a nie przyrosty.
Najlepsze suple dla Twojego domu :mrgreen:
Matush88
Posts: 4
Joined: Sun Dec 22, 2019 7:35 pm

Post

Witam koledzy:)
Podczas kompilowania firmware w Arduino IDE napotkałem na problem tzn kompilacja kończy się wynikiem:


Błąd pobierania http://arduino.esp8266.com/staging/pack ... index.json
UWAGA: biblioteka SuplaDevicePrimary-master działa na architekturze(/architekturach) avr i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) esp8266.
Supla_LS1024B_Reader:117:1: error: 'ModbusRTU' does not name a type

ModbusRTU mb ;

^

Supla_LS1024B_Reader:141:13: error: 'Modbus' has not been declared

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:48: error: expected primary-expression before 'transactionId'

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:63: error: expected primary-expression before 'void'

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:73: error: expression list treated as compound expression in initializer [-fpermissive]

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:13: error: redefinition of 'bool cbRead'

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:6: error: 'bool cbRead' previously defined here

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:13: error: 'Modbus' has not been declared

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:48: error: expected primary-expression before 'transactionId'

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Supla_LS1024B_Reader:141:63: error: expected primary-expression before 'void'

bool cbRead(Modbus::ResultCode event, uint16_t transactionId, void* data) {

^

Znaleziono wiele bibliotek w "ESP8266WiFi.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ESP8266WiFi
Znaleziono wiele bibliotek w "ESP8266WebServer.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ESP8266WebServer
Znaleziono wiele bibliotek w "ESP8266HTTPUpdateServer.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ESP8266HTTPUpdateServer
Znaleziono wiele bibliotek w "Wire.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\Wire
Znaleziono wiele bibliotek w "ModbusRTU.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\ModbusRTU-master
Znaleziono wiele bibliotek w "SH1106Wire.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\esp8266-oled-ssd1306-master
Znaleziono wiele bibliotek w "EEPROM.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\EEPROM
Znaleziono wiele bibliotek w "DHT.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\arduino-DHT-master
Znaleziono wiele bibliotek w "SHTSensor.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\arduino-sht-master
Znaleziono wiele bibliotek w "ESP8266mDNS.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ESP8266mDNS
Znaleziono wiele bibliotek w "SPI.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\SPI
Znaleziono wiele bibliotek w "DoubleResetDetector.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\DoubleResetDetector
Znaleziono wiele bibliotek w "ArduinoOTA.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\ArduinoOTA
Znaleziono wiele bibliotek w "Adafruit_Sensor.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\Adafruit_Unified_Sensor
Niewykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\ada
Znaleziono wiele bibliotek w "SoftwareSerial.h"
Wykorzystane: C:\Users\Mateus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.3\libraries\SoftwareSerial
Znaleziono wiele bibliotek w "ESP8266TrueRandom.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\ESP8266TrueRandom-master
Znaleziono wiele bibliotek w "SuplaDevicePrimary.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\SuplaDevicePrimary-master
Znaleziono wiele bibliotek w "OneWire.h"
Wykorzystane: C:\Users\Mateus\Documents\Arduino\libraries\OneWire

Macie pomysły jak to rozwiązać ?
W temacie Arduino IDE nie mam wogóle doświadczenia wiec każda pomoc mile widziana:)

Wersja Arduino IDE 1.8.10
Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

Jak mnie pamieć nie myli to trzeba doinstalować jeszcze poniższą bibliotekę modbus

Modbus library.jpg
You do not have the required permissions to view the files attached to this post.

Return to “Projekty użytkowników”