A modular background service that makes Windows remotely controllable through MQTT. For home automation and Internet of Things.
mvn clean package
java -jar -Dwinthing.brokerUrl=tcp://localhost:1883 target/winthing-1.1.0-SNAPSHOT.jar
Configuration can be passed either by Java system properties from command line or application.properties file placed in the classpath.
Property | Description | Default |
---|---|---|
winthing.brokerUrl | URL of the MQTT broker to use. | tcp://localhost:1883 |
winthing.brokerUsername | Username used when connecting to MQTT broker. | bob |
winthing.brokerPassword | Password used when connecting to MQTT broker. | supersecret11 |
winthing.clientId | Client ID to present to the broker. | WinThing |
winthing.topicPrefix | Client ID to present to the broker. | winthing |
winthing.reconnectInterval | Time interval between connection attempts in seconds. | 5 |
The payload of all messages is either empty or a valid JSON element (possibly a privimite, like a single integer). This means, specifically, that if an argument is supposed to be a single string, it should be sent in double quotes.
Example valid message payloads:
123
true
"notepad.exe"
[1024, 768]
["notepad.exe", "C:\\file.txt", "C:\\"]
(note that JSON string requires escaped backslash)
Topic: | winthing/system/online | QoS: | 2 | Persistent: | yes |
---|---|---|---|---|---|
Payload: | state:boolean | ||||
True when WinThing is running, false otherwise. |
Topic: | winthing/system/commands/shutdown |
---|---|
Payload: | - |
Trigger immediate system shutdown. |
Topic: | winthing/system/commands/reboot |
---|---|
Payload: | - |
Trigger immediate system reboot. |
Topic: | winthing/system/commands/suspend |
---|---|
Payload: | - |
Trigger immediate system suspend. |
Topic: | winthing/system/commands/hibernate |
---|---|
Payload: | - |
Trigger immediate system hibernate. |
Topic: | winthing/system/commands/run |
---|---|
Payload: | [command:string, arguments:string, workingDirectory:string] |
Run a command. Arguments and working directory are optional (empty string and null by default). |
Topic: | winthing/system/commands/open |
---|---|
Payload: | uri:string |
Opens an URI, like a website in a browser or a disk location in a file browser. |
Topic: | winthing/desktop/commands/close_active_window |
---|---|
Payload: | - |
Closes currently active window. |
Topic: | winthing/desktop/commands/set_display_sleep |
---|---|
Payload: | displaySleep:boolean |
Puts the display to sleep (on true) or wakes it up (on false). |
Topic: | winthing/keyboard/commands/press_keys |
---|---|
Payload: | [key:string...] |
Simulates pressing of given set of keyboard keys. Keys are specified by name. List of availble key names and aliases can be found [here](src/main/java/com/fatico/winthing/windows/input/KeyboardKey.java). |
Topic: | winthing/radeon/commands/set_best_resolution |
---|---|
Payload: | - |
Sets the screen to the best available resolution. |
Topic: | winthing/radeon/commands/set_resolution |
---|---|
Payload: | [widthInPixels:integer, heightInPixels:integer] |
Sets the screen to the given resolution. |
Copyright 2015-2016 Mikołaj Siedlarek <[email protected]>
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.