HTTPS PUT commands possible in Driver or RM?

I'm working on developing a driver or potentially a set of rules in RM to control a Vizio SmartCast display. The Display accepts HTTPS PUT strings sent the device IP on a specific port and I'm able to successfully control it from a Windows PC using cUrl. I can see in RM that there are options for HTTP GET and HTTP POST but nothing for PUT or any options for HTTPS. Does anyone know if Hubitat supports this functionality?

I've looked at the http momentary switch driver by @ogiewon and I believe it's very close to what I'm trying to accomplish but it uses standard HTTP.

Before I get too deep into trying to solve this, I'm looking to verify if what I'm trying to do is possible natively in Hubitat.

1 Like

Have you tried sending an HTTP PUT message yet? I would give it a try and see if it works first before just discounting it.

Fair enough. I was basing my assumption on the messages I was capturing in the Hubitat logs but I'll do some further testing. I'm new to this platform and haven't unraveled all the nuances yet.

Wondering if any progress was made on this. I'm in a similar situation, would like to do a PUT via HTTPS. Rule Machines seems to only support POST and the http momentary switch is so close but appears to only support HTTP. I need HTTPS for my particular requirements.

Have you tried it with HTTPS?

I'm not a groovy expert, but it doesn't look like there is anything specifically hardcording http v.s. https in that excellent Momentary driver..

I'd give it a go and see what kind of response you get

If you're writing a driver or app, look at this API:

https://docs.hubitat.com/index.php?title=Common_Methods_Object#httpPut

The URI can be specified as either http or https. You might want to use the ignoreSSLIssues flag with your request if Hubitat isn't able to verify the certificate on the remote host that you are connecting to.

2 Likes

HPM has a great example of this on line 3016.

		def result = false
		try
		{
			httpPost(
				[
					uri: "http://127.0.0.1:8080",
					path: "/login",
					query: 
					[
						loginRedirect: "/"
					],
					body:
					[
						username: hpmUsername,
						password: hpmPassword,
						submit: "Login"
					],
					textParser: true,
					ignoreSSLIssues: true
				]
			)
			{ resp ->
			log.debug resp.data?.text
				if (resp.data?.text?.contains("The login information you supplied was incorrect."))
					result = false
				else {
					state.cookie = resp?.headers?.'Set-Cookie'?.split(';')?.getAt(0)
					result = true
				}
			}
		}
		catch (e)
		{
			log.error "Error logging in: ${e}"
			result = false
		}
2 Likes

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.