i've installed mqtt at my router and uses WEB UI to control this. here are some lines that i added into mosquitto.conf
user root
allow_anonymous false
password_file /etc/mosquitto/passwd
here are some part of the lua script.
if mqttOnOff == "1" then // mqttOnOff is setted at WEB UI.
os.execute("service mosquitto enable")
os.execute("echo \"mosquitto service is enabled\" > /dev/console")
os.execute("service mosquitto stop")
os.execute("echo \"mosquitto service is stopped\" > /dev/console")
os.execute("service mosquitto start")
os.execute("echo \"mosquitto service is started\" > /dev/console")
elseif mqttOnOff == "0" then
os.execute("service mosquitto disable")
os.execute("echo \"mosquitto service is disabled\" > /dev/console")
os.execute("service mosquitto stop")
os.execute("echo \"mosquitto service is stopped\" > /dev/console")
else
os.execute("echo \"mqttOnOff value returned with error\" > /dev/console")
end
whenever i set mqttOnOff's value to 1, i can see following lines at console
mosquitto service is enabled
mosquitto service is stopped
mosquitto service is started
if i set value to 0, obviously i can see...
mosquitto service is disabled
mosquitto service is stopped
anyways, this means service commands are being executed with os.execute() However, it doesn't work.
whenever i manually input those commands at console with my fingers, it works. it stops well, it starts well, it restarts well, it enables well, it disables well.
but everytime i use lua's os.execute doesn't work.
i manually start mosquitto and set with WEB UI to enable(start)again and check the PID with ps, PID shows same(should be different since command has serevice mosquitto stop and start). if i set with WEB UI to disable(start), it does not stops.
Manually stopping mosquitto and set with WEB UI to enable, does not starts.
So, i used C, instead of lua. Mechanism is same. just using system() function since it's C.
if (mqttOnOff == 1)
{
system("service mosquitto enable");
system("echo enable > /dev/console");
system("service mosquitto stop");
system("echo stop > /dev/console");
system("service mosquitto start");
system("echo start > /dev/console");
}
else if (mqttOnOff == 0)
{
system("service mosquitto disable");
system("echo disable > /dev/console");
system("service mosquitto stop");
system("echo stop > /dev/console");
}
Same as the lua, i can see
enable
stop
start
when i set via WEB UI, even if manually execute this compiled C file.
Result is the same. mqtt is not starting.
any solutions for this?
Solution!!
Since service
is not executeable, instead of using service
, i just executed mosquitto via mosquitto command.
https://forum.openwrt.org/t/mqtt-service-command-is-not-working-via-c-lua/116434/2