Get MODBUS data from Sofar (K-TLX) inverter through LSW-3 or LSE module

Overview

SOFAR Inverter + LSW-3/LSE

Small utility to read data from SOFAR K-TLX inverters through the Solarman (LSW-3/LSE) datalogger. Two scripts to get inverter's statistics and hardware info. Tested with logger S/N 17xxxxxxx and 21xxxxxxx (protocol V5). Requires python3 to run.

REMARK: To make it work with other inverter brand/model connected via LSW-3/LSE you might need to alter the register's addresses in the .xml files accordingly and change register start/end numbers in config.cfg

Thanks to @jlopez77 https://github.com/jlopez77 for logger/MODBUS protocol code.

Configuration

Edit the config.cfg and enter the following data:

[SofarInverter]
inverter_ip=X.X.X.X             # data logger IP
inverter_port=8899              # data logger port
inverter_sn=XXXXXXXXXX          # data logger S/N
register_start1=0x0000          # Inverter register's first MODBUS address for the first register's range.
register_end1=0x0027            # Inverter register's last MODBUS address for the first register's range
register_start2=0x0105          # Inverter register's first MODBUS address for a second register's range
register_end2=0x0114            # Inverter register's last MODBUS address for a second register's range
registerhw_start=0x2000         # Like above, but for InverterHWData.py
registerhw_end=0x200D           # Like above, but for InverterHWData.py
lang=                           # Output language (available: PL,EN)
verbose=0                       # Set to 1 for additional info to be presented (registers, binary packets etc.)

[Prometheus]
prometheus=0                    # set to 1 to export data in Prometheus metrics format
prometheus_file=/xx/xx/metrics/index.html  # Path to Prometheus metrics file served by web server

[InfluxDB]
influxdb=0                      # set to 1 to export data to InfluxDB
influxdb_host=                  # InfluxDB host (i.e. 127.0.0.1)
influxdb_port=8086              # InfluxDB port
influxdb_user=                  # InfluxDB user with permisions to read/write from/to dbname
influxdb_password=              # User password
influxdb_dbname=                # Database name 

[MQTT]
mqtt=0                          # 0: disabled, 1: enabled
mqtt_server=                    # MQTT server IP address
mqtt_port=1883                  # MQTT server tcp port
mqtt_topic=                     # MQTT topic name
mqtt_username=                  # MQTT access username
mqtt_passwd=                    # MQTT user password
mqtt_tls=0                      # Set to 1 to enable TLS support
mqtt_tls_insecure=True          # Set to False to enable strict server's certificate hostname matching
mqtt_tls_version=2              # 1 or 2
mqtt_cacert=                    # CA certificate path/filename

[Domoticz]
domoticz_support=0              # 0: disabled, 1: enabled

