A library for communication with solar power inverters of the RCT power brand, not endorsed by or affiliated with the eponymous company.

rct

A library for communication with solar power inverters of the RCT power brand. Tested with the RCT PS 6.0 solar power inverter, battery and grid power sensor.

RCT power is a registered trademark of RCT Power GmbH. This library is not provided by, endorsed by, supported by or affiliated with the company in any way.

It is provided without any warranties, entirely for use at your own risk under a LGPL 2.1 license.

Usage

Install via go get github.com/mlnoga/rct.

Use like this:

package main

import (
  "rct"
  "time"
  "fmt"
)

func main() {
  conn, err:=rct.NewConnection("my-RCT-hostname-or-IP-address", time.Second*2)
  if err!=nil {
    fmt.Println(err)
    return
  }
  defer conn.Close()
  
  a, err:=rct.QueryFloat32(rct.SolarGenAPowerW)
  if err!=nil {
    fmt.Println(err)
    return
  }

  fmt.Printf("%s is %.0fV\n", string(rct.SolarGenAPowerW), a)
}

Architecture

  • datagram.go defines basic constants like commands, on-device identifiers and datagram packets; as well as conversions of datagram payloads to golang types
  • build.go defines a datagram builder for assembling datagrams to send
  • parse.go defines a datagram parser which parses incoming bytes into datagrams
  • connection.go ties builders and parsers into a bidirectional connection with the device, and defines convenience methods to synchronously query identifiers
Owner
Similar Resources

kcp is a prototype of a Kubernetes API server that is not a Kubernetes cluster - a place to create, update, and maintain Kube-like APis with controllers above or without clusters.

kcp is a prototype of a Kubernetes API server that is not a Kubernetes cluster - a place to create, update, and maintain Kube-like APis with controllers above or without clusters.

kcp is a minimal Kubernetes API server How minimal exactly? kcp doesn't know about Pods or Nodes, let alone Deployments, Services, LoadBalancers, etc.

Jan 6, 2023

WebDAV server for SSH. Similar to sshfs but does not require proprietary MacFUSE on macOS

sshwebdav: WebDAV server for SSH sshwebdav provides a WebDAV server for a remote SSH host. sshwebdav is similar to sshfs but does not require propriet

Nov 9, 2022

Get subdomain list and check whether they are active or not by each response code. Using API by c99.nl

Get subdomain list and check whether they are active or not by each response code. Using API by c99.nl

getsubdomain Get subdomain list and check whether they are active or not by each response code. Using API by c99.nl Installation ▶ go install github.c

Oct 24, 2022

WebsiteChecker - A GoLang program that verifies if a website is available or not

Website Checker 💻 This is my first program in Go! The purpose of this applicati

Apr 30, 2022

Commonwords - Simple cli to find words in text that are not in the 1000 most common English words

Thousand common words Find words in a text that are not in the 1000 most common

Feb 1, 2022

A library for the MIGP (Might I Get Pwned) protocolA library for the MIGP (Might I Get Pwned) protocol

MIGP library This contains a library for the MIGP (Might I Get Pwned) protocol. MIGP can be used to build privacy-preserving compromised credential ch

Dec 3, 2022

A library to simplify writing applications using TCP sockets to stream protobuff messages

BuffStreams Streaming Protocol Buffers messages over TCP in Golang What is BuffStreams? BuffStreams is a set of abstraction over TCPConns for streamin

Dec 13, 2022

DNS library in Go

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

Jan 8, 2023
Comments
  • Split timeout and cache

    Split timeout and cache

    Evcc connects with timeout: 1s per default. That value is applied to both the connection timeout as well as the cache duration. 1s is a very aggressive connection timeout. Simple approach would be to split these params or- alternatively- allow passing a Context as first param to use with DialContext.

  • Linter errors, mostly in tests

    Linter errors, mostly in tests

    Here we go:

    > golangci-lint run *.go
    
    build_test.go:11:18: undeclared name: `BatteryPower` (typecheck)
    	{Datagram{Read, BatteryPower, nil}, "[2B 01 04 40 0F 01 5B 58 B4]"},
    	                ^
    build_test.go:12:18: undeclared name: `InverterACPower` (typecheck)
    	{Datagram{Read, InverterACPower, nil}, "[2B 01 04 DB 2D 2D 69 AE 55 AB]"},
    	                ^
    build_test.go:31:9: parser.Init undefined (type DatagramParser has no field or method Init) (typecheck)
    	parser.Init()
    	       ^
    build_test.go:36:10: parser.Buffer undefined (type DatagramParser has no field or method Buffer, but does have buffer) (typecheck)
    		parser.Buffer = builder.Bytes()
    		       ^
    build_test.go:37:10: parser.Len undefined (type DatagramParser has no field or method Len) (typecheck)
    		parser.Len = len(builder.Bytes())
    
Transport to allow go-libp2p applications to natively use i2p for communication

I2P Transport for go-libp2p This library can be used to build go-libp2p applications using the i2p network. Look at transport_test.go for example usag

Sep 15, 2022
Simple & Primitive multi client communication system

What is this Simple & Primitive multi client communication system. e.g. chat system for larning Supported Broadcast message Unicast message Not Suppor

Dec 3, 2021
Episode VII: The DB Awakens (fully stablished JSON communication system)

APITrials0.7 Episode VII: The DB Awakens (fully stablished JSON communication system) Captain's log: Im too deep into the rabbit hole now. This seems

Jan 10, 2022
ACN - Agent Communication Network

The libp2p_node is an integral part of the ACN. ACN - Agent Communication Network The agent communication network (ACN) provides a system for agents t

Sep 28, 2022
Furui - A process-based communication control system for containers

furui Communication control of the container runtime environment(now only docker

Mar 26, 2022
Provides communication with USB Human Interface Devices.

This package is discontinued This package does not work with Go1.6+. I won't be updating this package since a better alternative is already available,

Dec 1, 2022
A yet to be voice call application in terminal. with the power of go and webRTC (pion).

Kenny I'm just trying to make a cli operated voice call chat application using go with help of webRTC and PortAudio. It might stay a Work In Progress

Dec 2, 2022
A fast subdomain enumerator for web URLs using the power of Goroutines.
A fast subdomain enumerator for web URLs using the power of Goroutines.

gosublister A fast subdomain enumerator for web URLs written in go with goroutines. Options Usage: gosublister -u [URL] [Other Flags] Flags: -u,

May 7, 2023
🙌It 👐just 👌not ☝works
🙌It 👐just 👌not ☝works

fuck-signal-tls-proxy Why Deliver something [3] not work at all is more rude than dirty word. In short, everything is designed to blend into the backg

May 29, 2021
Brook is a cross-platform strong encryption and not detectable proxy. Zero-Configuration. Brook 是一个跨平台的强加密无特征的代理软件. 零配置.

Brook 中文 v20210401 [GUI] Block list(Ad Block) Bypass & Block rule [GUI] Forward DNS [GUI] OpenWrt GUI client [GUI] Fake DNS [CLI] $ brook tproxy Scrip

Jan 4, 2023