1
0
Fork 0
 
 
Go to file
Bo Jeanes e3d4d024ce Implement basic WiNet-S modbus driver
This also splits the project into 3 crates, which are _theoretically_
indepently useful, though the target audience will be very small...
2022-08-30 16:28:33 +10:00
modbus-mqtt Implement basic WiNet-S modbus driver 2022-08-30 16:28:33 +10:00
sungrow-winets Implement basic WiNet-S modbus driver 2022-08-30 16:28:33 +10:00
tokio_modbus-winets Implement basic WiNet-S modbus driver 2022-08-30 16:28:33 +10:00
.gitignore Initial commit based on rumqttc example 2022-07-15 17:11:38 +10:00
Cargo.lock Implement basic WiNet-S modbus driver 2022-08-30 16:28:33 +10:00
Cargo.toml Implement basic WiNet-S modbus driver 2022-08-30 16:28:33 +10:00
README.md Implement basic WiNet-S modbus driver 2022-08-30 16:28:33 +10:00

README.md

ModbusMQTT

Very rough for now.

Topic spec

prefix/status -> { "status": "running" } # last-will message here too

prefix/connect/<connection> <- {
        "host": "localhost",
        "port": 502,
        "slave": 1,
    }

prefix/status/<connection> -> {
        "host": "localhost",
        "port": 502,
        "slave": 1,
        "status": "connected"
    }

prefix/logs/<connection> -> { "message": "log message", level: "level" }

prefix/connection/<connection>/monitor[/opt-name] <- {
        "address": 5100,
        "type": "holding|input",
        "count": 1,
        "interval": 10, // seconds
}

Similar projects

Example connect config

{
  "host": "10.10.10.219",
  "unit": 1,
  "proto": "tcp",
  "address_offset": -1,
  "input": [{
    "address": 5017,
    "type": "u32",
    "name": "dc_power",
    "swap_words": false,
    "period": "3s"
  },
  {
    "address": 5008,
    "type": "s16",
    "name": "internal_temperature",
    "period": "1m"
  },
  {
    "address": 13008,
    "type": "s32",
    "name": "load_power",
    "swap_words": false,
    "period": "3s"
  },
  {
    "address": 13010,
    "type": "s32",
    "name": "export_power",
    "swap_words": false,
    "period": "3s"
  },
  {
    "address": 13022,
    "name": "battery_power",
    "period": "3s"
  },
  {
    "address": 13023,
    "name": "battery_level",
    "period": "1m"
  },
  {
    "address": 13024,
    "name": "battery_health",
    "period": "10m"
  }],
  "hold":  [{
    "address": 13058,
    "name": "max_soc",
    "period": "90s"
  },
  {
    "address": 13059,
    "name": "min_soc",
    "period": "90s"
  }]
}