Files SOFARMap.xml and SOFARHWMap.xml contain MODBUS inverter's registers mapping for Sofar Solar K-TLX product line
and Prometheus/InfluxDB metrics configuration.
Edit i.e. to get captions in a different language, change Prometheus/InfluxDB metrics names or
if Your inverter has different register's numbers.
Example SOFARMap.xml structure and fields definition (similar for SOFARHWMap.xml):
"directory": "solar",               # Id
    "items": [
      {
        "titleEN": "PV1 Power",     # English JSON output name 
        "titlePL": "Moc PV1",       # Polish JSON output name
        "registers": ["0x000A"],    # Inverter's register address (must be in range configured in the config file)
        "DomoticzIdx": 0,           # Domoticz virtual device idx number (for Domoticz support)
        "optionRanges": [],         # For numeric value to text label mappings
        "ratio": 10,                # Value ratio (will be used to multiply response value)
        "unit": "W",                # Value unit
        "graph": 1,                 # Set to 1, to export value to Prometheus/InfluxDB
        "metric_type": "gauge",     # Prometheus metric type
        "metric_name": "SolarPower",# Prometheus/InfluxDB container name
        "label_name": "Power",      # Prometheus/InfluxDB label name
        "label_value": "PV1"        # Prometheus/InfluxDB value name
      }

Run

bash:/python3 InverterData.py  (or ./InverterData.py)
{
    "Inverter status": "Normal",
    "Fault 1": "No error",
    "Fault 2": "No error",
    "Fault 3": "No error",
    "Fault 4": "No error",
    "Fault 5": "No error",
    "PV1 Voltage (V)": 403.7,
    "PV1 Current (A)": 0.14,
    "PV2 Voltage (V)": 78.9,
    "PV2 Current (A)": 0.0,
    "PV1 Power (W)": 50,
    "PV2 Power (W)": 0,
    "Output active power (W)": 20,
    "Output reactive power (kVar)": -0.65,
    "Grid frequency (Hz)": 49.98,
    "L1 Voltage (V)": 241.8,
    "L1 Current (A)": 0.93,
    "L2 Voltage (V)": 240.4,
    "L2 Current (A)": 0.91,
    "L3 Voltage (V)": 240.4,
    "L3 Current (A)": 0.93,
    "Total production (kWh)": 297,
    "Total generation time (h)": 249,
    "Today production (kWh)": 14010.0,
    "Today generation time (min)": 679,
    "Inverter module temperature (ºC)": 29,
    "Inverter inner termperature (ºC)": 45,
    "Inverter bus voltage (V)": 655.8,
    "PV1 voltage sample by slave CPU (V)": 402.6,
    "PV1 current sample by slave CPU (A)": 79.1,
    "Countdown time (s)": 60,
    "Inverter alert message": 0,
    "Input mode": 1,
    "Communication Board inner message": 0,
    "Insulation of PV1+ to ground": 1379,
    "Insulation of PV2+ to ground": 2387,
    "Insulation of PV- to ground": 1917,
    "Country": "Poland",
    "String 1 voltage (V)": 9.3,
    "String 1 current (A)": 24.04,
    "String 2 voltage (V)": 9.1,
    "String 2 current (A)": 24.04,
    "String 3 voltage (V)": 9.3,
    "String 3 current (A)": 0.0,
    "String 4 voltage (V)": 29.7,
    "String 4 current (A)": 0.0,
    "String 5 voltage (V)": 24.9,
    "String 5 current (A)": 14.01,
    "String 6 voltage (V)": 67.9,
    "String 6 current (A)": 0.29,
    "String 7 voltage (V)": 4.5,
    "String 7 current (A)": 65.58,
    "String 8 voltage (V)": 402.6,
    "String 8 current (A)": 7.91
}
bash:/python3 /InverterHWData.py (or ./InverterHWData.py)
{
    "Product code": "5kW",
    "Serial Number": "SXXXXXXXXXXX",
    "Software Version": "V270",
    "Hardware Version": "V100",
    "DSP Version": "V270"
}

Known Issues

You tell me :)

Contrib

Feel free to suggest :) If You want to rewrite or/add change anything - please fork Your own project.

MQTT Support (Domoticz compatible)

    1. JSON_attributes_topic (unless Domoticz support enabled !): "mqtt_topic/attributes"
    2. For TLS support You'll need at least CA Certificate and TLS enabled MQTT
       To enable TLS for Mosquitto look i.e here: http://www.steves-internet-guide.com/mosquitto-tls/
    3. To turn Domoticz support on:
       a) enable it in config.cfg
       b) set mqtt_topic=domoticz/in in config.cfg
       c) create virtual devices in Domoticz (write down their idx numbers)
       d) in SOFARMap.xml find corresponding variables and for each input idx number
       e) leave "DomoticzIdx":0 for variables You don't want to send data to Domoticz
       WARNING: When enabled, Domoticz support disables normal MQTT message delivery (all values in one message).
    3. Tested with Mosquitto MQTT server (both with and without TLS) and Domoticz 2021.1

Prometheus+Grafana support

Steps to run Prometheus+Grafana support:
    1. Configure prometheus options in config.cfg
    2. Serve prometheus metrics file using any web server (name it index.html to be the default page in configured path)
    3. Configure prometheus target to access the file 
    4. Add Prometheus datasource in Grafana
    5. Import grafana_en/pl.json file (Dashboards->Manage->Import).
    Enjoy :)

InfluxDB+Grafana support

Steps to run InfluxDB+Grafana support:
    1. Configure InfluxDB options in config.cfg
    2. Create database to store inverter data in InfluxDB (i.e. create database Data)
    3. Add InfluxDB datasource in Grafana (name it InfluxDB)
    4. Import grafana_iflux_en/pl.json file (Dashboards->Manage->Import).
    Enjoy :)
