Omnik-solar

Omnik-solar provides a custom node that can listen to incoming messages from an Omnik converter. The flow opens TCP port 8899. Your Omnik converter needs to be configured to send statistics to this address.

Inverter configuration

  • Log on to Omnik inverter
  • Open menu Advanced | Remote Server
  • On the Server B row:
  • Set IP address to the (local) IP address of your server.
  • Set Domain name to the domain name of your server (or leave blank).
  • Set Port to 8899.
  • Set Connection to TCP.
  • Click Save
  • Open port 8899 in your firewall

Output

Data from the Omnik inverter is parsed and available as below properties of the msg-object.

Note, the inverter only connects and outputs data when enough sunlight is received for the internals to be awake. No data is returned at night.

Production

  • msg.omnik.currentProduction - Current production in W
  • msg.omnik.productionToday - Today's production in kWh
  • msg.omnik.productionTotal - Total production in kWh

Operational

  • msg.omnik.temperature - Current temperature in C
  • msg.omnik.hoursActive - Total hours running

Power

  • msg.omnik.pvVoltageDc1
  • msg.omnik.pvVoltageDc2
  • msg.omnik.pvVoltageDc3
  • msg.omnik.ivAmpsDc1
  • msg.omnik.ivAmpsDc2
  • msg.omnik.ivAmpsDc3
  • msg.omnik.pvVoltageAc1
  • msg.omnik.pvVoltageAc2
  • msg.omnik.pvVoltageAc3
  • msg.omnik.ivAmpsAc1
  • msg.omnik.ivAmpsAc2
  • msg.omnik.ivAmpsAc3
  • msg.omnik.frequencyAc

Inverter

  • msg.omnik.wifiSerialNumber
  • msg.omnik.inverterMainFirmwareVersion
  • msg.omnik.inverterSlaveFirmwareVersion
  • msg.omnik.inverterStatus

Debug

  • msg.omnik.rawBuffer
  • msg.omnik.rawString
