Giter Club home page Giter Club logo

iotic's Introduction

iotic

Iotic is a multi-purpose IoT device manager which focuses on electric and thermal energy management. Its main feature is pv surplus charging of your electric vehicle.

Features

Device support

Solar inverters

Currently, the following SunSpec models are supported: 101, 103, 160, 203. So, ANY solar inverter and smart meter that supports SunSpec / Modbus should also be supported here. As of now, the following devices are successfully tested:

  • SMA STP8.0-3AV-40 / STP10.0-3AV-40
  • SMA STP 15000TL-30 / 20000TL-30 /25000TL-30
  • SMA SB 3000TL-21 / 3600TL-21 / 4000TL-21 / 5000TL-21

Smart meters

  • elgris SMART METER WiFi

EV stations

  • go-e Charger

Smart plugs/relays

  • Shelly 1 / 1PM

Auto detection

All supporterd things are automatically discovered using different technologies:

Modbus SunSpec devices

Iotic will scan your subnet with a mask of /24. E.g. if an instance is running on a host with IPv4 address 192.168.12.34, all IP addresses from 192.168.12.1 - 192.168.12.254 will be port scanned on port 502. If a valid SunSpec header is returned, the host will be considered as a valid SunSpec device. This incoporates a small limitation, that currently there is only one Modbus device per host address supported, even though Modbus TCP would support multiple SunSpec devices per IP address.

HTTP devices

Devices with an HTTP API are discovered using mDNS service discovery (like go-eCharger and Shelly).

PV surplus electric vehicle charging

iotic implements several strategies to realize PC surplus charging of electric vehicles. It will auto-adapt the charging power to PV excess.

Requirements

  • C++17
  • Qt5 or Qt6: Core Network SerialBus
  • Flutter

Installation (Debian/Ubuntu)

Raspberry Pi OS

You need at least Bookworm (not working with Bullseye). Installation

wget https://github.com/mincequi/iotic/releases/download/v0.3.1/iotic_0.3.1_armhf.deb
sudo apt install ./iotic_0.3.1_armhf.deb

Starting

sudo systemctl start iotic.service               # start-up service.
sudo systemctl enable iotic.service              # start-up service on each reboot.

Compiling (Debian/Ubuntu)

Prerequisites

sudo apt install \
  build-essential \
  cmake \
  git \
  snapd \
  libboost-dev \
  qt6-base-dev

sudo snap install flutter --classic
flutter   # init flutter first
git clone https://github.com/mincequi/iotic
cd iotic/src/webapp
flutter build web --web-renderer html
cd ../..
mkdir build
cd build
cmake ..
make

MQTT API

After being connected, the discovered things will be polled and published via MQTT every 5 seconds.

The MQTT topic follows this scheme: /iotic_<mac address>/<unique sunspec id>/<model id>/. Under this topic there are two sub-topics: live and stats. The statistics show the min/max values of the current day, as well as some other collected information. Thus, the stats topic will not be updated as often as the live topic, which gets an update every 3 seconds.

The payload is formatted as JSON.

Planned features

  • command line interface
  • read battery inverters
  • InfluxDB

iotic's People

Contributors

mincequi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

rcuquemelle majh

iotic's Issues

Goodwe Inverter GW3648D-ES

Hi Manuel,
are you planing to ad the config file and influx DB 2.x capability in your tool?
I would be very intersted.
Thx

Alex

not really an issue but a question how to start

Hi Manuel,
I pulled the code to my machine.
How have I to start working with it at all?
I read over at your sbfspot fork, that you are compiling with Qt.
Is this true for ElsewhereEdge, too?
Thanks!
Harald

Fehler: Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)

Hi @mincequi,

I recently get the following error when trying to build ElsewhereEdge:


/home/harry/Qt/Tools/CMake/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230: Fehler: Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) /home/harry/Qt/Tools/CMake/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /home/harry/Qt/Tools/CMake/share/cmake-3.21/Modules/FindCURL.cmake:181 (find_package_handle_standard_args) /home/harry/build-ElsewhereEdge-Desktop_Qt_5_15_2_GCC_64bit-Debug/_deps/influxdb-src/CMakeLists.txt:88 
(find_package)

Please, how can I get CURL libs and headers onto my computer, so the build process finds them?
As far as I found, CURL is already installed on my computer, but the libs and headers are missing.

Is it possible to add those to the automatically downloaded code parts (-> "_deps")?
Thanks!

Fix deadlock

There is an occasional deadlock (probably in connection with libuv and QtSerialbus)

The 4000er converter from SMA is not a SB type

Hi @mincequi ,

in the readme, do you reference my Sunny Island battery converter as [SB]4000TL-21?
If so, please be informed, that it is of type "Sunny Island SI 4.4M-11" (other naming scheme).

Beyond that, it seems to not deliver any power data, at least no min and max values.
Perhaps the Sunny Island data are named different from the Sunny Boy devices?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.