MCPcopy
hub / github.com/HannahMitt/HomeMirror

github.com/HannahMitt/HomeMirror @main sqlite

repository ↗ · DeepWiki ↗
172 symbols 374 edges 27 files 28 documented · 16%
README

HomeMirror

Android application powering the mirror in my house

Note: code unmaintained

This was a fun project, and I may pick it back up again one day. You can still follow the instructions for putting a mirror together, but may need to bring your own light-text-on-dark-background app.

Software

  • Day, time, and weather display
  • Birthday messages
  • Chore reminders
  • Biking weather recommendation
  • Stock price swings
  • Today's new XKCD
  • Next calendar event
  • Top news headline
  • Face detection with mood detection

APIs provided by Yahoo Finance, Forecast.io, the BBC, and XKCD

How to Run

  1. Clone project
  2. Get a forecast.io api key
  3. Add a keys.xml file under res/values with \your_key\
  4. Import project to Android Studio and run

When its mirror time, I also recommend turning on the device Developer Option: "Stay Awake - Screen will never sleep while charging"

Making a Mirror

Video walk-through on adafruit (Thank you Becky!)

1. Obtain Android device

We had too many. Sad old devices are ideal. I used a 2012 Nexus 7.

2. Obtain two-way mirror

We did this the old-fashioned way, and quested to Canal Plastic Center. A beautiful and highly recommended establishment.

Wiki of places to buy two-way mirrors

Get a mirror at least as large as your Android device. My mirror is 6"x12" with 1/8 thickness.

3. Sticky stuff for mounting

Our trickiest problem was figuring out how to mount everything with minimal damage and error. We eventually discovered reusable double-sided adhesive, which is amazing.

We're using it both to mount the mirror to the device, and the device to the wall.

4. Attach black backing

We used black construction paper. If your device and mirror are awesomely identical in size, you can skip this.

Note: You want to glue it well, so the backing doesn't tear when the adhesive is holding it.

  • Cut a piece of black backing the same size as your mirror
  • Decide where you want your device to show through. We did upper right. Leave a border all the way around for adhesive.
  • At that location, carefully cut a hole in the backing the same size as your device
  • CAREFULLY glue the backing to the mirror. We used spray adhesive, and practiced how we would pick it up and lay it on the mirror a couple times before going for it. We also wore black surgical gloves.

5. Adhesion

Fire up the app on the device.

Put the adhesive along the bezel or edges of the device. Line up the mirror and stick it on there.

6. Wall spot

You probably want a long usb cable. Find a wall spot where you can keep the device plugged in.

Put a bunch of adhesive on the back of the device, and stick it on there.

Links

At the heart of this project, is 'put a mirror on it'. Check out alternative mirror projects and feel free to add your own reflections

Extension points exported contracts — how you extend this code

XKCDRequest (Interface)
Created by HannahMitt on 8/22/15.
app/src/main/java/com/morristaedt/mirror/requests/XKCDRequest.java
YahooFinanceRequest (Interface)
Created by HannahMitt on 8/23/15.
app/src/main/java/com/morristaedt/mirror/requests/YahooFinanceRequest.java
ForecastRequest (Interface)
Created by HannahMitt on 8/23/15.
app/src/main/java/com/morristaedt/mirror/requests/ForecastRequest.java
MoodListener (Interface)
(no doc) [1 implementers]
app/src/main/java/com/morristaedt/mirror/modules/MoodModule.java
XKCDListener (Interface)
(no doc) [1 implementers]
app/src/main/java/com/morristaedt/mirror/modules/XKCDModule.java

Core symbols most depended-on inside this repo

getTextColor
called by 11
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java
toString
called by 8
app/src/main/java/com/morristaedt/mirror/requests/OpenWeatherResponse.java
getLatitude
called by 5
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java
getLongitude
called by 5
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java
setTextColor
called by 4
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java
isDebugBuild
called by 4
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java
isDemoMode
called by 4
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java
setLatLon
called by 3
app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java

Shape

Method 130
Class 31
Interface 11

Languages

Java100%

Modules by API surface

app/src/main/java/com/morristaedt/mirror/configuration/ConfigurationSettings.java34 symbols
app/src/main/java/com/morristaedt/mirror/MirrorActivity.java16 symbols
app/src/main/java/com/morristaedt/mirror/SetUpActivity.java14 symbols
app/src/main/java/com/morristaedt/mirror/modules/ForecastModule.java10 symbols
app/src/main/java/com/morristaedt/mirror/modules/MoodModule.java9 symbols
app/src/main/java/com/morristaedt/mirror/requests/OpenWeatherResponse.java7 symbols
app/src/main/java/com/morristaedt/mirror/modules/XKCDModule.java7 symbols
app/src/main/java/com/morristaedt/mirror/modules/TrainScheduleModule.java7 symbols
app/src/main/java/com/morristaedt/mirror/requests/YahooStockResponse.java6 symbols
app/src/main/java/com/morristaedt/mirror/requests/ForecastResponse.java6 symbols
app/src/main/java/com/morristaedt/mirror/modules/YahooFinanceModule.java6 symbols
app/src/main/java/com/morristaedt/mirror/modules/NewsModule.java6 symbols

For agents

$ claude mcp add HomeMirror \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact