Setting system time on a TS.... with lua?

how does one set the system time & date in a TS?

Is there a module to do it?  I dont see any ability to set the system time win lua, only read it - no time.Set_current_time() function.

Thanks

Bruce

Parents
  • This is possible using a couple of lua scripts, the HTTP Request module, and taking advantage of the ability to set Date and Time with HTTP API.

    The HTTP Request host name would the be the IP Address of the Controller you want to change the time/date to. Path is /api/config.

    For the rest of this example, I'm going to explain how to set the time, but setting the date is a similar process.

    -Create a Startup trigger that executes a Lua script setting 3 global variables.

    hour = "0"
    min = "0"
    sec = "0"
    

    -Create a Soft trigger that executes a HTTP Make Request. Leave all settings to use instance default, except Data. Set Data to Variable 1 (enable trigger variables in your project file if not already)

    -Create 3 Touch Slider Move triggers, each triggering a new Lua script with the following:

    Hour

    local slider = get_trigger_variable(1)
    hour = math.floor(slider/11.0869565217)
    set_control_caption("Hour", "Hour: "..hour)

    This will get the value of the slider, convert it to 0-23 from 255, and change the label of the slider (in my case my slider's key was called "Hour") to display the new converted hour number for the user.

    Minute

    local slider = get_trigger_variable(1)
    min = math.floor(slider/4.32203389831)
    set_control_caption("Min", "Min: "..min)

    This will get the value of the slider, convert it to 0-59 from 255, and change the label of the slider (in my case my slider's key was called "Min") to display the new converted minute number for the user.

    Second

    local slider = get_trigger_variable(1)
    sec = math.floor(slider/4.32203389831)
    set_control_caption("Sec", "Sec: "..sec)

    This will get the value of the slider, convert it to 0-59 from 255, and change the label of the slider (in my case my slider's key was called "Sec") to display the new converted second number for the user.

    -Create Touch Button Event trigger that triggers a new Lua script with the following:

    local json = "{\"hour\":\""..hour.."\", \"minute\":\""..min.."\",\"second\":\""..sec.."\"}"
    enqueue_trigger(2,json)

    This will be a button to set the new time. It will grab the new global variable numbers for hour, minute, and second and put them into JSON format for the data of the HTTP Request. The script will then trigger the Soft Trigger (in my case trigger 2) that you created in Step 2 and passes the JSON data as a variable into the trigger and sending the HTTP Request to the controller.

    Lastly, create an Interface with 3 sliders and 1 button with the appropiate keys for the above scripts and triggers to reference.

    ...or feature request this to be added to the LUA API.

  • Thank you.  

    Unfortunately. time is not on my side and I had to skip implimenting this.  But this very much makes sense. 

Reply Children
No Data
Related