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)
Qwerkey is a social media platform for connecting and learning more about mechanical keyboards built on React and Redux in the frontend and Flask in the backend on top of a PostgreSQL database.

Flask React Project This is the backend for the Flask React project. Getting started Clone this repository (only this branch) git clone https://github

Peter Mai 22 Dec 20, 2022
FastAPI Skeleton App to serve machine learning models production-ready.

FastAPI Model Server Skeleton Serving machine learning models production-ready, fast, easy and secure powered by the great FastAPI by Sebastián Ramíre

268 Jan 01, 2023
API using python and Fastapi framework

Welcome 👋 CFCApi is a API DEVELOPMENT PROJECT UNDER CODE FOR COMMUNITY ! Project Walkthrough 🚀 CFCApi run on Python using FASTapi Framework Docs The

Abhishek kushwaha 7 Jan 02, 2023
API Simples com python utilizando a biblioteca FastApi

api-fastapi-python API Simples com python utilizando a biblioteca FastApi Para rodar esse script são necessárias duas bibliotecas: Fastapi: Comando de

Leonardo Grava 0 Apr 29, 2022
A Python framework to build Slack apps in a flash with the latest platform features.

Bolt for Python A Python framework to build Slack apps in a flash with the latest platform features. Read the getting started guide and look at our co

SlackAPI 684 Jan 09, 2023
A minimum reproducible repository for embedding panel in FastAPI

FastAPI-Panel A minimum reproducible repository for embedding panel in FastAPI Follow either This Tutorial or These steps below ↓↓↓ Clone the reposito

Tyler Houssian 15 Sep 22, 2022
Keycloak integration for Python FastAPI

FastAPI Keycloak Integration Documentation Introduction Welcome to fastapi-keycloak. This projects goal is to ease the integration of Keycloak (OpenID

Code Specialist 113 Dec 31, 2022
Code Specialist 27 Oct 16, 2022
Local Telegram Bot With FastAPI & Ngrok

An easy local telegram bot server with python, fastapi and ngrok.

Ömer Faruk Özdemir 7 Dec 25, 2022
Generate modern Python clients from OpenAPI

openapi-python-client Generate modern Python clients from OpenAPI 3.x documents. This generator does not support OpenAPI 2.x FKA Swagger. If you need

Triax Technologies 558 Jan 07, 2023
Learn to deploy a FastAPI application into production DigitalOcean App Platform

Learn to deploy a FastAPI application into production DigitalOcean App Platform. This is a microservice for our Try Django 3.2 project. The goal is to extract any and all text from images using a tec

Coding For Entrepreneurs 59 Nov 29, 2022
fastapi-mqtt is extension for MQTT protocol

fastapi-mqtt MQTT is a lightweight publish/subscribe messaging protocol designed for M2M (machine to machine) telemetry in low bandwidth environments.

Sabuhi 144 Dec 28, 2022
A Sample App to Demonstrate React Native and FastAPI Integration

React Native - Service Integration with FastAPI Backend. A Sample App to Demonstrate React Native and FastAPI Integration UI Based on NativeBase toolk

YongKi Kim 4 Nov 17, 2022
🚀 Cookiecutter Template for FastAPI + React Projects. Using PostgreSQL, SQLAlchemy, and Docker

FastAPI + React · A cookiecutter template for bootstrapping a FastAPI and React project using a modern stack. Features FastAPI (Python 3.8) JWT authen

Gabriel Abud 1.4k Jan 02, 2023
FastAPI Auth Starter Project

This is a template for FastAPI that comes with authentication preconfigured.

Oluwaseyifunmi Oyefeso 6 Nov 13, 2022
Fastapi-ml-template - Fastapi ml template with python

FastAPI ML Template Run Web API Local $ sh run.sh # poetry run uvicorn app.mai

Yuki Okuda 29 Nov 20, 2022
CURSO PROMETHEUS E GRAFANA: Observability in a real world

Curso de monitoração com o Prometheus Esse curso ensina como usar o Prometheus como uma ferramenta integrada de monitoração, entender seus conceitos,

Rafael Cirolini 318 Dec 23, 2022
FastAPI + Postgres + Docker Compose + Heroku Deploy Template

FastAPI + Postgres + Docker Compose + Heroku Deploy ⚠️ For educational purpose only. Not ready for production use YET Features FastAPI with Postgres s

DP 12 Dec 27, 2022
Cookiecutter template for FastAPI projects using: Machine Learning, Poetry, Azure Pipelines and Pytests

cookiecutter-fastapi In order to create a template to FastAPI projects. 🚀 Important To use this project you don't need fork it. Just run cookiecutter

Arthur Henrique 225 Dec 28, 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