Skip to content
View in the app

A better way to browse. Learn more.

Universal Devices Forum

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Introducing eisy-ai !!!

Featured Replies

OK I edit it in a vs code save then paste in and once I did the steps sjenkins posted it worked for me. Ollama is offering beam model ai for free right now but I think I'm hitting their limits for a free tier.

Did the same but still no luck - I had to do sudo chmod .... to get through, so maybe I am not the correct user

There is full access in the directory

Screenshot 2026-10-19 at 11.43.39 AM.png

Edited by Panda88

9 minutes ago, bgrubb1 said:

does the .json go in to the data area for "Configuration" ?

Yes

You had mentioned there would be an upcoming webinar on using eisyAI . That would really help me. I’ve created a plugin but consider myself a light weight programmer . With all the discussion of permission issues and need to connect with AI APIs that I only use as a free user, I’m still not able to start using eisyAI. I believe there are many eisy users like myself that need more help to get on board. How can I get some help to get started?

4 minutes ago, photogeek54 said:

You had mentioned there would be an upcoming webinar on using eisyAI . That would really help me. I’ve created a plugin but consider myself a light weight programmer . With all the discussion of permission issues and need to connect with AI APIs that I only use as a free user, I’m still not able to start using eisyAI. I believe there are many eisy users like myself that need more help to get on board. How can I get some help to get started?

There are many people on here who can help if you post the specifics of your problems. Also ask your AI if you are having problems setting up the json file.

I got eisy-ai plugin installed with the staging eisyAI, thanks michel. I copied the json from the configuration help. Is there any free AI model and API key I can use for learning and testing? I’m currently Only using the free ChatGPT and Gemini apps on IOS

I'm having much better luck with Claude thank you @Michel Kohanim. I did found a path issue, the AI was having trouble running bash commands looking for bin/bash so it had me run sudo ln -s /usr/local/bin/bash /bin/bash. I had to do stuff for the AI before we fixed the issue but we managed to create a plugin for my soma tilt blinds that I had network resources for. Before creating the plugin I had the AI put the network resources int the HTTP_Control plugin which created nodes for it then I decided to go full plugin. I don't know if I should share it because of the limited use for it and I would have to rely on AI if problems arise.

Edited by tazman

That's one thing about an AI generated plugins: support. Who supports it if the person who initially had it created doesn't fully understand the code?

  • Author
1 hour ago, tazman said:

I'm having much better luck with Claude thank you @Michel Kohanim. I did found a path issue, the AI was having trouble running bash commands looking for bin/bash so it had me run sudo ln -s /usr/local/bin/bash /bin/bash. I had to do stuff for the AI before we fixed the issue but we managed to create a plugin for my soma tilt blinds that I had network resources for. Before creating the plugin I had the AI put the network resources int the HTTP_Control plugin which created nodes for it then I decided to go full plugin. I don't know if I should share it because of the limited use for it and I would have to rely on AI if problems arise.

@tazman , did you uninstall and reinstall the plugin?

22 minutes ago, Guy Lavoie said:

That's one thing about an AI generated plugins: support. Who supports it if the person who initially had it created doesn't fully understand the code?

@Guy Lavoie , this statement is 10% true! You see, what you create with eisy-ai is a LOCAL plugin JUST FOR YOU! If you want to publish it for everyone, you need to go to our vetting process which includes agreeing to support it AND tax + bank account information (for direct deposit in case you want to charge for it).

With kind regards,
Michel

6 minutes ago, Michel Kohanim said:

@tazman , did you uninstall and reinstall the plugin?

6 minutes ago, Michel Kohanim said:

With kind regards,
Michel

No I did not know it was required. I deleted the config file then put your example with the new api key.

My experience with eisy-ai was greatly improved by the Claude api key UDI supplied for testing! The AI can search the logs and investigate problems, fill in information in plugins but says it does not have a tool to read Insteon link table database from the device or IoX files. What it can do really well is create plugins! I had it create a plugin for a Soma shade that I was using network resources for so that was easy work for it. I also needed a plugin for an old APC ph6u4x32 plug strip that even the HA integration has trouble with. It uses a specific Ayla IoT's local API so I pointed the AI to the GitHub from HA and it got it working after a couple tries. I also found after adding 2 items from it in a group it would fail to operate the second item so the AI investigated and made it so the commands were sent out separately because the strip always dropped the second command. I had ChatGPT 6.1sol try to make the plugin for me and it could not operate the strip even outside of eisy. The one thing I would ask for from @Michel Kohanim would be to add memory files for it to keep track of what was done because once the chat is closed it seems to have no records of what was done and you have to give it the information about the project if you need to go back to something later. Also if the chat would be saved for a while I think that could be useful. I'm sure it can do much more then what I tested and I'm looking forward to Michel's video.

Tom

  • Author

@tazman ,

  1. Thank you so much for testing eisy-ai and your invaluable feedback. Please note:
    eisy-ai can indeed read and analyze iox, device, and PLM link tables. Please let me know what prompt you used. It's possible that it got stuck in the /developer mode and didn't automatically transition.

  2. Memory files are there. It's called context.md ... in our next release, we do have a fileviewer so that you can see all the generated files and you can even make simple edits right from the browser

