github.com/simpleiot/simpleiot@v0.18.3/CHANGELOG.md (about) 1 # Changelog 2 3 All notable changes to this project will be documented in this file. 4 5 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 and this project adheres to 7 [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 8 9 For more details or to discuss releases, please visit the 10 [Simple IoT community forum](https://community.tmpdir.org/c/simple-iot/5) 11 12 ## [Unreleased] 13 14 - fix bug where export/import displayed no nodes (#749). Fixed in (#753) 15 16 ## [[0.18.1] - 2024-11-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.18.1) 17 18 - fix bug where Shelly IO Enable Control option was not working (#739) 19 20 ## [[0.18.0] - 2024-11-07](https://github.com/simpleiot/simpleiot/releases/tag/v0.18.0) 21 22 - change default login to `admin`/`admin` (used to be `admin@admin.com`, but 23 there was is reason to have a bogus email address). (#730) 24 - file client/node 25 - option to store binary files 26 - display filename, file size, and stored size 27 - create file client backend code that runs for file nodes 28 - calculate and populate md5sum when file contents change 29 - display md5sum in file node UI 30 - serial client/node 31 - add serial file download -- can be used for MCU updates 32 - fix issues with populate node ID for high rate data 33 - db client 34 - fix crash if node ID is not populated correctly in data 35 - client (BREAKING API CHANGE) 36 - renamed client.Group -> client.RunGroup. This is so we don't conflict with 37 the client that manages group nodes 38 - fix issue with user login when moving users to different groups (#713) 39 40 ## [[0.17.0] - 2024-08-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.17.0) 41 42 - add rule/condition/action disable flag (#352) 43 - rule action: add point key field (#714) 44 45 ## [[0.16.2] - 2024-06-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.16.2) 46 47 - db client: Improve Influx history query functionality 48 - If history query response fails, try responding again with ErrorMessage 49 - TagFilters values can now be empty string or a slice of strings 50 51 ## [[0.16.1] - 2024-05-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.16.1) 52 53 - Modbus API: add an option to validate the input when a client writes to a 54 register. 55 - Update client: 56 - improve autodownload logic 57 - check for updates when URI is changed 58 - improve error handling and reporting 59 - fix bug when reducing update list 60 - expand documentation on 61 [creating a client](https://docs.simpleiot.org/docs/ref/client.html#creating-new-clients). 62 63 ## [[0.16.0] - 2024-05-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.16.0) 64 65 - add Update client -- currently supports system updates 66 [docs](https://docs.simpleiot.org/docs/user/update.html). 67 - update elm-tooling 68 - api: Added `history.<nodeId>` NATS endpoint to send Influx history queries to 69 an Influx DB client node. 70 71 ## [[0.15.3] - 2024-03-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.15.3) 72 73 - UI: add tag UI to metrics client UI 74 75 ## [[0.15.0] - 2024-03-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.15.0) 76 77 - NTP client: Do not set configuration if servers are not specified. This allows 78 timesyncd to use the default configuration if no servers are specified. 79 - server: Args now accepts a `*FlagSet` to allow flags to be extended 80 - Influx client when writing points from a given node also adds additional tags 81 based on the node that emitted the point. Previously, `nodeID` tag was added, 82 but this has been renamed to `node.id`. Also added is `node.type` and 83 `node.description` (populated with the value of a point of type 84 "description"). 85 - For each Influx DB client, the user can specify an array of tag point types 86 (via point type "tagPointType"). These point types are also copied as tags for 87 each point emitted by the node. For example, if node A has two points tag:city 88 (i.e. Point.Type is "tag" and Point.Key is "city") and tag:state, then these 89 point values are appended to every single point emitted by node A. In Influx, 90 each point would have a tag `node.tag.city` and `node.tag.state` with their 91 respective Point.Text values. 92 - BREAKING CHANGE: Influx DB tag `nodeID` is now `node.id` 93 - update frontend dependencies and fix various build issues 94 - UI: add tag UI most clients so that custom tags can be added to each node. 95 96 ## [[0.14.10] - 2024-02-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.10) 97 98 - store: Improved performance when loading many nodes and edges 99 - serial: Fixed bug: do not write points over closed serial port 100 101 ## [[0.14.9] - 2024-01-18](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.9) 102 103 - require custom UI assets to be rooted and not be public directory 104 - add `-UIAssetsDebug` cmdline flag. This will dump all the UI assets file and 105 is useful in debugging to make sure your assets files are correct -- it can 106 get a little tricky with embedding, etc. 107 108 ## [[0.14.8] - 2024-01-16](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.8) 109 110 - support passing in a custom UI (fs.FS or directory name) to the SIOT server. 111 This allows you to replace the SIOT UI with a custom version. 112 113 ## [[0.14.7] - 2024-01-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.7) 114 115 - add modbus swap words for Int32/Uint32 writes 116 117 ## [[0.14.6] - 2024-01-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.6) 118 119 - verb -> adjective changes in several types. This is more consistent and 120 accurate with how things are done in this industry (HTML, etc). This is a 121 breaking change in that nodes with disable or control flag set will need to be 122 reconfigured. 123 - disable -> disabled 124 - control -> controlled 125 - add modbus Float32ToRegsSwapWords() 126 127 ## [[0.14.5] - 2024-01-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.5) 128 129 - simpleiot-js: Fixed bugs and improved README 130 - Replace deprecated `io/ioutil` functions (#680) 131 - fixed frontend bug where only custom node types could be added 132 133 ## [[0.14.4] - 2023-12-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.4) 134 135 - UI: in node raw view, you can now edit/add/delete points (#676) 136 - UI: add custom node types 137 138 ## [[0.14.3] - 2023-12-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.3) 139 140 - UI: display unknown nodes as raw type and points 141 - UI: add raw view button to node expanded view. This allows us to view the raw 142 points in any node which is useful for debugging and development. (see 143 [docs](https://docs.simpleiot.org/docs/user/ui.html#raw-node-view) for more 144 information) 145 146 ## [[0.14.2] - 2023-11-29](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.2) 147 148 - Signal generator client: replaced "Sync Parent" option with "Destination" to 149 indicate the destination node and point type for generated points 150 - update gonetworkmanager to v2.1.0 and fix sync bugs 151 - network-manager client: Now supports better connection sync via connection 152 `Managed` flag; fixed a few bugs; WiFiConfig sync now works 153 154 ## [[0.14.1] - 2023-11-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.1) 155 156 - update frontend assets (missed that in v0.14.0) 157 158 ## [[0.14.0] - 2023-11-14](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.0) 159 160 - update to nats-server to v2.10.4 161 - update to nats client package to v1.31.0 162 - development: `envsetup.sh` sources `local.sh` if it exists 163 - Go client API for export/import nodes to/from YAML 164 - `siot` CLI export and import commands 165 - simpleiot-js improvements 166 - Network Manager Client (WIP) 167 - NTP Client 168 - serial client: allow configuration of HR point destination 169 - serial client: add "Sync Parent" option 170 - Signal generator client: add support for square, triangle, and random walk 171 patterns 172 - fix issue with batched points of the same type/key (#658) 173 174 ## [[0.13.1] - 2023-10-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.13.1) 175 176 - update client manager API to include list of parent node types 177 - fix issue with duplicating nodes where there were two copies of Description 178 points 179 - display decode error count for high-rate serial packets 180 - display rate for high-rate serial packets 181 182 ## [[0.13.0] - 2023-09-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.13.0) 183 184 - implement `siot install` command (#527) 185 - update frontend poll rate from 3s to 4s 186 - fix `siot store` (was crashing due to Opened not being defined) 187 188 ## [[0.12.7] - 2023-09-14](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.7) 189 190 - serial client decoding improvements 191 192 ## [[0.12.6] - 2023-09-13](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.6) 193 194 - fix issue with email in user node UI (#609) 195 196 ## [[0.12.5] - 2023-08-25](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.5) 197 198 - add supported for Linux temp sensors (#607) 199 200 ## [[0.12.4] - 2023-08-25](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.4) 201 202 - Reworked and simplified decode and merge routines (#589). See 203 [documentation](https://docs.simpleiot.org/docs/ref/data.html?#converting-nodes-to-other-data-structures) 204 - UI: fixed issue with with paste node rule condition/actions (#600) 205 - Can client: fixed various issues (#498) 206 - Rule client: fix issue with error reporting (#599) 207 - switch to forked mdns package to get rid of closing messages (#558) 208 - update nats.go package from v1.20.0 => v1.28.0 209 - update nats-server package from v2.9.6 => v2.9.21 210 - default NATS server to 127.0.0.1 instead of localhost 211 212 ## [[0.12.3] - 2023-08-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.3) 213 214 - switch to elm-tooling to enable building on Linux and MacOS ARM machines 215 - enable riscv builds in release 216 217 ## [[0.12.2] - 2023-08-01](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.2) 218 219 - fix login 220 221 ## [[0.12.1] - 2023-07-27](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.1) 222 223 - fix control of Shelly lights 224 - required that `Point:Key` field always be set (#580) 225 - improvements in point decode and merge with arrays (not finished) 226 227 ## [[0.12.0] - 2023-07-21](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.0) 228 229 - support Dates in Rule schedule conditions 230 - Rules are re-run if any rule configuration changes 231 - Display error conditions in Rule nodes 232 - hide schedule weekday entry when dates are active 233 - hide schedule date entry when weekdays are active 234 - support deleting (tombstone points) in NodeDecode and NodeMerge functions 235 236 ## [[0.11.4] - 2023-06-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.4) 237 238 - remove index field from Point data structure. See #565 239 - add support for Shelly Plus2PM 240 - change Shelly client to use Shelly API 241 [Component model](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Introduction) 242 243 ## [[0.11.3] - 2023-06-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.3) 244 245 - serial client: add high rate rx count for debugging 246 247 ## [[0.11.2] - 2023-06-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.2) 248 249 - fix race condition in Client Manager client startup (#552). This fixes a crash 250 when detecting Shelly devices. 251 252 ## [[0.11.1] - 2023-05-30](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.1) 253 254 - update point merge code to handle complex types 255 - more fixes for rule condition schedule processing (#547) 256 - fix issue with Shelly device discovery duplicating devices (#552) 257 - client manager: fix race condition with subscriptions and deleting client 258 states 259 260 ## [[0.11.0] - 2023-05-23](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.0) 261 262 - fix rule condition schedule processing (#547) 263 - support high rate serial MCU data (#517) 264 265 ## [[0.10.3] - 2023-05-16](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.3) 266 267 - use mDNS responses to set shelly IO back online 268 - Client Manager: improve filtering of points -- see 269 [Message echo](https://docs.simpleiot.org/docs/ref/client.html#message-echo) 270 271 ## [[0.10.2] - 2023-05-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.2) 272 273 - default to control being disabled for shelly devices and add UI to enable 274 control (#544) 275 276 ## [[0.10.1] - 2023-05-13](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.1) 277 278 - fix issues with Shelly devices appearing offline when first discovered 279 - disable IPv6 in Shelly mDNS (does not seem to fix all issues on some machines) 280 281 ## [[0.10.0] - 2023-04-28](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.0) 282 283 - support for Shelly Home Automation devices (#189) (see 284 [docs](https://docs.simpleiot.org/docs/user/shelly.html)) 285 - switch Linting/CI to use golangci-lint and fix issues in codebase 286 - point encode/decode functions now support arrays and maps. Thanks @bminer! 287 288 ## [[0.9.0] - 2023-02-28](https://github.com/simpleiot/simpleiot/releases/tag/v0.9.0) 289 290 - change default HTTP port from 8080 to 8118. This should reduce conflicts with 291 other apps and require us to configure the HTTP port less often. (#495) 292 - BREAKING CHANGE: change protobuf point.value encoding from float to double 293 (#291) This change introduces a protocol change so all instances in a system 294 will need to be updated. If this is a problem, let us know and we can work out 295 a migration. 296 - sqlite schema: change time storage from two fields (time_s, time_ns) to single 297 time that contains NS since Unix epoch. 298 - documentation cleanup (#509) 299 - move particle code to client and add UI (#503). See 300 [Particle client docs](https://docs.simpleiot.org/docs/user/particle.html). 301 - simplify serial MCU encoding (#517) 302 - improve serial MCU UI point display 303 - use Go crypto/rand API instead of /dev/random. May fix windows issues (#517) 304 305 ## [[0.8.0] - 2023-01-23](https://github.com/simpleiot/simpleiot/releases/tag/v0.8.0) 306 307 - update elm-watch to v1.1.2 308 - add system, application, and process 309 [metrics](https://docs.simpleiot.org/docs/user/metrics.html) (#256, #255) 310 311 ## [[0.7.2] - 2023-01-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.7.2) 312 313 - fix race condition with clients that have multi-level nodes (ex Rule client) 314 #487 315 316 ## [[0.7.1] - 2023-01-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.7.1) 317 318 (DO NOT USE, THIS VERSION HAS PROBLEMS WITH FRONTEND ASSETS) 319 320 - upgrade frontend to elm-spa 6 (#197) 321 - apply elm-review rules to frontend code and integrate with CI (#222) 322 - changes so user does not have to log in if backend or browser is restarted 323 (#474) 324 - frontend: store JWT Auth token in browser storage 325 - frontend: store JWT key in db 326 - use [air](github.com/cosmtrek/air) instead of entr for watching Go files 327 during development. This allows `siot_watch` to work on MacOS, and should also 328 be userful in a Windows dev setup. 329 330 See the [Hot reloading the Simple IoT UI](https://youtu.be/_Nrs2_l62_Q) for a 331 demo of these changes. 332 333 ## [[0.7.0] - 2022-12-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.7.0) 334 335 - add [CAN bus client](https://docs.simpleiot.org/docs/user/can.html) 336 337 ## [[0.6.2] - 2022-12-07](https://github.com/simpleiot/simpleiot/releases/tag/v0.6.2) 338 339 - moved the node type from node point to edge field. This allows us to index 340 this and make queries that search the node tree more efficient. 341 - support for processing clients in groups. Previously, client nodes had to be a 342 child of the root device node. 343 - fix issue with `siot log` due to previous NATS API change 344 345 ## [[0.6.1] - 2022-12-01](https://github.com/simpleiot/simpleiot/releases/tag/v0.6.1) 346 347 - fix bug in influx db client due to recent API changes 348 - fix bug in client manager where Stop() hangs if Start() has already exitted 349 - don't allow deleting of root node 350 - allow configuring of root node ID, otherwise UUID is used 351 - sync: 352 - add option to configure sync period (defaults to 20s). 353 - if upstream node is deleted on the upstream, it is restored 354 - don't include edge points of root node in hash calculation. This allows node 355 to be moved around in the upstream instance and other changes. 356 357 ## [[0.6.0] - 2022-11-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.6.0) 358 359 - improve error handling in serial client cobs decoder 360 - rename upstream -> sync 361 - re-implement node hash using CRC-32 and XOR hash 362 - re-implement upstream sync using new hash mechanism 363 - write tests for sync 364 - implement `siot log` subcommand -- this dumps SIOT messages 365 - implement `siot store` subcommand -- used to check and fix store 366 - simpleiot-js frontend library changes 367 - re-worked to use updated NATS API 368 - added `sendEdgePoints` API function 369 - added unit tests, linting, etc. 370 371 Note, there have been some database changes. To update, do the following: 372 373 - `sqlite3 siot.sqlite` 374 - `update set up="root" from edges where up="none";` 375 - start simpleiot 376 - in another terminal, run: `siot store -fix`. Do this several times until the 377 original siot process does not show any fixes. 378 379 ## [[0.5.5] - 2022-10-31](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.5) 380 381 - fix population of AppVersion in server 382 - serial client 383 - add configuration of max message length 384 - improve error handling and port resets 385 386 ## [[0.5.4] - 2022-10-28](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.4) 387 388 - clean up SIOT main to allow callers to have their own set of flags at the top 389 level before calling SIOT server. 390 391 NOTE, to run siot with flags, you must do something like: 392 393 `siot serve -debugHttp` 394 395 The server flags are now part of the serve subcommand. 396 397 ## [[0.5.3] - 2022-10-27](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.3) 398 399 - add serial client debug level 9 to dump raw serial data before COBS processing 400 401 ## [[0.5.2] - 2022-10-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.2) 402 403 - **Breaking change**: the node hash type has changed from a string to an int, 404 which requires deleting the database and starting over. 405 - switch from Genesis to go-embed for embedding frontend assets 406 - add embedded assets FS wrapper to allow embedding compressed assets and we 407 decompress them on the fly if requested. 408 - add `elm.js.gz` to repo. This will allow us to run SIOT without building the 409 frontend first. Should enable stuff like 410 `go run github.com/simpleiot/simpleiot/cmd/siot` and allow using SIOT server 411 as a Go package in other projects. 412 - add server API to add clients. This will allow customization of what clients 413 are used in the system, as well as easily adding custom ones. 414 - fix version in SIOT app to be Git version (was always printing development) 415 416 You can now do things like: 417 `go run github.com/simpleiot/simpleiot/cmd/siot@latest` 418 419 ## [[0.5.1] - 2022-10-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.1) 420 421 - handle config changes in influx db client 422 - lifecycle improvements 423 - fix race condition in http api shutdown 424 - shutdown nats client after the rest of the apps 425 - store: close nats subscriptions on shutdown 426 - Addeed Signal generator -- can be used to generate arbitrary signals 427 (currently, high rate Sine waves only) 428 - add NATS subjects for high rate data (see [API](docs/ref/api.md)) 429 - add [test app](cmd/point-size/main.go) to determine point protobuf sizes 430 - fix syncronization problem on shutdown -- need to wait for clients to close 431 before closing store, otherwise we can experience delays on node fetch 432 timeouts. 433 - fix issue when updating multiple points in one NATS message (only the first 434 got written) (introduced in v0.5.0) 435 - Serial MCU Client: 436 - added debug level for logging points and 437 [updated what logging levels mean](https://docs.simpleiot.org/docs/user/mcu.html). 438 - don't send rx/tx stats reset points to MCU 439 - support high-rate MCU data (set message subject to `phr`). 440 441 ## [[0.5.0] - 2022-09-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.0) 442 443 **NOTE, this is a testing release where we are still in the middle of reworking 444 the store and various clients. Upstream functionality does not work in this 445 release. If you need upstream support, use a 0.4.x release.** 446 447 The big news for this release is switching the store to SQLite and moving rule 448 and db functionality out of the store and into clients. 449 450 - switch store to sqlite (#320) 451 - rebroadcast messages at each upstream node (#390) 452 - extensive work on client manager. It is now much easier to keep your local 453 client config synchronized with ongoing point changes. Client manager also now 454 supports client configurations with two levels of nodes, such as is used in 455 rules where you have a rule node and child condition/action nodes. 456 - fix bug with fast changes in UI do not always stick (#414) 457 - move rules engine from store to siot client (#409) 458 - move influxdb code from store to client package (#410) 459 - replace all NatsRequest payloads with array of points (#406) 460 461 ## [[0.4.5] - 2022-09-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.5) 462 463 - set time on points received from serial MCU if not set 464 - display key in points if set 465 466 ## [[0.4.4] - 2022-09-01](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.4) 467 468 - switch serial CRC algorithm to CRC-16/KERMIT 469 470 ## [[0.4.3] - 2022-08-29](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.3) 471 472 - serial MCU: display rx/tx stats and any extra points in UI 473 474 ## [[0.4.1] - 2022-08-24](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.1) 475 476 - docs: add 477 [Modbus user documentation](https://docs.simpleiot.org/docs/user/modbus.html). 478 - docs: add 479 [Notification user documentation](https://docs.simpleiot.org/docs/user/notifications.html) 480 - data/merge.go: fix bug if text and value are both 0 481 - support Debug levels in serial MCU client: 0=no messages, 1=ascii log, 2=dump 482 rx data 483 - serial MCU client: fix issue where reset error count was not working 484 485 ## [[0.4.0] - 2022-07-29](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.0) 486 487 - serial [MCU client](https://docs.simpleiot.org/docs/ref/serial.html) support 488 (#380) 489 - add 490 [origin field](https://docs.simpleiot.org/docs/ref/data.html#tracking-who-made-changes) 491 to point type (#391). 492 493 ## [[0.3.0] - 2022-07-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.3.0) 494 495 This release has a few bug fixes and contains new client code that will make 496 creating new functionality easier. 497 498 - Fix invalid users causes panic in Go code #365 499 - implement data.Decode/Encode for converting nodes to user structs #384 500 - improve startup/shutdown lifecycle #389 501 - implemented struct <-> type 502 [encode/decode](https://github.com/simpleiot/simpleiot/blob/master/data/encode_decode_test.go) 503 functions. 504 - improved the lifecycle management of the application so we can cleanly shut it 505 down. This allows us to test the application more easily (spin up version for 506 test, shutdown, repeat). 507 - implemented a test.Server() function to create a test server to be used in 508 tests. 509 - Go API Change: the `nats` package has been renamed to `client`. 510 - defined a new Client interface and a client Manager that watches for node 511 changes and creates/updates clients and sends any points changes. 512 513 ## [[0.2.0] - 2022-05-31](https://github.com/simpleiot/simpleiot/releases/tag/v0.2.0) 514 515 (implemented in PR #362) 516 517 - UI: fix sorting of Rule child nodes 518 - highlight rule actions when active #266 519 - better linking of nodes for rules #251 520 - display clipboard contents at top of screen 521 - update elm/virtual-dom to 1.0.3 (helps 522 [prevent xss attacks](https://jfmengels.net/virtual-dom-security-patch/)) 523 524 This release improves the process of linking nodes to rule actions or 525 conditions. In the past, the system clipboard was used and you had to paste the 526 system clipboard contents into the Node ID field of rule conditions and actions. 527 Now, when you a copy a node, the SIOT frontend has its own clipboard and a past 528 button is displayed below the Node ID fields for easy pasting the node ID. 529 Additionally, the node description is displayed below the Node ID field so you 530 can easily tell which node the ID is referring to. 531 532 A [video is available](https://youtu.be/tqbLZ9CSzRU) which illustrates how node 533 IDs can now be copied and pasted. 534 [docs](https://docs.simpleiot.org/docs/user/rules.html) are also updated. 535 536 ## [[0.1.0] - 2022-05-13](https://github.com/simpleiot/simpleiot/releases/tag/v0.1.0) 537 538 - docs: add list of supported devices to install 539 - docs: add upstream documentation 540 - add support for 1-wire buses, and DS18B20 temp sensor #230 #361 541 542 ## [[0.0.45] - 2022-04-30](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.45) 543 544 - add DeleteNode, MoveNode, and MirrorNode to 545 [nats package](https://pkg.go.dev/github.com/simpleiot/simpleiot@v0.0.44/nats). 546 #344, #347 547 - store and display App Version in root node (see screenshot below). This value 548 is extracted by the SIOT build using the `git describe` command. See 549 `envsetup.sh`. #192, #349 550 - store and display OS version in root node (see screenshot below). On Linux, 551 this value is extracted from the `VERSION` field in `/etc/os-release`. The 552 field can be 553 [changed](https://docs.simpleiot.org/docs/user/configuration.html) using the 554 OS_VERSION_FIELD environment variable. #324, #353 555 - update go.bug.st/serial from v1.1.3 -> v1.3.5 556 - sort nodes in UI a little nicer, conditions before actions, move more often 557 used nodes to the top, etc. #355, #337 558 - add NATS user auth API and change HTTP auth to use that. #326, #356 559 - fix bug where deleted nodes where still considered for user auth 560 - add SIOT JS library using NATS over WebSockets (#357) 561 562  563 564 ## [[0.0.44] - 2022-04-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.44) 565 566 - UI: fix bug where copy node crashes UI if no on secure URL or localhost (#341) 567 - support clone/duplicate node (as well as mirror) operation (#312). Now when 568 you copy and paste a node, you will be presented with a list of options as 569 shown below. The new duplicate option allows you to easily replicate complex 570 setups (for instance a bunch of modbus points) from an existing site to a new 571 site. 572 573  574 575 See 576 [documenation](https://docs.simpleiot.org/docs/user/ui.html#deleting-moving-mirroring-and-duplicating-nodes) 577 or a [demo video](https://youtu.be/ZII9pzx9akY) for more information. 578 579 ## [[0.0.43] - 2022-03-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.43) 580 581 - improvement in UI to fix collapsing nodes #259 582 - implemented functionality to duplicate nodes and refactored 583 copy/move/mirror/duplicate UI (#312) 584 - update nats-server from v2.6.6 -> v2.7.4 (and associated dependencies) 585 586 ## [[0.0.42] - 2022-02-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.42) 587 588 - move HTTP API to get nodes for user to use NATS instead of direct call into 589 database (#327) 590 - **BREAKING API CHANGE**: the Nats `node.<id>` subject now returns an array of 591 `data.NodeEdge` structs instead of a single node. Both instances of an 592 upstream connection must be upgraded. 593 - don't send deleted nodes to frontend -- may fix #259 594 - default to nats/websocket being enabled on port 9222 595 596 ## [[0.0.41] - 2022-01-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.41) 597 598 - with v0.0.40, if upstream URI was specified as ws://myserver.com without the 599 port being specified, the NATS Go client assumed the port was 4222. If this 600 port is not specified for ws or wss protocols, SIOT now sets the port to :80 601 or :443. This makes the behavior more predictable, as these kinds of problems 602 are very hard to debug. #315 603 - if upstream config changes, restart upstream connection. #258 604 605 ## [[0.0.40] - 2022-01-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.40) 606 607 - support for NATS over WS connections to upstream. This is handy for cases 608 where the edge network may block outgoing connections on the port NATS is 609 using. HTTP(s) almost always works. In the upstream config, simply change the 610 URL to something like: `ws://my.service.com`. 611 612 ## [[0.0.39] - 2021-12-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.39) 613 614 - fix issue where app exits if upstream auth is incorrect (#298) 615 - fix issues with orphaned device nodes in upstreams. We now make sure devices 616 in upstream have upstream edges or are not deleted if the device is still 617 receiving points. (#299) 618 - only report nats stats every 1m. This makes upstream work better as these 619 currently are run in sync. 620 621 ## [[0.0.38] - 2021-11-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.38) 622 623 - fix population of version when building with envsetup.sh 624 - changes to point data structure to make it more flexible 625 ([ADR-1](https://github.com/simpleiot/simpleiot/pull/279)) 626 627 ## [[0.0.37] - 2021-10-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.37) 628 629 - fix issue with setup where you sometimes get error: elm: Text file busy 630 - cleanup simpleiot.Start() so it actually returns 631 632 ## [[0.0.36] - 2021-10-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.36) 633 634 - rename `db` package to `store` 635 - factor out siot server startup code into simpleiot package 636 - change `siot_run` in `envsetup.sh` to `go build` instead of `go run` 637 638 ## [[0.0.35] - 2021-10-04](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.35) 639 640 - add placeholders for some UI forms 641 - add disable for Modbus and Modbus client nodes (#250) 642 - clean up locking issues and simplify DB code 643 644 ## [[0.0.34] - 2021-09-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.34) 645 646 - handle audio playback where file bitrate does not match default of audio 647 device (#240) 648 - support rule actions that trigger when rule goes inactive (instead of active). 649 This allows a rule to do something with the run goes active as well as 650 inactive and in some cases saves us from writing two rules (#241). 651 - re-enable indexes on edge up/down fields (#219) 652 - add point min/max to NATS packets 653 - add NATS api metrics (as points to root device node) (#244) 654 - don't color root node grey for now 655 - update influxdb client to 2.5.0 656 - switch to async influx DB API (batches data, retries, etc) 657 - implement caching of nodes and edges to speed up read access 658 - add point processing cycle time and nats client pending messages metrics 659 - modbus loglevel 1 only prints errors, 2 now prints transactions 660 - web UI auth expires in 24hr instead of 30m -- still not ideal, but one step at 661 a time (#249) 662 - update front tar package to fix security warnings 663 664 ## [[0.0.33] - 2021-08-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.33) 665 666 - fix frontend build issue with last two releases 667 - add rule audio playback action functionality for Linux (requires alsa-utils) 668 - fix various bugs with rule schedule condition functionality 669 - all using rule active in rule conditions (allows chaining rules) 670 - improve rule condition processing to process all conditions/points rather than 671 just first match 672 - implement schedule conditions for rules 673 - switch from github.com/dgrijalva/jwt-go to github.com/golang-jwt/jwt/v4 674 - update frontend dependencies to satisify github security checks 675 676 ## [[0.0.32] - 2021-08-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.32) 677 678 - DO NOT USE, FRONTEND BUILD ISSUE 679 680 ## [[0.0.31] - 2021-08-10](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.31) 681 682 - DO NOT USE, FRONTEND BUILD ISSUE 683 684 ## [[0.0.30] - 2021-07-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.30) 685 686 - fix using SIOT_AUTH_TOKEN for -logNats command line option 687 - upgrade to NATS 2.2.2. Increases SIOT binary by about 2MB (uncompressed), 1MB 688 (compressed) 689 - disable badger for now -- can be re-enabled in db/genji.go. Bolt seems to work 690 better for the current SIOT use cases and Badger just adds bloat to the 691 binary. 692 - implement upstream synronization support 693 [#109](https://github.com/simpleiot/simpleiot/issues/109) 694 - update to Genji v0.13.0 695 696 ## [[0.0.29] - 2021-04-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.29) 697 698 - fix sending notifications to a single user through UI 699 700 ## [[0.0.28] - 2021-04-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.28) 701 702 - modbus: don't require poll period to be set for modbus server 703 - modbus: fix issue with reg values being sent every poll period, even if not 704 changing 705 - modbus: add timestamp to points being sent out 706 - support storing Point data in Influxdb 2.0 707 708 ## [[0.0.27] - 2021-04-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.27) 709 710 - slow down manual scanning to reduce background CPU usage 711 712 ## [[0.0.26] - 2021-04-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.26) 713 714 - make description in nats logger and notification messages smarter 715 - allow modbus busses to be added to groups as well as devices 716 - UI: 717 - don't show node + operation for nodes that can't have child-nodes 718 - force email entry to always be lowercase 719 720 ## [[0.0.25] - 2021-04-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.25) 721 722 - track user parent when messaging. This eliminates duplicate messages if a user 723 is part of different groups with different messaging services -- we only want 724 to message the group the user is a part of. 725 726 ## [[0.0.24] - 2021-04-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.24) 727 728 - UI 729 - display copy/move node messages for 2-3s when clicking copy/move node button 730 - support multiple top level nodes -- for instance a user that is a member of 731 multiple groups but not the root node 732 - automatically expand node children when moving/copying a node 733 - Implement rule notifications 734 735 ## [[0.0.23] - 2021-04-10](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.23) 736 737 - Modbus: TCP listen on all interfaces instead of just localhost 738 - UI 739 - add dot for nodes that don't have children 740 - don't sort nodes while editting, only on fetch 741 - sort nodes by group, then desc, then firstname, then lastname 742 - move/copy node can use node ID or description 743 - add node icons to add node descriptions 744 - replace edit/collapse with dot and color exp nodes 745 - support copying nodes 746 - remove remnants of Sample types (we now use Point) 747 - create notification and message data types and NATS/Db support 748 - implement node messaging (notifies all node and upstream users) 749 - BUILD: simplify protobuf generation 750 - implement Twilio SMS messaging 751 752 ## [[0.0.22] - 2021-03-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.22) 753 754 - UI: change node min/max button to edit/close 755 - Modbus: suppress TCP conn/disc messages at debug level 0 756 - siot: add cmdline option (-logNats) to trace all node points. This can be run 757 in parallel to the siot application to trace points flowing through the system 758 - genji db: update to v0.11.0 release 759 - rules: can now write rules that set nodes based on other nodes 760 761 ## [[0.0.21] - 2021-03-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.21) 762 763 - modbus: fix server issue with requests not free resources 764 765 ## [[0.0.20] - 2021-03-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.20) 766 767 - UI: add Form.onEnter utility function for adding enter handling 768 - UI: enter can now be used to enter sign-in form 769 - support for Modbus TCP, both client and server 770 771 ## [[0.0.19] - 2021-02-27](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.19) 772 773 - revert Genji update as there are problems saving nodes 774 775 ## [[0.0.18] - 2021-02-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.18) 776 777 - update go.bug.st/serial to support RiscV 778 - update Genji dependencies 779 780 ## [[0.0.17] - 2021-02-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.17) 781 782 - modbus 783 - fix bug in setting modbus baud rate 784 - include ID in modbus logging messages 785 - support for read-only coils and holding regs 786 - UI 787 - add nodeCheckboxInput widget 788 - round numbers in places 789 - color digital values blue when ON 790 - sort nodes by description 791 - fix windows build 792 793 ## [[0.0.16] - 2021-02-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.16) 794 795 - UI 796 - expand child nodes and add default description when adding a new node 797 - modbus improvements 798 - send all writes to DB over NATS -- this allows system to be more responsive, 799 as well as simplifies code 800 - lots of cleanup and error handling 801 802 ## [[0.0.15] - 2020-12-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.15) 803 804 - Implementation of tree based UI -- see demo: https://youtu.be/0ktVCPU74mw 805 806 ## [[0.0.14] - 2020-11-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.14) 807 808 - fix 32bit binary build 809 810 ## [[0.0.13] - 2020-11-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.13) 811 812 - edge: 813 - fixed issue with backoff algorith not adhearing to max 814 - backend: 815 - switched data structure name from device -> node -- see 816 - this issue for dicussion 817 - add page to message (currently SMS only) all users 818 - UI simplification and cleanup 819 - sort users on users page 820 - port frontend to elm-spa.dev v5 (this really cleans up the frontend code and 821 makes it more idomatic Elm) 822 - changing backing store from bolthold to genji (this gives us the flexibility 823 to use memory, bbolt, or badger backing stores as well as robust indexing) 824 - fix bug with not support Point::Text field in Nats/Protobuf 825 - fix up examples for sending device version info to portal 826 - frontend: 827 - only show version information if available 828 - don't display special points (description, version, etc) in general node 829 points. 830 - add -importDb command line option 831 832 Note, the database format has changed. To migrate, dump the database with the 833 old version of SIOT and them import with the new version. 834 835 ## [[0.0.12] - 2020-11-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.12) 836 837 - backend: 838 - switched data structure name from device -> node -- see 839 [this issue](https://github.com/simpleiot/simpleiot/issues/91) for dicussion 840 - add page to message (currently SMS only) all users 841 - UI simplification and cleanup 842 - sort users on users page 843 - port frontend to elm-spa.dev v5 (this really cleans up the frontend code and 844 makes it more idomatic Elm) 845 - changing backing store from bolthold to genji (this gives us the flexibility 846 to use memory, bbolt, or badger backing stores as well as robust indexing) 847 - fix bug with not support Point::Text field in Nats/Protobuf 848 - fix up examples for sending device version info to portal 849 - frontend: 850 - only show version information if available 851 - don't display special points (description, version, etc) in general node 852 points. 853 - add -importDb command line option 854 855 Note, the database format has changed. To migrate, dump the database with the 856 old version of SIOT and them import with the new version. 857 858 ## [[0.0.11] - 2020-09-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.11) 859 860 ### Changed 861 862 - switched data storage to 863 [points](https://github.com/simpleiot/simpleiot/blob/master/docs/development.md#flexible-data-structures) 864 vs sensor data and config 865 - add token auth for device HTTP communication 866 - documentation improvements 867 868 ## [[0.0.10] - 2020-08-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.10) 869 870 ### Changed 871 872 - documentation improvements 873 - specify TLS certs using variables instead of embedding 874 - code cleanup around NATS integration 875 - NATS don't force TLS 1.2 in client 876 - remove siotutil functionality and fold into siot exe 877 878 ## [[0.0.9] - 2020-08-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.9) 879 880 ### Added 881 882 - NATS integration for device communication 883 884 ### Changed 885 886 - documentation improvements 887 - moved API documentation to simple Markdown 888 - better organization 889 - add list of guiding principles to the [README](./README.md) 890 891 ## [[0.0.8] - 2020-08-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.8) 892 893 ### Added 894 895 - moved influxDb operations to db package so they are common for all samples 896 - added env variable to specify Influx database SIOT_INFLUX_DB 897 - added device ID tag to sample data stored in influx 898 - add rules engine 899 - add SMS notifications using Twilio 900 901 ### Changed 902 903 - clean up documentation organization 904 905 ## [[0.0.7] - 2020-07-04](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.7) 906 907 ### Added 908 909 - display device last update time 910 - display time since last update 911 912 ## [[0.0.6] - 2020-06-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.6) 913 914 ### Added 915 916 - add modbus API to change debug level at runtime 917 - add cloud/cloud off icon to indicate connection status of devices 918 - grey out devices that are not currently connected 919 - added background process to determine if devices are offline 920 921 ### Fixed 922 923 - workaround for issue where group key in database does not match ID in struct 924 925 ## [[0.0.5] - 2020-06-16](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.5) 926 927 ### Fixed 928 929 - fixed critical bug where new devices were not showing up in UI 930 931 ### Added 932 933 - add support in modbus pkg for decoding 32-bit int and floating point values 934 - started general command line modbus utility (cmd/modbus) to interactively read 935 modbus devices