The SmartPi has a wide range of interfaces for communicating with other devices.
These are:

  • MQTT
  • FTP
  • Modbus TCP (RTU via external module)
  • Energymeter protocol
  • SmartPi Cloud
MQTT

In the MQTT settings, you can configure data transmission via MQTT.
MQTT continuously sends the measured values to an MQTT broker – useful for Home Assistant, Node-RED or your own analyses.

  • MQTT (switch): enables/disables data transmission.
  • Broker scheme: drop-down list ssl://, tcp:// or ws:// – depending on how the broker can be reached. Example: tcp:// for an unencrypted Mosquitto broker on the local network, ssl:// for an encrypted broker and ws:// for WebSocket.
  • Url: address of the broker, e.g. 192.168.1.10 or mqtt.example.com.
  • Port: e.g. 1883 (standard for unencrypted MQTT) or 8883 (TLS).
  • User name / Password: access credentials for the broker, if it requires authentication. For the password, the eye symbol shows/hides the plain text.
  • Topic: the MQTT topic under which the values are published, e.g. smartpi/house.
  • Send interval (s): how often data is sent, in seconds. 0 means "with every measured value" (i.e. as fast as the device measures); a value such as 60 sends only once per minute.

All fields are saved immediately whenever you change them – there is no separate Save button.

FTP

In the FTP settings, you can configure data transmission via FTP.
Once activated, the measurement data is uploaded regularly as a file to an FTP server.

  • FTP (switch): enables/disables the upload completely.
  • Url: address of the FTP server, e.g. ftp.example.com.
  • User name / Password: access credentials for the FTP server.
  • Path: target directory on the server, e.g. /incoming/smartpi.
  • CSV file / XML file: define the format in which data is uploaded – each can be switched on or off independently (both at the same time is also possible).
  • CSV decimal separator: the character the CSV file uses as the decimal separator, e.g. , (German) or . (English) – important so that the target spreadsheet reads the numbers correctly.
  • CSV time format: the date format of the time column, in Go notation, e.g. 2006-01-02 15:04:05 for 2026-09-17 14:30:00.

Upload time

The full hours at which data should be uploaded. Hourly or up to 12 fixed times per day are sensible.

  • Hourly: selects all 24 hours at once.
  • None: clears all selections (no more automatic uploads unless you activate individual hours again).
  • Below are 24 individual checkboxes arranged in two rows of 12 hours each (00:00–11:00 at the top, 12:00–23:00 below, aligned in columns – e.g. 03:00 is directly above 15:00). Each ticked hour triggers an upload on the hour. Example: only 06:00 and 18:00 ticked → upload twice a day, morning and evening.

All fields are saved immediately whenever you change them.

Modbus

The SmartPi has an integrated Modbus server via which the current measurement data can be retrieved.
Both Modbus TCP and Modbus RTU are available as protocols. If you want to use Modbus RTU, an RS485 interface is required. This can be, for example, the e.rs485+digital module or a USB stick or similar.

Modbus TCP

  • Switch for activation.
  • Address: the network address/port at which the Modbus TCP server can be reached, e.g. :502 (standard Modbus port).

Modbus RTU

Only possible with the SmartPi 3.1 or with an external RS485 interface (e.g. e.RS485+digital).

  • Switch for activation.
  • Address: the Modbus slave address of the device on the RS485 bus, e.g. 1.
  • Interface: the device path of the serial interface, e.g. /dev/ttyUSB0 or /dev/serial0.

All fields are saved immediately whenever you change them.

Modbus register map
The following table shows the Modbus registers that can be read.

The register map is identical for TCP and RTU. Only holding registers (function code 3, “Read Holding Registers”) return data – coils, discrete inputs and input registers always respond with 0.

  • Start address: 0 (protocol address) – i.e. 40001 in the classic 4xxxx notation.
  • Data type: each value occupies 2 consecutive registers (32 bits) as an IEEE 754 floating-point number (float32), big-endian, without a scaling factor – the raw value is stored directly in the register (e.g. 230.0 for 230 V, not 2300).
  • Write accesses (FC 5/6/15/16) are accepted, but are immediately overwritten with the current measured value in the next measurement cycle (every second) – the registers are effectively read-only.

Address (0-based)

4xxxx

Value

Type

0–1

40001–40002

Current L1 (A)

float32

2–3

40003–40004

Current L2 (A)

float32

4–5

40005–40006

Current L3 (A)

float32

6–7

40007–40008

Current neutral conductor (A)

float32

8–9

40009–40010

Voltage L1 (V)

float32

10–11

40011–40012

Voltage L2 (V)

float32

12–13

40013–40014

Voltage L3 (V)

float32

14–15

40015–40016

Active power L1 (W)

float32

16–17

40017–40018

Active power L2 (W)

float32

18–19

40019–40020

Active power L3 (W)

float32

20–21

40021–40022

cos(φ) L1

float32

22–23

40023–40024

cos(φ) L2

float32

24–25

40025–40026

cos(φ) L3

float32

26–27

40027–40028

Frequency L1 (Hz)

float32

28–29

40029–40030

Frequency L2 (Hz)

float32

30–31

40031–40032

Frequency L3 (Hz)

float32

32–33

40033–40034

Energy consumption L1 since last measurement (Wh)

float32

34–35

40035–40036

Energy consumption L2 since last measurement (Wh)

float32

36–37

40037–40038

Energy consumption L3 since last measurement (Wh)

float32

38–39

40039–40040

Energy feed-in L1 since last measurement (Wh)

float32

40–41

40041–40042

Energy feed-in L2 since last measurement (Wh)

float32

42–43

40043–40044

Energy feed-in L3 since last measurement (Wh)

float32

44–45

40045–40046

Balance L1–L3 (Wh)

float32

46–47

40047–40048

Power factor L1

float32

48–49

40049–40050

Power factor L2

float32

50–51

40051–40052

Power factor L3

float32

The Wh registers (40033–40046) are not a continuous meter reading, but only the amount of energy in the last measurement period (approx. 1 second) – they are recalculated in every measurement cycle, not accumulated. These registers are not suitable for a true kWh meter reading; use the database connection (InfluxDB) or the CSV/XML export via FTP for this.
Energymeter protocol

In the web interface, this tab is called “Energymeter protocol”. It allows the SmartPi to appear on the network as a virtual SMA Energy Meter, which an inverter or a battery controller, for example, can recognise as a meter.

  • Switch for activation.
  • Energymeter multicast address: the multicast group address via which the protocol is sent, e.g. 239.12.255.254 (SMA standard address – if in doubt, do not change).
  • Energymeter multicast port: the corresponding port, e.g. 9522 (SMA standard port).
  • Serial number: the serial number with which the SmartPi identifies itself as an Energy Meter. It must be unique on the network, e.g. 1234567890.
  • SusyID: the device type identifier of the emulated SMA device, e.g. 270 (SMA Energy Meter).

These values are only relevant if another device (inverter, storage system) expects exactly this protocol – if in doubt, leave the default values.
All fields are saved immediately whenever you change them.