-
• #2
There is command line tool, look for Espruino Command-line tool in
http://www.espruino.com/Programming
https://www.npmjs.com/package/espruino
you could redirect the output to a file.
-
• #3
Thanks for that tip, unfortunately I'm having some trouble installing the CLI b/c I can't install winnus. Log output below, any ideas?
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:\Users\tony> npm install -g espruino npm WARN deprecated tar.gz@1.0.7: ⚠️ WARNING ⚠️ tar.gz module has been deprecated and your application is vulnerable. Please use tar module instead: https://npmjs.com/tar npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated node-pre-gyp@0.17.0: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. C:\Users\tony\AppData\Roaming\npm\espruino -> C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\bin\espruino-cli.js > usb@1.7.1 install C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\usb > prebuild-install --runtime napi --target 4 --verbose || node-gyp rebuild prebuild-install info begin Prebuild-install version 5.3.6 prebuild-install info looking for cached prebuild @ C:\Users\tony\AppData\Roaming\npm-cache\_prebuilds\96eb89-usb-v1.7.1-napi-v4-win32-x64.tar.gz prebuild-install info found cached prebuild prebuild-install info unpacking @ C:\Users\tony\AppData\Roaming\npm-cache\_prebuilds\96eb89-usb-v1.7.1-napi-v4-win32-x64.tar.gz prebuild-install info unpack resolved to C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\usb\build\Release\usb_bindings.node prebuild-install info install Successfully installed prebuilt binary! > @abandonware/bluetooth-hci-socket@0.5.3-7 install C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\bluetooth-hci-socket > node-pre-gyp install --fallback-to-build node-pre-gyp WARN Using request for node-pre-gyp https download node-pre-gyp WARN Tried to download(404): https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-7/bluetooth_hci_socket-0.5.3-7-node-v72-win32-x64.tar.gz node-pre-gyp WARN Pre-built binaries not found for @abandonware/bluetooth-hci-socket@0.5.3-7 and node@12.18.3 (node-v72 ABI, unknown) (falling back to source compile with node-gyp) Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch. win_delay_load_hook.cc bluetooth_hci_socket.vcxproj -> C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\blu etooth-hci-socket\build\Release\\bluetooth_hci_socket.node Copying C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\bluetooth-hci-socket\build\ Release\/bluetooth_hci_socket.node to C:/Users/tony/AppData/Roaming/npm/node_modules/espruino/node_modules/@abandonwa re/bluetooth-hci-socket/lib/binding\bluetooth_hci_socket.node 1 file(s) copied. > @abandonware/noble@1.9.2-14 install C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\noble > node-gyp rebuild C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\noble>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch. win_delay_load_hook.cc noble.vcxproj -> C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\noble\build\Releas e\\noble.node > winnus@0.0.6 install C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\winnus > node-gyp rebuild C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\winnus>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch. winnus.cpp win_delay_load_hook.cc C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\winnus\cpp\winnus.cpp(39,11): error C2039: 'Handle ': is not a member of 'v8' [C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\winnus\build\winnus.vc xproj] C:\Users\tony\AppData\Local\node-gyp\Cache\12.18.3\include\node\v8-platform.h(16): message : see declaration of 'v8' [C :\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\winnus\build\winnus.vcxproj] ... gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:315:20) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12) gyp ERR! System Windows_NT 10.0.19042 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\winnus gyp ERR! node -v v12.18.3 gyp ERR! node-gyp -v v5.1.0 gyp ERR! not ok npm WARN optional SKIPPING OPTIONAL DEPENDENCY: winnus@0.0.6 (node_modules\espruino\node_modules\winnus): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: winnus@0.0.6 install: `node-gyp rebuild` npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1 + espruino@0.1.38 added 28 packages from 102 contributors and updated 1 package in 26.988s PS C:\Users\tony> espruino -d Puck.js Espruino Command-line Tool 0.1.38 ----------------------------------- Searching for device named "Puck.js" undefined:55 } else throw err; ^ Error: No compatible USB Bluetooth 4.0 device found! at BluetoothHciSocket.bindUser (C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\bluetooth-hci-socket\lib\usb.js:91:11) at BluetoothHciSocket.bindRaw (C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\bluetooth-hci-socket\lib\usb.js:47:8) at Hci.init (C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\noble\lib\hci-socket\hci.js:120:18) at NobleBindings.init (C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\noble\lib\hci-socket\bindings.js:93:13) at C:\Users\tony\AppData\Roaming\npm\node_modules\espruino\node_modules\@abandonware\noble\lib\noble.js:61:24 at processTicksAndRejections (internal/process/task_queues.js:79:11)
-
• #4
Ahh, ok - installing those tools on Windows is a bit of a pain.
What I'd suggest is that you make a simple Web Bluetooth page. The code you need is basically what's in the second code example on https://www.espruino.com/Data+Collection#automatically-recovering-data
And there's a bit more info on getting started on https://www.espruino.com/Web+Bluetooth
However I've been asked about this a few times now, and it does make a lot of sense to have this functionality inside the Web IDE. I'll look into whether I can get an update in quickly to add the feature.
-
• #5
However I've been asked about this a few times now, and it does make a lot of sense to have this functionality inside the Web IDE. I'll look into whether I can get an update in quickly to add the feature.
That would be great to have!
-
• #6
Hey, while you are there, what about adding "simple" graph like one in MakeCode or Arduino Ide? :)
-
• #7
Ok, it's live now!
- https://www.espruino.com/ide/ (you may need to ctrl+reload the page to force it to load the new version)
- Settings -> General -> Terminal Log Icon
- There's a new icon in the left of the terminal. Click it and you can start logging, then later you can save to a file.
It doesn't 'stream' to a file, but realistically you could record hundreds of megabytes of data without running into any problems (and this way it's easy to integrate with the existing codebase)
- https://www.espruino.com/ide/ (you may need to ctrl+reload the page to force it to load the new version)
-
• #8
Wow, many thanks :-)
It works fine at least with emulator.
Finally saving dumps of SPI or internal flash is easy. -
• #9
Nice!
What about optionally saving to localStorage, so you don't lose data if you accidentally close the tab, forget it, etc?
https://github.com/espruino/EspruinoWebIDE/pull/252 :) -
• #10
Absolutely amazing! In all my years I've never seen such stellar support! It works perfect, thank you so much! We're working on an athlete tracking system using UWB and we need an independent way to verify system requirements when it comes to location and IMU data, and the Puck.js with this logging capability is perfect for the job. What would have taken a month with other industrial instrumentation solutions is working with literally 2 hours of effort at a fraction of the cost, I'm forever grateful and will be keeping on eye on what new capabilities you deliver.
-
• #11
Btw, started working on a simple graphing solution like in the Micro:bit editor. Smoothie Charts, used by Micro:bit editor looks pretty nice for simple real-time graphing: http://smoothiecharts.org (MIT license)
Input lines either JSON, for example
{foo: 10, bar:15}
, or what the Micro:bit does:x:42
. Altho thinking about a prefix to either ignore certain lines, or process only certain lines. Could be a config options.
One graph per data stream, because Smoothie Charts doesn't support labels / legends, and your values can be vastly different.A small difference compared to Micro:bit: I would open a popup, so you can resize or place the graphs where you want.
Ideas, suggestions?
-
• #12
Thanks! Glad that's worked so well for you!
@AkosLukacs merged - thanks!
We have an application where we would like to store the output of the accelerometer for relatively long periods of time (30 min or so) at 50ms intervals so the onboard flash won't do the trick. How do I pipe the output of the Web IDE to a file residing on the laptop's file system? All the file operation functions in the API seem to be related to local (to the Puck.js) memory. I could copy and paste from the console, but not sure how large that buffer is and anyway that's a pain.
1 Attachment