[ST Edge] Web Requestor: a driver to issue local POST and GET HTTP requests

Never mind, figured it out. :crazy_face:

Is Web Requestor able to use a double press of a switch as the condition for kicking off a web request?

You’d need to use an automation that triggers the web request based on a double press of a button.

Hi, should I be seeing the double press of a button as an option? I only see on or off options for my switches when creating an automation.

The device you are using as a trigger would have to have a button (not a switch) that supports double-presses. What are you using?

Hi @TAustin, I created an ‘Alarm’ with the HTTP Device Creator but I keep finding that periodically when opening the ST APP it doesnt have its little round button to switch it on and off, when this happens, it also states a network error when clicked, the only way to get it working again is to leave it a while, or long press, edit, and change its name slightly. I am also finding when I can get into it, sometimes nothing is displayed under the ‘Alarm type’ area, I get the swirling icon quite a lot after setting any of the alarm types and frequently get a timeout, it does however send the command before its times out. The device its talking to on the network, is an ESP8266, and is very responsive, I can issue command after command to it using postman and it never fails which leads me to think its not the ESP… Any ideas what may cause this?

Just coming by to say how much I love this. I modified some more yesterday and it’s great.

My use case is, I have an alarm system setup in Sharptools through rules, when the alarm triggers, it triggers the web requestor to my Blue Iris server to trigger my camera’s, which in turn sends a Pushover notification with pictures back to my phone and desktop.

3 Likes

I’m afraid these are glitches in the app or the platform. Do you have iOS or Android? They seem to happen with the iOS app more often. I’ve been noticing some strange behavior in my app over the past several days as well, including not displaying the right values on the dashboard and controls missing like you reported. The app has even been completely crashing and exiting on occasion. It also seem impossible to use the app again after my phone goes to sleep.

These seem to be either app or platform problems, so all I can offer is to keep an eye on it and if you think it is specific to this driver and it keeps happening, then our next step would be to get some driver logs using the CLI.

1 Like

@TAustin
Thank you for making this driver. It was alot trial and error but I kinda got it working. Im using it to get data from my netatmo weatherstation. The reponse body is alot of data, temperature, co2, humidity etc. Is it possible to post that data to a smartthings virtual device? Right now I’m using tasker for this with variables and the smarthings api.

I have a weather driver (info here) where it might be possible to add support for your weather station, as long as it would be a solution of interest to others as well.

With Webrequestor, right now you can extract one value from JSON response data and have it displayed on the device details screen. From there, you could build automations to use that value. But since you have multiple values you are trying to get, it would probably be unreasonably complex to cobble something together.

Otherwise you probably need a custom driver to accomplish what you want; I could possibly look at doing one for you; DM me if you are interested in going down that path.

Hi @RebelMagpie, how did you get started with extracting Fronius data? I’ve got a very very basic understanding of what im doing but just can’t figure it out. Cheers

Hi Ash,

If your inverter is connected to your wifi, and you know the IP address, there are a few commands you can send to it directly.

http://192.168.0.xxx/solar_api/v1/GetPowerFlowRealtimeData.fcgi
http://192.168.0.xxx/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System
http://192.168.0.xxx/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System

The first one gives the most pertinent info.

You can type these commands directly in the address bar of your browser to see the info, or put these calls into an HTTP GET request with this driver here and extract the relevant keys.

@TAustin actually built me a driver that queries the inverter every 30 seconds and returns similar info you find in the Solar.Web app.

Hi Mike,
Thanks for that, I’ll message @TAustin about the driver he built for you. Then hopefully I’ll be able to run devices based solar output. Thanks for your help too.
Ash

1 Like

Ash, I found the complete spec of the Fronius API calls. If you’re interested to see what else you could do, have a look here Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

@TAustin - first of all, thank you so much for contributing your time to make these drivers - you’ve personally saved me many hours and many headaches with your drivers! :slight_smile:

I had a question, rather a potential feature request - I’m not sure it’s possible but wanted to ask. I use your web requester driver to send various commands to specific devices. I typically create a new requester device for each smart device I want to control. So, in my use-case I have a number of shelly 1 devices that can accept various commands. So my pre-configured web requests will always ping the same device IP with the only difference being the actual command which is just a parameter at the end of the IP. For each of these Shelly devices I essentially have 16 pre-configured commands/requests. The problem I have faced before is that when I need to replace the device (e.g. the Shelly breaks) I am forced (through laziness) to ensure my new Shelly device receives the same static IP the previous device had so that I don’t need to manually change the pre-configured requests in the driver 16 times.

My question/feature-request: is there a way, within Web Requester device settings to input the device IP. Then, subsequent pre-configured requests could just be the method and the parameter(command)? This would make it easier to update sets of commands by just editing the IP once. I realize my use-case may be limited.

Thanks again for all you do!

Hello -

The optimal solution would be to use hostnames instead of IP addresses, but unfortunately that is not supported in the Edge environment.

Are you using Rules to build your requests on the fly? I’m trying to better understand how you have things set up.

In case you weren’t aware, I have an Edge driver specifically for Shelly devices. There is a driver specifically for Gen1 devices, and a separate one for Gen2 devices. The Gen1 driver requires you to configure the device IP address, so it may not necessarily make things much easier when IP address change due to device swap-out. The Gen2 driver, however, auto-discovers devices, so that issue is addressed.

Hello-

The ST Edge Web Requestor is a driver that enables local devices running on the ST Edge platform to issue POST and GET HTTP requests. This driver allows these devices to interact with remote web services and retrieve or send data over HTTP.

With the Web Requestor driver, developers can implement various use cases such as:

Data retrieval: Devices can issue GET requests to fetch data from remote servers or APIs. This allows devices to retrieve information such as weather data, stock prices, or any other data available through web services.

Data submission: Devices can send data to remote servers or APIs by issuing POST requests. This enables devices to push sensor readings, device status updates, or any other relevant data to a remote server for processing or storage.

Integration with web services: The Web Requestor driver allows devices to integrate with various web services and leverage their capabilities. For example, a device can interact with a cloud-based service to perform complex computations or access additional functionality.

By providing the ability to issue local POST and GET requests, the Web Requestor driver enhances the capabilities of devices running on the ST Edge platform and enables seamless integration with external systems and services.

3 Likes

Nice write-up. Thanks for posting!

Apologies for the delayed response here - and thanks for your feedback.

While I am using Shelly devices, I have them flashed with Tasmota firmware as I need some specific functionality (Tasmota can send a “blink” command for the device to process/perform via http GET request).

Context:
I’m using the Shelly device to control the color of a pool light. The pool light operates in such a way that to change to a specific color you need to power cycle the light a certain number of times. So, for example, blue will be 10 on-off cycles, green would be 11, white 12 etc.
So, to control the Shelly I create a new device via the web requester master in Smartthings. Within this newly created device settings I manually enter into Web Request 1 the GET request to the Shelly IP address with the relevant tasmota parameters to switch the pool light on. In Web Request 2 I enter in the string to switch of, and then in request 3 - 14 I enter all the various requests for the individual colors.
So, in a nutshell I have 16 pre-configured web requests in this device, each of which require the IP address of the Shelly. If this Shelly needs to be replaced, to avoid having to manually edit each of those requests with the new IP number of the new Shelly, I basically force the new device to use the same IP address as the previous Shelly.
Hope this all makes sense.
So - my question was along the lines if in the web requester device setting, there wouldn’t be a way to define the IP address up front, so that all the subsequent web requests already pull from this field rather than having to enter it for all the request fields manually.

Thanks again for your feedback,
Tariq

I love this driver, thank you so much for sharing it.

Has anyone figuted a way to trigger an http command on a scheduled basis? Effectively I would like to poll an http service and do something with the response…
Tnx!