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:

    [email protected]:~/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:

    [email protected]~/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
    
    [email protected]:~/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)
Sample FastAPI project that uses async SQLAlchemy, SQLModel, Postgres, Alembic, and Docker.

FastAPI + SQLModel + Alembic Sample FastAPI project that uses async SQLAlchemy, SQLModel, Postgres, Alembic, and Docker. Want to learn how to build th

228 Jan 02, 2023
Beyonic API Python official client library simplified examples using Flask, Django and Fast API.

Beyonic API Python Examples. The beyonic APIs Doc Reference: https://apidocs.beyonic.com/ To start using the Beyonic API Python API, you need to start

Harun Mbaabu Mwenda 46 Sep 01, 2022
SQLAlchemy Admin for Starlette/FastAPI

SQLAlchemy Admin for Starlette/FastAPI SQLAdmin is a flexible Admin interface for SQLAlchemy models. Main features include: SQLAlchemy sync/async engi

Amin Alaee 683 Jan 03, 2023
Full stack, modern web application generator. Using FastAPI, PostgreSQL as database, Docker, automatic HTTPS and more.

Full Stack FastAPI and PostgreSQL - Base Project Generator Generate a backend and frontend stack using Python, including interactive API documentation

Sebastián Ramírez 10.8k Jan 08, 2023
A FastAPI WebSocket application that makes use of ncellapp package by @hemantapkh

ncellFastAPI author: @awebisam Used FastAPI to create WS application. Ncellapp module by @hemantapkh NOTE: Not following best practices and, needs ref

Aashish Bhandari 7 Oct 01, 2021
FastAPI client generator

FastAPI-based API Client Generator Generate a mypy- and IDE-friendly API client from an OpenAPI spec. Sync and async interfaces are both available Com

David Montague 283 Jan 04, 2023
Code for my FastAPI tutorial

FastAPI tutorial Code for my video tutorial FastAPI tutorial What is FastAPI? FastAPI is a high-performant REST API framework for Python. It's built o

José Haro Peralta 9 Nov 15, 2022
FastAPI pagination

FastAPI Pagination Installation # Basic version pip install fastapi-pagination # All available integrations pip install fastapi-pagination[all] Avail

Yurii Karabas 561 Jan 07, 2023
Complete Fundamental to Expert Codes of FastAPI for creating API's

FastAPI FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3 based on standard Python type hints. The key featu

Pranav Anand 1 Nov 28, 2021
✨️🐍 SPARQL endpoint built with RDFLib to serve machine learning models, or any other logic implemented in Python

✨ SPARQL endpoint for RDFLib rdflib-endpoint is a SPARQL endpoint based on a RDFLib Graph to easily serve machine learning models, or any other logic

Vincent Emonet 27 Dec 19, 2022
Socket.IO integration for Flask applications.

Flask-SocketIO Socket.IO integration for Flask applications. Installation You can install this package as usual with pip: pip install flask-socketio

Miguel Grinberg 4.9k Jan 03, 2023
Starlette middleware for Prerender

Prerender Python Starlette Starlette middleware for Prerender Documentation: https://BeeMyDesk.github.io/prerender-python-starlette/ Source Code: http

BeeMyDesk 14 May 02, 2021
FastAPI IPyKernel Sandbox

FastAPI IPyKernel Sandbox This repository is a light-weight FastAPI project that is meant to provide a wrapper around IPyKernel interactions. It is in

Nick Wold 2 Oct 25, 2021
Toolkit for developing and maintaining ML models

modelkit Python framework for production ML systems. modelkit is a minimalist yet powerful MLOps library for Python, built for people who want to depl

140 Dec 27, 2022
Single Page App with Flask and Vue.js

Developing a Single Page App with FastAPI and Vue.js Want to learn how to build this? Check out the post. Want to use this project? Build the images a

91 Jan 05, 2023
SuperSaaSFastAPI - Python SaaS Boilerplate for building Software-as-Service (SAAS) apps with FastAPI, Vue.js & Tailwind

Python SaaS Boilerplate for building Software-as-Service (SAAS) apps with FastAP

Rudy Bekker 31 Jan 10, 2023
🚢 Docker images and utilities to power your Python APIs and help you ship faster. With support for Uvicorn, Gunicorn, Starlette, and FastAPI.

🚢 inboard 🐳 Docker images and utilities to power your Python APIs and help you ship faster. Description This repository provides Docker images and a

Brendon Smith 112 Dec 30, 2022
A web application using [FastAPI + streamlit + Docker] Neural Style Transfer (NST) refers to a class of software algorithms that manipulate digital images

Neural Style Transfer Web App - [FastAPI + streamlit + Docker] NST - application based on the Perceptual Losses for Real-Time Style Transfer and Super

Roman Spiridonov 3 Dec 05, 2022
A set of demo of deploying a Machine Learning Model in production using various methods

Machine Learning Model in Production This git is for those who have concern about serving your machine learning model to production. Overview The tuto

Vo Van Tu 53 Sep 14, 2022
Cookiecutter API for creating Custom Skills for Azure Search using Python and Docker

cookiecutter-spacy-fastapi Python cookiecutter API for quick deployments of spaCy models with FastAPI Azure Search The API interface is compatible wit

Microsoft 379 Jan 03, 2023