xiaohongshu
xiaohongshu
fully-kiosk
Comprehensive Fully Kiosk Browser management for Android tablets and kiosk devices. Control screen, brightness, URLs, screensavers, TTS, media playback. Manage device fleets via REST API, MQTT, Fully Cloud. Integrate with Home Assistant. Configure kiosk mode, motion detection, remote admin. Suppo...
Full skill instructions
Complete management and configuration of Fully Kiosk Browser deployments across Android devices including Amazon Fire tablets, Samsung tablets, and wall-mounted panels.
Fully Kiosk Browser is an Android app that transforms tablets into secure kiosk displays, digital signage, or smart home dashboards. This skill provides:
http://<device-ip>:2323/?cmd=<command>&password=<password>&type=json
| 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 |
# 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
# 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"
# 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"
# 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:
# 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"
# 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"
# 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"
# 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"
# 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"
# 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
# List ALL settings (300+ keys)
curl "http://192.168.1.100:2323/?cmd=listSettings&type=json&password=YOUR_PASSWORD"
# 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"
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-landscapeKiosk Settings:
kioskMode - Enable kiosk mode (boolean)kioskModePin - PIN to exit kioskkioskExitGesture - Exit gesture typelockSafeMode - Prevent safe mode bootMotion Detection:
motionDetection - Enable motion detectionmotionSensitivity - Sensitivity 0-100screenOnOnMotion - Turn screen on when motion detectedstopScreensaverOnMotion - Stop screensaver on motionRemote Admin:
remoteAdmin - Enable remote adminremoteAdminPassword - Admin passwordremoteAdminFromLocalNetwork - Allow local network onlyWeb Settings:
enableZoom - Allow pinch zoomdesktopMode - Request desktop siteuserAgent - Custom user agent stringUse 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
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]
From Fully Cloud Remote Admin:
Enable Remote Admin on device:
Add Integration in HA:
Sensors:
sensor.<device>_battery - Battery levelsensor.<device>_storage - Free storagesensor.<device>_memory - Free RAMsensor.<device>_page - Current URLBinary Sensors:
binary_sensor.<device>_plugged_in - Charging statusbinary_sensor.<device>_kiosk_mode - Kiosk enabledSwitches:
switch.<device>_screensaver - Toggle screensaverswitch.<device>_maintenance_mode - Maintenance modeswitch.<device>_kiosk_lock - Lock/unlock kioskswitch.<device>_motion_detection - Motion detectionButtons:
button.<device>_restart - Restart appbutton.<device>_reload - Reload pagebutton.<device>_to_foreground - Bring to frontNumbers:
number.<device>_brightness - Screen brightnessnumber.<device>_volume - Media volumeCamera:
camera.<device>_screenshot - Live screenshot# 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"
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
Settings > Other Settings > MQTT Integration (experimental):
tcp://192.168.1.50:1883fully/kitchen-tablet/deviceInfofully/kitchen-tablet/eventDevice Info (JSON):
fully/<device>/deviceInfo
Contains: batteryLevel, isPlugged, screenOn, currentTabUrl, etc.
Events:
fully/<device>/event
Events: screenOn, screenOff, onMotion, pluggedIn, unplugged, etc.
# 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
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
}
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
}
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
}
Cannot connect to device:
ping <device-ip>curl http://<ip>:2323Screen won't stay on:
Motion detection not working:
Fire Tablet specific issues:
MQTT not connecting:
tcp://host:portIf 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"
# Get Fully Kiosk log
curl "http://<ip>:2323/?cmd=showLog&password=PASSWORD"
# Get Android logcat
curl "http://<ip>:2323/?cmd=logcat&password=PASSWORD"
This skill includes ready-to-use scripts and templates in the scripts/ and templates/ directories.
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
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:
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
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
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 |
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:
Included scripts:
fully_kiosk_all_screens_on / offfully_kiosk_reload_allfully_kiosk_announce (multi-device TTS)fully_kiosk_display_cameraPre-built Lovelace cards for tablet status display. See templates/lovelace-cards.yaml.
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]
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience