Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/btc-ticker/btc-ticker

BTC Ticker on a 2.7 inch e-paper attached to a rasberry zero WH
https://github.com/btc-ticker/btc-ticker

bitcoin e-paper mempool raspberry-pi raspbian ticker

Last synced: 2 months ago
JSON representation

BTC Ticker on a 2.7 inch e-paper attached to a rasberry zero WH

Lists

README

        

# bitcoin-ticker
bitcoin-ticker is a E-ink ticker that shows usefull information about bitcoin. Due to the limited refresh lifetime, new information is currently shown every 5 minutes and whenever a new block arrives.

![](pictures/view7.jpg)
![](pictures/view6.jpg)
![](pictures/view1.jpg)
![](pictures/view2.jpg)
![](pictures/view3.jpg)
![](pictures/view4.jpg)

## Hardware

* waveshare 2.7 e-Paper HAT (e.g. from [berrybase](https://www.berrybase.de/sensoren-module/displays/epaper-displays/2.7-264-215-176-epaper-display-hat-f-252-r-raspberry-pi), [welectron](https://www.welectron.com/Waveshare-13354-27inch-e-Paper-HAT?utm_campaign=id), [reichelt](https://www.reichelt.de/entwicklerboards-display-epaper-2-7-schwarz-weiss-debo-epa-2-7-p224220.html))
* rasberry pi zero WH (e.g. from [berrybase](https://www.berrybase.de/raspberry-pi/raspberry-pi-computer/boards/raspberry-pi-zero-wh))
* Power supply Micro USB 5V (e.g. from [berrybase](https://www.berrybase.de/raspberry-pi/raspberry-pi-computer/stromversorgung/netzteile-fuer-die-steckdose/micro-usb-netzteil/ladeadapter-5v/1a-flache-bauform-schwarz))
* micro SD card with 16 GB or more (e.g. from [berrybase](https://www.berrybase.de/raspberry-pi/raspberry-pi-computer/speicherkarten/sandisk-ultra-microsdhc-a1-98mb/s-class-10-speicherkarte-43-adapter-16gb))
* Printed Case (e.g. Typ B from [ebay](https://www.ebay.de/itm/GEHAUSE-fur-2-7-264-176-ePaper-e-Ink-Display-HAT-und-Raspberry-Pi-Zero/384176908149) oder [ebay-kleinanzeigen](https://www.ebay-kleinanzeigen.de/s-anzeige/gehaeuse-fuer-2-7-e-ink-display-hat-rasp-pi-zero-typ-b/1807419003-225-8325))

### More e-paper that are supportet:
* waveshare 7.5 V2 (e.g. from [berrybase](https://www.berrybase.de/sensoren-module/displays/epaper-displays/7.5-800-215-480-epaper-display-hat-f-252-r-raspberry-pi-v2))
* waveshare 3.7 (e.g. from [welectron](https://www.welectron.com/Waveshare-18057-37inch-e-Paper-HAT))

The config.ini needs the following settings when using the 7.5 inch:
```
epd_type = 7in5_V2
orientation = 270
layout_list=ohlc
```

## Usage
### Ticker view
The Tickers the following information:
* Block height, Mean block intervall in minutes, Time
* Minimal Block fee for the first 7 blocks in mempool
* Dollar price of a bitcoin
* Satoshi per Dollar (also know as moskow time)
* Sotoshi per Euro
* Euro price of a bitcoin

Whenever a new block has arrived on the blockchain, the following information is shown for 120 seconds (can be disabled in the config.ini):
* Euro price of a bitcoin, mean block intervall in minutes, Time
* Minimal Block fee for the first 7 blocks in mempool
* Blocks in mempook, Number of transaction in mempool
* Blocks until next difficulty retargeting, est. difficulty multiplier, est. retarget time
* Block height

Due to the limited lifetime of 1000000 refreshes and an expected lifetime of 5 years, the refresh period has been set to 216 seconds.
### Buttons
There are four buttons which the following behaviour (Please be patient after pressing, the e-ink is quite slow):
1. Switch through different ticker views (views can be selected in the config.ini)
2. Switch BTC/fiat graph through 1, 3 and 7 days (Can be changed in the config.ini)
3. Switch the layout of the ticker (layouts can be selected in the config.ini)
4. Switch inverted mode

### Switching to ro-mode
Per default, the file system is mounted writable. When there is a empty ro file in /boot, the filesystem will remounted readonly.
```
sudo touch /boot/ro
```
enables the readonly remount. The file can also be created with a PC, similar to the ssh file.

### Switching between ro and rw mode
After logging in with ssh,
```
rw
```
remounts the file system with write support.
```
ro
```
switches back to readonly.
### Config.ini
It possible to personalize the ticker to your needs. After logging into your raspi with SSH, the config can be edited with
```
rw
nano config.ini
ro
```
After writing the change to the ini file, a restart of the btc-ticker service is needed:
```
sudo systemctl restart btcticker
```

### Update btc-ticker without reflashing the sdcard
After logging into the btc-ticker with SSH, the update can be started with
```
rw
./99updateMenu.sh
```
Select now:
* PATCH
* Patch menu
* PATCH
to update the ticker to the newest updates from git.

## Download image
* Downlad version 0.6.0 from [btc-ticker-0_6_0.img.gz](https://btc-ticker.com/btc-ticker-0_6_0.img.gz)
* Verify SHA256 checksum. It should be: `ebeb7e615237853f7388f3f8b00268c2e88b560104f711f11e76ed6e0e59805d`

### Flash SDcard with Raspberry Pi Imager
Use https://www.raspberrypi.com/software/ for flashing the image to the sd-card.
* Select btc-ticker img file
* select sdcard
* Before writing click on settings and modify the following settings
* enable ssh with Use password authentication
* set username and password and write Username: admin Password: btcticker
* enable WiFi and enter your WiFi connection details
* start with clicking on write

### wpa_supplicant.conf (only when not using settings on Imager)
When you use the Raspberry Pi Imager with settings, there is no need for adding wpa_supplicant.conf manually.
When you did not enter your wifi credentials in the settings menu, you need to do thefollowing:

* add `wpa_supplicant.conf` to the boot partition when mounted on PC
```
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=[COUNTRY_CODE]
network={
ssid="[WIFI_SSID]"
psk="[WIFI_PASSWORD]"
key_mgmt=WPA-PSK
}
```
* replace `[COUNTRY_CODE]` with the ISO2 code (e.g. DE)
* Set `[WIFI_SSID]` and `[WIFI_PASSWORD]`
* On the first boot, the filesystem is mounted writable (Necessary for coping the wpa_supplicant.conf).
* When there is no wpa_supplicant.conf at /boot, the filesystem will be mounten readonly.

## Build SDcard from scratch

The SDcard build process is inspired by the great [raspiblitz](https://github.com/rootzoll/raspiblitz).

* Download lastest [raspios image](https://downloads.raspberrypi.org/raspios_oldstable_armhf/images/)
* Write the Image to a SD card [Tutorial](https://www.raspberrypi.org/documentation/installation/installing-images/README.md)
* Add a `ssh` file to the boot partition when mounted on PC
* Add a `wpa_supplicant.conf` file, as shown in the section before. More information are also available [here](https://www.raspberrypi.org/documentation/configuration/wireless/headless.md)
* Login via SSH to `ssh pi@[IP-OF-YOUR-RASPI]` using password `raspberry`

The image can now be build with:
```
wget https://raw.githubusercontent.com/btc-ticker/btc-ticker/main/build_sdcard.sh && sudo bash build_sdcard.sh
```

After everything run through, it is possible to login with the password `btcticker`
In order to prepare everyting for release, run `/home/admin/XXprepareRelease.sh`. When you just want to use it for yourself, you do not need to run `/home/admin/XXprepareRelease.sh`.

## Changing the ssh password
In order to secure your btc-ticker in your local network, you should change the SSH password after setting up everything.
* Login via SSH to `ssh admin@[IP-OF-YOUR-RASPI]` using the password `btcticker`
* Change the password (this will be improved in the next release)
```
echo "pi:NEWPASSWORD" | sudo chpasswd
echo "root:NEWPASSWORD" | sudo chpasswd
echo "admin:NEWPASSWORD" | sudo chpasswd
```
Replace `NEWPASSWORD` with the new password.

## Used APIs
btc-ticker is using the following APIs:
* [mempool.space/api](https://mempool.space/api), which can also be run locally in e.g. raspiblitz
* [coingecko api](https://www.coingecko.com/en/api)
* [blockchain API v1](https://github.com/blockchain/api-v1-client-python) (only as backup, when mempool.space is not available)

## Pre-commit-config

### Installation

```
$ pip install pre-commit
```

### Using homebrew:
```
$ brew install pre-commit
```

```
$ pre-commit --version
pre-commit 2.10.0
```

### Install the git hook scripts

```
$ pre-commit install
```

### Run against all the files
```
pre-commit run --all-files
pre-commit run --show-diff-on-failure --color=always --all-files
```

### Update package rev in pre-commit yaml
```bash
pre-commit autoupdate
pre-commit run --show-diff-on-failure --color=always --all-files
```