mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-12-22 11:03:48 +01:00
Merge branch 'develop'
This commit is contained in:
commit
09a6c6a928
@ -1,5 +1,38 @@
|
||||
Changelog
|
||||
|
||||
# 0.10.6 (17 jun 2015)
|
||||
# 0.10.6-rc3 (17 jun 2015)
|
||||
# 0.10.6-rc2 (16 jun 2015)
|
||||
# 0.10.6-rc1 (16 jun 2015)
|
||||
This release sees several connectivity bugs resolved as we continue to look to
|
||||
create the most stable experience we can offer for Doodle3D users. A new
|
||||
addition that has been realized in that the filament thickness is now
|
||||
printer dependent. This is important for printers that use 1,75mm filament.
|
||||
When changing the printer type it switches automatically. Please contact us for
|
||||
better filament thickness defaults. For more details please review the notes below:
|
||||
|
||||
General:
|
||||
- Updated OpenWRT (the operating system) to 14.07.
|
||||
- Fixed several big issues around connecting to printers.
|
||||
- Big files for Marlin based printers are processed faster.
|
||||
- Target temperature retrieval is improved.
|
||||
- Changed the Accesspoint's settings to the default because of startup issues (country: NL to US, channel: 11 to 1).
|
||||
- Improved 404 page.
|
||||
|
||||
Additions
|
||||
- Filament thickness is now printer type dependent and automatically change when selecting a printer. (Please contact us for better filament thickness defaults.)
|
||||
|
||||
Support for more 3D printers:
|
||||
- DoodleDream
|
||||
- 3Dison
|
||||
- LulzBot TAZ 4
|
||||
- Wanhao Duplicator 4
|
||||
- Ultimaker 2 Go
|
||||
|
||||
Improvements for Makerbot based printers (like the Wanhao printer):
|
||||
- Prevent that the nozzle bumps into the bed when starting a new print.
|
||||
- Prevent that the nozzle moves though a print after printing.
|
||||
|
||||
# 0.10.5-a (2 Feb 2015)
|
||||
- Removed gray lines where printer needs to 'travel' (move without printing)
|
||||
- Enabled traveling also for first couple of layers. This prevents straight lines crossing your print
|
||||
|
@ -13,6 +13,7 @@
|
||||
-- setenv LUA_CPATH /opt/local/share/luarocks/lib/lua/5.2/?.so
|
||||
-- setenv LUA_PATH /opt/local/share/luarocks/share/lua/5.2/?.lua
|
||||
-- Reboot
|
||||
-- Also see: https://github.com/keplerproject/luarocks/wiki/Using-LuaRocks#rocks-trees-and-the-lua-libraries-path
|
||||
--
|
||||
-- This script will automatically locate the Doodle3D repo's.
|
||||
-- Index files are fetched from the online repository.
|
||||
@ -66,8 +67,11 @@ end
|
||||
pl = pl()
|
||||
local um --- update manager module, will be loaded later through @{loadUpdateManager}
|
||||
|
||||
local lfs = require('lfs') -- assume this exists since it's required by penlight as well
|
||||
|
||||
local ok, lfs = pcall(require, 'lfs')
|
||||
if not ok then
|
||||
ERR('This script requires the LuaFileSystem library')
|
||||
os.exit(2)
|
||||
end
|
||||
|
||||
-----------------------------
|
||||
-- CONSTANTS AND VARIABLES --
|
||||
@ -148,13 +152,17 @@ local function findInFile(needle, file)
|
||||
return not not t:find(needle, 1, true)
|
||||
end
|
||||
|
||||
local function detectOpenWrtRoot()
|
||||
local f = io.open('Makefile', 'r')
|
||||
local line = f and f:read('*line')
|
||||
local rv = (line and line:find('# Makefile for OpenWrt') == 1) and true or false
|
||||
local function fileExists(path)
|
||||
local attr = lfs.attributes (path)
|
||||
return attr ~= nil
|
||||
end
|
||||
|
||||
if f then f:close() end
|
||||
return rv
|
||||
local function detectBuildroot()
|
||||
if not fileExists("customfeeds") or not fileExists("bin") then
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
-- returns uri (file path) of the wifibox feed, nil if not found or nil+msg on error
|
||||
@ -244,24 +252,15 @@ end
|
||||
local function prepare()
|
||||
local msg = nil
|
||||
|
||||
io.write("* Checking if working directory is the OpenWrt root... ")
|
||||
local isOpenWrtRoot = detectOpenWrtRoot()
|
||||
if isOpenWrtRoot then
|
||||
paths.wrt = pl.path.currentdir()
|
||||
print("found " .. paths.wrt)
|
||||
else
|
||||
print("unrecognized directory, try changing directories or using -wrt-root")
|
||||
return nil
|
||||
end
|
||||
|
||||
io.write("* Looking for Doodle3D feed path... ")
|
||||
local d3dFeed,msg = getWifiboxFeedRoot('feeds.conf')
|
||||
if d3dFeed then
|
||||
print("found " .. d3dFeed)
|
||||
else
|
||||
if msg then print("not found: " .. msg) else print("not found.") end
|
||||
return nil
|
||||
end
|
||||
-- local d3dFeed,msg = getWifiboxFeedRoot('feeds.conf')
|
||||
-- if d3dFeed then
|
||||
-- print("found " .. d3dFeed)
|
||||
-- else
|
||||
-- if msg then print("not found: " .. msg) else print("not found.") end
|
||||
-- return nil
|
||||
-- end
|
||||
local d3dFeed = "customfeeds"
|
||||
|
||||
paths.firmware = pl.path.join(d3dFeed, D3D_REPO_FIRMWARE_NAME)
|
||||
paths.client = pl.path.join(d3dFeed, D3D_REPO_CLIENT_NAME)
|
||||
@ -315,8 +314,8 @@ local function collectLocalInfo()
|
||||
local info = {}
|
||||
|
||||
-- temporary fields required for copying image files
|
||||
info.factoryImgPath = pl.path.join(paths.wrt, 'bin/ar71xx/openwrt-ar71xx-generic-' .. deviceType .. '-v1-squashfs-factory.bin')
|
||||
info.sysupgradeImgPath = pl.path.join(paths.wrt, 'bin/ar71xx/openwrt-ar71xx-generic-' .. deviceType .. '-v1-squashfs-sysupgrade.bin')
|
||||
info.factoryImgPath = pl.path.join(paths.root, 'bin/ar71xx/openwrt-ar71xx-generic-' .. deviceType .. '-v1-squashfs-factory.bin')
|
||||
info.sysupgradeImgPath = pl.path.join(paths.root, 'bin/ar71xx/openwrt-ar71xx-generic-' .. deviceType .. '-v1-squashfs-sysupgrade.bin')
|
||||
|
||||
info.version = um.parseVersion(pl.file.read(pl.path.join(paths.firmware, 'src/FIRMWARE-VERSION')))
|
||||
if not info.version then return nil,"could not determine current firmware version" end
|
||||
@ -410,7 +409,7 @@ end
|
||||
-- TODO: the packages are not really used and the openwrt script to generate the
|
||||
-- package index requires all packages to be present so this has been skipped for now
|
||||
local function buildFeedDir()
|
||||
local scriptPath = pl.path.join(paths.wrt, 'scripts/ipkg-make-index.sh')
|
||||
local scriptPath = pl.path.join(paths.root, 'scripts/ipkg-make-index.sh')
|
||||
|
||||
return nil
|
||||
end
|
||||
@ -424,26 +423,6 @@ local function uploadFiles()
|
||||
return rv and true or nil,("rsync failed, exit status: " .. ev)
|
||||
end
|
||||
|
||||
local function checkWrtConfig()
|
||||
local goodConfigPath = pl.path.join(paths.firmware, "extra/openwrt-build/openwrt-diffconfig-extramini")
|
||||
local wrtConfigPath = pl.path.tmpname()
|
||||
--print("diffonfig output file: " .. wrtConfigPath)
|
||||
|
||||
local rv,ev = pl.utils.execute('./scripts/diffconfig.sh > "' .. wrtConfigPath .. '" 2> /dev/null')
|
||||
if not rv then return nil,"could not run diffconfig script (exit status: " .. ev .. ")" end
|
||||
|
||||
local _,rv,output = pl.utils.executeex('diff "' .. wrtConfigPath .. '" "' .. goodConfigPath .. '"')
|
||||
|
||||
if rv == 0 then
|
||||
return true
|
||||
elseif rv == 1 then
|
||||
print("configurations differ:\n-----------------------\n" .. output .. "\n-----------------------")
|
||||
--ask for confirmation?
|
||||
else
|
||||
return nil,"unexpected exit status from diff (" .. rv .. ")"
|
||||
end
|
||||
end
|
||||
|
||||
local function main()
|
||||
print("\nDoodle3D release script")
|
||||
if detectRootPrivileges() then
|
||||
@ -457,6 +436,16 @@ local function main()
|
||||
-- if opts['cache-dir'] then paths.cache = opts['cache-dir'] end
|
||||
-- more options: clear cache, rebuild (download all and generate index from actual files), dry-run, force
|
||||
|
||||
io.write("* Checking if working directory is the Buildroot... ")
|
||||
local isBuildroot = detectBuildroot()
|
||||
if isBuildroot then
|
||||
paths.root = pl.path.currentdir()
|
||||
print("found " .. paths.root)
|
||||
else
|
||||
print("unrecognized directory, try changing directories or using -wrt-root")
|
||||
return nil
|
||||
end
|
||||
|
||||
if not prepare() then quit(1) end
|
||||
|
||||
|
||||
@ -474,7 +463,6 @@ local function main()
|
||||
|
||||
--TODO: if requested, fetch images and packages (i.e., mirror whole directory)
|
||||
|
||||
|
||||
-- pl.pretty.dump(newVersion)
|
||||
-- print("stables: "); pl.pretty.dump(stables)
|
||||
-- print("===========================");
|
||||
@ -488,8 +476,6 @@ local function main()
|
||||
return not (um.findVersion(newVersion.version, nil, stables) or um.findVersion(newVersion.version, nil, betas)) and true or nil
|
||||
end)
|
||||
|
||||
runAction("Checking OpenWrt config", "failed", 3, checkWrtConfig)
|
||||
|
||||
--TODO: check git repos (`git log -n 1 --pretty=format:%ct` gives commit date of last commit (not author date))
|
||||
|
||||
local isStable = (newVersion.version.suffix == nil)
|
||||
@ -516,8 +502,7 @@ local function main()
|
||||
print("skipped - not implemented")
|
||||
-- runAction("Building package feed directory", "failed", 5, buildFeedDir)
|
||||
|
||||
|
||||
local answer = getYesNo("? Local updates cache will be synced to remote server, proceed? (y/n) ")
|
||||
local answer = getYesNo("? Are you SURE you want to publish? (y/n) ")
|
||||
if answer ~= true then
|
||||
print("Did not get green light, quitting.")
|
||||
quit(5)
|
||||
@ -525,7 +510,7 @@ local function main()
|
||||
|
||||
runAction("About to sync files to server", "could not upload files", 6, uploadFiles)
|
||||
|
||||
print("Done.")
|
||||
print("Released version " .. um.formatVersion(newVersion.version) .. "!")
|
||||
quit()
|
||||
end
|
||||
|
||||
|
@ -79,7 +79,7 @@ $IPKG_INSTROOT/etc/init.d/dhcpcheck enable
|
||||
if [ -z "$IPKG_INSTROOT" ]; then
|
||||
echo "Enabling and configuring wifi device..."
|
||||
uci set wireless.@wifi-device[0].disabled=0
|
||||
uci set wireless.radio0.country='NL'
|
||||
uci delete wireless.radio0.channel
|
||||
uci commit wireless; wifi
|
||||
|
||||
echo "Disabling default route and DNS server for lan network interface..."
|
||||
@ -104,7 +104,7 @@ else
|
||||
uci set uhttpd.main.lua_prefix='/d3dapi'
|
||||
|
||||
uci set wireless.@wifi-device[0].disabled=0
|
||||
uci set wireless.radio0.country='NL'
|
||||
uci delete wireless.radio0.channel
|
||||
# TODO: add firewall net
|
||||
uci set network.wlan=interface
|
||||
|
||||
|
@ -1 +1 @@
|
||||
0.10.5-a
|
||||
0.10.6
|
@ -109,7 +109,9 @@ M.printer_dimensions_x = {
|
||||
default_kossel = 0,
|
||||
default_minifactory = 150,
|
||||
default_lulzbot_taz_4 = 298,
|
||||
default_ultimaker2go = 120,
|
||||
default_doodle_dream = 120,
|
||||
default_wanhao_duplicator4 = 210,
|
||||
subSection = 'printer_type',
|
||||
type = 'int',
|
||||
description = '',
|
||||
@ -123,7 +125,9 @@ M.printer_dimensions_y = {
|
||||
default_kossel = 0,
|
||||
default_minifactory = 150,
|
||||
default_lulzbot_taz_4 = 275,
|
||||
default_ultimaker2go = 120,
|
||||
default_doodle_dream = 120,
|
||||
default_wanhao_duplicator4 = 140,
|
||||
subSection = 'printer_type',
|
||||
type = 'int',
|
||||
description = '',
|
||||
@ -134,7 +138,9 @@ M.printer_dimensions_z = {
|
||||
default_minifactory = 155,
|
||||
default__3Dison_plus = 150,
|
||||
default_lulzbot_taz_4 = 250,
|
||||
default_ultimaker2go = 112,
|
||||
default_doodle_dream = 80,
|
||||
default_wanhao_duplicator4 = 140,
|
||||
subSection = 'printer_type',
|
||||
type = 'int',
|
||||
description = '',
|
||||
@ -146,21 +152,34 @@ M.printer_heatedbed = {
|
||||
default_makerbot_replicator2x = true,
|
||||
default_minifactory = true,
|
||||
default_lulzbot_taz_4 = true,
|
||||
default_wanhao_duplicator4 = true,
|
||||
subSection = 'printer_type',
|
||||
type = 'bool',
|
||||
description = 'Printer has heated bed',
|
||||
}
|
||||
M.printer_filamentThickness = {
|
||||
default = 2.89,
|
||||
default_doodle_dream = 1.75,
|
||||
default_wanhao_duplicator4 = 1.75,
|
||||
type = 'float',
|
||||
description = '',
|
||||
min = 0.0,
|
||||
subSection = 'printer_type'
|
||||
}
|
||||
|
||||
local default_makerbot_startcode = ";@printer {printerType}\nM136 (enable build)\nM73 P0\nG162 X Y F2000(home XY axes maximum)\nG161 Z F900(home Z axis minimum)\nG92 X0 Y0 Z-5 A0 B0 (set Z to -5)\nG1 Z0.0 F900(move Z to '0')\nG161 Z F100(home Z axis minimum)\nM132 X Y Z A B (Recall stored home offsets for XYZAB axis)\nG92 X152 Y72 Z0 A0 B0\nG1 X-112 Y-73 Z0.5 F3300.0 (move to front left 'zero' position)\nG92 X0 Y0 Z0.5 A0 B0\nG1 X0 Y0 Z0.5 F3300.0 (move to waiting position)\nG130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)\n{if heatedBed};M109 S{printingBedTemp} T0\n{if heatedBed}M140 S{printingBedTemp} T0\nM104 S{printingTemp} T0\n;M134 T0\nM135 T0\nM104 S{printingTemp} T0\nM133 T0\nG130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)\nG1 F100 A10 ;extrude 10mm\nG92 A0 ;reset again\nG0 Z20"
|
||||
local default_makerbot_startcode = ';@printer {printerType}\nM136 (enable build)\nM73 P0 (Set build percentage to 0)\nG162 X Y F2000 (home XY axes to maximum)\nG161 Z F900 (home Z axis to minimum quick)\nG92 X0 Y0 Z0 A0 B0 (set axis positions to 0)\nG1 Z5.0 F900 (move Z axis down)\nG161 Z F100 (home Z axis to minimum more precise)\nG92 X0 Y0 Z0 A0 B0 (set axis positions to 0)\nG1 Z2.0 F900 (move Z axis to safety height)\nG1 X-264 Y-145 Z0 F3300.0 (move XY to start position)\nG92 X0 Y0 Z0 A0 B0 (set axis position to 0)\nG130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)\n{if heatedBed}M140 S{printingBedTemp} T0 (Set bed temp)\nM135 T0 (use first extruder)\nM104 S{printingTemp} T0 (set extruder temp)\nM133 T0 (Wait for extruder)\nG130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)\nG1 F100 A10 (extrude 10mm)\nG92 A0 (reset extruder)\nG0 Z20 (move up, to lose filament)'
|
||||
local default_deltabot_startcode = ';Generated with Doodle3D (deltabot)\nM109 S{printingTemp} ;set target temperature\n{if heatedBed}M190 S{printingBedTemp} ;set target bed temperature\nG21 ;metric values\nG91 ;relative positioning\nM107 ;start with the fan off\nG28 ; move to home\nG92 E0 ;zero the extruded length\nG90 ;absolute positioning\nM117 Printing Doodle... ;display message (20 characters to clear whole screen)'
|
||||
local default_ultimaker2_startcode = ';Generated with Doodle3D (ultimaker2)\nM109 S{printingTemp} ;set target temperature \n{if heatedBed}M190 S{printingBedTemp} ;set target bed temperature\nG21 ;metric values\nG90 ;absolute positioning\nM107 ;start with the fan off\nG28 ; home to endstops\nG1 Z15 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nM117 Printing Doodle... ;display message (20 characters to clear whole screen)\n'
|
||||
M.printer_startcode = {
|
||||
default = ';Generated with Doodle3D (default)\nM109 S{printingTemp} ;set target temperature \n{if heatedBed}M190 S{printingBedTemp} ;set target bed temperature\nG21 ;metric values\nG91 ;relative positioning\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG92 E0 ;zero the extruded length again\nG1 F9000\nG90 ;absolute positioning\nM117 Printing Doodle... ;display message (20 characters to clear whole screen)',
|
||||
default_ultimaker2 = ';Generated with Doodle3D (ultimaker2)\nM109 S{printingTemp} ;set target temperature \n{if heatedBed}M190 S{printingBedTemp} ;set target bed temperature\nG21 ;metric values\nG90 ;absolute positioning\nM107 ;start with the fan off\nG28 ; home to endstops\nG1 Z15 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nM117 Printing Doodle... ;display message (20 characters to clear whole screen)\n',
|
||||
default_ultimaker2 = default_ultimaker2_startcode,
|
||||
default_ultimaker2go = default_ultimaker2_startcode,
|
||||
default__3Dison_plus = ';@printer {printerType}\nM136 (enable build)\nM73 P0\nG21\nG90\nM103\n;M109 S50 T0\nM140 S50 T0\nM104 S{printingTemp} T0\n;M134 T0\nM135 T0\nM104 S{printingTemp} T0\nG162 X Y F2000(home XY axes maximum)\nG161 Z F900(home Z axis minimum)\nG92 X113.5 Y74 Z-5 A0 B0 (set Z to -5)\nG1 Z0.0 F900(move Z to 0)\nG161 Z F100(home Z axis minimum)\nM132 X Y Z A B (Recall stored home offsets for XYZAB axis)\nG1 Z50 F3300\nG130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)\nM133 T0\nM6 T0\nG130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)\nG0 Z0.2 F3000\nG1 Z0 F100 A10 ;extrude 10mm\nG92 X227 Y148 Z0 A0 ;reset again\nG1 X227 Y148 Z0',
|
||||
default_makerbot_generic = default_makerbot_startcode,
|
||||
default_makerbot_replicator2 = default_makerbot_startcode,
|
||||
default_makerbot_replicator2x = default_makerbot_startcode,
|
||||
default_makerbot_thingomatic = default_makerbot_startcode,
|
||||
default_wanhao_duplicator4 = default_makerbot_startcode,
|
||||
default_delta_rostockmax = default_deltabot_startcode,
|
||||
default_deltamaker = default_deltabot_startcode,
|
||||
default_kossel = default_deltabot_startcode,
|
||||
@ -169,16 +188,19 @@ M.printer_startcode = {
|
||||
description = ''
|
||||
}
|
||||
|
||||
local default_makerbot_endcode = 'M73 P100\nG92 A0 B0 ;reset extruder position to prevent retraction\nM18 A B(Turn off A and B Steppers)\nG1 Z155 F900\nG162 X Y F2000\nM18 X Y Z(Turn off steppers after a build)\n{if heatedBed}M140 S{preheatBedTemp} T0\nM104 S{preheatTemp} T0\nM73 P100 (end build progress )\nM72 P1 ( Play Ta-Da song )\nM137 (build end notification)'
|
||||
local default_makerbot_endcode = 'M73 P100\nG92 A0 B0 ;reset extruder position to prevent retraction\nM18 A B(Turn off A and B Steppers)\nG162 Z F900\nG162 X Y F2000\nM18 X Y Z(Turn off steppers after a build)\n{if heatedBed}M140 S{preheatBedTemp} T0\nM104 S{preheatTemp} T0\nM73 P100 (end build progress )\nM72 P1 ( Play Ta-Da song )\nM137 (build end notification)'
|
||||
local default_deltabot_endcode = 'M107 ;fan offG91 ;relative positioningG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressureG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even moreG28 ;move to homeM84 ;disable axes / steppersG90 ;absolute positioningM109 S0 ; hot end off{if heatedBed}M140 S{preheatBedTemp}M117 Done ;display message (20 characters to clear whole screen)'
|
||||
local default_ultimaker2_endcode = 'M107 ;fan off\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+5.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 ;home the printer\nM84 ;disable axes / steppers\nG90 ;absolute positioning\nM104 S{preheatTemp}\n{if heatedBed}M140 S{preheatBedTemp}\nM117 Done ;display message (20 characters to clear whole screen)'
|
||||
M.printer_endcode = {
|
||||
default = 'M107 ;fan off\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;disable axes / steppers\nG90 ;absolute positioning\nM104 S{preheatTemp}\n{if heatedBed}M140 S{preheatBedTemp}\nM117 Done ;display message (20 characters to clear whole screen)',
|
||||
default_ultimaker2 = 'M107 ;fan off\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+5.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 ;home the printer\nM84 ;disable axes / steppers\nG90 ;absolute positioning\nM104 S{preheatTemp}\n{if heatedBed}M140 S{preheatBedTemp}\nM117 Done ;display message (20 characters to clear whole screen)',
|
||||
default_ultimaker2 = default_ultimaker2_endcode,
|
||||
default_ultimaker2go = default_ultimaker2_endcode,
|
||||
default__3Dison_plus = 'M73 P100\nG92 A0 B0 ;reset extruder position to prevent retraction\nM18 A B(Turn off A and B Steppers)\nG1 Z155 F900\nG162 X Y F2000\nM18 X Y Z(Turn off steppers after a build)\nM140 S35 T0\nM104 S180 T0\nM73 P100 (end build progress )\nM72 P1 ( Play Ta-Da song )\nM137 (build end notification)\n',
|
||||
default_makerbot_generic = default_makerbot_endcode,
|
||||
default_makerbot_replicator2 = default_makerbot_endcode,
|
||||
default_makerbot_replicator2x = default_makerbot_endcode,
|
||||
default_makerbot_thingomatic = default_makerbot_endcode,
|
||||
default_wanhao_duplicator4 = default_makerbot_endcode,
|
||||
default_delta_rostockmax = default_deltabot_endcode,
|
||||
default_deltamaker = default_deltabot_endcode,
|
||||
default_kossel = default_deltabot_endcode,
|
||||
@ -239,14 +261,6 @@ M.printer_travelSpeed = {
|
||||
min = 0
|
||||
}
|
||||
|
||||
M.printer_filamentThickness = {
|
||||
default = 2.89,
|
||||
default_doodle_dream = 1.75,
|
||||
type = 'float',
|
||||
description = '',
|
||||
min = 0.0
|
||||
}
|
||||
|
||||
M.printer_useSubLayers = {
|
||||
default = true,
|
||||
type = 'bool',
|
||||
|
17
src/main.lua
17
src/main.lua
@ -48,18 +48,19 @@ local function setupAutoWifiMode()
|
||||
|
||||
local wifiState = wifi.getDeviceState()
|
||||
local netName, netMode = wifiState.ssid, wifiState.mode
|
||||
log:info("current wifi name: " .. (netName or "<nil>") .. ", mode: " .. netMode)
|
||||
|
||||
local apSsid = wifi.getSubstitutedSsid(settings.get('network.ap.ssid'))
|
||||
local apMode = (apSsid == netName) and (netMode == 'ap')
|
||||
log:info("ssid of self: " .. apSsid)
|
||||
|
||||
local scanList,msg = wifi.getScanInfo()
|
||||
local knownSsids = wifi.getConfigs()
|
||||
|
||||
if not scanList then
|
||||
return nil, "autowifi: could not scan wifi networks (" .. msg .. ")"
|
||||
end
|
||||
|
||||
log:info("current wifi name: " .. (netName or "<nil>") .. ", mode: " .. netMode .. ", ssid of self: " .. apSsid)
|
||||
local knownSsids = wifi.getConfigs()
|
||||
-- log:info("current wifi name: " .. (netName or "<nil>") .. ", mode: " .. netMode .. ", ssid of self: " .. apSsid)
|
||||
local visNet, knownNet = {}, {}
|
||||
for _,sn in ipairs(scanList) do
|
||||
table.insert(visNet, sn.ssid)
|
||||
@ -72,6 +73,15 @@ local function setupAutoWifiMode()
|
||||
|
||||
-- if the currently active network is client mode and is also visible, do nothing since it will connect automatically further along the boot process
|
||||
if netMode == 'sta' and netName ~= nil and netName ~= "" and findSsidInList(scanList, netName) then
|
||||
-- signin to connect.doodle3d.com
|
||||
local success, output = Signin.signin()
|
||||
if success then
|
||||
log:info("Signed in")
|
||||
else
|
||||
log:info("Signing in failed")
|
||||
end
|
||||
-- report we are connected after signin attempt
|
||||
netconf.setStatus(netconf.CONNECTED,"Connected");
|
||||
return true, "autowifi: no action - existing configuration found for currently wifi visible network (" .. netName .. ")"
|
||||
end
|
||||
|
||||
@ -101,6 +111,7 @@ local function setupAutoWifiMode()
|
||||
return nil, "autowifi: failed to configure as access point with ssid '" .. apSsid .. "' (" .. msg .. ")"
|
||||
end
|
||||
else
|
||||
netconf.setStatus(netconf.CREATED,"Access point created");
|
||||
return true, "autowifi: no action - no known networks found, already in access point mode"
|
||||
end
|
||||
|
||||
|
@ -25,14 +25,14 @@ local deviceName, deviceApi
|
||||
local cachedApSsid, baseApSsid = nil, nil
|
||||
|
||||
function M.getSubstitutedSsid(unformattedSsid)
|
||||
log:debug("getSubstitutedSsid unformattedSsid:'" .. (unformattedSsid or "nil") .. "' baseApSsid:'" .. (baseApSsid or "nil") .. "' cachedApSsid:'" .. (cachedApSsid or "nil"))
|
||||
if unformattedSsid == baseApSsid and cachedApSsid ~= nil then return cachedApSsid end
|
||||
if not unformattedSsid or type(unformattedSsid) ~= 'string' then return nil end
|
||||
|
||||
local macTail = M.getMacAddress():sub(7)
|
||||
|
||||
log:debug(" macTail:'" .. macTail)
|
||||
baseApSsid = unformattedSsid
|
||||
cachedApSsid = unformattedSsid:gsub('%%%%MAC_ADDR_TAIL%%%%', macTail)
|
||||
|
||||
return cachedApSsid
|
||||
end
|
||||
|
||||
@ -107,7 +107,9 @@ end
|
||||
--returns the wireless device's MAC address (as string, without colons)
|
||||
--(lua numbers on openWrt seem to be 32bit so they cannot represent a MAC address as one number)
|
||||
function M.getMacAddress()
|
||||
log:debug("getMacAddress")
|
||||
local macText = utils.readFile('/sys/class/net/' .. deviceName .. '/address')
|
||||
log:debug(" macText: '" .. (macText or "nil") .. "'")
|
||||
local out = ''
|
||||
|
||||
-- Hack to prevent failure in case the MAC address could not be obtained.
|
||||
@ -137,9 +139,10 @@ end
|
||||
-- @param ssid return data for given SSID or for all networks if SSID not given
|
||||
-- @return data for all or requested network; false+error on failure or nil when requested network not found
|
||||
function M.getScanInfo(ssid)
|
||||
|
||||
local iw = iwinfo[deviceApi]
|
||||
log:info("start wifi scan")
|
||||
local sr = iw.scanlist(deviceName)
|
||||
log:info("wifi scan done")
|
||||
local si, se
|
||||
|
||||
if ssid == nil then
|
||||
|
@ -12,7 +12,7 @@ START=61
|
||||
LOGGER="logger -t autowifi -p 6"
|
||||
|
||||
boot() {
|
||||
sleep 1
|
||||
sleep 5
|
||||
|
||||
$LOGGER "Invoking Doodle3D WiFi box network auto-initialization..."
|
||||
/usr/share/lua/wifibox/script/d3dapi autowifi
|
||||
|
@ -13,10 +13,12 @@ local printDriver = require('print3d')
|
||||
local SUPPORTED_PRINTERS = {
|
||||
rigidbot = "Rigidbot",
|
||||
ultimaker = "Ultimaker",
|
||||
ultimaker2 = "Ultimaker2",
|
||||
ultimaker2 = "Ultimaker 2",
|
||||
ultimaker2go = "Ultimaker 2 Go",
|
||||
makerbot_replicator2 = "MakerBot Replicator2",
|
||||
makerbot_replicator2x = "MakerBot Replicator2x",
|
||||
makerbot_thingomatic = "MakerBot Thing-o-matic",
|
||||
wanhao_duplicator4 = "Wanhao Duplicator 4",
|
||||
printrbot = "Printrbot",
|
||||
bukobot = "Bukobot",
|
||||
cartesio = "Cartesio",
|
||||
|
@ -161,15 +161,19 @@ end]]--
|
||||
function M.get(key)
|
||||
--log:info("settings:get: "..utils.dump(key))
|
||||
key = replaceDots(key)
|
||||
local base = getBaseKeyTable(key)
|
||||
|
||||
-- retrieve settings's base settings from conf_defaults.lua
|
||||
local base = getBaseKeyTable(key)
|
||||
if not base then return nil,ERR_NO_SUCH_KEY end
|
||||
|
||||
-- check which uci section to read.
|
||||
-- By default it will read from the general section, but if a base setting contains a subSection it will check that subSection
|
||||
local section = UCI_CONFIG_SECTION;
|
||||
if base.subSection ~= nil then
|
||||
section = M.get(base.subSection)
|
||||
end
|
||||
|
||||
-- get setting from uci
|
||||
local uciV,msg = uci:get(UCI_CONFIG_NAME, section, key)
|
||||
if not uciV and msg ~= nil then
|
||||
local errorMSG = "Issue reading setting '"..utils.dump(key).."': "..utils.dump(msg);
|
||||
@ -177,6 +181,7 @@ function M.get(key)
|
||||
return nil, errorMSG;
|
||||
end
|
||||
|
||||
-- convert uci value into proper lua value
|
||||
local uciV = fromUciValue(uciV, base.type)
|
||||
if uciV ~= nil then
|
||||
-- returning value from uci
|
||||
|
Loading…
Reference in New Issue
Block a user