I’m creating a new, dedicated topic for my Edgebridge application, which was originally discussed in this topic:
Edgebridge is an application you run on an always-on computer on your LAN that provides two useful functions:
Gives you the ability to send HTTP(s) messages to endpoints outside your LAN (similar to a Proxy)
Normally, Edge drivers can only communicate with endpoints on your LAN
Initiate these requests from either my webrequestor (github | topic) driver or from a custom Edge driver
Use cases: need to retrieve info from any internet endpoint that provides a RESTful API, e.g. SmartThings API, weather data, etc.
Provides a simple mechanism for LAN-based applications and devices to integrate with Edge drivers.
Use cases: motion notification from external sources such as Blue Iris, device monitors such as phone presence trackers or pingers, generic triggers from applications or devices
Edge device drivers are available for easy integration for motion, presence, and basic triggers
Edgebridge supports both http and https request forwarding.
Please see my readme file on github for complete details.
Today I’m announcing an update to edgebridge with the following new features:
standardized logging output with control of console vs file logging
configurable timeout for forwarded requests
forwarding of request body data now supported in POST and GET requests
Optional SmartThings Edge device to monitor edgebridge online/offline status
If you are a current user of edgebridge, you can download the new files from the github repository when you are ready. Be sure to update your edgebridge.cfg file, as it can contain new options.
Please note that the updated edgebridge application is required to use the optional SmartThings edgebridge online/offline monitoring device.
I have also added instructions to the readme file for setting up autoloading at boot time on a Raspberry Pi.
Yeah I saw this early on and considered it, but I really don’t want users to have to enter in IP address, so I ended up using SSDP for discovery, which then auto handles the IP.
I definitely share the sentiment of feeling like there should be a way to consolidate this since there is going to be a ton of overlap in LAN drivers that are all basically doing the same thing, but I’m just not sure things are set up well to really do that cleanly.
I’ve heard that the ST team is planning to release SSDP in the driver SDK at some point, but you can’t really wait on it. May allow some cleanup down the road.
FYI, my UPnP driver and library provides full UPnP specification support on Lua (including SSDP) for anyone wanting to write a driver that uses it. It certainly is an option for developers, but not a solution for end-users.
Edgebridge provides a much simpler solution for anyone that can send an http request to integrate with SmartThings. There are lots of applications that provide this option (Blue Iris, for example), so this fits the need of non-programmers.
Another alternative, of course is MQTT, which I have available as well.
Due to a bug in the most recent edgebridge app, I’ve uploaded fresh files for edgebridge.py, edgebridge.exe and edgebridge4pi.
The issue this fixes is seen when you are sending a GET request from a device application to a hub driver, through edgebridge. In certain cases this may cause an error to be logged by edgebridge and the Edge driver not receiving the message.
To update your edgebridge server app, simply download the applicable file from the github repository, replacing the one on your computer, and stop and restart the edgebridge server app.
Thank you to @Puzzling for identifying this problem.
Nice driver! Can this be used to dynamically populate a message that contains device information (switch state, temperature reading, etc…)? I’m trying to migrate from WebCore, another fantastic app, and send data to Google Sheets from WebCore and am looking for a replacement. On a side note, I can’t paste into the Web Request fields on my Android phone, am I the only one?
There is very little capability in standard SmartThings that would allow you to build a dynamically populated message like that. You may need to look at something like Action Tiles or Node Red. Otherwise you would need a SmartApp and a place to run it.
@TAustin, is there some peculiar reason why I can not have your EdgeBridge running on the same machine as the “LAN Device Address” defined in the LAN Motion Settings?
I ask because I can change the LAN Device Address to any valid IP that is NOT the IP of the EdgeBridge:
Thu Oct 13 17:20:12 2022 **********************************************************************************
Thu Oct 13 17:20:12 2022 DELETE request received from: ('192.168.2.199', 57312)
Thu Oct 13 17:20:12 2022 Endpoint: /api/register?devaddr=192.168.2.185&edgeid=xxxxxxxx-32e4-4882-8d38-45a96ead543d&hubaddr=192.168.2.199:56221
Thu Oct 13 17:20:12 2022 Request to remove registration ('192.168.2.185', None)
Thu Oct 13 17:20:12 2022 Registration 0 DELETED
Thu Oct 13 17:20:12 2022 Response sent
Thu Oct 13 17:20:12 2022 Updated registrations: []
Thu Oct 13 17:20:12 2022 **********************************************************************************
Thu Oct 13 17:20:12 2022 POST request received from: ('192.168.2.199', 57314)
Thu Oct 13 17:20:12 2022 Endpoint: /api/register?devaddr=192.168.2.186&edgeid=xxxxxxxx-32e4-4882-8d38-45a96ead543d&hubaddr=192.168.2.199:56221
Thu Oct 13 17:20:12 2022 Request to register device at ('192.168.2.186', None)
Thu Oct 13 17:20:12 2022 Registration record ADDED
Thu Oct 13 17:20:12 2022 Response sent
Thu Oct 13 17:20:12 2022 Updated registrations: [{'devaddr': ('192.168.2.186', None), 'edgeid': 'xxxxxxxx-32e4-4882-8d38-45a96ead543d', 'hubaddr': ('192.168.2.199', 56221)}]
Thu Oct 13 17:20:26 2022 **********************************************************************************
Thu Oct 13 17:20:26 2022 DELETE request received from: ('192.168.2.199', 57318)
Thu Oct 13 17:20:26 2022 Endpoint: /api/register?devaddr=192.168.2.186&edgeid=xxxxxxxx-32e4-4882-8d38-45a96ead543d&hubaddr=192.168.2.199:56221
Thu Oct 13 17:20:26 2022 Request to remove registration ('192.168.2.186', None)
Thu Oct 13 17:20:26 2022 Registration 0 DELETED
Thu Oct 13 17:20:26 2022 Response sent
Thu Oct 13 17:20:26 2022 Updated registrations: []
That last update (the empty ) had the IP Address as 192.168.2.182, which is the same IP as the EdgeBridge and BI.
Am I missing something?
Thank you for your help and these awesome services/drivers!
p.s.
I am using LAN Motion Version 2022-08-24T01:24:40.024036401 and the EdgeBridge.exe from GitHub posted 5 days ago.
p.p.s
This also results in the .registrations file being 0 bytes.
There’s no problem configuring a device IP address to be the same address as the bridge server, so that’s not the problem. You can certainly have a device application running on the same machine.
Not sure why your registration was deleted, created, then deleted again. I would suggest starting fresh and creating another LAN Motion device (use the button at the bottom of the Controls screen, probably with an ‘Untitled’ label), then delete your old one, then configure the new one. Configure the bridge address LAST. Watch the edgebridge log to ensure the registration was successfully made as soon as you save the bridge address.
Also please note:
port number is optional for the the device address
port number is mandatory for the bridge server address