Luup request to retrieve and backup Lua Startup Script

Hello – is there a luup data_request to retrieve the global startup Lua? I couldn’t find it in the wiki for Luup Requests. The goal is to automate backup of my Lua scripts, including global functions.

Background:
I have a simple python script that remotely does an http request to retrieve all scene Lua. That way, I can more easily validate Lua (e.g. simply load it in VIM), search scene Lua for references that I change in the global Startup Lua, and add scene Lua to source repository, etc. I similarly want to do the same for Startup Lua.

Thanks - Joel

See:

http://wiki.micasaverde.com/index.php/Luup_Requests#user_data

The user_data will have all of your LUA code … it actually has ALL of the config info for your Vera … for devices, plugins, scenes, …

Works perfectly, thank you!

Joel, that scripts sounds interesting! Would you like to share it?

It’s pretty straight forward using Python (Python2 in my case). This example simply prints out all Lua from StartupCode and scenes (including triggers):

import socket
import httplib
import urllib
import json

if __name__ == "__main__":
    local_zwave_server = 'xxx.xxx.xxx.xxx'
    zwave_port = 3480

    def get_user_data():
        zwave = httplib.HTTPConnection(local_zwave_server, zwave_port)
        params = urllib.urlencode({'id': 'user_data', 'output_format': 'json'})
        zwave.request("GET", "/data_request?%s" % (params))
        resp = zwave.getresponse().read()

        return resp

    try:
        user_data = get_user_data()
        user_data_doc = json.loads(user_data)
        print ("-- StartupCode")
        print (user_data_doc["StartupCode"])

        for scene_doc in user_data_doc["scenes"]:
            if scene_doc.has_key("lua"):
                print ("-- Scene %s" % (scene_doc["name"]))
                print (scene_doc["lua"])
            if scene_doc.has_key("triggers"):
                for trigger_doc in scene_doc["triggers"]:
                    print ("-- Scene %s, Trigger %s" % (scene_doc["name"], trigger_doc["name"]))
                    print (trigger_doc["lua"])
    except socket.error:
        print ("Communication error with ZWave server.")

Thanks - Joel