# mobile-devices-controller-server

> Communicate with emulators, simulators and real devices

Latest version **2.3.0** (published 2019-11-21) · 0 weekly downloads

## Install

```sh
npm install mobile-devices-controller-server
pnpm add mobile-devices-controller-server
yarn add mobile-devices-controller-server
bun add mobile-devices-controller-server
```

Provides the command `ns-server`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.3.0 |
| Published | 2019-11-21 |
| First published | 2018-01-06 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 11 |
| Unpacked size | 100.7 KB |
| Known vulnerabilities | 0 (+5 in 2 direct dependencies) |
| Install scripts | no |
| Author | SvetoslavTsenov |
| Maintainers | tns-bot |

## Links

- npm: https://www.npmjs.com/package/mobile-devices-controller-server
- npm.io page: https://npm.io/package/mobile-devices-controller-server

## Dependencies (11)

- [q](https://npm.io/package/q.md) ^1.5.1
- [pug](https://npm.io/package/pug.md) ^2.0.3
- [rxjs](https://npm.io/package/rxjs.md) ^6.3.3
- [morgan](https://npm.io/package/morgan.md) ^1.9.0
- [express](https://npm.io/package/express.md) ^4.16.0
- [mongoose](https://npm.io/package/mongoose.md) ^5.3.14
- [body-parser](https://npm.io/package/body-parser.md) ^1.18.3
- [errorhandler](https://npm.io/package/errorhandler.md) ^1.5.0
- [cookie-parser](https://npm.io/package/cookie-parser.md) ^1.4.3
- [method-override](https://npm.io/package/method-override.md) ^3.0.0
- [mobile-devices-controller](https://npm.io/package/mobile-devices-controller.md) ~5.1.0

## Recent versions

- 2.3.0 (latest) — 2019-11-21
- 2.0.5-beta.2 (beta) — 2018-12-16
- 2.2.2 — 2019-11-21
- 2.2.1 — 2019-11-06
- 2.2.0 — 2019-09-27
- 2.1.4 — 2019-08-23
- 2.1.3 — 2019-08-20
- 2.1.2 — 2019-08-15
- 2.1.1-2 — 2019-05-23
- 2.1.1-1 — 2019-01-19
- 2.1.1-0 — 2019-01-18
- 2.1.0-9 — 2019-01-18
- 2.1.0-8 — 2019-01-17
- 2.1.0-7 — 2019-01-13
- 2.1.0-6 — 2019-01-07
- … 34 more at https://npm.io/package/mobile-devices-controller-server/versions

## README

# Server which comunivates with mobile-devices-manager. Serves to control simulatos, emulators and real devices.
    Purpose of this server is to manage all devices on а machine.
    This is very convinience when a multiple builds are triggered.

    Provides api as:
        /api/v1/devices/
            - `subscribe?type=simulator&name=iPhone%207%20100&info=Test&apiLevel=11.0&platform=ios`
            - `unsubscribe?token=93B75F3B-0D2A-4873-8BCB-9F78B104BDB5`
            - `?query`- returns devices.
            - `boot?query`- starts devices.
            - `update?query`
            - `refresh?query`
    
    Basically works with query of type IDevice exposed in mobile-devices-controller 

        export interface IDevice {
            name: string,
            token: string,
            type: DeviceType,
            platform: Platform,
            status?: Status,
            startedAt?: number,
            busySince?: number,
            pid?: number,
            apiLevel?: string,
            info?: string,
            config?: any,
        }

## Install

Install the node packages via:

`$ npm install`

### Run
    `$ ns-server`

|command                |Purpose|
|:-------------------------------:|:-------------------:|
|`--port`|Specify port to run server.|
|`DEVICE_CONTROLLER_SERVER_PORT`|Specify port to run server as env variable|
|`--mongodb`|Should use mongodb storage.|
|`--mongodb --startmongodb`|Will start and use mongodb server.|


### Install mogodb

`$ brew update`
`$ brew install mongodb`

#### Create database default folder

`mkdir -p data/db`

#### Run mongodb

`mogod`

### Installing dependencies for mobile-devices-controller
`brew uninstall telnet && true`
`brew install telnet && true`
`brew uninstall ios-webkit-debug-proxy && true`
`brew uninstall ideviceinstaller && true`
`brew uninstall libimobiledevice && true`
`brew install --HEAD libimobiledevice`
`brew link --overwrite libimobiledevice && true`
`brew install --HEAD ideviceinstaller`
`brew link --overwrite ideviceinstaller && true`
`brew install ios-webkit-debug-proxy`
`brew uninstall carthage && true; brew install carthage `
`plutil <plistfile>`

### Start server as a service

# To setup nativescript.mobile.devices.controller.server.plist on mac
```
$ sudo chmod 777 ./resources/start-mobile-devices-controller-server.sh
$ cp resources/nativescript.mobile.devices.controller.server.plist ~/Library/LaunchAgents
$ cd ~/Library/LaunchAgents

# This plist profile is setup for node8. In order to change node, open file and edit it
$ sudo chown nsbuilduser: nativescript.mobile.devices.controller.server.plist
$ launchctl load nativescript.mobile.devices.controller.server.plist
$ launchctl start nativescript.mobile.devices.controller.server.plist
```

###  Restart service
$ sudo chown nsbuilduser: nativescript.mobile.devices.controller.server.plist
$ launchctl unload nativescript.mobile.devices.controller.server.plist
$ launchctl load nativescript.mobile.devices.controller.server.plist
$ launchctl start nativescript.mobile.devices.controller.server.plist
```

### To disable/enable. sudo vim nativescript.mobile.devices.controller.server.plist and edit
'<key>Disabled</key> <true/>'
'<key>Enable</key> <false/>'

# To setup nativescript.mobile.devices.controller.server.service on linux
```

https://gododblog.wordpress.com/2017/01/26/boot-start-script-by-systemd/

$ sudo cp resources/nativescript.mobile.devices.controller.server.service /usr/lib/systemd/user/
$ sudo chmod 664 /usr/lib/systemd/user/nativescript.mobile.devices.controller.server.service
$ sudo chmod 755 $HOME/git/mobile-devices-controller-server
$ systemctl --user daemon-reload
$ systemctl --user enable nativescript.mobile.devices.controller.server.service
$ systemctl --user start nativescript.mobile.devices.controller.server.service
$ systemctl --user status nativescript.mobile.devices.controller.server.service

RESULT:

● nativescript.mobile.devices.controller.server.service
   Loaded: loaded (/usr/lib/systemd/user/nativescript.mobile.devices.controller.server.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-09-20 15:57:33 EEST; 1s ago
 Main PID: 3288 (sh)
   CGroup: /user.slice/user-1001.slice/user@1001.service/nativescript.mobile.devices.controller.server.service
           ├─3288 /bin/sh /home/nsbuilduser/git/ns-setup/infrastructure/start-shares-server-ubuntu.sh &
           └─3289 node /home/nsbuilduser/.nvm/versions/node/v8.11.1/bin/shares-server --port 8700

```

# test:
```
$ curl localhost:8700/api/v1/devices
```

---
_Source: https://npm.io/package/mobile-devices-controller-server · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