Comments
  • Is it possible to add support for HYD 6000-EP inverter ?

    Is it possible to add support for HYD 6000-EP inverter ?

    I tried a lot of things with no luck. No answer from the wifi logger (LSW3_15_270A_1.32)

    I got things like that with too short answer:

    root@nuc:~/sofarsolar/Sofar_LSW3-main# ./InverterData.py Connecting to logger... connected successfully ! *** Chunk no: 0 Sent data: bytearray(b'\xa5\x17\x00\x10E\x00\x00\x8d\xad,\x89\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x18E\xc0\x00\x15') Received data: b'\xa5\x13\x00\x10\x15\x00\x0f\x8d\xad,\x89\x02\x01\xc6\xa6\x00\x00~\x02\x00\x00F\x8aob\x01\x90\x02\x00\x03\\x15' 0x0000 - Inverter status: "FAULT" 0x0001 - Fault 1: 23573 No value in response for register 0x0002 Check register start/end values in config.cfg

    It would be so cool to get valid data, so I can do what I want like cool realtime graph ans stats.

    question 
    opened by maxxximatoze 40
  • Domoticz-aktualizacja danymi z inwertera

    Domoticz-aktualizacja danymi z inwertera

    Witam, szukam przyczyny conajmniej dziwnego zachowywania pozyskanych danych lub ich braku w Domoticz. Instancja Domoticz 2021.1 (build 13949) (Synology-Docker) - chcę pozyskać 12 danych z inwertera (Moc PV1,Moc PV2, Napięcie PV1, Napięcie PV2, Prąd PV, Prąd PV2, Dzienna produkcja, Całkowita produkcja, Moc czynna, Napięcie L1, Napięcie L2, Napięcie L3, Temperatura falownika, Temperatura modułu. Wszystkie potrzebne virtualne urządzenia w Domoticz utworzone, skrypty poprawnie odpowiadają i wyświetlają się kompletne wyniki na terminalu - wszystko wygląda ok. Jednak raz tylko część danych pojawia się w Domoticz (np. 3 lub 2) , raz pojawiają się wszystkie które zostały skonfigurowane (12). Nie jest to regularne - zazwyczaj zawsze jest Napięcie PV1. Skrypt działa przez crone co 2 min. zmiana na inny czas np 10 min. też nie dała rezultatu. Może jakiś pomysł?

    opened by ozogp 35
  • zmienna totalpower i mqtt

    zmienna totalpower i mqtt

    Zauważyłem dwa małe błędy.

    1. zmienna "totalpower" (zapewne też totaltime) po wyjściu z pętli mają wartość = 0 To chyba problem z zasięgiem czy wcięciem. Nie znam się na programowaniu, ale jak zadeklarowałem ja na początku kodu (bez wcięcia) to działa prawidłowo.
    2. Broker MQTT nie dostawał prawidłowych danych. Tzn. otrzymywał tylko komunikat o "totalpower". Jak zmieniłem kolejność publikacji to teraz trzyma dane o atrybutach i totalpower. client.publish(mqtt_topic+"/attributes",output) client.publish(mqtt_topic,totalpower)
    bug 
    opened by pablolite 12
  • Błędne dane z loggera LSW-3  ver. LSW3_15_270A_1.32

    Błędne dane z loggera LSW-3 ver. LSW3_15_270A_1.32

    Witam. Udało się uruchomić integrację. Jednak jest problem który polega na dziwnych danych. Wygląda to tak:

    user@debian~/SofarSolar/Sofar_LSW3$ python3 InverterData.py
    Connecting to logger... connected successfully !
    *** Chunk no:  0
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00F4\x17j\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00(E\xd4\x00\x15')
    Received data:  b"\xa5c\x00\x10\x15\x00uF4\x17j\x02\x01\x93\xf1\x03\x00\x8a\x08\x00\x00\x9f\x17'b\x01\x03P\x00\x03\xff\xc0\x05\x81\xff\xff\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ly\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\xe4v`\x15"
    0x0000 - Status: "BŁĄD"
    0x0001 - Kod błędu 1: -64
    0x0002 - Kod błędu 2: 1409
    0x0003 - Kod błędu 3: -1
    0x0004 - Kod błędu 4: "ID50 Duża różnica w poziomie próbkowania częstotliwości pomiędzy nadrzędnym i podrzędnym DSP"
    0x0005 - Kod błędu 5: "Brak błędów"
    0x0006 - Napięcie PV1: 0.0V
    0x0007 - Prąd PV1: 0.0A
    0x0008 - Napięcie PV2: 0.0V
    0x0009 - Prąd PV2: 0.0A
    0x000A - Moc PV1: 0W
    0x000B - Moc PV2: 0W
    0x000C - Moc czynna: 0W
    0x000D - Moc bierna: 0.0kVar
    0x000E - Częstotliwość sieci: 0.0Hz
    0x000F - Napięcie L1: 0.0V
    0x0010 - Prąd L1: 277.69A
    0x0011 - Napięcie L2: 0.0V
    0x0012 - Prąd L2: 0.0A
    0x0013 - Napięcie L3: 0.0V
    0x0014 - Prąd L3: 0.0A
    0x0016 - Całkowita produkcja: 0kWh
    0x0018 - Całkowity czas pracy: 11h
    0x0019 - Dzienna produkcja: 0Wh
    0x001A - Dzisiejszy czas pracy: 11min
    0x001B - Temperatura modułu: 0ºC
    0x001C - Temperatura falownika: 0ºC
    0x001D - Napięcie szyny falownika: 0.0V
    0x001E - Napięcie PV1 próbkowane przez podrzędny CPU: 0.0V
    0x001F - Prąd PV1 próbkowany przez podrzędny CPU: 0.0A
    0x0020 - Czas próbkowania: 25s
    0x0021 - Wiadomość alarmowa: 0
    0x0022 - Tryb wejściowy: 0
    0x0023 - Wewnętrzny komunikat szyny: 0
    0x0024 - Izolacja PV1+ względem ziemi: 0
    0x0025 - Izolacja PV2+ względem ziemi: 0
    0x0026 - Izolacja PV- względem ziemi: 199
    0x0027 - Kraj: "Niemcy"
    *** Chunk no:  1
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00F4\x17j\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x10\x00\x10E\xc3\x00\x15')
    *** Chunk no:  1
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00F4\x17j\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x10\x00\x10E\xc3\x00\x15')
    *** Chunk no:  1
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00F4\x17j\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x10\x00\x10E\xc3\x00\x15')
    *** Chunk no:  1
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00F4\x17j\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x10\x00\x10E\xc3\x00\x15')
    ^CTraceback (most recent call last):
      File "/home/kuma/SofarSolar/Sofar_LSW3/InverterData.py", line 164, in <module>
        data = clientSocket.recv(1024);
    KeyboardInterrupt
    
    user@debian:~/SofarSolar/Sofar_LSW3$
    

    Na falowniku jest wszystko dobrze, brak błędów i praca normalna. Inni z tego typu loggerem nie mają tego problemów. W czym może być problem? Może wersja oprogramowania na loggerze? Zestaw był zakupiony w luty tego roku.

    question 
    opened by paku2020 10
  • UnicodeDecodeError: 'charmap' codec can't decode

    UnicodeDecodeError: 'charmap' codec can't decode

    Hi, firstly thanks very much for your hard work on this, very keen to get it working on my ME3000SP. I'm using Python in Windows 11

    When I run the HWData script everything works fine, but when I run InverterData.py I get:

    PS C:\Users\marti\OneDrive\Documents\Sofar_LSW3-main-v1-8\Sofar_LSW3-main> python3 .\InverterData.py
    Connecting to logger... connected successfully !
    *** Chunk no:  0
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00?\xf1\x13k\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00(E\xd4\x00\x15')
    Received data:  b'\xa5\x10\x00\x10\x15\x00/?\xf1\x13k\x02\x01w\x88L7M\r\x00\x00;p\xd0*\x05\x00\x9b\x15'
    Traceback (most recent call last):
      File "C:\Users\marti\OneDrive\Documents\Sofar_LSW3-main-v1-8\Sofar_LSW3-main\InverterData.py", line 186, in <module>
        parameters=json.loads(txtfile.read())
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\lib\encodings\cp1252.py", line 23, in decode
        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 7995: character maps to <undefined>
    

    I presume there is a character map issue going on here? Any suggestions please?

    question 
    opened by MartinJSa 9
  • Add MQTT Auto discovery (device) support for HomeAssistant

    Add MQTT Auto discovery (device) support for HomeAssistant

    The functionality allows the device (logger) to be automatically detected in HomeAssistant in MQTT integration. Data from daily or total production can be used in the ENERGY tab ha_0 ha_1 ha_2 ha_3

    opened by pablolite 9
  • Support for inverter HYD3000-ES

    Support for inverter HYD3000-ES

    Hi,

    I tried Your script to communicate with for inverter HYD3000-ES but with no luck. After execution I see following output.

    python3 ./InverterData.py Chunk no: 0 Sent data: bytearray(b'\xa5\x17\x00\x10E\x00\x00\x86soh\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00(E\xd4\x00\x15') Received data: b'\xa5\x10\x00\x10\x15\x00\xb7\x86soh\x02\x010E\x00\x00\x9b\x19\x00\x001\xfe\x8ca\x05\x00\t\x15' 0x0000 - Status: 21 No value in response for register 0x0001 Check register start/end values in config.cfg

    python3 ./InverterHWData.py Modbus request: 0104 2000 000e 7a0e Hex string to send: A5 1700 1045 0000 86736f68 020000000000000000000000000000 01042000000e7a0e 00 15 Data sent: bytearray(b'\xa5\x17\x00\x10E\x00\x00\x86soh\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x04 \x00\x00\x0ez\x0e\x00\x15')

    Data received: b"\xa5/\x00\x10\x15\x00\xb6\x86soh\x02\x01'E\x00\x00\x92\x19\x00\x001\xfe\x8ca\x01\x04\x1c\x00\x05SM1ES130LBL394V260V100V260X\xb9\x81\x15" Hex string received: A5 2F 00 10 15 00 B6 86 73 6F 68 02 01 27 45 00 00 92 19 00 00 31 FE 8C 61 01 04 1C 00 05 53 4D 31 45 53 31 33 30 4C 42 4C 33 39 34 56 32 36 30 56 31 30 30 56 32 36 30 58 B9 81 15 Register: 0x2000 , value:0005 () Register: 0x2001 , value:534d (SM) Register: 0x2002 , value:3145 (1E) Register: 0x2003 , value:5331 (S1) Register: 0x2004 , value:3330 (30) Register: 0x2005 , value:4c42 (LB) Register: 0x2006 , value:4c33 (L3) Register: 0x2007 , value:3934 (94) Register: 0x2008 , value:5632 (V2) Register: 0x2009 , value:3630 (60) Register: 0x200A , value:5631 (V1) Register: 0x200B , value:3030 (00) Register: 0x200C , value:5632 (V2) Register: 0x200D , value:3630 (60) { "Moc falownika": "15kW", "Numer seryjny": "SM1E30LBLxxx", "Wersja oprogramowania": "V260", "Wersja sprzętowa": "V100", "Wersja DSP": "V260" }

    SN is correct, inverter_sn=175xxxxxxx Moc falownika is incorrect (should be 3 kW hybrid).

    Can you help me with this issue ?

    p.s. I found here: https://github.com/cmcgerty/Sofar2mqtt/blob/main/HYBRID/HYBRID.ino some ModBus addresses - reported as working with hybrid inverters. Can you check it ?

    opened by jezikk82 9
  • LSE-3 logger - No value in response for register 0x0000

    LSE-3 logger - No value in response for register 0x0000

    Hi

    I tried to connect to my LSE-3 logger (eth type),but I get these message:

    No value in response for register 0x0000
    Check register start/end values in config.cfg
    

    But I have no clue about these register start/end values

    Device serial number 210xxxxxxx Firmware version ME_0C_270A_1.05

    When I run InverterHWData.py I get:

    Traceback (most recent call last):
      File "path\InverterHWData.py", line 120, in <module>
        val1=chr(int(str(responsereg[0:2]),16))
    ValueError: invalid literal for int() with base 16: ''
    
    opened by wardwygaerts 7
  • Added CSV output possibility

    Added CSV output possibility

    Changed config to config-org so user can easily change its name and keep repo clear Added lines for CSV file output support Added lines in config for CSV file support If none mqtt or CSV is chosen json console output is enabled

    opened by k0201 4
  • 'charmap' codec can't decode byte 0x81 in position 7950: character maps to <undefined>

    'charmap' codec can't decode byte 0x81 in position 7950: character maps to

    Hi! Glad to see that someone did figure out how does protocol v5 works. I tried it on my inverter and I am getting such message:

    Chunk no:  0
    Sent data:  bytearray(b'\xa5\x17\x00\x10E\x00\x00\xe1,\x1ah\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00(E\xd4\x00\x15')
    Received data:  b'\xa5c\x00\x10\x15\x00\x03\xe1,\x1ah\x02\x01\x0f\xa6/\x00H\x00\x00\x00\x00\x00\x00\x00\x01\x03P\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x128\x02\x81\x11\xf6\x02w\x01+\x01"\x028\xff\xbe\x13\x89\t$\x03-\t0\x03-\t\x1e\x03,\x00\x00\x07\xf9\x00\x00\x03V\x05\x01\x01(\x00*\x001\x19\x01\x12*\x11\xf2\x00<\x00\x00\x00\x01\x00\x00\x04\x9e\x0b\x02\t\x10\x00\x0ce=\xd9\x15'
    Traceback (most recent call last):
      File "C:\Users\Lenovo\Documents\Sofar_LSW3-main\InverterData.py", line 156, in <module>
        parameters=json.loads(txtfile.read())
      File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python39-32\lib\encodings\cp1250.py", line 23, in decode
        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 7950: character maps to <undefined>
    

    The LWS serial numer is 174654****, FW: LSW3_14_FFFF_1.0.34 Inverter type is SF4ES008 (Sofar 8.8KTL-X) V2.40 I did try it on Windows with python 3.9.0 but can also check on linux later.

    If you have any ideas what should I change to make it work I would be glad to hear them :D Thanks!

    question 
    opened by k0201 4
  • Wifi logger Protocol

    Wifi logger Protocol

    MichaluxPL, thanks for a great start with inverters via Wifi logger. Would you like to make a similar module for the new G3 series inverters, could you share the WiFi Loggera protocol? I searched the entire Internet, I can’t find anything ... Maybe you can send it to the post office if you don’t want to post it for everyone: [email protected]

    opened by GusakIurii 3
  • azzurro HYBRID inverter can`t recieve value

    azzurro HYBRID inverter can`t recieve value

    we tried to run the script. Once with a Dietpi and once directly on the Synology, both without success.

    We use an Azzurro hybrid inverter with the LSW-3 module.

    Is there a possibility that we may ask for your help?

    opened by r-schoepf 3
  • No access to PV logger every morning

    No access to PV logger every morning

    Cześć Michale,

    I've setup your script and get all the data from logger - that looks fine :)

    Unfortunatelly almost every morning the script is kind of stuck. It does not collect any data untill I login to logger website and reset it:

    image

    Device information Device serial number1774324xxx Firmware versionLSW3_15_FFFF_1.0.57

    The script is started by Synology NAS every minute. I does check if PV logger is pingable:

    #!/bin/bash

    Settings

    PV_IP="hidden" # PV IP Address

    Check if PV Logger is contactable

    PINGTIME=ping -c 1 -q $PV_IP | awk -F"/" '{print $5}' | xargs

    echo $PINGTIME if expr "$PINGTIME" '>' 0 then echo "rozpoczynam odczyt danych ..." python3 /volume1/docker/domoticz/scripts/sofar/InverterData.py else echo "brak komunikacji !!!" fi

    Any advice ?

    Maybe some kind of timeout flag within python script would do the trick ?

    Pozdrawiam Mikołaj

    help wanted 
    opened by ilexpl01 16
Releases(1.84)
Owner
null
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.

starlette context Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automat

Tomasz Wójcik 110 Feb 16, 2021
CLI and Streamlit applications to create APIs from Excel data files within seconds, using FastAPI

FastAPI-Wrapper CLI & APIness Streamlit App Arvindra Sehmi, Oxford Economics Ltd. | Website | LinkedIn (Updated: 21 April, 2021) fastapi-wrapper is mo

Arvindra 49 Dec 3, 2022
Sample project showing reliable data ingestion application using FastAPI and dramatiq

Create and deploy a reliable data ingestion service with FastAPI, SQLModel and Dramatiq This is the source code for the data ingestion service explain

François Voron 31 Nov 30, 2022
Home solar infrastructure (with Peimar Inverter) monitoring based on Raspberry Pi 3 B+ using Grafana, InfluxDB, Custom Python Collector and Shelly EM.

raspberry-solar-mon Home solar infrastructure (with Peimar Inverter) monitoring based on Raspberry Pi 3 B+ using Grafana, InfluxDB, Custom Python Coll

cislow 10 Dec 23, 2022
Access Modbus RTU via API call to Sungrow WiNet-S

SungrowModbusWebClient Access Modbus RTU via API call to Sungrow WiNet-S Class based on pymodbus.ModbusTcpClient, completely interchangeable, just rep

null 8 Oct 30, 2022
ModbusTCP2MQTT - Sungrow & SMA Solar Inverter addon for Home Assistant

ModbusTCP2MQTT Sungrow & SMA Solar Inverter addon for Home Assistant This addon will connect directly to your Inverter using Modbus TCP. Support model

Teny Smart 40 Dec 21, 2022
Get-Phone-Number-Details-using-Python - To get the details of any number, we can use an amazing Python module known as phonenumbers.

Get-Phone-Number-Details-using-Python To get the details of any number, we can use an amazing Python module known as phonenumbers. We can use the amaz

Coding Taggers 1 Jan 1, 2022
Module for remote in-memory Python package/module loading through HTTP/S

httpimport Python's missing feature! The feature has been suggested in Python Mailing List Remote, in-memory Python package/module importing through H

John Torakis 220 Dec 17, 2022
Rover is a command line interface application that allows through browse through mission data, images, metadata from the NASA Official Website

?? rover Rover is a command line interface application that allows through browse through mission data, images, metadata from the NASA Official Websit

Saketha Ramanjam 4 Jan 19, 2022
ckan 3.6k Dec 27, 2022
A module to get data about anime characters, news, info, lyrics and more.

Animec A module to get data about anime characters, news, info, lyrics and more. The module scrapes myanimelist to parse requested data. If you wish t

DriftAsimov 31 Aug 31, 2022
BSDotPy, A module to get a bombsquad player's account data.

BSDotPy BSDotPy, A module to get a bombsquad player's account data from bombsquad's servers. Badges Provided By: shields.io Acknowledgements Issues Pu

Rudransh Joshi 3 Feb 17, 2022
Playing videos through S3 buckets (Wasabi, AWS, etc.) through client-side VideoJS player

Playing videos through S3 buckets (Wasabi, AWS, etc.) through client-side VideoJS player without incurring ingress/egree traffic on EC2 Instance.

Syed Umar Arfeen 8 Mar 28, 2022
Using Python to parse through email logs received through several backup systems.

outlook-automated-backup-control Backup monitoring on a mailbox: In this mailbox there will be backup logs. The identification will based on the follo

Connor 2 Sep 28, 2022
Discord bot built using Python. through this you can get information about the upcoming matches, scoreboard, live score

IPL-bot This is a Discord bot built using Python. through this you can get information about the upcoming matches, scoreboard, live score, and many mo

null 0 Dec 23, 2021
Python-Stock-Info-CLI: Get stock info through CLI by passing stock ticker.

Python-Stock-Info-CLI Get stock info through CLI by passing stock ticker. Installation Use the following command to install the required modules at on

Ayush Soni 1 Nov 5, 2021
People log into different sites every day to get information and browse through these sites one by one

HyperLink People log into different sites every day to get information and browse through these sites one by one. And they are exposed to advertisemen

null 0 Feb 17, 2022
Get Notified about vaccine availability in your location on email & sms ✉️! Vaccinator Octocat tracks & sends personalised vaccine info everday. Go get your shot ! 💉

Vaccinater Get Notified about vaccine availability in your location on email & sms ✉️ ! Vaccinator Octocat tracks & sends personalised vaccine info ev

Mayukh Pankaj 6 Apr 28, 2022