Merge branch 'devel' into dev/userlanguage
This commit is contained in:
commit
728951cb55
6 changed files with 41 additions and 20 deletions
|
|
@ -108,6 +108,10 @@
|
|||
* OctoPrint server should no longer hang when big changes in the system time happen, e.g. after first contact to an
|
||||
NTP server on a Raspberry Pi image. Achieved through monkey patching Tornado with
|
||||
[this PR](https://github.com/tornadoweb/tornado/pull/1290).
|
||||
* Serial ports matching ``/dev/ttyAMA*`` are not anymore listed by default (this was the reason for a lot of people
|
||||
attempting to connect to their printer on their Raspberry Pis, on which ``/dev/ttyAMA0`` is the OS's serial console
|
||||
by default). Added configuration of additional ports to the Serial Connection section in the Settings to make it easier
|
||||
for those people who do indeed have their printer connected to ``/dev/ttyAMA0``.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
|
|
@ -167,6 +171,7 @@
|
|||
* Don't display a "Disconnected" screen when trying to download a timelapse in Firefox
|
||||
* Fixed handling of SD card files in folders
|
||||
* Fixed refreshing of timelapse file list upon finished rendering of a new one
|
||||
* Fixed ``/api/printer`` which wasn't adapter yet to new internal offset data model
|
||||
|
||||
([Commits](https://github.com/foosel/OctoPrint/compare/master...devel))
|
||||
|
||||
|
|
|
|||
|
|
@ -436,24 +436,23 @@ class Printer(PrinterInterface, comm.MachineComPrintCallback):
|
|||
|
||||
def get_current_temperatures(self):
|
||||
if self._comm is not None:
|
||||
tempOffset, bedTempOffset = self._comm.getOffsets()
|
||||
offsets = self._comm.getOffsets()
|
||||
else:
|
||||
tempOffset = {}
|
||||
bedTempOffset = None
|
||||
offsets = dict()
|
||||
|
||||
result = {}
|
||||
if self._temp is not None:
|
||||
for tool in self._temp.keys():
|
||||
result["tool%d" % tool] = {
|
||||
"actual": self._temp[tool][0],
|
||||
"target": self._temp[tool][1],
|
||||
"offset": tempOffset[tool] if tool in tempOffset.keys() and tempOffset[tool] is not None else 0
|
||||
"actual": self._temp[tool][0],
|
||||
"target": self._temp[tool][1],
|
||||
"offset": offsets[tool] if tool in offsets and offsets[tool] is not None else 0
|
||||
}
|
||||
if self._bedTemp is not None:
|
||||
result["bed"] = {
|
||||
"actual": self._bedTemp[0],
|
||||
"target": self._bedTemp[1],
|
||||
"offset": bedTempOffset
|
||||
"actual": self._bedTemp[0],
|
||||
"target": self._bedTemp[1],
|
||||
"offset": offsets["bed"] if "bed" in offsets and offsets["bed"] is not None else 0
|
||||
}
|
||||
|
||||
return result
|
||||
|
|
|
|||
|
|
@ -77,7 +77,8 @@ def getSettings():
|
|||
"timeoutCommunication": s.getFloat(["serial", "timeout", "communication"]),
|
||||
"timeoutTemperature": s.getFloat(["serial", "timeout", "temperature"]),
|
||||
"timeoutSdStatus": s.getFloat(["serial", "timeout", "sdStatus"]),
|
||||
"log": s.getBoolean(["serial", "log"])
|
||||
"log": s.getBoolean(["serial", "log"]),
|
||||
"additionalPorts": s.get(["serial", "additionalPorts"])
|
||||
},
|
||||
"folder": {
|
||||
"uploads": s.getBaseFolder("uploads"),
|
||||
|
|
@ -185,6 +186,7 @@ def setSettings():
|
|||
if "timeoutCommunication" in data["serial"].keys(): s.setFloat(["serial", "timeout", "communication"], data["serial"]["timeoutCommunication"])
|
||||
if "timeoutTemperature" in data["serial"].keys(): s.setFloat(["serial", "timeout", "temperature"], data["serial"]["timeoutTemperature"])
|
||||
if "timeoutSdStatus" in data["serial"].keys(): s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"])
|
||||
if "additionalPorts" in data["serial"] and isinstance(data["serial"]["additionalPorts"], (list, tuple)): s.set(["serial", "additionalPorts"], data["serial"]["additionalPorts"])
|
||||
|
||||
oldLog = s.getBoolean(["serial", "log"])
|
||||
if "log" in data["serial"].keys(): s.setBoolean(["serial", "log"], data["serial"]["log"])
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ $(function() {
|
|||
self.serial_timeoutTemperature = ko.observable(undefined);
|
||||
self.serial_timeoutSdStatus = ko.observable(undefined);
|
||||
self.serial_log = ko.observable(undefined);
|
||||
self.serial_additionalPorts = ko.observable(undefined);
|
||||
|
||||
self.folder_uploads = ko.observable(undefined);
|
||||
self.folder_timelapse = ko.observable(undefined);
|
||||
|
|
@ -231,6 +232,7 @@ $(function() {
|
|||
self.serial_timeoutTemperature(response.serial.timeoutTemperature);
|
||||
self.serial_timeoutSdStatus(response.serial.timeoutSdStatus);
|
||||
self.serial_log(response.serial.log);
|
||||
self.serial_additionalPorts(response.serial.additionalPorts.join("\n"));
|
||||
|
||||
self.folder_uploads(response.folder.uploads);
|
||||
self.folder_timelapse(response.folder.timelapse);
|
||||
|
|
@ -302,7 +304,14 @@ $(function() {
|
|||
"timeoutCommunication": self.serial_timeoutCommunication(),
|
||||
"timeoutTemperature": self.serial_timeoutTemperature(),
|
||||
"timeoutSdStatus": self.serial_timeoutSdStatus(),
|
||||
"log": self.serial_log()
|
||||
"log": self.serial_log(),
|
||||
"additionalPorts": _.filter(
|
||||
_.map(
|
||||
self.serial_additionalPorts().split("\n"),
|
||||
function(item) { return (item) ? item.trim() : ""; }
|
||||
),
|
||||
function(item) { return item && !_.startsWith(item, "#"); }
|
||||
)
|
||||
},
|
||||
"folder": {
|
||||
"uploads": self.folder_uploads(),
|
||||
|
|
|
|||
|
|
@ -70,4 +70,11 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="settings-serialAdditionalPorts">{{ _('Additional serial ports') }}</label>
|
||||
<div class="controls">
|
||||
<textarea rows="4" class="block" id="settings-serialAdditionalPorts" data-bind="value: serial_additionalPorts"></textarea>
|
||||
<span class="help-inline">{{ _('Use this to define additional <a href="%%(glob_url)s">glob patterns</a> matching serial ports to list for connecting against, e.g. <code>/dev/ttyAMA*</code>. One entry per line.')|format(glob_url="http://docs.python.org/2/library/glob.html") }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ def serialList():
|
|||
baselist = baselist \
|
||||
+ glob.glob("/dev/ttyUSB*") \
|
||||
+ glob.glob("/dev/ttyACM*") \
|
||||
+ glob.glob("/dev/ttyAMA*") \
|
||||
+ glob.glob("/dev/tty.usb*") \
|
||||
+ glob.glob("/dev/cu.*") \
|
||||
+ glob.glob("/dev/cuaU*") \
|
||||
|
|
@ -432,15 +431,15 @@ class MachineCom(object):
|
|||
|
||||
template = settings().loadScript("gcode", scriptName, context=context)
|
||||
if template is None:
|
||||
return None
|
||||
|
||||
scriptLines = filter(
|
||||
lambda x: x is not None and x.strip() != "",
|
||||
map(
|
||||
lambda x: process_gcode_line(x, offsets=self._tempOffsets, current_tool=self._currentTool),
|
||||
template.split("\n")
|
||||
scriptLines = []
|
||||
else:
|
||||
scriptLines = filter(
|
||||
lambda x: x is not None and x.strip() != "",
|
||||
map(
|
||||
lambda x: process_gcode_line(x, offsets=self._tempOffsets, current_tool=self._currentTool),
|
||||
template.split("\n")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
for hook in self._gcodescript_hooks:
|
||||
try:
|
||||
|
|
|
|||
Loading…
Reference in a new issue