|
1 | 1 | # eebus-go |
2 | 2 |
|
3 | | -[](https://github.com/enbility/eebus-go/actions/workflows/default.yml/badge.svg?branch=dev) |
| 3 | +[](https://github.com/enbility/eebus-go/actions/workflows/default.yml/badge.svg?branch=main) |
4 | 4 | [](https://godoc.org/github.com/enbility/eebus-go) |
5 | | -[](https://coveralls.io/github/enbility/eebus-go?branch=dev) |
| 5 | +[](https://coveralls.io/github/enbility/eebus-go?branch=main) |
6 | 6 | [](https://goreportcard.com/report/github.com/enbility/eebus-go) |
| 7 | +[](https://www.codefactor.io/repository/github/enbility/eebus-go) |
7 | 8 |
|
8 | | -This library provides a complete foundation for implementing [EEBUS](https://eebus.org) use cases. The use cases define various functional scenarios for different device categories, e.g. energy management systems, charging stations, heat pumps, and more. |
| 9 | +This library provides a foundation for implementing [EEBUS](https://eebus.org) use cases in [go](https://golang.org). It uses the SHIP implementation [ship-go](https://github.com/enbility/ship-go) and the SPINE implementation [spine-go](https://github.com/enbility/spine-go). Both repositories started as part of this repository, before they were moved into their own separate repositories and go packages. |
| 10 | + |
| 11 | +Basic understanding of the EEBUS concepts SHIP and SPINE to use this library is required. Please check the corresponding specifications on the [EEBUS downloads website](https://www.eebus.org/media-downloads/). |
9 | 12 |
|
10 | 13 | ## Introduction |
11 | 14 |
|
12 | 15 | The supported functionality contains: |
13 | 16 |
|
14 | | -- Support for SHIP 1.0.1 |
15 | | -- Support for big parts of SPINE 1.1.1 |
16 | | -- (De-)serialization for EEBUS specific JSON format requirements |
| 17 | +- Support for SHIP 1.0.1 via [ship-go](https://github.com/enbility/ship-go) |
| 18 | +- Support for SPINE 1.3.0 via [spine-go](https://github.com/enbility/spine-go) |
17 | 19 | - Certificate handling |
18 | | -- mDNS Support, incl. avahi support (recommended) |
| 20 | +- mDNS Support, incl. avahi support |
19 | 21 | - Connection (websocket) handling, including reconnection and double connections |
20 | 22 | - Support for handling pairing of devices |
21 | 23 |
|
22 | | -Basic understanding of the EEBUS concepts SHIP and SPINE to use this library is required. Please check the corresponding specifications on the [EEBUS downloads website](https://www.eebus.org/media-downloads/). |
| 24 | +## Packages |
23 | 25 |
|
24 | | -An open source SDK written in go providing the foundation to use EEBUS in your projects. Contains support for SHIP and SPINE communication. |
| 26 | +- `api`: global API interface definitions and eebus service configuration |
| 27 | +- `features`: provides feature helpers with the local SPINE feature having the client role and the remote SPINE feature being the server for easy access to commonly used functions |
| 28 | +- `service`: central package which provides access to SHIP and SPINE. Use this to create the EEBUS service, its configuration and connect to remote EEBUS services |
| 29 | +- `util`: package with various useful helper functions |
25 | 30 |
|
26 | 31 | ## Usage |
27 | 32 |
|
@@ -85,158 +90,21 @@ If no certfile or keyfile are provided, they are generated and printed in the co |
85 | 90 | - Double connection handling is not implemented according to SHIP 12.2.2. Instead the connection initiated by the higher SKI will be kept. Much simpler and always works |
86 | 91 | - PIN Verification is _NOT_ supported other than SHIP 13.4.4.3.5.1 _"none"_ PIN state is supported! |
87 | 92 | - Access Methods SHIP 13.4.6 only supports the most basic scenario and only works after PIN verification state is completed. |
| 93 | +- Supported registration mechanisms (SHIP 5): |
| 94 | + - auto accept (without any interaction mechanism!) |
| 95 | + - user verification |
88 | 96 |
|
89 | 97 | This approach has been tested with: |
90 | 98 |
|
91 | 99 | - Elli Charger Connect |
92 | 100 | - Porsche Mobile Charger Connect |
93 | 101 | - SMA Home Energy Manager 2.0 |
94 | 102 |
|
95 | | -## Roadmap - Spine specification implementation |
96 | | - |
97 | | -### General request processing |
98 | | - |
99 | | -- [X] Request and process full data |
100 | | -- [ ] Request partial data |
101 | | - - [ ] Delete Selectors |
102 | | - - [ ] Update Selectors |
103 | | - - [ ] Elements |
104 | | -- [ ] Send |
105 | | - - [X] Full data |
106 | | - - [ ] Partial data |
107 | | -- [X] Process partial data |
108 | | - - [X] Delete Selectors |
109 | | - - [X] Update Selectors |
110 | | - - [X] Elements |
111 | | -- [ ] Request types |
112 | | - - [X] Read |
113 | | - - [ ] Send |
114 | | - - [X] Full Request |
115 | | - - [ ] Partial Request |
116 | | - - [ ] Partial Delete |
117 | | - - [X] Receive |
118 | | - - [X] Full Request |
119 | | - - [X] Partial Request |
120 | | - - [X] Partial Delete |
121 | | - - [X] Reply |
122 | | - - [ ] Send |
123 | | - - [X] Full Request |
124 | | - - [ ] Partial Request |
125 | | - - [ ] Partial Delete |
126 | | - - [X] Receive |
127 | | - - [X] Full Request |
128 | | - - [X] Partial Request |
129 | | - - [X] Partial Delete |
130 | | - - [X] Notify |
131 | | - - [ ] Send |
132 | | - - [X] Full Request |
133 | | - - [ ] Partial Request |
134 | | - - [ ] Partial Delete |
135 | | - - [X] Receive |
136 | | - - [X] Full Request |
137 | | - - [X] Partial Request |
138 | | - - [X] Partial Delete |
139 | | - - [X] Write |
140 | | - - [ ] Send |
141 | | - - [X] Full Request |
142 | | - - [ ] Partial Request |
143 | | - - [ ] Partial Delete |
144 | | - - [X] Receive |
145 | | - - [X] Full Request |
146 | | - - [X] Partial Request |
147 | | - - [X] Partial Delete |
148 | | -- [X] Result message handling |
149 | | - - [X] Handle incoming error results |
150 | | - - [X] Handle incoming success results |
151 | | - - [X] Respond with error result when processing failed |
152 | | -- [X] Acknowledgement support |
153 | | - - [X] Request |
154 | | - - [X] Respond |
155 | | -- [x] Use maximum response delay to timeout requests |
156 | | - |
157 | | -### Node Management |
158 | | - |
159 | | -- [ ] Detailed Discovery |
160 | | - - [ ] Read Messages |
161 | | - - [ ] Send |
162 | | - - [X] Full Request |
163 | | - - [ ] Partial Request |
164 | | - - [X] Receive |
165 | | - - [X] Full Request |
166 | | - - [X] Partial Request |
167 | | - - [ ] Reply Messages |
168 | | - - [ ] Send |
169 | | - - [X] Full Request |
170 | | - - [ ] Partial Request |
171 | | - - [X] Receive |
172 | | - - [X] Full Request |
173 | | - - [X] Partial Request |
174 | | - - [ ] Notify Messages |
175 | | - - [ ] Send |
176 | | - - [X] Full Request |
177 | | - - [ ] Partial Request |
178 | | - - [X] Receive |
179 | | - - [X] Full Request |
180 | | - - [X] Partial Request |
181 | | -- [ ] Destination List |
182 | | - - [ ] Request and process full data |
183 | | - - [X] Response full data |
184 | | - - [ ] Request and process partial data |
185 | | - - [ ] Response partial data |
186 | | - - [ ] Notify subscribers |
187 | | -- [ ] Binding |
188 | | - - [ ] Send Requests |
189 | | - - [X] Add Binding |
190 | | - - [ ] Delete Binding |
191 | | - - [X] Receive Requests |
192 | | - - [X] Add Binding |
193 | | - - [X] Delete Binding |
194 | | -- [ ] Subscription |
195 | | - - [ ] Send Requests |
196 | | - - [X] Add Subscription |
197 | | - - [ ] Delete Subscription |
198 | | - - [X] Receive Requests |
199 | | - - [X] Add Subscription |
200 | | - - [X] Delete Subscription |
201 | | - - [X] Notify subscribers |
202 | | -- [ ] Use Case Discovery |
203 | | - - [ ] Read Messages |
204 | | - - [ ] Send |
205 | | - - [X] Full Request |
206 | | - - [ ] Partial Request |
207 | | - - [X] Receive |
208 | | - - [X] Full Request |
209 | | - - [X] Partial Request |
210 | | - - [ ] Reply Messages |
211 | | - - [ ] Send |
212 | | - - [X] Full Request |
213 | | - - [ ] Partial Request |
214 | | - - [X] Receive |
215 | | - - [X] Full Request |
216 | | - - [X] Partial Request |
217 | | - - [ ] Notify Messages |
218 | | - - [ ] Send |
219 | | - - [X] Full Request |
220 | | - - [ ] Partial Request |
221 | | - - [X] Receive |
222 | | - - [X] Full Request |
223 | | - - [X] Partial Request |
224 | | - |
225 | | -### General feature implementation |
226 | | - |
227 | | -- [ ] Hearbeat Support |
228 | | - - [X] Send hearbeats |
229 | | - - [ ] Receive hearbeats |
230 | | - |
231 | | -### Partial, selector, elements support |
232 | | - |
233 | | -All list types do support processing of incoming partial messages, including selectors and elements. Sending partial messages is possible but there is no special support implemented right now. |
234 | | - |
235 | 103 | ## Interfaces |
236 | 104 |
|
237 | 105 | ### Verbose logging |
238 | 106 |
|
239 | | -Use `SetLogger` on `Service` to set the logger which needs to conform to the `logging.Logging` interface. |
| 107 | +Use `SetLogger` on `Service` to set the logger which needs to conform to the `logging.Logging` interface of [ship-go](https://github.com/enbility/ship-go). |
240 | 108 |
|
241 | 109 | Example: |
242 | 110 |
|
|
0 commit comments