With kind regards,
Michel

@Michel Kohanim thank you for giving me the opportunity it was awesome to see what it could do. I know things will keep improvig and glad to you already have stuff on the roadmap. I can now see where I run into situations where I might have to put money on an API key when I need help with something I can't handle. I don't remember everything I tried but I just gave it another try.

can you show me the link tables for hall switch

I can't read Hall Switch's raw on-device link database (its ALDB) with my tools. What I can show is the link configuration for the Hall scene (Hall), which includes Hall Switch as a responder, and the links Hall Switch has as a controller in that scene.

Hall Switch as a responder in the Hall scene (Hall Switch is D B CF 1)

Controller in scene

Link type

On Level

Ramp Rate

Hall MBR

native (I_DIMMER)

35%

0.1 seconds

Hall Light

native (I_DIMMER)

35%

0.1 seconds

Hall 3 Gang Right

native (I_DIMMER)

35%

0.1 seconds

Hall Switch as a controller in the Hall scene

Responder

Link type

On Level

Ramp Rate

Retries

Hall MBR

native (I_DIMMER_ADV)

100%

0.1 seconds

1

Hall Light

native (I_DIMMER_ADV)

100%

0.1 seconds

1

Hall 3 Gang Right

native (I_DIMMER_ADV)

100%

0.1 seconds

1

Hall Motion-Sensor

default

n/a

n/a

n/a

LR Remote-C Hall

default

n/a

n/a

n/a

Some of the on-levels differ between the two directions. The responder table shows 35% because that is what the Hall scene itself sends to Hall Switch. The controller table shows 100% because that is what Hall Switch sends to its targets when it is pressed.

I only pulled the Hall scene. Hall Switch may also be a member of other groups or scenes, and I can check those if you tell me which ones you want to see.

Tom

  • Author

@tazman ,

Thank you very much for the details. I see the issue: in order to converse tokens, we separated diagnostics and common requests. So, all you need to do is to say something like
1. Diagnose the links in x
2. Go to diagnostics and get me the < device | iox > link table for x
3. Go to diagnostics and get me the PLM links

We're going to make this a little more seamless, but token count/cost is definitely a big concern.

With kind regards,
Michel

I have the eisy-ai plugin configured with the default json and an anthropic API key. The plugin is started and the log appears to show it is connected and running.

I can't find the interactive chat to start using the plugin.
I don't see anything in the eisy-ui nodes, nothing under Eisy-ui plugins, nothing in the eisy-UI menu.

What really helps me move forward are examples! some documentation showing a simple WORKING example of using eisy-ai for a few queries would really help. Example building a simple routine, example querying what the heating systems has been doing the last few days, example of what you would ask for to build a simple plugin. What kids of wording would you use to do these things?

Examples are so helpful!

Thanks

@photogeek54 if your config file worked you should see the stars near the logout where I put the red square in the picture. I have found with AI you just have to be as clear about what you are looking for as possible. When you want to try to create a plugin you have to switch to developer mode at the three dots near where you type your chat then tell it what you want to do.

eisy ai.png

Installed with latest, I have paid Gemini because I got a deal so using it but I get a timeout in the plugin log:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions
    yield
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 394, in handle_async_request
    resp = await self._pool.handle_async_request(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 256, in handle_async_request
    raise exc from None
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 236, in handle_async_request
    response = await connection.handle_async_request(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/connection.py", line 103, in handle_async_request
    return await self._connection.handle_async_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/http11.py", line 136, in handle_async_request
    raise exc
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/http11.py", line 106, in handle_async_request
    ) = await self._receive_response_headers(**kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/http11.py", line 177, in _receive_response_headers
    event = await self._receive_event(timeout=timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpcore/_async/http11.py", line 217, in _receive_event
    data = await self._network_stream.read(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpcore/_backends/anyio.py", line 32, in read
    with map_exceptions(exc_map):
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc) from exc
httpcore.ReadTimeout
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/var/eisyui/ns/plugin_8/.local/lib/python3.11/site-packages/unified/run_unified_runtime.py", line 1017, in handler
    await _run_once(runtime, message, eisy_ui_context, session_id=fallback_session_id)
  File "/var/eisyui/ns/plugin_8/.local/lib/python3.11/site-packages/unified/run_unified_runtime.py", line 575, in _run_once
    results = await runtime.handle_query(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/eisyui/ns/plugin_8/.local/lib/python3.11/site-packages/unified/runtime.py", line 403, in handle_query
    final_text, _ = await loop.run(
                    ^^^^^^^^^^^^^^^
  File "/var/eisyui/ns/plugin_8/.local/lib/python3.11/site-packages/unified/loop.py", line 197, in run
    raw_response = await self.llm_client.generate(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/eisyui/ns/plugin_8/.local/lib/python3.11/site-packages/unified/provider_dispatch_adapter.py", line 145, in generate
    return await client.generate(
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/var/eisyui/ns/plugin_8/.local/lib/python3.11/site-packages/unified/adapters/gemini_adapter.py", line 257, in generate
    response = await client.post(url, json=payload)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1859, in post
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 393, in handle_async_request
    with map_httpcore_exceptions():
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.ReadTimeout

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.