Skip to content

Commit bd69061

Browse files
committed
v1.6.2
1 parent d1cf516 commit bd69061

34 files changed

+41034
-40759
lines changed

.appveyor.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
version: '1.6.1.{build}'
1+
version: '1.6.2.{build}'
22

33
environment:
44
matrix:
55
- PYTHON: "C:\\Python36-x64"
66
PYTHON_VERSION: 3.6
7-
ARTISAN_VERSION: 1.6.1
7+
ARTISAN_VERSION: 1.6.2
88

99
install:
1010
- set PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ Version History
4242

4343
| Version | Date | Comment |
4444
|---------|------|---------|
45-
| v1.6.1 | 10.03.2019 | Adds support for the [Sedona Elite 2in1 roaster](http://www.buckeyecoffee.com/sedona-elite-roasters.html), the [Probat Roaster Middleware](https://www.probat.com/en/products/shoproaster/produkte/roasters/probatone-series/), the [Aillio R1](https://aillio.com/) v2 firmware incl. the new [IBTS IR sensor](https://medium.com/@aillio/the-start-of-something-39aa01d08fa9), the Phidgets [REL1000](https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=966), [REL1100](https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=720), [REL1101](https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=721), and [DAQ1400](https://www.phidgets.com/?tier=3&catid=49&pcid=42&prodid=961), the Phidget RC Servo API ([Phidget RCC 1000](https://www.phidgets.com/?tier=3&catid=21&pcid=18&prodid=1015), [Phidget 1061](https://www.phidgets.com/?tier=3&catid=21&pcid=18&prodid=1032), and [Phidget 1066](https://www.phidgets.com/?tier=3&catid=21&pcid=18&prodid=1044)), the [Yocotopuce Meteo](http://www.yoctopuce.com/EN/products/usb-environmental-sensors/yocto-meteo-v2) ambient sensor and the (upcoming) [Yocotopuce IR](http://www.yoctopuce.com/EN/products/category/usb-environmental-sensors) module, adds Brazilian portuguese translations and updated French translations, a number of internal improvements and bug fixes
45+
| v1.6.2 | 20.03.2019 | Enables communication with Phidgets under the Mac OS X 10.14 security framework |
46+
| v1.6.1 | 10.03.2019 | Adds support for the [Sedona Elite 2in1 roaster](http://www.buckeyecoffee.com/sedona-elite-roasters.html), the [Probat Roaster Middleware](https://www.probat.com/en/products/shoproaster/produkte/roasters/probatone-series/), the [Aillio R1](https://aillio.com/) v2 firmware incl. the new [IBTS IR sensor](https://medium.com/@aillio/the-start-of-something-39aa01d08fa9), the Phidgets [REL1000](https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=966), [REL1100](https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=720), [REL1101](https://www.phidgets.com/?tier=3&catid=46&pcid=39&prodid=721), and [DAQ1400](https://www.phidgets.com/?tier=3&catid=49&pcid=42&prodid=961), the Phidget RC Servo API ([Phidget RCC 1000](https://www.phidgets.com/?tier=3&catid=21&pcid=18&prodid=1015), [Phidget 1061](https://www.phidgets.com/?tier=3&catid=21&pcid=18&prodid=1032), and [Phidget 1066](https://www.phidgets.com/?tier=3&catid=21&pcid=18&prodid=1044)), the [Yocotopuce Meteo](http://www.yoctopuce.com/EN/products/usb-environmental-sensors/yocto-meteo-v2) ambient sensor and the (upcoming) [Yocotopuce IR](http://www.yoctopuce.com/EN/products/category/usb-environmental-sensors) module, adds Brazilian portuguese translations and updated French translations, a number of internal improvements and bug fixes |
4647
| v1.5.0 | 17.10.2018 | Adds ArtisanViewer mode, Phidgets IO VoltageRatio, Program 78 and Program 910 devices, and support for manual [Besca roasting machines](https://www.bescaroasters.com/), bug fixes |
4748
| v1.4.0 | 03.10.2018 | Adds time guide, additional PhasesLCD configurations, export/convert to Excel and import/export to Probat Pilot v1.4, channel tare, playback DROP event, always ON mode, support for ambient data and Phidget ambient sensors [HUM1000](https://www.phidgets.com/?tier=3&catid=14&pcid=12&prodid=644) and [PRE1000](https://www.phidgets.com/?tier=3&catid=64&pcid=57&prodid=719), [PID P-on-Measurement/Input mode](http://brettbeauregard.com/blog/2017/06/introducing-proportional-on-measurement/), improved curve smoothing, machine support for [Atilla GOLD plus 7"](http://www.atilla.com.br/p/atilla-5kg-gold-plus/), [Besca roasting machines](https://www.bescaroasters.com/), [Coffee-Tech Engineering Ghibli](https://www.coffee-tech.com/products/commercial-roasters/ghibli-r15/) and [Diedrich Roasters](https://www.diedrichroasters.com/), bug fixes
4849
| v1.3.1 | 20.05.2018 | [Fuji PID PXF](https://www.fujielectric.com/products/instruments/products/controller/PXF.html), bug fixes |

src/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@
120120
<key>CFBundlePackageType</key>
121121
<string>APPL</string>
122122
<key>CFBundleShortVersionString</key>
123-
<string>1.6.1</string>
123+
<string>1.6.2</string>
124124
<key>CFBundleSignature</key>
125125
<string>????</string>
126126
<key>CFBundleVersion</key>
127-
<string>Artisan 1.6.1</string>
127+
<string>Artisan 1.6.2</string>
128128
<key>LSApplicationCategoryType</key>
129129
<string>public.app-category.developer-tools</string>
130130
<key>LSArchitecturePriority</key>

src/artisanlib/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11

2-
__version__ = '1.6.1'
2+
__version__ = '1.6.2'
33
__revision__ = '0'
44
__build__ = '0'

src/artisanlib/main.py

+106-92
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ def __init__(self,parent,dpi):
983983
"Phidget DAQ1400 Voltage", #98
984984
"Aillio Bullet R1 IBTS/BT", #99
985985
"Yocto IR", #100
986-
"Behmor BT/ET", #101
986+
"-Behmor BT/ET", #101
987987
]
988988

989989
# ADD DEVICE:
@@ -4009,8 +4009,9 @@ def reset(self,redraw=True,soundOn=True,sampling=False,keepProperties=False):
40094009
self.roastdate = QDateTime.currentDateTime()
40104010
self.roastepoch = QDateTime.currentDateTime().toTime_t()
40114011
self.roasttzoffset = libtime.timezone
4012-
self.errorlog = []
4013-
aw.seriallog = []
4012+
if not sampling: # just if the RESET button is manually pressed we clear the error log
4013+
self.errorlog = []
4014+
aw.seriallog = []
40144015

40154016
aw.qmc.zoom_follow = False # reset the zoom follow feature
40164017

@@ -4142,8 +4143,8 @@ def reset(self,redraw=True,soundOn=True,sampling=False,keepProperties=False):
41424143
self.togglecrosslines()
41434144

41444145
#PLUS-COMMENT
4145-
if aw is not None and not artisanviewerMode:
4146-
aw.updatePlusStatus()
4146+
# if aw is not None and not artisanviewerMode:
4147+
# aw.updatePlusStatus()
41474148

41484149
except Exception as ex:
41494150
# import traceback
@@ -6646,19 +6647,24 @@ def startPhidgetManager(self):
66466647
# # Phidget driver (artisanlib/surpress_error.py fails to surpress this)
66476648
_stderr = sys.stderr
66486649
sys.stderr = object
6649-
if self.phidgetRemoteFlag:
6650-
try:
6651-
self.addPhidgetServer()
6652-
except:
6653-
pass
6654-
if self.phidgetManager is None:
6655-
try:
6656-
self.phidgetManager = PhidgetManager()
6657-
libtime.sleep(0.3)
6658-
except Exception as e:
6659-
aw.sendmessage("PhidgetManager Error: " + str(e))
6660-
pass
6661-
sys.stderr = _stderr
6650+
try:
6651+
if self.phidgetRemoteFlag:
6652+
try:
6653+
self.addPhidgetServer()
6654+
except:
6655+
aw.qmc.adderror(QApplication.translate("Error Message","Exception: PhidgetServer couldn't be started. Verify that the Phidget driver is correctly installed!",None))
6656+
# _, _, exc_tb = sys.exc_info()
6657+
# aw.qmc.adderror((QApplication.translate("Error Message","Exception:",None) + " addPhidgetServer() {0}").format(str(e)),exc_tb.tb_lineno)
6658+
if self.phidgetManager is None:
6659+
try:
6660+
self.phidgetManager = PhidgetManager()
6661+
libtime.sleep(0.3)
6662+
except Exception as e:
6663+
aw.qmc.adderror(QApplication.translate("Error Message","Exception: PhidgetManager couldn't be started. Verify that the Phidget driver is correctly installed!",None))
6664+
# _, _, exc_tb = sys.exc_info()
6665+
# aw.qmc.adderror((QApplication.translate("Error Message","Exception:",None) + " startPhidgetManager() {0}").format(str(e)),exc_tb.tb_lineno)
6666+
finally:
6667+
sys.stderr = _stderr
66626668

66636669
def stopPhidgetManager(self):
66646670
if self.phidgetManager is not None:
@@ -6802,52 +6808,60 @@ def OffMonitor(self):
68026808
aw.qmc.adderror((QApplication.translate("Error Message", "Exception:",None) + " OffMonitor() {0}").format(str(ex)),exc_tb.tb_lineno)
68036809

68046810
def getAmbientData(self):
6805-
humidity = None
6806-
temp = None # assumed to be gathered in C (not F!)
6807-
pressure = None
6808-
6809-
#--- humidity
6810-
if self.ambient_humidity_device == 1: # Phidget HUM1000
6811-
humidity = aw.ser.PhidgetHUM1000humidity()
6812-
elif self.ambient_humidity_device == 2: # Yocto Meteo
6813-
humidity = aw.ser.YoctoMeteoHUM()
6814-
6815-
#--- temperature
6816-
if self.ambient_temperature_device == 1: # Phidget HUM1000
6817-
temp = aw.ser.PhidgetHUM1000temperature()
6818-
elif self.ambient_temperature_device == 2: # Yocto Meteo
6819-
temp = aw.ser.YoctoMeteoTEMP()
6820-
6821-
#--- pressure
6822-
if self.ambient_pressure_device == 1: # Phidget PRE1000
6823-
pressure = aw.ser.PhidgetPRE1000pressure()
6811+
# this is needed to surpress the message on the ignored Exception
6812+
# # Phidget that is raised on starting the PhidgetManager without installed
6813+
# # Phidget driver (artisanlib/surpress_error.py fails to surpress this)
6814+
_stderr = sys.stderr
6815+
sys.stderr = object
6816+
try:
6817+
humidity = None
6818+
temp = None # assumed to be gathered in C (not F!)
6819+
pressure = None
6820+
6821+
#--- humidity
6822+
if self.ambient_humidity_device == 1: # Phidget HUM1000
6823+
humidity = aw.ser.PhidgetHUM1000humidity()
6824+
elif self.ambient_humidity_device == 2: # Yocto Meteo
6825+
humidity = aw.ser.YoctoMeteoHUM()
6826+
6827+
#--- temperature
6828+
if self.ambient_temperature_device == 1: # Phidget HUM1000
6829+
temp = aw.ser.PhidgetHUM1000temperature()
6830+
elif self.ambient_temperature_device == 2: # Yocto Meteo
6831+
temp = aw.ser.YoctoMeteoTEMP()
6832+
6833+
#--- pressure
6834+
if self.ambient_pressure_device == 1: # Phidget PRE1000
6835+
pressure = aw.ser.PhidgetPRE1000pressure()
6836+
if pressure is not None:
6837+
pressure = pressure * 10 # convert to hPa/mbar
6838+
elif self.ambient_pressure_device == 2: # Yocto Meteo
6839+
pressure = aw.ser.YoctoMeteoPRESS()
6840+
6841+
# calc final values
6842+
if pressure is not None:
6843+
if temp is None:
6844+
t = 23 # we just assume 23C room temperature if no ambient temperature is given
6845+
else:
6846+
t = temp
6847+
pressure = self.barometricPressure(pressure,t,self.elevation)
6848+
6849+
# set and report
6850+
if humidity is not None:
6851+
self.ambient_humidity = aw.float2float(humidity,1)
6852+
aw.sendmessage(QApplication.translate("Message","Humidity: {}%", None).format(self.ambient_humidity))
6853+
6854+
if temp is not None:
6855+
if self.mode == "F":
6856+
temp = self.fromCtoF(temp)
6857+
self.ambientTemp = aw.float2float(temp,1)
6858+
aw.sendmessage(QApplication.translate("Message","Temperature: {}{}", None).format(self.ambientTemp,self.mode))
6859+
68246860
if pressure is not None:
6825-
pressure = pressure * 10 # convert to hPa/mbar
6826-
elif self.ambient_pressure_device == 2: # Yocto Meteo
6827-
pressure = aw.ser.YoctoMeteoPRESS()
6828-
6829-
# calc final values
6830-
if pressure is not None:
6831-
if temp is None:
6832-
t = 23 # we just assume 23C room temperature if no ambient temperature is given
6833-
else:
6834-
t = temp
6835-
pressure = self.barometricPressure(pressure,t,self.elevation)
6836-
6837-
# set and report
6838-
if humidity is not None:
6839-
self.ambient_humidity = aw.float2float(humidity,1)
6840-
aw.sendmessage(QApplication.translate("Message","Humidity: {}%", None).format(self.ambient_humidity))
6841-
6842-
if temp is not None:
6843-
if self.mode == "F":
6844-
temp = self.fromCtoF(temp)
6845-
self.ambientTemp = aw.float2float(temp,1)
6846-
aw.sendmessage(QApplication.translate("Message","Temperature: {}{}", None).format(self.ambientTemp,self.mode))
6847-
6848-
if pressure is not None:
6849-
self.ambient_pressure = aw.float2float(pressure,1)
6850-
aw.sendmessage(QApplication.translate("Message","Pressure: {}hPa", None).format(self.ambient_pressure))
6861+
self.ambient_pressure = aw.float2float(pressure,1)
6862+
aw.sendmessage(QApplication.translate("Message","Pressure: {}hPa", None).format(self.ambient_pressure))
6863+
finally:
6864+
sys.stderr = _stderr
68516865

68526866
# computes the barometric pressure from
68536867
# aap: atmospheric pressure in hPa
@@ -10337,7 +10351,7 @@ def __init__(self, plotCanvas, parent,white_icons=False):
1033710351
self.toolitems = (
1033810352

1033910353
#PLUS-COMMENT
10340-
('Plus', QApplication.translate("Tooltip", 'Connect to plus service', None), 'plus', 'plus'),
10354+
# ('Plus', QApplication.translate("Tooltip", 'Connect to plus service', None), 'plus', 'plus'),
1034110355

1034210356
('Home', QApplication.translate("Tooltip", 'Reset original view', None), 'home', 'home'),
1034310357
('Back', QApplication.translate("Tooltip", 'Back to previous view', None), 'back', 'back'),
@@ -10386,8 +10400,8 @@ def __init__(self, plotCanvas, parent,white_icons=False):
1038610400
QToolButton {border:1px solid transparent; margin: 2px; padding: 2px; background-color: transparent;border-radius: 3px;}")
1038710401

1038810402
#PLUS-COMMENT
10389-
if aw is not None and not artisanviewerMode:
10390-
aw.updatePlusStatus(self)
10403+
# if aw is not None and not artisanviewerMode:
10404+
# aw.updatePlusStatus(self)
1039110405

1039210406

1039310407
self.update_view_org = self._update_view
@@ -17220,13 +17234,13 @@ def loadFile(self,filename):
1722017234
self.sendmessage(message)
1722117235

1722217236
#PLUS-COMMENT
17223-
if aw is not None and not artisanviewerMode:
17224-
aw.updatePlusStatus()
17225-
if aw.plus_account is not None:
17226-
import plus.config
17227-
if plus.config.uuid_tag in obj:
17228-
import plus.sync
17229-
QTimer.singleShot(100,lambda : plus.sync.sync())
17237+
# if aw is not None and not artisanviewerMode:
17238+
# aw.updatePlusStatus()
17239+
# if aw.plus_account is not None:
17240+
# import plus.config
17241+
# if plus.config.uuid_tag in obj:
17242+
# import plus.sync
17243+
# QTimer.singleShot(100,lambda : plus.sync.sync())
1723017244

1723117245
#check colors
1723217246
self.checkColors(self.getcolorPairsToCheck())
@@ -19579,12 +19593,12 @@ def fileSave(self,fname):
1957919593
if pf:
1958019594

1958119595
#PLUS-COMMENT
19582-
if not artisanviewerMode and aw.plus_account is not None:
19583-
import plus.controller
19584-
sync_record_hash = plus.controller.updateSyncRecordHashAndSync()
19585-
if sync_record_hash is not None:
19586-
# we add the hash over the sync record to be able to detect offline changes
19587-
pf["plus_sync_record_hash"] = encodeLocal(sync_record_hash)
19596+
# if not artisanviewerMode and aw.plus_account is not None:
19597+
# import plus.controller
19598+
# sync_record_hash = plus.controller.updateSyncRecordHashAndSync()
19599+
# if sync_record_hash is not None:
19600+
# # we add the hash over the sync record to be able to detect offline changes
19601+
# pf["plus_sync_record_hash"] = encodeLocal(sync_record_hash)
1958819602

1958919603
self.serialize(filename,pf)
1959019604
self.setCurrentFile(filename)
@@ -19879,12 +19893,12 @@ def settingsLoad(self, filename=None):
1987919893
self.full_screen_mode_active = bool(toBool(settings.value("fullscreen",self.full_screen_mode_active)))
1988019894

1988119895
#PLUS-COMMENT
19882-
if filename is None and not artisanviewerMode and settings.contains("plus_account"):
19883-
self.plus_account = settings.value("plus_account",self.plus_account)
19884-
if settings.contains("plus_remember_credentials"):
19885-
self.plus_remember_credentials = bool(toBool(settings.value("plus_remember_credentials",self.plus_remember_credentials)))
19886-
if settings.contains("plus_email"):
19887-
self.plus_email = settings.value("plus_email",self.plus_email)
19896+
# if filename is None and not artisanviewerMode and settings.contains("plus_account"):
19897+
# self.plus_account = settings.value("plus_account",self.plus_account)
19898+
# if settings.contains("plus_remember_credentials"):
19899+
# self.plus_remember_credentials = bool(toBool(settings.value("plus_remember_credentials",self.plus_remember_credentials)))
19900+
# if settings.contains("plus_email"):
19901+
# self.plus_email = settings.value("plus_email",self.plus_email)
1988819902

1988919903
#restore mode
1989019904
old_mode = self.qmc.mode
@@ -21079,13 +21093,13 @@ def settingsLoad(self, filename=None):
2107921093
aw.fullscreenAction.setChecked(True)
2108021094

2108121095
#PLUS-COMMENT
21082-
if filename is None and not artisanviewerMode and self.plus_account is not None:
21083-
try:
21084-
import plus.controller
21085-
QTimer.singleShot(50,lambda : plus.controller.start(aw))
21086-
except:
21087-
pass
21088-
#aw.updatePlusStatus()
21096+
# if filename is None and not artisanviewerMode and self.plus_account is not None:
21097+
# try:
21098+
# import plus.controller
21099+
# QTimer.singleShot(50,lambda : plus.controller.start(aw))
21100+
# except:
21101+
# pass
21102+
# #aw.updatePlusStatus()
2108921103

2109021104
# QApplication.processEvents() # this one seems to be necessary in some cases to prevent a crash (especially on Mac Legacy builds)!?
2109121105
# but with this one in place, the window size is not properly set (just the position!?)

src/debian/usr/share/doc/artisan/changelog

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
artisan (1.6.2-0) precise; urgency=low
2+
* new upstream release
3+
* changes since 1.6.1:
4+
- fixes communication with Phidgets under the Mac OS X 10.14 security framework
5+
- bug fixes
6+
-- <[email protected]> Sun, 10 Mar 2019 19:32:14 +0200
7+
18
artisan (1.6.1-0) precise; urgency=low
29
* new upstream release
310
* changes since 1.5.0:

src/setup-install.nsi

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ RequestExecutionLevel admin
7373
; HM NIS Edit Wizard helper defines
7474
!define py2exeOutputDir 'dist'
7575
!define PRODUCT_NAME "Artisan"
76-
!define PRODUCT_VERSION "1.6.1.0"
76+
!define PRODUCT_VERSION "1.6.2.0"
7777
!define PRODUCT_PUBLISHER "The Artisan Team"
7878
!define PRODUCT_WEB_SITE "https://github.com/artisan-roaster-scope/artisan/blob/master/README.md"
7979
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\artisan.exe"

0 commit comments

Comments
 (0)