Ezlo plugin development and the developer docs

Attempting to create a well formed plugin and looking at the docs and existing plugins reminds me of when I started working on a Vera plugin.
The starting point for an Ezlo plugin seems to be the config.json file. But when I look at the ezlo.wifi_device_generator plugin code I see things that don’t seem to make sense when looking at the documents. Under dependencies - addons lua is listed. And under plugins I see json. But in the API documentation under addons I only see ZWave (which also appears under plugins). The API docs under plugins doesn’t list json.
Am I missing something here? Or am I simply not understanding what I’m looking at?

@tinman you are right.
Let us update the documentation accordingly.
We intended not to wait to share the platform and acted quick. Now we have multiple plugins on the marketplace and can help you with your implementation as well.
Can you share what you want to work on and how we can help ?

An example: If a myFunction is the object of a network,subscribe(myFunction) call, is there a description somewhere in the API documentation detailing what the function should expect? In some of the plugin code I see where similar functions receive a params object. What are the possible contents of this object? Did I miss this somewhere?

Hello, @tinman

Here is a schema of the event passed to the event handling script:
https://api.ezlo.com/scripting/network/index.html#events

For that script

require "network"
network.subscribe("HUB:plugin_name/scripts/event_handling")

The script event_handling.lua script may expect that input:

{
    "event": "network",
    "data": {
        "event_type": "io_activity",
        "event": {
           "handle": 2810,
           "io_activity_type": "IN"
        }
}

Lua addon as a dependency means that your plugin will not work without that addon.
Lua plugins are executed by Lua addon. So, extensions should wait for Lua addon to be ready before they are started.

Lua addon is the core part of the firmware now. It runs Lua scripts. Without it running, no Lua plugins are executed. This addon has no public API, so there is no documentation for it.

ZWave, from the other side, has some public API, that’s why it is listed in the documentation.

ZWave plugin is another entity - it’s a Lua plugin that brings many ZWave device integrations to the firmware.
It’s a gateway plugin, and cannot be used as a dependency (not sure about that).

Ths “json” is a library plugin. Library plugins are common plugins of the type “library” that other plugins can load. They have no own plugin execution context, and cannot be run without enclosing a plugin of type “gateway”.

So, you can reference it if you need to parse JSON strings or stringify JSON objects in your plugin.
Documentation for json plugin can be found here:

The Linux firmware has json 0.1.2 onboard.

OK, thanks for the link. I was using this: https://developer.mios.com/api/ which is not nearly as complete. Perhaps having only one such resource would be better?

Tech writers fill developer.mios.com. See API section.
Ezlo developers fill api.ezlo.com.

So, from the reading perspective, the first one is much more mature and understandable.
But api.ezlo.com has more articles. So, you can choose.

PS: My bad, it’s not “developers”, but “developer”. Thanks, @blacey
But, according to this: “Updated on May 17, 2022” - I’d not rely on it as a source of actual data.

We mere mortals aren’t able to access developers.mios.com - it must be an internal portal or it is currently down :wink:

1 Like

there is no “s” at the end…

1 Like

:man_facepalming:

@tinman , @blacey you don’t need to worry about accessing internal portal. We work on trying to keep them same. It will be our priority to make the updates asap.

1 Like