Giter VIP home page Giter VIP logo

lightningatm's People

Contributors

21isenough avatar aarondewes avatar abellykens avatar axelhamburch avatar bengweeks avatar danielcharrua avatar emzy avatar ferdymercury avatar gianlock avatar gunther0815 avatar k9ert avatar lightisfaster avatar lth-elm avatar nicolasb58 avatar openoms avatar philevang avatar reneaaron avatar shawaj avatar surfac3 avatar tomstammis avatar vnnkl avatar willcl-ark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lightningatm's Issues

Add additional Lightning Implementations / Wallets

Actual Behavior:
Currently the LightningATM works with two different wallets; LND through a BTCPayServer setup (lndrest.py) and Lntxbot (lntxbot.py).

Expected Behavior:
More wallets and Lightning Node implementations should be supported through their API endpoint.

  • C-Lightning
  • Eclair
  • Lnbits
  • paywall.link
  • ...

Multiple buttons too send to pre-set addresses

So was thinking this might be a great way to get some more use of this.
Add a few buttons with pre set recipient. That way you cud set one up to send to for example different charitable organisations.

Imagine putting one in a grocery store so people can easily donate their loose change to f.ex. Red Cross, UN etc by just dropping in a few coins and pushing the correctly labelled button that have the organisations associated wallet specified to it. or add it to their own bitcoin wallet.

Remove custom lattice infill from STLs and missing design files

Hi all,

When printing the STLs, it looks like there is a custom infill that causes issues with printing:

20220106_101958122_iOS (2)

(You'll notice the curled edges, most likely due to overhanging I guess).

In the slicer we can see:

CaptureLattice

There is also some oddness in the layers:

CaptureOddness

I would suggest that it is built as a solid object, and you let the slicer deal with the infill. This would most likely significantly improve print times as well.

Would also be good if original design files are added to source control (do not seem to be correct files located in https://github.com/21isenough/LightningATM/tree/master/resources/3dmodels/LightningATM%20-%20Pocket%20Edition).

Great work though.

Ben

Delete possible error as is already patched at the beginning of the article

I think we can delete this part as nobody will install the Waveshare lib and it lets to confusion.

If you follow the article and instal the compatible library (https://github.com/AxelHamburch/e-Paper/) you are not going to see the spidev error on screen, so I would delete it to make it more clear.

https://github.com/21isenough/LightningATM/blob/b9ba6bb259ab4266a7b588b2fb5abafb310f7da7/docs/guide/display.md?plain=1#L35C1-L52C1

[Feature request] display network info and price while idle

Would love the ATM to be useful while idle.

Especially using one of the power efficient e-ink displays an always on bitcoin clock could be nice.

The idea is that after some configurable time it could display some info refreshed in about every 5 mins like:

  • blockheight
  • price (in USD or chosen currency) - maybe sats/USD ("Moscow Time")
  • miner fee values from mempool.space

Similar examples using other hardware:

Remove the dependency "pycoingecko"

Actual Behavior:
Currently the ATM relies on the python library "pycoingecko" for the exchange rate. It's a (quick and dirty) replacement for the recently closed API of bitcoinaverage.com

Expected Behavior:
Since this is only one simple GET request to the CoinGecko API, this could simply be done in python and does not need a library. Remove and use the "requests" package in python.

price = CoinGeckoAPI().get_price(ids="bitcoin", vs_currencies=fiat_code)

AttributeError: module 'requests' has no attribute 'get'

Hello,

i've followed all the steps to configure the ATM. When i execute ./app.py i recieve this error: AttributeError: module 'requests' has no attribute 'get'.

Traceback (most recent call last):
  File "./app.py", line 12, in <module>
    import config
  File "/home/pi/LightningATM/config.py", line 192, in <module>
    BTCPRICE = utils.get_btc_price(conf["atm"]["cur"])
  File "/home/pi/LightningATM/utils.py", line 51, in get_btc_price
    price = requests.get(
AttributeError: module 'requests' has no attribute 'get'

Can you help me?

Thanks

Add smarter way of detecting and counting the inserted coins

Actual Behavior:
Each of 6 different coins sends a certain amount of pulses to the RaspberryPi, that are then registered on a GPIO pin.

A variable is set to the amount of pulses and regularly read to determine the inserted coin. This leads to slight delays and coins can't be inserted too fast after one another.

Expected Behavior:
I imagine, it would be better to continuously populate an array with pulses (a representation thereof) and evaluate this array in a thread. This should allow for faster "coin insertions" and make the user experience smoother.

Add function to make use of "activewallet" variable in config.ini

Actual Behavior:
The ATM currently does not "know" to which wallet it is connected. Depending on the wallet that it is connected to, certain features must be deactivated (e.g. LNURL for LND).

Expected Behavior:
Make use of the "activewallet" variable in config.ini to set the currently active wallet and allow/restrict certain functions based on it. It would be best to set the "activewallet" variable when the user scans their API credentials.

running ./app.py after clean install displays an error

When ATM is setup and ./app.py is run for the first time after config.ini is setup, the console returns:
telegram-cloud-photo-size-4-5832649915812135563-y

Display test runs with positive results. I am running waveshare2in13v3 display

Steps to reproduce
a) clean SD image etched
b) go trough update and upgrade
c) runn ./app.py to setup config.ini
d) setup config.ini
e) run ./app.py once more and it wont run

I am not sure why console displays blink error.

Wifi monitoring

Would like to suggest a modification for the Pocket Edition

At present there is no visual indication on the screen to indicate when the atm is paired with the router.
A simple symbol to indicate connectivity (T) would be useful.
If the wifi connection fails due to no signal from the router (power out or internet down) it would be useful to have a OUT OF SERVICE screen image.
The Rpi will automatically try to reconnect with the router and when the connection is restablished the screen changes to display the WELCOME message.
This should ensure that a user will not put in coins or attempt to use the atm when there is no connectivity, and would improve user experience.

Add admin menu to configure the ATM

Actual Behavior:
Currently we can only access different functions on the ATM with "multiple button presses" (e.g. button 3 times pressed, starts the Lntxbot scanning process).

Expected Behavior:
There shall be an "Admin Menu" that can be controlled with only one button. It could be a menu with all the menu points and an arrow next to the first point.

  • One press on the button makes the arrow jump to the next menu point
  • Two presses on the button confirm that menu point, and executes the function.

Impulses of fast insertion of coins are accumulated

Seems like if I'm able to insert coins fast enough in sequence, impulses for coins are accumulating. For example let's say I do have 3 similar coins, which are mapped to impulse number 2 on coins acceptor. I do insert them very fast in sequence. Then ATM will detect 3 coins corresponding to impulses 2, 4 and 6.

Improve exchange rate calculation for currencies close to sats parity

While building the ATM for Turkish lira during the⚑ Hackdays in Istanbul I noticed some issues due to the currently implemented rounding of exchange rates that would defraud users by up to 50% of the exchange rate.

πŸ‘€ Analysis

The exchange rate is currently calculated as follows:

https://github.com/21isenough/LightningATM/blob/master/config.py#L193
SATPRICE = math.floor((1 / (BTCPRICE * 100)) * 1e8)

This means that currently you would get 1.80 sats for 1 kurus which is then rounded down to 1 sat.

πŸͺ² Possible solution

My fix was to only round the result but not the variable SATPRICE.

Also the display implementations (e.g. https://github.com/21isenough/LightningATM/blob/master/displays/waveshare2in13v2.py#L449) would have to be changed to handle the increased precision.

I'll submit a PR for those changes so we can discuss them there.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.