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ę
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:
Urządzenia należy połączyć zgodnie z poniższym schematem:
Supla LS1024B Reader
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.
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:
Prąd:
Mapa rejestrów w załączniku:
Tak to się prezentuje na wykresach z ostatniego tygodnia przy odczycie co godzinę.
Napięcie:
Prąd:
Mapa rejestrów w załączniku:
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
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
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