Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/notwoods/cell-wall
A multi-device display for showing interactive data, such as photos, weather information, calendar appointments, and more.
https://github.com/notwoods/cell-wall
android smart-home smarthome socket-io
Last synced: 3 months ago
JSON representation
A multi-device display for showing interactive data, such as photos, weather information, calendar appointments, and more.
- Host: GitHub
- URL: https://github.com/notwoods/cell-wall
- Owner: NotWoods
- Created: 2017-07-17T06:10:46.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-09-17T19:21:13.000Z (4 months ago)
- Last Synced: 2024-10-06T14:54:06.682Z (3 months ago)
- Topics: android, smart-home, smarthome, socket-io
- Language: TypeScript
- Homepage:
- Size: 62 MB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![](images/logo.png)
# CellWall
A multi-device display for showing interactive data, such as photos, weather
information, calendar appointments, and more.CellWall is my project to repurpose a batch of old hand-me-down cell phones into
a useful display in my apartment. It uses ADB to let each phone connect
to a server and receive data about what to show.![](images/finished.jpg)
## Putting the hardware together
The hardware boils down to a bunch of cell phones stuck onto a plank of wood, with USB cables connecting them to a server. A detailed run-through is coming soon.
### Parts list
#### Wood plank (the "Wall")
- [Plywood handy panel](https://www.homedepot.ca/product/alexandria-moulding-1-4-inch-x-2-feet-x-2-feet-birch-plywood-handy-panel/1000434557)
- [White acrylic paint](https://amzn.to/2L5YzS7)
- [Paint brush](https://amzn.to/35eqiHk)
- [Sandpaper](https://amzn.to/2Lpnsbc)
- Tools to mount the plank onto your wall, such as:
- [Command Strips](https://amzn.to/3pMTZa4) for an apartment
- [Wood screws](https://amzn.to/2Lpo1lk) for a house.#### Mounting and connecting the phones (the "Cell"s)
- Old cell phones and/or tablets running Android
- Raspberry Pi or another computer to use as the server
- [Velcro strips](https://amzn.to/3bdwEdM)
- [USB cables](https://www.monoprice.com/product?p_id=4867)
- [Wire clips](https://amzn.to/391YTJL)
- [USB hub](https://amzn.to/2JM19w0)Note that most of these links are affiliate links for Amazon. As an Amazon Associate I earn from qualifying purchases. Using these links helps out the project!
## Using the software
These instructions will get you a copy of the project up and running on your
local machine for development and testing purposes.### Prerequisites
- Node.js 16 or greater
- pnpm
- Android Studio 4.1 or greater
- Android Debug Bridge### Installing dependencies
Install Node dependencies for the server:
```shell
pnpm install
```Install Gradle dependencies for the client by opening the `./android` folder as
an Android Studio project and syncing Gradle.Alternatively, from the command line:
```shell
cd ./android
gradlew build
```### Development
Test locally in development environment by spinning up two servers: client & server.
```shell
pnpm --filter server run dev
pnpm --filter client run dev
```### Deployment
The server communicates with phones over ADB. ADB should be installed and the phones should be in debug mode. Check that all phones appear when running `adb devices`.
Run the server by compiling the TypeScript code and launching it with node:
```shell
pnpm -r run build
pnpm -w start
```A production build is available on the `pi-deploy` branch. It can be started by running:
```shell
pnpm install --frozen-lockfile --prod
pnpm -w start
```### Environment variables
Some paths and API keys are set via environment variables. The project uses `dotenv`, so an `.env` file will automatically be loaded by the server.
See [env.ts](javascript/shared/src/env.ts) for a list of environment variables.
## Built with
- [SveleteKit](https://kit.svelte.dev/) - Client code
- [Fastify](https://www.fastify.io/) - Web server
- [ADB](https://developer.android.com/studio/command-line/adb) - Communication from server to phones
- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture/) -
Used for MVVM architecture on client