From 1b9e0e0233b0d930bb6aa68dc9601f224f2ba3c9 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 16:17:11 +0200 Subject: [PATCH 01/21] Update we_need_your_help.md --- docs/guide/we_need_your_help.md | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/docs/guide/we_need_your_help.md b/docs/guide/we_need_your_help.md index b7e88d9..af8540a 100644 --- a/docs/guide/we_need_your_help.md +++ b/docs/guide/we_need_your_help.md @@ -1,42 +1,30 @@ -## We need your help for testing!!! πŸ™ +## Would you like to help test the new version? πŸ“–πŸ§ With this update comes a change of the GPIO inputs and outputs. This makes the inputs less sensitive to EMI interference that could lead to unwanted pulses. So if you had sporadic problems with your ATM, you should definitely try this update. In addition, the function of a lockout relay for the coin acceptor was also implemented with the update. A useful function that one or the other has certainly wished for after the coin impulses were lost or the coin value was incorrectly recognized. A detailed documentation can be found in the new chapter [option: lockout relay](/docs/guide/relay.md). -We have added some display messages and button functions and now need beta testers that have one of the following display versions. - -- Waveshare 2in7 -- PaPiRusZero 2in -- Inky pHAT - -The Waveshare 2in13v2, 2in13d and 2in66 has already been tested, but it never hurts if someone else tests it too. πŸ˜‰ - -For help testing you need the button. _`Note:`If you don't have it yet, you can quickly "simulate" it yourself. Just short-circuit like pin 17 and 29 from the [wiring](/docs/guide/wiring.md)._ We added two new display messages and a button function that shows all display messages if you push the button 9 times. All button functions a described [here](/docs/guide/button.md). We want to know if everything works and, above all, if the last two display messages no. 14 and 15 are shown correctly. - -To participate, you must update your AMT software once with our trial version. Don't worry, I've written step-by-step instructions for this that really anyone can use and all your configuration data such as wallet and settings will be retained. You can easily undo the whole thing afterwards +To participate, you must update your AMT software once with this new version. Don't worry, we have written a step-by-step instructions for this that really anyone can use and all your configuration data such as wallet and settings will be retained. You can easily undo the whole thing afterwards --- -### 1. Update to the new trial version +### 1. Update to the new version Log into the RPi and then stop the ATM service once, make a backup from directory LightningATM, clone the new Github to "temp", sync once from "temp" to "LightningAMT" and then delete the "temp" directory that is no longer needed. $ sudo systemctl stop LightningATM.service $ mv LightningATM LightningATM_Backup - $ git clone https://github.com/21isenough/LightningATM.git + $ git clone --branch master https://github.com/21isenough/LightningATM.git temp + $ rsync -a temp/ LightningATM/ + $ sudo rm -r temp -### 2. Start and test the trial version +### 2. Start and test the version $ cd LightningATM $ ./app.py - It takes a few seconds for the display to update, but then.. - The ATM has started and you can use it normally or test the functions. -- `Note:` If you "simulate" the button you may have to set the `payoutdelay = 0` in the `config.ini` to aktivate the button. See [edit_config](/docs/guide/edit_config.md). -- `Note:` Be careful not to press the button 7 times. This will delete your wallet data and you will have to re-enter or scan it. -- If you press the button 9 times, all 16 messages should be displayed once. You can also track this in the terminal. -- You can ignore the first message. The message looks a bit strange. 😜 There is still work to do! - Stop the ATM with `CTRL+C` ### 3. If you don't like this version and want to get rid of it @@ -59,4 +47,4 @@ Restart the LightningATM service - Your ATM should now restart as usual - If you find some issues or have some suggestions call @AxelHamburch in the telegram group or on Github -## Thank you for your support! ❀️ \ No newline at end of file +## Thank you for your support! ❀️ From 1e94dd3e997ea45a8ac4d42ff3319073dcb4916f Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 16:19:21 +0200 Subject: [PATCH 02/21] Update camera.md --- docs/guide/camera.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/camera.md b/docs/guide/camera.md index d9e78c8..5f47ac3 100644 --- a/docs/guide/camera.md +++ b/docs/guide/camera.md @@ -112,4 +112,4 @@ Note: This camera was pretty cheap and has a variable lens that was pretty loose --- -#### [option: button](/docs/guide/button.md) ᐊ previous | next ᐅ [option: lockout relay](/docs/guide/relay.md) \ No newline at end of file +#### [option: button](/docs/guide/button.md) ᐊ previous | next ᐅ [option: lockout relay](/docs/guide/relay.md) From 357a0bf8783df2b542c1e15fa2fbb150e56f2e18 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 16:21:10 +0200 Subject: [PATCH 03/21] Update app.py --- app.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app.py b/app.py index 371fba2..e899e2c 100755 --- a/app.py +++ b/app.py @@ -310,15 +310,11 @@ def button_pushed(): display.update_wallet_fault() time.sleep(2) - print("18. init_screent()") - display.init_screen(0) - time.sleep(2) - - print("19. display.update_startup_screen()") + print("18. display.update_startup_screen()") display.update_startup_screen() time.sleep(2) - print("That's it!") + print("That's it, have fun!") config.PUSHES = 0 return From 847466f6e25f76c7044935bc75c34812ff343e68 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 16:23:47 +0200 Subject: [PATCH 04/21] Update add_on_zero2.md --- docs/guide/add_on_zero2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/add_on_zero2.md b/docs/guide/add_on_zero2.md index 769be8d..c30db93 100644 --- a/docs/guide/add_on_zero2.md +++ b/docs/guide/add_on_zero2.md @@ -102,4 +102,4 @@ Look at: --- -#### [option: lockout relay](/docs/guide/relay.md) ᐊ previous | next ᐅ [README](/README.md) \ No newline at end of file +#### [option: lockout relay](/docs/guide/relay.md) ᐊ previous | next ᐅ [README](/README.md) From ae6da7ae6f3c99fa38b369e54782f18e72e68d64 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 16:50:09 +0200 Subject: [PATCH 05/21] Update example_config.ini --- example_config.ini | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/example_config.ini b/example_config.ini index 211029d..13e3ba4 100644 --- a/example_config.ini +++ b/example_config.ini @@ -7,6 +7,13 @@ cur = eur # of your choice for price display (singular). centname = cent +# Set language: "en", "de", "fr", "it", "es", "pt", "tr" currently available +# Code 2 from https://www.science.co.il/language/Codes.php +language = en + +# Do you have a camera? "no" or "yes" +camera = no + # Set the Fee in % fee = 2 From da5e1a1b14f7dc75026d1bcef1ef94dc8d7c3774 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 17:01:49 +0200 Subject: [PATCH 06/21] If no camera is available, process LNURL directly --- app.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index e899e2c..d640685 100755 --- a/app.py +++ b/app.py @@ -111,12 +111,13 @@ def button_pushed(): lnurlproxy = config.conf["lnurl"]["lnurlproxy"] activewallet = config.conf["atm"]["activewallet"] + camera = config.conf["atm"]["camera"] # Determine if LNURL Withdrawls are possible if lnurlproxy == "active" or activewallet == "lntxbot": - # 1. Ask if wallet supports LNURL + # 1. Ask if wallet supports LNURL, if camera available # 2. Offer to cancel and switch to normal scan # 3. Process payment - if activewallet == "lntxbot": + if activewallet == "lntxbot" and camera == "yes": display.update_lnurl_cancel_notice() time.sleep(5) if config.PUSHES == 1: @@ -135,6 +136,14 @@ def button_pushed(): softreset() return + # If no camera is available, process LNURL directly + if activewallet == "lntxbot": + # Process LNURL + logger.info("LNURL process stared") + lntxbot.process_using_lnurl(config.SATS) + softreset() + return + if lnurlproxy == "active": display.update_lnurl_cancel_notice() time.sleep(5) @@ -483,7 +492,7 @@ def main(): except KeyboardInterrupt: display.update_shutdown_screen() logger.info("Application finished (Keyboard Interrupt)") - sys.exit("Manually Interrupted") + sys.exit(" Manually Interrupted") except Exception: logger.exception("Oh no, something bad happened! Restarting...") os.execv("/home/pi/LightningATM/app.py", [""]) From 439c1209a2d5aa56d2e62ec31d3dc914a3349af1 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 19:19:30 +0200 Subject: [PATCH 07/21] Set display = "nothing" Its better to have nothing there. So there comes the message "No display configuration matched. Exiting..." after first call of app.py. Its better then to have a fault message like "OSError: [Errno 121] Remote I/O error" --- example_config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example_config.ini b/example_config.ini index 13e3ba4..691d2de 100644 --- a/example_config.ini +++ b/example_config.ini @@ -31,7 +31,7 @@ dangermode = on # display = waveshare2in7 # display = inkyphat -display = papiruszero2in +display = # Automatically set during initial setup to LND or LNTXBOT # Current options are: From 3e062d736da9db85b73a3a01b95efa7f46494014 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 19:40:27 +0200 Subject: [PATCH 08/21] Add files via upload --- .../edit_config_first_call_exiting.png | Bin 7889 -> 7390 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/pictures/edit_config_first_call_exiting.png b/docs/pictures/edit_config_first_call_exiting.png index e6e14074c4c0ab3efa0d3e38727e7ed2fc502b90..feecdc9698067f81294fdf413446bc65b48e9a2a 100644 GIT binary patch literal 7390 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 R)3+Z12G@;rOW<~4{|y9wdp!UE literal 7889 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 From d2d203ab93b3ede4a8bcdc327fddbabfa2edbbc9 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 19:51:56 +0200 Subject: [PATCH 09/21] Update edit_config.md --- docs/guide/edit_config.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/guide/edit_config.md b/docs/guide/edit_config.md index a2d5f76..3068c36 100644 --- a/docs/guide/edit_config.md +++ b/docs/guide/edit_config.md @@ -11,14 +11,14 @@ $ cd ~/LightningATM/ $ ./app.py ``` -- When you first start you will probably get an "Exiting.." message because the default display type is wrong. +- When you first start you will get an "No display configuration matched. Exiting...". - + -- You can ignore the message. The config.ini has now been created in the background. -- Now edit the config.ini as described in the next step. +- The config.ini has now been created in the background. +- Now edit the config.ini as described next step to set the display and other configurations. -`Note:` If the display is correct, the process will not "Exiting..". You have to stop it with `CTRL+C`. After a short time, `Manually Interrupted` is shown in the terminal window. +`Note:` If the display is already set correctly, the process will not "Exiting..". You have to stop it with `CTRL+C`. ### Open the config.ini file From f892fe2c793ee775fdfa8afb3f997f58d8535390 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:15:00 +0200 Subject: [PATCH 10/21] Add files via upload --- docs/pictures/we_need_your_help_config.ini.png | Bin 0 -> 20720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/pictures/we_need_your_help_config.ini.png diff --git a/docs/pictures/we_need_your_help_config.ini.png b/docs/pictures/we_need_your_help_config.ini.png new file mode 100644 index 0000000000000000000000000000000000000000..c411173cfd8ecdeee67053da4dc8e6ad0193cb97 GIT binary patch literal 20720 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 Date: Wed, 30 Mar 2022 20:36:02 +0200 Subject: [PATCH 11/21] Update we_need_your_help.md --- docs/guide/we_need_your_help.md | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/docs/guide/we_need_your_help.md b/docs/guide/we_need_your_help.md index af8540a..5012003 100644 --- a/docs/guide/we_need_your_help.md +++ b/docs/guide/we_need_your_help.md @@ -4,21 +4,43 @@ With this update comes a change of the GPIO inputs and outputs. This makes the i In addition, the function of a lockout relay for the coin acceptor was also implemented with the update. A useful function that one or the other has certainly wished for after the coin impulses were lost or the coin value was incorrectly recognized. A detailed documentation can be found in the new chapter [option: lockout relay](/docs/guide/relay.md). +Also coming with this update is the option to enable or disable a camera. This has the advantage that you don't have to edit the app.py file to get rid of the LNURL query display, if you don't have a camera or a button. The option to set different languages will be added later. The implementation will take place in the next update. + To participate, you must update your AMT software once with this new version. Don't worry, we have written a step-by-step instructions for this that really anyone can use and all your configuration data such as wallet and settings will be retained. You can easily undo the whole thing afterwards --- -### 1. Update to the new version +### 1. Expand the config.ini -Log into the RPi and then stop the ATM service once, make a backup from directory LightningATM, clone the new Github to "temp", sync once from "temp" to "LightningAMT" and then delete the "temp" directory that is no longer needed. +Because we are also expanding the config.ini with this update, we unfortunately have to expand config.ini manually, otherwise we get an error message when starting the ATM. Expanding is not difficult and does not have to be undone later. First we log in again via SSH and stop the LightningATM service and call up the config.ini. $ sudo systemctl stop LightningATM.service + $ nano ~/.lightningATM/config.ini + +Then we add the following text between `centname = cent` and `# Set the Fee in %` + + # Set language: "en", "de", "fr", "it", "es", "pt", "tr" currently available + # Code 2 from https://www.science.co.il/language/Codes.php + language = en + + # Do you have a camera? "no" or "yes" + camera = no + + + +- When you finshed with changings in the config.ini, save and exit the editor: `CTRL+x -> y -> ENTER` +- `Help:` If you want to copy and paste the text, take the text to the clipboard and then place the cursor where you want to paste the text and right-click to paste. But important is just `language = en` and `camera = no`. + +### 2. Update to the new version + +Log into the RPi and then stop the ATM service once, make a backup from directory LightningATM, clone the new Github to "temp", sync once from "temp" to "LightningAMT" and then delete the "temp" directory that is no longer needed. + $ mv LightningATM LightningATM_Backup $ git clone --branch master https://github.com/21isenough/LightningATM.git temp $ rsync -a temp/ LightningATM/ $ sudo rm -r temp -### 2. Start and test the version +### 3. Start and test the version $ cd LightningATM $ ./app.py @@ -27,7 +49,7 @@ Log into the RPi and then stop the ATM service once, make a backup from director - The ATM has started and you can use it normally or test the functions. - Stop the ATM with `CTRL+C` -### 3. If you don't like this version and want to get rid of it +### 4. If you don't like this version and want to get rid of it Make the backup the major version again and then delete the backup. @@ -38,7 +60,7 @@ Make the backup the major version again and then delete the backup. - Everthing should now be as befor. Even the wallat data. - Check if you have set a temporary button and reset it with `payoutdelay = 12` in the `config.ini` -### 4. Final step +### 5. Final step Restart the LightningATM service From 3e69c3911884ae5536056a5dbbd31677087f19b5 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:37:11 +0200 Subject: [PATCH 12/21] Update we_need_your_help.md --- docs/guide/we_need_your_help.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/we_need_your_help.md b/docs/guide/we_need_your_help.md index 5012003..c6cf875 100644 --- a/docs/guide/we_need_your_help.md +++ b/docs/guide/we_need_your_help.md @@ -33,7 +33,7 @@ Then we add the following text between `centname = cent` and `# Set the Fee in % ### 2. Update to the new version -Log into the RPi and then stop the ATM service once, make a backup from directory LightningATM, clone the new Github to "temp", sync once from "temp" to "LightningAMT" and then delete the "temp" directory that is no longer needed. +Make a backup from directory LightningATM, clone the new Github to "temp", sync once from "temp" to "LightningAMT" and then delete the "temp" directory that is no longer needed. $ mv LightningATM LightningATM_Backup $ git clone --branch master https://github.com/21isenough/LightningATM.git temp From 3cc2b06ed552972243ee8d566f02e10dc49d6b55 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:38:57 +0200 Subject: [PATCH 13/21] Delete edit_app.md --- docs/guide/edit_app.md | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 docs/guide/edit_app.md diff --git a/docs/guide/edit_app.md b/docs/guide/edit_app.md deleted file mode 100644 index 252ab05..0000000 --- a/docs/guide/edit_app.md +++ /dev/null @@ -1,34 +0,0 @@ -### Special settings in the app.py file - -The `app.py` file is the main program of the ATM. Here you can easily customize the code. But be careful when making changes here. - -##### Open the app.py - -``` -$ cd ~/LightningATM/ -$ nano app.py -``` - -##### Optional setting *only for the pocket version:* Skip the "Prepare for LNURL" page: - -- Search for `display.update_lnurl_cancel_notice()` with `CTRL+W` or just scroll down a few lines. -- There is a place where it says `if activewallet == "lntxbot"`, please edit the two lines below (see picture) - -###### Comment out the following two lines with `#` - -``` - # display.update_lnurl_cancel_notice() - # time.sleep(5) -``` - --> This will skip the LNURL "query page" as it is not relevant to the pocket version - -app.py - Skip the "Prepare for LNURL" (example only fΓΌr ATM without push button) -![edit app](../pictures/edit_app_terminal_1.png) - ---- - -#### [edit_config](/docs/guide/edit_config.md) ᐊ previous | next ᐅ [debugging and tmux](/docs/guide/tmux_monitoring.md) - - - From f5d2a5bb2fe60aeb6dd40332a6c86b3a9a4f36cb Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:40:37 +0200 Subject: [PATCH 14/21] Update edit_config.md --- docs/guide/edit_config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/edit_config.md b/docs/guide/edit_config.md index 3068c36..707879a 100644 --- a/docs/guide/edit_config.md +++ b/docs/guide/edit_config.md @@ -120,7 +120,7 @@ display ATM turned off! --- -#### [display](/docs/guide/display.md) ᐊ previous | next ᐅ [edit_app](/docs/guide/edit_app.md) +#### [display](/docs/guide/display.md) ᐊ previous | next ᐅ [debugging and tmux](/docs/guide/tmux_monitoring.md) From 12dc5343eb5f34715720dedba0e3087cd06be47f Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:41:46 +0200 Subject: [PATCH 15/21] Update tmux_monitoring.md --- docs/guide/tmux_monitoring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/tmux_monitoring.md b/docs/guide/tmux_monitoring.md index b262b5c..646f0ae 100644 --- a/docs/guide/tmux_monitoring.md +++ b/docs/guide/tmux_monitoring.md @@ -55,5 +55,5 @@ Two withdrawals were made here. Once 5 cents and once 1.60 euros (10 cents + 50 --- -#### [edit_app](/docs/guide/edit_app.md) ᐊ previous | next ᐅ [autostart](/docs/guide/autostart.md) +#### [edit_config](/docs/guide/edit_config.md) ᐊ previous | next ᐅ [autostart](/docs/guide/autostart.md) From 3345abe373b26a09d4768cce3e6dc97b00612958 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:42:18 +0200 Subject: [PATCH 16/21] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index bc36abf..e226842 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,6 @@ _Carry out the points step by step as described here. This is the quickest way t - [sd card and wifi](/docs/guide/sdcard_and_wifi.md) - [display](/docs/guide/display.md) - [edit config.ini](/docs/guide/edit_config.md) -- [edit app.py](/docs/guide/edit_app.md) - [debugging and tmux](/docs/guide/tmux_monitoring.md) - [autostart](/docs/guide/autostart.md) - [aditional information and tips](/docs/guide/information_and_tips.md) From 74e2e212d857f55471536a11a6c4502313656c09 Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:51:36 +0200 Subject: [PATCH 17/21] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e226842..f57961b 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Full Version | Pocket Version ### Installation guideline -_Carry out the points step by step as described here. This is the quickest way to succeed._ +_Carry out the points step by step as described here. This is the quickest way to succeed._ 😊 - [voltage converter](/docs/guide/voltage_converter.md) - [coin validator](/docs/guide/coin_validator.md) @@ -37,7 +37,9 @@ _Carry out the points step by step as described here. This is the quickest way t - [option: lockout relay](/docs/guide/relay.md) - [option: RPi image from scratch](/docs/guide/add_on_zero2.md) -A comprehensive guide on how to setup the LightningATM can be found here https://docs.lightningatm.me. Also join the Telegram group of LightningATM builders here https://t.me/lightningatm_building or contact 21isenough on Twitter (https://twitter.com/21isenough). +If you want to update your ATM version, see this guide: [Update](/docs/guide/we_need_your_help.md) + +More information of how to setup the LightningATM can be found here https://docs.lightningatm.me. Also join the Telegram group of LightningATM builders here https://t.me/lightningatm_building or contact 21isenough on Twitter (https://twitter.com/21isenough). To see the Lightning ATM in action, check out this video [LightningATM in action](https://twitter.com/21isenough/status/1170808396955738114?s=20) From 219e8af835f36a07bcce7177b0da1561574747ee Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 21:08:17 +0200 Subject: [PATCH 18/21] Update autostart.md --- docs/guide/autostart.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/guide/autostart.md b/docs/guide/autostart.md index dfc9664..0fba594 100644 --- a/docs/guide/autostart.md +++ b/docs/guide/autostart.md @@ -1,6 +1,6 @@ -## Autostart +## Autostart and start/stop the ATM -###### Activate the Service: +###### Install and activate the autostart service: ``` $ cd ~/LightningATM @@ -9,7 +9,9 @@ $ sudo systemctl enable LightningATM.service $ sudo reboot ``` -###### Other commands to control the service: +- From now on the ATM will start automatically after booting. + +###### Commands to control the ATM: ``` $ sudo systemctl status LightningATM.service @@ -17,7 +19,8 @@ $ sudo systemctl stop LightningATM.service $ sudo systemctl start LightningATM.service ``` -- Note: From now on the ATM will start automatically after booting. If you want to observe the app.py in tmux, you should `stop` the "LightningATM.service" manually, bevor you start the app.py in the tmux. Don't forget to `start` the service again afterwards. +- `Note:` When the autostart service is once installed and activated, you only need to "start" the ATM if you previously stopped the ATM. +- `Note:` If you want to observe the app.py in tmux, you musst `stop` the "LightningATM.service" manually, bevor you start the app.py in the tmux. Then restart the ATM with the "start" command or simply restart the entire ATM afterwards by unplugging the power and plugging it back in. --- From bec3674ede8e590ae2284d2a24208044305c415f Mon Sep 17 00:00:00 2001 From: Axel <84231978+AxelHamburch@users.noreply.github.com> Date: Wed, 30 Mar 2022 21:35:41 +0200 Subject: [PATCH 19/21] Update we_need_your_help.md --- docs/guide/we_need_your_help.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/guide/we_need_your_help.md b/docs/guide/we_need_your_help.md index c6cf875..ef1b0c5 100644 --- a/docs/guide/we_need_your_help.md +++ b/docs/guide/we_need_your_help.md @@ -1,4 +1,4 @@ -## Would you like to help test the new version? πŸ“–πŸ§ +## Would you like to help test the new version? πŸ“œπŸ§ With this update comes a change of the GPIO inputs and outputs. This makes the inputs less sensitive to EMI interference that could lead to unwanted pulses. So if you had sporadic problems with your ATM, you should definitely try this update. @@ -6,6 +6,8 @@ In addition, the function of a lockout relay for the coin acceptor was also impl Also coming with this update is the option to enable or disable a camera. This has the advantage that you don't have to edit the app.py file to get rid of the LNURL query display, if you don't have a camera or a button. The option to set different languages will be added later. The implementation will take place in the next update. +And finally, as a bit of service, the ATM briefly shows the Out of Service display once when it starts up. + To participate, you must update your AMT software once with this new version. Don't worry, we have written a step-by-step instructions for this that really anyone can use and all your configuration data such as wallet and settings will be retained. You can easily undo the whole thing afterwards --- From ea2e68b5b341df61a753f733347e10fc62055391 Mon Sep 17 00:00:00 2001 From: Ingo <86051141+lightisfaster@users.noreply.github.com> Date: Wed, 30 Mar 2022 23:29:18 +0200 Subject: [PATCH 20/21] CHG: Use false in case of no camera is used --- example_config.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example_config.ini b/example_config.ini index 691d2de..e580369 100644 --- a/example_config.ini +++ b/example_config.ini @@ -11,8 +11,8 @@ centname = cent # Code 2 from https://www.science.co.il/language/Codes.php language = en -# Do you have a camera? "no" or "yes" -camera = no +# Do you have a camera? "False" or "True" +camera = False # Set the Fee in % fee = 2 From 80d7ae772f11a0ac7ed83be6813396fe3b1a865f Mon Sep 17 00:00:00 2001 From: Ingo <86051141+lightisfaster@users.noreply.github.com> Date: Wed, 30 Mar 2022 23:35:06 +0200 Subject: [PATCH 21/21] CHG: True in case of using camera --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index d640685..2c6bbcd 100755 --- a/app.py +++ b/app.py @@ -117,7 +117,7 @@ def button_pushed(): # 1. Ask if wallet supports LNURL, if camera available # 2. Offer to cancel and switch to normal scan # 3. Process payment - if activewallet == "lntxbot" and camera == "yes": + if activewallet == "lntxbot" and camera == True: display.update_lnurl_cancel_notice() time.sleep(5) if config.PUSHES == 1: