Awesome
WallPanel
WallPanel (Legacy) is an Android application for Web Based Dashboards and Home Automation Platforms. This legacy version supports older devices running Android OS 4.1 using the Crosswalk browser in addition to the WebView component. Unfortunately, Crosswalk is no longer compatible with Android Studio build tools and this version will most like not be supported.
Support
For issues, feature requests, comments or questions, use the Github issues tracker. You can also join the ThanksMister Community to ask questions or share any helpful information about this project.
Features
- Web Based Dashboards and Home Automation Platforms support.
- Camera support for streaming video, motion detection, face detection, and QR Code reading.
- Google Text-to-Speech support to speak notification messages using MQTT or HTTP.
- MQTT or HTTP commands to remotely control device and application (url, brightness, wake, etc.).
- Sensor data reporting for the device (temperature, light, pressure, battery).
- Streaming MJPEG server support using the device camera.
Hardware & Softare
- Android Device running Android OS 4.1 or greater. Note: Android 4.0 devices use WebView to render webpages, The WebView shipped with Android 4.4 (KitKat) is based on the same code as Chrome for Android version 30. This WebView does not have full feature parity with Chrome for Android and is given the version number 30.0.0.0. You have the option to switch to the legacy browser support using Crosswalk for webpage rendering. If you have a newer device, please use the non-legacy application.
Quick Start
You must side load the application to your device from the release section of the project page. The application will open to the welcome page with a link to update the settings. Go to settings, and setup the link to your web page or home automation platform. You may also update additional settings for Motion, Face Detection, and for publishing device sensor data.
MQTT Sensor and State Data
If MQTT is enabled in the settings and properly configured, the application can publish data and states for various device sensors, camera detections, and application states.
Device Sensors
The application will post device sensors data per the API description and Sensor Reading Frequency. Curerntly device sensors for Pressure, Temperature, Light, and Battery Level are published.
Sensor Data
Sensor | Keys | Example | Notes |
---|---|---|---|
battery | unit, value, charging, acPlugged, usbPlugged | {"unit":"%", "value":"39", "acPlugged":false, "usbPlugged":true, "charging":true} | |
light | unit, value | {"unit":"lx", "value":"920"} | |
magneticField | unit, value | {"unit":"uT", "value":"-1780.699951171875"} | |
pressure | unit, value | {"unit":"hPa", "value":"1011.584716796875"} | |
temperature | unit, value | {"unit":"°C", "value":"24"} |
NOTE: Sensor values are device specific. Not all devices will publish all sensor values.
- Sensor values are constructued as JSON per the above table
- For MQTT
- WallPanel publishes all sensors to MQTT under
[baseTopic]/sensor
- Each sensor publishes to a subtopic based on the type of sensor
- Example:
wallpanel/mywallpanel/sensor/battery
- Example:
- WallPanel publishes all sensors to MQTT under
Home Assistant Examples
sensor:
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/battery"
name: "WallPanel Battery Level"
unit_of_measurement: "%"
value_template: '{{ value_json.value }}'
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/temperature"
name: "WallPanel Temperature"
unit_of_measurement: "°C"
value_template: '{{ value_json.value }}'
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/light"
name: "WallPanel Light Level"
unit_of_measurement: "lx"
value_template: '{{ value_json.value }}'
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/magneticField"
name: "WallPanel Magnetic Field"
unit_of_measurement: "uT"
value_template: '{{ value_json.value }}'
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/pressure"
name: "WallPanel Pressure"
unit_of_measurement: "hPa"
value_template: '{{ value_json.value }}'
Camera Motion, Face, and QR Codes Detections
In additional to device sensor data publishing. The application can also publish states for Motion detection and Face detection, as well as the data from QR Codes derived from the device camera.
Detection | Keys | Example | Notes |
---|---|---|---|
motion | value | {"value": false} | Published immediately when motion detected |
face | value | {"value": false} | Published immediately when face detected |
qrcode | value | {"value": data} | Published immediately when QR Code scanned |
- For MQTT
- WallPanel publishes all sensors to MQTT under
[baseTopic]/sensor
- Each sensor publishes to a subtopic based on the type of sensor
- Example:
wallpanel/mywallpanel/sensor/motion
- Example:
- WallPanel publishes all sensors to MQTT under
Home Assistant Examples
binary_sensor:
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/motion"
name: "Motion"
payload_on: '{"value":true}'
payload_off: '{"value":false}'
device_class: motion
binary_sensor:
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/face"
name: "Face Detected"
payload_on: '{"value":true}'
payload_off: '{"value":false}'
device_class: motion
sensor:
- platform: mqtt
state_topic: "wallpanel/mywallpanel/sensor/qrcode"
name: "QR Code"
value_template: '{{ value_json.value }}'
Application State Data
The application canl also publish state data about the application such as the current dashboard url loaded or the screen state.
Key | Value | Example | Description |
---|---|---|---|
currentUrl | URL String | {"currentUrl":"http://hasbian:8123/states"} | Current URL the Dashboard is displaying |
screenOn | true/false | {"screenOn":true} | If the screen is currently on |
- State values are presented together as a JSON block
- eg,
{"currentUrl":"http://hasbian:8123/states","screenOn":true}
- eg,
- For REST
- GET the JSON from URL
http://[mywallpanel]:2971/api/state
- GET the JSON from URL
- For MQTT
- WallPanel publishes state to topic
[baseTopic]/state
- Default Topic:
wallpanel/mywallpanel/state
- Default Topic:
- WallPanel publishes state to topic
MJPEG Video Streaming
Use the device camera as a live MJPEG stream. Just connect to the stream using the device IP address and end point. Be sure to turn on the camera streaming options in the settings and set the number of allowed streams and HTTP port number. Note that performance depends upon your device (older devices will be slow).
Browser Example:
http://192.168.1.1:2971/camera/stream
Home Assistant Example:
camera:
- platform: mjpeg
mjpeg_url: http://192.168.1.1:2971/camera/stream
name: WallPanel Camera
MQTT and HTTP Commands
Interact and control the application and device remotely using either MQTT or HTTP (REST) commands, including using your device as an announcer with Google Text-To-Speach.
Commands
Key | Value | Example Payload | Description |
---|---|---|---|
clearCache | true | {"clearCache": true} | Clears the browser cache |
eval | JavaScript | {"eval": "alert('Hello World!');"} | Evaluates Javascript in the dashboard |
audio | URL | {"audio": "http://<url>"} | Play the audio specified by the URL immediately |
relaunch | true | {"relaunch": true} | Relaunches the dashboard from configured launchUrl |
reload | true | {"reload": true} | Reloads the current page immediately |
url | URL | {"url": "http://<url>"} | Browse to a new URL immediately |
wake | true | {"wake": true} | Wakes the screen if it is asleep |
speak | data | {"speak": "Hello!"} | Uses the devices TTS to speak the message |
brightness | data | {"brightness": 1} | Changes the screens brightness, value 1-255. |
- The base topic value (default is "mywallpanel") should be unique to each device running the application unless you want all devices to receive the same command. The base topic and can be changed in the application settingssettings.
- Commands are constructed via valid JSON. It is possible to string multiple commands together:
- eg,
{"clearCache":true, "relaunch":true}
- eg,
- For REST
- POST the JSON to URL
http://[mywallpanel]:2971/api/command
- POST the JSON to URL
- For MQTT
- WallPanel subscribes to topic
wallpanel/[baseTopic]/command
- Default Topic:
wallpanel/mywallpanel/command
- Default Topic:
- Publish a JSON payload to this topic (be mindfula of quotes in JSON should be single quotes not double)
- WallPanel subscribes to topic
Google Text-To-Speach Command
You can send a command using either HTTP or MQTT to have the device speak a message using Google's Text-To-Speach. Note that the device must be running Android Lollipop or above.
Example format for the message topic and payload:
{"topic":"wallpanel/mywallpanel/command", "payload":"{'speak':'Hello!'}"}
Credits
WallPanel (Formerly HomeDash) is a fork from the original WallPanel project developed by quadportnick.