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

The webserver on your ESP8266 would need to be able to accept an additional parameter to invoke the command you want. Or it would need to provide alternate endpoints - one for open, and one for close. Right now it’s just displaying a simple web page with buttons, expecting the user to press one of them from a browser. The web page is in fact being returned to webrequestor, thus the text you see in the response data field. So you know it’s working, but it’s returning a web page which you really can’t do anything with in webrequestor.

Is it possible your webserver accepts something like this?

GET http://192.168.4.88:80/open

Or…

GET http://192.168.4.88:80?cmd=open

Hi @TAustin,

Yes, the url is http://192.168.4.88/close (or open).

Forgive my ignorance…i cant use those urls to have WebRequestor control it?

Edit: The request works when i add the open or close to the url as you state.

How do i use this as a device? Or am i unable to?

Edit: Ive managed to set a routing to open and close the blinds at 8am/sunset…thats almost everything I require.

The only thing i would also like, is to use the device via Alexa.

Is that possible?

Again, thanks for developing this.

Many thanks.

K.

In another thread, Graham suggested this thread to possibly solve my problem with Photon Particle and smartthings (ST). I made a device that uses a Particle to drive a servo that opens a remote HVAC vent in my garage. It used to show up as either on or off in ST. Now it only shows “connected” in ST and will not control the device. The driver is now shown as “LAN Thing” and I used ti have it set up with a handler in the old ST. It worked for 2 years flawlessly. unfortunately I am not very knowledgeable about how the various software components work together so cannot determine if your driver is a good solution path for my issues. Searched Particle Photon and edge drivers and came up empty handed. Any help is greatly appreciated as the HVAC device I designed was an awesome help in my garage and is now basically useless.

Glad you got things working.

For Alexa integration, you’ll need to do it through the creation of some automations, since you won’t be able to control webrequestor directly from Alexa. One way to do it is to create a virtual switch that you can control via Alexa. Then create a couple automation routines: one to execute the specific webrequest for open when the switch is ‘on’, and one to execute the specific webrequest for close when the switch is ‘off’. You’ll find that when you define actions in automation routines for a webrequestor device, you’ll be able to choose which ‘slot’ number to execute. The downside of this setup is having to use the terms ‘on’ and ‘off’ with Alexa instead of ‘open’ or ‘close’. There might an alternative to this with using a virtual blind device to address that, which I think can be controlled from Alexa.

A more stream-lined way to do the automations would to use Rules, where you can actually specify the webrequest itself within the rule. See the readme file for more info and an example.

1 Like

Thanks @TAustin,

In Alexa, you can get past the on / off by setting a trigger for the exact phrase

‘Alexa, open blinds’.

Im not sure how to create a virtual device in ST now that the groovy platform has gone.

Ill do another search for that now.

Thanks again.

K.

There are 4 ways to create virtual devices:

More info in an FAQ: Creating Virtual Devices with the new architecture (Without the IDE) (2023)

2 Likes

Thanks @h0ckeysk8er,

Ive just been to the latter, also by @TAustin, and managed to get it working 100%.

Thanks guys.

K.

1 Like

Hi again,

I have another blind in the living room, ive tried to add that as web request #3 and #4, but when i select it, it says not configured.

Its the same setup just slightly different IP.

How can i fix that?

Edit: even when I input the same IP, i get the same 'Not Configured ’ message.

Many thanks.

K.

That’s usually because something is wrong with the format of the request string. Double check it for correct syntax or post screenshot here so I can take a look.

Hi @TAustin,

Thanks for responding.

The request strings are identical, I even tried using the same IP (The original IP is my bedroom blinds).


I did rename the device to ‘Bedroom Blinds Hardware’, so I could differentiate between this and the virtual device.

Any idea?

Many thanks.

K.

I think Andriod app is showing things slightly different from what I see in my iOS-based app. Can you check the extra fields you aren’t using like Body, More Body, and Headers for both request #1 and #2, and make sure they contain ‘–’ (double dashes)? I’m seeing “Custom trigger=” in your body field - is that something you typed?

Hi @TAustin,

The CustomTrigger= was something from the original project, I’ve now removed that and everything else.


The first 2 #'s still work, but the next 2 don’t.

Many thanks.

K.

You’re missing a colon between GET and http in #3 and #4.

Awesome, thanks for pointing that out! It works.
Sorry for the trouble @TAustin and thanks both.

K.

2 Likes

Do you have any working drivers for yamaha receivers?

I don’t have a Yamaha receiver and don’t author any drivers. I was suggesting that the person who wrote Rules to use with this driver to control their Yamaha amp publish those Rules for others to use.

1 Like

Hi - a have installed the Web Requestor and it appears to be working OK with my SmartThings hub. I am trying to replace a SharpTools routine to play a sound file on a tablet running ActionTiles. The SharpTools string is:
Arguement 1: playSound
Arguement 2: {“url”:“file:///sdcard/download/rooster.mp3”}

I assume I would need to use a web Requestor POST command but how do I structure the URL? The IP is http://192.168.1.xxx:2423

Paul

You may need to do a bit more digging to find the expected HTML request format, as that doesn’t really tell you anything specific. You need to know how those two arguments are expected. Typically they are going to either provided as arguments in the HTML request something like this:

http://192.168.1.xxx:2423/?argument1=playSound&argument2=rooster.mp3

Or, the arguments are provided in JSON format as part of the body of the request like this:

{"argument1": "playSound", "argument2": {"url": "file:///sdcard/download/rooster.mp3"}}

See what more you can find out and I can help to configure your webrequestor request.

I have tried several combinations of the above suggestions by Todd to get my Fully Kiosk Browser driven tablets to play a sound. All without luck. Once again this works ok with SharpTools (and webCore before that) so I know that the tablet is configured correctly.

I have tried:
post://http://192.168.1.xxx:2323/?arguement1=playSound&arguement2=rooster.mp3&password=my password

I have also tried it with https and without the password. Has anyone here managed to get the Web Requestor Post command to work with Fully to play a sound? Or the Post command to execute any Fully Kiosk Browser command like to turn the screen on?

You’ve got some extra characters in there. Should be:

post:http://192.168.1.xxx:2323/?arguement1=playSound&arguement2=rooster.mp3&password=my password

Also, “arguement” is normally spelled “argument”

Are you able to successfully get this to work from a browser?