diff --git a/usermods/multi_relay/readme.md b/usermods/multi_relay/readme.md index a5f47bf5e..e6b4adac4 100644 --- a/usermods/multi_relay/readme.md +++ b/usermods/multi_relay/readme.md @@ -16,6 +16,12 @@ Examples 1. 4 relays at all, relay 2 will be toggled: `http://[device-ip]/relays?toggle=0,1,0,0` 2. 3 relays at all, relay 1&3 will be switched on: `http://[device-ip]/relays?switch=1,0,1` +## JSON API +You can switch relay state using the following JSON object transmitted to: `http://[device-ip]/json` + +Switch relay 0 on: `{MultiRelay:{relay:0,on:true}}` +Switch relay4 3 & 4 off: `{"MultiRelay":[{"relay":2,"on":false},{"relay":3,"on":false}]}` + ## MQTT API wled/deviceMAC/relay/0/command on|off|toggle diff --git a/usermods/multi_relay/usermod_multi_relay.h b/usermods/multi_relay/usermod_multi_relay.h index 9d89f3d57..4172d2a83 100644 --- a/usermods/multi_relay/usermod_multi_relay.h +++ b/usermods/multi_relay/usermod_multi_relay.h @@ -443,6 +443,13 @@ class MultiRelay : public Usermod { if (usermod["on"].is() && usermod[FPSTR(_relay_str)].is() && usermod[FPSTR(_relay_str)].as()>=0) { switchRelay(usermod[FPSTR(_relay_str)].as(), usermod["on"].as()); } + } else if (root[FPSTR(_name)].is()) { + JsonArray relays = root[FPSTR(_name)].as(); + for (JsonVariant r : relays) { + if (r["on"].is() && r[FPSTR(_relay_str)].is() && r[FPSTR(_relay_str)].as()>=0) { + switchRelay(r[FPSTR(_relay_str)].as(), r["on"].as()); + } + } } }