[RELEASE] Fully Kiosk Browser Device and Piston


I wrote a DTH that was similar to a solution Fully Kiosk Browser Controller (DTH) but of course over time it merged into my own ‘thing’. My target was initially to just get FKB into a driver so I could change the brightness and screensaver timer then I figured out you could inject your own javascript into FKB and have it notify SmartThings of motion and more (photo capture).

Enter your IP address and it should be DHCP reserved. Note: I also found Fire HD tables do not handle WiFi channel jumping very well - so you might lock that too in the WAP.

The port is 2323 and set your own password.

The Allow Screen Off Command is used for Fire HD tablets since when they shut the screen down it is difficult to get back to FKB without jail breaking the device.

You can run the DTH on its own - but the real fun is when you add the webCoRE piston on a licensed version of FKB.

PISTON SPLIT: My first post had one large piston but users had problems with chunk size loading. I have split the piston into two with the first doing daylight and nighttime changes to the brightness and motion detection & the other the event piston.

PISTON 1 (Timer):

There are booleans to turn motion detection on during the day (myTurnMotionDetectionOnDay) and night (myTurnMotionDetectionOnNight) and screensaver timeouts and brightness values (0-255).

PISTON 2 (Events):

Select your Fully Kiosk Browser Device, save the piston then capture the External URL and go back and edit the piston saving that to the ‘myEndpoint’ variable.

INITIALIZE THE PISTON: Once you have the piston loaded you need to load the JavaScript by pressing the test button. This will execute piston and load the JS into FKB.

OR you can go back to the configuration screen of the DTH and ‘save’ the configuration again. That should trigger the touch and reload the the piston.

Once it starts working you should see the logs pulling back the report:

And the piston should update the Piston state with the ‘onUrlChange’ report back:

You can also see the JavaScript loaded correctly in the web browser of FKB:

Once the JavaScript injected triggers are working well it does function good as a motion sensor in a room during the day, not so much at night, but I also turn off the motion so it doesn’t wake people up without touching the pad.

You will see a lot more in the DTH about AWS. If you get this far with success we can talk about AWS and image uploads and using AWS Lambda, AWS API Gateway, and AWS S3. That is for AWS Rekognition to attempt facial matching. (you need a good working knowledge of AWS) and a different piston.

I really only tested on HD Fire tablets so your mileage my vary on Android.

One more thing, as of now - you should be running 1.39.3 or newer. There was a change in 1.35+ that put the WebView in FKB to pause/sleep and you need to turn off ‘Pause Webview while in Background’ if it was enabled. The setting is under 'Advanced Web Settings".

For those that are using Amazon Fire tables with the screensaver, it is best to update the brightness to 0 as shown below:

Updated: June 3, 2020: FKB 1.39.3 was released. updated instructions.
Updated: June 12, 2020: 9:00AM EDT - splitting the one piston in two.
Updated: July 5, 2020: Updated DTH to allow for screen brightness to be configured as ‘auto’.


Being able to finally use a tablet as an ST motion sensor and trigger photos alone is pretty Epic! This solution actually does so much it’s going to take a while to learn all it’s capabilities! Still playin’ :rofl:


Technically here are all the events that could be captured from the FKB device. I didn’t hook them all in this example, but you can add what you need in your own piston.


Would it not be possible to convert this habitat code to smartthings?


I would believe ‘Fully Kiosk Directory’ could be ported to ST and you could use the DTH from arnb since that was developed for both Habitat and ST.

It might be odd/difficult to have an Application (Fully Kiosk Director) and other Application (webCoRE) both controlling the same DTH.

I found you can do almost everything in webCoRE and avoid building special purpose Applications (like Fully Kiosk Directory). It does make the solution more in the advance user category, but allows the solution to be customized to specific requirements. That is what is cool about webCoRE, you can take other concepts from various pistons and tailor to your needs!


Love the capability of this DTH but it doesn’t play as nicely with the new smartthings app

You cant control brightness or view battery from the new smartthings app but have some idea’s that I need access to these for, any way we can get them working? Be nice to have all the options but I know smartthings is a pain in the …


As you say, the new app is a PITA. I do plan after the documentation is a little more comprehensible to give a pass on playing nice with the new app (before they shut down the groovy IDE). Hopefully they reverse that decision, but they seem determined to boil the ocean.


I fixed the DTH was not handling the screensaver brightness or brightness itself when set to ‘auto’. New version posted to the same github location.


If possible, can you pull in the alarm, chime, playsound and stopsound capabilities from the old(er) arnb DTH ala:

command “chime”
command “alarm”
command “playSound”,[“String”]
command “stopSound”

Looking at the Fully command set, they would (somewhat) correspond to:

// Sounds and volume

The chime and alarm profiles would be specific playsound entries.

Much regards for making this available if possible!


Will take a look at this over the weekend. I am pretty much Hubitat now, but keeping as much backward compatibility with SmartThings as I can. I don’t plan on working on the ST user interface until they get all their GUI troubles solved.

You will need to upgrade to FKB 1.41 - there was a lot of changes in the 1.40+ timeframe and the driver required a lot of work to support.


Thanks so much! Just finally upgraded from a v1 hub to a v3 hub and cannot even fathom now making any further changes to Hubitat.

I’m sure if ST continue jacking with the system, it may come to that…


@Jason_Meudt updated to include chime, alarm, playSound, stopSound. I only have Fire HD 8s so your mileage my vary on other devices. The Amazon device gives three audio channels (streams) for various sounds, however it looks like FKB only uses stream 9 so they are all defaulted in the preference section.

Gave it a quick test on SmartThings classic app and seems to work okay. This driver has a queue function that can get delayed sometimes. Needed to put a delay of 500ms with Hubitat because it is just too fast. With SmartThings it just attempts to immediately execute, but you still get the cloud thread execution delay. Let me know how it works for you and if tweaks are needed.


Will do… Headed out on yet another business trip so it may be a few days…

Thanks for updating!


I am unable to add your device handler to Smartthings. I receive an error message when copying in the latest code.


So far it appears to add the proper command structure.



@Jason_Meudt found there was a function case mismatch in the off command. Updated now on github. If you are calling off() to shut off the alarm, you will need this. If calling alarmOff() you are okay.


I was able to add the device handler in Hubitat but in Smartthings I get this error:

Org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was already associated with the session: [physicalgraph.device.CapabilityDeviceType#physicalgraph.device.CapabilityDeviceType : (unsaved)]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [physicalgraph.device.CapabilityDeviceType#physicalgraph.device.CapabilityDeviceType : (unsaved)]


Try commenting out

capability “ImageCapture”

And save. That is specific to Hubitat, but I don’t see your error.


Thanks that did it


Updated the DH with an else statement around the capability.