Fully Kiosk Browser Management Skill
Complete management and configuration of Fully Kiosk Browser deployments across Android devices including Amazon Fire tablets, Samsung tablets, and wall-mounted panels.
Overview
Fully Kiosk Browser is an Android app that transforms tablets into secure kiosk displays, digital signage, or smart home dashboards. This skill provides:
- REST API Control: 70+ commands for device management
- Fleet Management: Multi-device batch operations
- Fully Cloud Integration: Centralized cloud management
- Home Assistant Integration: Native HA integration + MQTT
- Configuration Templates: Pre-built configs for common use cases
Quick Reference
REST API Base URL
http://<device-ip>:2323/?cmd=<command>&password=<password>&type=json
Essential Commands
| Command | Description |
|---------|-------------|
| deviceInfo | Get device status, battery, storage |
| screenOn / screenOff | Control display |
| loadStartUrl | Load configured home page |
| loadUrl&url=<url> | Navigate to specific URL |
| startScreensaver / stopScreensaver | Screensaver control |
| textToSpeech&text=<text> | Speak text aloud |
| playSound&url=<url> | Play audio file |
| setStringSetting&key=<key>&value=<val> | Change setting |
| listSettings | Get all current settings |
Device Management
Get Device Information
# Basic device info
curl "http://192.168.1.100:2323/?cmd=deviceInfo&type=json&password=YOUR_PASSWORD"
# Response includes:
# - deviceID, deviceName, deviceModel
# - batteryLevel, isPlugged
# - screenOn, screenBrightness
# - currentTabUrl, wifiSSID
# - ip4, mac, appVersion
Screen Control
# Turn screen on
curl "http://192.168.1.100:2323/?cmd=screenOn&password=YOUR_PASSWORD"
# Turn screen off
curl "http://192.168.1.100:2323/?cmd=screenOff&password=YOUR_PASSWORD"
# Set brightness (0-255)
curl "http://192.168.1.100:2323/?cmd=setStringSetting&key=screenBrightness&value=128&password=YOUR_PASSWORD"
# Force device sleep
curl "http://192.168.1.100:2323/?cmd=forceSleep&password=YOUR_PASSWORD"
# Trigger motion (simulate motion detection)
curl "http://192.168.1.100:2323/?cmd=triggerMotion&password=YOUR_PASSWORD"
URL Navigation
# Load home URL
curl "http://192.168.1.100:2323/?cmd=loadStartUrl&password=YOUR_PASSWORD"
# Load specific URL
curl "http://192.168.1.100:2323/?cmd=loadUrl&url=http://homeassistant.local:8123&password=YOUR_PASSWORD"
# Open in new tab
curl "http://192.168.1.100:2323/?cmd=loadUrl&url=http://example.com&newtab=true&focus=true&password=YOUR_PASSWORD"
# Switch to tab by index
curl "http://192.168.1.100:2323/?cmd=focusTab&tab=0&password=YOUR_PASSWORD"
# Refresh current tab
curl "http://192.168.1.100:2323/?cmd=refreshTab&password=YOUR_PASSWORD"
# Close tab
curl "http://192.168.1.100:2323/?cmd=closeTab&tab=1&password=YOUR_PASSWORD"
Audio & Text-to-Speech
# Text to speech
curl "http://192.168.1.100:2323/?cmd=textToSpeech&text=Doorbell%20rang&password=YOUR_PASSWORD"
# TTS with locale
curl "http://192.168.1.100:2323/?cmd=textToSpeech&text=Hello&locale=en_US&password=YOUR_PASSWORD"
# Play sound file
curl "http://192.168.1.100:2323/?cmd=playSound&url=http://server/doorbell.mp3&password=YOUR_PASSWORD"
# Play looping sound
curl "http://192.168.1.100:2323/?cmd=playSound&url=http://server/alarm.mp3&loop=true&password=YOUR_PASSWORD"
# Stop sound
curl "http://192.168.1.100:2323/?cmd=stopSound&password=YOUR_PASSWORD"
# Set volume (0-100, stream 3=Music)
curl "http://192.168.1.100:2323/?cmd=setAudioVolume&level=50&stream=3&password=YOUR_PASSWORD"
Audio Stream Codes:
- 0: Voice Call
- 1: System
- 2: Ring
- 3: Music (most common)
- 4: Alarm
- 5: Notification
- 9: TTS
- 10: Accessibility
Video Playback
# Play video
curl "http://192.168.1.100:2323/?cmd=playVideo&url=http://server/video.mp4&loop=0&showControls=1&exitOnTouch=1&password=YOUR_PASSWORD"
# Stop video
curl "http://192.168.1.100:2323/?cmd=stopVideo&password=YOUR_PASSWORD"
Screensaver Control
# Start screensaver
curl "http://192.168.1.100:2323/?cmd=startScreensaver&password=YOUR_PASSWORD"
# Stop screensaver
curl "http://192.168.1.100:2323/?cmd=stopScreensaver&password=YOUR_PASSWORD"
# Start Android Daydream
curl "http://192.168.1.100:2323/?cmd=startDaydream&password=YOUR_PASSWORD"
Kiosk Mode
# Lock kiosk (enable kiosk mode)
curl "http://192.168.1.100:2323/?cmd=lockKiosk&password=YOUR_PASSWORD"
# Unlock kiosk
curl "http://192.168.1.100:2323/?cmd=unlockKiosk&password=YOUR_PASSWORD"
# Enable maintenance/locked mode
curl "http://192.168.1.100:2323/?cmd=enableLockedMode&password=YOUR_PASSWORD"
# Display overlay message
curl "http://192.168.1.100:2323/?cmd=setOverlayMessage&text=Maintenance%20Mode&password=YOUR_PASSWORD"
Application Management
# Bring Fully to foreground
curl "http://192.168.1.100:2323/?cmd=toForeground&password=YOUR_PASSWORD"
# Send to background
curl "http://192.168.1.100:2323/?cmd=toBackground&password=YOUR_PASSWORD"
# Start another app
curl "http://192.168.1.100:2323/?cmd=startApplication&package=com.spotify.music&password=YOUR_PASSWORD"
# Restart Fully
curl "http://192.168.1.100:2323/?cmd=restartApp&password=YOUR_PASSWORD"
# Exit Fully
curl "http://192.168.1.100:2323/?cmd=exitApp&password=YOUR_PASSWORD"
Cache & Storage
# Clear browser cache
curl "http://192.168.1.100:2323/?cmd=clearCache&password=YOUR_PASSWORD"
# Clear web storage (localStorage, sessionStorage)
curl "http://192.168.1.100:2323/?cmd=clearWebstorage&password=YOUR_PASSWORD"
# Clear cookies
curl "http://192.168.1.100:2323/?cmd=clearCookies&password=YOUR_PASSWORD"
# Reset WebView completely
curl "http://192.168.1.100:2323/?cmd=resetWebview&password=YOUR_PASSWORD"
Screenshots & Camera
# Get screenshot (returns PNG)
curl "http://192.168.1.100:2323/?cmd=getScreenshot&password=YOUR_PASSWORD" > screenshot.png
# Get camera shot (requires motion detection enabled)
curl "http://192.168.1.100:2323/?cmd=getCamshot&password=YOUR_PASSWORD" > camshot.jpg
Settings Management
Reading Settings
# List ALL settings (300+ keys)
curl "http://192.168.1.100:2323/?cmd=listSettings&type=json&password=YOUR_PASSWORD"
Writing Settings
# Set string setting
curl "http://192.168.1.100:2323/?cmd=setStringSetting&key=startURL&value=http://homeassistant.local:8123&password=YOUR_PASSWORD"
# Set boolean setting
curl "http://192.168.1.100:2323/?cmd=setBooleanSetting&key=kioskMode&value=true&password=YOUR_PASSWORD"
# Import settings from JSON URL
curl "http://192.168.1.100:2323/?cmd=importSettingsFile&url=http://server/config.json&password=YOUR_PASSWORD"
Common Setting Keys
Display Settings:
startURL- Home page URLscreenBrightness- Brightness (0-255)screenOffTimer- Minutes until screen offscreensaverTimer- Minutes until screensaverscreenOrientation- 0=auto, 1=portrait, 2=landscape, 3=reverse-landscape
Kiosk Settings:
kioskMode- Enable kiosk mode (boolean)kioskModePin- PIN to exit kioskkioskExitGesture- Exit gesture typelockSafeMode- Prevent safe mode boot
Motion Detection:
motionDetection- Enable motion detectionmotionSensitivity- Sensitivity 0-100screenOnOnMotion- Turn screen on when motion detectedstopScreensaverOnMotion- Stop screensaver on motion
Remote Admin:
remoteAdmin- Enable remote adminremoteAdminPassword- Admin passwordremoteAdminFromLocalNetwork- Allow local network only
Web Settings:
enableZoom- Allow pinch zoomdesktopMode- Request desktop siteuserAgent- Custom user agent string
Fleet Management
Python Multi-Device Manager
Use the included fully_manager.py script for fleet operations:
# Screen on all devices
python fully_manager.py --action screen_on --all
# Set brightness on specific devices
python fully_manager.py --action set_brightness --value 150 --devices kitchen,bedroom
# Push URL to all devices
python fully_manager.py --action load_url --url "http://ha.local:8123/dashboard" --all
# Get fleet status
python fully_manager.py --action status --all --output json
# TTS announcement to all devices
python fully_manager.py --action tts --text "Dinner is ready" --all
Device Inventory Configuration
Create devices.yaml for your fleet:
# ~/.fully-kiosk/devices.yaml
devices:
kitchen-tablet:
host: 192.168.1.100
password: "your_password"
location: Kitchen
type: fire-hd-10
use_case: dashboard
living-room-panel:
host: 192.168.1.101
password: "your_password"
location: Living Room
type: android-tablet
use_case: dashboard
garage-signage:
host: 192.168.1.102
password: "your_password"
location: Garage
type: fire-hd-8
use_case: signage
guest-kiosk:
host: 192.168.1.103
password: "your_password"
location: Guest Room
type: samsung-tab
use_case: kiosk
groups:
dashboards: [kitchen-tablet, living-room-panel]
all-fire: [kitchen-tablet, garage-signage]
public: [guest-kiosk, garage-signage]
Fully Cloud Integration
Setup
- Create account at https://cloud.fully-kiosk.com
- In device: Settings > Other Settings > Fully Cloud
- Enable "Use Fully Cloud" and authenticate
Cloud Features
- Remote Admin: Access any device from anywhere
- Push Configuration: Deploy settings to multiple devices
- Device Groups: Organize devices into manageable groups
- Alerts: Email/Pushbullet notifications for offline, low battery, unplugged
- Scheduled Actions: Time-based command execution
- App Management: Silent APK installation (with Enterprise enrollment)
Export/Import Configuration
From Fully Cloud Remote Admin:
- Open device's Remote Admin
- Go to Export/Import menu
- Export current settings as JSON
- Import JSON to other devices or save as template
Home Assistant Integration
Native Integration Setup
-
Enable Remote Admin on device:
- Settings > Remote Administration (PLUS)
- Enable Remote Admin
- Set password
- Enable "Local Network Access"
-
Add Integration in HA:
- Settings > Devices & Services > Add Integration
- Search "Fully Kiosk Browser"
- Enter device IP and password
Available HA Entities
Sensors:
sensor.<device>_battery- Battery levelsensor.<device>_storage- Free storagesensor.<device>_memory- Free RAMsensor.<device>_page- Current URL
Binary Sensors:
binary_sensor.<device>_plugged_in- Charging statusbinary_sensor.<device>_kiosk_mode- Kiosk enabled
Switches:
switch.<device>_screensaver- Toggle screensaverswitch.<device>_maintenance_mode- Maintenance modeswitch.<device>_kiosk_lock- Lock/unlock kioskswitch.<device>_motion_detection- Motion detection
Buttons:
button.<device>_restart- Restart appbutton.<device>_reload- Reload pagebutton.<device>_to_foreground- Bring to front
Numbers:
number.<device>_brightness- Screen brightnessnumber.<device>_volume- Media volume
Camera:
camera.<device>_screenshot- Live screenshot
HA Services
# Load URL
service: fully_kiosk.load_url
target:
device_id: <device_id>
data:
url: "http://homeassistant.local:8123/dashboard"
# Set configuration
service: fully_kiosk.set_config
target:
device_id: <device_id>
data:
key: "screenBrightness"
value: "128"
# Start application
service: fully_kiosk.start_application
target:
device_id: <device_id>
data:
application: "com.spotify.music"
HA Automation Examples
Motion-Activated Screen:
automation:
- alias: "Kitchen Tablet - Motion Screen On"
trigger:
- platform: state
entity_id: binary_sensor.kitchen_motion
to: "on"
action:
- service: switch.turn_off
target:
entity_id: switch.kitchen_tablet_screensaver
- service: light.turn_on
target:
entity_id: light.kitchen_tablet_screen
data:
brightness: 200
- alias: "Kitchen Tablet - Screen Off After Idle"
trigger:
- platform: state
entity_id: binary_sensor.kitchen_motion
to: "off"
for:
minutes: 5
action:
- service: switch.turn_on
target:
entity_id: switch.kitchen_tablet_screensaver
Doorbell TTS Announcement:
automation:
- alias: "Doorbell - Announce on All Tablets"
trigger:
- platform: state
entity_id: binary_sensor.front_door_doorbell
to: "on"
action:
- service: rest_command.fully_tts
data:
text: "Someone is at the front door"
device: kitchen_tablet
- service: rest_command.fully_tts
data:
text: "Someone is at the front door"
device: living_room_tablet
REST Commands in HA:
# configuration.yaml
rest_command:
fully_tts:
url: "http://{{ device }}.local:2323/?cmd=textToSpeech&text={{ text | urlencode }}&password=YOUR_PASSWORD"
method: GET
fully_load_url:
url: "http://{{ device }}.local:2323/?cmd=loadUrl&url={{ url | urlencode }}&password=YOUR_PASSWORD"
method: GET
fully_screen_on:
url: "http://{{ device }}.local:2323/?cmd=screenOn&password=YOUR_PASSWORD"
method: GET
fully_screen_off:
url: "http://{{ device }}.local:2323/?cmd=screenOff&password=YOUR_PASSWORD"
method: GET
fully_play_sound:
url: "http://{{ device }}.local:2323/?cmd=playSound&url={{ sound_url | urlencode }}&password=YOUR_PASSWORD"
method: GET
MQTT Integration
Enable MQTT in Fully Kiosk
Settings > Other Settings > MQTT Integration (experimental):
- MQTT Broker URL:
tcp://192.168.1.50:1883 - MQTT Broker Username/Password: Your broker credentials
- Device Info Topic:
fully/kitchen-tablet/deviceInfo - Event Topic:
fully/kitchen-tablet/event
MQTT Topics Published
Device Info (JSON):
fully/<device>/deviceInfo
Contains: batteryLevel, isPlugged, screenOn, currentTabUrl, etc.
Events:
fully/<device>/event
Events: screenOn, screenOff, onMotion, pluggedIn, unplugged, etc.
Home Assistant MQTT Sensors
# configuration.yaml
mqtt:
sensor:
- name: "Kitchen Tablet Battery"
state_topic: "fully/kitchen-tablet/deviceInfo"
value_template: "{{ value_json.batteryLevel }}"
unit_of_measurement: "%"
device_class: battery
- name: "Kitchen Tablet Screen"
state_topic: "fully/kitchen-tablet/deviceInfo"
value_template: "{{ value_json.screenOn }}"
binary_sensor:
- name: "Kitchen Tablet Plugged"
state_topic: "fully/kitchen-tablet/deviceInfo"
value_template: "{{ value_json.isPlugged }}"
payload_on: "true"
payload_off: "false"
device_class: plug
Configuration Templates
Home Assistant Dashboard Preset
Optimized settings for wall-mounted HA dashboards:
{
"startURL": "http://homeassistant.local:8123",
"kioskMode": true,
"kioskModePin": "1234",
"showNavigationBar": false,
"showStatusBar": false,
"enableFullscreen": true,
"keepScreenOn": true,
"screenBrightness": 150,
"screensaverTimer": 5,
"screensaverBrightness": 0,
"motionDetection": true,
"motionSensitivity": 80,
"screenOnOnMotion": true,
"stopScreensaverOnMotion": true,
"remoteAdmin": true,
"enablePullToRefresh": true,
"autoplayVideos": true,
"enableZoom": false,
"clearCacheOnReload": true
}
Digital Signage Preset
For information displays and signage:
{
"startURL": "http://signage-server/display",
"kioskMode": true,
"showNavigationBar": false,
"showStatusBar": false,
"enableFullscreen": true,
"keepScreenOn": true,
"screenBrightness": 200,
"autoReloadOnIdle": true,
"idleTimeout": 60,
"errorReload": true,
"enableZoom": false,
"desktopMode": false,
"screensaverTimer": 0,
"motionDetection": false
}
Locked Guest Kiosk Preset
Maximum lockdown for public/guest access:
{
"startURL": "http://guest-portal.local",
"kioskMode": true,
"kioskModePin": "5678",
"kioskExitGesture": 4,
"showNavigationBar": false,
"showStatusBar": false,
"lockStatusBar": true,
"disableHomeButton": true,
"disablePowerButton": true,
"disableVolumeButtons": true,
"disableNotifications": true,
"enableScreenshots": false,
"enableZoom": false,
"blockOtherApps": true,
"whitelistUrls": "guest-portal.local,cdn.example.com",
"remoteAdmin": true,
"remoteAdminFromLocalNetwork": true
}
Troubleshooting
Common Issues
Cannot connect to device:
- Verify device IP:
ping <device-ip> - Check Remote Admin enabled: Settings > Remote Administration
- Verify port 2323 is accessible:
curl http://<ip>:2323 - Check password is correct
Screen won't stay on:
- Enable "Keep Screen On" in Device Management
- Check "Prevent Sleep While Plugged" setting
- Disable Android battery optimization for Fully Kiosk
Motion detection not working:
- Grant camera permission to Fully Kiosk
- Increase motion sensitivity (0-100)
- Check camera isn't blocked by other apps
- Verify "Screen On On Motion" is enabled
Fire Tablet specific issues:
- Remove Amazon launcher: Use ADB to disable
- Disable OTA updates: Block Amazon URLs in router
- Battery drain: Enable "Keep WiFi On During Sleep"
MQTT not connecting:
- Verify broker URL format:
tcp://host:port - Check broker allows anonymous or credentials are correct
- Enable experimental MQTT in Other Settings
Device Reset
If device is unresponsive:
# Force restart app
curl "http://<ip>:2323/?cmd=killMyProcess&password=PASSWORD"
# Reboot device (requires root)
curl "http://<ip>:2323/?cmd=rebootDevice&password=PASSWORD"
Log Access
# Get Fully Kiosk log
curl "http://<ip>:2323/?cmd=showLog&password=PASSWORD"
# Get Android logcat
curl "http://<ip>:2323/?cmd=logcat&password=PASSWORD"
Best Practices
Security
- Use strong Remote Admin passwords
- Enable "Local Network Only" for Remote Admin
- Use HTTPS if exposing to internet (via reverse proxy)
- Regularly rotate passwords across fleet
- Enable Fully Cloud for secure remote access
Performance
- Clear cache periodically (weekly)
- Use motion detection to reduce screen-on time
- Set appropriate screensaver/screen-off timers
- Disable unused features (camera if not using motion detection)
Fleet Management
- Use consistent naming convention (location-type format)
- Create device groups for batch operations
- Export/save configuration templates
- Monitor battery health across fleet
- Schedule maintenance windows for updates
Home Assistant Integration
- Use native integration for simple setups
- Add REST commands for advanced operations
- Consider MQTT for real-time status updates
- Create input_booleans for dashboard states
- Use scripts to coordinate multiple devices
Included Scripts & Templates
This skill includes ready-to-use scripts and templates in the scripts/ and templates/ directories.
Scripts
fully_manager.py - Fleet Management CLI
Primary tool for managing multiple Fully Kiosk devices from the command line.
# Install dependencies
pip install -r scripts/requirements.txt
# List all devices
python scripts/fully_manager.py --devices templates/devices-example.yaml list
# Turn on all screens
python scripts/fully_manager.py --devices devices.yaml screen-on
# Set brightness on specific group
python scripts/fully_manager.py --devices devices.yaml --group kitchen brightness 180
# Send TTS announcement to all devices
python scripts/fully_manager.py --devices devices.yaml tts "Dinner is ready"
# Get device info as JSON
python scripts/fully_manager.py --devices devices.yaml info --json
fleet_status.py - Real-Time Fleet Monitor
Continuous monitoring dashboard with alerts and notifications.
# Basic monitoring (30 second refresh)
python scripts/fleet_status.py --devices devices.yaml
# Custom interval with logging
python scripts/fleet_status.py --devices devices.yaml --interval 60 --log fleet.log
# With Slack/Discord webhook alerts
python scripts/fleet_status.py --devices devices.yaml --webhook https://hooks.slack.com/...
# Single status check (no continuous monitoring)
python scripts/fleet_status.py --devices devices.yaml --once
# Configure alert thresholds
python scripts/fleet_status.py --devices devices.yaml --alert-battery 15 --alert-offline 10
Features:
- Rich terminal UI with live updates
- Battery, WiFi signal, memory monitoring
- Offline/online transition alerts
- Low battery warnings
- Webhook notifications (Slack, Discord, etc.)
- Log file output for historical tracking
fully_cloud.py - Fully Cloud API Manager
Manage devices through Fully Cloud centralized management.
# List all cloud-registered devices
python scripts/fully_cloud.py --token YOUR_API_TOKEN list
# Get device status
python scripts/fully_cloud.py --token YOUR_API_TOKEN status DEVICE_ID
# Send command to device
python scripts/fully_cloud.py --token YOUR_API_TOKEN command DEVICE_ID screenOn
# Send command with parameters
python scripts/fully_cloud.py --token YOUR_API_TOKEN command DEVICE_ID loadUrl \
--params '{"url":"http://example.com"}'
# Sync settings from local file
python scripts/fully_cloud.py --token YOUR_API_TOKEN sync DEVICE_ID settings.json
# View device logs
python scripts/fully_cloud.py --token YOUR_API_TOKEN logs DEVICE_ID --limit 100
# List device groups
python scripts/fully_cloud.py --token YOUR_API_TOKEN groups
backup_restore.py - Configuration Backup & Restore
Export and restore device configurations for disaster recovery and fleet provisioning.
# Backup single device
python scripts/backup_restore.py --devices devices.yaml backup kitchen-tablet
# Backup all devices
python scripts/backup_restore.py --devices devices.yaml backup-all --output backups/
# Restore to a device
python scripts/backup_restore.py --devices devices.yaml restore kitchen-tablet backup.json
# Clone config from one device to another
python scripts/backup_restore.py --devices devices.yaml clone kitchen-tablet bedroom-tablet
# Compare two device configurations
python scripts/backup_restore.py --devices devices.yaml diff kitchen-tablet bedroom-tablet
Templates
Configuration Templates
Pre-built JSON configurations in templates/:
| Template | Use Case |
|----------|----------|
| config-ha-dashboard.json | Home Assistant dashboard display |
| config-digital-signage.json | Unattended information displays |
| config-locked-kiosk.json | Maximum security guest/public kiosks |
| config-fire-tablet.json | Amazon Fire tablet optimizations |
ha-automations.yaml - Home Assistant Automation Package
Complete automation package with 12+ pre-built automations:
# Installation:
# 1. Copy to /config/packages/fully_kiosk.yaml
# 2. Add to configuration.yaml:
# homeassistant:
# packages:
# fully_kiosk: !include packages/fully_kiosk.yaml
# 3. Update entity IDs to match your devices
# 4. Restart Home Assistant
Included automations:
- Motion-based screen on/off
- Night mode with dimming schedule
- Doorbell camera display
- Weather alert TTS announcements
- Low battery notifications
- Presence-based dashboard switching
- Morning routine with gradual brightness
- Auto-restart on low memory
- Daily scheduled page reload
Included scripts:
fully_kiosk_all_screens_on/offfully_kiosk_reload_allfully_kiosk_announce(multi-device TTS)fully_kiosk_display_camera
lovelace-cards.yaml - Dashboard Cards
Pre-built Lovelace cards for tablet status display. See templates/lovelace-cards.yaml.
devices-example.yaml - Fleet Configuration
Example device inventory file:
devices:
kitchen-tablet:
ip: 192.168.1.100
password: your_password
groups: [kitchen, main-floor]
bedroom-tablet:
ip: 192.168.1.101
password: your_password
groups: [bedroom, upstairs]
Related Skills
- home-assistant: HA configuration and automation
- mqtt-iot: MQTT broker setup and management
- node-red-automation: Visual automation flows
- tailscale-vpn: Secure remote access to devices
微信扫一扫