├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .husky └── pre-commit ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── authentication.js ├── build_scripts ├── copy_built_files.sh └── dev-build.sh ├── config ├── PtData.xyz ├── config.js ├── dashboard_config.js ├── engine_config.js ├── g2_config.js ├── index.js ├── instance_config.js ├── machine_config.js ├── opensbp_config.js ├── profile_config.js └── user_config.js ├── config_watcher.js ├── dashboard ├── app_manager.js ├── apps │ ├── apps.fma │ │ ├── css │ │ │ └── style.css │ │ ├── icon.png │ │ ├── index.html │ │ ├── js │ │ │ ├── Sortable.js │ │ │ └── apps.js │ │ ├── old_icon.png │ │ └── package.json │ ├── configuration.fma │ │ ├── css │ │ │ └── style.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── icon.png │ │ ├── images │ │ │ ├── Thumbs.db │ │ │ ├── changepassword.svg │ │ │ ├── delete.png │ │ │ ├── download.png │ │ │ ├── ex.png │ │ │ ├── grantadmin.svg │ │ │ ├── loading.gif │ │ │ ├── recycling10.svg │ │ │ ├── revokeadmin.svg │ │ │ └── shopbot_logo.png │ │ ├── index.html │ │ ├── js │ │ │ ├── app_manager.js │ │ │ ├── configuration.js │ │ │ ├── jquery.dragster.js │ │ │ └── user_manager.js │ │ ├── old_icon.png │ │ └── package.json │ ├── editor.fma │ │ ├── component.json │ │ ├── css │ │ │ ├── codemirror.css │ │ │ ├── style.css │ │ │ └── syntax.css │ │ ├── icon.png │ │ ├── index.html │ │ ├── js │ │ │ ├── cm-addons │ │ │ │ ├── dialog.js │ │ │ │ ├── jump-to-line.js │ │ │ │ ├── search.js │ │ │ │ └── searchcursor.js │ │ │ ├── cm-fabmo-modes.js │ │ │ ├── codemirror.js │ │ │ ├── editor.js │ │ │ └── simple.js │ │ └── package.json │ ├── job_manager.fma │ │ ├── css │ │ │ ├── images │ │ │ │ ├── download151.svg │ │ │ │ ├── player6.svg │ │ │ │ ├── recycling10.svg │ │ │ │ ├── settings46.svg │ │ │ │ └── visible9.svg │ │ │ └── style.css │ │ ├── icon.png │ │ ├── images │ │ │ ├── Sorting icons.psd │ │ │ ├── Thumbs.db │ │ │ ├── Untitled-1.psd │ │ │ ├── arrow_key.png │ │ │ ├── back_disabled.png │ │ │ ├── back_enabled.png │ │ │ ├── back_enabled_hover.png │ │ │ ├── click.png │ │ │ ├── delete.png │ │ │ ├── download.png │ │ │ ├── droptarget.png │ │ │ ├── edit_icon.png │ │ │ ├── favicon.ico │ │ │ ├── forward_disabled.png │ │ │ ├── forward_enabled.png │ │ │ ├── forward_enabled_hover.png │ │ │ ├── loading.gif │ │ │ ├── shopbot_logo.png │ │ │ ├── sort_asc.png │ │ │ ├── sort_asc_disabled.png │ │ │ ├── sort_both.png │ │ │ ├── sort_desc.png │ │ │ └── sort_desc_disabled.png │ │ ├── index.html │ │ ├── js │ │ │ ├── Sortable.js │ │ │ ├── job_manager.js │ │ │ ├── jquery.dragster.js │ │ │ └── moment.js │ │ └── package.json │ ├── macro_manager.fma │ │ ├── css │ │ │ ├── images │ │ │ │ ├── Sorting icons.psd │ │ │ │ ├── Thumbs.db │ │ │ │ ├── arrow_key.png │ │ │ │ ├── back_disabled.png │ │ │ │ ├── back_enabled.png │ │ │ │ ├── back_enabled_hover.png │ │ │ │ ├── delete.png │ │ │ │ ├── details_close.png │ │ │ │ ├── details_open.png │ │ │ │ ├── download.png │ │ │ │ ├── edit_icon.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── forward_disabled.png │ │ │ │ ├── forward_enabled.png │ │ │ │ ├── forward_enabled_hover.png │ │ │ │ ├── loading.gif │ │ │ │ ├── play_icon.png │ │ │ │ ├── recycling10.svg │ │ │ │ ├── shopbot_logo.png │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_asc_disabled.png │ │ │ │ ├── sort_both.png │ │ │ │ ├── sort_desc.png │ │ │ │ └── sort_desc_disabled.png │ │ │ └── style.css │ │ ├── icon.png │ │ ├── images │ │ │ ├── Sorting icons.psd │ │ │ ├── Thumbs.db │ │ │ ├── arrow_key.png │ │ │ ├── back_disabled.png │ │ │ ├── back_enabled.png │ │ │ ├── back_enabled_hover.png │ │ │ ├── delete.png │ │ │ ├── download.png │ │ │ ├── favicon.ico │ │ │ ├── forward_disabled.png │ │ │ ├── forward_enabled.png │ │ │ ├── forward_enabled_hover.png │ │ │ ├── loading.gif │ │ │ ├── shopbot_logo.png │ │ │ ├── signal.png │ │ │ ├── signal_0.png │ │ │ ├── signal_1.png │ │ │ ├── signal_2.png │ │ │ ├── signal_3.png │ │ │ ├── signal_4.png │ │ │ ├── sort_asc.png │ │ │ ├── sort_asc_disabled.png │ │ │ ├── sort_both.png │ │ │ ├── sort_desc.png │ │ │ └── sort_desc_disabled.png │ │ ├── index.html │ │ ├── js │ │ │ └── macro_manager.js │ │ └── package.json │ ├── network_manager.fma │ │ ├── css │ │ │ └── style.css │ │ ├── icon.png │ │ ├── images │ │ │ ├── signal.png │ │ │ ├── signal_0.png │ │ │ ├── signal_1.png │ │ │ ├── signal_2.png │ │ │ ├── signal_3.png │ │ │ └── signal_4.png │ │ ├── index.html │ │ ├── js │ │ │ ├── jquery.dragster.js │ │ │ └── network_manager.js │ │ └── package.json │ ├── previewer.fma │ │ ├── README.md │ │ ├── css │ │ │ └── style.css │ │ ├── icon.png │ │ ├── images │ │ │ ├── help.png │ │ │ ├── pause.png │ │ │ ├── play.png │ │ │ ├── reset.png │ │ │ ├── settings.png │ │ │ ├── x.png │ │ │ ├── y.png │ │ │ └── z.png │ │ ├── index.html │ │ ├── js │ │ │ ├── OrbitControls.js │ │ │ ├── XgridHelper.js │ │ │ ├── app.js │ │ │ ├── axes.js │ │ │ ├── cookie.js │ │ │ ├── dimensions.js │ │ │ ├── grid.js │ │ │ ├── gui.js │ │ │ ├── helvetiker_regular.typeface.js │ │ │ ├── move.js │ │ │ ├── parser.js │ │ │ ├── path.js │ │ │ ├── table.js │ │ │ ├── three.js │ │ │ ├── tool.js │ │ │ ├── util.js │ │ │ └── viewer.js │ │ └── package.json │ ├── sb4.fma │ │ ├── assets │ │ │ ├── docs │ │ │ │ ├── ComRef.pdf │ │ │ │ ├── Handibot 2 MANUAL Safe Use Source_v002.pdf │ │ │ │ └── No_Internet.pdf │ │ │ ├── icon_jobs.png │ │ │ ├── icon_jobs_w.png │ │ │ ├── icon_video.png │ │ │ ├── image6b.gif │ │ │ ├── image6b.jpg │ │ │ ├── image6b_transparent.png │ │ │ ├── info_icon.png │ │ │ ├── pad_icon_01.png │ │ │ ├── pad_icon_02.png │ │ │ ├── pad_icon_03.png │ │ │ ├── sb3_commands.json │ │ │ └── settings_icon.png │ │ ├── css │ │ │ ├── css-notes.txt │ │ │ ├── foundation.css │ │ │ ├── foundation.min.css │ │ │ ├── normalize.css │ │ │ ├── style.css │ │ │ ├── stylejogdial.css │ │ │ └── tips.css │ │ ├── icon.png │ │ ├── index.html │ │ ├── js │ │ │ ├── init_setActions.js │ │ │ ├── jog_dial.js │ │ │ ├── lib │ │ │ │ ├── fabmo.js │ │ │ │ ├── fastclick.js │ │ │ │ ├── foundation.dropdown.js │ │ │ │ ├── foundation.min.js │ │ │ │ ├── haptics.js │ │ │ │ ├── jquery.js │ │ │ │ ├── modernizr.js │ │ │ │ └── paper-full.min.js │ │ │ ├── message_g2.js │ │ │ ├── mo_pad.js │ │ │ ├── motion.js │ │ │ ├── sb_app.js │ │ │ ├── tool_config.js │ │ │ ├── vendor │ │ │ │ ├── jquery.cookie.js │ │ │ │ ├── jquery.js │ │ │ │ ├── modernizr.js │ │ │ │ └── xplaceholder.js │ │ │ └── video.js │ │ └── package.json │ ├── selftest.fma │ │ ├── css │ │ │ ├── font-awesome.min.css │ │ │ ├── pure-min.css │ │ │ └── style.css │ │ ├── fonts │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── icon.png │ │ ├── index.html │ │ ├── js │ │ │ └── selftest.js │ │ ├── package.json │ │ └── path │ │ │ └── sample.pdf │ └── video.fma │ │ ├── README.md │ │ ├── __pycache__ │ │ ├── v4l2.cpython-311.pyc │ │ └── v4l2.cpython-39.pyc │ │ ├── camera-server │ │ ├── icon.png │ │ ├── images │ │ ├── in-use.jpg │ │ └── offline.jpg │ │ ├── index.html │ │ ├── js │ │ └── video.js │ │ ├── package.json │ │ └── v4l2.py ├── build │ └── index.html ├── img │ └── icon_spindle_off.png ├── index.js └── static │ ├── css │ ├── font-awesome.css │ ├── fonts.css │ ├── foundation.min.css │ ├── normalize.css │ ├── style.css │ ├── tips.css │ └── toastr.min.css │ ├── docs │ ├── ComRef.pdf │ ├── Handibot 2 MANUAL Safe Use Source_v002.pdf │ ├── No_Internet.pdf │ └── xComRef.pdf │ ├── favicon.ico │ ├── fonts │ ├── ShopBotStandard-Regular.otf │ ├── droid-sans-mono-v7-latin-regular.eot │ ├── droid-sans-mono-v7-latin-regular.svg │ ├── droid-sans-mono-v7-latin-regular.ttf │ ├── droid-sans-mono-v7-latin-regular.woff │ ├── droid-sans-mono-v7-latin-regular.woff2 │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── sourcesanspro-bold-webfont.eot │ ├── sourcesanspro-bold-webfont.svg │ ├── sourcesanspro-bold-webfont.ttf │ ├── sourcesanspro-bold-webfont.woff │ ├── sourcesanspro-bold-webfont.woff2 │ ├── sourcesanspro-boldit-webfont.eot │ ├── sourcesanspro-boldit-webfont.svg │ ├── sourcesanspro-boldit-webfont.ttf │ ├── sourcesanspro-boldit-webfont.woff │ ├── sourcesanspro-boldit-webfont.woff2 │ ├── sourcesanspro-extralight-webfont.eot │ ├── sourcesanspro-extralight-webfont.svg │ ├── sourcesanspro-extralight-webfont.ttf │ ├── sourcesanspro-extralight-webfont.woff │ ├── sourcesanspro-extralight-webfont.woff2 │ ├── sourcesanspro-extralightit-webfont.eot │ ├── sourcesanspro-extralightit-webfont.svg │ ├── sourcesanspro-extralightit-webfont.ttf │ ├── sourcesanspro-extralightit-webfont.woff │ ├── sourcesanspro-extralightit-webfont.woff2 │ ├── sourcesanspro-it-webfont.eot │ ├── sourcesanspro-it-webfont.svg │ ├── sourcesanspro-it-webfont.ttf │ ├── sourcesanspro-it-webfont.woff │ ├── sourcesanspro-it-webfont.woff2 │ ├── sourcesanspro-regular-webfont.eot │ ├── sourcesanspro-regular-webfont.svg │ ├── sourcesanspro-regular-webfont.ttf │ ├── sourcesanspro-regular-webfont.woff │ └── sourcesanspro-regular-webfont.woff2 │ ├── img │ ├── Thumbs.db │ ├── fabmo-f.svg │ ├── favicon │ │ ├── android-icon-144x144.png │ │ ├── android-icon-192x192.png │ │ ├── android-icon-36x36.png │ │ ├── android-icon-48x48.png │ │ ├── android-icon-72x72.png │ │ ├── android-icon-96x96.png │ │ ├── apple-icon-114x114.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-144x144.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-72x72.png │ │ ├── apple-icon-76x76.png │ │ ├── apple-icon-precomposed.png │ │ ├── apple-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── manifest.json │ │ ├── ms-icon-144x144.png │ │ ├── ms-icon-150x150.png │ │ ├── ms-icon-310x310.png │ │ └── ms-icon-70x70.png │ ├── icon_DROin.png │ ├── icon_DROout.png │ ├── icon_apps.png │ ├── icon_apps_w.png │ ├── icon_colapse.png │ ├── icon_colapse_r.png │ ├── icon_details.min.png │ ├── icon_details.png │ ├── icon_editor.png │ ├── icon_folder.png │ ├── icon_folder_w.png │ ├── icon_global.png │ ├── icon_global_w.png │ ├── icon_go-home.png │ ├── icon_home.png │ ├── icon_home_w.png │ ├── icon_jobs.png │ ├── icon_jobs_w.png │ ├── icon_keypad.png │ ├── icon_log.png │ ├── icon_more.png │ ├── icon_mv-xy.png │ ├── icon_network.png │ ├── icon_plus_cross.png │ ├── icon_refresh.png │ ├── icon_search.png │ ├── icon_search_w.png │ ├── icon_settings.png │ ├── icon_settings_w.png │ ├── icon_sign_out.png │ ├── icon_social.png │ ├── icon_social_w.png │ ├── icon_spindle_off.png │ ├── icon_spindle_on.png │ ├── icon_status_green.png │ ├── icon_status_grey.png │ ├── icon_status_red.png │ ├── icon_status_yellow.png │ ├── icon_video.png │ ├── icon_zero-z.png │ └── maingear.png │ └── js │ ├── app.js │ ├── auth.js │ ├── context.js │ ├── dashboard.js │ ├── events.js │ ├── libs │ ├── backbone.js │ ├── fabmo.js │ ├── fabmoapi.js │ ├── fabmoui.js │ ├── foundation.min.js │ ├── hammer.js │ ├── hammer.min.js │ ├── hammer.min.map │ ├── jquery.min.js │ ├── keyboard.js │ ├── keypad.js │ ├── lockr.min.js │ ├── modernizr.js │ ├── moment.js │ ├── pako.min.js │ ├── require.js │ ├── socket.io.js │ ├── socket.io.js.map │ ├── toastr.js.map │ ├── toastr.min.js │ ├── underscore.js │ └── usb-browser.js │ ├── main.js │ ├── models.js │ ├── routers.js │ ├── templates │ ├── app-icon-add.html │ ├── app-icon.html │ └── authentication.html │ └── views.js ├── data └── g2_errors.json ├── db.js ├── debug.js ├── doc ├── apple_logo.gif ├── intel_edison.jpg ├── project_layout.md └── raspi.png ├── engine.js ├── example-version.json ├── files ├── README.md ├── camera-server-1.service ├── camera-server-2.service ├── fabmo.service ├── network_conf_fabmo │ ├── fabmo-ip-reporting.desktop │ ├── hostapd.service │ ├── ip-reporting.py │ ├── ip-reporting.sh │ ├── network-monitor.service │ ├── network-monitor.sh │ ├── recent_wifi.json │ ├── setup-wlan0_ap.service │ └── setup_wlan0_ap.sh ├── tools │ ├── ck_heat_volts.sh │ ├── ck_network.sh │ ├── ck_services.sh │ └── ld_firmware.sh └── usb_logger.service ├── firmware ├── g2.bin ├── g2core_101.57.47.bin └── g2core_101.57.49 - Copy.bin ├── g2.js ├── log.js ├── machine.js ├── macros.js ├── network.js ├── network └── linux │ └── raspberry-pi │ ├── commands.js │ └── index.js ├── network_manager.js ├── package.json ├── profiles.js ├── profiles ├── default │ ├── config │ │ ├── engine.json │ │ ├── g2.json │ │ ├── instance.json │ │ ├── machine.json │ │ └── opensbp.json │ └── package.json ├── fabmo-profile-dt │ ├── .gitignore │ ├── README.md │ ├── apps │ │ ├── Desktop-HELP_v0.0.4.fma │ │ └── smooth.fma │ ├── config │ │ ├── engine.json │ │ ├── g2.json │ │ ├── instance.json │ │ ├── machine.json │ │ └── opensbp.json │ ├── macros │ │ ├── macro_10.sbp │ │ ├── macro_2.sbp │ │ ├── macro_201.sbp │ │ ├── macro_211.sbp │ │ ├── macro_3.sbp │ │ ├── macro_5.sbp │ │ ├── macro_6.sbp │ │ ├── macro_7.sbp │ │ ├── macro_78.sbp │ │ ├── macro_79.sbp │ │ ├── macro_9.sbp │ │ ├── macro_90.sbp │ │ └── macro_91.sbp │ └── package.json ├── fabmo-profile-dtatc │ ├── .gitignore │ ├── README.md │ ├── apps │ │ ├── CONSOLE_v0.0.04.fma │ │ ├── Desktop-HELP_v0.0.4.fma │ │ ├── config_app.fma │ │ ├── fabmo-univ-atc-app_v1.0.0.fma │ │ └── smooth.fma │ ├── config │ │ ├── engine.json │ │ ├── g2.json │ │ ├── instance.json │ │ ├── machine.json │ │ └── opensbp.json │ ├── macros │ │ ├── macro_1.sbp │ │ ├── macro_10.sbp │ │ ├── macro_2.sbp │ │ ├── macro_201.sbp │ │ ├── macro_204.sbp │ │ ├── macro_205.sbp │ │ ├── macro_211.sbp │ │ ├── macro_212.sbp │ │ ├── macro_3.sbp │ │ ├── macro_5.sbp │ │ ├── macro_6.sbp │ │ ├── macro_7.sbp │ │ ├── macro_70.sbp │ │ ├── macro_71.sbp │ │ ├── macro_72.sbp │ │ ├── macro_73.sbp │ │ ├── macro_74.sbp │ │ ├── macro_75.sbp │ │ ├── macro_78.sbp │ │ ├── macro_79.sbp │ │ ├── macro_9.sbp │ │ ├── macro_90.sbp │ │ └── macro_91.sbp │ └── package.json ├── fabmo-profile-dtmax │ ├── README.md │ ├── apps │ │ ├── CONSOLE_v0.0.04.fma │ │ ├── Desktop-Utils-Prefs_v0.0.2.fma │ │ ├── FabMo Simple Surfacer_v0.0.3.fma │ │ └── fabmo-app-example_v1.0.3.fma │ ├── config │ │ ├── engine.json │ │ ├── g2.json │ │ ├── instance.json │ │ ├── machine.json │ │ └── opensbp.json │ ├── macros │ │ ├── macro_10.sbp │ │ ├── macro_2.sbp │ │ ├── macro_201.sbp │ │ ├── macro_211.sbp │ │ ├── macro_3.sbp │ │ ├── macro_5.sbp │ │ ├── macro_6.sbp │ │ ├── macro_7.sbp │ │ ├── macro_78.sbp │ │ ├── macro_79.sbp │ │ ├── macro_9.sbp │ │ ├── macro_90.sbp │ │ └── macro_91.sbp │ └── package.json └── fabmo-profile-handibot-2 │ ├── README.md │ ├── apps │ ├── config_app.fma │ ├── fabmo-app-example_v1.0.3.fma │ └── smooth.fma │ ├── config │ ├── engine.json │ ├── g2.json │ ├── instance.json │ ├── machine.json │ └── opensbp.json │ ├── macros │ ├── NEWmacro_10.sbp │ ├── NEWmacro_2.sbp │ ├── NEWmacro_201.sbp │ ├── NEWmacro_211.sbp │ ├── NEWmacro_3.sbp │ ├── NEWmacro_5.sbp │ ├── NEWmacro_6.sbp │ ├── NEWmacro_7.sbp │ ├── NEWmacro_78.sbp │ ├── NEWmacro_79.sbp │ ├── NEWmacro_9.sbp │ ├── NEWmacro_90.sbp │ ├── NEWmacro_91.sbp │ ├── README.txt │ ├── macro_2.sbp │ ├── macro_201.sbp │ ├── macro_211.sbp │ ├── macro_3.sbp │ ├── macro_6.sbp │ ├── macro_7.sbp │ ├── macro_77.sbp │ ├── macro_78.sbp │ ├── macro_79.sbp │ ├── macro_9.sbp │ ├── macro_90.sbp │ └── macro_91.sbp │ └── package.json ├── pythonUtils ├── README.md ├── fabmo_support_contact.txt ├── i2c_display.py ├── libs │ └── ssd1039.py ├── run_i2c_display.sh └── usb_logger.py ├── routes ├── acc.js ├── authentication.js ├── config.js ├── dashboard.js ├── direct.js ├── firmware.js ├── index.js ├── jobs.js ├── kill.js ├── log.js ├── macros.js ├── network.js ├── state.js ├── time.js ├── uix.js ├── updater.js ├── usbFileRoutes.js ├── util.js ├── video.js └── websocket.js ├── runtime ├── gcode │ ├── gcode.js │ └── index.js ├── idle.js ├── manual │ ├── driver.js │ └── index.js ├── opensbp │ ├── commands │ │ ├── custom.js │ │ ├── cut.js │ │ ├── file.js │ │ ├── index.js │ │ ├── jog.js │ │ ├── leveler.js │ │ ├── location.js │ │ ├── move.js │ │ ├── probe.js │ │ ├── setting.js │ │ ├── tools.js │ │ ├── value.js │ │ └── zero.js │ ├── index.js │ ├── interpolate.js │ ├── opensbp.js │ ├── parser.js │ ├── sb3_commands.json │ ├── sbp_parser.js │ ├── sbp_parser.pegjs │ ├── test-error.js │ ├── test1.sbp │ ├── test2.sbp │ ├── test_parser.js │ └── transformation.js └── passthrough │ └── index.js ├── scripts ├── convert_sb3.js └── sb3_to_gcode.js ├── server.js ├── spindle1.js ├── spindles ├── spindle-VFD-data │ ├── spin-DT-1hp-delta.json │ └── spin-DT-1hp-lenze.json └── spindle1_settings.json ├── static.js ├── test ├── machine.test.js └── util.test.js ├── updater.js ├── util.js └── webpack.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | end_of_line = lf 3 | charset = utf-8 4 | indent_style = space 5 | tab_width = 4 6 | max_line_length = 80 7 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | amd: true, 4 | node: true, 5 | commonjs: true, 6 | es2021: true, 7 | }, 8 | globals: { 9 | async: true, 10 | log: true, 11 | process: true, 12 | setImmediate: true, 13 | setTimeout: true, 14 | clearTimeout: true, 15 | console: true, 16 | }, 17 | plugins: ["jest", "prettier"], 18 | 19 | extends: ["eslint:recommended", "prettier"], 20 | parserOptions: { 21 | ecmaVersion: 12, 22 | }, 23 | rules: { 24 | "no-mixed-spaces-and-tabs": "off", 25 | "prettier/prettier": ["warn"], 26 | "no-unused-vars": "warn", 27 | }, 28 | ignorePatterns: [ 29 | "dashboard/static/js/libs/socket.io.js", 30 | "dashboard/static/js/libs/hammer.js", 31 | "dashboard/static/js/libs/hammer.min.js", 32 | "dashboard/static/js/libs/jquery.min.js", 33 | "dashboard/static/js/libs/lockr.min.js", 34 | "dashboard/static/js/libs/moment.js", 35 | "dashboard/static/js/libs/modernizr.js", 36 | "dashboard/static/js/libs/pako.min.js", 37 | "dashboard/static/js/libs/require.js", 38 | "dashboard/static/js/libs/toastr.min.js", 39 | "dashboard/static/js/libs/underscore.js", 40 | "dashboard/static/js/libs/foundation.min.js", 41 | "dashboard/static/js/libs/backbone.js", 42 | "dashboard/static/js/events.js", 43 | "dashboard/apps/", 44 | "routes/video.js", 45 | "runtime/opensbp/sbp_parser.js", 46 | "log.js", 47 | ], 48 | overrides: [ 49 | { 50 | env: { browser: true, jquery: true }, 51 | files: ["dashboard/**"], 52 | }, 53 | { 54 | files: ["test/**"], 55 | plugins: ["jest"], 56 | extends: ["plugin:jest/recommended"], 57 | rules: { "jest/prefer-expect-assertions": "off" }, 58 | }, 59 | ], 60 | }; 61 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | routes/debug.js 2 | sandbox 3 | build 4 | .vscode 5 | .vscode/.* 6 | .vscode/* 7 | *.swp 8 | *~ 9 | *.bak 10 | *.tmp 11 | *.log 12 | version.json 13 | node_modules 14 | npm-debug.log 15 | app_settings.json 16 | docs-dist 17 | .grunt 18 | config/data/*.json 19 | .DS_Store 20 | *.sublime* 21 | *.orig 22 | dashboard/build/* 23 | #had to comment out the following to build using vscode; then had to manually create paths and copy files 24 | #profiles/* 25 | #profiles/.* 26 | !dashboard/build/index.html 27 | !profiles/fabmo-profile-dev-tests 28 | !profiles/fabmo-profile-atc 29 | !profiles/fabmo-profile-dt 30 | !profiles/fabmo-profile-dtmax 31 | !profiles/fabmo-profile-dtatc 32 | !profiles/fabmo-handibot-2 33 | !profiles/default 34 | !profiles/README.md 35 | install_token 36 | runtime/opensbp/test.sbp 37 | package-lock.json 38 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | unsafe-perm = true -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dashboard/static/js/libs/socket.io.js 2 | dashboard/static/js/libs/hammer.js 3 | dashboard/static/js/libs/hammer.min.js 4 | dashboard/static/js/libs/jquery.min.js 5 | dashboard/static/js/libs/lockr.min.js 6 | dashboard/static/js/libs/moment.js 7 | dashboard/static/js/libs/pako.min.js 8 | dashboard/static/js/libs/require.js 9 | dashboard/static/js/libs/toastr.min.js 10 | dashboard/static/js/libs/underscore.js 11 | dashboard/static/js/libs/foundation.min.js 12 | dashboard/static/js/libs/backbone.js 13 | dashboard/static/js/events.js 14 | dashboard/static/js/libs/modernizr.js 15 | dashboard/apps/previewer.fma/js/three.js 16 | dashboard/apps/job_manager.fma/js/moment.js 17 | dashboard/apps/job_manager.fma/js/Sortable.js 18 | dashboard/apps/home.fma/js/Sortable.js 19 | dashboard/apps/editor.fma/js/codemirror.js 20 | dashboard/apps/editor.fma/js/cm-addon/** 21 | spindle.js 22 | dashboard/static/js/libs/keyboard.js 23 | 24 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "endOfLine": "lf", 3 | "printWidth": 120 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.fixAll": "explicit" 4 | } 5 | } -------------------------------------------------------------------------------- /build_scripts/copy_built_files.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | : "${FABMO_HOME:=/fabmo}" 4 | 5 | cp -R ${FABMO_HOME}/dashboard/static/* ${FABMO_HOME}/dashboard/build/ 6 | cp ${FABMO_HOME}/dashboard/build/dashboard.css ${FABMO_HOME}/dashboard/build/css/dashboard.css 7 | -------------------------------------------------------------------------------- /build_scripts/dev-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Builds my current dev version ... need to have branch identified right!!! 3 | 4 | clear 5 | echo "==> Building dev version" 6 | cd / 7 | echo "--> ... be at root" 8 | echo "--> ... clearing all Fabmo dirs" 9 | 10 | sudo systemctl stop fabmo 11 | echo "--> ... Stopped fabmo service" 12 | 13 | sudo rm -rf /fabmo && sudo rm -rf /opt/fabmo 14 | echo 15 | 16 | echo "--> Cloning current version of FabMo Engine from GitHub" 17 | cd / 18 | sudo git clone https://github.com/fabmo/fabmo-engine ./fabmo 19 | 20 | cd /fabmo 21 | echo 22 | 23 | echo "--> Setting Branch" 24 | sudo git checkout master 25 | git status 26 | echo 27 | 28 | # starts the 29 | cd pythonUtils 30 | make -f MakeFile # installs usb status logger deamon 31 | sudo apt-get install i2c-tools # ensures i2c serial tools are avalible 32 | output=$(i2cdetect -y 1) 33 | if echo "$output" | grep -q "3c"; then # checks if display is connected 34 | sh run_i2c_display.sh & # Runs line in background 35 | fi 36 | unset $output 37 | cd .. 38 | 39 | echo "--> Ready for npm install" 40 | sudo npm install 41 | sudo npm install multer # Used for the usb fileFilesRoutes.js to serve the usb files 42 | 43 | echo 44 | echo "=================================================" 45 | echo "==> Seem to have done it ... " 46 | echo "STARTING FabMo!" 47 | echo "================================== check path! ==" 48 | echo 49 | sudo npm run dev 50 | 51 | -------------------------------------------------------------------------------- /config/PtData.xyz: -------------------------------------------------------------------------------- 1 | 0 0 0 2 | 1 0 0 3 | 2 0 0 4 | 3 0 0 5 | 4 0 0 6 | 5 0 0 7 | 6 0 0 8 | 7 0 0 9 | 8 0 0 10 | 9 0 0 11 | 0 1 1 12 | 1 1 1 13 | 2 1 1 14 | 3 1 1 15 | 4 1 1 16 | 5 1 1 17 | 6 1 1 18 | 7 1 1 19 | 8 1 1 20 | 9 1 1 21 | 0 2 2 22 | 1 2 2 23 | 2 2 2 24 | 3 2 2 25 | 4 2 2 26 | 5 2 2 27 | 6 2 2 28 | 7 2 2 29 | 8 2 2 30 | 9 2 2 31 | 0 3 3 32 | 1 3 3 33 | 2 3 3 34 | 3 3 3 35 | 4 3 3 36 | 5 3 3 37 | 6 3 3 38 | 7 3 3 39 | 8 3 3 40 | 9 3 3 41 | 0 4 4 42 | 1 4 4 43 | 2 4 4 44 | 3 4 4 45 | 4 4 4 46 | 5 4 4 47 | 6 4 4 48 | 7 4 4 49 | 8 4 4 50 | 9 4 4 51 | 0 5 5 52 | 1 5 5 53 | 2 5 5 54 | 3 5 5 55 | 4 5 5 56 | 5 5 5 57 | 6 5 5 58 | 7 5 5 59 | 8 5 5 60 | 9 5 5 61 | 0 6 6 62 | 1 6 6 63 | 2 6 6 64 | 3 6 6 65 | 4 6 6 66 | 5 6 6 67 | 6 6 6 68 | 7 6 6 69 | 8 6 6 70 | 9 6 6 71 | 0 7 7 72 | 1 7 7 73 | 2 7 7 74 | 3 7 7 75 | 4 7 7 76 | 5 7 7 77 | 6 7 7 78 | 7 7 7 79 | 8 7 7 80 | 9 7 7 81 | 0 8 8 82 | 1 8 8 83 | 2 8 8 84 | 3 8 8 85 | 4 8 8 86 | 5 8 8 87 | 6 8 8 88 | 7 8 8 89 | 8 8 8 90 | 9 8 8 91 | 0 9 9 92 | 1 9 9 93 | 2 9 9 94 | 3 9 9 95 | 4 9 9 96 | 5 9 9 97 | 6 9 9 98 | 7 9 9 99 | 8 9 9 100 | 9 9 9 101 | -------------------------------------------------------------------------------- /config/dashboard_config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | /* eslint-disable no-unused-vars */ 3 | /* 4 | * dashboard_config.js 5 | * 6 | * This configuration object is for storing configuration related to the dashboard. 7 | * There really isn't anything special about it. 8 | */ 9 | var Config = require("./config").Config; 10 | var log = require("../log").logger("dashboard_config"); 11 | 12 | // The DashboardConfig object keeps track of engine-specific settings 13 | var DashboardConfig = function (driver) { 14 | Config.call(this, "dashboard"); 15 | this.driver = driver; 16 | }; 17 | util.inherits(DashboardConfig, Config); 18 | 19 | DashboardConfig.prototype.apply = function (callback) { 20 | // Ideally, nothing happens here, because this is just a data store 21 | }; 22 | 23 | exports.DashboardConfig = DashboardConfig; 24 | -------------------------------------------------------------------------------- /config/profile_config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * profile_config.js 3 | * 4 | * This module provides the profile configuration. 5 | * Since profiles are not editable, this is pretty simple. 6 | */ 7 | var profiles = require("../profiles"); 8 | 9 | // The profile config object isn't a proper config object, it's just sort of a pass-through 10 | // that returns the list of profiles defined for this tool. They're not editable, so it doesn't 11 | // need to be more than that. 12 | var ProfileConfig = function () {}; 13 | 14 | // Return the current list of profiles 15 | ProfileConfig.prototype.getData = function () { 16 | return profiles.getProfiles(); 17 | }; 18 | 19 | exports.ProfileConfig = ProfileConfig; 20 | -------------------------------------------------------------------------------- /dashboard/apps/apps.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/apps.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/apps.fma/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Apps 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 | 25 | 26 |
27 |
28 |
29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /dashboard/apps/apps.fma/old_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/apps.fma/old_icon.png -------------------------------------------------------------------------------- /dashboard/apps/apps.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Apps", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.1", 8 | "author":"Brendan Collins", 9 | "website":"http://shopbottools.com", 10 | "id":"apps", 11 | "description":"System app for managing optionally installed apps" 12 | } -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/images/Thumbs.db -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/images/delete.png -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/images/download.png -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/ex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/images/ex.png -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/grantadmin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/images/loading.gif -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/images/shopbot_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/images/shopbot_logo.png -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/old_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/configuration.fma/old_icon.png -------------------------------------------------------------------------------- /dashboard/apps/configuration.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Configuration", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.1", 8 | "author":"Ryan Sturmer", 9 | "website":"http://shopbottools.com", 10 | "id":"config", 11 | "description":"System app for editing tool configuration and settings" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/editor.fma/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"FabMo Editor App", 3 | "version":"0.0.1", 4 | "dependencies" : { 5 | "codemirror" : "latest", 6 | "jquery" : "latest" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /dashboard/apps/editor.fma/css/syntax.css: -------------------------------------------------------------------------------- 1 | .cm-s-fabmo span.cm-meta { color: #FF1717; } 2 | .cm-s-fabmo span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-fabmo span.cm-atom { color: #219; font-weight: bold; } 4 | .cm-s-fabmo span.cm-number { color: #00f; } 5 | .cm-s-fabmo span.cm-def { color: #00f; } 6 | .cm-s-fabmo span.cm-systemvar { color: #6c0606;} 7 | .cm-s-fabmo span.cm-variable { color: #6c0606;} 8 | .cm-s-fabmo span.cm-variable-2 { color: #69c605; } 9 | .cm-s-fabmo span.cm-variable-3 { color: #296506; font-weight: bold; } 10 | .cm-s-fabmo span.cm-property { color: black; } 11 | .cm-s-fabmo span.cm-operator { color: black; } 12 | .cm-s-fabmo span.cm-cmd { color: #0686bd; font-weight: bold; } 13 | .cm-s-fabmo span.cm-comment { color: #AAA; } 14 | .cm-s-fabmo span.cm-string { color: rgb(182, 117, 5); } 15 | .cm-s-fabmo span.cm-string-2 { color: #f50; } 16 | .cm-s-fabmo span.cm-qualifier { color: #555; } 17 | .cm-s-fabmo span.cm-builtin { color: #30a; } 18 | .cm-s-fabmo span.cm-bracket { color: #737319; } 19 | .cm-s-fabmo span.cm-tag { color: #170; } 20 | .cm-s-fabmo span.cm-attribute { color: #00c; } 21 | .cm-s-fabmo span.cm-link { color: #219; } 22 | .cm-s-fabmo span.cm-error { color: white; background-color: #9C210C; border-radius: 3px; } 23 | 24 | .cm-s-fabmo .CodeMirror-activeline-background { background: #e8f2ff; } 25 | .cm-s-fabmo .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 26 | -------------------------------------------------------------------------------- /dashboard/apps/editor.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/editor.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/editor.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Editor", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.2", 8 | "author":"Ryan Sturmer", 9 | "website":"http://shopbottools.com", 10 | "id":"editor", 11 | "description":"System app for editing and running machining code" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/css/images/download151.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/css/images/player6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/css/images/settings46.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/css/images/visible9.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/Sorting icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/Sorting icons.psd -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/Thumbs.db -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/Untitled-1.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/Untitled-1.psd -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/arrow_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/arrow_key.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/back_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/back_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/back_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/back_enabled.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/back_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/back_enabled_hover.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/click.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/delete.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/download.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/droptarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/droptarget.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/edit_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/edit_icon.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/favicon.ico -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/forward_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/forward_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/forward_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/forward_enabled.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/forward_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/forward_enabled_hover.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/loading.gif -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/shopbot_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/shopbot_logo.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/sort_asc.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/sort_both.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/sort_desc.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/job_manager.fma/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/job_manager.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Job Manager", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.1", 8 | "author":"Brendan Collins", 9 | "website":"http://shopbottools.com", 10 | "id":"job-manager", 11 | "description":"System app for submitting CAM files to the tool and managing the job queue" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/Sorting icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/Sorting icons.psd -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/Thumbs.db -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/arrow_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/arrow_key.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/back_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/back_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/back_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/back_enabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/back_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/back_enabled_hover.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/delete.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/details_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/details_close.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/details_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/details_open.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/download.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/edit_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/edit_icon.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/favicon.ico -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/forward_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/forward_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/forward_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/forward_enabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/forward_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/forward_enabled_hover.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/loading.gif -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/play_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/play_icon.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/shopbot_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/shopbot_logo.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/sort_asc.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/sort_both.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/sort_desc.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/css/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/css/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/Sorting icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/Sorting icons.psd -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/Thumbs.db -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/arrow_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/arrow_key.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/back_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/back_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/back_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/back_enabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/back_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/back_enabled_hover.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/delete.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/download.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/favicon.ico -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/forward_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/forward_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/forward_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/forward_enabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/forward_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/forward_enabled_hover.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/loading.gif -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/shopbot_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/shopbot_logo.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/signal.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/signal_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/signal_0.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/signal_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/signal_1.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/signal_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/signal_2.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/signal_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/signal_3.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/signal_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/signal_4.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/sort_asc.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/sort_both.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/sort_desc.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/macro_manager.fma/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Macro Manager 5 | 6 | 7 | 8 | 9 | 10 |
11 | 24 |
25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
Custom #NameDescription
37 |
38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /dashboard/apps/macro_manager.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Custom Macros", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.1", 8 | "author":"Ryan Sturmer", 9 | "website":"http://shopbottools.com", 10 | "id":"macros", 11 | "description":"System app for managing and running custom macros" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/images/signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/images/signal.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/images/signal_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/images/signal_0.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/images/signal_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/images/signal_1.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/images/signal_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/images/signal_2.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/images/signal_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/images/signal_3.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/images/signal_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/network_manager.fma/images/signal_4.png -------------------------------------------------------------------------------- /dashboard/apps/network_manager.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Network Manager", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.1", 8 | "author":"Ryan Sturmer", 9 | "website":"http://shopbottools.com", 10 | "id":"network-manager", 11 | "description":"System app for configuring network interfaces" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/help.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/pause.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/play.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/reset.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/settings.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/x.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/y.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/images/z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/previewer.fma/images/z.png -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/js/cookie.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get and set cookies. 3 | * 4 | * @author Joseph Coffland 5 | */ 6 | 7 | 'use strict' 8 | 9 | 10 | var prefix = 'preview-'; 11 | 12 | 13 | module.exports = { 14 | get: function (name, defaultValue) { 15 | var decodedCookie = decodeURIComponent(document.cookie); 16 | var ca = decodedCookie.split(';'); 17 | name = prefix + name + '='; 18 | 19 | for (var i = 0; i < ca.length; i++) { 20 | var c = ca[i]; 21 | while (c.charAt(0) == ' ') c = c.substring(1); 22 | if (!c.indexOf(name)) return c.substring(name.length, c.length); 23 | } 24 | 25 | return defaultValue; 26 | }, 27 | 28 | 29 | set: function (name, value, days) { 30 | var offset = 2147483647; // Max value 31 | if (typeof days != 'undefined') offset = days * 24 * 60 * 60 * 1000; 32 | var d = new Date(); 33 | d.setTime(d.getTime() + offset); 34 | var expires = 'expires=' + d.toUTCString(); 35 | document.cookie = prefix + name + '=' + value + ';' + expires + ';path=/'; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/js/tool.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Tool widget. 3 | * 4 | * @author Joseph Coffland 5 | */ 6 | 7 | 'use strict'; 8 | 9 | 10 | var util = require('./util'); 11 | var cookie = require('./cookie'); 12 | 13 | 14 | module.exports = function(scene, update) { 15 | var self = this; 16 | 17 | 18 | self.setPosition = function (v) { 19 | self.mesh.position.set(v[0], v[1], v[2] + self.size / 2) 20 | } 21 | 22 | 23 | self.update = function (size, position) { 24 | var material = new THREE.MeshPhongMaterial({ 25 | shininess: 30, 26 | specular: 0x888888, 27 | color: 0xffff00, 28 | opacity: 0.8, 29 | transparent: true 30 | }); 31 | 32 | self.size = size / 8; 33 | var geometry = new THREE.CylinderGeometry(0, self.size / 4, self.size, 32); 34 | self.mesh = new THREE.Mesh(geometry, material); 35 | self.mesh.rotation.x = -Math.PI / 2; 36 | self.setPosition(position); 37 | 38 | scene.add(self.mesh); 39 | self.mesh.visible = !!self.show; 40 | } 41 | 42 | 43 | self.setShow = function(show) { 44 | self.show = show; 45 | self.mesh.visible = !!show; 46 | cookie.set('show-tool', show ? 1 : 0); 47 | update(); 48 | } 49 | 50 | 51 | // Show 52 | self.show = parseInt(cookie.get('show-tool', 1)); 53 | util.connectSetting('show-tool', self.show, self.setShow); 54 | } 55 | -------------------------------------------------------------------------------- /dashboard/apps/previewer.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Previewer", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.2.0", 8 | "author":"Joseph Coffland, Alex Canales, Ted Hall", 9 | "website":"http://shopbottools.com", 10 | "id":"previewer", 11 | "description":"System app for previewing machining code" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/docs/ComRef.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/docs/ComRef.pdf -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/docs/Handibot 2 MANUAL Safe Use Source_v002.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/docs/Handibot 2 MANUAL Safe Use Source_v002.pdf -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/docs/No_Internet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/docs/No_Internet.pdf -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/icon_jobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/icon_jobs.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/icon_jobs_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/icon_jobs_w.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/icon_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/icon_video.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/image6b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/image6b.gif -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/image6b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/image6b.jpg -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/image6b_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/image6b_transparent.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/info_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/info_icon.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/pad_icon_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/pad_icon_01.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/pad_icon_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/pad_icon_02.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/pad_icon_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/pad_icon_03.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/assets/settings_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/assets/settings_icon.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/css/css-notes.txt: -------------------------------------------------------------------------------- 1 | body.noScroll body.dialogShowing { /* ...or body.dialogShowing */ 2 | overflow: hidden; 3 | } 4 | -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/sb4.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/js/message_g2.js: -------------------------------------------------------------------------------- 1 | //..................................... SEND Message to G2 Stream VIA Manual RUNTIME-Raw 2 | function sendG2message (message) { 3 | console.log("sending ====> ", message); 4 | fabmo.manualRunGCode(message) 5 | } 6 | -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/js/motion.js: -------------------------------------------------------------------------------- 1 | //..................................... SEND DATA TO FABMO VIA Manual RUNTIME ##### PRIMARY Motion from Scrolling / Swiping 2 | let last_speed 3 | function doMotion (x, y, z, speed) { 4 | var err // TODO: expand to all possible axes and create fast scan for those being used 5 | console.log("NEXT doMotion loc: " + x, y, z, speed); 6 | var code = ['G1'] 7 | if(x != undefined) {code.push('X' + x.toFixed(4));} 8 | if(y != undefined) {code.push('Y' + y.toFixed(4));} 9 | if(z != undefined) {code.push('Z' + z.toFixed(4));} 10 | if(speed != undefined) { 11 | last_speed = speed; 12 | code.push('F' + speed.toFixed(0)); 13 | } else if (last_speed != undefined) { 14 | code.push('F' + last_speed.toFixed(0)); 15 | } else { 16 | code.push('F60') 17 | } 18 | //code.push('F240'); 19 | //code.push('F60'); 20 | fabmo.manualRunGCode(code.join('')) 21 | //PAnEvent = false; 22 | beep(20, 1800, 1); 23 | } 24 | 25 | // TODO: Implement jerk change from slow abrupt to smoother ... ramp up with manual speed feed ... not changing jerk before stop 26 | function changeJerk (x, y, z) { 27 | 28 | } 29 | 30 | function killMotion () { // Send KILL if Moving ... 31 | if (globals.G2_stat === 5) { 32 | console.log('#### KILL INITIATED! from timer if moving'); 33 | fabmo.manualStop(); 34 | 35 | //fabmo.manualRunGCode('\x04\n'); 36 | //fabmo.manualRunGCode('\x04\n M0\n'); 37 | //fabmo.manualRunGCode('M100.1({zl:0})\n M0\n G90\n'); 38 | //fabmo.manualRunGCode('M100({gc:"M0"})'); 39 | } 40 | // globals.G2_killed = true; 41 | } 42 | -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/js/vendor/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2013 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}}); 9 | -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/js/video.js: -------------------------------------------------------------------------------- 1 | 2 | initVideo = function() { 3 | var img = document.getElementById('video'); 4 | var img1 = document.getElementById('video1'); 5 | 6 | function resize() { 7 | img.width = g.COnt_Width/2; 8 | img.height = g.COnt_Height; 9 | img1.width = g.COnt_Width/2; 10 | img1.height = g.COnt_Height; 11 | } 12 | 13 | function reload() { 14 | img.onload = resize; 15 | img.src = 'http://' + location.hostname + ':3141?' + Math.random() 16 | img1.onload = resize; 17 | img1.src = 'http://' + location.hostname + ':3142?' + Math.random() 18 | } 19 | 20 | $('#sbp-container').on('click', function () { 21 | img.onclick = reload; 22 | img1.onclick = reload; 23 | reload(); 24 | } 25 | ) 26 | }; -------------------------------------------------------------------------------- /dashboard/apps/sb4.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ShopBot-Sb4", 3 | "main": "./index.html", 4 | "icon": "icon.png", 5 | "icon_color": "#327c7e", 6 | "author": "Ted Hall", 7 | "version": "4.0.79", 8 | "website": "http://www.shopbottools.com", 9 | "description": "ShopBot CNC Interface - Sb4", 10 | "id": "fabmo-sb4", 11 | "devDependencies": { 12 | "grunt": "^0.4.5", 13 | "grunt-zip": "^0.17.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/css/style.css: -------------------------------------------------------------------------------- 1 | .go { 2 | color: darkgreen; 3 | width: 1px; 4 | cursor: pointer; 5 | } 6 | 7 | #test_table { 8 | width: 100%; 9 | padding: 10px; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/selftest.fma/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/selftest.fma/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/selftest.fma/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/selftest.fma/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/selftest.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Self-Test App", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"0.0.0", 8 | "author":"Ryan Sturmer", 9 | "website":"http://shopbottools.com", 10 | "id":"selftest", 11 | "description":"System app for running self tests on the fabmo software framework." 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/apps/selftest.fma/path/sample.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/selftest.fma/path/sample.pdf -------------------------------------------------------------------------------- /dashboard/apps/video.fma/__pycache__/v4l2.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/video.fma/__pycache__/v4l2.cpython-311.pyc -------------------------------------------------------------------------------- /dashboard/apps/video.fma/__pycache__/v4l2.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/video.fma/__pycache__/v4l2.cpython-39.pyc -------------------------------------------------------------------------------- /dashboard/apps/video.fma/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/video.fma/icon.png -------------------------------------------------------------------------------- /dashboard/apps/video.fma/images/in-use.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/video.fma/images/in-use.jpg -------------------------------------------------------------------------------- /dashboard/apps/video.fma/images/offline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/apps/video.fma/images/offline.jpg -------------------------------------------------------------------------------- /dashboard/apps/video.fma/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Camera 6 | 7 | 28 | 29 | 30 |
31 |
camera 1
32 |
33 | 34 |
35 |
36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /dashboard/apps/video.fma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"Video App", 3 | "main":"./index.html", 4 | "icon":"icon.png", 5 | "icon_color":"#313366", 6 | "icon_display":"none", 7 | "version":"1.0.0", 8 | "author":"Joseph Coffland", 9 | "website":"http://shopbottools.com", 10 | "id":"video", 11 | "description":"System app for USB video camera" 12 | } 13 | -------------------------------------------------------------------------------- /dashboard/img/icon_spindle_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/img/icon_spindle_off.png -------------------------------------------------------------------------------- /dashboard/static/docs/ComRef.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/docs/ComRef.pdf -------------------------------------------------------------------------------- /dashboard/static/docs/Handibot 2 MANUAL Safe Use Source_v002.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/docs/Handibot 2 MANUAL Safe Use Source_v002.pdf -------------------------------------------------------------------------------- /dashboard/static/docs/No_Internet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/docs/No_Internet.pdf -------------------------------------------------------------------------------- /dashboard/static/docs/xComRef.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/docs/xComRef.pdf -------------------------------------------------------------------------------- /dashboard/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/favicon.ico -------------------------------------------------------------------------------- /dashboard/static/fonts/ShopBotStandard-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/ShopBotStandard-Regular.otf -------------------------------------------------------------------------------- /dashboard/static/fonts/droid-sans-mono-v7-latin-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/droid-sans-mono-v7-latin-regular.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/droid-sans-mono-v7-latin-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/droid-sans-mono-v7-latin-regular.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/droid-sans-mono-v7-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/droid-sans-mono-v7-latin-regular.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/droid-sans-mono-v7-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/droid-sans-mono-v7-latin-regular.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-bold-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-bold-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-bold-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-bold-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-bold-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-boldit-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-boldit-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-boldit-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-boldit-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-boldit-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-boldit-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-boldit-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-boldit-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralight-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralight-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralight-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralight-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralight-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralight-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralight-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralight-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralightit-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralightit-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralightit-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralightit-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralightit-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralightit-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-extralightit-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-extralightit-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-it-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-it-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-it-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-it-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-it-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-it-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-it-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-it-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-regular-webfont.eot -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-regular-webfont.ttf -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-regular-webfont.woff -------------------------------------------------------------------------------- /dashboard/static/fonts/sourcesanspro-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/fonts/sourcesanspro-regular-webfont.woff2 -------------------------------------------------------------------------------- /dashboard/static/img/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/Thumbs.db -------------------------------------------------------------------------------- /dashboard/static/img/fabmo-f.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 10 | 11 | 13 | 15 | 17 | 19 | 20 | -------------------------------------------------------------------------------- /dashboard/static/img/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/apple-icon.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /dashboard/static/img/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /dashboard/static/img/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /dashboard/static/img/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_DROin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_DROin.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_DROout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_DROout.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_apps.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_apps_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_apps_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_colapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_colapse.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_colapse_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_colapse_r.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_details.min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_details.min.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_details.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_editor.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_folder.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_folder_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_folder_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_global.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_global.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_global_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_global_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_go-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_go-home.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_home.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_home_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_home_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_jobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_jobs.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_jobs_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_jobs_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_keypad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_keypad.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_log.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_more.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_mv-xy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_mv-xy.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_network.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_plus_cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_plus_cross.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_refresh.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_search.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_search_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_search_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_settings.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_settings_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_settings_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_sign_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_sign_out.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_social.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_social_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_social_w.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_spindle_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_spindle_off.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_spindle_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_spindle_on.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_status_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_status_green.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_status_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_status_grey.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_status_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_status_red.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_status_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_status_yellow.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_video.png -------------------------------------------------------------------------------- /dashboard/static/img/icon_zero-z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/icon_zero-z.png -------------------------------------------------------------------------------- /dashboard/static/img/maingear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/dashboard/static/img/maingear.png -------------------------------------------------------------------------------- /dashboard/static/js/app.js: -------------------------------------------------------------------------------- 1 | require("./libs/fabmo.js"); 2 | -------------------------------------------------------------------------------- /dashboard/static/js/models.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | define(function (require) { 3 | var Backbone = require("backbone"); 4 | models = {}; 5 | 6 | // Model for a single app instance 7 | models.App = Backbone.Model.extend({ 8 | defaults: { 9 | name: null, 10 | icon_path: null, 11 | icon_background_color: null, 12 | icon_display: null, 13 | app_path: null, 14 | app_url: null, 15 | id: null, 16 | }, 17 | sync: function (method, model, options) { 18 | if (method === "read") { 19 | Backbone.sync(method, model, options); 20 | } else { 21 | console.error("You can not " + method + " the App model"); 22 | } 23 | }, 24 | }); 25 | 26 | // A collection of (all) apps 27 | models.Apps = Backbone.Collection.extend({ 28 | model: models.App, 29 | url: "/apps", 30 | parse: function (response) { 31 | apps = response.data.apps; 32 | return apps; 33 | }, 34 | }); 35 | 36 | return models; 37 | }); 38 | -------------------------------------------------------------------------------- /dashboard/static/js/templates/app-icon-add.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |
6 |
7 | Install Apps... 8 |
-------------------------------------------------------------------------------- /dashboard/static/js/templates/app-icon.html: -------------------------------------------------------------------------------- 1 | 2 | <%= name %> 3 | 4 |
5 | <%= name %> 6 |
-------------------------------------------------------------------------------- /dashboard/static/js/templates/authentication.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 22 |
23 | -------------------------------------------------------------------------------- /debug.js: -------------------------------------------------------------------------------- 1 | /* 2 | * debug.js 3 | * 4 | * This module provides some functions that are used when the engine is run in "debug" mode. 5 | * (Debug mode is enacted by passing the --debug switch to server.js) 6 | * 7 | */ 8 | var dashboard = require("./dashboard"); 9 | var log = require("./log").logger("debug"); 10 | var config = require("./config"); 11 | var path = require("path"); 12 | 13 | var watch_semaphore = 0; 14 | 15 | // App reloader 16 | var appReloader = function (event, pth, details) { 17 | pth = path.normalize(details.watchedPath || details.path); 18 | 19 | // Don't watch for changes if there is an update in progress 20 | if (watch_semaphore) { 21 | log.warn( 22 | "Not reloading " + pth + " because a reload is already in progress." 23 | ); 24 | return; 25 | } 26 | 27 | // Determine which app changed, and re-copy that app 28 | var app_index = dashboard.getAppIndex(); 29 | for (var app_id in app_index) { 30 | var app_path = app_index[app_id].app_archive_path; 31 | app_path = path.normalize(app_path); 32 | } 33 | }; 34 | 35 | // This function is called (if enabled) at application startup. 36 | // Nominally, it sets up a "watcher" that live-reloads system apps if they are edited while the system is running. 37 | function startDebug() { 38 | log.info("Starting debug watcher..."); 39 | var chokidar = require("chokidar"); 40 | var pth = path.resolve("./dashboard/apps"); 41 | log.debug("Watching " + pth + " for changes..."); 42 | var watcher = chokidar.watch(pth, { 43 | ignored: /[/\\]\./, 44 | persistent: true, 45 | }); 46 | watcher.on("raw", appReloader); 47 | watcher = chokidar.watch(config.getDataDir("apps"), { 48 | ignored: /[/\\]\./, 49 | persistent: true, 50 | }); 51 | watcher.on("raw", appReloader); 52 | } 53 | 54 | exports.start = startDebug; 55 | -------------------------------------------------------------------------------- /doc/apple_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/doc/apple_logo.gif -------------------------------------------------------------------------------- /doc/intel_edison.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/doc/intel_edison.jpg -------------------------------------------------------------------------------- /doc/raspi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/doc/raspi.png -------------------------------------------------------------------------------- /example-version.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "", 3 | "number": "3.0.0", 4 | "type": "release" 5 | } 6 | -------------------------------------------------------------------------------- /files/README.md: -------------------------------------------------------------------------------- 1 | These are files representing fabmo systemd utilities (with their service files) or other useful tools for FabMo. 2 | They are installed as symlinks during the SD-card-BUILD so that they can be maintained in the context of FabMo and updated here. -------------------------------------------------------------------------------- /files/camera-server-1.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Video Camera Server 3 | After=network.target 4 | 5 | [Service] 6 | ExecStart=/fabmo/dashboard/apps/video.fma/camera-server -a 0.0.0.0 -p 3141 -c 0 7 | User=root 8 | Restart=always 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /files/camera-server-2.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Video Camera Server 3 | After=network.target 4 | 5 | [Service] 6 | ExecStart=/fabmo/dashboard/apps/video.fma/camera-server -a 0.0.0.0 -p 3142 -c 2 7 | User=root 8 | Restart=always 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /files/fabmo.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=FabMo Engine 3 | 4 | [Service] 5 | ExecStart=/usr/bin/node /fabmo/server.js & 6 | Type=simple 7 | User=root 8 | Restart=always 9 | SyslogIdentifier=FBMO 10 | WorkingDirectory = /fabmo/ 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /files/network_conf_fabmo/fabmo-ip-reporting.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=fabmo_ip_report 4 | Comment=Show IP in tkinter window and AP-ssid 5 | NoDisplay=false 6 | Exec=/fabmo/files/network_conf_fabmo/ip-reporting.sh 7 | -------------------------------------------------------------------------------- /files/network_conf_fabmo/hostapd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Access point and authentication server for Wi-Fi and Ethernet 3 | After=network.target setup-wlan0_ap.service 4 | #After=network.target 5 | 6 | [Service] 7 | ExecStart=/usr/sbin/hostapd -P /run/hostapd/hostapd.pid /etc/hostapd/hostapd.conf 8 | ExecReload=/bin/kill -HUP 9 | PIDFile=/run/hostapd/hostapd.pid 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /files/network_conf_fabmo/ip-reporting.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | #just in case we want to use i2c for RTC or other... 4 | 5 | enable_i2c_cmd="sudo raspi-config nonint do_i2c 0" 6 | get_i2c_cmd="sudo raspi-config nonint get_i2c" 7 | i2c_enabled=`$get_i2c_cmd` 8 | 9 | echo -n "i2c state: " 10 | echo $i2c_enabled 11 | 12 | if [ $i2c_enabled == "1" ] 13 | then 14 | echo "Enabling i2c" 15 | $enable_i2c_cmd 16 | else 17 | echo "i2c enabled" 18 | fi 19 | 20 | 21 | # systemd is a little messy for starting graphics 22 | # ... so we called this starter from: /etc/xdg/lxsessions/LXDE-pi/ 23 | # ... and, now continue with (which itself delays a bit before checking networks and reporting): 24 | 25 | python3 /fabmo/files/network_conf_fabmo/ip-reporting.py 26 | -------------------------------------------------------------------------------- /files/network_conf_fabmo/network-monitor.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Network Monitor and Switch Service 3 | After=network-online.target 4 | Wants=network-online.target 5 | 6 | [Service] 7 | ExecStart=/fabmo/files/network_conf_fabmo/network-monitor.sh 8 | Restart=always 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /files/network_conf_fabmo/recent_wifi.json: -------------------------------------------------------------------------------- 1 | {"ip_address": "192.168.1.52", "ssid": "HOME-57B8-2"} -------------------------------------------------------------------------------- /files/network_conf_fabmo/setup-wlan0_ap.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Set up wlan0_ap interface 3 | After=network.target 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/fabmo/files/network_conf_fabmo/setup-wlan0_ap.sh 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /files/network_conf_fabmo/setup_wlan0_ap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Needed to make sure we are using the wlan0 transmitter with NetworkManager ??? 4 | # Create the AP interface if it doesn't exist 5 | #### Marked liness removed to allow control of AP mode enable/disable via the FabMo Client 4/20/2025 6 | ####if ! iw dev | grep -q wlan0_ap; then 7 | #### iw dev wlan0 interface add wlan0_ap type __ap 8 | ####fi 9 | # Bring up the AP interface 10 | ####ip link set wlan0_ap up 11 | 12 | # Wait for the interface to be up and running 13 | sleep 5 14 | 15 | # Ensure the interface is properly configured 16 | ####ifconfig wlan0_ap 192.168.42.1 netmask 255.255.255.0 17 | 18 | # Restart hostapd to ensure it picks up the interface correctly 19 | sudo systemctl restart hostapd -------------------------------------------------------------------------------- /files/tools/ck_heat_volts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # https://retropie.org.uk/forum/topic/2295/runcommand-warning-if-voltage-temperature-throttling 4 | # modified slightly ... 5 | # using: vcgencmd get_throttled 6 | # throttled=0x50005 7 | # New info for Rpi5: https://forums.raspberrypi.com/viewtopic.php?t=370719 8 | 9 | #Flag Bits 10 | UNDERVOLTED=0x1 11 | CAPPED=0x2 12 | THROTTLED=0x4 13 | HAS_UNDERVOLTED=0x10000 14 | HAS_CAPPED=0x20000 15 | HAS_THROTTLED=0x40000 16 | 17 | #Text Colors 18 | GREEN=`tput setaf 2` 19 | RED=`tput setaf 1` 20 | NC=`tput sgr0` 21 | 22 | #Output Strings 23 | GOOD="${GREEN}NO${NC}" 24 | BAD="${RED}YES${NC}" 25 | 26 | #Get Status, extract hex 27 | STATUS=$(vcgencmd get_throttled) 28 | STATUS=${STATUS#*=} 29 | 30 | echo " " 31 | echo "================================ Volt & Temp Fail Report " 32 | echo -n "Status (combined in binary; > 0 means throttling): " 33 | (($STATUS!=0)) && echo "${RED}${STATUS}${NC}" || echo "${GREEN}${STATUS}${NC}" 34 | echo "----------------------------------------------decoded--- " 35 | 36 | echo "Undervolted:" 37 | echo -n " Now: " 38 | ((($STATUS&UNDERVOLTED)!=0)) && echo "${BAD}" || echo "${GOOD}" 39 | echo -n " Past: " 40 | ((($STATUS&HAS_UNDERVOLTED)!=0)) && echo "${BAD}" || echo "${GOOD}" 41 | 42 | echo "Throttled (voltage OK? then throttling from temp):" 43 | echo -n " Now: " 44 | ((($STATUS&THROTTLED)!=0)) && echo "${BAD}" || echo "${GOOD}" 45 | echo -n " Past: " 46 | ((($STATUS&HAS_THROTTLED)!=0)) && echo "${BAD}" || echo "${GOOD}" 47 | 48 | echo "Frequency Capped:" 49 | echo -n " Now: " 50 | ((($STATUS&CAPPED)!=0)) && echo "${BAD}" || echo "${GOOD}" 51 | echo -n " Past: " 52 | ((($STATUS&HAS_CAPPED)!=0)) && echo "${BAD}" || echo "${GOOD}" 53 | echo "-------------------------------------------------------- " 54 | echo "volts ===============(core Pi4~0.8-1.2V; Pi5~0.7-0.9V)== " 55 | # Loop through each id and echo the voltage 56 | for id in core sdram_c sdram_i sdram_p ; do 57 | echo -e "$id:\t$(vcgencmd measure_volts $id)" 58 | done 59 | echo "======================================================== " 60 | echo " " 61 | -------------------------------------------------------------------------------- /files/tools/ck_network.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script opens multiple terminal windows to monitor network-related services and commands. 4 | # It uses lxterminal to create new terminal windows and execute commands in them. 5 | # SO THIS NEEDS TO BE RUN FROM LXDE DESKTOP ENVIRONMENT on THE RPI from the terminal. 6 | 7 | # Function to open a new terminal window and execute a command 8 | open_terminal() { 9 | local title="$1" 10 | local command="$2" 11 | lxterminal --title="$title" --command="bash -c '$command; exec bash'" & 12 | sleep 2 13 | } 14 | 15 | # Commands to run in each terminal window 16 | command1="sudo nmcli m" 17 | title1="NetManager M" 18 | #command2="sudo tail -f /var/log/network_monitor.log" 19 | #title2="Monitoring Script Log" 20 | command3="sudo journalctl -u dnsmasq -f" 21 | title3="dnsmasq" 22 | command4="sudo journalctl -u NetworkManager -f" 23 | title4="NetManager JCtl" 24 | 25 | # Open terminal windows with the specified commands 26 | open_terminal "$title1" "$command1" 27 | #open_terminal "$title2" "$command2" 28 | open_terminal "$title3" "$command3" 29 | open_terminal "$title4" "$command4" 30 | 31 | # Add a delay to ensure terminals are fully open 32 | sleep 3 33 | echo "Please manually arrange the terminal windows." -------------------------------------------------------------------------------- /files/tools/ck_services.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Checks the systemd services running FabMo 4 | 5 | echo " " 6 | echo "Checking the status of Key Fabmo services ============================" 7 | echo " " 8 | echo "------------------------------------------------------------" 9 | echo "----FabMo---------------------------------------------------" 10 | systemctl --no-pager status fabmo.service 11 | echo " " 12 | echo "------------------------------------------------------------" 13 | echo "----Updater-------------------------------------------------" 14 | systemctl --no-pager status fabmo-updater.service 15 | echo " " 16 | echo "------------------------------------------------------------" 17 | echo "----User Networking-----------------------------------------" 18 | systemctl --no-pager status network-monitor.service 19 | systemctl --no-pager status setup-wlan0_ap.service 20 | echo " " 21 | echo "------------------------------------------------------------" 22 | echo "----System Networking---------------------------------------" 23 | systemctl --no-pager status NetworkManager 24 | systemctl --no-pager status dnsmasq 25 | systemctl --no-pager status hostapd 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /files/tools/ld_firmware.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Does the initial load and and initialization of the FabMo-G2 Control Card 4 | # Card needs to be powered and fresh or reset 5 | 6 | 7 | echo " " 8 | echo "LOADING G2 INITIAL FIRMWARE ================================" 9 | echo " - press red button while starting; hold 10 sec" 10 | echo " " 11 | cd /fabmo 12 | until bossac -w -v ./firmware/g2.bin; do 13 | echo "bossac failed, retrying in 2 seconds ..." 14 | sleep 2 15 | done 16 | bossac -b 17 | bossac -R 18 | echo " " 19 | echo "G2 Firmware loaded and initialized successfully." 20 | echo " > You will need to POWERCYCLE the TOOL and RPi to reboot. Confirm heartbeat LED is blinking." 21 | 22 | -------------------------------------------------------------------------------- /files/usb_logger.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=USB Thumb Drive Monitor for FABMO Status 3 | After=network.target 4 | 5 | [Service] 6 | ExecStart=/usr/bin/python3 /fabmo/pythonUtils/usb_logger.py 7 | Restart=always 8 | User=root 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /firmware/g2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/firmware/g2.bin -------------------------------------------------------------------------------- /firmware/g2core_101.57.47.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/firmware/g2core_101.57.47.bin -------------------------------------------------------------------------------- /firmware/g2core_101.57.49 - Copy.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/firmware/g2core_101.57.49 - Copy.bin -------------------------------------------------------------------------------- /network.js: -------------------------------------------------------------------------------- 1 | /* 2 | * network.js 3 | * 4 | * This module provides the factory function for creating the network manager. 5 | * 6 | * TODO: For consistency with how we've organized most of the packages, it might be better to move this to a network/index.js module 7 | */ 8 | var config = require("./config"); 9 | var log = require("./log").logger("network"); 10 | 11 | // Create and return the network manager. You should only call this function once. 12 | // It consults the os and plaform and fishes the appropriate network manager object out of the network/ directory 13 | // If no such manager is defined or there's a problem creating it, an exception is thrown. 14 | exports.createNetworkManager = function (name, callback) { 15 | // The OS comes from node, and is something like 'linux' or 'darwin' 16 | // The platform is now defined in the engine configuration - it's something like 'raspberry-pi' 17 | var OS = config.platform; 18 | var PLATFORM = config.engine.get("platform"); 19 | log.info("OS is:" + OS); 20 | log.info("PLATFORM is:" + PLATFORM); 21 | try { 22 | var NetworkManager = require("./network/" + 23 | OS + 24 | "/" + 25 | PLATFORM).NetworkManager; 26 | var nm = new NetworkManager(); 27 | nm.os = OS; 28 | nm.platform = PLATFORM; 29 | if (!name && nm.platform === "raspberry-pi") { 30 | // eslint-disable-next-line no-unused-vars 31 | nm.set_serialnum(function (name) { 32 | callback(null, nm); 33 | }); 34 | } else { 35 | callback(null, nm); 36 | } 37 | } catch (e) { 38 | log.error("Network Management configuration failure" + e); 39 | callback( 40 | new Error( 41 | "Cannot load network manager for " + 42 | OS + 43 | "/" + 44 | PLATFORM + 45 | ": " + 46 | e.message 47 | ) 48 | ); 49 | } 50 | }; 51 | -------------------------------------------------------------------------------- /profiles/default/config/engine.json: -------------------------------------------------------------------------------- 1 | { 2 | "server_port": 80, 3 | "driver": "g2", 4 | "log_level": "info", 5 | "upload_dir" : "/tmp", 6 | "profile" : "Default", 7 | "name" : null, 8 | "password" : "go2fabmo", 9 | "platform" : "raspberry-pi", 10 | "network" : { 11 | "wifi":{ 12 | "mode" : "ap", 13 | "enabled" : true, 14 | "wifi_networks" : [], 15 | "default_config" : { 16 | "ip_address":"192.168.42.1", 17 | "netmask":"255.255.255.0", 18 | "gateway":"192.168.42.1", 19 | "dns":["8.8.8.8"] 20 | } 21 | }, 22 | "ethernet":{ 23 | "mode" : "magic", 24 | "default_config" : { 25 | "ip_address":"192.168.44.1", 26 | "netmask":"255.255.255.0", 27 | "gateway":"192.168.44.1", 28 | "dns":["8.8.8.8"], 29 | "dhcp_range":{ 30 | "start": "192.168.44.20", 31 | "end": "192.168.44.254" 32 | } 33 | } 34 | } 35 | }, 36 | "video": { 37 | "camera1": true, 38 | "index1": 0, 39 | "camera2": true, 40 | "index2": 2 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /profiles/default/config/g2.json: -------------------------------------------------------------------------------- 1 | { 2 | "gco": 2, 3 | "gdi": 0, 4 | "si": 100, 5 | "gun": 0, 6 | "ct": 0.001, 7 | "jt": 1.5, 8 | "xam": 1, 9 | "yam": 1, 10 | "zam": 1, 11 | "aam": 0, 12 | "bam": 0, 13 | "cam": 0, 14 | "1ma": 0, 15 | "2ma": 1, 16 | "3ma": 2, 17 | "4ma": 3, 18 | "5ma": 4, 19 | "6ma": 5, 20 | "1po": 0, 21 | "2po": 0, 22 | "3po": 0, 23 | "4po": 0, 24 | "5po": 0, 25 | "6po": 0, 26 | "1su":4000, 27 | "2su":4000, 28 | "3su":4000, 29 | "4su":4000, 30 | "5su":33.333333, 31 | "6su":33.333333, 32 | "xfr": 300, 33 | "yfr": 300, 34 | "zfr": 240, 35 | "afr": 240, 36 | "bfr": 6000, 37 | "cfr": 6000, 38 | "g55x": 0, 39 | "g55y": 0, 40 | "g55z": 0, 41 | "g55a": 0, 42 | "g55b": 0, 43 | "g55c": 0, 44 | "g54x": 0, 45 | "g54y": 0, 46 | "g54z": 0, 47 | "g54a": 0, 48 | "g54b": 0, 49 | "g54c": 0, 50 | "di1en": 1, 51 | "di2en": 1, 52 | "di3en": 1, 53 | "di4en": 1, 54 | "di5en": 1, 55 | "di6en": 1, 56 | "di7en": 1, 57 | "di8en": 1, 58 | "di9en": 1, 59 | "di10en": 1, 60 | "di11en": 1, 61 | "di12en":1, 62 | "di1po": 1, 63 | "di2po": 1, 64 | "di3po": 1, 65 | "di4po": 1, 66 | "di5po": 1, 67 | "di6po": 1, 68 | "di7po": 1, 69 | "di8po": 1, 70 | "di9po": 1, 71 | "di10po": 1, 72 | "di11po": 1, 73 | "di12po": 1, 74 | "xjh": 10000, 75 | "yjh": 10000, 76 | "zjh": 10000, 77 | "ajh": 10000, 78 | "bjh": 10000, 79 | "cjh": 10000, 80 | "spde": 2, 81 | "plmo": 3 82 | } 83 | -------------------------------------------------------------------------------- /profiles/default/config/instance.json: -------------------------------------------------------------------------------- 1 | { 2 | "position" : { 3 | "x" : 0, 4 | "y" : 0, 5 | "z" : 0, 6 | "a" : 0, 7 | "b" : 0, 8 | "c" : 0 9 | } 10 | } -------------------------------------------------------------------------------- /profiles/default/config/machine.json: -------------------------------------------------------------------------------- 1 | { 2 | "units" : "in", 3 | "time_units" : "s", 4 | "last_units" : "in", 5 | "quit_input": 0, 6 | "auth_timeout" : 30, 7 | "auth_required": false, 8 | "auth_input" : 0, 9 | "ap_input" : 0, 10 | "ap_time" : 8, 11 | "di1ac": "none", 12 | "di2ac": "none", 13 | "di3ac": "none", 14 | "di4ac": "stop", 15 | "di5ac": "none", 16 | "di6ac": "none", 17 | "di7ac": "none", 18 | "di8ac": "none", 19 | "di9ac": "none", 20 | "di10ac": "none", 21 | "di11ac": "none", 22 | "di12ac": "none", 23 | "default_app" : "apps", 24 | "envelope" : { 25 | "xmin" : 0, 26 | "xmax" : 24, 27 | "ymin" : 0, 28 | "ymax" : 18, 29 | "zmin" : -2, 30 | "zmax" : 6 31 | }, 32 | "manual" : { 33 | "xy_speed" : 3, 34 | "xy_min" : 0.1, 35 | "xy_max" : 6, 36 | "z_fast_speed" : 1, 37 | "z_slow_speed": 0.1, 38 | "xy_increment" : 0.05, 39 | "z_increment" : 0.005, 40 | "abc_increment" : 1, 41 | "xy_jerk" : 50, 42 | "z_jerk" : 50 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /profiles/default/config/opensbp.json: -------------------------------------------------------------------------------- 1 | { 2 | "movexy_speed": 3, 3 | "movez_speed": 1, 4 | "movea_speed": 1, 5 | "moveb_speed": 10, 6 | "movec_speed": 10, 7 | "jogxy_speed": 5, 8 | "jogy_speed": 5, 9 | "jogz_speed": 3, 10 | "joga_speed": 3, 11 | "jogb_speed": 100, 12 | "jogc_speed": 100, 13 | "xy_maxjerk": 50, 14 | "y_maxjerk": 50, 15 | "z_maxjerk": 50, 16 | "a_maxjerk": 50, 17 | "b_maxjerk": 1000, 18 | "c_maxjerk": 1000, 19 | "cutterDia": 0.25, 20 | "pocketOverlap": 50, 21 | "safeZpullUp": 0.25, 22 | "safeApullUp": 0.25, 23 | "variables": {}, 24 | "transforms": { 25 | "rotate": { 26 | "apply": false, 27 | "angle": 0, 28 | "x": 0, 29 | "y": 0 30 | }, 31 | "shearx": { 32 | "apply": false, 33 | "angle": 0 34 | }, 35 | "sheary": { 36 | "apply": false, 37 | "angle": 0 38 | }, 39 | "scale": { 40 | "apply": false, 41 | "scalex": 1, 42 | "scaley": 1, 43 | "scalez": 1, 44 | "x": 0, 45 | "y": 0, 46 | "z": 0 47 | }, 48 | "move": { 49 | "apply": false, 50 | "x": 0, 51 | "y": 0, 52 | "z": 0 53 | }, 54 | "interpolate": { 55 | "apply": false 56 | }, 57 | "level": { 58 | "apply": false, 59 | "ptDataFile": "C:/SbParts/PtData.json" 60 | } 61 | }, 62 | "cRes": 0.01, 63 | "GblPropX": 1, 64 | "GblPropY": 1, 65 | "tempVariables": {} 66 | } -------------------------------------------------------------------------------- /profiles/default/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Default", 3 | "description" : "Default for when no defined tool" 4 | } -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.bak 3 | *.txt 4 | *~ 5 | 6 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/README.md: -------------------------------------------------------------------------------- 1 | # fabmo-profile-dt 2 | FabMo machine profile for the ShopBot Desktop (DT3). 3 | 4 | # macros - NOTES for ShopBot Dev Team 5 | This is an updated version of Sb4 FabMo Macros for "FabMo DT". 6 | These will be similar to the previous Sb3 Macro system ... but better standardized. Generally, all 7 | tools will use the same macros. The format for standard macros is described in Macro #201. 8 | 9 | To help with interchangeability we employ a set of "Standard Variables" whose "Values" are 10 | set or each machine. This is set up in Macro #201 where values for an individual machine are specified. 11 | 12 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/apps/Desktop-HELP_v0.0.4.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dt/apps/Desktop-HELP_v0.0.4.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/apps/smooth.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dt/apps/smooth.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/config/engine.json: -------------------------------------------------------------------------------- 1 | { 2 | "profile":"ShopBot Desktop" 3 | } 4 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/config/g2.json: -------------------------------------------------------------------------------- 1 | { 2 | "gun": 0, 3 | "ct": 0.001, 4 | "jt": 1.5, 5 | "xfr": 300, 6 | "yfr": 300, 7 | "zfr": 240 8 | } 9 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/config/instance.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/config/machine.json: -------------------------------------------------------------------------------- 1 | { 2 | "limits_on" : false, 3 | "softlimits_on" : false, 4 | "di1ac": "none", 5 | "di2ac": "none", 6 | "di3ac": "none", 7 | "di4ac": "stop", 8 | "di5ac": "none", 9 | "di6ac": "none", 10 | "di7ac": "none", 11 | "di8ac": "none", 12 | "di9ac": "none", 13 | "di10ac": "none", 14 | "di11ac": "none", 15 | "di12ac": "none", 16 | "default_app" : "fabmo-sb4", 17 | "envelope" : { 18 | "xmin" : 0, 19 | "xmax" : 24, 20 | "ymin" : 0, 21 | "ymax" : 18, 22 | "zmin" : -2, 23 | "zmax" : 6 24 | }, 25 | "manual" : { 26 | "xy_speed": 3 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/config/opensbp.json: -------------------------------------------------------------------------------- 1 | { 2 | "movexy_speed": 3, 3 | "movez_speed": 1, 4 | "movea_speed": 1, 5 | "variables" : { 6 | "example_variable": 999 7 | }, 8 | "cRes": 0.01, 9 | "GblPropX": 1, 10 | "GblPropY": 1 11 | } 12 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_5.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Spindle Warm Up 2 | '!FABMO!description: Turns spindle ON and runs for 2 minutes 3 | ' Name: Spindle Warm Up 4 | ' Description: Turns spindle ON and runs for 2 minutes 5 | 6 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) 7 | PAUSE 120 ' Pause for 2 minutes -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_6.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Start Spindle 2 | '!FABMO!description: Turns spindle ON in file; SBP convention for managing tools 3 | ' Name: Start Spindle 4 | ' Description: Turns spindle ON in files, SBP convention for managing tools [C6] used in Vectric Posts. 5 | ' ... also called in files with Manual or Automatic Tool Changes 6 | ' If Macro is run manually, file ends after the PAUSE and Spindle turns off automatically at that file-end. 7 | 8 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) [Spindle channel] 9 | PAUSE .1 ' ... optional additional pause for spinup, now automatic in FabMo, may be increased here 10 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_7.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Stop Spindle 2 | '!FABMO!description: Turns spindle OFF in file; SBP convention for managing tools 3 | ' Name: Stop Spindle 4 | ' Description: Turns spindle OFF in files, SBP convention for managing tools [C7]. (See Macro #6) 5 | ' Spindle is automatically turned off when a file ends, but this macro can be used to turn spindle on and off withing files 6 | 7 | SO, 1,0 ' Make OUTPUT #1 INACTIVE (low) [Spindle channel] 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_78.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Set Z-Zero to Current Offset 2 | '!FABMO!description: Use after manually zeroing to record offset 3 | '!FABMO!enabled:true 4 | ' Name: Set Z-Zero to Current Offset 5 | ' Description: 6 | ' Installs Current Value of Z offset to permanent offset for future Zeroing. Works even if manually zeroed assuming Macro#3 has been run once. 7 | ' Author: Ted Hall, Ryan Sturmer 8 | ' History: 9 | ' 2/2/17, 3/16/17, 9/13/17, 11/12/19 10 | ' 9/25/21 Refactored for FabMo (th) 11 | 12 | PAUSE "This routine requires you have only zeroed once at the new Z location since homing tool with Macro#3." ''too much commentary? 13 | &tempTB_Zoffset = %(9) ' Read in System Variables for current Z-tablebase-offset (g55Z) 14 | 15 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 16 | tool_IN: 17 | $sb_current_cutter_Zoffset_Units = "IN" 18 | GOTO continue_with_variables 19 | tool_MM: 20 | $sb_current_cutter_Zoffset_Units = "MM" 21 | GOTO continue_with_variables 22 | 'continue adjusting units for current working variables ... 23 | continue_with_variables: 24 | $sb_current_cutter_Zoffset = &tempTB_Zoffset * -1 25 | END 26 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_79.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Park 2 | '!FABMO!description: Move Tool to a Parking Location 3 | '!FABMO!enabled:true 4 | 5 | ' Name: Park 6 | ' Description: Move Tool to a Parking Location (typically to back) 7 | ' Platform: Desktop 8 | ' Author: Ted Hall, Ryan Sturmer 9 | ' History: 10 | ' 2/2/17, 3/16/17 th 11 | ' 2021/10/15 refactored (th) 12 | 13 | '--- Adjust Standard Macro Variables to Current Tool Units if Needed --- 14 | '--- Check to make sure Standard Macro Variables have been read 15 | $sb_standard_variables_PRESENT := 0 ' Define test variable if it does not exist 16 | IF $sb_standard_variables_PRESENT == 0 THEN GOSUB no_variables 17 | 18 | ' === Main Program === 19 | GOSUB initialize_variables 20 | GOSUB Move_to_Position 21 | END 22 | '==================== 23 | 24 | '--- 'Subroutines --- 25 | Move_to_Position: 26 | IF &Z_park < %(3) THEN GOTO Skip_Lift 27 | JZ, &Z_park 28 | Skip_Lift: 29 | J2, &X_park, &Y_park 30 | END 31 | 32 | no_variables: 33 | C201 34 | RETURN 35 | 36 | '--- Initialize Variables and Adjust Standard Macro Variables for Current Tool and Conditions as Needed 37 | initialize_variables: 38 | 'Adjust to current UNITS of tool (handles whether tool Macro Variables are for INCHES or MM) 39 | &dist_mult = 1.0 40 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 41 | tool_IN: 42 | IF $sb_varTableUNITS == "IN" THEN GOTO continue_with_variables 43 | &dist_mult = 0.0393701 ' Defined in MM: Multiplier to redefine distances from mm to inches 44 | GOTO continue_with_variables 45 | tool_MM: 46 | IF $sb_varTableUNITS == "MM" THEN GOTO continue_with_variables 47 | &dist_mult = 25.4 ' Defined in IN: Multiplier to redefine distances from inches to mm 48 | GOTO continue_with_variables 49 | 'continue adjusting units for current working variables ... 50 | continue_with_variables: 51 | &X_park = $sb_X_park * &dist_mult 52 | &Y_park = $sb_Y_park * &dist_mult 53 | &Z_park = $sb_Z_park * &dist_mult 54 | RETURN 55 | 56 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_90.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Settings-OBS 2 | '!FABMO!description: LEGACY: Default variable settings 3 | ' Name: Settings 4 | ' Description: LEGACY: Load default variable settings 5 | 6 | ' This macro was previously used to load default settings. Now being done in FabMo as part of the tool "Profile" 7 | ' The macro is called by some existing Vectric posts so just stubbed-in here to prevent error 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/macros/macro_91.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Unit error 2 | '!FABMO!description: Notification that file Units do not match machine 3 | ' Name: Change Unit error 4 | ' Description: Notify of inconsistent Units 5 | 6 | ' This Macro is called by Vectric posts in the process of checking Units 7 | ' FabMo will handle a file even if its Units are mismatched to the current tool setting. 8 | ' - So this macro could just provide a warning and return 9 | ' - Or, content could just be deleted, though the macro needs to remain stubbed in to handle legacy Vectric posts 10 | 11 | IF %(25)=1 THEN GOTO METRIC_ERROR 12 | 13 | 'Deal with Metric file in Inch Mode ------------------------ 14 | 'The file you are running is written for use in metric mode but your tool is set for inches. Quit and Reset your tool for metric in the Configuration Manager (left panel). 15 | PAUSE 16 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 17 | END 18 | 19 | 'Deal with Inch file in Metric Mode ------------------------ 20 | METRIC_ERROR: 21 | 'The file you are running is written for use in inch mode but your tool is set for metric. Quit and reset your tool for inches in the Configuration Manager (left panel). 22 | PAUSE 23 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 24 | END -------------------------------------------------------------------------------- /profiles/fabmo-profile-dt/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "ShopBot Desktop", 3 | "description" : "The ShopBot DT2418 tool", 4 | "version" : "v1.1.6" 5 | } 6 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.bak 3 | *.txt 4 | *~ 5 | 6 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/README.md: -------------------------------------------------------------------------------- 1 | # fabmo-profile-dtatc 2 | FabMo machine profile for the ShopBot Desktop Max Automatic Tool Changer. 3 | 4 | # macros - NOTES for ShopBot Dev Team 5 | This is an updated version of FabMo Macros for "FabMo DT Release 2023". 6 | These will be similar to the previous Sb3 Macro system ... but standardized. Generally, all tools will 7 | use the same macros. The format for standard macros is described in Macro #201. 8 | 9 | To help with interchangeability we employ a set of "Standard Variables" whose "Values" are 10 | set or each machine. This is set up in Macro #201 where values for an individual machine are specified. 11 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/apps/CONSOLE_v0.0.04.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtatc/apps/CONSOLE_v0.0.04.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/apps/Desktop-HELP_v0.0.4.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtatc/apps/Desktop-HELP_v0.0.4.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/apps/config_app.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtatc/apps/config_app.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/apps/fabmo-univ-atc-app_v1.0.0.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtatc/apps/fabmo-univ-atc-app_v1.0.0.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/apps/smooth.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtatc/apps/smooth.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/config/engine.json: -------------------------------------------------------------------------------- 1 | { 2 | "profile":"ShopBot Desktop ATC" 3 | } 4 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/config/g2.json: -------------------------------------------------------------------------------- 1 | { 2 | "gun": 0, 3 | "ct": 0.001, 4 | "jt": 1.5, 5 | "xfr": 960, 6 | "yfr": 960, 7 | "zfr": 480, 8 | "spde": 2 9 | } 10 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/config/instance.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/config/machine.json: -------------------------------------------------------------------------------- 1 | { 2 | "units" : "in", 3 | "limits_on" : false, 4 | "softlimits_on" : false, 5 | "default_app" : "fabmo-sb4", 6 | "envelope" : { 7 | "xmin" : 0, 8 | "xmax" : 36, 9 | "ymin" : 0, 10 | "ymax" : 24, 11 | "zmin" : -2, 12 | "zmax" : 6 13 | }, 14 | "manual" : { 15 | "xy_speed": 3, 16 | "xy_max": 6 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/config/opensbp.json: -------------------------------------------------------------------------------- 1 | { 2 | "units":"in", 3 | "movexy_speed": 3, 4 | "movez_speed": 1, 5 | "movea_speed": 1, 6 | "moveb_speed": 1, 7 | "movec_speed": 1, 8 | "jogxy_speed" : 5, 9 | "jogz_speed" : 5, 10 | "joga_speed" : 250, 11 | "jogb_speed" : 250, 12 | "jogc_speed" : 250, 13 | "cutterDia": 0.25, 14 | "pocketOverlap": 50, 15 | "safeZpullUp": 0.5, 16 | "safeApullUp": 0.5, 17 | "variables" : { 18 | "example_variable": 999, 19 | "ATC.type": 7 20 | }, 21 | "cRes": 0.01, 22 | "GblPropX": 1, 23 | "GblPropY": 1 24 | } 25 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_1.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name:ATC Toolchange -- User Initiated 2 | '!FABMO!description:Swaps tools using Automatic Tool Changer - ATC 3 | '!FABMO!enabled:true 4 | C70 5 | &type = $ATC.type 6 | If &type = 7 Then GoTo IsDTATC 7 | If &type = 6 Then GoTo IsATC 8 | If &type = 5 Then GoTo IsMTC 9 | If &type = 4 Then GoTo IsATC 10 | If &type = 3 Then GoTo IsATC 11 | If &type = 2 Then GoTo IsATC 12 | If &type = 1 Then GoTo IsATC 13 | If &type = 0 Then GoTo IsMTC 14 | 15 | GOTO Tool_Type_Error 16 | 17 | IsMTC: 18 | C9 19 | GoTo IsDone 20 | 21 | IsATC: 22 | PAUSE "

Request Tool # to Load
(or: 0 = Return Current Tool; -1 = Manual Change)

", &tool 23 | C71 24 | GoTo IsDone 25 | 26 | IsDTATC: 27 | PAUSE "

Request Tool # to Load
(or: 0 = Return Current Tool; -1 = Manual Change)

", &tool 28 | C71 29 | GoTo IsDone 30 | 31 | IsDone: 32 | END 33 | 34 | Tool_Type_Error: 35 | 'Tool type not set, please check your ShopBot setup to make sure you have selected a tool type. 36 | PAUSE 37 | GOTO IsDone 38 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_204.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name:DRAW BAR OFF 2 | '!FABMO!description:DRAW BAR OFF 3 | '!FABMO!enabled:true 4 | SO, 7,1 5 | SO, 1,0 6 | SO, 1,1 7 | SO, 1,0 8 | SO, 2,0 9 | SO, 3,0 10 | SO, 4,0 11 | SO, 5,0 12 | SO, 6,0 13 | SO, 7,0 14 | SO, 8,0 15 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_205.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name:Release Tool and Move away 2 | '!FABMO!description:Test Change 3 | '!FABMO!enabled:true 4 | SO, 8,1 5 | JZ, $CLIP1_Z + $thClearance 6 | SO, 8,0 7 | 8 | J2,0,0 -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_212.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name:Test Draw Bar ON 2 | '!FABMO!description:Test Draw Bar 3 | '!FABMO!enabled:true 4 | SO, $DrawBar,1 -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_5.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Spindle Warm Up 2 | '!FABMO!description: Turns spindle ON and runs for 2 minutes 3 | ' Name: Spindle Warm Up 4 | ' Description: Turns spindle ON and runs for 2 minutes 5 | 6 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) 7 | PAUSE 120 ' Pause for 2 minutes -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_6.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Start Spindle 2 | '!FABMO!description: Turns spindle ON in file; SBP convention for managing tools 3 | ' Name: Start Spindle 4 | ' Description: Turns spindle ON in files, SBP convention for managing tools [C6] used in Vectric Posts. 5 | ' ... also called in files with Manual or Automatic Tool Changes 6 | ' If Macro is run manually, file ends after the PAUSE and Spindle turns off automatically at that file-end. 7 | 8 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) [Spindle channel] 9 | PAUSE .1 ' ... optional additional pause for spinup, now automatic in FabMo, may be increased here 10 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_7.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Stop Spindle 2 | '!FABMO!description: Turns spindle OFF in file; SBP convention for managing tools 3 | ' Name: Stop Spindle 4 | ' Description: Turns spindle OFF in files, SBP convention for managing tools [C7]. (See Macro #6) 5 | ' Spindle is automatically turned off when a file ends, but this macro can be used to turn spindle on and off withing files 6 | 7 | SO, 1,0 ' Make OUTPUT #1 INACTIVE (low) [Spindle channel] 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_73.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name:ATC Plate Offset 2 | '!FABMO!description:Set distance from ATC Measurement Plate to Material 3 | '!FABMO!enabled:true 4 | C70 ' >> Load all ATC Settings 5 | GOSUB HOME_Z ' >> Home the Z Axis (this is the only axis that we're referencing with this routine, so no need to home X and Y 6 | PAUSE "The keypad will now open, move your spindle to your preferred Z Zeroing location" 7 | SK ' >> Keypad open 8 | C2 ' >> Zero Z Axis to Z Zero Plate 9 | PAUSE "Offset is " + %(9) ' >> Display offset for user's reference 10 | $ATC.PlateOffset = %(9) - $tools[$ATC.ToolIn].H ' >> Record Offset in config 11 | 12 | ' Subroutines ========================================================== 13 | HOME_Z: 14 | PZ, &searchDist_Z, &searchSpeed_Z, &proxNum_Z ' >> PZ "probes" for a switch or contact in the Z axis 15 | ZZ ' >> Reset working zero 16 | JZ, (-1 * &homeOff_Z) ' >> Pull back from prox 17 | &target_ck = &homeOff_Z + &ooch ' >> New target for detecting error just past prox 18 | PZ, &target_ck, &slowSearchSpeed_Z, &proxNum_Z ' >> Slowly probe for prox in final accurate check 19 | IF %(3)== &target_ck THEN GOSUB fail_missed_target ' >> Look at current Z location to see if we went past the target 20 | ZZ 21 | JZ, (-1 * &homeOff_Z) 22 | VA,,,-1*($tools[$ATC.ToolIn].H + $ATC.PlateOffset) ' >> Apply Offset for no tool 23 | RETURN 24 | 25 | ' Error Messages ======================================================= 26 | fail_missed_target: 27 | PAUSE "Target Not Triggered! Lower Z Axis and run C3 (XYZ Homing)." ' >> Did not hit target. 28 | END 29 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_78.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Set Z-Zero to Current Offset 2 | '!FABMO!description: Use after manually zeroing to record offset 3 | '!FABMO!enabled:true 4 | ' Name: Set Z-Zero to Current Offset 5 | ' Description: 6 | ' Installs Current Value of Z offset to permanent offset for future Zeroing. Works even if manually zeroed assuming Macro#3 has been run once. 7 | ' Author: Ted Hall, Ryan Sturmer 8 | ' History: 9 | ' 2/2/17, 3/16/17, 9/13/17, 11/12/19 10 | ' 9/25/21 Refactored for FabMo (th) 11 | 12 | PAUSE "This routine requires you have only zeroed once at the new Z location since homing tool with Macro#3." ''too much commentary? 13 | &tempTB_Zoffset = %(9) ' Read in System Variables for current Z-tablebase-offset (g55Z) 14 | 15 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 16 | tool_IN: 17 | $sb_current_cutter_Zoffset_Units = "IN" 18 | GOTO continue_with_variables 19 | tool_MM: 20 | $sb_current_cutter_Zoffset_Units = "MM" 21 | GOTO continue_with_variables 22 | 'continue adjusting units for current working variables ... 23 | continue_with_variables: 24 | $sb_current_cutter_Zoffset = &tempTB_Zoffset * -1 25 | END 26 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_79.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Park 2 | '!FABMO!description: Move Tool to a Parking Location 3 | '!FABMO!enabled:true 4 | 5 | ' Name: Park 6 | ' Description: Move Tool to a Parking Location (typically to back) 7 | ' Platform: Desktop 8 | ' Author: Ted Hall, Ryan Sturmer 9 | ' History: 10 | ' 2/2/17, 3/16/17 th 11 | ' 2021/10/15 refactored (th) 12 | 13 | '--- Adjust Standard Macro Variables to Current Tool Units if Needed --- 14 | '--- Check to make sure Standard Macro Variables have been read 15 | $sb_standard_variables_PRESENT := 0 ' Define test variable if it does not exist 16 | IF $sb_standard_variables_PRESENT == 0 THEN GOSUB no_variables 17 | 18 | ' === Main Program === 19 | GOSUB initialize_variables 20 | GOSUB Move_to_Position 21 | END 22 | '==================== 23 | 24 | '--- 'Subroutines --- 25 | Move_to_Position: 26 | IF &Z_park < %(3) THEN GOTO Skip_Lift 27 | JZ, &Z_park 28 | Skip_Lift: 29 | J2, &X_park, &Y_park 30 | END 31 | 32 | no_variables: 33 | C201 34 | RETURN 35 | 36 | '--- Initialize Variables and Adjust Standard Macro Variables for Current Tool and Conditions as Needed 37 | initialize_variables: 38 | 'Adjust to current UNITS of tool (handles whether tool Macro Variables are for INCHES or MM) 39 | &dist_mult = 1.0 40 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 41 | tool_IN: 42 | IF $sb_varTableUNITS == "IN" THEN GOTO continue_with_variables 43 | &dist_mult = 0.0393701 ' Defined in MM: Multiplier to redefine distances from mm to inches 44 | GOTO continue_with_variables 45 | tool_MM: 46 | IF $sb_varTableUNITS == "MM" THEN GOTO continue_with_variables 47 | &dist_mult = 25.4 ' Defined in IN: Multiplier to redefine distances from inches to mm 48 | GOTO continue_with_variables 49 | 'continue adjusting units for current working variables ... 50 | continue_with_variables: 51 | &X_park = $sb_X_park * &dist_mult 52 | &Y_park = $sb_Y_park * &dist_mult 53 | &Z_park = $sb_Z_park * &dist_mult 54 | RETURN 55 | 56 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_90.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Settings-OBS 2 | '!FABMO!description: LEGACY: Default variable settings 3 | ' Name: Settings 4 | ' Description: LEGACY: Load default variable settings 5 | 6 | ' This macro was previously used to load default settings. Now being done in FabMo as part of the tool "Profile" 7 | ' The macro is called by some existing Vectric posts so just stubbed-in here to prevent error 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/macros/macro_91.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Unit error 2 | '!FABMO!description: Notification that file Units do not match machine 3 | ' Name: Change Unit error 4 | ' Description: Notify of inconsistent Units 5 | 6 | ' This Macro is called by Vectric posts in the process of checking Units 7 | ' FabMo will handle a file even if its Units are mismatched to the current tool setting. 8 | ' - So this macro could just provide a warning and return 9 | ' - Or, content could just be deleted, though the macro needs to remain stubbed in to handle legacy Vectric posts 10 | 11 | IF %(25)=1 THEN GOTO METRIC_ERROR 12 | 13 | 'Deal with Metric file in Inch Mode ------------------------ 14 | 'The file you are running is written for use in metric mode but your tool is set for inches. Quit and Reset your tool for metric in the Configuration Manager (left panel). 15 | PAUSE 16 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 17 | END 18 | 19 | 'Deal with Inch file in Metric Mode ------------------------ 20 | METRIC_ERROR: 21 | 'The file you are running is written for use in inch mode but your tool is set for metric. Quit and reset your tool for inches in the Configuration Manager (left panel). 22 | PAUSE 23 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 24 | END -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtatc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "ShopBot Desktop ATC", 3 | "description" : "The ShopBot Desktop DT3624 Automatic Tool Changer", 4 | "version" : "v1.1.0" 5 | } 6 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/README.md: -------------------------------------------------------------------------------- 1 | # fabmo-profile-dtmax 2 | FabMo machine profile for the ShopBot Desktop MAX. 3 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/apps/CONSOLE_v0.0.04.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtmax/apps/CONSOLE_v0.0.04.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/apps/Desktop-Utils-Prefs_v0.0.2.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtmax/apps/Desktop-Utils-Prefs_v0.0.2.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/apps/FabMo Simple Surfacer_v0.0.3.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtmax/apps/FabMo Simple Surfacer_v0.0.3.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/apps/fabmo-app-example_v1.0.3.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-dtmax/apps/fabmo-app-example_v1.0.3.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/config/engine.json: -------------------------------------------------------------------------------- 1 | { 2 | "profile":"ShopBot Desktop MAX" 3 | } 4 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/config/g2.json: -------------------------------------------------------------------------------- 1 | { 2 | "gun": 0, 3 | "ct": 0.001, 4 | "jt": 1.5, 5 | "xfr": 300, 6 | "yfr": 300, 7 | "zfr": 240 8 | } 9 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/config/instance.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/config/machine.json: -------------------------------------------------------------------------------- 1 | { 2 | "limits_on" : false, 3 | "softlimits_on" : false, 4 | "default_app" : "fabmo-sb4", 5 | "envelope" : { 6 | "xmin" : 0, 7 | "xmax" : 36, 8 | "ymin" : 0, 9 | "ymax" : 24, 10 | "zmin" : -2, 11 | "zmax" : 6 12 | }, 13 | "manual" : { 14 | "xy_speed": 3 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/config/opensbp.json: -------------------------------------------------------------------------------- 1 | { 2 | "movexy_speed": 3, 3 | "movez_speed": 1, 4 | "movea_speed": 1, 5 | "variables" : { 6 | "example_variable": 999 7 | }, 8 | "cRes": 0.01, 9 | "GblPropX": 1, 10 | "GblPropY": 1 11 | } 12 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_5.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Spindle Warm Up 2 | '!FABMO!description: Turns spindle ON and runs for 2 minutes 3 | ' Name: Spindle Warm Up 4 | ' Description: Turns spindle ON and runs for 2 minutes 5 | 6 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) 7 | PAUSE 120 ' Pause for 2 minutes -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_6.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Start Spindle 2 | '!FABMO!description: Turns spindle ON in file; SBP convention for managing tools 3 | ' Name: Start Spindle 4 | ' Description: Turns spindle ON in files, SBP convention for managing tools [C6] used in Vectric Posts. 5 | ' ... also called in files with Manual or Automatic Tool Changes 6 | ' If Macro is run manually, file ends after the PAUSE and Spindle turns off automatically at that file-end. 7 | 8 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) [Spindle channel] 9 | PAUSE .1 ' ... optional additional pause for spinup, now automatic in FabMo, may be increased here 10 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_7.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Stop Spindle 2 | '!FABMO!description: Turns spindle OFF in file; SBP convention for managing tools 3 | ' Name: Stop Spindle 4 | ' Description: Turns spindle OFF in files, SBP convention for managing tools [C7]. (See Macro #6) 5 | ' Spindle is automatically turned off when a file ends, but this macro can be used to turn spindle on and off withing files 6 | 7 | SO, 1,0 ' Make OUTPUT #1 INACTIVE (low) [Spindle channel] 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_78.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Set Z-Zero to Current Offset 2 | '!FABMO!description: Use after manually zeroing to record offset 3 | '!FABMO!enabled:true 4 | ' Name: Set Z-Zero to Current Offset 5 | ' Description: 6 | ' Installs Current Value of Z offset to permanent offset for future Zeroing. Works even if manually zeroed assuming Macro#3 has been run once. 7 | ' Author: Ted Hall, Ryan Sturmer 8 | ' History: 9 | ' 2/2/17, 3/16/17, 9/13/17, 11/12/19 10 | ' 9/25/21 Refactored for FabMo (th) 11 | 12 | PAUSE "This routine requires you have only zeroed once at the new Z location since homing tool with Macro#3." ''too much commentary? 13 | &tempTB_Zoffset = %(9) ' Read in System Variables for current Z-tablebase-offset (g55Z) 14 | 15 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 16 | tool_IN: 17 | $sb_current_cutter_Zoffset_Units = "IN" 18 | GOTO continue_with_variables 19 | tool_MM: 20 | $sb_current_cutter_Zoffset_Units = "MM" 21 | GOTO continue_with_variables 22 | 'continue adjusting units for current working variables ... 23 | continue_with_variables: 24 | $sb_current_cutter_Zoffset = &tempTB_Zoffset * -1 25 | END 26 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_79.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Park 2 | '!FABMO!description: Move Tool to a Parking Location 3 | '!FABMO!enabled:true 4 | 5 | ' Name: Park 6 | ' Description: Move Tool to a Parking Location (typically to back) 7 | ' Platform: Desktop 8 | ' Author: Ted Hall, Ryan Sturmer 9 | ' History: 10 | ' 2/2/17, 3/16/17 th 11 | ' 2021/10/15 refactored (th) 12 | 13 | '--- Adjust Standard Macro Variables to Current Tool Units if Needed --- 14 | '--- Check to make sure Standard Macro Variables have been read 15 | $sb_standard_variables_PRESENT := 0 ' Define test variable if it does not exist 16 | IF $sb_standard_variables_PRESENT == 0 THEN GOSUB no_variables 17 | 18 | ' === Main Program === 19 | GOSUB initialize_variables 20 | GOSUB Move_to_Position 21 | END 22 | '==================== 23 | 24 | '--- 'Subroutines --- 25 | Move_to_Position: 26 | IF &Z_park < %(3) THEN GOTO Skip_Lift 27 | JZ, &Z_park 28 | Skip_Lift: 29 | J2, &X_park, &Y_park 30 | END 31 | 32 | no_variables: 33 | C201 34 | RETURN 35 | 36 | '--- Initialize Variables and Adjust Standard Macro Variables for Current Tool and Conditions as Needed 37 | initialize_variables: 38 | 'Adjust to current UNITS of tool (handles whether tool Macro Variables are for INCHES or MM) 39 | &dist_mult = 1.0 40 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 41 | tool_IN: 42 | IF $sb_varTableUNITS == "IN" THEN GOTO continue_with_variables 43 | &dist_mult = 0.0393701 ' Defined in MM: Multiplier to redefine distances from mm to inches 44 | GOTO continue_with_variables 45 | tool_MM: 46 | IF $sb_varTableUNITS == "MM" THEN GOTO continue_with_variables 47 | &dist_mult = 25.4 ' Defined in IN: Multiplier to redefine distances from inches to mm 48 | GOTO continue_with_variables 49 | 'continue adjusting units for current working variables ... 50 | continue_with_variables: 51 | &X_park = $sb_X_park * &dist_mult 52 | &Y_park = $sb_Y_park * &dist_mult 53 | &Z_park = $sb_Z_park * &dist_mult 54 | RETURN 55 | 56 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_90.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Settings-OBS 2 | '!FABMO!description: LEGACY: Default variable settings 3 | ' Name: Settings 4 | ' Description: LEGACY: Load default variable settings 5 | 6 | ' This macro was previously used to load default settings. Now being done in FabMo as part of the tool "Profile" 7 | ' The macro is called by some existing Vectric posts so just stubbed-in here to prevent error 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/macros/macro_91.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Unit error 2 | '!FABMO!description: Notification that file Units do not match machine 3 | ' Name: Change Unit error 4 | ' Description: Notify of inconsistent Units 5 | 6 | ' This Macro is called by Vectric posts in the process of checking Units 7 | ' FabMo will handle a file even if its Units are mismatched to the current tool setting. 8 | ' - So this macro could just provide a warning and return 9 | ' - Or, content could just be deleted, though the macro needs to remain stubbed in to handle legacy Vectric posts 10 | 11 | IF %(25)=1 THEN GOTO METRIC_ERROR 12 | 13 | 'Deal with Metric file in Inch Mode ------------------------ 14 | 'The file you are running is written for use in metric mode but your tool is set for inches. Quit and Reset your tool for metric in the Configuration Manager (left panel). 15 | PAUSE 16 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 17 | END 18 | 19 | 'Deal with Inch file in Metric Mode ------------------------ 20 | METRIC_ERROR: 21 | 'The file you are running is written for use in inch mode but your tool is set for metric. Quit and reset your tool for inches in the Configuration Manager (left panel). 22 | PAUSE 23 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 24 | END -------------------------------------------------------------------------------- /profiles/fabmo-profile-dtmax/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "ShopBot Desktop MAX", 3 | "description" : "The ShopBot DT3624 tool" 4 | } 5 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/README.md: -------------------------------------------------------------------------------- 1 | # fabmo-profile-handibot-2 2 | FabMo machine profile for the Handibot Version 2. 3 | 4 | # macros - NOTES on macros 5 | While these are updated versions of macros for FabMo; not all variable functionality is in place in Handibot-FabMo usages. 6 | Thus, there is some hard-coding in macros here for temporary use. 7 | 8 | # HANDIBOT MACROS DIFFER FROM OTHER TOOLS BECAUSE THERE ARE NO PROX SWITCHES FOR ZEROING 9 | 10 | To help with interchangeability we employ a set of standard variables whose values are then set or each tool. This is set up in Macro #201. 11 | THIS HAS NOT BEEN SET UP TO HANDIBOTS YET. 12 | 13 | Checkout the new standard variable definitions are in Macro #201. 14 | 15 | To use these variables, we just need to call this macro once, just after any new profile is installed. 16 | 17 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/apps/config_app.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-handibot-2/apps/config_app.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/apps/fabmo-app-example_v1.0.3.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-handibot-2/apps/fabmo-app-example_v1.0.3.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/apps/smooth.fma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FabMo/FabMo-Engine/38561c776764864b599c90ee5f88ec1e4a6e97a4/profiles/fabmo-profile-handibot-2/apps/smooth.fma -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/config/engine.json: -------------------------------------------------------------------------------- 1 | { 2 | "profile":"Handibot 2.0/2.1" 3 | } 4 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/config/g2.json: -------------------------------------------------------------------------------- 1 | { 2 | "gun": 0, 3 | "ct": 0.001, 4 | "jt": 1.5, 5 | "xfr": 300, 6 | "yfr": 300, 7 | "zfr": 240, 8 | "out5": 1 9 | } 10 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/config/instance.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/config/machine.json: -------------------------------------------------------------------------------- 1 | { 2 | "units" : "in", 3 | "limits_on" : false, 4 | "softlimits_on" : false, 5 | "default_app" : "fabmo-sb4", 6 | "envelope" : { 7 | "xmin" : 0, 8 | "xmax" : 6, 9 | "ymin" : 0, 10 | "ymax" : 8, 11 | "zmin" : -2, 12 | "zmax" : 6 13 | }, 14 | "manual" : { 15 | "xy_speed": 2, 16 | "xy_max": 6 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/config/opensbp.json: -------------------------------------------------------------------------------- 1 | { 2 | "movexy_speed": 2, 3 | "movez_speed": 1, 4 | "jogxy_speed" : 4, 5 | "jogz_speed" : 4, 6 | "cutterDia": 0.25, 7 | "pocketOverlap": 50, 8 | "safeZpullUp": 0.25, 9 | "safeApullUp": 0.25, 10 | "variables" : { 11 | "example_variable": 999 12 | }, 13 | "cRes": 0.01, 14 | "GblPropX": 1, 15 | "GblPropY": 1 16 | } 17 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_5.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Spindle Warm Up 2 | '!FABMO!description: Turns spindle ON and runs for 2 minutes 3 | ' Name: Spindle Warm Up 4 | ' Description: Turns spindle ON and runs for 2 minutes 5 | 6 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) 7 | PAUSE 120 ' Pause for 2 minutes -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_6.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Start Spindle 2 | '!FABMO!description: Turns spindle ON in file; SBP convention for managing tools 3 | ' Name: Start Spindle 4 | ' Description: Turns spindle ON in files, SBP convention for managing tools [C6] used in Vectric Posts. 5 | ' ... also called in files with Manual or Automatic Tool Changes 6 | ' If Macro is run manually, file ends after the PAUSE and Spindle turns off automatically at that file-end. 7 | 8 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) [Spindle channel] 9 | PAUSE .1 ' ... optional additional pause for spinup, now automatic in FabMo, may be increased here 10 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_7.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Stop Spindle 2 | '!FABMO!description: Turns spindle OFF in file; SBP convention for managing tools 3 | ' Name: Stop Spindle 4 | ' Description: Turns spindle OFF in files, SBP convention for managing tools [C7]. (See Macro #6) 5 | ' Spindle is automatically turned off when a file ends, but this macro can be used to turn spindle on and off withing files 6 | 7 | SO, 1,0 ' Make OUTPUT #1 INACTIVE (low) [Spindle channel] 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_78.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Set Z-Zero to Current Offset 2 | '!FABMO!description: Use after manually zeroing to record offset 3 | '!FABMO!enabled:true 4 | ' Name: Set Z-Zero to Current Offset 5 | ' Description: 6 | ' Installs Current Value of Z offset to permanent offset for future Zeroing. Works even if manually zeroed assuming Macro#3 has been run once. 7 | ' Author: Ted Hall, Ryan Sturmer 8 | ' History: 9 | ' 2/2/17, 3/16/17, 9/13/17, 11/12/19 10 | ' 9/25/21 Refactored for FabMo (th) 11 | 12 | PAUSE "This routine requires you have only zeroed once at the new Z location since homing tool with Macro#3." ''too much commentary? 13 | &tempTB_Zoffset = %(9) ' Read in System Variables for current Z-tablebase-offset (g55Z) 14 | 15 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 16 | tool_IN: 17 | $sb_current_cutter_Zoffset_Units = "IN" 18 | GOTO continue_with_variables 19 | tool_MM: 20 | $sb_current_cutter_Zoffset_Units = "MM" 21 | GOTO continue_with_variables 22 | 'continue adjusting units for current working variables ... 23 | continue_with_variables: 24 | $sb_current_cutter_Zoffset = &tempTB_Zoffset * -1 25 | END 26 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_79.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Park 2 | '!FABMO!description: Move Tool to a Parking Location 3 | ' Name: Park 4 | ' Description: Move Tool to a Parking Location (typically to back) 5 | ' Platform: Desktop 6 | ' Author: Ted Hall, Ryan Sturmer 7 | ' History: 8 | ' 2/2/17, 3/16/17 th 9 | ' 2021/10/15 refactored (th) 10 | 11 | '--- Adjust Standard Macro Variables to Current Tool Units if Needed --- 12 | '--- Check to make sure Standard Macro Variables have been read 13 | $sb_standard_variables_PRESENT := 0 ' Define test variable if it does not exist 14 | IF $sb_standard_variables_PRESENT == 0 THEN GOSUB no_variables 15 | 16 | ' === Main Program === 17 | GOSUB initialize_variables 18 | GOSUB Move_to_Position 19 | END 20 | '==================== 21 | 22 | '--- 'Subroutines --- 23 | Move_to_Position: 24 | IF &Z_park < %(3) THEN GOTO Skip_Lift 25 | JZ, &Z_park 26 | Skip_Lift: 27 | J2, &X_park, &Y_park 28 | END 29 | 30 | no_variables: 31 | C201 32 | RETURN 33 | 34 | '--- Initialize Variables and Adjust Standard Macro Variables for Current Tool and Conditions as Needed 35 | initialize_variables: 36 | 'Adjust to current UNITS of tool (handles whether tool Macro Variables are for INCHES or MM) 37 | &dist_mult = 1.0 38 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 39 | tool_IN: 40 | IF $sb_varTableUNITS == "IN" THEN GOTO continue_with_variables 41 | &dist_mult = 0.0393701 ' Defined in MM: Multiplier to redefine distances from mm to inches 42 | GOTO continue_with_variables 43 | tool_MM: 44 | IF $sb_varTableUNITS == "MM" THEN GOTO continue_with_variables 45 | &dist_mult = 25.4 ' Defined in IN: Multiplier to redefine distances from inches to mm 46 | GOTO continue_with_variables 47 | 'continue adjusting units for current working variables ... 48 | continue_with_variables: 49 | &X_park = $sb_X_park * &dist_mult 50 | &Y_park = $sb_Y_park * &dist_mult 51 | &Z_park = $sb_Z_park * &dist_mult 52 | RETURN 53 | 54 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_90.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Settings-OBS 2 | '!FABMO!description: LEGACY: Default variable settings 3 | ' Name: Settings 4 | ' Description: LEGACY: Load default variable settings 5 | 6 | ' This macro was previously used to load default settings. Now being done in FabMo as part of the tool "Profile" 7 | ' The macro is called by some existing Vectric posts so just stubbed-in here to prevent error 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/NEWmacro_91.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Unit error 2 | '!FABMO!description: Notification that file Units do not match machine 3 | ' Name: Change Unit error 4 | ' Description: Notify of inconsistent Units 5 | 6 | ' This Macro is called by Vectric posts in the process of checking Units 7 | ' FabMo will handle a file even if its Units are mismatched to the current tool setting. 8 | ' - So this macro could just provide a warning and return 9 | ' - Or, content could just be deleted, though the macro needs to remain stubbed in to handle legacy Vectric posts 10 | 11 | IF %(25)=1 THEN GOTO METRIC_ERROR 12 | 13 | 'Deal with Metric file in Inch Mode ------------------------ 14 | 'The file you are running is written for use in metric mode but your tool is set for inches. Quit and Reset your tool for metric in the Configuration Manager (left panel). 15 | PAUSE 16 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 17 | END 18 | 19 | 'Deal with Inch file in Metric Mode ------------------------ 20 | METRIC_ERROR: 21 | 'The file you are running is written for use in inch mode but your tool is set for metric. Quit and reset your tool for inches in the Configuration Manager (left panel). 22 | PAUSE 23 | ' We could allow a better option here by putting the action at the beginning of the file and making use of END/EXIT. 24 | END -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/README.txt: -------------------------------------------------------------------------------- 1 | We are in the process of converting the earlier Handibot macro framework to FabMo's current framework. New Desktop version included here for reference. -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/macro_6.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Start Spindle 2 | '!FABMO!description: Turns spindle ON, SBP convention for managing tools 3 | ' Name: Start Spindle 4 | ' Description: Turns spindle ON, SBP convention for managing tools [C6] 5 | 6 | SO, 1, 1 ' Make OUTPUT #1 ACTIVE (high) 7 | PAUSE .1 ' ... optional pause for spinup, now automatic in FabMo 8 | 9 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/macro_7.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Stop Spindle 2 | '!FABMO!description: Turns spindle OFF, SBP convention for managing tools 3 | ' Name: Stop Spindle 4 | ' Description: Turns spindle OFF, SBP convention for managing tools [C7] 5 | 6 | SO, 1, 0 ' Make OUTPUT #1 INACTIVE (low) 7 | 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/macro_78.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Set Z-Zero to Current Offset 2 | '!FABMO!description: Use after manually zeroing to record offset 3 | '!FABMO!enabled:true 4 | ' Name: Set Z-Zero to Current Offset 5 | ' Description: 6 | ' Installs Current Value of Z offset to permanent offset for future Zeroing. Works even if manually zeroed assuming Macro#3 has been run once. 7 | ' Author: Ted Hall, Ryan Sturmer 8 | ' History: 9 | ' 2/2/17, 3/16/17, 9/13/17, 11/12/19 10 | ' 9/25/21 Refactored for FabMo (th) 11 | 12 | PAUSE "This routine requires you have only zeroed once at the new Z location since homing tool with Macro#3." ''too much commentary? 13 | &tempTB_Zoffset = %(9) ' Read in System Variables for current Z-tablebase-offset (g55Z) 14 | 15 | IF %(25) == 1 THEN GOTO tool_MM ' Read UNIT of Tool; System Variable #25 16 | tool_IN: 17 | $sb_current_cutter_Zoffset_Units = "IN" 18 | GOTO continue_with_variables 19 | tool_MM: 20 | $sb_current_cutter_Zoffset_Units = "MM" 21 | GOTO continue_with_variables 22 | 'continue adjusting units for current working variables ... 23 | continue_with_variables: 24 | $sb_current_cutter_Zoffset = &tempTB_Zoffset * -1 25 | END 26 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/macro_79.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Park 2 | '!FABMO!description: Move Tool to Parking Location (typically to back) 3 | ' Name: Park 4 | ' Description: Move Tool to Parking Location (typically to back) [C79] 5 | ' Platform: Handibot2, Handibot1 6 | ' Author: Ted Hall, Ryan Sturmer 7 | ' History: 8 | ' 2/2/17, 3/16/17, 12/12/18 th 9 | 10 | SU,0 ' Set to Inches; Units will auto-revert to current starting units at end of file 11 | 12 | '--- Main --- 13 | IF %(25) = 0 THEN GOTO Inch 14 | 'else 15 | GOTO Metric 16 | END 17 | 18 | '--- Settings --- Initializing permanent variables; ##:=## if not already set 19 | Inch: 20 | $x_park_in := 3 21 | $y_park_in := 7 22 | $z_park_in := 1.5 23 | GOTO Move_to_Position_INCH 24 | Metric: 25 | $x_park_mm := 75 26 | $y_park_mm := 175 27 | $z_park_mm := 40 28 | GOTO Move_to_Position_MM 29 | 30 | '--- Subroutines --- 31 | Move_to_Position_INCH: 32 | JZ, $z_park_in 33 | J2, $x_park_in, $y_park_in 34 | END 35 | 36 | Move_to_Position_MM: 37 | JZ, $z_park_mm 38 | J2, $x_park_mm, $y_park_mm 39 | END 40 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/macro_90.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Settings 2 | '!FABMO!description: LEGACY: Loaded default variable settings 3 | ' Name: Settings 4 | ' Description: LEGACY: Loaded default variable settings 5 | 6 | ' This macro was previously used to load default settings. Now being done in FabMo by the tool "Profile" 7 | ' It is called by existing Vectric posts 8 | -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/macros/macro_91.sbp: -------------------------------------------------------------------------------- 1 | '!FABMO!name: Unit type issue 2 | '!FABMO!description: Please change to correct units 3 | ' Name: Change Unit type issue 4 | ' Description: Please change to correct units 5 | 6 | ' This Macro is called by Vectric posts in the process of checking Units 7 | 8 | IF %(25)=1 THEN GOTO METRIC_ERROR 9 | 10 | 'Deal with Metric file in Inch Mode ------------------------ 11 | 'The file you are running is written for use in metric mode but your tool is set for inches. Please Quit and Reset your tool for metric in the Configuration Manager (left panel). 12 | PAUSE 13 | END 14 | 15 | 'Deal with Inch file in Metric Mode ------------------------ 16 | METRIC_ERROR: 17 | 'The file you are running is written for use in inch mode but your tool is set for metric. Please Quit and reset your tool for inches in the Configuration Manager (left panel). 18 | PAUSE 19 | END -------------------------------------------------------------------------------- /profiles/fabmo-profile-handibot-2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Handibot 2.0/2.1", 3 | "description" : "The ShopBot Handibot Adventure Edition", 4 | "version" : "v1.1.3" 5 | } 6 | -------------------------------------------------------------------------------- /pythonUtils/README.md: -------------------------------------------------------------------------------- 1 | # USB Fabmo Logger 2 | 3 | The **USB Fabmo Logger** is a Python-based daemon that monitors for USB flash drive insertions. When a USB flash drive is detected, the tool generates a `##-FABMO-##.log` file and an `##-accessSHOPBOT-##.html file in the root directory of the USB drive. This log file includes the following: 4 | 5 | - The local IP address of the device. 6 | - other info useful for diagnosing problems 7 | 8 | The html file provide a link to start FabMo/ShopBot on a device on the same network. 9 | 10 | 11 | # I2C Display 12 | 13 | The **I2C Display** script can be used to drive an I2C display from the Raspberry Pi to proovide the tool's IP address and other system Info. This syetem is in-active by default and requires additional hardware. 14 | 15 | 16 | ## License 17 | 18 | This project is licensed under the MIT License. See the LICENSE file for details. 19 | -------------------------------------------------------------------------------- /pythonUtils/fabmo_support_contact.txt: -------------------------------------------------------------------------------- 1 | Technical Support Contact Information 2 | Email: Support@ShopBotTools.com 3 | Phone: 1-888-680-4466 -------------------------------------------------------------------------------- /pythonUtils/run_i2c_display.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Define the virtual environment directory 4 | VENV_DIR="./venv" 5 | 6 | # Check if the virtual environment exists, if not create it 7 | if [ ! -d "$VENV_DIR" ]; then 8 | echo "No virtual environment found. Creating one..." 9 | python3 -m venv "$VENV_DIR" 10 | 11 | if [ $? -ne 0 ]; then 12 | echo "Failed to create virtual environment." 13 | exit 1 14 | fi 15 | fi 16 | 17 | # Activate the virtual environment 18 | echo "Activating the virtual environment..." 19 | source "$VENV_DIR/bin/activate" || source "$VENV_DIR/Scripts/activate" 20 | 21 | # Upgrade pip to avoid dependency issues 22 | echo "Upgrading pip..." 23 | pip install --upgrade pip 24 | 25 | # Check if Blinka is installed 26 | if ! python -c "import board" &> /dev/null; then 27 | echo "Blinka not found. Installing..." 28 | pip install Adafruit-Blinka 29 | else 30 | echo "Blinka is already installed." 31 | fi 32 | 33 | # Run the Python script 34 | echo "Running 12c_display.py..." 35 | python 12c_display.py 36 | -------------------------------------------------------------------------------- /routes/acc.js: -------------------------------------------------------------------------------- 1 | var machine = require("../machine").machine; 2 | 3 | /** 4 | * @api {post} // Direct control of accessories like spindles 5 | * @apiGroup acc // *have not figured out how to make these calls work as groups 6 | * @apiDescription Execute the POSTed acc request 7 | * @apiParam {Object} acc ITEM. Currently supported: `spindle-speed` 8 | * @apiParam {Object} new RPM. 9 | * @apiError {String} status `error` 10 | * @apiError {Object} message Error message 11 | */ 12 | 13 | // eslint-disable-next-line no-unused-vars 14 | var spindle_speed = function (req, res, next) { 15 | var answer = { 16 | status: "success", 17 | data: null, 18 | }; 19 | // Adjust parameter names to match the client's payload 20 | if (req.body.rpm !== undefined) { 21 | var RPM = req.body.rpm; 22 | machine.spindleSpeed(RPM); 23 | } else { 24 | answer = { 25 | status: "error", 26 | message: "No RPM specified in request.", 27 | }; 28 | } 29 | res.json(answer); 30 | }; 31 | 32 | module.exports = function (server) { 33 | server.post("/acc/spindle_speed", spindle_speed); 34 | }; 35 | -------------------------------------------------------------------------------- /routes/kill.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | process = require("process"); 3 | log = require("../log").logger("routes"); 4 | 5 | /** 6 | * @api {get} /restart Kill the engine 7 | * @apiDescription Forcibly terminate the engine software. Software may be restarted by system service manager 8 | * @apiGroup Developer 9 | * @apiSuccess {String} status success 10 | * @apiSuccess {Object} data null 11 | */ 12 | // eslint-disable-next-line no-unused-vars 13 | function kill(req, res, next) { 14 | log.warn("Killing the engine by user request..."); 15 | var answer = { 16 | status: "success", 17 | data: null, 18 | }; 19 | res.json(answer); 20 | process.exit(1); 21 | } 22 | 23 | module.exports = function (server) { 24 | server.get("/kill", kill); 25 | }; 26 | -------------------------------------------------------------------------------- /routes/log.js: -------------------------------------------------------------------------------- 1 | var log = require("../log"); 2 | 3 | /** 4 | * @apiGroup Log 5 | * @api {get} /log Get log 6 | * @apiDescription Get the contents of the debug log 7 | */ 8 | // eslint-disable-next-line no-unused-vars 9 | var getLog = function (req, res, next) { 10 | var body = log.getLogBuffer(); 11 | res.setHeader("content-type", "text/plain"); 12 | res.send(body); 13 | }; 14 | 15 | /** 16 | * @apiGroup Log 17 | * @api {get} /flight Get log 18 | * @apiDescription Get the contents of the debug log 19 | */ 20 | // eslint-disable-next-line no-unused-vars 21 | var getFlightLog = function (req, res, next) { 22 | try { 23 | res.json(log.getFlightLog()); 24 | } catch (e) { 25 | res.send(503, e.message); 26 | } 27 | }; 28 | 29 | /** 30 | * @apiGroup Log 31 | * @api {delete} /log Clear log 32 | * @apiDescription Clear the debug log. 33 | * @apiSuccess {String} status `success` 34 | * @apiSuccess {Object} data null 35 | */ 36 | // eslint-disable-next-line no-unused-vars 37 | var clearLog = function (req, res, next) { 38 | var answer = { 39 | status: "success", 40 | data: null, 41 | }; 42 | log.clearLogBuffer(); 43 | res.json(answer); 44 | }; 45 | 46 | module.exports = function (server) { 47 | server.get("/log", getLog); 48 | server.del("/log", clearLog); 49 | server.get("/flight", getFlightLog); 50 | }; 51 | -------------------------------------------------------------------------------- /routes/state.js: -------------------------------------------------------------------------------- 1 | var machine = require("../machine").machine; 2 | 3 | /** 4 | * @api {get} /quit Quit 5 | * @apiGroup State 6 | * @apiDescription Abort the current job, whether it is running, paused, or stopped due to an error. 7 | * @apiSuccess {String} status `success` 8 | * @apiSuccess {Object} data null 9 | * @apiError {String} status `error` 10 | * @apiError {Object} message Error message 11 | */ 12 | // eslint-disable-next-line no-unused-vars 13 | var quit = function (req, res, next) { 14 | machine.quit(); 15 | var answer = { 16 | status: "success", 17 | data: null, 18 | }; 19 | res.json(answer); 20 | }; 21 | 22 | /** 23 | * @api {get} /pause Pause 24 | * @apiDescription Pause the current job. Only a valid operation when a job is running. Generally, a resume is possible after this operation. 25 | * @apiGroup State 26 | * @apiSuccess {String} status `success` 27 | * @apiSuccess {Object} data null 28 | * @apiError {String} status `error` 29 | * @apiError {Object} message Error message 30 | */ 31 | // eslint-disable-next-line no-unused-vars 32 | var pause = function (req, res, next) { 33 | machine.pause(next); 34 | var answer = { 35 | status: "success", 36 | data: null, 37 | }; 38 | res.json(answer); 39 | }; 40 | 41 | /** 42 | * @api {get} /resume Resume 43 | * @apiGroup State 44 | * @apiDescription Continue running the current job if the system is paused. 45 | * @apiSuccess {String} status `success` 46 | * @apiSuccess {Object} data null 47 | * @apiError {String} status `error` 48 | * @apiError {Object} message Error message 49 | */ 50 | // eslint-disable-next-line no-unused-vars 51 | var resume = function (req, res, next) { 52 | machine.resume(); 53 | var answer = { 54 | status: "success", 55 | data: null, 56 | }; 57 | res.json(answer); 58 | }; 59 | 60 | module.exports = function (server) { 61 | //server.get('/run/:id',run); //OK 62 | server.post("/quit", quit); //OK 63 | server.post("/pause", pause); //OK 64 | server.post("/resume", resume); //OK 65 | }; 66 | -------------------------------------------------------------------------------- /routes/time.js: -------------------------------------------------------------------------------- 1 | /* 2 | * routes/time.js 3 | * 4 | * Route for setting the time 5 | */ 6 | 7 | // Set time to the value provided in the post body. 8 | // POST body example: {"ms": 1234567} where `ms` is ms since the unix epoch 9 | 10 | var engine = require("../engine"); 11 | 12 | // eslint-disable-next-line no-unused-vars 13 | var setTime = function (req, res, next) { 14 | if (req.params.ms) { 15 | engine.setTime(req.params.ms); 16 | } 17 | }; 18 | 19 | // eslint-disable-next-line no-unused-vars 20 | var get_time = function (req, res, next) { 21 | const d = new Date(); 22 | let t = d.getTime(); 23 | var answer = { 24 | status: "success", 25 | data: { time: t }, 26 | }; 27 | res.json(answer); 28 | }; 29 | 30 | module.exports = function (server) { 31 | server.post("/time", setTime); 32 | server.get("/time", get_time); 33 | }; 34 | -------------------------------------------------------------------------------- /routes/uix.js: -------------------------------------------------------------------------------- 1 | var machine = require("../machine").machine; 2 | 3 | /** 4 | * @api {post} // Respond interactively to user inputs (U_ser I_nput xI_nteraction) during file running, etc. 5 | * @apiGroup uix // *have not figured out how to make these calls work as groups 6 | * @apiDescription Execute the POSTed uixc request 7 | * @apiParam {Object} uix ITEM. Currently suppored: `fr_override` 8 | * @apiParam {Object} new OVR. 9 | * @apiError {String} status `error` 10 | * @apiError {Object} message Error message 11 | */ 12 | 13 | // eslint-disable-next-line no-unused-vars 14 | var fr_override = function (req, res, next) { 15 | var answer = { 16 | status: "success", 17 | data: null, 18 | }; 19 | // Adjust parameter names to match the client's payload 20 | if (req.body.ovr !== undefined) { 21 | var OVR = req.body.ovr; 22 | machine.frOverride(OVR); 23 | } else { 24 | answer = { 25 | status: "error", 26 | message: "No OVR specified in request.", 27 | }; 28 | } 29 | res.json(answer); 30 | }; 31 | 32 | module.exports = function (server) { 33 | server.post("/uix/fr_override", fr_override); 34 | }; 35 | -------------------------------------------------------------------------------- /runtime/gcode/index.js: -------------------------------------------------------------------------------- 1 | exports.GCodeRuntime = require("./gcode").GCodeRuntime; 2 | -------------------------------------------------------------------------------- /runtime/opensbp/commands/custom.js: -------------------------------------------------------------------------------- 1 | /* CUSTOM CUTS */ 2 | 3 | // Set to table base coordinates 4 | exports.C_POUND = function (args, callback) { 5 | this.runCustomCut(args[0], callback); 6 | }; 7 | exports.CN = function (args, callback) { 8 | this.runCustomCut(args[0], callback); 9 | }; 10 | -------------------------------------------------------------------------------- /runtime/opensbp/commands/file.js: -------------------------------------------------------------------------------- 1 | var log = require("../../../log").logger("sbp"); 2 | var config = require("../../../config"); 3 | 4 | /* FILES */ 5 | 6 | // At the moment, this is just a placeholder for the files 7 | // ... "F" functions are only implemented via Sb4 and can not be used within part files 8 | 9 | // /* ####** probably don't need this */ 10 | 11 | // // Set to table base coordinates 12 | // exports.FL = function (args, callback) { 13 | // // fabmo.submitJob({ 14 | // // file : text, 15 | // // filename: filename, 16 | // // name : name, // just letting this float for the moment, make name without ext to be easily available 17 | // // description: description 18 | // // }, 19 | // // function(err, result) { 20 | // // if(err) { 21 | // // if(err.message) { 22 | // // fabmo.notify('error', err.message); 23 | // // } else if(err.job) { 24 | // // fabmo.notify('warn', err.job); 25 | // // } else { 26 | // // fabmo.notify('error', err); 27 | // // } 28 | // // } else { 29 | // // fabmo.launchApp('job-manager'); 30 | // // } 31 | // // } 32 | // // ); 33 | 34 | // // $('#jobsubmit-modal').foundation('reveal', 'close'); 35 | // // $("#jobsubmit-form").trigger('reset'); 36 | // // }; 37 | // if (this.machine) { 38 | // var toRun = this.lastFilename; 39 | // if (toRun) { 40 | // this._pushFileStack(); 41 | // this.runFile(toRun); 42 | // } else { 43 | // throw new Error("Can't run last file; lost?"); 44 | // } 45 | // } else { 46 | // callback(); 47 | // } 48 | // return true; 49 | // }; 50 | 51 | // exports.FR = function (args, callback) { 52 | // this.getJobHistory(args[0], callback); 53 | // }; 54 | -------------------------------------------------------------------------------- /runtime/opensbp/commands/index.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | var path = require("path"); 3 | var log = require("../../../log").logger("opensbp"); 4 | 5 | // Load all the files in the 'routes' directory and process them as route-producing modules 6 | exports.load = function () { 7 | var commandDir = __dirname; 8 | var files = fs.readdirSync(commandDir); 9 | var retval = {}; 10 | files.forEach(function (file) { 11 | var filePath = path.resolve("./", commandDir, file); 12 | if (path.extname(filePath) == ".js" && path.basename(filePath) != "index.js") { 13 | try { 14 | var commands = require(filePath); 15 | for (var attr in commands) { 16 | retval[attr] = commands[attr]; 17 | } 18 | log.debug('Loaded OpenSBP commands from "' + filePath + '"'); 19 | } catch (e) { 20 | log.warn('Could not load OpenSBP Commands from "' + filePath + '": ' + e); 21 | log.error(e); 22 | } 23 | } 24 | }); 25 | return retval; 26 | }; 27 | -------------------------------------------------------------------------------- /runtime/opensbp/commands/tools.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var log = require("../../../log").logger("sbp"); 3 | 4 | /* TOOLS */ 5 | 6 | // Set Up Spindle Control Tool; VFD, Spindle, RPM, etc. (Does not contorl RUN/STOP or optional FWD/REV) 7 | // ... currently only managing a single spindle 8 | 9 | exports.TR = function (args, callback) { 10 | // todo: Not currently managing spindle number or checking to make sure *not spinning before setting direction 11 | const spindle = require("../../../spindle1"); 12 | 13 | // Incoming requests: 14 | var new_RPM = args[0]; 15 | var spindle_num = args[1]; 16 | var opts1 = args[2]; 17 | var opts2 = args[3]; 18 | 19 | // Defaults for Incoming requests 20 | if (!spindle_num) { 21 | spindle_num = 1; 22 | } 23 | if (!opts1) { 24 | opts = ""; 25 | } 26 | if (!opts2) { 27 | opts2 = ""; 28 | } 29 | 30 | // Set RPM; todo: check for change only (or deeper than here); update range 31 | if (new_RPM > 5000 && new_RPM < 30000) { 32 | try { 33 | log.info("----> new speed: " + new_RPM); 34 | spindle.setSpindleVFDFreq(new_RPM); 35 | } catch (error) { 36 | log.error("Failed to pass new RPM: " + error); 37 | } 38 | }; 39 | 40 | callback(); 41 | 42 | }; -------------------------------------------------------------------------------- /runtime/opensbp/index.js: -------------------------------------------------------------------------------- 1 | exports.SBPRuntime = require("./opensbp").SBPRuntime; 2 | -------------------------------------------------------------------------------- /runtime/opensbp/test-error.js: -------------------------------------------------------------------------------- 1 | // test-error.js 2 | function testErrorCreation(message) { 3 | var error = new Error(message); 4 | console.log(error); 5 | } 6 | 7 | testErrorCreation("Test message"); 8 | -------------------------------------------------------------------------------- /runtime/opensbp/test1.sbp: -------------------------------------------------------------------------------- 1 | mx,1 2 | mx,2 3 | mx,3 4 | -------------------------------------------------------------------------------- /runtime/opensbp/test2.sbp: -------------------------------------------------------------------------------- 1 | 'more complex test 2 | PAUSE "This is a statement" 3 | &var=3.4 4 | mx, &var 5 | jh 6 | IF &var > 3 then GOTO last 7 | last: 8 | END 9 | -------------------------------------------------------------------------------- /runtime/opensbp/test_parser.js: -------------------------------------------------------------------------------- 1 | const parser = require("./sbp_parser"); 2 | 3 | // Test inputs 4 | const testInputs = [ 5 | "&var=2", 6 | "$tools[1].x = 100", 7 | "$config.settings.speed = 500", 8 | "$unknown[5] = 2", 9 | "$loc[&i] = { x: 1.1, y: 2.2 }", 10 | "PAUSE", 11 | 'PAUSE "Please configm action"', 12 | 'PAUSE "Please configm action", &Var', 13 | 'PAUSE "Confirm?", TITLE="Confirmation", OKTEXT="Yes", CANCELTEXT="No", NOBUTTON=FALSE', 14 | "PAUSE INPUT=&UserInput", 15 | 'PAUSE MESSAGE="Wait...", TIMER=5', 16 | 'PAUSE "Processing...", TIMER=10', 17 | 'PAUSE "Just a message."', 18 | "PAUSE TIMER=5", 19 | 'PAUSE &varName, MESSAGE="Input required", TITLE="Data Entry"', 20 | 'DIALOG "Please enter your name:", INPUT=&name, OKTEXT="Submit"', 21 | "IF &A = 1 THEN RETURN", 22 | ]; 23 | 24 | // Function to test parsing of inputs 25 | function testParser(inputs) { 26 | inputs.forEach((input) => { 27 | try { 28 | const result = parser.parse(input); 29 | console.log(`Input: ${input}`); 30 | console.log("Parsed Output:", JSON.stringify(result, null, 2)); 31 | } catch (e) { 32 | console.error(`Error parsing input "${input}":`, e.message); 33 | console.error("Expected:", e.expected); 34 | console.error("Found:", e.found); 35 | console.error("Location:", e.location); 36 | } 37 | console.log("------------------------------------"); 38 | }); 39 | } 40 | 41 | // Run the test 42 | testParser(testInputs); 43 | -------------------------------------------------------------------------------- /scripts/sb3_to_gcode.js: -------------------------------------------------------------------------------- 1 | var SBPRuntime = require("../runtime/opensbp").SBPRuntime; 2 | var config = require("../config"); 3 | var fs = require("fs"); 4 | 5 | var input_file = process.argv[2]; 6 | var output_file = process.argv[3]; 7 | 8 | config.configureOpenSBP(function () { 9 | config.configureDriver(null, function () { 10 | var runtime = new SBPRuntime(); 11 | runtime.loadCommands(function (err) { 12 | if (!err) { 13 | fs.readFile(input_file, function (err, data) { 14 | if (!err) { 15 | runtime.on("end", function (data) { 16 | fs.writeFile(output_file, data.join("\n")); 17 | }); 18 | runtime.runString(String(data)); 19 | } 20 | }); 21 | } 22 | }); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | /* 2 | * server.js 3 | * 4 | * Engine server module. 5 | * 6 | * This is the entry point for the fabmo engine. It just starts the engine. 7 | */ 8 | var engine = require("./engine"); 9 | // eslint-disable-next-line no-undef 10 | var argv = require("minimist")(process.argv); // process is undefined 11 | 12 | // eslint-disable-next-line no-unused-vars 13 | engine.start(function (err, data) { 14 | // Start the debug monitor if requested, but only after the engine is fully started 15 | if ("debug" in argv) { 16 | require("./debug").start(); 17 | } 18 | }); 19 | 20 | exports.engine = engine; 21 | -------------------------------------------------------------------------------- /spindles/spindle-VFD-data/spin-DT-1hp-delta.json: -------------------------------------------------------------------------------- 1 | { 2 | "VFD_Settings": { 3 | "Name": "spin-DT-1hp-delta", 4 | "COM_PORT": "/dev/vfdACM_controller1", 5 | "MB_ADDRESS": 3, 6 | "BAUDRATE": 9600, 7 | "BYTESIZE": 8, 8 | "STOPBITS": 1, 9 | "PARITY": "even", 10 | "MAX_RPM": 18000, 11 | "MIN_RPM": 8000, 12 | "Registers": { 13 | "READ_FREQUENCY": 8450, 14 | "READ_ATTAINED_FREQUENCY": 8451, 15 | "READ_OUTPUT_CURRENT": 8452, 16 | "READ_STATUS": 8449, 17 | "TRIG_READ_FREQ": 8450, 18 | "SET_FREQUENCY": 8193, 19 | "RPM_MULT": 1, 20 | "READ_AMPS_HI": null, 21 | "AMP_MULT": 1, 22 | "UNLOCK_PARAMETERS": null, 23 | "PASSWORD": 0 24 | }, 25 | "Modbus_Function_Codes": { 26 | "READ_REGISTER": 3, 27 | "WRITE_SINGLE_REGISTER": 6 28 | }, 29 | "READ_LENGTH": 6 30 | } 31 | } -------------------------------------------------------------------------------- /spindles/spindle-VFD-data/spin-DT-1hp-lenze.json: -------------------------------------------------------------------------------- 1 | { 2 | "VFD_Settings": { 3 | "Name": "spin-DT-1hp-lenze", 4 | "COM_PORT": "/dev/vfdACM_controller1", 5 | "MB_ADDRESS": 3, 6 | "BAUDRATE": 9600, 7 | "BYTESIZE": 8, 8 | "STOPBITS": 1, 9 | "PARITY": "even", 10 | "MAX_RPM": 18000, 11 | "MIN_RPM": 8000, 12 | "Registers": { 13 | "READ_FREQUENCY": 24, 14 | "READ_ATTAINED_FREQUENCY": 25, 15 | "READ_OUTPUT_CURRENT": 26, 16 | "READ_STATUS": 26, 17 | "TRIG_READ_FREQ": 24, 18 | "SET_FREQUENCY": 44, 19 | "RPM_MULT": 6, 20 | "READ_AMPS_HI": true, 21 | "AMP_MULT": 2.6, 22 | "UNLOCK_PARAMETERS": 49, 23 | "PASSWORD": 0 24 | }, 25 | "Modbus_Function_Codes": { 26 | "READ_REGISTER": 3, 27 | "WRITE_SINGLE_REGISTER": 6 28 | }, 29 | "READ_LENGTH": 6 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /spindles/spindle1_settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "VFD_Settings": { 3 | "Name": "spin-DT-1hp-lenze", 4 | "COM_PORT": "/dev/vfdACM_controller1", 5 | "MB_ADDRESS": 3, 6 | "BAUDRATE": 9600, 7 | "BYTESIZE": 8, 8 | "STOPBITS": 1, 9 | "PARITY": "even", 10 | "MAX_RPM": 18000, 11 | "MIN_RPM": 8000, 12 | "Registers": { 13 | "READ_FREQUENCY": 24, 14 | "READ_ATTAINED_FREQUENCY": 25, 15 | "READ_OUTPUT_CURRENT": 26, 16 | "READ_STATUS": 26, 17 | "TRIG_READ_FREQ": 24, 18 | "SET_FREQUENCY": 44, 19 | "RPM_MULT": 6, 20 | "READ_AMPS_HI": true, 21 | "AMP_MULT": 2.6, 22 | "UNLOCK_PARAMETERS": 49, 23 | "PASSWORD": 0 24 | }, 25 | "Modbus_Function_Codes": { 26 | "READ_REGISTER": 3, 27 | "WRITE_SINGLE_REGISTER": 6 28 | }, 29 | "READ_LENGTH": 6 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /updater.js: -------------------------------------------------------------------------------- 1 | /* 2 | * updater.js 3 | * 4 | * Handle functions of the updater that need to be called from the engine. 5 | * 6 | * Currently, this is just the AP collapse. All other functions are handled through the router. 7 | * 8 | */ 9 | var got = require("got"); 10 | var config = require("./config"); 11 | var log = require("./log").logger("updater"); 12 | 13 | async function postJSON(url, obj) { 14 | try { 15 | await got 16 | .post(url, { 17 | json: obj, 18 | }) 19 | .json(); 20 | } catch (err) { 21 | log.error(err); 22 | } 23 | } 24 | 25 | exports.APModeCollapse = function () { 26 | var port = config.engine.get("server_port") + 1; 27 | var url = "http://localhost:" + port + "/network/hotspot/state"; 28 | postJSON(url, { enabled: true }); 29 | }; 30 | --------------------------------------------------------------------------------