From 271c7ee99ca496ab64383878b40444518d728adf Mon Sep 17 00:00:00 2001 From: Kyle J Carlton Date: Tue, 10 Jan 2023 17:35:55 -0600 Subject: [PATCH] Move img folder under static, update refs + drafts --- content/mining-btc-with-pi-part1.md | 2 +- content/mining-btc-with-pi-part2.md | 8 +++---- content/nest-logger.md | 9 +++++++ content/storage-wars.md | 15 ++++++++++++ content/universal-remote-part1.md | 2 +- content/universal-remote-part2.md | 6 +++-- content/universal-remote-part3.md | 8 +++---- content/universal-remote-part4.md | 10 +++++--- content/universal-remote-part5.md | 22 ++++++++++++++---- content/wifi-temperature-monitor-part1 .md | 5 ++-- content/wifi-temperature-monitor-part2.md | 4 ++-- {img => static/img}/BTCMinerPowerUsage.png | Bin {img => static/img}/BTCMinerProfitability.png | Bin .../img}/ButterflyLabsMinerAndPi.png | Bin .../img}/Google_Apps_Script_Temp.png | Bin static/img/NASDeepArchive.drawio.png | Bin 0 -> 14144 bytes {img => static/img}/OpensourceRemoteParts.png | Bin {img => static/img}/RemoteBuildWirelessBT.jpg | Bin {img => static/img}/SolderingSupplies.png | Bin {img => static/img}/TMP36_Graph.png | Bin {img => static/img}/TMP36_Gsheet.png | Bin .../img}/UniversalRemoteHardwareAssembled.png | Bin .../img}/UniversalRemoteLegoCase.png | Bin .../img}/UniversalRemoteWebsite.png | Bin {img => static/img}/apple-touch-icon.png | Bin {img => static/img}/favicon.ico | Bin {img => static/img}/favicon.png | Bin {img => static/img}/favicon_io.zip | Bin {img => static/img}/profile.jpeg | Bin 29 files changed, 67 insertions(+), 24 deletions(-) create mode 100644 content/nest-logger.md create mode 100644 content/storage-wars.md rename {img => static/img}/BTCMinerPowerUsage.png (100%) rename {img => static/img}/BTCMinerProfitability.png (100%) rename {img => static/img}/ButterflyLabsMinerAndPi.png (100%) rename {img => static/img}/Google_Apps_Script_Temp.png (100%) create mode 100644 static/img/NASDeepArchive.drawio.png rename {img => static/img}/OpensourceRemoteParts.png (100%) rename {img => static/img}/RemoteBuildWirelessBT.jpg (100%) rename {img => static/img}/SolderingSupplies.png (100%) rename {img => static/img}/TMP36_Graph.png (100%) rename {img => static/img}/TMP36_Gsheet.png (100%) rename {img => static/img}/UniversalRemoteHardwareAssembled.png (100%) rename {img => static/img}/UniversalRemoteLegoCase.png (100%) rename {img => static/img}/UniversalRemoteWebsite.png (100%) rename {img => static/img}/apple-touch-icon.png (100%) rename {img => static/img}/favicon.ico (100%) rename {img => static/img}/favicon.png (100%) rename {img => static/img}/favicon_io.zip (100%) rename {img => static/img}/profile.jpeg (100%) diff --git a/content/mining-btc-with-pi-part1.md b/content/mining-btc-with-pi-part1.md index 79c7990..361427c 100644 --- a/content/mining-btc-with-pi-part1.md +++ b/content/mining-btc-with-pi-part1.md @@ -15,6 +15,6 @@ I ordered the [Butterfly Labs](https://en.bitcoinwiki.org/wiki/Butterfly_Labs) 5 -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/ButterflyLabsMinerAndPi.png", position="left") }} +{{ image(src="/img/ButterflyLabsMinerAndPi.png", position="left") }} Hardware in place, I decided to join a mining pool since my hash rate would be contributing such a small percentage of the entire Bitcoin network’s computing power. I joined BTC Guild, which has since shut down due to security and regulatory concerns. [P2Pool](http://p2pool.org/), [Eligius](http://eligius.st/~gateway/) and [BitMinter](https://bitminter.com/) are some mining pools still in existence. [This CoinDesk article](https://www.coindesk.com/information/get-started-mining-pools/) provides more information about mining pools. At this point I just sat back and let the miner burn electricity. Was I making a profit? Only time would tell. Next update I’ll summarize the profitability of mining with this hardware from December 2013 - July 2015. \ No newline at end of file diff --git a/content/mining-btc-with-pi-part2.md b/content/mining-btc-with-pi-part2.md index b6c6735..36833b3 100644 --- a/content/mining-btc-with-pi-part2.md +++ b/content/mining-btc-with-pi-part2.md @@ -6,9 +6,9 @@ date = 2015-10-16 tags = ["RaspberryPi", "BTC"] +++ -I mined a total of 0.24359921 Bitcoin (BTC) with the Raspberry Pi and Butterfly Labs 5 GH/s miner from December 17, 2013 - July 29, 2015. +I mined a total of 0.24359921 Bitcoin (BTC) with the Raspberry Pi and Butterfly Labs 5 GH/s miner from December 17, 2013 - July 29, 2015. -Here’s a breakdown of costs: +Here’s a breakdown of costs: - Hardware = $390 - Electricity = $571 @@ -18,10 +18,10 @@ Total cost of power over that period of approximately 14,136 hours was calculate -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/BTCMinerPowerUsage.png", position="left") }} +{{ image(src="/img/BTCMinerPowerUsage.png", position="left") }} Thanks to the technology behind Bitcoin, you can see the full contents of the wallet where mining profits were deposited on [BlockChain.info](https://www.blockchain.com/explorer) @ [1BsWqHJh5kwLNHZzj6Q6DGaxRZVTK9U9A6](https://blockchain.info/address/1BsWqHJh5kwLNHZzj6Q6DGaxRZVTK9U9A6) and a graph over time. -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/BTCMinerProfitability.png", position="left") }} +{{ image(src="/img/BTCMinerProfitability.png", position="left") }} With the exchange rate of Bitcoins to USD at the time of writing this, the Return on Investment (ROI) with a balance of 0.24359921 BTC is about negative (-) $896. Breaking even would require the exchange rate to reach $3,844 USD / BTC; historically speaking the highest was around $1,100 in late 2013. Never say never though, here’s the [current price from CoinDesk](https://www.coindesk.com/price/bitcoin/). \ No newline at end of file diff --git a/content/nest-logger.md b/content/nest-logger.md new file mode 100644 index 0000000..57343b6 --- /dev/null +++ b/content/nest-logger.md @@ -0,0 +1,9 @@ ++++ +title = "Nest Logger" +date = 2022-12-24 +draft = true +[taxonomies] +tags = ["Nest", "Google", "API", "DeviceAccess", "Temperature", "Humidity", "Weather"] ++++ + +Since [Works with Nest (WWN)](https://developers.nest.com/) is retiring, I decided to get set up on [Device Access](https://developers.google.com/nest/device-access/get-started). There is a lot in these tutorials but I interested in a really functional method of getting data from my Nest thermostat. diff --git a/content/storage-wars.md b/content/storage-wars.md new file mode 100644 index 0000000..dbbc9d4 --- /dev/null +++ b/content/storage-wars.md @@ -0,0 +1,15 @@ ++++ +title = "Storage Wars" +date = 2022-03-24 +draft = true + +[taxonomies] +tags = ["Synology", "NAS", "AWS", "S3GlacierDeepArchive", "DataBackup", "DisasterRecovery"] ++++ + +An overwhelming choice of cloud based storage these days, and all the marketing around them can make it seem like an overly complicated endeavor to keep data safe. +I decided to take some control back from the cloud and host as much as possible on my home network. I went with a [Synology DS220+ NAS](https://www.synology.com/en-us/products/DS220+), a [Seagate 5TB External Drive](https://www.amazon.com/gp/product/B07VS8QCXC/) and [Amazon Web Services (AWS) S3 Glacier Deep Archive](https://aws.amazon.com/s3/storage-classes/?nc=sn&loc=3#____) for a low-cost off-site backup location. I also added an [APC Back-UPS 600VA](https://www.apc.com/us/en/product/BE600M1/apc-backups-600va-120v-1-usb-charging-port-7-nema-outlets-2-surge/) and used a [Raspberry Pi 2 Model B Rev 1.1](https://learn.adafruit.com/introducing-the-raspberry-pi-2-model-b) to connect and orchestrate everything. + +{{ image(src="/img/NASDeepArchive.drawio.png", position="left") }} + + diff --git a/content/universal-remote-part1.md b/content/universal-remote-part1.md index 3f90a90..bafc1ab 100644 --- a/content/universal-remote-part1.md +++ b/content/universal-remote-part1.md @@ -6,4 +6,4 @@ date = 2014-11-06 tags = ["RaspberryPi", "UniversalRemote"] +++ -I’ve ordered all the parts to build a DIY universal remote - [opensourceuniversalremote.com](http://opensourceuniversalremote.com/), following [these directions from Alex Bain](http://alexba.in/blog/2013/06/08/open-source-universal-remote-parts-and-pictures/). \ No newline at end of file +I’ve ordered all the parts to build a DIY universal remote - [opensourceuniversalremote.com](http://opensourceuniversalremote.com/), following [these directions from Alex Bain](http://alexba.in/blog/2013/06/08/open-source-universal-remote-parts-and-pictures/). diff --git a/content/universal-remote-part2.md b/content/universal-remote-part2.md index d7208c0..f8239c7 100644 --- a/content/universal-remote-part2.md +++ b/content/universal-remote-part2.md @@ -11,6 +11,7 @@ I purchased the [Prototyping Pi Plate directly from adafruit](https://www.adafru Parts List: --- + - 1 x [Adafruit Industries ADA801](https://octopart.com/801-adafruit+industries-24605284) - 1 x [Raspberry Pi Model B 756-8308 Motherboard](https://en.wikipedia.org/wiki/Raspberry_Pi) - 2 x [Everlight IR333C](https://octopart.com/ir333c-everlight-17677690) @@ -19,13 +20,14 @@ Parts List: - 1 x [Ohmite OD103JE](https://octopart.com/od103je-ohmite-133027) - 1 x [Vishay Semiconductor TSOP38238 IR Receiver](https://octopart.com/tsop38238-vishay-5517697) - 1 x 22 [AWG Solid Core Wire](http://www.frys.com/product/7716148/) + --- -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/OpensourceRemoteParts.png", position="left") }} +{{ image(src="/img/OpensourceRemoteParts.png", position="left") }} -Here's [the circuit](https://upverter.com/alexbain/f24516375cfae8b9/Open-Source-Universal-Remote/#/) I’ll be building: +Here's [the circuit](https://upverter.com/alexbain/f24516375cfae8b9/Open-Source-Universal-Remote/#/) I’ll be building: diff --git a/content/universal-remote-part3.md b/content/universal-remote-part3.md index e419d90..a836906 100644 --- a/content/universal-remote-part3.md +++ b/content/universal-remote-part3.md @@ -8,12 +8,12 @@ tags = ["RaspberryPi", "UniversalRemote"] The only items I didn’t purchase online were the supplies for soldering and wiring. I went with the ECG 20 Watt Miniature Corded Soldering Iron, Sn60/Pb40 Solder and 22AWG Solid Copper Wire. -With all the components and tools needed, the first step was assembling the Adafruit Prototyping Pi Plate Kit following [these instructions](https://learn.adafruit.com/adafruit-prototyping-pi-plate/solder-it). Once complete I built [the circuit for the IR receiver and transmitter](https://upverter.com/design/alexbain/f24516375cfae8b9/open-source-universal-remote/#/). With the assembly complete the Prototyping Pi Plate connects to the Raspberry Pi via the GPIO pins. In addition to referencing the circuit diagram [these high resolution pictures from alexba.in](http://alexba.in/blog/2013/06/08/open-source-universal-remote-parts-and-pictures/) were very useful. +With all the components and tools needed, the first step was assembling the Adafruit Prototyping Pi Plate Kit following [these instructions](https://learn.adafruit.com/adafruit-prototyping-pi-plate/solder-it). Once complete I built [the circuit for the IR receiver and transmitter](https://upverter.com/design/alexbain/f24516375cfae8b9/open-source-universal-remote/#/). With the assembly complete the Prototyping Pi Plate connects to the Raspberry Pi via the GPIO pins. In addition to referencing the circuit diagram [these high resolution pictures from alexba.in](http://alexba.in/blog/2013/06/08/open-source-universal-remote-parts-and-pictures/) were very useful. -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/SolderingSupplies.png", position="left") }} +{{ image(src="/img/SolderingSupplies.png", position="left") }} -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/UniversalRemoteHardwareAssembled.png", position="left") }} +{{ image(src="/img/UniversalRemoteHardwareAssembled.png", position="left") }} -With the hardware assembled the next step is to install [Raspbian](https://www.raspberrypi.com/software/) as the OS on the SD card and the application [LIRC](http://www.lirc.org/) for controlling the hardware to test functionality. \ No newline at end of file +With the hardware assembled the next step is to install [Raspbian](https://www.raspberrypi.com/software/) as the OS on the SD card and the application [LIRC](http://www.lirc.org/) for controlling the hardware to test functionality. diff --git a/content/universal-remote-part4.md b/content/universal-remote-part4.md index e7fc6f2..6ce5999 100644 --- a/content/universal-remote-part4.md +++ b/content/universal-remote-part4.md @@ -8,7 +8,7 @@ tags = ["RaspberryPi", "UniversalRemote"] -With the hardware built the next step is getting the Raspberry Pi up and running and installing [LIRC](http://www.lirc.org/). [Alexba.in](http://alexba.in/) has a comprehensive post for both of these things: [RaspberryPi Quickstart](http://alexba.in/blog/2013/01/04/raspberrypi-quickstart/) and [Setting Up LIRC on the RaspberryPi](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). +With the hardware built the next step is getting the Raspberry Pi up and running and installing [LIRC](http://www.lirc.org/). [Alexba.in](http://alexba.in/) has a comprehensive post for both of these things: [RaspberryPi Quickstart](http://alexba.in/blog/2013/01/04/raspberrypi-quickstart/) and [Setting Up LIRC on the RaspberryPi](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). I discovered and modified a few things along the way, so here’s what I did: @@ -20,7 +20,7 @@ Since I’d like to connect over WiFi I’ve added a [Belkin USB F7D2101](https: -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/RemoteBuildWirelessBT.jpg", position="left") }} +{{ image(src="/img/RemoteBuildWirelessBT.jpg", position="left") }} - With the Pi temporarily connected by Ethernet cable, I [set up the wireless connection via the command line](https://www.raspberrypi.com/documentation/computers/configuration.html) over SSH. @@ -39,19 +39,22 @@ sudo ntpdate -u ntp.ubuntu.com ``` - Next install [LIRC](http://www.lirc.org/) + ```bash sudo apt-get install lirc ``` + - Modify **/etc/modules** and **/etc/lirc/hardware.conf** for the specific hardware being used: - _**/etc/modules**_ + ```bash lirc_dev lirc_rpi gpio_in_pin=23 gpio_out_pin=22 ``` _**/etc/lirc/hardware.conf**_ + ```bash ###################### # /etc/lirc/hardware.conf @@ -74,6 +77,7 @@ LIRCD_CONF="" LIRCMD_CONF="" ``` - Restart LIRC to pick up these changes: + ```bash sudo /etc/init.d/lirc stop mode2 -d /dev/lirc0 diff --git a/content/universal-remote-part5.md b/content/universal-remote-part5.md index 1836eed..9d25089 100644 --- a/content/universal-remote-part5.md +++ b/content/universal-remote-part5.md @@ -45,6 +45,7 @@ node app.js ```bash sudo nano /etc/init.d/URemote ``` + ```bash #! /bin/sh # /etc/init.d/lirc_web @@ -77,37 +78,50 @@ case "$1" in esac exit 0 ``` + - Make the script executable: + ```bash sudo chmod 755 /etc/init.d/URemote ``` + - Test starting and stopping lirc_web with the script: + ```bash sudo /etc/init.d/URemote start sudo /etc/init.d/URemote stop ``` + - Register the script to be run at start-up: + ```bash sudo update-rc.d URemote defaults ``` + If your remotes aren’t in the [available index](http://lirc.sourceforge.net/remotes/) or those config files don’t work, [irrecord](http://www.lirc.org/html/irrecord.html) can be used. + - Stop lirc to free up _/dev/lirc0_: + ```bash sudo /etc/init.d/lirc stop ``` + - Create a new remote control configuration file using _/dev/lirc0_ and save the output to _~/lircd.conf_. Once a file is generated for each remote it can be compiled into a single lircd.conf, this is much easier with FTP access. A list of namespace values for buttons is available @ [ocinside.de/modding_en/linux_ir_irrecord_list](http://www.ocinside.de/modding_en/linux_ir_irrecord_list/). + ```bash irrecord -d /dev/lirc0 ~/lircd.conf ``` + - After all the remotes are recorded and compiled, the lircd.conf file can be placed @ _/etc/lirc/_ and then restart LIRC to pick up the new configuration: + ```bash sudo /etc/init.d/lirc stop sudo /etc/init.d/lirc start ``` -To finish of the hardware build I made a case out of Lego bricks, so it stays oriented vertically and has some protection. -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/UniversalRemoteLegoCase.png", position="left") }} + +To finish of the hardware build I made a case out of Lego bricks, so it stays oriented vertically and has some protection. +{{ image(src="/img/UniversalRemoteLegoCase.png", position="left") }} Now control of IR devices is possible from a website, next up controlling Bluetooth devices the same way using [GIMX](http://gimx.fr/wiki/index.php?title=Command_line). -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/UniversalRemoteWebsite.png", position="left") }} - +{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/UniversalRemoteWebsite.png", position="left" \ No newline at end of file diff --git a/content/wifi-temperature-monitor-part1 .md b/content/wifi-temperature-monitor-part1 .md index 7d51089..af462d9 100644 --- a/content/wifi-temperature-monitor-part1 .md +++ b/content/wifi-temperature-monitor-part1 .md @@ -30,9 +30,8 @@ For my first project with the Photon, I created a wireless temperature monitor t Then the temperature can be calculated based on the voltage output from the TMP36 using _Temp °C = 100*(reading in V) - 50_. -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/TMP36_Graph.png", position="left") }} +{{ image(src="/img/TMP36_Graph.png", position="left") }} After importing I also converted to Fahrenheit using _T(°F) = T(°C) × 1.8 + 32_. Here’s the final output in the Google Sheet using _ImportJSON(https://api.particle.io/v1/devices/UNIQUE_ID/analogvalue?access_token=UNIQUE_TOKEN)_: - -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/TMP36_Gsheet.png", position="left") }} +{{ image(src="/img/TMP36_Gsheet.png", position="left") }} diff --git a/content/wifi-temperature-monitor-part2.md b/content/wifi-temperature-monitor-part2.md index f417f58..2bb78b8 100644 --- a/content/wifi-temperature-monitor-part2.md +++ b/content/wifi-temperature-monitor-part2.md @@ -10,7 +10,7 @@ Since writing the first WiFi temperature monitor post, I’ve implemented retrie -{{ image(src="https://raw.githubusercontent.com/kylejcarlton/zola-theme-terminimal/master/img/Google_Apps_Script_Temp.png", position="left") }} +{{ image(src="/img/Google_Apps_Script_Temp.png", position="left") }} For communication with my Nest Thermostat, I didn’t implement the [OAuth2.0](https://oauth.net/2/) standard completely inside the Apps Script; although this would be possible using [apps-script-oauth2](https://github.com/googlesamples/apps-script-oauth2). Following the [REST Quick Guide](https://developers.nest.com/documentation/cloud/how-to-auth), I generated a [PIN for my Nest](https://developers.nest.com/documentation/cloud/authorization-overview#pin-based-authorization) and then used [Postman](https://www.getpostman.com/) to initiate the POST call for the Access Token to be used in the script. @@ -18,4 +18,4 @@ Here are the results after a few days: -The [Google Sheet](https://docs.google.com/spreadsheets/d/1ir8ENcChkleHsPGUWlmbGlXQQTnxPHI-o29nMX9jvO8/edit) is here (create a copy to view Script Editor and make changes) and I also posted the code as a [Gist here](https://gist.github.com/kylejcarlton/12a85c4a5b375eaff62ee509d76a6720). API keys, device ID’s etc. are all variables to be defined at the beginning of the Script. \ No newline at end of file +The [Google Sheet](https://docs.google.com/spreadsheets/d/1ir8ENcChkleHsPGUWlmbGlXQQTnxPHI-o29nMX9jvO8/edit) is here (create a copy to view Script Editor and make changes) and I also posted the code as a [Gist here](https://gist.github.com/kylejcarlton/12a85c4a5b375eaff62ee509d76a6720). API keys, device ID’s etc. are all variables to be defined at the beginning of the Script. diff --git a/img/BTCMinerPowerUsage.png b/static/img/BTCMinerPowerUsage.png similarity index 100% rename from img/BTCMinerPowerUsage.png rename to static/img/BTCMinerPowerUsage.png diff --git a/img/BTCMinerProfitability.png b/static/img/BTCMinerProfitability.png similarity index 100% rename from img/BTCMinerProfitability.png rename to static/img/BTCMinerProfitability.png diff --git a/img/ButterflyLabsMinerAndPi.png b/static/img/ButterflyLabsMinerAndPi.png similarity index 100% rename from img/ButterflyLabsMinerAndPi.png rename to static/img/ButterflyLabsMinerAndPi.png diff --git a/img/Google_Apps_Script_Temp.png b/static/img/Google_Apps_Script_Temp.png similarity index 100% rename from img/Google_Apps_Script_Temp.png rename to static/img/Google_Apps_Script_Temp.png diff --git a/static/img/NASDeepArchive.drawio.png b/static/img/NASDeepArchive.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..06b78218dce277bf7e5d484eb7070bfbab1d64ad GIT binary patch literal 14144 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

#i`M9JuMbX`F;v)E6Kw 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 literal 0 HcmV?d00001 diff --git a/img/OpensourceRemoteParts.png b/static/img/OpensourceRemoteParts.png similarity index 100% rename from img/OpensourceRemoteParts.png rename to static/img/OpensourceRemoteParts.png diff --git a/img/RemoteBuildWirelessBT.jpg b/static/img/RemoteBuildWirelessBT.jpg similarity index 100% rename from img/RemoteBuildWirelessBT.jpg rename to static/img/RemoteBuildWirelessBT.jpg diff --git a/img/SolderingSupplies.png b/static/img/SolderingSupplies.png similarity index 100% rename from img/SolderingSupplies.png rename to static/img/SolderingSupplies.png diff --git a/img/TMP36_Graph.png b/static/img/TMP36_Graph.png similarity index 100% rename from img/TMP36_Graph.png rename to static/img/TMP36_Graph.png diff --git a/img/TMP36_Gsheet.png b/static/img/TMP36_Gsheet.png similarity index 100% rename from img/TMP36_Gsheet.png rename to static/img/TMP36_Gsheet.png diff --git a/img/UniversalRemoteHardwareAssembled.png b/static/img/UniversalRemoteHardwareAssembled.png similarity index 100% rename from img/UniversalRemoteHardwareAssembled.png rename to static/img/UniversalRemoteHardwareAssembled.png diff --git a/img/UniversalRemoteLegoCase.png b/static/img/UniversalRemoteLegoCase.png similarity index 100% rename from img/UniversalRemoteLegoCase.png rename to static/img/UniversalRemoteLegoCase.png diff --git a/img/UniversalRemoteWebsite.png b/static/img/UniversalRemoteWebsite.png similarity index 100% rename from img/UniversalRemoteWebsite.png rename to static/img/UniversalRemoteWebsite.png diff --git a/img/apple-touch-icon.png b/static/img/apple-touch-icon.png similarity index 100% rename from img/apple-touch-icon.png rename to static/img/apple-touch-icon.png diff --git a/img/favicon.ico b/static/img/favicon.ico similarity index 100% rename from img/favicon.ico rename to static/img/favicon.ico diff --git a/img/favicon.png b/static/img/favicon.png similarity index 100% rename from img/favicon.png rename to static/img/favicon.png diff --git a/img/favicon_io.zip b/static/img/favicon_io.zip similarity index 100% rename from img/favicon_io.zip rename to static/img/favicon_io.zip diff --git a/img/profile.jpeg b/static/img/profile.jpeg similarity index 100% rename from img/profile.jpeg rename to static/img/profile.jpeg