Supla LS1024B Reader

Yepestis
Posty: 609
Rejestracja: pn wrz 24, 2018 6:08 pm
Lokalizacja: Wrocław

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
AplikacjaAndroidResize.jpg (161.04 KiB) Przejrzano 4540 razy
Urządzenia należy połączyć zgodnie z poniższym schematem:
SchematPodłączenia.JPG
SchematPodłączenia.JPG (156.31 KiB) Przejrzano 4540 razy
Awatar użytkownika
Duch__
Posty: 1782
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

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.
Obrazek
Yepestis
Posty: 609
Rejestracja: pn wrz 24, 2018 6:08 pm
Lokalizacja: Wrocław

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
WykresNapięcia.JPG (150.23 KiB) Przejrzano 4481 razy
Prąd:
WykresPrądu.JPG
WykresPrądu.JPG (133.19 KiB) Przejrzano 4481 razy

Mapa rejestrów w załączniku:

ControllerProtocolV2.3.pdf
(374.76 KiB) Pobrany 129 razy
Awatar użytkownika
klew
Posty: 8349
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

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
Widzimy się na Supla Offline Party vol. 2 :!:
Yepestis
Posty: 609
Rejestracja: pn wrz 24, 2018 6:08 pm
Lokalizacja: Wrocław

klew pisze: pn cze 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.
Awatar użytkownika
klew
Posty: 8349
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Yepestis pisze: pn cze 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"?
Widzimy się na Supla Offline Party vol. 2 :!:
Yepestis
Posty: 609
Rejestracja: pn wrz 24, 2018 6:08 pm
Lokalizacja: Wrocław

klew pisze: pn cze 01, 2020 12:17 pm
Yepestis pisze: pn cze 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ę.
Awatar użytkownika
klew
Posty: 8349
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Yepestis pisze: pn cze 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.
Widzimy się na Supla Offline Party vol. 2 :!:
Matush88
Posty: 4
Rejestracja: ndz gru 22, 2019 7:35 pm

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
Posty: 609
Rejestracja: pn wrz 24, 2018 6:08 pm
Lokalizacja: Wrocław

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

Modbus library.jpg
Modbus library.jpg (33.6 KiB) Przejrzano 3530 razy
ODPOWIEDZ

Wróć do „Projekty użytkowników”