adbjs 
Use adb from node
#Requirements
#Install
npm install --save adbjs
#Build
git clone https://github.com/Urucas/adbjs.git
npm run build
#Usage
import ADB from 'adbjs'
let adb = new ADB()
let version = adb.version()
console.log(version)
let devices = adb.devices()
console.log(devices)
let deviceInfo = adb.deviceInfo(devices[0])
console.log(deviceInfo)
adb.selectDevice(devices[0])
let isAvailable = adb.isDeviceAvailable('07042e0e13cca2d0')
console.log(isAvailable)
let packages = adb.listPackages()
let isInstalled = adb.isPackageInstalled("com.urucas.zoster_testpp")
console.log(isInstalled)
let isRunning = adb.isAppRunning("com.google.android.youtube")
console.log(isRunning)
adb.closeApp("com.google.android.youtube")
adb.install("/path/to/my/zoster_testapp.apk", "com.urucas.zoster_testapp")
let ip = adb.getDeviceWlan0()
console.log(ip)
let conn = adb.tcpConnect()
console.log(conn)
adb.tcpDisconnect(conn)
adb.lock()
adb.unlock()
let power = adb.power()
console.log(power)
Monitor
Using adbjs to monitor a device changes
let monitor = adb.monitor()
// emits an event on battery change
monitor.on("battery", (power) => {
// { display_power: 'ON', "battery_level": 93 }
// { display_power: 'ON', "battery_level": 92 }
// you may integrate this monitor to slack,
// so if battery is to low send a notification
// { display_power: 'ON', "battery_level": 5 }
})
// emits an event on display changes [ON|OFF]
monitor.on("display", (power) => {
// { display_power: 'ON', "battery_level": 93 }
// { display_power: 'OFF', "battery_level": 93 }
})