Jump to content
C4 Forums | Control4

bRename - Rename Devices via Embedded Web Server


Recommended Posts

Rename your Control4 devices without Composer… or programming!  Use bRename’s internal web server to view your devices, rename them and refresh your navigators.  Accessible from a standard browser or a touchscreen navigator.  Installers - perfect for clients who have changed the spelling of their children's names 3 times.  It was a "Bathroom", a "Vanity", a "Toilet" and now it’s a "Powder Room"?  Homeowners - change that "Bedroom" to an "Exercise Room”, then change it again and again and the next one again and again – all without involving your dealer.  It is your system, make it perfect.

https://bnet4solutions.com/brename/

Was $50, is $50, will be $50

bRename-2.jpg

Link to comment
Share on other sites


39 minutes ago, bnet said:

by my read, does not violate the licensing agreement

That does not give me confidence in trying it as a solution nor something I would recommend to others.

To me that reads as 'I hacked shit, but did not get explicit approval'.

 

Link to comment
Share on other sites

Ah, main difference being HE is still required. I could see that being approved and a solution I'd look at.

It just means the possibility and functions are there. I would still be very surprised about Control4 approving of this alternative.

Link to comment
Share on other sites

1 hour ago, Dunamivora said:

That does not give me confidence in trying it as a solution nor something I would recommend to others.

To me that reads as 'I hacked shit, but did not get explicit approval'.

 

yup - hacked.  so hacked i even added C4:RenameDevice() to their documentation while i was in there so everyone else can hack.  that's the actual API call if you want me to look it up for you.

Link to comment
Share on other sites

4 minutes ago, bnet said:

yup - hacked.  so hacked i even added C4:RenameDevice() to their documentation while i was in there so everyone else can hack.  that's the actual API call if you want me to look it up for you.

Hacked can also mean using an API in an unapproved method, right? Even if the API calls exist, they can be used without the API owner's permission (hack), then the API owner can shut it down.

 

I recall Control4 shutting down a 'hacked' MyQ driver recently.

Link to comment
Share on other sites

54 minutes ago, Dunamivora said:

I don't know that it is. The doc shows it hosts a web server on the controller.

Maybe I missed something, but that doesn't seem like something a driver should be doing.

hmm, where to start...

should i give an example of another driver listening on a server port? multi-x rf repeater, virtually any ip-based driver...

or should i list some C4 network APIs that are provided specifically create client/server interactions? C4:CreateNetworkConnection(), C4:GetNetworkConnections(), C4:ReceivedFromNetwork() or about 15 others

or should i copy/paste the server sockets example directly from C4's API documentation...

so many options

Link to comment
Share on other sites

But, since it's driver-based, I'm less concerned. I was initially concerned if my clients could just buy it and start running with it.

I'm not inclined to have another webserver running on the controller, so you don't have to listen to my feedback since I won't be using it.

Thanks for letting me know that you don't know if Control4 would approve of it though. That is interesting.

Link to comment
Share on other sites

2 hours ago, Dunamivora said:

Ah, main difference being HE is still required. I could see that being approved and a solution I'd look at.

It just means the possibility and functions are there. I would still be very surprised about Control4 approving of this alternative.

Its an official Control4 API.  As such no approval required (unless he is reverse engineering the Control4 broker communications or using the soon to be deprecated C4SOAP calls).

Having said that Control4 did tell us off a few years back for hosting web content on the controllers (even though it wasn't using a real web server - just a server socket) which is why we moved newer drivers to our online hosting services but still using extremely basic web based callbacks.

Would probably reach out about that part to get their blessing.

Link to comment
Share on other sites

4 minutes ago, alanchow said:

Having said that Control4 did tell us off a few years back for hosting web content on the controllers (even though it wasn't using a real web server - just a server socket) which is why we moved newer drivers to our online hosting services but still using extremely basic web based callbacks.

What do you mean by “hosting content?”  Were you storing files/data on the controller?  Just trying to understand what sort of things C4 would be concerned about.  (After all, implementing a driver that can field HTTP requests in and of itself seems right in line with why C4 provides the various network libs.)

Link to comment
Share on other sites

19 minutes ago, WholeHomeControl said:

What do you mean by “hosting content?”  Were you storing files/data on the controller?  Just trying to understand what sort of things C4 would be concerned about.  (After all, implementing a driver that can field HTTP requests in and of itself seems right in line with why C4 provides the various network libs.)

Here is a snippet from my conversations with Control4 a few years back.

Quote

Unfortunately, this does present a problem for us at it pertains to the HTML application itself. I understand your desire to use the controller to store HTML assets with the payload being delivered via the driver and the WebView URL. However, the only way we were able to get approval from our executives to expose this functionality was to stipulate that we wouldn’t allow the Controller to be used as a web server.

The bottom line on this is that perhaps we are a bit paranoid <grin>… but we think we have reason to be. It’s not hard to write HTML5 and JavaScript, but it’s also easy to do bad things. As a company, we are concerned with releasing a technology that allows for our controller to become overloaded with other processing tasks. A simple redirect page won’t cause that to happen. But building an HTML/JS application into a driver and turning the controller into a web server is a slippery slope – thus the conditions we’ve requested.

 Thus, we request (require?) that the HTML/JS application be hosted externally (device, nuc/WS, cloud, …) for applications delivered via the WebView experience button in the OS 2.10 timeframe.

This is what we evetually agreed was ok for us to do and the rough strategy of what we have been doing since (this is how our scheduler works, contact us, advanced custom buttons works)

Quote
  • HTML files hosted externally on a website.
  • WebView calls this url (http://www.chowmainsoft.com/energy)
  • This loads HTML5/Javascript whatever into the webview touchscreen.
  • HTML5/Javascript communicates to the hostname director (which the touchscreen translates to the local ip address) via websockets or callback and the driver then sends data to the HTML5/Javascript

 

Link to comment
Share on other sites

@alanchow -

thanks for info.  technically it checks (obviously, your doing it)

but it does not seem to pass my sanity check:

i'll add some profiling code but best guess is that 80%+ of the processing time on my main page is in/on C4:GetProjectItems() - even passing all the filter flags i can it is an expensive call.  i'm not serving rich content or streaming anything - just generated html with a style sheet and javascript.  there are no static pages or content i've stashed on the controller.  even the icons are served by ngnix, not the driver.  no matter where the html is generated, i will still need to call GetProjectItems so the above "negotiated settlement" is a work-around for a negligible portion of the processing load.  in fact, there is likely an extra step - encoding GetProjectItems's output before shipping to client - no one should have to deal with that xml directly.

so when the dust settles, i'll still have a process (same driver), listening on the controller (same port), serving content (maybe begins with a "{" instead of "<html>"), talking to a client (same browser, javascript/ws vs http get).  i haven't implemented it so i could be very wrong (am i?), but the before looks very similar to the after.

but, if this is where they have drawn the line, so be it - on to v2

Link to comment
Share on other sites

It seems from the C4 communication that Alan posted that C4’s objection to the architecture is not because it will cause problems in the simplest case, but rather because it presents a slippery slope to implementations that will cause problems. From that standpoint, it seems like C4 has taken a reasonable position on this. 

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.