diybookscanner / spreadpi Goto Github PK
View Code? Open in Web Editor NEWRaspberry Pi image for controlling a DIYBookScanner via spreads
License: GNU General Public License v2.0
Raspberry Pi image for controlling a DIYBookScanner via spreads
License: GNU General Public License v2.0
Whatever we can shave off of the pi's boot time before loading spreads should go in here. Let's start by measuring boot time with a fast sd card.
This issue was originally filed by @duerig in the Spreads issues: DIYBookScanner/spreads#134
We do a good job of bootstrapping SpreadPi onto a wired network. But not on a wireless one. Adding wireless support means the following packages/configuration (via Jonathan Campbell):
wpasupplicant
firmware-ralink (this installs the firmware for my particular wirless usb device - other wireless will need different)
I then added the following to /etc/network/interfaces with the following for wpa-psk:
auto wlan0
iface wlan0 inet dhcp
wireless-mode managed
wpa-ssid myssid
wpa-psk mykey
But the problem is the ssid/key for a wifi network. Without network access, the user cannot set these parameters. And ideally, we want to allow users to use SpreadPi more or less as an appliance even if they don't have detailed knowledge of Unix.
So, a few possibilities:
(1) Detect when there is no network connection (or when using a wifi adapter rather than a typical ethernet) and notify the user via the camera screen.
(2) Have the user enter this information in a (laborious) way via the camera controls and screen.
(3) Have the user plug in a USB keyboard and use that combined with the camera screen to enter ssid/password.
(4) Parameterize the image in some way such that the user could run a program on their (WIndows or Mac) PC that would modify the .img file to have the appropriate ssid/password.
(5) After creating the image, instruct the users to run a program which modified the card after the image has been written to it to add the config information.
I don't plan to act on any of this immediately. Just brainstorming ideas on how to make this scenario work for those who aren't necessarily comfortable with Linux and just want a Spread appliance.
2014-03-20 23:16:31 (1.20 MB/s) - `/usr/bin/rpi-update' saved [7174/7174]
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
*** Performing self-update
--2014-03-20 23:16:31-- https://github.com/Hexxeh/rpi-update/raw/master/rpi-update
Resolving github.com (github.com)... 192.30.252.129
Connecting to github.com (github.com)|192.30.252.129|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update [following]
--2014-03-20 23:16:53-- https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.31.18.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.31.18.133|:443... connected.
GnuTLS: A TLS warning alert has been received.
Unable to establish SSL connection.
!!! Failed to download update for rpi-update!
!!! Make sure you have ca-certificates installed and that the time is set correctly
(OWN.TXT not yet set on any of the two attached a810 cameras)
2014-03-21 20:23:19,016 Starting scanning station server in "scanner" mode [spreadsplug.web] [DEBUG]
2014-03-21 20:23:19,057 found extension EntryPoint.parse('chdkcamera = spreadsplug.dev.chdkcamera:CHDKCameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:23:19,064 found extension EntryPoint.parse('a2200 = spreadsplug.dev.chdkcamera:CanonA2200CameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:23:19,067 Finding devices for driver "<stevedore.driver.DriverManager object at 0x27a7d30>" [spreads.plugin] [DEBUG]
2014-03-21 20:23:19,239 No devices could be found at startup. [spreadsplug.web] [WARNING]
2014-03-21 20:27:25,572 2606728 [spreadsplug.web.database] [DEBUG]
2014-03-21 20:27:25,576 Initializing workflow cache [spreadsplug.web.database] [INFO]
2014-03-21 20:27:25,579 Obtaining all workflows from database. [spreadsplug.web.database] [DEBUG]
2014-03-21 20:27:25,583 Initializing database. [spreadsplug.web.database] [INFO]
2014-03-21 20:27:26,859 Creating plugin manager [spreads.plugin] [DEBUG]
2014-03-21 20:27:26,869 found extension EntryPoint.parse('scantailor = spreadsplug.scantailor:ScanTailorPlugin') [stevedore] [DEBUG]
2014-03-21 20:27:26,872 found extension EntryPoint.parse('web = spreadsplug.web:WebCommands') [stevedore] [DEBUG]
2014-03-21 20:27:26,879 found extension EntryPoint.parse('tesseract = spreadsplug.tesseract:TesseractPlugin') [stevedore] [DEBUG]
2014-03-21 20:27:26,882 found extension EntryPoint.parse('djvubind = spreadsplug.djvubind:DjvuBindPlugin') [stevedore] [DEBUG]
2014-03-21 20:27:26,885 found extension EntryPoint.parse('gui = spreadsplug.gui:GuiCommand') [stevedore] [DEBUG]
2014-03-21 20:27:26,888 found extension EntryPoint.parse('autorotate = spreadsplug.autorotate:AutoRotatePlugin') [stevedore] [DEBUG]
2014-03-21 20:27:26,891 found extension EntryPoint.parse('intervaltrigger = spreadsplug.intervaltrigger:IntervalTrigger') [stevedore] [DEBUG]
2014-03-21 20:27:26,894 found extension EntryPoint.parse('hidtrigger = spreadsplug.hidtrigger:HidTrigger') [stevedore] [DEBUG]
2014-03-21 20:27:26,902 Initializing HidTrigger plugin [spreadsplug.hidtrigger] [DEBUG]
2014-03-21 20:27:26,904 found extension EntryPoint.parse('pdfbeads = spreadsplug.pdfbeads:PDFBeadsPlugin') [stevedore] [DEBUG]
2014-03-21 20:27:26,912 found extension EntryPoint.parse('chdkcamera = spreadsplug.dev.chdkcamera:CHDKCameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:27:26,919 found extension EntryPoint.parse('a2200 = spreadsplug.dev.chdkcamera:CanonA2200CameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:28:40,736 Initializing workflow /home/spreads/scans/Test [Workflow] [DEBUG]
2014-03-21 20:28:40,748 Creating plugin manager [spreads.plugin] [DEBUG]
2014-03-21 20:28:40,762 found extension EntryPoint.parse('scantailor = spreadsplug.scantailor:ScanTailorPlugin') [stevedore] [DEBUG]
2014-03-21 20:28:40,777 found extension EntryPoint.parse('web = spreadsplug.web:WebCommands') [stevedore] [DEBUG]
2014-03-21 20:28:40,786 found extension EntryPoint.parse('tesseract = spreadsplug.tesseract:TesseractPlugin') [stevedore] [DEBUG]
2014-03-21 20:28:40,791 found extension EntryPoint.parse('djvubind = spreadsplug.djvubind:DjvuBindPlugin') [stevedore] [DEBUG]
2014-03-21 20:28:40,794 found extension EntryPoint.parse('gui = spreadsplug.gui:GuiCommand') [stevedore] [DEBUG]
2014-03-21 20:28:40,799 found extension EntryPoint.parse('autorotate = spreadsplug.autorotate:AutoRotatePlugin') [stevedore] [DEBUG]
2014-03-21 20:28:40,803 found extension EntryPoint.parse('intervaltrigger = spreadsplug.intervaltrigger:IntervalTrigger') [stevedore] [DEBUG]
2014-03-21 20:28:40,807 found extension EntryPoint.parse('hidtrigger = spreadsplug.hidtrigger:HidTrigger') [stevedore] [DEBUG]
2014-03-21 20:28:40,815 Initializing HidTrigger plugin [spreadsplug.hidtrigger] [DEBUG]
2014-03-21 20:28:40,819 found extension EntryPoint.parse('pdfbeads = spreadsplug.pdfbeads:PDFBeadsPlugin') [stevedore] [DEBUG]
2014-03-21 20:28:40,989 Writing workflow to database:
DbWorkflow(id=None, name='Test', step=None, step_done=None, capture_start=None, config='{"device": {"shutter_speed": "1/25", "flip_target_pages": false, "focus_distance": 545, "sensitivity": 80, "shoot_raw": false, "zoom_level": 3, "chdkptp_path": "/usr/local/lib/chdkptp", "parallel_capture": true, "dpi": 300}, "web": {"debug": false, "mode": "scanner", "standalone_device": true, "database": "~/.config/spreads/workflows.db", "project_dir": "~/scans", "postprocessing_server": ""}, "verbose": false, "logfile": "/var/log/spreads/spread.log", "loglevel": "debug", "plugins": ["web", "hidtrigger"], "capture": {"capture_keys": [" ", "b"]}, "driver": "chdkcamera"}') [spreadsplug.web.database] [DEBUG]
2014-03-21 20:28:41,037 Workflow written to database with id 1 [spreadsplug.web.database] [DEBUG]
2014-03-21 20:28:41,372 Workflows updated [spreadsplub.web] [DEBUG]
2014-03-21 20:28:41,421 Finishing previous workflows [spreadsplub.web] [DEBUG]
2014-03-21 20:28:41,438 Preparing capture. [Workflow] [INFO]
2014-03-21 20:28:41,469 found extension EntryPoint.parse('chdkcamera = spreadsplug.dev.chdkcamera:CHDKCameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:28:41,481 found extension EntryPoint.parse('a2200 = spreadsplug.dev.chdkcamera:CanonA2200CameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:28:41,498 Finding devices for driver "<stevedore.driver.DriverManager object at 0x2831970>" [spreads.plugin] [DEBUG]
2014-03-21 20:28:41,615 Device has serial number 06458DD4B2B142D9B41D10FA7681F40C [ChdkCamera] [DEBUG]
2014-03-21 20:28:41,650 Calling chdkptp with arguments: [u'/usr/local/lib/chdkptp/chdkptp', '-c-d=006 -b=001', '-eset cli_verbose=2', '-eluar return(get_buildinfo())'] [ChdkCamera] [DEBUG]
2014-03-21 20:28:41,780 Workflows updated [spreadsplub.web] [DEBUG]
2014-03-21 20:28:42,205 Call returned:
['unexpected return code 0x2005', "ERROR: /usr/local/lib/chdkptp/lua/chdku.lua:118: attempt to index field 'apiver' (a nil value)", 'stack traceback:', "\t/usr/local/lib/chdkptp/lua/chdku.lua:118: in function 'is_ver_compatible'", '\t/usr/local/lib/chdkptp/lua/chdku.lua:627: in function </usr/local/lib/chdkptp/lua/chdku.lua:609>', '\t(tail call): ?', '\t/usr/local/lib/chdkptp/lua/cli.lua:596: in function </usr/local/lib/chdkptp/lua/cli.lua:593>', '\t(tail call): ?', '\t(tail call): ?', "\t[C]: in function 'xpcall'", "\t/usr/local/lib/chdkptp/lua/cli.lua:239: in function 'execute'", "\t/usr/local/lib/chdkptp/lua/main.lua:191: in function 'do_execute_option'", "\t/usr/local/lib/chdkptp/lua/main.lua:211: in function 'do_no_gui_startup'", '\t/usr/local/lib/chdkptp/lua/main.lua:227: in main chunk', "\t[C]: in function 'require'", '\t[string "require(\'main\')"]:1: in main chunk', 'connected: Canon PowerShot A810, max packet size 512', 'error'] [ChdkCamera] [DEBUG]
2014-03-21 20:28:42,220 Exception on /workflow/1/prepare_capture [POST] [spreadsplug.web] [ERROR]
Traceback (most recent call last):
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/web/web.py", line 408, in prepare_capture
workflow.prepare_capture()
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreads/workflow.py", line 153, in prepare_capture
if any(dev.target_page is None for dev in self.devices):
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreads/workflow.py", line 79, in devices
self._devices = plugin.get_devices(self.config)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreads/plugin.py", line 359, in get_devices
devices = list(driver_class.yield_devices(config['device']))
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 63, in yield_devices
yield cls(config, dev)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 94, in __init__
get_result=True)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 241, in _execute_lua
output = self._run("{0} {1}".format(cmd, script))
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 234, in _run
raise CHDKPTPException("\n".join(output))
CHDKPTPException: unexpected return code 0x2005
ERROR: /usr/local/lib/chdkptp/lua/chdku.lua:118: attempt to index field 'apiver' (a nil value)
stack traceback:
/usr/local/lib/chdkptp/lua/chdku.lua:118: in function 'is_ver_compatible'
/usr/local/lib/chdkptp/lua/chdku.lua:627: in function </usr/local/lib/chdkptp/lua/chdku.lua:609>
(tail call): ?
/usr/local/lib/chdkptp/lua/cli.lua:596: in function </usr/local/lib/chdkptp/lua/cli.lua:593>
(tail call): ?
(tail call): ?
[C]: in function 'xpcall'
/usr/local/lib/chdkptp/lua/cli.lua:239: in function 'execute'
/usr/local/lib/chdkptp/lua/main.lua:191: in function 'do_execute_option'
/usr/local/lib/chdkptp/lua/main.lua:211: in function 'do_no_gui_startup'
/usr/local/lib/chdkptp/lua/main.lua:227: in main chunk
[C]: in function 'require'
[string "require('main')"]:1: in main chunk
error
2014-03-21 20:28:57,129 Triggering capture. [Workflow] [INFO]
2014-03-21 20:28:57,143 Sending capture command to devices [Workflow] [DEBUG]
2014-03-21 20:28:57,159 found extension EntryPoint.parse('chdkcamera = spreadsplug.dev.chdkcamera:CHDKCameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:28:57,167 found extension EntryPoint.parse('a2200 = spreadsplug.dev.chdkcamera:CanonA2200CameraDevice') [stevedore.extension] [DEBUG]
2014-03-21 20:28:57,171 Finding devices for driver "<stevedore.driver.DriverManager object at 0x28b18d0>" [spreads.plugin] [DEBUG]
2014-03-21 20:28:57,269 Device has serial number 06458DD4B2B142D9B41D10FA7681F40C [ChdkCamera] [DEBUG]
2014-03-21 20:28:57,297 Calling chdkptp with arguments: [u'/usr/local/lib/chdkptp/chdkptp', '-c-d=006 -b=001', '-eset cli_verbose=2', '-eluar return(get_buildinfo())'] [ChdkCamera] [DEBUG]
2014-03-21 20:28:57,529 Workflows updated [spreadsplub.web] [DEBUG]
2014-03-21 20:28:57,895 Call returned:
['unexpected return code 0x2005', "ERROR: /usr/local/lib/chdkptp/lua/chdku.lua:118: attempt to index field 'apiver' (a nil value)", 'stack traceback:', "\t/usr/local/lib/chdkptp/lua/chdku.lua:118: in function 'is_ver_compatible'", '\t/usr/local/lib/chdkptp/lua/chdku.lua:627: in function </usr/local/lib/chdkptp/lua/chdku.lua:609>', '\t(tail call): ?', '\t/usr/local/lib/chdkptp/lua/cli.lua:596: in function </usr/local/lib/chdkptp/lua/cli.lua:593>', '\t(tail call): ?', '\t(tail call): ?', "\t[C]: in function 'xpcall'", "\t/usr/local/lib/chdkptp/lua/cli.lua:239: in function 'execute'", "\t/usr/local/lib/chdkptp/lua/main.lua:191: in function 'do_execute_option'", "\t/usr/local/lib/chdkptp/lua/main.lua:211: in function 'do_no_gui_startup'", '\t/usr/local/lib/chdkptp/lua/main.lua:227: in main chunk', "\t[C]: in function 'require'", '\t[string "require(\'main\')"]:1: in main chunk', 'connected: Canon PowerShot A810, max packet size 512', 'error'] [ChdkCamera] [DEBUG]
2014-03-21 20:28:57,904 Exception on /workflow/1/capture [POST] [spreadsplug.web] [ERROR]
Traceback (most recent call last):
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/web/web.py", line 426, in trigger_capture
workflow.capture(retake=('retake' in request.args))
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreads/workflow.py", line 191, in capture
for dev in self.devices:
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreads/workflow.py", line 79, in devices
self._devices = plugin.get_devices(self.config)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreads/plugin.py", line 359, in get_devices
devices = list(driver_class.yield_devices(config['device']))
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 63, in yield_devices
yield cls(config, dev)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 94, in __init__
get_result=True)
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 241, in _execute_lua
output = self._run("{0} {1}".format(cmd, script))
File "/home/spreads/virtspreads/local/lib/python2.7/site-packages/spreads-0.0.0-py2.7.egg/spreadsplug/dev/chdkcamera.py", line 234, in _run
raise CHDKPTPException("\n".join(output))
CHDKPTPException: unexpected return code 0x2005
ERROR: /usr/local/lib/chdkptp/lua/chdku.lua:118: attempt to index field 'apiver' (a nil value)
stack traceback:
/usr/local/lib/chdkptp/lua/chdku.lua:118: in function 'is_ver_compatible'
/usr/local/lib/chdkptp/lua/chdku.lua:627: in function </usr/local/lib/chdkptp/lua/chdku.lua:609>
(tail call): ?
/usr/local/lib/chdkptp/lua/cli.lua:596: in function </usr/local/lib/chdkptp/lua/cli.lua:593>
(tail call): ?
(tail call): ?
[C]: in function 'xpcall'
/usr/local/lib/chdkptp/lua/cli.lua:239: in function 'execute'
/usr/local/lib/chdkptp/lua/main.lua:191: in function 'do_execute_option'
/usr/local/lib/chdkptp/lua/main.lua:211: in function 'do_no_gui_startup'
/usr/local/lib/chdkptp/lua/main.lua:227: in main chunk
[C]: in function 'require'
[string "require('main')"]:1: in main chunk
error
The web interface lacks an option to select a white balance. Even setting a white balance option in .config/spread/config.yaml and restarting the spread server does not set the white balance option properly.
Hi there,
I've got a processing-server at an adress running, acessible through my webbrowser. And a spreadpi, accessible through webinterface, too. Sadly the spreadpi doesn't find any running processing-server. Are there any ports, besides 5000, that a regularly used for the processing-server that perhaps aren't open?
Info: my server runs in a chroot in my local network. webinterface is accessible from all devices in my network.
Hi there,
I can't download latest build. The server seems to be not responding.
Anything to do?
Thanks.
When I try to enter virtualenv with "source ~/virtspreads/bin/activate" I get "-bash: /home/spreads/virtspreads/bin/activate: No such file or directory"
Do I still have go get in the virtualenv to configure spreadpi?
When using spreadpi without the HID pedal, various errors are displayed in the web interface indicating that the HID pedal is not plugged in. There should be a way to let spreadpi know that this is a normal situation for those of us who haven't bought pedals.
I installed the 24-Oct-2014 03:23 build, it crashes during startup.
I replaced with a version provided by Scann:
http://jonathonduerig.com/scanning/duerig-test5.img.gz
Which works perfectly.
My setup is two Canon A2500 cameras with CHDK installed ( bootable ), brand new raspberry Pi B+. I turn on the cameras before powering up the pi.
If someone can explain to me how I can run the spreadpi code in such a way that I can capture the error messages, I'll happily re-install the Oct 24th code, re-run, capture the messages and repostpost. In the meantime, I attach a ( LARGE ) Jpeg screenshot of the error messages which come up.
Also,
I am a newbie to GitHub and SpreadPI, so please let me know if I am using GitHub inappropriately.
Spreadpi is a great product , I really appreciate what you are doing, many thanks.
A number of web interface options (especially the ones in the workflow list) are merely icons with no informative text or popups. Add alt text or some other kind of explanatory material to aid discoverability when using the web interface.
I was able to install SpreadPi from the latest image ( 27-May-2015 04:52 ) and I was able to configure Spreads to use my Canon PowerShot A3200 IS.
Once I start, access Spread from browser, and try to take any pictures, I get the error "No data received from camera".
Full details:
reset high-speed USB device number 4 using dwc_otg
"usbfs: process 272 (spread) did not claim interface 0 before use
tornado.access | 500 POST /api/workflow/63eeb59f-93f4-405b-a5d7-d5458aa710bd/capture (192.168.1.90) 11192.73ms
spreadsplug.web | No data received from camera.
I'm not sure what to look for next :\ Has anyone encountered this before?
As pointed out in IRC
Hi guys
I keep getting the same error: Tuple index out of range. Occurs after 3-5 captures no matter what I try. It occurs both in the web interface and cli. I run Version 0.5git20150527.c802
Here's a copy paste of the error:
spreads encountered an error: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/spreads/main.py", line 321, in main run() File "/usr/local/lib/python2.7/dist-packages/spreads/main.py", line 308, in run args.subcommand(config) File "/usr/local/lib/python2.7/dist-packages/spreads/cli.py", line 388, in wizard capture(config) File "/usr/local/lib/python2.7/dist-packages/spreads/cli.py", line 335, in capture workflow.prepare_capture() File "/usr/local/lib/python2.7/dist-packages/spreads/workflow.py", line 883, in prepare_capture util.check_futures_exceptions(futures) File "/usr/local/lib/python2.7/dist-packages/spreads/util.py", line 119, in check_futures_exceptions raise next(x for x in futures if x.exception()).exception() IndexError: tuple index out of range
What do I do? best regards
Steps to reproduce:
In "Workflow Name" field write "Here's Where to Write The Title Of Your Book".
Try to capture some images. The capture will fail, even though the cameras appear to configure correctly.
Remove apostrophe, titling workflow "Heres Where to Write The Title Of Your Book" - images can be successfully captured.
Not sure if this is spreads-wide so I am putting it in SpreadPi.
Compare:
Freshly booted machine:
http://buildbot.diybookscanner.eu:8010/builders/runtests/builds/27/steps/shell/logs/stdio
http://buildbot.diybookscanner.eu/buildlog_git%40c424ea2_13793.txt
After a few build runs:
http://buildbot.diybookscanner.eu:8010/builders/runtests/builds/26/steps/shell/logs/stdio
http://buildbot.diybookscanner.eu/buildlog_git%40c424ea2_13508.txt
I started up a pi using an image built from these scripts. I booted it up, and everything started fine, except spreads immediately died because my cameras weren't plugged in! I had to manually start it after the cameras had been turned on.
Something I haven't tested, but will probably lead to similar results: what happend if I unplug a camera while the spreads daemon is running? will it die then too?
I just downloaded the latest nightly build and there are various pieces of the documentation that appear out of date for the SpreadPi image.
First, the location of the nightly builds linked from the forum and various places is incorrect. It doesn't link to the /nightly/ path. See, for example, this post: http://www.diybookscanner.org/forum/viewtopic.php?f=35&t=2999
Second, the latest build no longer appears to generate logs in /var/log/spreads. Where is the log file now?
Third, there is no ~/virtspreads folder any more. So some of the documentation about how to set up the virtual environment and run manual configuration listed at https://github.com/DIYBookScanner/spreadpi/wiki will no longer work.
Hi, we are from Lab-Experimental, Instituto Tecnológico de Costa Rica. We followed the steps in this guide http://www.diybookscanner.org/forum/viewtopic.php?f=35&t=2999 to run spreadpi. Everything works fine until the moment when we press the button to Capture in the Web Interface. We are getting the next error message in the terminal
Is there an easy way to log the output of the scripts executed in chroot, so one can track down problems occuring there? Currently I just run the commands from the failing script in the chroot to reproduce the error and that seems odd.
And by easy I don't think about logging it inside the chroot. That obviously would work, but producing a lot more logs...
To quote @matti-kariluoma:
A raspberry pi stack that is low-tech (no external laptop, router, etc.) and dumps images directly to an attached usb stick.
I had a prototype running in the past (Debian based). Gunirus has the board and the root file system that was on it. He will upload some of the relevant files from my old experiment.
- Automounting USB mass storage devices itself is not that difficult. See https://wiki.debian.org/AutoFs .
- Trickier thing: FAT32 usb mass storage devices are easily corrupted if not unmounted properly. iirc, I used a beeping sound on the cameras to tell when it was safe to remove the stick.
This issue was copied from an earler "raspberry-pi-pauper-build" repository, which is now removed, to avoid confusion and code duplication.
Hi there,
I guess spreads-sdist.tar.gz is a precompiled version of spreads and depencies. How is it created?
Yours
BoredLand
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.