!7 cmodule SmartHomeDemo > DynPrintLogAndEnabled { start { dm_onUserUtterance(s -> { S answer = webBot_answer(s, #1026867); LS tok = javaTokWithBrackets(answer); for (int i = 1; i < l(tok); i += 2) if (eqGet(tok, i, "#") && isCurlyBracketed(get(tok, i+2))) { S cmd = uncurly(get(tok, i+2)); print("Have cmd: " + cmd); replaceTokens(tok, i, i+3, unnull(runCmd(cmd)); } dm_say(trimJoin(tok)); }); } // API S runCmd(S s) null { if "shutdown" ret null with cleanPowerOff(); LS tok = javaTok(s); if (jmatch2("=", tok)) ret null with dm_mqtt_send(firstToken(tok), lastToken(tok)); if "ip address" ret replace(myV4IP(), ".", ", "); if "time" ret localTimeForSpeechOutput(); if "cpu temperature" ret dm_cpuTemperature(); } }