[{"id":"2a4285cd.7cbdea","type":"subflow","name":"live","info":"Opens local port 8899 for Omnik inverter to connect to and send statistics.\n\n# Inverter configuration\n* Log on to Omnik inverter\n* Open menu **Advanced | Remote Server**\n* On the **Server B** row:\n * Set **IP address** to the IP address of your server.\n * Set **Domain name** to the domain name of your server (or leave blank).\n * Set **Port** to **8899**.\n * Set **Connection** to **TCP**.\n * Click **Save**\n\n# Output\nData from the Omnik inverter is parsed and available as below properties of the msg-object.\n\nNote, the inverter only connects and outputs data when enough sunlight is received for the internals to be awake. No data is returned at night.\n\n## Production\n* `msg.omnik.currentProduction` - Current production in W\n* `msg.omnik.productionToday` - Today's production in kWh\n* `msg.omnik.productionTotal` - Total production in kWh\n\n## Operational\n* `msg.omnik.temperature` - Current temperature in C\n* `msg.omnik.hoursActive` - Total hours running\n\n## Power\n* `msg.omnik.pvVoltageDc1`\n* `msg.omnik.pvVoltageDc2`\n* `msg.omnik.pvVoltageDc3`\n* `msg.omnik.ivAmpsDc1`\n* `msg.omnik.ivAmpsDc2`\n* `msg.omnik.ivAmpsDc3`\n* `msg.omnik.pvVoltageAc1`\n* `msg.omnik.pvVoltageAc2`\n* `msg.omnik.pvVoltageAc3`\n* `msg.omnik.ivAmpsAc1`\n* `msg.omnik.ivAmpsAc2`\n* `msg.omnik.ivAmpsAc3`\n* `msg.omnik.frequencyAc`\n\n## Inverter\n* `msg.omnik.wifiSerialNumber`\n* `msg.omnik.inverterMainFirmwareVersion`\n* `msg.omnik.inverterSlaveFirmwareVersion`\n* `msg.omnik.inverterStatus`\n\n## Debug\n* `msg.omnik.rawBuffer`\n* `msg.omnik.rawString`","category":"omnik","in":[],"out":[{"x":400,"y":60,"wires":[{"id":"d625a814.e8f098","port":0}]}]},{"id":"ff1b0584.ad0a48","type":"tcp in","z":"2a4285cd.7cbdea","name":"","server":"server","host":"","port":"8899","datamode":"single","datatype":"buffer","newline":"\\x16","topic":"","base64":false,"x":80,"y":60,"wires":[["d625a814.e8f098"]]},{"id":"d625a814.e8f098","type":"function","z":"2a4285cd.7cbdea","name":"Parse Omnik data","func":"var omnik = msg.payload;\n\nmsg.omnik = {};\n\n// Production\nmsg.omnik.currentProduction = omnik.readInt16BE(59); // W\nmsg.omnik.productionToday = omnik.readInt16BE(69) / 100; // kWh\nmsg.omnik.productionTotal = omnik.readInt32BE(71) / 10; // kWh\n// Current operation\nmsg.omnik.temperature = omnik.readInt16BE(31) / 10; // C\nmsg.omnik.hoursActive = omnik.readInt32BE(75);\n// Power\nmsg.omnik.pvVoltageDc1 = omnik.readInt16BE(33) / 10;\nmsg.omnik.pvVoltageDc2 = omnik.readInt16BE(35) / 10;\nmsg.omnik.pvVoltageDc3 = omnik.readInt16BE(37) / 10;\nmsg.omnik.ivAmpsDc1 = omnik.readInt16BE(39) / 10;\nmsg.omnik.ivAmpsDc2 = omnik.readInt16BE(41) / 10;\nmsg.omnik.ivAmpsDc3 = omnik.readInt16BE(43) / 10;\nmsg.omnik.pvVoltageAc1 = omnik.readInt16BE(51) / 10;\nmsg.omnik.pvVoltageAc2 = omnik.readInt16BE(53) / 10;\nmsg.omnik.pvVoltageAc3 = omnik.readInt16BE(55) / 10;\nmsg.omnik.ivAmpsAc1 = omnik.readInt16BE(45) / 10;\nmsg.omnik.ivAmpsAc2 = omnik.readInt16BE(47) / 10;\nmsg.omnik.ivAmpsAc3 = omnik.readInt16BE(49) / 10;\nmsg.omnik.frequencyAc = omnik.readInt16BE(57) / 100;\n// Inverter\nmsg.omnik.wifiSerialNumber = omnik.readInt32LE(4);\nmsg.omnik.inverterSerialNumber = omnik.toString(\"utf8\", 15, 31);\nmsg.omnik.inverterMainFirmwareVersion = omnik.toString(\"utf8\", 101, 116);\nmsg.omnik.inverterSlaveFirmwareVersion = omnik.toString(\"utf8\", 117, 136);\nmsg.omnik.inverterStatus = omnik.toString(\"utf8\", 155, 170);\n// Debug\nmsg.omnik.rawBuffer = omnik;\nmsg.omnik.rawString = omnik.toString();\n\nreturn msg;","outputs":1,"noerr":0,"x":260,"y":60,"wires":[[]]},{"id":"4eb05ef.32d9ea","type":"subflow:2a4285cd.7cbdea","z":"14cd401d.1b1e3","name":"","x":110,"y":1140,"wires":[["d48d9e1c.99c0d"]]},{"id":"d48d9e1c.99c0d","type":"debug","z":"14cd401d.1b1e3","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"omnik","x":250,"y":1140,"wires":[]}]

Flow Info

Created 5 years, 9 months ago
Rating: 5 1

Actions

Rate:

Node Types

Core
  • debug (x1)
  • function (x1)
  • tcp in (x1)
Other
  • subflow (x1)
  • subflow:2a4285cd.7cbdea (x1)

Tags

  • omnik
  • solarpanels
  • solar
  • home-automation
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option