From 6d5e50dc62d6df4f9e089ed5b768c8fa63288388 Mon Sep 17 00:00:00 2001 From: Dave Date: Wed, 13 Nov 2024 15:30:19 -0800 Subject: [PATCH] -adds typing to help conversion script -adds a do not edit warning to *.help.py files -slight changes to eliminate pre-commit edits to *help.py files --- doc/help_dialogs/Output_html/alarms_help.html | 484 ++-- .../Output_html/autosave_help.html | 1006 ++++----- doc/help_dialogs/Output_html/energy_help.html | 284 +-- .../Output_html/eventannotations_help.html | 408 ++-- .../Output_html/eventbuttons_help.html | 1962 ++++++++--------- .../Output_html/eventsliders_help.html | 1392 ++++++------ .../Output_html/keyboardshortcuts_help.html | 1000 ++++----- doc/help_dialogs/Output_html/modbus_help.html | 72 +- .../Output_html/programs_help.html | 26 +- doc/help_dialogs/Output_html/s7_help.html | 66 +- .../Output_html/symbolic_help.html | 976 ++++---- .../Output_html/transposer_help.html | 38 +- doc/help_dialogs/Script/pyproject.toml | 368 ++++ .../Script/xlsx_to_artisan_help.py | 79 +- src/help/alarms_help.py | 175 +- src/help/autosave_help.py | 275 +-- src/help/energy_help.py | 157 +- src/help/eventannotations_help.py | 155 +- src/help/eventbuttons_help.py | 495 ++--- src/help/eventsliders_help.py | 337 +-- src/help/keyboardshortcuts_help.py | 255 +-- src/help/modbus_help.py | 63 +- src/help/programs_help.py | 55 +- src/help/s7_help.py | 61 +- src/help/symbolic_help.py | 383 ++-- src/help/transposer_help.py | 75 +- 26 files changed, 5527 insertions(+), 5120 deletions(-) create mode 100644 doc/help_dialogs/Script/pyproject.toml diff --git a/doc/help_dialogs/Output_html/alarms_help.html b/doc/help_dialogs/Output_html/alarms_help.html index f708c806b..fd497bf78 100644 --- a/doc/help_dialogs/Output_html/alarms_help.html +++ b/doc/help_dialogs/Output_html/alarms_help.html @@ -1,242 +1,242 @@ - ALARMS - - - - - -
Each alarm is only triggered once.
Alarms are scanned in order from the top of the table to the bottom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
NrAlarm number for reference.
StatusActivate or Deactivate the alarm.
If AlarmAlarm triggered only if the alarm with the given number was triggered before. Use 0 for no guard.
But NotAlarm triggered only if the alarm with the given number was not triggered before. Use 0 for no guard.
FromAlarm only triggered after the given event.
TimeIf not 00:00, alarm is triggered mm:ss after the event "From" happens.
SourceThe observed temperature source.
ConditionAlarm is triggered if source rises above or below the specified temperature.
TempThe specified temperature limit.
ActionThe action to be triggered if all conditions are fulfilled.
DescriptionCommands for alarms with an action go here. Anything after a '#' character is considered a comment and is ignored when processing the alarm.


ALARM CONFIGURATION OPTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionDescription
AddAdds a new alarm to the bottom of the table.
InsertInserts a new alarm above the selected alarm.
DeleteDeletes the selected alarm.
Copy TableCopy the alarm table in tab separated format to the clipboard. Option or ALT click to copy a tabular format to the clipboard.
All OnEnables all alarms.
All OffDisables all alarms.
LoadLoad alarm definition from a file.
SaveSave the alarm definitions to a file.
ClearClears all alarms from the table.
HelpOpens this window.
Load from Profilewhen ticked will replace the alarm table when loading a profile with the alarms stored in the profile. If there are no alarms in the profile the alarm table will be cleared.
Load from Backgroundwhen ticked will replace the alarm table when loading a background profile with the alarms stored in the profile. If there are no alarms in the profile the alarm table will be cleared.
PopUp TimeOutA PopUp will automatically close after this time if the OK button has not been clicked.


Alarm Actions - - - - - -
Enter the Command into the Description field of the Alarm.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ActionCommandMeaning
Pop Up<text>the text to be displayed in the pop up
Call ProgramA program/script path (absolute or relative)start an external program
Event Button<button number>triggers the button, the button number comes from the Events Buttons configuration
Slider <1><value>set the slider for special event nr. 1 to the value
Slider <2><value>set the slider for special event nr. 2 to the value
Slider <3><value>set the slider for special event nr. 3 to the value
Slider <4><value>set the slider for special event nr. 4 to the value
START trigger START
DRY trigger the DRY event
FCs trigger the FCs event
FCe trigger the FCe event
SCs trigger the SCs event
SCe trigger the SCe event
DROP trigger the DROP event
COOL END trigger the COOL END event
OFF trigger OFF
CHARGE trigger the CHARGE event
RampSoak ON turns PID on and switches to RampSoak mode
RampSoak OFF turns PID off and switches to manual mode
Set Canvas Color<color>sets the canvas to <color>, can be in hex format, e.g. "#ffaa55" or a color name, e.g. "blue"
Reset Canvas Color reset the canvas color to the color specified in Config>>Colors
canvas color resets automatically at OFF
+ ALARMS + + + + + +
Each alarm is only triggered once.
Alarms are scanned in order from the top of the table to the bottom.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
NrAlarm number for reference.
StatusActivate or Deactivate the alarm.
If AlarmAlarm triggered only if the alarm with the given number was triggered before. Use 0 for no guard.
But NotAlarm triggered only if the alarm with the given number was not triggered before. Use 0 for no guard.
FromAlarm only triggered after the given event.
TimeIf not 00:00, alarm is triggered mm:ss after the event "From" happens.
SourceThe observed temperature source.
ConditionAlarm is triggered if source rises above or below the specified temperature.
TempThe specified temperature limit.
ActionThe action to be triggered if all conditions are fulfilled.
DescriptionCommands for alarms with an action go here. Anything after a '#' character is considered a comment and is ignored when processing the alarm.


ALARM CONFIGURATION OPTIONS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionDescription
AddAdds a new alarm to the bottom of the table.
InsertInserts a new alarm above the selected alarm.
DeleteDeletes the selected alarm.
Copy TableCopy the alarm table in tab separated format to the clipboard. Option or ALT click to copy a tabular format to the clipboard.
All OnEnables all alarms.
All OffDisables all alarms.
LoadLoad alarm definition from a file.
SaveSave the alarm definitions to a file.
ClearClears all alarms from the table.
HelpOpens this window.
Load from Profilewhen ticked will replace the alarm table when loading a profile with the alarms stored in the profile. If there are no alarms in the profile the alarm table will be cleared.
Load from Backgroundwhen ticked will replace the alarm table when loading a background profile with the alarms stored in the profile. If there are no alarms in the profile the alarm table will be cleared.
PopUp TimeOutA PopUp will automatically close after this time if the OK button has not been clicked.


Alarm Actions + + + + + +
Enter the Command into the Description field of the Alarm.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionCommandMeaning
Pop Up<text>the text to be displayed in the pop up
Call ProgramA program/script path (absolute or relative)start an external program
Event Button<button number>triggers the button, the button number comes from the Events Buttons configuration
Slider <1><value>set the slider for special event nr. 1 to the value
Slider <2><value>set the slider for special event nr. 2 to the value
Slider <3><value>set the slider for special event nr. 3 to the value
Slider <4><value>set the slider for special event nr. 4 to the value
START trigger START
DRY trigger the DRY event
FCs trigger the FCs event
FCe trigger the FCe event
SCs trigger the SCs event
SCe trigger the SCe event
DROP trigger the DROP event
COOL END trigger the COOL END event
OFF trigger OFF
CHARGE trigger the CHARGE event
RampSoak ON turns PID on and switches to RampSoak mode
RampSoak OFF turns PID off and switches to manual mode
Set Canvas Color<color>sets the canvas to <color>, can be in hex format, e.g. "#ffaa55" or a color name, e.g. "blue"
Reset Canvas Color reset the canvas color to the color specified in Config>>Colors
canvas color resets automatically at OFF
diff --git a/doc/help_dialogs/Output_html/autosave_help.html b/doc/help_dialogs/Output_html/autosave_help.html index 4b555574a..419b005f2 100644 --- a/doc/help_dialogs/Output_html/autosave_help.html +++ b/doc/help_dialogs/Output_html/autosave_help.html @@ -1,503 +1,503 @@ - AUTOSAVE DIALOG - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dialog FieldMeaning
Autosave [a]Turn Autosave ON or OFF. When sampling, the keyboard 'a' will save the profile at that moment.
NOTE: Files with the same file name will be silently overwritten. Use ~currdatetime in the file name prefix to get unique file names.
Add to recent file listWhen checked, Autosaved files will be added to the Files>> Open Recent files list.
File Name PrefixDefines the file name to use for Autosave. See the Autosave Fields section below.
Preview:Shows an example of the file name based on the File Name Prefix field.
A 'While Recording:' example will also be shown if the file name will be different when the scope is sampling.
PathWhere to store the Autosaved files.
Save AlsoAllows to save an additional file. Choose the file type from the pull-down menu.
PathWhere to store the additional files.


AUTOSAVE FIELDS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Prefix FieldSourceExample
~batchprefixThe batch prefix set in Config>Batch>PrefixProd-
~batchcounterThe current batch number653
~batchSame as "~batchprefix~batchnum"Prod-653
~batchpositionThe current batch position, or "Roast of the Day"9
~batch_longSame as Batch field in Roast Properties
"~batchprefix~batchnum (~batchposition)"
Prod-653 (9)
~titleFrom Roast>Properties>TitleEthiopia Guji
~beans_nnReplace “nn” with 10, 15, 20, 25, or 30 to show the first “nn” characters of the Beans field.
From Roast>Properties>Beans
Ethiopia G
~beans_lineThe entire first line From Roast>Properties>BeansEthiopia Guji purchased from Royal
~dateRoast date in format yy-MM-dd20-02-05
~date_longRoast date in format yyyy-MM-dd2020-02-05
~timeRoast time in format hhmm1742
~datetimeRoast date and time in format yy-MM-dd_hhmm20-02-05_1742
~datetime_longRoast date and time in format yyyy-MM-dd_hhmm2020-02-05_1742
~yyyyRoast year in format yyyy2020
~yyRoast year in format yy20
~mmmRoast month in format MMM (localized)Feb
~mmRoast month in format MM02
~dddRoast day in format ddd (localized)Wed
~ddRoast day in format dd05
~hourRoast hour in format hh17
~minuteRoast minute in format mm42
~currtimeCurrent date and time with seconds in format yy-MM-dd_hhmmss. Not the same as roast time. 21-01-18_093609
~operatorFrom Roast>Properties>OperatorDave
~organizationFrom Roast>Properties>OrganizationDave's Coffee
~machineFrom Roast>Properties>MachineSF-6
~weightFrom Roast>Properties>Weight Green3
~roastedweightFrom Roast>Properties>Weight Roasted2.6
~weightunitsFrom Roast>Properties>WeightKg
~weightlossCalculated weight loss in percent (the “-” sign is not shown, it can be added manually in front of the field if desired)14.1
~volumeFrom Roast>Properties>Volume Green4.1
~roastedvolumeFrom Roast>Properties>Volume Roasted6.8
~volumeunitsFrom Roast>Properties>Volumel
~volumegainCalculated volume gain in percent61.5
~densityFrom Roast>Properties>Density Green756.4
~roasteddensityFrom Roast>Properties>Density Roasted375.2
~densityunitsFrom Roast>Properties>Densityg_l
~densitylossCalculated density loss in percent (the “-” sign is not shown, it can be added manually in front of the field if desired)46.8
~moistureFrom Roast>Properties>Moisture Green11.7
~roastedmoistureFrom Roast>Properties>Moisture Roasted2.8
~moisturelossCalculated moisture loss in percent (the “-” sign is not shown, it can be added manually in front of the field if desired)8.1
~drumspeedFrom Roast>Properties>Drum Speed64
~colorwholeFrom Roast>Properties>Color Whole103
~colorgroundFrom Roast>Properties>Color Ground98
~colorsystemFrom Roast>Properties>Color SystemTonino
~screenminFrom Roast>Properties>Screen Min16
~screenmaxFrom Roast>Properties>Screen Max18
~greenstempFrom Roast>Properties>(Green) Beans Temperature68.0
~ambtempFrom Roast>Properties>Ambient Temperature70.0
~ambhumidityFrom Roast>Properties>Ambient Humidity35.1
~ambpressureFrom Roast>Properties>Ambient Pressure1023.8
~devtimeCalculated time from FCs to DROP in seconds112
~devtime_longCalculated time from FCs to DROP in min_secs01_52
~dtrFrom Profile Statistics - DTR (in percent)22.1
~aucFrom the Profile Statistics - AUC218
~aucbaseFrom the Profile Statistics - AUC Base300
~modeFrom Config>Temperature - the current temperature mode C or F. F
~chargeetFrom the Profile - ET at CHARGE379.4
~chargebtFrom the Profile - BT at CHARGE375.2
~fcsetFrom the Profile - ET at FCs397.4
~fcsbtFrom the Profile -BT at FCs386.7
~fcstimeFrom the Profile - FCs time in seconds490
~fcstime_longFrom the Profile - FCs time in min_secs08_10
~dropetFrom the Profile - ET at DROP378.6
~dropbtFrom the Profile - BT at DROP412.5
~droptimeFrom the Profile - DROP time in seconds617
~droptime_longFrom the Profile - DROP time in min_secs10_17
~dryphasedeltatempFrom the Profile - BT temperature change from TP to DRY121.3
~midphasedeltatempFrom the Profile - BT temperature change from DRY to FCs78.6
~finishphasedeltatempFrom the Profile - BT temperature change from FCs to DROP19.8
~roastingnotes_nnReplace “nn” with 10, 15, 20, 25, or 30 to show the first “nn” characters of the Roasting Notes field.
From Roast>Properties>Roasting Notes
No crash,
~roastingnotes_lineThe entire first line From Roast>Properties>Roasting NotesNo crash, maintained RoR
~cuppingnotes_nnReplace “nn” with 10, 15, 20, 25, or 30 to show the first “nn” characters of the Cupping Notes field.
From Roast>Properties>Cupping Notes
Lots of be
~cuppingnotes_lineThe entire first line From Roast>Properties>Cupping NotesLots of berries and chocolate
~btubatchFrom the Profile Energy Use - Total energy used by the batch in BTU8943.2
~co2batchFrom the Profile Energy Use - CO2 produced by the batch in g923.3
~btupreheatFrom the Profile Energy Use - Energy used during preheat in BTU2538.8
~co2preheatFrom the Profile Energy Use - CO2 produced during preheat in g443.9
~btubbpFrom the Profile Energy Use - Energy used during Between Batch Protocol in BTU1019.7
~co2bbpFrom the Profile Energy Use - CO2 produced during Between Batch Protocol in g254.1
~bturoastFrom the Profile Energy Use - Energy used from CHARGE to DROP in BTU7843.2
~co2roastFrom the Profile Energy Use - CO2 produced from CHARGE to DROP in g873.9
~co2pergreenkgFrom the Profile Energy Use - CO2 produced per kg of green beans in g354.3
- - - - - -
NOTES:
Anything between single quotes ' will show in the file name only when ON.
Example: 'REC ~batch'

Anything between double quotes " will show in the file name only when OFF.
Example: "~operator"

For backward compatibility, when the Prefix field is text only the date and time are appended to the file name.
Example: 'Autosave' will result in file name 'Autosave_20-01-13_1705'.
To show only the text place a single '!' at the start of the Prefix field
Example: '!Autosave' will result in file name 'Autosave'.

To maintain cross platform compatibility, file names may contain only letters, numbers, spaces,
and the following special characters:
_ - . ( )


EXAMPLES - - - - - -
Data used to replace the fields in the Autosave File Name Prefix are pulled from the current Roast Properties.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Autosave FieldExample File Name
~title Roasted on ~dateBurundi Roasted on 20-04-25.alog
~batchcounter ~title ~date_long1380 Burundi 2020-04-25_1136.alog
~beans ~machine ~drumspeedRPM ~weight~weightunits ~poisturePCT ~operator ~date ~batch(~batchposition)Burundi Kiganda Murambi Lot44 SF-25 64RPM 10.3Kg 10.2PCT Roberto 20-04-25 Prod-1380(6).alog
~title ~weight~weightunits ~finishphase_deltatemp~modeBurundi 454.0g 19.8F.alog
'Recording ~batchcounter' "~batch" ~title ~datetime_longWhen OFF:
Prod-1380 Burundi Kiganda Murambi 2020-04-25_1136.alog
While Recording:
Recording 1380 Burundi KigandaMurambi 2020-04-25_1136.alog
'Recording ~batchcounter' "~batch" ~title ~date_long_'~currtime'"~time"Creates a unique filename for multiple saves while sampling by using ~currtime.
When OFF:
Prod-1380 Burundi Kiganda Murambi 2020-04-25_1136.alog
While Recording.
Recording 1380 Burundi KigandaMurambi 2020-04-25_113809.alog
\ No newline at end of file + AUTOSAVE DIALOG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dialog FieldMeaning
Autosave [a]Turn Autosave ON or OFF. When sampling, the keyboard 'a' will save the profile at that moment.
NOTE: Files with the same file name will be silently overwritten. Use ~currdatetime in the file name prefix to get unique file names.
Add to recent file listWhen checked, Autosaved files will be added to the Files>> Open Recent files list.
File Name PrefixDefines the file name to use for Autosave. See the Autosave Fields section below.
Preview:Shows an example of the file name based on the File Name Prefix field.
A 'While Recording:' example will also be shown if the file name will be different when the scope is sampling.
PathWhere to store the Autosaved files.
Save AlsoAllows to save an additional file. Choose the file type from the pull-down menu.
PathWhere to store the additional files.


AUTOSAVE FIELDS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Prefix FieldSourceExample
~batchprefixThe batch prefix set in Config>Batch>PrefixProd-
~batchcounterThe current batch number653
~batchSame as "~batchprefix~batchnum"Prod-653
~batchpositionThe current batch position, or "Roast of the Day"9
~batch_longSame as Batch field in Roast Properties
"~batchprefix~batchnum (~batchposition)"
Prod-653 (9)
~titleFrom Roast>Properties>TitleEthiopia Guji
~beans_nnReplace “nn” with 10, 15, 20, 25, or 30 to show the first “nn” characters of the Beans field.
From Roast>Properties>Beans
Ethiopia G
~beans_lineThe entire first line From Roast>Properties>BeansEthiopia Guji purchased from Royal
~dateRoast date in format yy-MM-dd20-02-05
~date_longRoast date in format yyyy-MM-dd2020-02-05
~timeRoast time in format hhmm1742
~datetimeRoast date and time in format yy-MM-dd_hhmm20-02-05_1742
~datetime_longRoast date and time in format yyyy-MM-dd_hhmm2020-02-05_1742
~yyyyRoast year in format yyyy2020
~yyRoast year in format yy20
~mmmRoast month in format MMM (localized)Feb
~mmRoast month in format MM02
~dddRoast day in format ddd (localized)Wed
~ddRoast day in format dd05
~hourRoast hour in format hh17
~minuteRoast minute in format mm42
~currtimeCurrent date and time with seconds in format yy-MM-dd_hhmmss. Not the same as roast time. 21-01-18_093609
~operatorFrom Roast>Properties>OperatorDave
~organizationFrom Roast>Properties>OrganizationDave's Coffee
~machineFrom Roast>Properties>MachineSF-6
~weightFrom Roast>Properties>Weight Green3
~roastedweightFrom Roast>Properties>Weight Roasted2.6
~weightunitsFrom Roast>Properties>WeightKg
~weightlossCalculated weight loss in percent (the “-” sign is not shown, it can be added manually in front of the field if desired)14.1
~volumeFrom Roast>Properties>Volume Green4.1
~roastedvolumeFrom Roast>Properties>Volume Roasted6.8
~volumeunitsFrom Roast>Properties>Volumel
~volumegainCalculated volume gain in percent61.5
~densityFrom Roast>Properties>Density Green756.4
~roasteddensityFrom Roast>Properties>Density Roasted375.2
~densityunitsFrom Roast>Properties>Densityg_l
~densitylossCalculated density loss in percent (the “-” sign is not shown, it can be added manually in front of the field if desired)46.8
~moistureFrom Roast>Properties>Moisture Green11.7
~roastedmoistureFrom Roast>Properties>Moisture Roasted2.8
~moisturelossCalculated moisture loss in percent (the “-” sign is not shown, it can be added manually in front of the field if desired)8.1
~drumspeedFrom Roast>Properties>Drum Speed64
~colorwholeFrom Roast>Properties>Color Whole103
~colorgroundFrom Roast>Properties>Color Ground98
~colorsystemFrom Roast>Properties>Color SystemTonino
~screenminFrom Roast>Properties>Screen Min16
~screenmaxFrom Roast>Properties>Screen Max18
~greenstempFrom Roast>Properties>(Green) Beans Temperature68.0
~ambtempFrom Roast>Properties>Ambient Temperature70.0
~ambhumidityFrom Roast>Properties>Ambient Humidity35.1
~ambpressureFrom Roast>Properties>Ambient Pressure1023.8
~devtimeCalculated time from FCs to DROP in seconds112
~devtime_longCalculated time from FCs to DROP in min_secs01_52
~dtrFrom Profile Statistics - DTR (in percent)22.1
~aucFrom the Profile Statistics - AUC218
~aucbaseFrom the Profile Statistics - AUC Base300
~modeFrom Config>Temperature - the current temperature mode C or F. F
~chargeetFrom the Profile - ET at CHARGE379.4
~chargebtFrom the Profile - BT at CHARGE375.2
~fcsetFrom the Profile - ET at FCs397.4
~fcsbtFrom the Profile -BT at FCs386.7
~fcstimeFrom the Profile - FCs time in seconds490
~fcstime_longFrom the Profile - FCs time in min_secs08_10
~dropetFrom the Profile - ET at DROP378.6
~dropbtFrom the Profile - BT at DROP412.5
~droptimeFrom the Profile - DROP time in seconds617
~droptime_longFrom the Profile - DROP time in min_secs10_17
~dryphasedeltatempFrom the Profile - BT temperature change from TP to DRY121.3
~midphasedeltatempFrom the Profile - BT temperature change from DRY to FCs78.6
~finishphasedeltatempFrom the Profile - BT temperature change from FCs to DROP19.8
~roastingnotes_nnReplace “nn” with 10, 15, 20, 25, or 30 to show the first “nn” characters of the Roasting Notes field.
From Roast>Properties>Roasting Notes
No crash,
~roastingnotes_lineThe entire first line From Roast>Properties>Roasting NotesNo crash, maintained RoR
~cuppingnotes_nnReplace “nn” with 10, 15, 20, 25, or 30 to show the first “nn” characters of the Cupping Notes field.
From Roast>Properties>Cupping Notes
Lots of be
~cuppingnotes_lineThe entire first line From Roast>Properties>Cupping NotesLots of berries and chocolate
~btubatchFrom the Profile Energy Use - Total energy used by the batch in BTU8943.2
~co2batchFrom the Profile Energy Use - CO2 produced by the batch in g923.3
~btupreheatFrom the Profile Energy Use - Energy used during preheat in BTU2538.8
~co2preheatFrom the Profile Energy Use - CO2 produced during preheat in g443.9
~btubbpFrom the Profile Energy Use - Energy used during Between Batch Protocol in BTU1019.7
~co2bbpFrom the Profile Energy Use - CO2 produced during Between Batch Protocol in g254.1
~bturoastFrom the Profile Energy Use - Energy used from CHARGE to DROP in BTU7843.2
~co2roastFrom the Profile Energy Use - CO2 produced from CHARGE to DROP in g873.9
~co2pergreenkgFrom the Profile Energy Use - CO2 produced per kg of green beans in g354.3
+ + + + + +
NOTES:
Anything between single quotes ' will show in the file name only when ON.
Example: 'REC ~batch'

Anything between double quotes " will show in the file name only when OFF.
Example: "~operator"

For backward compatibility, when the Prefix field is text only the date and time are appended to the file name.
Example: 'Autosave' will result in file name 'Autosave_20-01-13_1705'.
To show only the text place a single '!' at the start of the Prefix field
Example: '!Autosave' will result in file name 'Autosave'.

To maintain cross platform compatibility, file names may contain only letters, numbers, spaces,
and the following special characters:
_ - . ( )


EXAMPLES + + + + + +
Data used to replace the fields in the Autosave File Name Prefix are pulled from the current Roast Properties.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Autosave FieldExample File Name
~title Roasted on ~dateBurundi Roasted on 20-04-25.alog
~batchcounter ~title ~date_long1380 Burundi 2020-04-25_1136.alog
~beans ~machine ~drumspeedRPM ~weight~weightunits ~poisturePCT ~operator ~date ~batch(~batchposition)Burundi Kiganda Murambi Lot44 SF-25 64RPM 10.3Kg 10.2PCT Roberto 20-04-25 Prod-1380(6).alog
~title ~weight~weightunits ~finishphase_deltatemp~modeBurundi 454.0g 19.8F.alog
'Recording ~batchcounter' "~batch" ~title ~datetime_longWhen OFF:
Prod-1380 Burundi Kiganda Murambi 2020-04-25_1136.alog
While Recording:
Recording 1380 Burundi KigandaMurambi 2020-04-25_1136.alog
'Recording ~batchcounter' "~batch" ~title ~date_long_'~currtime'"~time"Creates a unique filename for multiple saves while sampling by using ~currtime.
When OFF:
Prod-1380 Burundi Kiganda Murambi 2020-04-25_1136.alog
While Recording.
Recording 1380 Burundi KigandaMurambi 2020-04-25_113809.alog
diff --git a/doc/help_dialogs/Output_html/energy_help.html b/doc/help_dialogs/Output_html/energy_help.html index 18c9695d8..c3a0befee 100644 --- a/doc/help_dialogs/Output_html/energy_help.html +++ b/doc/help_dialogs/Output_html/energy_help.html @@ -1,142 +1,142 @@ - Energy and CO2 Calculator - - - - - -
The Energy tab displays a roast's energy consumption. CO2 emissions are also calculated to monitor the impact of the roasting operation. Settings must be made for each energy load. Loads are the main burners, motors and blowers, and an afterburner if one is used. The energy used for pre-heating, between batch, and roaster cooling protocols are included in the calculations, and settings are available for them as well.

Note that pre-heating and roaster cooling energy values are applied to the first roast of a roasting session. Between batch energies are applied to every roast except the first. Tick the "Between batches after Pre-Heating box to apply the between batch value to the first roast.

Follow the steps below to set the energy inputs for the roast machine and afterburner.

Blank entries are the same as a zero entry. Negative values are not allowed.
- - - - - -
Once you set up the Loads sub-tab and the Protocols sub-tab, it is a good idea to click "Save Defaults" on both sub-tabs (they are saved separately). When loading a profile with existing energy values, the profile settings will be read and will overwrite the values on the Loads and Profiles sub-tabs. Having them saved as defaults allow for them to be quickly restored by clicking "Restore Defaults" on each sub-tab.


1. Details Sub-Tab - - - - - -
This sub-tab shows a detailed table of the energy consumption and CO2 production data for the roast. The values in this table are based on current Profile and the settings made on the Loads and Protocols sub-tabs. Columns may be sorted by clicking on the column title. To return to original sort click on the 'Kind' column title.
- - - - - - - - - - - - -
FieldDescription
Results inChoose the energy units for the summary displays and the Details sub-tab.


2. Loads Sub-Tab - - - - - -
Begin by making entries on the Loads sub-tab to define the sources of energy used by this roast. It might be a good idea to save those settings as defaults to be used to calculate the energy consumption of future roasts

Power ratings for up to four energy loads may be entered. Loads will be the main burners or heaters, motors and blowers, and the afterburner if one is used. Enter one load per line. Motors and blowers that run continuously may be aggregated and entered as one load.

Loads are assumed to run continuously. Variable loads, such as the main burner setting, can be recorded in Artisan using one of the four special events. The settings can be captured from a button, slider or in some cases read directly from the roaster. The load setup allows linking a load to one of these events. The energy calculator will then determine the setting percentage and the duration of the setting to calculate the energy consumed.

Burner entries require knowing the power rating of the burner. Roasting machine manufacturer's typically provide this information. If this information can not be found for your machine this table provides approximate values based on roaster capacities. https://artisan-scope.org/ratings/
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
LabelEnter your personal description for this burner. Examples are 'Main' and 'Afterburner'.
RatingThis is the power rating of the load Choose the units in the next column.
UnitSelect the appropriate power unit. Some manufacturers incorrectly use BTU. In that case use BTU/h for the unit.
FuelSelect the type of fuel used by this load 'Elec' is assumed to be electricity generated from dirty coal. There is a setting below to adjust for renewable clean energy sources.
EventSpecial Events are often used to record load settings, such as a burner setting, in the roast profile. Select the Event that corresponds to the load setting here.

When blank the load is assumed to be at a constant setting, which is the percent 'Value 100%' multiplied by the rating. A 10 kW load at '100% Value'= 60 would thus be 10 kW * 60% = 6 kW. Continuous loads are typically motors and blowers and the afterburner.
Pressure %For gas loads tick this box when the readings are made in units of pressure. Some roasters and some controllers provide readings in heat energy. When the readings are made in heat energy leave this box unticked.
Value 0%When an Event is selected in the previous column this value can be set to match the 0% burner setting to the event setting. In most cases a 0 Event value will correspond to the 0% load setting.
Value 100%When an Event is selected this value can be set to match the 100% load setting to the event setting. This is useful when the 100% load setting is recorded as a different number in the Event. For instance, maybe the burner event is recorded as 10x the kPa reading on the gas manometer. An event value of 35 is recoded to signify 3.5 kPa, which is 50% pressure. If the 100% burner setting corresponds to 7 kPa then the 'Value 100%' should be set to 70, which is 7 * 10 = 70. Thus 3.5 kPa will be seen by he energy calculator as 50%. For pressure readings be sure to tick the Pressure box. Heat energy readings are normally 0%-100% and do not require any adjustment to this setting.
Electric Energy MixThis setting allows to set a mix of renewable energy that sources the electric loads. 0% assumes all the energy comes from burning dirty coal and maximizes the CO2 in the calculations. 100% assumes the energy comes only from renewable sources with no CO2 produced.
Save DefaultsStores the current settings on this sub-tab as defaults to be recalled later. The default values will be stored when saving settings (Help>Save Settings) to a file.
Restore DefaultsOverwrites the values on this sub-tab with those stored as the defaults. When a profile with energy settings is opened, the values on this tab will be read from the profile. They will be overwritten when clicking Restore Defaults.


3. Protocol Sub-Tab - - - - - -
The Protocol settings allow including Pre-Heating, Between Batch (BBP) and Cooling protocol energy consumption. There are two ways to specify these values. The first assumes a constant load setting for a defined period of time. An example for pre-heating is to set a Duration of 45:00 (45 minutes) at 30% Burner setting. Percentages must be entered with the percent sign (30%). When a percentage is entered a corresponding Duration must be entered.

The second type of entry is a "measured" energy value. This can be any value greater than 1.0. Artisan can inspect the open profile to determine energy values for each Load that is associated with an Event on the Loads sub-tab. Click the [...] button for each Protocol to auto fill the Measured Energy fields. The Artisan measurements for Pre-Heating and Between Batches are made from the start of the profile until CHARGE. If there is no CHARGE event the measurement is from the start to the end of profile. The values measured for Pre-Heating and Between Batches are the same. Be sure you do not use the same profile to enter both values. The Cooling energy is measured from DROP to the end of the profile. If there is no DROP event the measurement begins at CHARGE. If there is no CHARGE event the measurement is from the start to the end of the profile.

To use the Artisan energy measurement feature you will need to record one or more profiles that include the protocol of interest. For example, to measure the Pre-Heating energy, START recording when the roaster is turned on. Let Artisan record the entire pre-heating procedure. At the end of the pre-heating you can either STOP recording the profile or go forward with the roast. The CHARGE event will mark the end of pre-heating when Artisan measures the pre-heat energy. Similarly a Between Batches protocol can be recorded with START followed by a normal roast. A Cooling protocol would be captured by not turning the Artisan recording OFF until the roaster is fully cooled.

The Artisan measurements for Pre-Heating and Between Batches are made from the start of the profile until CHARGE. If there is no CHARGE event the measurement is from the start to the end of profile. The values measured for Pre-Heating and Between Batches are the same. Be sure you do not use the same profile to enter both values. The Cooling energy is measured from DROP to the end of the profile. If there is no DROP event the measurement begins at CHARGE. If there is no CHARGE event the measurement is from the start to the end of the profile.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
Pre-HeatingThis row sets the values for pre-heating energy. Percentage or measured values may be entered for each burner. When a percentage is used the Duration field must be set.

Pre-Heating energy is applied only to the first batch of a roasting session.
Between BatchesThis row sets the values for between batches protocol for the roasting session. Percentage or measured values may be entered for each burner. When a percentage is used the Duration field must be set.

Between Batches energy is applied to each batch of the roasting session, except the first batch. Tick the 'Between Batches after Pre-Heating' box to apply Between Batches energies to the first batch of the session too.
CoolingThis row sets the values for the energy used for cooling. Most common loads are motors and blowers that consume energy during the roaster cool down period. Percentage or measured values may be entered for each burner. When a percentage is used the Duration field must be set.

Pre-Heating energy is applied only to the first batch of a roasting session.
DurationThe length (mm:ss) of protocol. It is used with a burner's percentage setting to calculate the energy consumed by that burner. When a percentage entry is made for the burner, the Duration field must be set.
Measured Energy or Output %The value is either the measured energy for the protocol or the burner constant percentage setting for the length of the Duration field.
Measure Profile [...]Energy is measured from the open profile for each load where an event is specified on the Loads tab. Click OK to auto fill in the associated Measured Energy field.
Between Batches after Pre-HeatingThis box should be ticked when a Between Batches protocol run is done after the Pre-heating and before the roast.
Save DefaultsStores the current settings on this sub-tab as defaults to be recalled later. The default values will be stored when saving settings (Help>Save Settings) to a file.
Restore DefaultsOverwrites the values on this sub-tab with those stored as the defaults. When a profile with energy settings is opened, the values on this tab will be read from the profile. They will be overwritten when clicking Restore Defaults.
+ Energy and CO2 Calculator + + + + + +
The Energy tab displays a roast's energy consumption. CO2 emissions are also calculated to monitor the impact of the roasting operation. Settings must be made for each energy load. Loads are the main burners, motors and blowers, and an afterburner if one is used. The energy used for pre-heating, between batch, and roaster cooling protocols are included in the calculations, and settings are available for them as well.

Note that pre-heating and roaster cooling energy values are applied to the first roast of a roasting session. Between batch energies are applied to every roast except the first. Tick the "Between batches after Pre-Heating box to apply the between batch value to the first roast.

Follow the steps below to set the energy inputs for the roast machine and afterburner.

Blank entries are the same as a zero entry. Negative values are not allowed.
+ + + + + +
Once you set up the Loads sub-tab and the Protocols sub-tab, it is a good idea to click "Save Defaults" on both sub-tabs (they are saved separately). When loading a profile with existing energy values, the profile settings will be read and will overwrite the values on the Loads and Profiles sub-tabs. Having them saved as defaults allow for them to be quickly restored by clicking "Restore Defaults" on each sub-tab.


1. Details Sub-Tab + + + + + +
This sub-tab shows a detailed table of the energy consumption and CO2 production data for the roast. The values in this table are based on current Profile and the settings made on the Loads and Protocols sub-tabs. Columns may be sorted by clicking on the column title. To return to original sort click on the 'Kind' column title.
+ + + + + + + + + + + + +
FieldDescription
Results inChoose the energy units for the summary displays and the Details sub-tab.


2. Loads Sub-Tab + + + + + +
Begin by making entries on the Loads sub-tab to define the sources of energy used by this roast. It might be a good idea to save those settings as defaults to be used to calculate the energy consumption of future roasts

Power ratings for up to four energy loads may be entered. Loads will be the main burners or heaters, motors and blowers, and the afterburner if one is used. Enter one load per line. Motors and blowers that run continuously may be aggregated and entered as one load.

Loads are assumed to run continuously. Variable loads, such as the main burner setting, can be recorded in Artisan using one of the four special events. The settings can be captured from a button, slider or in some cases read directly from the roaster. The load setup allows linking a load to one of these events. The energy calculator will then determine the setting percentage and the duration of the setting to calculate the energy consumed.

Burner entries require knowing the power rating of the burner. Roasting machine manufacturer's typically provide this information. If this information can not be found for your machine this table provides approximate values based on roaster capacities. https://artisan-scope.org/ratings/
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
LabelEnter your personal description for this burner. Examples are 'Main' and 'Afterburner'.
RatingThis is the power rating of the load Choose the units in the next column.
UnitSelect the appropriate power unit. Some manufacturers incorrectly use BTU. In that case use BTU/h for the unit.
FuelSelect the type of fuel used by this load 'Elec' is assumed to be electricity generated from dirty coal. There is a setting below to adjust for renewable clean energy sources.
EventSpecial Events are often used to record load settings, such as a burner setting, in the roast profile. Select the Event that corresponds to the load setting here.

When blank the load is assumed to be at a constant setting, which is the percent 'Value 100%' multiplied by the rating. A 10 kW load at '100% Value'= 60 would thus be 10 kW * 60% = 6 kW. Continuous loads are typically motors and blowers and the afterburner.
Pressure %For gas loads tick this box when the readings are made in units of pressure. Some roasters and some controllers provide readings in heat energy. When the readings are made in heat energy leave this box unticked.
Value 0%When an Event is selected in the previous column this value can be set to match the 0% burner setting to the event setting. In most cases a 0 Event value will correspond to the 0% load setting.
Value 100%When an Event is selected this value can be set to match the 100% load setting to the event setting. This is useful when the 100% load setting is recorded as a different number in the Event. For instance, maybe the burner event is recorded as 10x the kPa reading on the gas manometer. An event value of 35 is recoded to signify 3.5 kPa, which is 50% pressure. If the 100% burner setting corresponds to 7 kPa then the 'Value 100%' should be set to 70, which is 7 * 10 = 70. Thus 3.5 kPa will be seen by he energy calculator as 50%. For pressure readings be sure to tick the Pressure box. Heat energy readings are normally 0%-100% and do not require any adjustment to this setting.
Electric Energy MixThis setting allows to set a mix of renewable energy that sources the electric loads. 0% assumes all the energy comes from burning dirty coal and maximizes the CO2 in the calculations. 100% assumes the energy comes only from renewable sources with no CO2 produced.
Save DefaultsStores the current settings on this sub-tab as defaults to be recalled later. The default values will be stored when saving settings (Help>Save Settings) to a file.
Restore DefaultsOverwrites the values on this sub-tab with those stored as the defaults. When a profile with energy settings is opened, the values on this tab will be read from the profile. They will be overwritten when clicking Restore Defaults.


3. Protocol Sub-Tab + + + + + +
The Protocol settings allow including Pre-Heating, Between Batch (BBP) and Cooling protocol energy consumption. There are two ways to specify these values. The first assumes a constant load setting for a defined period of time. An example for pre-heating is to set a Duration of 45:00 (45 minutes) at 30% Burner setting. Percentages must be entered with the percent sign (30%). When a percentage is entered a corresponding Duration must be entered.

The second type of entry is a "measured" energy value. This can be any value greater than 1.0. Artisan can inspect the open profile to determine energy values for each Load that is associated with an Event on the Loads sub-tab. Click the [...] button for each Protocol to auto fill the Measured Energy fields. The Artisan measurements for Pre-Heating and Between Batches are made from the start of the profile until CHARGE. If there is no CHARGE event the measurement is from the start to the end of profile. The values measured for Pre-Heating and Between Batches are the same. Be sure you do not use the same profile to enter both values. The Cooling energy is measured from DROP to the end of the profile. If there is no DROP event the measurement begins at CHARGE. If there is no CHARGE event the measurement is from the start to the end of the profile.

To use the Artisan energy measurement feature you will need to record one or more profiles that include the protocol of interest. For example, to measure the Pre-Heating energy, START recording when the roaster is turned on. Let Artisan record the entire pre-heating procedure. At the end of the pre-heating you can either STOP recording the profile or go forward with the roast. The CHARGE event will mark the end of pre-heating when Artisan measures the pre-heat energy. Similarly a Between Batches protocol can be recorded with START followed by a normal roast. A Cooling protocol would be captured by not turning the Artisan recording OFF until the roaster is fully cooled.

The Artisan measurements for Pre-Heating and Between Batches are made from the start of the profile until CHARGE. If there is no CHARGE event the measurement is from the start to the end of profile. The values measured for Pre-Heating and Between Batches are the same. Be sure you do not use the same profile to enter both values. The Cooling energy is measured from DROP to the end of the profile. If there is no DROP event the measurement begins at CHARGE. If there is no CHARGE event the measurement is from the start to the end of the profile.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
Pre-HeatingThis row sets the values for pre-heating energy. Percentage or measured values may be entered for each burner. When a percentage is used the Duration field must be set.

Pre-Heating energy is applied only to the first batch of a roasting session.
Between BatchesThis row sets the values for between batches protocol for the roasting session. Percentage or measured values may be entered for each burner. When a percentage is used the Duration field must be set.

Between Batches energy is applied to each batch of the roasting session, except the first batch. Tick the 'Between Batches after Pre-Heating' box to apply Between Batches energies to the first batch of the session too.
CoolingThis row sets the values for the energy used for cooling. Most common loads are motors and blowers that consume energy during the roaster cool down period. Percentage or measured values may be entered for each burner. When a percentage is used the Duration field must be set.

Pre-Heating energy is applied only to the first batch of a roasting session.
DurationThe length (mm:ss) of protocol. It is used with a burner's percentage setting to calculate the energy consumed by that burner. When a percentage entry is made for the burner, the Duration field must be set.
Measured Energy or Output %The value is either the measured energy for the protocol or the burner constant percentage setting for the length of the Duration field.
Measure Profile [...]Energy is measured from the open profile for each load where an event is specified on the Loads tab. Click OK to auto fill in the associated Measured Energy field.
Between Batches after Pre-HeatingThis box should be ticked when a Between Batches protocol run is done after the Pre-heating and before the roast.
Save DefaultsStores the current settings on this sub-tab as defaults to be recalled later. The default values will be stored when saving settings (Help>Save Settings) to a file.
Restore DefaultsOverwrites the values on this sub-tab with those stored as the defaults. When a profile with energy settings is opened, the values on this tab will be read from the profile. They will be overwritten when clicking Restore Defaults.
diff --git a/doc/help_dialogs/Output_html/eventannotations_help.html b/doc/help_dialogs/Output_html/eventannotations_help.html index f06fc09af..7f35349c5 100644 --- a/doc/help_dialogs/Output_html/eventannotations_help.html +++ b/doc/help_dialogs/Output_html/eventannotations_help.html @@ -1,204 +1,204 @@ - EVENT ANNOTATIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Prefix FieldSourceExample
~EThe value of Event60
~Y1ET value420
~Y2BT value372
~descrThe Description field of the EventGas 10
~typeThe Type field of the EventPower
~sldrunitThe value of the Slider Unit for this EventkPa
~dCHARGENumber of seconds before or after CHARGE
Before CHARGE shows negative
Displays '*' when no CHARGE event exists
522
~dCHARGE_msTime before or after CHARGE in min:sec
Before CHARGE shows negative
Displays '*' when no CHARGE event exists
8:42
~dFCsNumber of seconds before or after FCs
Best used inside double quotes (see notes below)
Negative value before FCs
Displays '*' when no FCs event exists
47
~dFCs_msTime after FCs in min:sec
Best used inside double quotes (see notes below)
Negative value before FCs
Displays '*' when no FCs event exists
1:35
~preFCsNumber of seconds before FCs
Best used inside single quotes or back ticks (see notes below)
Positive value only
Displays '*' after FCs or when no FCs event exists
50
~preFCs_msTime before FCs in min:sec
Best used inside single quotes or back ticks (see notes below)
Positive value only
Displays '*' after FCs or when no FCs event exists
1:25
~DTRDevelopment time ratio (percent). Note: DTR=0 before FCs
100*(t{Event}-t{FCs})/(t{FCs}-t{CHARGE})
12
~degThe degree symbol°
~modeTemperature mode ('C' or 'F')F
~degmodeDegree symbol with Temperature mode°C
~R1ET RoR value
Displays '--' when the RoR value is not available.
9.9
~R2BT RoR value
Shows '--' when the RoR value Is not available.
18.2
~degminRoR units
Shorthand for '~deg~mode/min'
°C/min
~R1degminET RoR with units
Field is hidden when the RoR value is not available.
9.9°C/min
~R2degminBT RoR with units
Field is hidden when the RoR value is not available.
18.2°C/min
~quotQuote symbol"
~squotSingle quote symbol'


EXAMPLES - - - - - -
Assumptions: The event value is 50. In the case of Gas the value 50 corresponds to either 5.0kPh or 50%.
For a sensory milestone (see notes above) the value 50 corresponds to the "Hay" aroma.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Annotation FieldDisplays
Gas ~E @~Y2~degmodeGas 50 @340°F
Gas ~E% @~Y2~modeGas 50% @340F
Gas ~E/10kPh @~Y2~modeGas 5.0kPh @340F
Gas ~E/10kPh @~Y2~mode and ~R2~degminGas 5.0kPh @340F and 32.8°F/min
Gas ~E% '@~Y2 ~degmode'"@~DTR% DTR"Before FCs:
Gas 50% @340 °F

After FCs:
Gas 50% @12% DTR
Gas ~E% '@~Y2 ~degmode`, ~preFCs sec before FCs`'"@~DTR% DTR"More than 90 seconds before FCs:
Gas 50% @340 °F

Less than 90 seconds before FCs:
Gas 50% @340 °F, 50 sec before FCs

After FCs:
Gas 50% @12% DTR
{20Fresh Cut Grass|50Hay|80Baking Bread|100A Point} @~Y2~degmodeHay @340 °F


NOTES: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Event annotations apply only for 'Step' and 'Step+' Events settings
Anything between double quotes " will show only after FCs. Example: "~E1 @~DTR%"
Anything between single quotes ' will show only before FCs. Example: '~E1 @~degmode'
Anything between back ticks ` will show only within 90 seconds before FCs. Example: `~E1 `FCs~dFCs sec`
When combining back ticks with single or double quotes the back ticks should be inside the quotes.
Background event annotations can be seen during a roast when 'Annotations' is checked in the Profile Background window.
Simple scaling of the event value is possible. Use a single math operator ('*', '/', '+' or '-') immediately following the field name "E". For example:
'~E/10' will divide the E value by 10.
'~E+5' adds 5 to the the value of E.
Another style of annotations allows to replace an event's numeric value with a text string, known as a nominal value. One example where this can be useful is when an event is used to record sensory milestones. The value 20 might be used for 'Fresh Cut Grass' aroma, 50 for 'Hay', 80 for 'Baking Bread', and 100 to represent the 'A Point'.

This form of annotation must be enclosed in curly brackets '{}'. Entries are numeric values immediately followed by their nominal representation text. Entries are separated by the vertical bar '|'. The following Annotation string implements this example.
{~E|20Fresh Cut Grass|50Hay|80Baking Bread|100A Point}

Note that if the event value does not match any value in the Annotation definition a blank string will be returned. In the example above an event value of 30 will return a blank string. The easiest way to ensure these values match is to use Custom Buttons to for the Event.
When annotations overlap to the point they can not be read, try reducing the value of the 'Allowed Annotation Overlap' found on the Annotations configuration page. The default value for this setting is 100%.
+ EVENT ANNOTATIONS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Prefix FieldSourceExample
~EThe value of Event60
~Y1ET value420
~Y2BT value372
~descrThe Description field of the EventGas 10
~typeThe Type field of the EventPower
~sldrunitThe value of the Slider Unit for this EventkPa
~dCHARGENumber of seconds before or after CHARGE
Before CHARGE shows negative
Displays '*' when no CHARGE event exists
522
~dCHARGE_msTime before or after CHARGE in min:sec
Before CHARGE shows negative
Displays '*' when no CHARGE event exists
8:42
~dFCsNumber of seconds before or after FCs
Best used inside double quotes (see notes below)
Negative value before FCs
Displays '*' when no FCs event exists
47
~dFCs_msTime after FCs in min:sec
Best used inside double quotes (see notes below)
Negative value before FCs
Displays '*' when no FCs event exists
1:35
~preFCsNumber of seconds before FCs
Best used inside single quotes or back ticks (see notes below)
Positive value only
Displays '*' after FCs or when no FCs event exists
50
~preFCs_msTime before FCs in min:sec
Best used inside single quotes or back ticks (see notes below)
Positive value only
Displays '*' after FCs or when no FCs event exists
1:25
~DTRDevelopment time ratio (percent). Note: DTR=0 before FCs
100*(t{Event}-t{FCs})/(t{FCs}-t{CHARGE})
12
~degThe degree symbol°
~modeTemperature mode ('C' or 'F')F
~degmodeDegree symbol with Temperature mode°C
~R1ET RoR value
Displays '--' when the RoR value is not available.
9.9
~R2BT RoR value
Shows '--' when the RoR value Is not available.
18.2
~degminRoR units
Shorthand for '~deg~mode/min'
°C/min
~R1degminET RoR with units
Field is hidden when the RoR value is not available.
9.9°C/min
~R2degminBT RoR with units
Field is hidden when the RoR value is not available.
18.2°C/min
~quotQuote symbol"
~squotSingle quote symbol'


EXAMPLES + + + + + +
Assumptions: The event value is 50. In the case of Gas the value 50 corresponds to either 5.0kPh or 50%.
For a sensory milestone (see notes above) the value 50 corresponds to the "Hay" aroma.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Annotation FieldDisplays
Gas ~E @~Y2~degmodeGas 50 @340°F
Gas ~E% @~Y2~modeGas 50% @340F
Gas ~E/10kPh @~Y2~modeGas 5.0kPh @340F
Gas ~E/10kPh @~Y2~mode and ~R2~degminGas 5.0kPh @340F and 32.8°F/min
Gas ~E% '@~Y2 ~degmode'"@~DTR% DTR"Before FCs:
Gas 50% @340 °F

After FCs:
Gas 50% @12% DTR
Gas ~E% '@~Y2 ~degmode`, ~preFCs sec before FCs`'"@~DTR% DTR"More than 90 seconds before FCs:
Gas 50% @340 °F

Less than 90 seconds before FCs:
Gas 50% @340 °F, 50 sec before FCs

After FCs:
Gas 50% @12% DTR
{20Fresh Cut Grass|50Hay|80Baking Bread|100A Point} @~Y2~degmodeHay @340 °F


NOTES: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
Event annotations apply only for 'Step' and 'Step+' Events settings
Anything between double quotes " will show only after FCs. Example: "~E1 @~DTR%"
Anything between single quotes ' will show only before FCs. Example: '~E1 @~degmode'
Anything between back ticks ` will show only within 90 seconds before FCs. Example: `~E1 `FCs~dFCs sec`
When combining back ticks with single or double quotes the back ticks should be inside the quotes.
Background event annotations can be seen during a roast when 'Annotations' is checked in the Profile Background window.
Simple scaling of the event value is possible. Use a single math operator ('*', '/', '+' or '-') immediately following the field name "E". For example:
'~E/10' will divide the E value by 10.
'~E+5' adds 5 to the the value of E.
Another style of annotations allows to replace an event's numeric value with a text string, known as a nominal value. One example where this can be useful is when an event is used to record sensory milestones. The value 20 might be used for 'Fresh Cut Grass' aroma, 50 for 'Hay', 80 for 'Baking Bread', and 100 to represent the 'A Point'.

This form of annotation must be enclosed in curly brackets '{}'. Entries are numeric values immediately followed by their nominal representation text. Entries are separated by the vertical bar '|'. The following Annotation string implements this example.
{~E|20Fresh Cut Grass|50Hay|80Baking Bread|100A Point}

Note that if the event value does not match any value in the Annotation definition a blank string will be returned. In the example above an event value of 30 will return a blank string. The easiest way to ensure these values match is to use Custom Buttons to for the Event.
When annotations overlap to the point they can not be read, try reducing the value of the 'Allowed Annotation Overlap' found on the Annotations configuration page. The default value for this setting is 100%.
diff --git a/doc/help_dialogs/Output_html/eventbuttons_help.html b/doc/help_dialogs/Output_html/eventbuttons_help.html index cf175c538..fa99ea9c9 100644 --- a/doc/help_dialogs/Output_html/eventbuttons_help.html +++ b/doc/help_dialogs/Output_html/eventbuttons_help.html @@ -1,981 +1,981 @@ - EVENT CUSTOM BUTTONS - - - - - -
Button numbers can be drag and dropped to a new position. While holding the ALT key (Windows) / OPTION (macOS) buttons are swapped
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ColumnDescription
Button LabelEnter \n to create labels with multiple lines. \t is substituted by the event type.
Event DescriptionDescription of the Event to be recorded.
Event TypeEvent type to be recorded or leave blank for no event. '±' types add a chosen offset (positive or negative) to the present value of the chosen event.
Event ValueValue of event (1-100) to be recorded.
ActionPerform an action at the time of the event.
DocumentationThe action Command. Depends on the action type, '{}' is replaced by the event value and the offset in case of a ± event type.
Button VisibilityHides/shows individual button.


EVENT BUTTONS CONFIGURATION OPTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionDescription
Max buttons per rowSets a maximum number of buttons to display on a single row.
Button sizeSets a size for the buttons. Choices are tiny, small and large.
Color PatternApplies one of 99 autogenerated color patterns to the buttons. Set to "0" to manually choose the button colors.
Mark Last PressedInvert state and color of last button pressed
TooltipsShow button specification as tooltips on hovering a button
AddAdds a new button to the bottom of the table.
InsertInserts a new button above the selected button.
DeleteDeletes the selected button.
Copy TableCopy the button table in tab separated format to the clipboard. Option or ALT click to copy a tabular format to the clipboard.
HelpOpens this window.


LABELS - - - - - -
The following substitutions are applied to button labels
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StringSubstitution
\nNew line character
\tEvent name (translated if using default event names)
\qEvent type 1
\wEvent type 2
\eEvent type 3
\rEvent type 4
\0OFF (translated)
\1ON (translated)
\2OFF (translated, respecting button state)
\3ON (translated, respecting button state)
\pSTOP (translated)
\sSTART (translated)
\PSTOP (translated, respecting button state)
\SSTART (translated, respecting button state)
\cCLOSE (translated)
\oOPEN (translated)
\CCLOSE (translated, respecting button state)
\OOPEN (translated, respecting button state)
\aAUTO (translated)
\mMANUAL (translated)
\AAUTO (translated, respecting button state)
\MMANUAL (translated, respecting button state)
\iSTIRRER
\fFILL
\fDISCHARGE
\RRELEASE
\hHEATING
\lCOOLING
\bFLAP
\dCONTROL
\Vevent value
\Fevent value interpreted as temperature in Fahrenheit converted to the current temperature mode
\Tevent value interpreted as temperature in Celsius converted to the current temperature mode


COMMANDS - - - - - -
Note: "{}" can be used as a placeholder, it will be substituted by the current button value plus the offset for ± event types. If a placeholder occurs several times in a description/command, all those occurrences are replaced by the value.

Note: The placeholders {ET}, {BT}, {time}, {ETB}, {BTB}, and {WEIGHTin} will be substituted by the current ET, BT, time, ET background, BT background value, and batch size (in g) in Serial/Artisan/CallProgram/MODBUS/S7/WebSocket commands

Note: Commands can be sequenced, separated by semicolons like in “<cmd1>;<cmd2>;<cmd3>”

Note: All characters given as documentation to a Serial Command action are sent as one string to the connected device. If the device can interpret this string as separate commands separated by semicolon this is fine. Otherwise you can use a Multiple Event referencing a number of event buttons (using a comma separated list of event button numbers as documentation string) where each of the referenced event buttons issues one of the commands via a corresponding Serial Command action. Those event buttons can be hidden thus having the same effect as if the Serial Command allowed a sequence of commands.

Note: In PHIDGET commands, the optional parameter <sn> has the form <hub_serial>[:<hub_port>] allows to refer to a specific Phidget HUB by given its serial number, and optionally specifying the port number the addressed module is connected to.

Note: In YOCTOPUCE commands, the optional parameter <sn> holds either the modules serial number or its name
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ActionCommandDescription
Serial CommandASCII serial command or binary a2b_uu(serial command) 
Call ProgramA program/script path (absolute or relative)start an external program
Multiple Eventbutton numbers or sleep(<float>) separated by a comma: 1,2,sleep(2.5), 3..triggers other buttons
Modbus Command_variable holding the last value read via MODBUS
 $variable holding the last state of the button pressed (1 or 0)
 sleep(<float>)sleep: add a delay of <float> seconds
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(<bool>)sets calling button to “pressed” if argument is 1 or True
 button()toggles the state of the button
 read(slaveID,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as unsigned integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readSigned(slaveId,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readBCD(slaveID,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as unsigned integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32Signed(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32BCD(slaveID,register)reads 2 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readFloat(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as float. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 write(slaveId,register,value) or write([slaveId,register,value],..,[slaveId,register,value])write register: MODBUS function 6 (int) or function 16 (float)
 wcoil(slaveId,register,<bool>)write coil: MODBUS function 5
 wcoils(slaveId,register,[<bool>,..,<bool>])write coils: MODBUS function 15
 mwrite(slaveId,register,andMask,orMask) or mwrite(s,r,am,om,v)mask write register: MODBUS function 22 or simulates function 22 with function 6 and the given value v
 writem(slaveId,register,value) or writem(slaveId,register,[<int>,..,<int>])write registers: MODBUS function 16
 writeBCD(s,r,v) or writeBCD([s,r,v],..,[s,r,v])write 16bit BCD encoded value v to register r of slave s
 writeWord(slaveId,register,value) or writeWord([slaveId,register,value],..,[slaveId,register,value])write 32bit float to two 16bit int registers: MODBUS function 16
 writeLong(slaveId,register,value) or writeLong([slaveId,register,value],..,[slaveId,register,value])write 32bit integer to two 16bit int registers: MODBUS function 16
 writeSingle(slaveId,register,value) or writeSingle([slaveId,register,value],..,[slaveId,register,value])write 16bit integer to a single 16bit register: MODBUS function 6 (int)
DTA CommandInsert Data address : value, ex. 4701:1000 and sv is 100.
Always multiply with 10 if value Unit: 0.1 / ex. 4719:0 stops heating
 
IO Command_variable holding the last result value
 $variable holding the last state of the button pressed (1 or 0)
 set(c,b[,sn])PHIDGET Binary Output: switches channel c off (b=0) and on (b=1)
 toggle(c[,sn])PHIDGET Binary Output: toggles channel c
 pulse(c,t[,sn])PHIDGET Binary Output: sets the output of channel c to on for time t in milliseconds
 out(c,v[,sn])PHIDGET Voltage Output: sets voltage output of channel c to v (float)
 accel(c,v[,sn])PHIDGET DCMotor: sets acceleration of channel c to v (float)
 vel(c,v[,sn])PHIDGET DCMotor: sets target velocity of channel c to v (float)
 limit(c,v[,sn])PHIDGET DCMotor: sets current limit of channel c to v (float)
 on(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module on
 off(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module off
 yset(c,b[,sn])YOCTOPUCE Relay Output: switches channel c of the relay module off (b=0) and on (b=1)
 flip(c[,sn])YOCTOPUCE Relay Output: toggle the state of channel c
 pip(c,delay,duration[,sn])YOCTOPUCE Relay Output: pulse the channel c on after a delay of delay milliseconds for the duration of duration milliseconds
 powerReset([sn])YOCTOPUCE resets the power counter of the Yocto-Watt module
 slider(c,v)move slider c to value v
 button(i,c,b[,sn])switches PHIDGET Binary Output channel c off (b=0) and on (b=1) and sets button i to pressed or normal depending on the value b
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(b)sets button to pressed if value b is yes, true, t, or 1, otherwise to normal
 button()toggles the state of the button
 sleep(<float>)sleep: add a delay of <float> seconds
 santoker(<target>,<value>)sends integer <value> to <target> register specified by as byte in hex notation like “fa” via the Santoker Network protocol
 kaleido(<target>,<value>)sends <value> to <target> via the Kaleido Serial or Network protocol
Hottop Heater sets heater to value
Hottop Fan sets fan to value
Hottop Commandmotor(n),solenoid(n),stirrer(n),heater(h),fan(f) with n={0 ,1},h={0,..100},f={0,..10}
p-i-d<p>;<i>;<d>configures PID to the values <p>;<i>;<d>
Fuji Commandwrite(<unitId>,<register>,<value>) 
PWM Commandout(<channel>,<value>[,<sn>])PHIDGET PWM Output: <value> in [0-100]
 toggle(<channel>[,<sn>])PHIDGET PWM Output: toggles <channel>
 pulse(<channel>,<millis>[,<sn>])PHIDGET PWM Output: turn <channel> on for <millis> milliseconds
 outhub(<channel>,<value>[,<sn>])PHIDGET HUB PWM Output: <value> in [0-100]
 togglehub(<channel>[,<sn>])PHIDGET HUB PWM Output: toggles <channel>
 pulsehub(<channel>,<millis>[,<sn>])PHIDGET HUB PWM Output: turn <channel> on for <millis> milliseconds
 enabled(c,b[,sn])YOCTOPUCE PWM Output: PWM running state
 freq(c,f[,sn])YOCTOPUCE PWM Output: set PWM frequency to f (Hz)
 duty(c,d[,sn])YOCTOPUCE PWM Output: set PWM period with the duty cycle in % as a float [0.0-100.0]
 move(c,d,t[,sn])YOCTOPUCE PWM Output: changes progressively the PWM to the specified value over the given time interval
VOUT Commandrange(c,r[,sn])for PHIDGET OUTPUT modules: sets voltage voltage range (r=5 for 5V and r=10 for 10V)
 out(<n>,<v>[,<sn>])for PHIDGET OUTPUT modules: set analog output channel n to output voltage value v in V (eg. 5.5 for 5.5V)
 vout(c,v[,sn])for YOCTOPUCE VOLTAGE OUT modules with c the channel (1 or 2),v the voltage as float [0.0-10.0]
 cout(c[,sn])for YOCTOPUCE CURRENT OUT modules with c the current as float [3.0-21.0]
 sleep(<float>)sleep: add a delay of <float> seconds
S7 Command_variable holding the last value read via S7
 $variable holding the last state of the button pressed (1 or 0)
 sleep(<float>)sleep: add a delay of <float> seconds
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(<bool>)sets calling button to “pressed” if argument is 1 or True
 button()toggles the state of the button
 getDBbool(<dbnumber>,<start>,<index>)read bool from S7 DB
 getDBint(<dbnumber>,<start>)read int from S7 DB
 getDBfloat(<dbnumber>,<start>)read float from S7 DB
 setDBbool(<dbnumber>,<start>,<index>,<value>)write bool to S7 DB
 setDBint(<dbnumber>,<start>,<value>)write int to S7 DB
 msetDBint(<dbnumber>,<start>,<andMask>,<orMask>,<value>)write value where bits are replaced by those from orMask at positions where andMask bits are not set
 setDBfloat(<dbnumber>,<start>,<value>)write float to S7 DB
Aillio R1 Heater sets heater to value
Aillio R1 Fan sets fan to value
Aillio R1 Drum sets drum speed to value
Aillio R1 CommandPRSSends PRS command
Artisan Command$variable holding the last state of the button pressed (1 or 0)
 alarms(<bool>)enables/disables alarms
 autoCHARGE(<bool>)enables/disables autoCHARGE
 autoDROP(<bool>)enables/disables autoDROP
 sleep(<float>)sleep: add a delay of <float> seconds
 tare(<int>)tare channel <int> with 1 => ET, 2 => BT, 3 => E1c1, 4: E1c2,..
 PIDonturns PID on
 PIDoffturns PID off
 PIDtoggletoggles the PID state
 pidmode(<int>)sets PID mode to 0: manual, 1: RS, 2: background follow
 p-i-d(<p>,<i>,<d>)sets the p-i-d parameters of the PID
 adjustSV(<int>)increases or decreases the current target SV value by <int>
 pidSV(<int>)sets the PID target set value SV
 pidSVC(<int>)sets the PID target set value SV given in C
 pidRS(<rs>)activates the PID Ramp-Soak pattern number <rs> (1-based!) or the one labeled <rs>
 pidSource(<int>)selects the PID input source with <n> 0: BT, 1: ET (Software PID); <n> in {0,..,3} (Arduino PID)
 pidLookahead(<int>)sets the PID lookahead
 popup(<msg>[,<int>])shows popup with message <msg> which optionally automatically closes after <int> seconds
 message(<msg>)shows message <msg> in the message line
 notifications(<bool>)enables/disables notifications; while disabled issued notifications are ignored
 notify(<title>,[<msg>])sends notification with title <title> and optional message <msg>
 setCanvasColor(<color>)sets canvas color to the RGB-hex <color> like #27f1d3
 resetCanvasColorresets canvas color
 button(i,b)sets button i to pressed if value of b is yes, true, t, or 1, otherwise to normal
 button(<name>|<bool>)activates button <name> from { START, CHARGE, DRY, FCs, FCe, SCs, SCe, DROP, COOL, OFF } ; sets calling button to “pressed” if argument is 1 or True
 button()toggles the state of the button
 visible(i,b)sets button i to visible if value of b is yes, true, t, or 1, otherwise to hidden
 palette(<p>)activates palette <p> with <p> either a number 0-9 or a palette label
 playbackmode(<int>)sets playback mode to 0: off, 1: time, 2: BT, 3: ET
 openPropertiesopens the Roast Properties dialog
 loadBackground(<filepath>)loads the .alog profile at the given filepath as background profile
 clearBackgroundclears the current background profile
 alarmset(<as>)activates the alarmset with the given number or label
 moveBackground(<direction>,<int>)moves the background profile the indicated number of steps towards <direction>, with <direction> one of up, down, left, right
 keyboard(<bool>)enables/disables keyboard mode
 keepON(<bool>)enables/disables the Keep ON flag
 showCurve(<name>,<bool>)shows/hides the curve indicated by <name> which is one of { ET, BT, DeltaET, DeltaBT, BackgroundET, BackgroundBT}
 showExtraCurve(<extra_device>,<curve>,<bool>)shows/hides the <curve> (one of {T1,T2}) of the zero-based <extra_device> number
 showEvents(<event_type>, <bool>)shows/hides the events of <event_type> in [1,..,5]
 showBackgroundEvents(<bool>)shows/hides the events of the background profile
RC Commandpulse(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max pulse width in microseconds
 pos(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max position
 engaged(ch,b[,sn])for PHIDGET RC modules: engage (b=1) or disengage (b = 0)
 ramp(ch,b[,sn])for PHIDGET RC modules: activates or deactivates the speed ramping state
 volt(ch,v[,sn])for PHIDGET RC modules: set the voltage to one of 5, 6 or 7.4 in Volt
 accel(ch,a[,sn])for PHIDGET RC modules: set the acceleration
 veloc(ch,v[,sn])for PHIDGET RC modules: set the velocity
 set(ch,pos[,sn])for PHIDGET RC modules: set the target position
 enabled(c,b[,sn])for YOCTOPUCE RC modules: with c:int the channel, b a bool (eg. enabled(0,1) or enabled(0,True))
 move(c,p[,t][,sn])for YOCTOPUCE RC modules: with c:int the channel, p:int the target position, the optional t the duration in ms, sn the optional modules serial number or logical name
 neutral(c,n[,sn])for YOCTOPUCE RC modules: with n an int [0..65000] in us
 range(c,r[,sn])for YOCTOPUCE RC modules: with r an int in %
WebSocket Command$variable holding the last state of the button pressed (1 or 0)
 send(<json>)If {} substitutions are used, json brackets need to be duplicated to escape them like in send({{ “value”: {}}})
 sleep(<float>)sleep: add a delay of <float> seconds
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(<bool>)sets calling button to “pressed” if argument evaluates to 1 or True
 button()toggles the state of the button
 read(<json>)if the `<json>` text respects the JSON format it is send to the connected WebSocket server and the response is bound to the variable `_`
+ EVENT CUSTOM BUTTONS + + + + + +
Button numbers can be drag and dropped to a new position. While holding the ALT key (Windows) / OPTION (macOS) buttons are swapped
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnDescription
Button LabelEnter \n to create labels with multiple lines. \t is substituted by the event type.
Event DescriptionDescription of the Event to be recorded.
Event TypeEvent type to be recorded or leave blank for no event. '±' types add a chosen offset (positive or negative) to the present value of the chosen event.
Event ValueValue of event (1-100) to be recorded.
ActionPerform an action at the time of the event.
DocumentationThe action Command. Depends on the action type, '{}' is replaced by the event value and the offset in case of a ± event type.
Button VisibilityHides/shows individual button.


EVENT BUTTONS CONFIGURATION OPTIONS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionDescription
Max buttons per rowSets a maximum number of buttons to display on a single row.
Button sizeSets a size for the buttons. Choices are tiny, small and large.
Color PatternApplies one of 99 autogenerated color patterns to the buttons. Set to "0" to manually choose the button colors.
Mark Last PressedInvert state and color of last button pressed
TooltipsShow button specification as tooltips on hovering a button
AddAdds a new button to the bottom of the table.
InsertInserts a new button above the selected button.
DeleteDeletes the selected button.
Copy TableCopy the button table in tab separated format to the clipboard. Option or ALT click to copy a tabular format to the clipboard.
HelpOpens this window.


LABELS + + + + + +
The following substitutions are applied to button labels
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StringSubstitution
\nNew line character
\tEvent name (translated if using default event names)
\qEvent type 1
\wEvent type 2
\eEvent type 3
\rEvent type 4
\0OFF (translated)
\1ON (translated)
\2OFF (translated, respecting button state)
\3ON (translated, respecting button state)
\pSTOP (translated)
\sSTART (translated)
\PSTOP (translated, respecting button state)
\SSTART (translated, respecting button state)
\cCLOSE (translated)
\oOPEN (translated)
\CCLOSE (translated, respecting button state)
\OOPEN (translated, respecting button state)
\aAUTO (translated)
\mMANUAL (translated)
\AAUTO (translated, respecting button state)
\MMANUAL (translated, respecting button state)
\iSTIRRER
\fFILL
\fDISCHARGE
\RRELEASE
\hHEATING
\lCOOLING
\bFLAP
\dCONTROL
\Vevent value
\Fevent value interpreted as temperature in Fahrenheit converted to the current temperature mode
\Tevent value interpreted as temperature in Celsius converted to the current temperature mode


COMMANDS + + + + + +
Note: "{}" can be used as a placeholder, it will be substituted by the current button value plus the offset for ± event types. If a placeholder occurs several times in a description/command, all those occurrences are replaced by the value.

Note: The placeholders {ET}, {BT}, {time}, {ETB}, {BTB}, and {WEIGHTin} will be substituted by the current ET, BT, time, ET background, BT background value, and batch size (in g) in Serial/Artisan/CallProgram/MODBUS/S7/WebSocket commands

Note: Commands can be sequenced, separated by semicolons like in “<cmd1>;<cmd2>;<cmd3>”

Note: All characters given as documentation to a Serial Command action are sent as one string to the connected device. If the device can interpret this string as separate commands separated by semicolon this is fine. Otherwise you can use a Multiple Event referencing a number of event buttons (using a comma separated list of event button numbers as documentation string) where each of the referenced event buttons issues one of the commands via a corresponding Serial Command action. Those event buttons can be hidden thus having the same effect as if the Serial Command allowed a sequence of commands.

Note: In PHIDGET commands, the optional parameter <sn> has the form <hub_serial>[:<hub_port>] allows to refer to a specific Phidget HUB by given its serial number, and optionally specifying the port number the addressed module is connected to.

Note: In YOCTOPUCE commands, the optional parameter <sn> holds either the modules serial number or its name
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionCommandDescription
Serial CommandASCII serial command or binary a2b_uu(serial command) 
Call ProgramA program/script path (absolute or relative)start an external program
Multiple Eventbutton numbers or sleep(<float>) separated by a comma: 1,2,sleep(2.5), 3..triggers other buttons
Modbus Command_variable holding the last value read via MODBUS
 $variable holding the last state of the button pressed (1 or 0)
 sleep(<float>)sleep: add a delay of <float> seconds
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(<bool>)sets calling button to “pressed” if argument is 1 or True
 button()toggles the state of the button
 read(slaveID,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as unsigned integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readSigned(slaveId,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readBCD(slaveID,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as unsigned integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32Signed(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32BCD(slaveID,register)reads 2 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readFloat(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as float. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 write(slaveId,register,value) or write([slaveId,register,value],..,[slaveId,register,value])write register: MODBUS function 6 (int) or function 16 (float)
 wcoil(slaveId,register,<bool>)write coil: MODBUS function 5
 wcoils(slaveId,register,[<bool>,..,<bool>])write coils: MODBUS function 15
 mwrite(slaveId,register,andMask,orMask) or mwrite(s,r,am,om,v)mask write register: MODBUS function 22 or simulates function 22 with function 6 and the given value v
 writem(slaveId,register,value) or writem(slaveId,register,[<int>,..,<int>])write registers: MODBUS function 16
 writeBCD(s,r,v) or writeBCD([s,r,v],..,[s,r,v])write 16bit BCD encoded value v to register r of slave s
 writeWord(slaveId,register,value) or writeWord([slaveId,register,value],..,[slaveId,register,value])write 32bit float to two 16bit int registers: MODBUS function 16
 writeLong(slaveId,register,value) or writeLong([slaveId,register,value],..,[slaveId,register,value])write 32bit integer to two 16bit int registers: MODBUS function 16
 writeSingle(slaveId,register,value) or writeSingle([slaveId,register,value],..,[slaveId,register,value])write 16bit integer to a single 16bit register: MODBUS function 6 (int)
DTA CommandInsert Data address : value, ex. 4701:1000 and sv is 100.
Always multiply with 10 if value Unit: 0.1 / ex. 4719:0 stops heating
 
IO Command_variable holding the last result value
 $variable holding the last state of the button pressed (1 or 0)
 set(c,b[,sn])PHIDGET Binary Output: switches channel c off (b=0) and on (b=1)
 toggle(c[,sn])PHIDGET Binary Output: toggles channel c
 pulse(c,t[,sn])PHIDGET Binary Output: sets the output of channel c to on for time t in milliseconds
 out(c,v[,sn])PHIDGET Voltage Output: sets voltage output of channel c to v (float)
 accel(c,v[,sn])PHIDGET DCMotor: sets acceleration of channel c to v (float)
 vel(c,v[,sn])PHIDGET DCMotor: sets target velocity of channel c to v (float)
 limit(c,v[,sn])PHIDGET DCMotor: sets current limit of channel c to v (float)
 on(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module on
 off(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module off
 yset(c,b[,sn])YOCTOPUCE Relay Output: switches channel c of the relay module off (b=0) and on (b=1)
 flip(c[,sn])YOCTOPUCE Relay Output: toggle the state of channel c
 pip(c,delay,duration[,sn])YOCTOPUCE Relay Output: pulse the channel c on after a delay of delay milliseconds for the duration of duration milliseconds
 powerReset([sn])YOCTOPUCE resets the power counter of the Yocto-Watt module
 slider(c,v)move slider c to value v
 button(i,c,b[,sn])switches PHIDGET Binary Output channel c off (b=0) and on (b=1) and sets button i to pressed or normal depending on the value b
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(b)sets button to pressed if value b is yes, true, t, or 1, otherwise to normal
 button()toggles the state of the button
 sleep(<float>)sleep: add a delay of <float> seconds
 santoker(<target>,<value>)sends integer <value> to <target> register specified by as byte in hex notation like “fa” via the Santoker Network protocol
 kaleido(<target>,<value>)sends <value> to <target> via the Kaleido Serial or Network protocol
Hottop Heater sets heater to value
Hottop Fan sets fan to value
Hottop Commandmotor(n),solenoid(n),stirrer(n),heater(h),fan(f) with n={0 ,1},h={0,..100},f={0,..10}
p-i-d<p>;<i>;<d>configures PID to the values <p>;<i>;<d>
Fuji Commandwrite(<unitId>,<register>,<value>) 
PWM Commandout(<channel>,<value>[,<sn>])PHIDGET PWM Output: <value> in [0-100]
 toggle(<channel>[,<sn>])PHIDGET PWM Output: toggles <channel>
 pulse(<channel>,<millis>[,<sn>])PHIDGET PWM Output: turn <channel> on for <millis> milliseconds
 outhub(<channel>,<value>[,<sn>])PHIDGET HUB PWM Output: <value> in [0-100]
 togglehub(<channel>[,<sn>])PHIDGET HUB PWM Output: toggles <channel>
 pulsehub(<channel>,<millis>[,<sn>])PHIDGET HUB PWM Output: turn <channel> on for <millis> milliseconds
 enabled(c,b[,sn])YOCTOPUCE PWM Output: PWM running state
 freq(c,f[,sn])YOCTOPUCE PWM Output: set PWM frequency to f (Hz)
 duty(c,d[,sn])YOCTOPUCE PWM Output: set PWM period with the duty cycle in % as a float [0.0-100.0]
 move(c,d,t[,sn])YOCTOPUCE PWM Output: changes progressively the PWM to the specified value over the given time interval
VOUT Commandrange(c,r[,sn])for PHIDGET OUTPUT modules: sets voltage voltage range (r=5 for 5V and r=10 for 10V)
 out(<n>,<v>[,<sn>])for PHIDGET OUTPUT modules: set analog output channel n to output voltage value v in V (eg. 5.5 for 5.5V)
 vout(c,v[,sn])for YOCTOPUCE VOLTAGE OUT modules with c the channel (1 or 2),v the voltage as float [0.0-10.0]
 cout(c[,sn])for YOCTOPUCE CURRENT OUT modules with c the current as float [3.0-21.0]
 sleep(<float>)sleep: add a delay of <float> seconds
S7 Command_variable holding the last value read via S7
 $variable holding the last state of the button pressed (1 or 0)
 sleep(<float>)sleep: add a delay of <float> seconds
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(<bool>)sets calling button to “pressed” if argument is 1 or True
 button()toggles the state of the button
 getDBbool(<dbnumber>,<start>,<index>)read bool from S7 DB
 getDBint(<dbnumber>,<start>)read int from S7 DB
 getDBfloat(<dbnumber>,<start>)read float from S7 DB
 setDBbool(<dbnumber>,<start>,<index>,<value>)write bool to S7 DB
 setDBint(<dbnumber>,<start>,<value>)write int to S7 DB
 msetDBint(<dbnumber>,<start>,<andMask>,<orMask>,<value>)write value where bits are replaced by those from orMask at positions where andMask bits are not set
 setDBfloat(<dbnumber>,<start>,<value>)write float to S7 DB
Aillio R1 Heater sets heater to value
Aillio R1 Fan sets fan to value
Aillio R1 Drum sets drum speed to value
Aillio R1 CommandPRSSends PRS command
Artisan Command$variable holding the last state of the button pressed (1 or 0)
 alarms(<bool>)enables/disables alarms
 autoCHARGE(<bool>)enables/disables autoCHARGE
 autoDROP(<bool>)enables/disables autoDROP
 sleep(<float>)sleep: add a delay of <float> seconds
 tare(<int>)tare channel <int> with 1 => ET, 2 => BT, 3 => E1c1, 4: E1c2,..
 PIDonturns PID on
 PIDoffturns PID off
 PIDtoggletoggles the PID state
 pidmode(<int>)sets PID mode to 0: manual, 1: RS, 2: background follow
 p-i-d(<p>,<i>,<d>)sets the p-i-d parameters of the PID
 adjustSV(<int>)increases or decreases the current target SV value by <int>
 pidSV(<int>)sets the PID target set value SV
 pidSVC(<int>)sets the PID target set value SV given in C
 pidRS(<rs>)activates the PID Ramp-Soak pattern number <rs> (1-based!) or the one labeled <rs>
 pidSource(<int>)selects the PID input source with <n> 0: BT, 1: ET (Software PID); <n> in {0,..,3} (Arduino PID)
 pidLookahead(<int>)sets the PID lookahead
 popup(<msg>[,<int>])shows popup with message <msg> which optionally automatically closes after <int> seconds
 message(<msg>)shows message <msg> in the message line
 notifications(<bool>)enables/disables notifications; while disabled issued notifications are ignored
 notify(<title>,[<msg>])sends notification with title <title> and optional message <msg>
 setCanvasColor(<color>)sets canvas color to the RGB-hex <color> like #27f1d3
 resetCanvasColorresets canvas color
 button(i,b)sets button i to pressed if value of b is yes, true, t, or 1, otherwise to normal
 button(<name>|<bool>)activates button <name> from { START, CHARGE, DRY, FCs, FCe, SCs, SCe, DROP, COOL, OFF } ; sets calling button to “pressed” if argument is 1 or True
 button()toggles the state of the button
 visible(i,b)sets button i to visible if value of b is yes, true, t, or 1, otherwise to hidden
 palette(<p>)activates palette <p> with <p> either a number 0-9 or a palette label
 playbackmode(<int>)sets playback mode to 0: off, 1: time, 2: BT, 3: ET
 openPropertiesopens the Roast Properties dialog
 loadBackground(<filepath>)loads the .alog profile at the given filepath as background profile
 clearBackgroundclears the current background profile
 alarmset(<as>)activates the alarmset with the given number or label
 moveBackground(<direction>,<int>)moves the background profile the indicated number of steps towards <direction>, with <direction> one of up, down, left, right
 keyboard(<bool>)enables/disables keyboard mode
 keepON(<bool>)enables/disables the Keep ON flag
 showCurve(<name>,<bool>)shows/hides the curve indicated by <name> which is one of { ET, BT, DeltaET, DeltaBT, BackgroundET, BackgroundBT}
 showExtraCurve(<extra_device>,<curve>,<bool>)shows/hides the <curve> (one of {T1,T2}) of the zero-based <extra_device> number
 showEvents(<event_type>, <bool>)shows/hides the events of <event_type> in [1,..,5]
 showBackgroundEvents(<bool>)shows/hides the events of the background profile
RC Commandpulse(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max pulse width in microseconds
 pos(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max position
 engaged(ch,b[,sn])for PHIDGET RC modules: engage (b=1) or disengage (b = 0)
 ramp(ch,b[,sn])for PHIDGET RC modules: activates or deactivates the speed ramping state
 volt(ch,v[,sn])for PHIDGET RC modules: set the voltage to one of 5, 6 or 7.4 in Volt
 accel(ch,a[,sn])for PHIDGET RC modules: set the acceleration
 veloc(ch,v[,sn])for PHIDGET RC modules: set the velocity
 set(ch,pos[,sn])for PHIDGET RC modules: set the target position
 enabled(c,b[,sn])for YOCTOPUCE RC modules: with c:int the channel, b a bool (eg. enabled(0,1) or enabled(0,True))
 move(c,p[,t][,sn])for YOCTOPUCE RC modules: with c:int the channel, p:int the target position, the optional t the duration in ms, sn the optional modules serial number or logical name
 neutral(c,n[,sn])for YOCTOPUCE RC modules: with n an int [0..65000] in us
 range(c,r[,sn])for YOCTOPUCE RC modules: with r an int in %
WebSocket Command$variable holding the last state of the button pressed (1 or 0)
 send(<json>)If {} substitutions are used, json brackets need to be duplicated to escape them like in send({{ “value”: {}}})
 sleep(<float>)sleep: add a delay of <float> seconds
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(<bool>)sets calling button to “pressed” if argument evaluates to 1 or True
 button()toggles the state of the button
 read(<json>)if the `<json>` text respects the JSON format it is send to the connected WebSocket server and the response is bound to the variable `_`
diff --git a/doc/help_dialogs/Output_html/eventsliders_help.html b/doc/help_dialogs/Output_html/eventsliders_help.html index ababec56f..7c8497e13 100644 --- a/doc/help_dialogs/Output_html/eventsliders_help.html +++ b/doc/help_dialogs/Output_html/eventsliders_help.html @@ -1,696 +1,696 @@ - EVENT CUSTOM SLIDERS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ColumnDescription
EventHide or show the corresponding slider.
ActionPerform an action on the slider release.
CommandCommand to perform, depends on the Action type. ('{}' is replaced by the slider value*Factor + Offset)
OffsetOffset to be added to the Slider value (after scaling by Factor).
FactorScale factor, Slider value is multiplied by this value.
MinSets the minimum value for the range of the slider.
MaxSets the maximum value for the range of the slider.
CourseWhen ticked the slider moves in steps of 10.
TempShould be ticked when the slider's value is a temperature to allow Artisan to properly scale the value between Centigrade and Fahrenheit.
UnitOptional text used in annotations to the the units used for the slider value.


COMMANDS - - - - - -
Note: "{}" can be used as a placeholder, it will be substituted by (value*factor + offset). In all slider command actions, but for IO, VOUT, S7 and RC Commands, the bound value is converted from a float to an int.

Note: The placeholders {ET}, {BT}, {time}, {ETB}, {BTB}, and {WEIGHTin} will be substituted by the current ET, BT, time, ET background, BT background value, and batch size (in g) in Serial/Artisan/CallProgram/MODBUS/S7/WebSocket commands

Note: commands can be sequenced, separated by semicolons like in “<cmd1>;<cmd2>;<cmd3>”

Note: in PHIDGET commands, the optional parameter <sn> has the form <hub_serial>[:<hub_port>] allows to refer to a specific Phidget HUB by given its serial number, and optionally specifying the port number the addressed module is connected to.

Note: in YOCTOPUCE commands, the optional parameters <sn> holds either the modules serial number or its name
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ActionCommandDescription
Serial CommandASCII serial command or binary a2b_uu(serial command) 
Modbus Command_variable holding the last value read via MODBUS
 sleep(<float>)sleep: add a delay of <float> seconds
 button(<bool>)sets calling button to “pressed” if argument is 1 or True
 read(slaveID,register)reads register from slave slaveID using function 3 (Read Multiple Holding Registers). The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readSigned(slaveId,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readBCD(slaveID,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as unsigned integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32Signed(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32BCD(slaveID,register)reads 2 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readFloat(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as float. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 write(slaveId,register,value) or write([slaveId,register,value],..,[slaveId,register,value])write register: MODBUS function 6 (int) or function 16 (float)
 wcoil(slaveId,register,<bool>)write coil: MODBUS function 5
 wcoils(slaveId,register,[<bool>,..,<bool>])write coils: MODBUS function 15
mwrite(slaveId,register,andMask,orMask) or mwrite(s,r,am,om,v)mask write register: MODBUS function 22 or simulates function 22 with function 6 and the given value v
 writem(slaveId,register,value) or writem(slaveId,register,[<int>,..,<int>])write registers: MODBUS function 16
 writeBCD(s,r,v) or writeBCD([s,r,v],..,[s,r,v])write 16bit BCD encoded value v to register r of slave s
 writeWord(slaveId,register,value) or writeWord([slaveId,register,value],..,[slaveId,register,value])write 32bit float to two 16bit int registers: MODBUS function 16
 writeLong(slaveId,register,value) or writeLong([slaveId,register,value],..,[slaveId,register,value])write 32bit integer to two 16bit int registers: MODBUS function 16
 writeSingle(slaveId,register,value) or writeSingle([slaveId,register,value],..,[slaveId,register,value])write 16bit integer to a single 16bit register: MODBUS function 6 (int)
DTA CommandInsert Data address : value, ex. 4701:1000 and sv is 100. Always multiply with 10 if value Unit: 0.1 / ex. 4719:0 stops heating
Call ProgramA program/script path (absolute or relative)start and external program
Hottop Heater sets heater to value
Hottop Fan sets fan to value
Hottop Commandmotor(n),solenoid(n),stirrer(n),heater(h),fan(f) with n={0 ,1},h={0,..100},f={0,..10}
Fuji Commandwrite(<unitId>,<register>,<value>) 
PWM Commandout(<channel>,<value>[,<sn>])PHIDGET PWM Output: <value> in [0-100]
 toggle(<channel>[,<sn>])PHIDGET PWM Output: toggles <channel>
 pulse(<channel>,<millis>[,<sn>])PHIDGET PWM Output: turn <channel> on for <millis> milliseconds
 outhub(<channel>,<value>[,<sn>])PHIDGET HUB PWM Output: <value> in [0-100]
 togglehub(<channel>[,<sn>])PHIDGET HUB PWM Output: toggles <channel>
 pulsehub(<channel>,<millis>[,<sn>])PHIDGET HUB PWM Output: turn <channel> on for <millis> milliseconds
 enabled(c,b[,sn])YOCTOPUCE PWM Output: PWM running state
 freq(c,f[,sn])YOCTOPUCE PWM Output: set PWM frequency to f (Hz)
 duty(c,d[,sn])YOCTOPUCE PWM Output: set PWM period with the duty cycle in % as a float [0.0-100.0]
 move(c,d,t[,sn])YOCTOPUCE PWM Output: changes progressively the PWM to the specified value over the given time interval
VOUT Commandrange(c,r[,sn])for PHIDGET OUTPUT modules: sets voltage voltage range (r=5 for r5V and r=10 for 10V)
 out(n,v[,sn])for PHIDGET OUTPUT modules: set analog output channel n to output voltage value v in V (eg. 5.5 for 5.5V)
 vout(c,v[,sn])for YOCTOPUCE VOLTAGE OUT modules with c the channel (1 or 2),v the voltage as float [0.0-10.0]
 cout(c[,sn])for YOCTOPUCE CURRENT OUT modules with c the current as float [3.0-21.0]
 sleep(<float>)sleep: add a delay of <float> seconds
IO Commandset(c,b[,sn])PHIDGET Binary Output: switches channel c off (b=0) and on (b=1)
 toggle(c[,sn])PHIDGET Binary Output: toggles channel c
 pulse(c,t[,sn])PHIDGET Binary Output: sets the output of channel c to on for time t in milliseconds
 out(c,v[,sn])PHIDGET Voltage Output: sets voltage output of channel c to v (float)
 accel(c,v[,sn])PHIDGET DCMotor: sets acceleration of channel c to v (float)
 vel(c,v[,sn])PHIDGET DCMotor: sets target velocity of channel c to v (float)
 limit(c,v[,sn])PHIDGET DCMotor: sets current limit of channel c to v (float)
 on(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module on
 off(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module off
 yset(c,b[,sn])YOCTOPUCE Relay Output: switches channel c of the relay module off (b=0) and on (b=1)
 flip(c[,sn])YOCTOPUCE Relay Output: toggle the state of channel c
 pip(c,delay,duration[,sn])YOCTOPUCE Relay Output: pulse the channel c on after a delay of delay milliseconds for the duration of duration milliseconds
 powerReset([sn])YOCTOPUCE resets the power counter of the Yocto-Watt module
 slider(c,v)move slider c to value v
 button(i,c,b[,sn])switches PHIDGET Binary Output channel c off (b=0) and on (b=1) and sets button i to pressed or normal depending on the value b
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(b)sets button to pressed if value b is yes, true, t, or 1, otherwise to normal
 button()toggles the state of the button
 sleep(<float>)sleep: add a delay of <float> seconds
 santoker(<target>,<value>)sends integer <value> to <target> register specified by as byte in hex notation like “fa” via the Santoker Network protocol
 kaleido(<target>,<value>)sends <value> to <target> via the Kaleido Serial or Network protocol
S7 Command_variable holding the last value read via S7
 sleep(<float>)sleep: add a delay of <float> seconds
 button(<bool>)sets calling button to “pressed” if argument evaluates to 1 or True
 getDBbool(<dbnumber>,<start>,<index>)read bool from S7 DB
 getDBint(<dbnumber>,<start>)read int from S7 DB
 getDBfloat(<dbnumber>,<start>)read float from S7 DB
 setDBbool(<dbnumber>,<start>,<index>,<value>)write bool to S7 DB
 setDBint(<dbnumber>,<start>,<value>)write int to S7 DB
 setDBfloat(<dbnumber>,<start>,<value>)write float to S7 DB
Aillio R1 Heater sets heater to value
Aillio R1 Fan sets fan to value
Aillio R1 Drum sets drum speed to value
Artisan Commandalarms(<bool>)enables/disables alarms
 autoCHARGE(<bool>)enables/disables autoCHARGE
 autoDROP(<bool>)enables/disables autoDROP
 sleep(<float>)sleep: add a delay of <float> seconds
 tare(<int>)tare channel <int> with 1 => ET, 2 => BT, 3 => E1c1, 4: E1c2,..
 PIDonturns PID on
 PIDoffturns PID off
 PIDtoggletoggles the PID state
 pidmode(<int>)sets PID mode to 0: manual, 1: RS, 2: background follow
 p-i-d(<p>,<i>,<d>)sets the p-i-d parameters of the PID
 adjustSV(<int>)increases or decreases the current target SV value by <int>
 pidSV(<int>)sets the PID target set value SV
 pidSVC(<int>)sets the PID target set value SV given in C
 pidRS(<rs>)activates the PID Ramp-Soak pattern number <rs> (1-based!) or the one labeled <rs>
 pidSource(<int>)selects the PID input source with <n> 0: BT, 1: ET (Software PID); <n> in {0,..,3} (Arduino PID)
 pidLookahead(<int>)sets the PID lookahead
 popup(<msg>[,<int>])shows popup with message <msg> which optionally automatically closes after <int> seconds
 message(<msg>)shows message <msg> in the message line
 notifications(<bool>)enables/disables notifications; while disabled issued notifications are ignored
 notify(<title>,[<msg>])sends notification with title <title> and optional message <msg>
 setCanvasColor(<color>)sets canvas color to the RGB-hex <color> like #27f1d3
 resetCanvasColorresets canvas color
 button(<name>)activates button <name> from { START, CHARGE, DRY, FCs, FCe, SCs, SCe, DROP, COOL, OFF }
 palette(<p>)activates palette <p> with <p> either a number 0-9 or a palette label
 playbackmode(<int>)sets playback mode to 0: off, 1: time, 2: BT, 3: ET
 openPropertiesopens the Roast Properties dialog
 loadBackground(<filepath>)loads the .alog profile at the given filepath as background profile
 clearBackgroundclears the current background profile
 alarmset(<as>)activates the alarmset with the given number or label
 moveBackground(<direction>,<int>)moves the background profile the indicated number of steps towards <direction>, with <direction> one of up, down, left, right
 keyboard(<bool>)enables/disables keyboard mode
 keepON(<bool>)enables/disables the Keep ON flag
 showCurve(<name>,<bool>)shows/hides the curve indicated by <name> which is one of { ET, BT, DeltaET, DeltaBT, BackgroundET, BackgroundBT}
 showExtraCurve(<extra_device>,<curve>,<bool>)shows/hides the <curve> (one of {T1,T2}) of the zero-based <extra_device> number
 showEvents(<event_type>, <bool>)shows/hides the events of <event_type> in [1,..,5]
 showBackgroundEvents(<bool>)shows/hides the events of the background profile
RC Commandpulse(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max pulse width in microseconds
 pos(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max position
 engaged(ch,b[,sn])for PHIDGET RC modules: engage (b=1) or disengage (b = 0)
 ramp(ch,b[,sn])for PHIDGET RC modules: activates or deactivates the speed ramping state
 volt(ch,v[,sn])for PHIDGET RC modules: set the voltage to one of 5, 6 or 7.4 in Volt
 accel(ch,a[,sn])for PHIDGET RC modules: set the acceleration
 veloc(ch,v[,sn])for PHIDGET RC modules: set the velocity
 set(ch,pos[,sn])for PHIDGET RC modules: set the target position
 enabled(c,b[,sn])for YOCTOPUCE RC modules: with c:int the channel, b a bool (eg. enabled(0,1) or enabled(0,True))
 move(c,p[,t][,sn])for YOCTOPUCE RC modules: with c:int the channel, p:int the target position, the optional t the duration in ms
 neutral(c,n[,sn])for YOCTOPUCE RC modules: with n an int [0..65000] in us
 range(c,r[,sn])for YOCTOPUCE RC modules: with r an int in %
WebSocket Commandsend(<json>)If {} substitutions are used, json brackets need to be duplicated to escape them like in send({{ “value”: {}}})
 sleep(<float>)sleep: add a delay of <float> seconds
 button(<bool>)sets calling button to “pressed” if argument evaluates to 1 or True
 read(<json>)if the `<json>` text respects the JSON format it is send to the connected WebSocket server and the response is bound to the variable `_`
+ EVENT CUSTOM SLIDERS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnDescription
EventHide or show the corresponding slider.
ActionPerform an action on the slider release.
CommandCommand to perform, depends on the Action type. ('{}' is replaced by the slider value*Factor + Offset)
OffsetOffset to be added to the Slider value (after scaling by Factor).
FactorScale factor, Slider value is multiplied by this value.
MinSets the minimum value for the range of the slider.
MaxSets the maximum value for the range of the slider.
CourseWhen ticked the slider moves in steps of 10.
TempShould be ticked when the slider's value is a temperature to allow Artisan to properly scale the value between Centigrade and Fahrenheit.
UnitOptional text used in annotations to the the units used for the slider value.


COMMANDS + + + + + +
Note: "{}" can be used as a placeholder, it will be substituted by (value*factor + offset). In all slider command actions, but for IO, VOUT, S7 and RC Commands, the bound value is converted from a float to an int.

Note: The placeholders {ET}, {BT}, {time}, {ETB}, {BTB}, and {WEIGHTin} will be substituted by the current ET, BT, time, ET background, BT background value, and batch size (in g) in Serial/Artisan/CallProgram/MODBUS/S7/WebSocket commands

Note: commands can be sequenced, separated by semicolons like in “<cmd1>;<cmd2>;<cmd3>”

Note: in PHIDGET commands, the optional parameter <sn> has the form <hub_serial>[:<hub_port>] allows to refer to a specific Phidget HUB by given its serial number, and optionally specifying the port number the addressed module is connected to.

Note: in YOCTOPUCE commands, the optional parameters <sn> holds either the modules serial number or its name
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionCommandDescription
Serial CommandASCII serial command or binary a2b_uu(serial command) 
Modbus Command_variable holding the last value read via MODBUS
 sleep(<float>)sleep: add a delay of <float> seconds
 button(<bool>)sets calling button to “pressed” if argument is 1 or True
 read(slaveID,register)reads register from slave slaveID using function 3 (Read Multiple Holding Registers). The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readSigned(slaveId,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readBCD(slaveID,register)reads 1 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as unsigned integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32Signed(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as signed integer. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 read32BCD(slaveID,register)reads 2 16bit register from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as BCD. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 readFloat(slaveID,register)reads 2 16bit registers from slave slaveID using function 3 (Read Multiple Holding Registers) interpreted as float. The result is bound to the placeholder `_` and thus can be accessed in later commands.
 write(slaveId,register,value) or write([slaveId,register,value],..,[slaveId,register,value])write register: MODBUS function 6 (int) or function 16 (float)
 wcoil(slaveId,register,<bool>)write coil: MODBUS function 5
 wcoils(slaveId,register,[<bool>,..,<bool>])write coils: MODBUS function 15
mwrite(slaveId,register,andMask,orMask) or mwrite(s,r,am,om,v)mask write register: MODBUS function 22 or simulates function 22 with function 6 and the given value v
 writem(slaveId,register,value) or writem(slaveId,register,[<int>,..,<int>])write registers: MODBUS function 16
 writeBCD(s,r,v) or writeBCD([s,r,v],..,[s,r,v])write 16bit BCD encoded value v to register r of slave s
 writeWord(slaveId,register,value) or writeWord([slaveId,register,value],..,[slaveId,register,value])write 32bit float to two 16bit int registers: MODBUS function 16
 writeLong(slaveId,register,value) or writeLong([slaveId,register,value],..,[slaveId,register,value])write 32bit integer to two 16bit int registers: MODBUS function 16
 writeSingle(slaveId,register,value) or writeSingle([slaveId,register,value],..,[slaveId,register,value])write 16bit integer to a single 16bit register: MODBUS function 6 (int)
DTA CommandInsert Data address : value, ex. 4701:1000 and sv is 100. Always multiply with 10 if value Unit: 0.1 / ex. 4719:0 stops heating
Call ProgramA program/script path (absolute or relative)start and external program
Hottop Heater sets heater to value
Hottop Fan sets fan to value
Hottop Commandmotor(n),solenoid(n),stirrer(n),heater(h),fan(f) with n={0 ,1},h={0,..100},f={0,..10}
Fuji Commandwrite(<unitId>,<register>,<value>) 
PWM Commandout(<channel>,<value>[,<sn>])PHIDGET PWM Output: <value> in [0-100]
 toggle(<channel>[,<sn>])PHIDGET PWM Output: toggles <channel>
 pulse(<channel>,<millis>[,<sn>])PHIDGET PWM Output: turn <channel> on for <millis> milliseconds
 outhub(<channel>,<value>[,<sn>])PHIDGET HUB PWM Output: <value> in [0-100]
 togglehub(<channel>[,<sn>])PHIDGET HUB PWM Output: toggles <channel>
 pulsehub(<channel>,<millis>[,<sn>])PHIDGET HUB PWM Output: turn <channel> on for <millis> milliseconds
 enabled(c,b[,sn])YOCTOPUCE PWM Output: PWM running state
 freq(c,f[,sn])YOCTOPUCE PWM Output: set PWM frequency to f (Hz)
 duty(c,d[,sn])YOCTOPUCE PWM Output: set PWM period with the duty cycle in % as a float [0.0-100.0]
 move(c,d,t[,sn])YOCTOPUCE PWM Output: changes progressively the PWM to the specified value over the given time interval
VOUT Commandrange(c,r[,sn])for PHIDGET OUTPUT modules: sets voltage voltage range (r=5 for r5V and r=10 for 10V)
 out(n,v[,sn])for PHIDGET OUTPUT modules: set analog output channel n to output voltage value v in V (eg. 5.5 for 5.5V)
 vout(c,v[,sn])for YOCTOPUCE VOLTAGE OUT modules with c the channel (1 or 2),v the voltage as float [0.0-10.0]
 cout(c[,sn])for YOCTOPUCE CURRENT OUT modules with c the current as float [3.0-21.0]
 sleep(<float>)sleep: add a delay of <float> seconds
IO Commandset(c,b[,sn])PHIDGET Binary Output: switches channel c off (b=0) and on (b=1)
 toggle(c[,sn])PHIDGET Binary Output: toggles channel c
 pulse(c,t[,sn])PHIDGET Binary Output: sets the output of channel c to on for time t in milliseconds
 out(c,v[,sn])PHIDGET Voltage Output: sets voltage output of channel c to v (float)
 accel(c,v[,sn])PHIDGET DCMotor: sets acceleration of channel c to v (float)
 vel(c,v[,sn])PHIDGET DCMotor: sets target velocity of channel c to v (float)
 limit(c,v[,sn])PHIDGET DCMotor: sets current limit of channel c to v (float)
 on(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module on
 off(c[,sn])YOCTOPUCE Relay Output: turn channel c of the relay module off
 yset(c,b[,sn])YOCTOPUCE Relay Output: switches channel c of the relay module off (b=0) and on (b=1)
 flip(c[,sn])YOCTOPUCE Relay Output: toggle the state of channel c
 pip(c,delay,duration[,sn])YOCTOPUCE Relay Output: pulse the channel c on after a delay of delay milliseconds for the duration of duration milliseconds
 powerReset([sn])YOCTOPUCE resets the power counter of the Yocto-Watt module
 slider(c,v)move slider c to value v
 button(i,c,b[,sn])switches PHIDGET Binary Output channel c off (b=0) and on (b=1) and sets button i to pressed or normal depending on the value b
 button(i,b)sets button i to pressed if value b is yes, true, t, or 1, otherwise to normal
 button(b)sets button to pressed if value b is yes, true, t, or 1, otherwise to normal
 button()toggles the state of the button
 sleep(<float>)sleep: add a delay of <float> seconds
 santoker(<target>,<value>)sends integer <value> to <target> register specified by as byte in hex notation like “fa” via the Santoker Network protocol
 kaleido(<target>,<value>)sends <value> to <target> via the Kaleido Serial or Network protocol
S7 Command_variable holding the last value read via S7
 sleep(<float>)sleep: add a delay of <float> seconds
 button(<bool>)sets calling button to “pressed” if argument evaluates to 1 or True
 getDBbool(<dbnumber>,<start>,<index>)read bool from S7 DB
 getDBint(<dbnumber>,<start>)read int from S7 DB
 getDBfloat(<dbnumber>,<start>)read float from S7 DB
 setDBbool(<dbnumber>,<start>,<index>,<value>)write bool to S7 DB
 setDBint(<dbnumber>,<start>,<value>)write int to S7 DB
 setDBfloat(<dbnumber>,<start>,<value>)write float to S7 DB
Aillio R1 Heater sets heater to value
Aillio R1 Fan sets fan to value
Aillio R1 Drum sets drum speed to value
Artisan Commandalarms(<bool>)enables/disables alarms
 autoCHARGE(<bool>)enables/disables autoCHARGE
 autoDROP(<bool>)enables/disables autoDROP
 sleep(<float>)sleep: add a delay of <float> seconds
 tare(<int>)tare channel <int> with 1 => ET, 2 => BT, 3 => E1c1, 4: E1c2,..
 PIDonturns PID on
 PIDoffturns PID off
 PIDtoggletoggles the PID state
 pidmode(<int>)sets PID mode to 0: manual, 1: RS, 2: background follow
 p-i-d(<p>,<i>,<d>)sets the p-i-d parameters of the PID
 adjustSV(<int>)increases or decreases the current target SV value by <int>
 pidSV(<int>)sets the PID target set value SV
 pidSVC(<int>)sets the PID target set value SV given in C
 pidRS(<rs>)activates the PID Ramp-Soak pattern number <rs> (1-based!) or the one labeled <rs>
 pidSource(<int>)selects the PID input source with <n> 0: BT, 1: ET (Software PID); <n> in {0,..,3} (Arduino PID)
 pidLookahead(<int>)sets the PID lookahead
 popup(<msg>[,<int>])shows popup with message <msg> which optionally automatically closes after <int> seconds
 message(<msg>)shows message <msg> in the message line
 notifications(<bool>)enables/disables notifications; while disabled issued notifications are ignored
 notify(<title>,[<msg>])sends notification with title <title> and optional message <msg>
 setCanvasColor(<color>)sets canvas color to the RGB-hex <color> like #27f1d3
 resetCanvasColorresets canvas color
 button(<name>)activates button <name> from { START, CHARGE, DRY, FCs, FCe, SCs, SCe, DROP, COOL, OFF }
 palette(<p>)activates palette <p> with <p> either a number 0-9 or a palette label
 playbackmode(<int>)sets playback mode to 0: off, 1: time, 2: BT, 3: ET
 openPropertiesopens the Roast Properties dialog
 loadBackground(<filepath>)loads the .alog profile at the given filepath as background profile
 clearBackgroundclears the current background profile
 alarmset(<as>)activates the alarmset with the given number or label
 moveBackground(<direction>,<int>)moves the background profile the indicated number of steps towards <direction>, with <direction> one of up, down, left, right
 keyboard(<bool>)enables/disables keyboard mode
 keepON(<bool>)enables/disables the Keep ON flag
 showCurve(<name>,<bool>)shows/hides the curve indicated by <name> which is one of { ET, BT, DeltaET, DeltaBT, BackgroundET, BackgroundBT}
 showExtraCurve(<extra_device>,<curve>,<bool>)shows/hides the <curve> (one of {T1,T2}) of the zero-based <extra_device> number
 showEvents(<event_type>, <bool>)shows/hides the events of <event_type> in [1,..,5]
 showBackgroundEvents(<bool>)shows/hides the events of the background profile
RC Commandpulse(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max pulse width in microseconds
 pos(ch,min,max[,sn])for PHIDGET RC modules: sets the min/max position
 engaged(ch,b[,sn])for PHIDGET RC modules: engage (b=1) or disengage (b = 0)
 ramp(ch,b[,sn])for PHIDGET RC modules: activates or deactivates the speed ramping state
 volt(ch,v[,sn])for PHIDGET RC modules: set the voltage to one of 5, 6 or 7.4 in Volt
 accel(ch,a[,sn])for PHIDGET RC modules: set the acceleration
 veloc(ch,v[,sn])for PHIDGET RC modules: set the velocity
 set(ch,pos[,sn])for PHIDGET RC modules: set the target position
 enabled(c,b[,sn])for YOCTOPUCE RC modules: with c:int the channel, b a bool (eg. enabled(0,1) or enabled(0,True))
 move(c,p[,t][,sn])for YOCTOPUCE RC modules: with c:int the channel, p:int the target position, the optional t the duration in ms
 neutral(c,n[,sn])for YOCTOPUCE RC modules: with n an int [0..65000] in us
 range(c,r[,sn])for YOCTOPUCE RC modules: with r an int in %
WebSocket Commandsend(<json>)If {} substitutions are used, json brackets need to be duplicated to escape them like in send({{ “value”: {}}})
 sleep(<float>)sleep: add a delay of <float> seconds
 button(<bool>)sets calling button to “pressed” if argument evaluates to 1 or True
 read(<json>)if the `<json>` text respects the JSON format it is send to the connected WebSocket server and the response is bound to the variable `_`
diff --git a/doc/help_dialogs/Output_html/keyboardshortcuts_help.html b/doc/help_dialogs/Output_html/keyboardshortcuts_help.html index c0c9c9d13..98478a0d3 100644 --- a/doc/help_dialogs/Output_html/keyboardshortcuts_help.html +++ b/doc/help_dialogs/Output_html/keyboardshortcuts_help.html @@ -1,500 +1,500 @@ - KEYBOARD SHORTCUTS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeysDescription
ENTERTurns ON/OFF Keyboard Shortcuts
⌘-ENTER [Mac]
CTRL+ENTER [Win]
Starts recording
SHIFT-ENTERTurns Artisan OFF
SPACEWhen Keyboard Shortcuts are ON chooses the current button
When Keyboard Shortcuts are OFF adds a custom event
When Meter=NONE opens dialog to manually enter temperatures during roast
LEFT,RIGHTChange roast event key focus
LEFT,RIGHT,UP,DOWNMove background (when sliders not visible or when Config>> Events>> Sliders tab>> Keyboard Control is not selected)
AAutosave
⌘-N [Mac]
CRTL+N [Win]
Autosave + RESET + START
T [Mac]
CTRL+SHIFT+T [Win]
Toggle mouse cross lines
GToggle auto axis mode between Roast, BBP+Roast and BBP
DToggle xy cursor mode (off/temp/delta)
ZToggle xy cursor clamp mode (off/BT/ET/BTB/ETB)
UToggle LCD cursor (off/profile/background)
CShows/Hides Controls
XShows/Hides LCD Readings
YShows/Hides Mini Event editor (on recording)
MShows/Hides Event Buttons
BShows/Hides Extra Event Buttons
SShows/Hides Event Sliders
PToggle PID mode
JToggle Playback Events
H
CTRL+H [Win]
Load background profile
OPTION+H [Mac]
CTRL+SHIFT+H [Win]
Remove background profile
IToggle foreground curves “show full”
OToggle background curves “show full”
LLoad alarms
+,-Inc/dec PID lookahead
⌘ +,- [Mac]
CRTL +,- [Win]
Inc/dec graph resolution
⌘ 0-9 [Mac]
CRTL 0-9 [Win]
Changes Event Button Palettes
;Application ScreenShot
:Desktop ScreenShot
Q,W,E,R + <value>Quick Special Event Entry. The keys q,w,e, and r correspond to special events 1,2,3 and 4. A two digit numeric value must follow the shortcut letter, e.g. 'q75', when the corresponding event slider max value is 100 or less (default setting). When the slider max value is greater than 100, three digits must be entered and for values less than 100 a leading zero is required, e.g. 'q075'.
V + <value>Quick PID SV Entry. Value is a three digit number. For values less than 100 must be entered with a leading zero, e.g. 'v075'.
OPTION+B + <value> [Mac]
CTRL+SHIFT+B + <value> [Win]
Fire custom event button action. Value is a two digit number indicating the button number.
F
CTRL+SHIFT+F [Win]
Full Screen Mode


ADDITIONAL SHORTCUTS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Key/mouse stroke(s)WhereActionAdditional Information
Double click on Roast TitleGraphOpen the roast in artisan.plusRequires an artisan.plus account
Double Click on Background Profile TitleGraph & DesignerToggle Show/Hide Background ProfileOnly when a Background profile is loaded
Right click on BT curveGraphPlace or re-place events 
Right click on timerGraphToggle super mode 
Right click on characteristics line below graphGraphToggle set of characteristics displayedCharacteristics must be enabled in Config>> Statistics
Click on plus icon (when not red)GraphToggle connect/disconnect to plus 
Click on plus icon (when it is red)GraphSync the roast with artisan.plus 
⌘ click on plus icon [Mac]
CTRL click on plus icon [Win]
GraphWhen connected to plus, disconnect and clear credentials 
OPTION click on plus icon [Mac]
ALT click on plus icon [Win]
GraphGenerate email message with Artisan Logs 
⌘+OPTION click on plus icon [Mac]
CTRL+ALT click on plus icon [Win]
GraphToggle debug logging mode 
Click on LCDGraphHide or Show corresponding CurveIn OFF state this changes the Artisan Settings, in ON/START states the change is temporary until OFF state
Click on label in the LegendGraphHide or Show corresponding CurveOnly in OFF state when the Legend is displayed
OPTION click 'RESET' Button [Mac]
ALT click 'RESET' Button [Win]
GraphDetach IO Phidgets 
⌘ click 'CONTROL' Button [Mac]
CTRL click 'CONTROL' Button [Win]
GraphToggle PID Standby on and offDevice = Fuji or Delta
⌘ click 'CONTROL' Button [Mac]
CTRL click 'CONTROL' Button [Win]
GraphOpens PID dialogDevice = Hottop
⌘ click 'CONTROL' Button [Mac]
CTRL click 'CONTROL' Button [Win]
GraphToggle PIDDevice = <all others>, Control enabled in Config>> Device
⌘+PLUS, ⌘+MINUS [Mac]
CTRL+SHIFT+PLUS, CTRL+MINUS [Win]
GraphIncrease or Decrease Graph Resolution %Same as Config>> Curves>> UI tab>> Graph % +/-
TABGraph when Sliders visibleSequence slider selectRequires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be turned off (ENTER)
UP,DOWN,RIGHT,LEFTGraph when Sliders visibleIncrement selected slider up or down by step amountRequires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be turned off (ENTER)
OPTION+UP, OPTION+DOWN [Mac]
PAGEUP,PAGEDOWN [Win]
Graph when Sliders visibleIncrement selected slider up or down by 10Requires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be turned off (ENTER)
HOME,ENDGraph when Sliders visibleSet selected slider to minimum or maximum valueRequires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be disabled (ENTER)
Click on timerSimulatorToggle Pause/Continue SimulationSimulator speed may be changd while paused (hold shift (1x), OPTION/ALT (2x) or COMMAND/CTRL (4x) on restart).
OPTION Tools>>Simulator [Mac]
ALT Tools>>Simulator [Win]
Graph/SimulatorStart or change Simulator speed to 2x mode 
⌘ Tools>>Simulator [Mac]
CTRL Tools>>Simulator [Win]
Graph/SimulatorStart or change Simulator speed to 4x mode 
⌘+L [Mac]
CTRL+L [Win]
Roast Properties Roast tabOpen volume calculator 
OPTION click Stock [Mac]
ALT click Stock [Win]
Roast Properties Roast tabShow plus Stock in alternate weight unit from Artisan setting (imperial <-> metric)Requires a connection to plus
OPTION click '+' button [Mac]
ALT click '+' button [Win]
Roast Properties Roast tabAdds Weight Roasted, Volume Roasted, Moisture Roasted, ColorWhole, and Color Ground to the recent roast 
OPTION File>> New>> <recent-roast> [Mac]
ALT File>> New>> <recent-roast> [Win]
Roast Properties Roast tabSets roast properties to <recent-roast> without starting a new roast 
⌘+I [Mac]
CTRL+I [Win]
Roast Properties Roast tabAdds scale weight to Green Weight field (same action as 'in' button)Requires a connected scale
⌘+O [Mac]
CTRL+O [Win]
Roast Properties Roast tabAdds scale weight to Roasted Weight field (same action as 'out' button)Requires a connected scale
⌘+P [Mac]
CTRL+P [Win]
Roast Properties Roast tabClear accumulated scale weight preview display (same as clicking on the preview display)Requires a connected scale
EnterRoast Properties Roast Tab
Volume Calculator Unit, Green Unit Weight or Roasted Unit Weight field
Overwrite with current scale weight (same action as 'unit', 'in', 'out' buttons)Requires a connected scale
EnterRoast Properties Roast tab
Green Weight or Roasted Weight field
Overwrite with current scale weightRequires a connected scale
⌘+C [Mac]
CTRL+C [Win]
Roast Properties Data tabCopy table 
OPTION click 'Copy Table' Button [Mac]
ALT click 'Copy Table' Button [Win]
VariousFor various tables this copies the table in tabular form 
Click on Home Icon
While recording only
Navigation ToolbarToggle Zoom Follow (automatic panning)Zoom action while recording sets Follow ON
Hold Shift+Option [Mac]
Hold Shift+Alt [Win]
When starting ArtisanSkip Settings Load 
Hold Shift+Option [Mac]
Hold Shift+Alt [Win]
When quitting ArtisanSkip Settings Save 
Hold Shift+Option [Mac]
Hold Shift+Alt [Win]
When opening a profile (.alog file)Skip creating settings cache and ask user to apply existing settings or settings from profile 


MENU SHORTCUTS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeysMenuAction
⌘+O [Mac]
CTRL+O [Win]
FileOpen
⌘+S [Mac]
CTRL+S [Win]
FileSave
⌘+P [Mac]
CTRL+P [Win]
FilePrint
⌘+X [Mac]
CTRL+X [Win]
EditCut
⌘+C [Mac]
CTRL+C [Win]
EditCopy
⌘+V [Mac]
CTRL+V [Win]
EditPaste
⌘+T [Mac]
CTRL+T [Win]
RoastOpen Roast Properties dialog
⌘+B [Mac]
CTRL+B [Win]
RoastOpen Profile Background dialog
⌘+F4 [Mac]
CTRL+F4 [Win]
RoastSwitch Profiles (Foreground<=>Background)
⌘+D [Mac]
CTRL+D [Win]
ConfigOpen Devices dialog
⌘+U [Mac]
CTRL+U [Win]
ConfigOpen Curves dialog
⌘+E [Mac]
CTRL+E [Win]
ConfigOpen Events dialog
⌘+A [Mac]
CTRL+A [Win]
ConfigOpen Alarms dialog
⌘+SHIFT+A [Mac]
CTRL+SHIFT+A [Win]
ConfigOpen Axes dialog
⌘+K [Mac]
CTRL+K [Win]
ToolsAnalyzer Auto All
⌘+OPTION+A [Mac]
CTRL+ALT+K [Win]
ToolsAnalyzer Clear Results
⌘+L [Mac]
CTRL+L [Win]
ViewShow/Hide Large Main LCDs
⌘+F [Mac]
CTRL+SHIFT+F [Win]
ViewToggle Full Screen Mode                                                                                                                                            
F1HelpOpen QuickStart Guide in the system browser
+ KEYBOARD SHORTCUTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeysDescription
ENTERTurns ON/OFF Keyboard Shortcuts
⌘-ENTER [Mac]
CTRL+ENTER [Win]
Starts recording
SHIFT-ENTERTurns Artisan OFF
SPACEWhen Keyboard Shortcuts are ON chooses the current button
When Keyboard Shortcuts are OFF adds a custom event
When Meter=NONE opens dialog to manually enter temperatures during roast
LEFT,RIGHTChange roast event key focus
LEFT,RIGHT,UP,DOWNMove background (when sliders not visible or when Config>> Events>> Sliders tab>> Keyboard Control is not selected)
AAutosave
⌘-N [Mac]
CRTL+N [Win]
Autosave + RESET + START
T [Mac]
CTRL+SHIFT+T [Win]
Toggle mouse cross lines
GToggle auto axis mode between Roast, BBP+Roast and BBP
DToggle xy cursor mode (off/temp/delta)
ZToggle xy cursor clamp mode (off/BT/ET/BTB/ETB)
UToggle LCD cursor (off/profile/background)
CShows/Hides Controls
XShows/Hides LCD Readings
YShows/Hides Mini Event editor (on recording)
MShows/Hides Event Buttons
BShows/Hides Extra Event Buttons
SShows/Hides Event Sliders
PToggle PID mode
JToggle Playback Events
H
CTRL+H [Win]
Load background profile
OPTION+H [Mac]
CTRL+SHIFT+H [Win]
Remove background profile
IToggle foreground curves “show full”
OToggle background curves “show full”
LLoad alarms
+,-Inc/dec PID lookahead
⌘ +,- [Mac]
CRTL +,- [Win]
Inc/dec graph resolution
⌘ 0-9 [Mac]
CRTL 0-9 [Win]
Changes Event Button Palettes
;Application ScreenShot
:Desktop ScreenShot
Q,W,E,R + <value>Quick Special Event Entry. The keys q,w,e, and r correspond to special events 1,2,3 and 4. A two digit numeric value must follow the shortcut letter, e.g. 'q75', when the corresponding event slider max value is 100 or less (default setting). When the slider max value is greater than 100, three digits must be entered and for values less than 100 a leading zero is required, e.g. 'q075'.
V + <value>Quick PID SV Entry. Value is a three digit number. For values less than 100 must be entered with a leading zero, e.g. 'v075'.
OPTION+B + <value> [Mac]
CTRL+SHIFT+B + <value> [Win]
Fire custom event button action. Value is a two digit number indicating the button number.
F
CTRL+SHIFT+F [Win]
Full Screen Mode


ADDITIONAL SHORTCUTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Key/mouse stroke(s)WhereActionAdditional Information
Double click on Roast TitleGraphOpen the roast in artisan.plusRequires an artisan.plus account
Double Click on Background Profile TitleGraph & DesignerToggle Show/Hide Background ProfileOnly when a Background profile is loaded
Right click on BT curveGraphPlace or re-place events 
Right click on timerGraphToggle super mode 
Right click on characteristics line below graphGraphToggle set of characteristics displayedCharacteristics must be enabled in Config>> Statistics
Click on plus icon (when not red)GraphToggle connect/disconnect to plus 
Click on plus icon (when it is red)GraphSync the roast with artisan.plus 
⌘ click on plus icon [Mac]
CTRL click on plus icon [Win]
GraphWhen connected to plus, disconnect and clear credentials 
OPTION click on plus icon [Mac]
ALT click on plus icon [Win]
GraphGenerate email message with Artisan Logs 
⌘+OPTION click on plus icon [Mac]
CTRL+ALT click on plus icon [Win]
GraphToggle debug logging mode 
Click on LCDGraphHide or Show corresponding CurveIn OFF state this changes the Artisan Settings, in ON/START states the change is temporary until OFF state
Click on label in the LegendGraphHide or Show corresponding CurveOnly in OFF state when the Legend is displayed
OPTION click 'RESET' Button [Mac]
ALT click 'RESET' Button [Win]
GraphDetach IO Phidgets 
⌘ click 'CONTROL' Button [Mac]
CTRL click 'CONTROL' Button [Win]
GraphToggle PID Standby on and offDevice = Fuji or Delta
⌘ click 'CONTROL' Button [Mac]
CTRL click 'CONTROL' Button [Win]
GraphOpens PID dialogDevice = Hottop
⌘ click 'CONTROL' Button [Mac]
CTRL click 'CONTROL' Button [Win]
GraphToggle PIDDevice = <all others>, Control enabled in Config>> Device
⌘+PLUS, ⌘+MINUS [Mac]
CTRL+SHIFT+PLUS, CTRL+MINUS [Win]
GraphIncrease or Decrease Graph Resolution %Same as Config>> Curves>> UI tab>> Graph % +/-
TABGraph when Sliders visibleSequence slider selectRequires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be turned off (ENTER)
UP,DOWN,RIGHT,LEFTGraph when Sliders visibleIncrement selected slider up or down by step amountRequires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be turned off (ENTER)
OPTION+UP, OPTION+DOWN [Mac]
PAGEUP,PAGEDOWN [Win]
Graph when Sliders visibleIncrement selected slider up or down by 10Requires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be turned off (ENTER)
HOME,ENDGraph when Sliders visibleSet selected slider to minimum or maximum valueRequires Keyboard Control enabled in Config>> Events
Keyboard Shortcuts must be disabled (ENTER)
Click on timerSimulatorToggle Pause/Continue SimulationSimulator speed may be changd while paused (hold shift (1x), OPTION/ALT (2x) or COMMAND/CTRL (4x) on restart).
OPTION Tools>>Simulator [Mac]
ALT Tools>>Simulator [Win]
Graph/SimulatorStart or change Simulator speed to 2x mode 
⌘ Tools>>Simulator [Mac]
CTRL Tools>>Simulator [Win]
Graph/SimulatorStart or change Simulator speed to 4x mode 
⌘+L [Mac]
CTRL+L [Win]
Roast Properties Roast tabOpen volume calculator 
OPTION click Stock [Mac]
ALT click Stock [Win]
Roast Properties Roast tabShow plus Stock in alternate weight unit from Artisan setting (imperial <-> metric)Requires a connection to plus
OPTION click '+' button [Mac]
ALT click '+' button [Win]
Roast Properties Roast tabAdds Weight Roasted, Volume Roasted, Moisture Roasted, ColorWhole, and Color Ground to the recent roast 
OPTION File>> New>> <recent-roast> [Mac]
ALT File>> New>> <recent-roast> [Win]
Roast Properties Roast tabSets roast properties to <recent-roast> without starting a new roast 
⌘+I [Mac]
CTRL+I [Win]
Roast Properties Roast tabAdds scale weight to Green Weight field (same action as 'in' button)Requires a connected scale
⌘+O [Mac]
CTRL+O [Win]
Roast Properties Roast tabAdds scale weight to Roasted Weight field (same action as 'out' button)Requires a connected scale
⌘+P [Mac]
CTRL+P [Win]
Roast Properties Roast tabClear accumulated scale weight preview display (same as clicking on the preview display)Requires a connected scale
EnterRoast Properties Roast Tab
Volume Calculator Unit, Green Unit Weight or Roasted Unit Weight field
Overwrite with current scale weight (same action as 'unit', 'in', 'out' buttons)Requires a connected scale
EnterRoast Properties Roast tab
Green Weight or Roasted Weight field
Overwrite with current scale weightRequires a connected scale
⌘+C [Mac]
CTRL+C [Win]
Roast Properties Data tabCopy table 
OPTION click 'Copy Table' Button [Mac]
ALT click 'Copy Table' Button [Win]
VariousFor various tables this copies the table in tabular form 
Click on Home Icon
While recording only
Navigation ToolbarToggle Zoom Follow (automatic panning)Zoom action while recording sets Follow ON
Hold Shift+Option [Mac]
Hold Shift+Alt [Win]
When starting ArtisanSkip Settings Load 
Hold Shift+Option [Mac]
Hold Shift+Alt [Win]
When quitting ArtisanSkip Settings Save 
Hold Shift+Option [Mac]
Hold Shift+Alt [Win]
When opening a profile (.alog file)Skip creating settings cache and ask user to apply existing settings or settings from profile 


MENU SHORTCUTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeysMenuAction
⌘+O [Mac]
CTRL+O [Win]
FileOpen
⌘+S [Mac]
CTRL+S [Win]
FileSave
⌘+P [Mac]
CTRL+P [Win]
FilePrint
⌘+X [Mac]
CTRL+X [Win]
EditCut
⌘+C [Mac]
CTRL+C [Win]
EditCopy
⌘+V [Mac]
CTRL+V [Win]
EditPaste
⌘+T [Mac]
CTRL+T [Win]
RoastOpen Roast Properties dialog
⌘+B [Mac]
CTRL+B [Win]
RoastOpen Profile Background dialog
⌘+F4 [Mac]
CTRL+F4 [Win]
RoastSwitch Profiles (Foreground<=>Background)
⌘+D [Mac]
CTRL+D [Win]
ConfigOpen Devices dialog
⌘+U [Mac]
CTRL+U [Win]
ConfigOpen Curves dialog
⌘+E [Mac]
CTRL+E [Win]
ConfigOpen Events dialog
⌘+A [Mac]
CTRL+A [Win]
ConfigOpen Alarms dialog
⌘+SHIFT+A [Mac]
CTRL+SHIFT+A [Win]
ConfigOpen Axes dialog
⌘+K [Mac]
CTRL+K [Win]
ToolsAnalyzer Auto All
⌘+OPTION+A [Mac]
CTRL+ALT+K [Win]
ToolsAnalyzer Clear Results
⌘+L [Mac]
CTRL+L [Win]
ViewShow/Hide Large Main LCDs
⌘+F [Mac]
CTRL+SHIFT+F [Win]
ViewToggle Full Screen Mode                                                                                                                                            
F1HelpOpen QuickStart Guide in the system browser
diff --git a/doc/help_dialogs/Output_html/modbus_help.html b/doc/help_dialogs/Output_html/modbus_help.html index a2502929d..54b2c78c6 100644 --- a/doc/help_dialogs/Output_html/modbus_help.html +++ b/doc/help_dialogs/Output_html/modbus_help.html @@ -1,36 +1,36 @@ - PORTS CONFIGURATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MODBUS SETTINGS
The MODBUS serial protocols RTU, ASCII, and Binary is using the specified serial port parameters. The MODBUS IP protocol on TCP and UDP is respecting the host IP and port.
The inputs 1+2 configure the MODBUS device, inputs 3+4 configure the MODBUS_34 device and so on.
Inputs with the slave id set to 0 are turned off.
Function 1 (Read Coils): registers 0 to 65535 corresponding to numbers 000001 to 065536
Function 2 (Read Discrete Inputs): registers 0 to 65535 corresponding to numbers 100001 to 165536
Function 3 (Read Multiple Holding Registers): registers 0 to 65535 corresponding to numbers 400001 to 465536
Function 4 (Read Input Registers): registers 0 to 65535 corresponding to numbers 300001 to 365536
Dividers 1/10 and 1/100 can be set to recreate decimals of floats transported as integers multiplied by 10 or 100. Eg. a value of 145.2 might be transmitted as 1452, which is turned back into 145.2 by the 1/10 divider.
Temperature readings are automatically converted based on the specified unit per input channel.
If a 32bit decoder is set two succeeding 16bit registers are requested and the received 4 bytes are interpreted using the byte and word order as specified by the corresponding flag.
The PID Control dialog can operate a connected PID slave using the given PID registers to set the p-i-d parameters and the set value (SV). MODBUS commands can be specified to turn the PID slave on and off from that PID Control dialog. See the help page in the Events Dialog for documentation of available MODBUS write commands.
The Scan button opens a simple MODBUS scanner to search for data holding registers in the connected device.
Refer to the User Manual of your MODBUS device for information specific to the setup required for your device.
+ PORTS CONFIGURATION + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MODBUS SETTINGS
The MODBUS serial protocols RTU, ASCII, and Binary is using the specified serial port parameters. The MODBUS IP protocol on TCP and UDP is respecting the host IP and port.
The inputs 1+2 configure the MODBUS device, inputs 3+4 configure the MODBUS_34 device and so on.
Inputs with the slave id set to 0 are turned off.
Function 1 (Read Coils): registers 0 to 65535 corresponding to numbers 000001 to 065536
Function 2 (Read Discrete Inputs): registers 0 to 65535 corresponding to numbers 100001 to 165536
Function 3 (Read Multiple Holding Registers): registers 0 to 65535 corresponding to numbers 400001 to 465536
Function 4 (Read Input Registers): registers 0 to 65535 corresponding to numbers 300001 to 365536
Dividers 1/10 and 1/100 can be set to recreate decimals of floats transported as integers multiplied by 10 or 100. Eg. a value of 145.2 might be transmitted as 1452, which is turned back into 145.2 by the 1/10 divider.
Temperature readings are automatically converted based on the specified unit per input channel.
If a 32bit decoder is set two succeeding 16bit registers are requested and the received 4 bytes are interpreted using the byte and word order as specified by the corresponding flag.
The PID Control dialog can operate a connected PID slave using the given PID registers to set the p-i-d parameters and the set value (SV). MODBUS commands can be specified to turn the PID slave on and off from that PID Control dialog. See the help page in the Events Dialog for documentation of available MODBUS write commands.
The Scan button opens a simple MODBUS scanner to search for data holding registers in the connected device.
Refer to the User Manual of your MODBUS device for information specific to the setup required for your device.
diff --git a/doc/help_dialogs/Output_html/programs_help.html b/doc/help_dialogs/Output_html/programs_help.html index 779937d69..ef1123d72 100644 --- a/doc/help_dialogs/Output_html/programs_help.html +++ b/doc/help_dialogs/Output_html/programs_help.html @@ -1,13 +1,13 @@ - EXTERNAL PROGRAMS - - - - - -
Link external programs that print temperature when called. This allows to connect meters that use any program language.

Artisan will start the program each sample period. The program output must be to stdout (like when using print statements). The program must exit and must not be persistent.

If only one temperature is provided it will be interpreted as BT. If more than one temperature is provided the values are order dependent with ET first and BT second.

Data may also be provided to the "Program" extra devices. Extra device "Program" are the first two values, typically ET and BT. "Program 34" are the third and fourth values. Up to 10 values may be supplied.


Example of output needed from program for single temperature (BT):
"100.4" (note: "" not needed)

Example of output needed from program for double temperature (ET,BT)
"200.4,100.4" (note: temperatures are separated by a comma "ET,BT")

Example of output needed from program for double temperature (ET,BT) and extra devices (Program and Program 34)
"200.4,100.4,312.4,345.6,299.0,275.5"
- - - - - -
Example of a file written in Python called test.py:

#comment: print a string with two numbers separated by a comma
#!/usr/bin/env python
print("237.1,100.4")

Note: In many cases the path to the Python or other language executatable should be provided along with the external program path. On Windows it is advised to enclose the paths with quotation marks if there are any spaces, and use forward slashes '/' in the path.
"C:/Python38-64/python.exe" "c:/scripts/test.py"

Under Output a script can be specified which is called per sample interval with 4 arguments, ET, BT, Background ET and Background BT
the output script also called if Prog is not selected as input source

Example of a file written in Python called out.py:

#comment: adds the script arguments ET, BT, ETB, BTB to "/tmp/out.txt"
#!/usr/bin/env python

import sys
ET, BT, ETB, BTB = sys.argv[1:]

with open("/tmp/out.txt", "w+") as file:
file.write(f'ET: {ET}, BT: {ET}, ETB: {ETB}, BTB: {BTB};')
+ EXTERNAL PROGRAMS + + + + + +
Link external programs that print temperature when called. This allows to connect meters that use any program language.

Artisan will start the program each sample period. The program output must be to stdout (like when using print statements). The program must exit and must not be persistent.

If only one temperature is provided it will be interpreted as BT. If more than one temperature is provided the values are order dependent with ET first and BT second.

Data may also be provided to the "Program" extra devices. Extra device "Program" are the first two values, typically ET and BT. "Program 34" are the third and fourth values. Up to 10 values may be supplied.


Example of output needed from program for single temperature (BT):
"100.4" (note: "" not needed)

Example of output needed from program for double temperature (ET,BT)
"200.4,100.4" (note: temperatures are separated by a comma "ET,BT")

Example of output needed from program for double temperature (ET,BT) and extra devices (Program and Program 34)
"200.4,100.4,312.4,345.6,299.0,275.5"
+ + + + + +
Example of a file written in Python called test.py:

#comment: print a string with two numbers separated by a comma
#!/usr/bin/env python
print("237.1,100.4")

Note: In many cases the path to the Python or other language executatable should be provided along with the external program path. On Windows it is advised to enclose the paths with quotation marks if there are any spaces, and use forward slashes '/' in the path.
"C:/Python38-64/python.exe" "c:/scripts/test.py"

Under Output a script can be specified which is called per sample interval with 4 arguments, ET, BT, Background ET and Background BT
the output script also called if Prog is not selected as input source

Example of a file written in Python called out.py:

#comment: adds the script arguments ET, BT, ETB, BTB to "/tmp/out.txt"
#!/usr/bin/env python

import sys
ET, BT, ETB, BTB = sys.argv[1:]

with open("/tmp/out.txt", "w+") as file:
file.write(f'ET: {ET}, BT: {ET}, ETB: {ETB}, BTB: {BTB};')
diff --git a/doc/help_dialogs/Output_html/s7_help.html b/doc/help_dialogs/Output_html/s7_help.html index c16bf40a3..633830658 100644 --- a/doc/help_dialogs/Output_html/s7_help.html +++ b/doc/help_dialogs/Output_html/s7_help.html @@ -1,33 +1,33 @@ - PORTS CONFIGURATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S7 SETTINGS
The Siemens S7 is respecting the host IP and port.
The inputs 1+2 configure the S7 device, inputs 3+4 configure the S7_34 device and so on.
Inputs with the area set to the empty input are turned off.
Factors 1/10 and 1/100 can be set as dividers to recreate decimals of floats transported as integers multiplied by 10 or 100. Eg. a value of 145.2 might be transmitted as 1452, which is turned back into 145.2 by the 1/10 divider.
Temperature readings are automatically converted based on the specified unit per input channel.
If mode is set to C or F, readings are automatically converted to the temperature unit set for display.
The PID Control dialog can operate a connected PID slave using the given PID registers to set the p-i-d parameters and the set value (SV). S7 commands can be specified to turn the PID slave on and off from that PID Control dialog. See the help page in the Events Dialog for documentation of available S7 write commands.
The Scan button opens a simple MODBUS scanner to search for data holding registers in the connected device.
Refer to the User Manual of your MODBUS device for information specific to the setup required for your device.
+ PORTS CONFIGURATION + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S7 SETTINGS
The Siemens S7 is respecting the host IP and port.
The inputs 1+2 configure the S7 device, inputs 3+4 configure the S7_34 device and so on.
Inputs with the area set to the empty input are turned off.
Factors 1/10 and 1/100 can be set as dividers to recreate decimals of floats transported as integers multiplied by 10 or 100. Eg. a value of 145.2 might be transmitted as 1452, which is turned back into 145.2 by the 1/10 divider.
Temperature readings are automatically converted based on the specified unit per input channel.
If mode is set to C or F, readings are automatically converted to the temperature unit set for display.
The PID Control dialog can operate a connected PID slave using the given PID registers to set the p-i-d parameters and the set value (SV). S7 commands can be specified to turn the PID slave on and off from that PID Control dialog. See the help page in the Events Dialog for documentation of available S7 write commands.
The Scan button opens a simple MODBUS scanner to search for data holding registers in the connected device.
Refer to the User Manual of your MODBUS device for information specific to the setup required for your device.
diff --git a/doc/help_dialogs/Output_html/symbolic_help.html b/doc/help_dialogs/Output_html/symbolic_help.html index 5c7146852..8d38c3002 100644 --- a/doc/help_dialogs/Output_html/symbolic_help.html +++ b/doc/help_dialogs/Output_html/symbolic_help.html @@ -1,488 +1,488 @@ - SYMBOLIC VARIABLES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SymbolDescriptionCan shift?
(see below)
tAbsolute time (seconds) from begin of recording (not only the time after CHARGE!)Yes
bAbsolute time (seconds) from begin of recording of the background profileYes
xCurrent channel reading (not available in the Plotter) 
Y1ET valueYes
Y2BT valueYes
Y3Extra #1 T1 valueYes
Y4Extra #1 T2 valueYes
Y5Extra #2 T1 valueYes
Y6Extra #2 T2 valueYes
......and so forthYes
B1ET backgroundYes
B2BT backgroundYes
B3ExtraBackground #1-AYes
B4ExtraBackground #1-BYes
B5ExtraBackground #2-AYes
......and so forthYes
T1ET tare value 
T2BT tare value 
T3Extra Device #1 channel 1 tare value 
T4Extra Device #1 channel 2 tare value 
T5Extra Device #2 channel 1 tare value 
......and so forth 
E1Last event value of the first event type 
E2Last event value of the second event type 
E3Last event value of the third event type 
E4Last event value of the fourth event type 
   
R1ET rate of riseYes
R2BT rate of riseYes
RB1Background ET rate of riseYes
RB2Background BT rate of riseYes


SHIFTED SYMBOLIC VARIABLES - - - - - -
The symbolic variables t, b, Y<n>, B<n> and R<n> evaluate to the current value of a sequence of values that define a roast profile. To access earlier or later values one can apply a shift value.

For example, while "Y2" returns the current bean temperature (BT), "Y2[-1]" returns the previous BT temperature and "Y2[-2]" the one before that. Formulas used in the Plotter are applied in sequence to all values, thus there "Y2" points to the current BT temperature processed, "Y2[-1]" the previous BT temperature processed and "Y2[+1]" the next BT temperature to be processed. A positive shift is only available in the Plotter, obviously not during recording.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExampleDescription
t[+1]Time one index ahead (plotter only)
t[-3]Time three indexes delayed
Y1[-2]ET value delayed by 2 indexes
Y2[+1]BT value index advanced by one index (plotter only)
B4[-6]ExtraBackground #1-B delayed 6 indexes
B5[+2]ExtraBackground #2-A advanced 2 indexes (plotter only)
R1[-2]ET rate of rise delayed two indexes


INDEXED SYMBOLIC VARIABLES - - - - - - - - - - - - -
SymbolDescription
t, b, Y<n>, B<n> and R<n>Previously recorded data assigned to the symbolic variables t, b, Y<n>, B<n> and R<n> can also directly accessed by index. "Y2{0}" evaluates to the first recorded bean temperature (BT) and "Y2{CHARGE}" to the bean temperature at CHARGE. Additionally, the symbolic variable b can be used to access the recording time at a certain index of the background profile. Thus "b{CHARGE}" returns the recording time at CHARGE of the background profile.


AXIS MAPPING - - - - - - - - - - - - - - - - -
SymbolDescription
kScaling factor from RoR to Temp axis. The range of the temperature scale divided by the range of the delta scale.
oOffset from RoR to Temp axis.
- - - - - -
Note: RoR values r can be scaled to the temperature axis using a linear approximation of the form "r*k + o". As the variables k and o depend on the actual axis settings which can be changed by the user without triggering a recomputation, those variable are less useful for use in a recording, but useful in the Plotter to plot w.r.t. the RoR y-axis instead of the temperature y-axis.


EVENT INDEX and TIME DELTA - - - - - - - - - - - - - - - - - - - - - - - - -
SymbolDescription
CHARGE, DRY, FCs, FCe, SCs, SCe, DROPIndex of the corresponding event of the profile to retrieve time and values from the corresponding data structures. Evaluates to -1 if not set.
bCHARGE, bDRY, bFCs, bFCe, bSCs, bSCe, bDROPIndex of the corresponding event of the background profile to retrieve time and values from the corresponding data structures. Evaluates to -1 if not set.
  
dCHARGE, dDRY, dFCs, dFCe, dSCs, dSCe, dDROPTime distance in seconds after the corresponding event. Thus dCHARGE is bound to the current roast time (after CHARGE) in seconds while t is bound to the time in seconds from the start of the recording.


AREA UNDER THE CURVE (AUC) - - - - - - - - - - - - - - - - - - - - -
SymbolDescription
AUCbaseAUC base temperature (could be from the selected event, if set)
AUCtargetAUC target value (could be from the background profile, if set)
AUCvaluethe current AUC value. -1 if none available.


PREDICTIONS - - - - - - - - - - - - - - - - -
SymbolDescription
pDRYPrediction of the time distance to the DRY event based on the current RoR. Evaluates to -1 on negative RoR and to 0 if the DRY event is already set.
pFCsSame as pDRY, just for the FCs event.
- - - - - -
Note: The same rules as for the corresponding PhasesLCDs apply to pDRY and pFCs:

If there is no background profile the DRY or FCs bean temperature used for the prediction is taken from the Config>Phases setup.

If there is a background profile and there is DRY or FCs event in the background profile, the DRY or FCs bean temperature used for the prediction is taken from the background profile.

Exception to the above for DRY only: if AutoDRY is checked the DRY temperature used for the prediction is taken from the Config>Phases setup. This does not apply to FCs and AutoFCs.

The prediction value is the calculated time in seconds to reach the DRY or FCs temperature.


AMBIENT - - - - - - - - - - - - - - - - - - - - -
SymbolDescription
aTMPambient temperature (default 0)
aHUMambient humidity (default 0)
aPREambient pressure (default 0)
- - - - - -
Note: The data is (re-)sampled some seconds after the start of recording


ROAST PROPERTIES - - - - - - - - - - - - - - - - - - - - -
SymbolDescription
WEIGHTinbatch size (g)
MOISTUREingreen moisture (%)
TEMPunittemperature unit (Celsius: 0, Fahrenheit: 1)


EXPRESSIONS - - - - - - - - - - - - -
ExpressionDescription
(<true-expr> if <cond> else <false-expr>)Conditional. Evaluates to the value of the expression <true-expr> if the condition <cond> holds, otherwise to the value of the expression <false-expr>. The rules of Python are applied to decide if a value holds or not. Thus the boolean values "True" and "False" have the obvious semantic. Any number unequal to 0 evaluates to True and 0 evaluates to False. The value "None" is also evaluated to False.


MATHEMATICAL FORMULAS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FormulaDescription
abs(x)Return the absolute value of x.
acos(x)Return the arc cosine (measured in radians) of x.
asin(x)Return the arc sine (measured in radians) of x.
atan(x)Return the arc tangent (measured in radians) of x.
cos(x)Return the cosine of x (measured in radians).
degrees(x)Convert angle x from radians to degrees.
exp(x)Return e raised to the power of x.
log(x[, base])Return the logarithm of x to the given base.
min(x1,...,xn)Return the minimum of the given values.
max(x1,...,xn)Return the maximum of the given values.
pow(x, y)Return x**y (x to the power of y).
radians(x)Convert angle x from degrees to radians.
sin(x)Return the sine of x (measured in radians).
sqrt(x)Return the square root of x.
tan(x)Return the tangent of x (measured in radians).
bit(n,x)Return 1 if the bit n of value x (interpreted as integer) is set, otherwise 0.


MATHEMATICAL CONSTANTS - - - - - - - - - - - - - - - - -
SymbolValue
e2.71828182845904
pi3.14159265358979


PLOTTER EXTENSIONS - - - - - -
Note: This section applies only to the Plotter
Using math formulas in the plotter also allows to use the symbolic variables P and F (see Signals, Symbolic Assignments and the Plotter).
- - - - - - - - - - - - - - - - -
SymbolDescription
P1...P9The variables P1,..,P9 represent the results from plot #1,..,#9. You can perform calculations in a later plot on variables of an earlier plot. That way, the plot variables P1,..,P9 allow the cascading or intermediate results. For example, plot #3 can refer to the results of plot 1 using the variable P1.
F1...F9F1 refers to the previous result of the actual formula to realize a feedback loop. This is useful in filter designs. Similarly, F2 refers to the second previous result etc.
+ SYMBOLIC VARIABLES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolDescriptionCan shift?
(see below)
tAbsolute time (seconds) from begin of recording (not only the time after CHARGE!)Yes
bAbsolute time (seconds) from begin of recording of the background profileYes
xCurrent channel reading (not available in the Plotter) 
Y1ET valueYes
Y2BT valueYes
Y3Extra #1 T1 valueYes
Y4Extra #1 T2 valueYes
Y5Extra #2 T1 valueYes
Y6Extra #2 T2 valueYes
......and so forthYes
B1ET backgroundYes
B2BT backgroundYes
B3ExtraBackground #1-AYes
B4ExtraBackground #1-BYes
B5ExtraBackground #2-AYes
......and so forthYes
T1ET tare value 
T2BT tare value 
T3Extra Device #1 channel 1 tare value 
T4Extra Device #1 channel 2 tare value 
T5Extra Device #2 channel 1 tare value 
......and so forth 
E1Last event value of the first event type 
E2Last event value of the second event type 
E3Last event value of the third event type 
E4Last event value of the fourth event type 
   
R1ET rate of riseYes
R2BT rate of riseYes
RB1Background ET rate of riseYes
RB2Background BT rate of riseYes


SHIFTED SYMBOLIC VARIABLES + + + + + +
The symbolic variables t, b, Y<n>, B<n> and R<n> evaluate to the current value of a sequence of values that define a roast profile. To access earlier or later values one can apply a shift value.

For example, while "Y2" returns the current bean temperature (BT), "Y2[-1]" returns the previous BT temperature and "Y2[-2]" the one before that. Formulas used in the Plotter are applied in sequence to all values, thus there "Y2" points to the current BT temperature processed, "Y2[-1]" the previous BT temperature processed and "Y2[+1]" the next BT temperature to be processed. A positive shift is only available in the Plotter, obviously not during recording.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExampleDescription
t[+1]Time one index ahead (plotter only)
t[-3]Time three indexes delayed
Y1[-2]ET value delayed by 2 indexes
Y2[+1]BT value index advanced by one index (plotter only)
B4[-6]ExtraBackground #1-B delayed 6 indexes
B5[+2]ExtraBackground #2-A advanced 2 indexes (plotter only)
R1[-2]ET rate of rise delayed two indexes


INDEXED SYMBOLIC VARIABLES + + + + + + + + + + + + +
SymbolDescription
t, b, Y<n>, B<n> and R<n>Previously recorded data assigned to the symbolic variables t, b, Y<n>, B<n> and R<n> can also directly accessed by index. "Y2{0}" evaluates to the first recorded bean temperature (BT) and "Y2{CHARGE}" to the bean temperature at CHARGE. Additionally, the symbolic variable b can be used to access the recording time at a certain index of the background profile. Thus "b{CHARGE}" returns the recording time at CHARGE of the background profile.


AXIS MAPPING + + + + + + + + + + + + + + + + +
SymbolDescription
kScaling factor from RoR to Temp axis. The range of the temperature scale divided by the range of the delta scale.
oOffset from RoR to Temp axis.
+ + + + + +
Note: RoR values r can be scaled to the temperature axis using a linear approximation of the form "r*k + o". As the variables k and o depend on the actual axis settings which can be changed by the user without triggering a recomputation, those variable are less useful for use in a recording, but useful in the Plotter to plot w.r.t. the RoR y-axis instead of the temperature y-axis.


EVENT INDEX and TIME DELTA + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolDescription
CHARGE, DRY, FCs, FCe, SCs, SCe, DROPIndex of the corresponding event of the profile to retrieve time and values from the corresponding data structures. Evaluates to -1 if not set.
bCHARGE, bDRY, bFCs, bFCe, bSCs, bSCe, bDROPIndex of the corresponding event of the background profile to retrieve time and values from the corresponding data structures. Evaluates to -1 if not set.
  
dCHARGE, dDRY, dFCs, dFCe, dSCs, dSCe, dDROPTime distance in seconds after the corresponding event. Thus dCHARGE is bound to the current roast time (after CHARGE) in seconds while t is bound to the time in seconds from the start of the recording.


AREA UNDER THE CURVE (AUC) + + + + + + + + + + + + + + + + + + + + +
SymbolDescription
AUCbaseAUC base temperature (could be from the selected event, if set)
AUCtargetAUC target value (could be from the background profile, if set)
AUCvaluethe current AUC value. -1 if none available.


PREDICTIONS + + + + + + + + + + + + + + + + +
SymbolDescription
pDRYPrediction of the time distance to the DRY event based on the current RoR. Evaluates to -1 on negative RoR and to 0 if the DRY event is already set.
pFCsSame as pDRY, just for the FCs event.
+ + + + + +
Note: The same rules as for the corresponding PhasesLCDs apply to pDRY and pFCs:

If there is no background profile the DRY or FCs bean temperature used for the prediction is taken from the Config>Phases setup.

If there is a background profile and there is DRY or FCs event in the background profile, the DRY or FCs bean temperature used for the prediction is taken from the background profile.

Exception to the above for DRY only: if AutoDRY is checked the DRY temperature used for the prediction is taken from the Config>Phases setup. This does not apply to FCs and AutoFCs.

The prediction value is the calculated time in seconds to reach the DRY or FCs temperature.


AMBIENT + + + + + + + + + + + + + + + + + + + + +
SymbolDescription
aTMPambient temperature (default 0)
aHUMambient humidity (default 0)
aPREambient pressure (default 0)
+ + + + + +
Note: The data is (re-)sampled some seconds after the start of recording


ROAST PROPERTIES + + + + + + + + + + + + + + + + + + + + +
SymbolDescription
WEIGHTinbatch size (g)
MOISTUREingreen moisture (%)
TEMPunittemperature unit (Celsius: 0, Fahrenheit: 1)


EXPRESSIONS + + + + + + + + + + + + +
ExpressionDescription
(<true-expr> if <cond> else <false-expr>)Conditional. Evaluates to the value of the expression <true-expr> if the condition <cond> holds, otherwise to the value of the expression <false-expr>. The rules of Python are applied to decide if a value holds or not. Thus the boolean values "True" and "False" have the obvious semantic. Any number unequal to 0 evaluates to True and 0 evaluates to False. The value "None" is also evaluated to False.


MATHEMATICAL FORMULAS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FormulaDescription
abs(x)Return the absolute value of x.
acos(x)Return the arc cosine (measured in radians) of x.
asin(x)Return the arc sine (measured in radians) of x.
atan(x)Return the arc tangent (measured in radians) of x.
cos(x)Return the cosine of x (measured in radians).
degrees(x)Convert angle x from radians to degrees.
exp(x)Return e raised to the power of x.
log(x[, base])Return the logarithm of x to the given base.
min(x1,...,xn)Return the minimum of the given values.
max(x1,...,xn)Return the maximum of the given values.
pow(x, y)Return x**y (x to the power of y).
radians(x)Convert angle x from degrees to radians.
sin(x)Return the sine of x (measured in radians).
sqrt(x)Return the square root of x.
tan(x)Return the tangent of x (measured in radians).
bit(n,x)Return 1 if the bit n of value x (interpreted as integer) is set, otherwise 0.


MATHEMATICAL CONSTANTS + + + + + + + + + + + + + + + + +
SymbolValue
e2.71828182845904
pi3.14159265358979


PLOTTER EXTENSIONS + + + + + +
Note: This section applies only to the Plotter
Using math formulas in the plotter also allows to use the symbolic variables P and F (see Signals, Symbolic Assignments and the Plotter).
+ + + + + + + + + + + + + + + + +
SymbolDescription
P1...P9The variables P1,..,P9 represent the results from plot #1,..,#9. You can perform calculations in a later plot on variables of an earlier plot. That way, the plot variables P1,..,P9 allow the cascading or intermediate results. For example, plot #3 can refer to the results of plot 1 using the variable P1.
F1...F9F1 refers to the previous result of the actual formula to realize a feedback loop. This is useful in filter designs. Similarly, F2 refers to the second previous result etc.
diff --git a/doc/help_dialogs/Output_html/transposer_help.html b/doc/help_dialogs/Output_html/transposer_help.html index ff1ee782b..9b2fc0adf 100644 --- a/doc/help_dialogs/Output_html/transposer_help.html +++ b/doc/help_dialogs/Output_html/transposer_help.html @@ -1,19 +1,19 @@ - TRANSPOSER - - - - - -
The Transposer allows to map the current profile w.r.t. the time and temperature axis by setting targets time and temperature at major events like yellow point (DRY END) or first crack (FC START) or for time transformations also by target phases duration. Temperature transformation are only applied to the bean temperature (BT) curve while time transformations are applied to the whole profile.

Three different mapping methods are available to compute from the current profile and the given targets a resulting profile. The linear and quadratic mappings are continuous functions while the discrete option is defined stepwise between the given source/target pairs and extended at the borders

Pressing the "Apply" button applies the current computed mapping to the loaded profile for inspection. "Reset" returns to the original profile shape. Leaving the Transposer with "OK" applies the current mapping to the profile. Leaving the Transposer with "Cancel" returns to the unchanged initially loaded profile.


EXAMPLE 1: ADJUST TOTAL ROAST TIME - - - - - -
You might want to re-roast a profile, but extended/restricted to a total length of 10:00.

Load the profile and start the Transposer under Tools. Enter our target roast time of "10:00" minutes into the target DROP field under Time and select "linear" as mapping. Check the resulting times of the main events in the time tables last row, press "Apply" to view the transposed profile in the graph. If you are happy with the result, press "OK" and save the newly generated transposed profile such that you can use it as a template for future roasts.


EXAMPLE 2: MAP BETWEEN TWO ROASTING MACHINES - - - - - -
Transpose temperature readings from your smaller machine to your larger machine assuming on your larger machine the DRY and FC START events happen at different temperatures than on your smaller one.

Load the profile recorded on the smaller machine and open the Transposer. Select the linear mapping and put the DRY and FC START target temperatures as observed on your larger machine into the into the corresponding fields under BT. Underneath the table you see the calculated symbolic formula that can be copy-pasted into the BT symbolic formula under Config >> Devices to adjust the computed mapping automatically while roasting on your smaller machine to see the temperature reading as you expect them on the larger machine.
+ TRANSPOSER + + + + + +
The Transposer allows to map the current profile w.r.t. the time and temperature axis by setting targets time and temperature at major events like yellow point (DRY END) or first crack (FC START) or for time transformations also by target phases duration. Temperature transformation are only applied to the bean temperature (BT) curve while time transformations are applied to the whole profile.

Three different mapping methods are available to compute from the current profile and the given targets a resulting profile. The linear and quadratic mappings are continuous functions while the discrete option is defined stepwise between the given source/target pairs and extended at the borders

Pressing the "Apply" button applies the current computed mapping to the loaded profile for inspection. "Reset" returns to the original profile shape. Leaving the Transposer with "OK" applies the current mapping to the profile. Leaving the Transposer with "Cancel" returns to the unchanged initially loaded profile.


EXAMPLE 1: ADJUST TOTAL ROAST TIME + + + + + +
You might want to re-roast a profile, but extended/restricted to a total length of 10:00.

Load the profile and start the Transposer under Tools. Enter our target roast time of "10:00" minutes into the target DROP field under Time and select "linear" as mapping. Check the resulting times of the main events in the time tables last row, press "Apply" to view the transposed profile in the graph. If you are happy with the result, press "OK" and save the newly generated transposed profile such that you can use it as a template for future roasts.


EXAMPLE 2: MAP BETWEEN TWO ROASTING MACHINES + + + + + +
Transpose temperature readings from your smaller machine to your larger machine assuming on your larger machine the DRY and FC START events happen at different temperatures than on your smaller one.

Load the profile recorded on the smaller machine and open the Transposer. Select the linear mapping and put the DRY and FC START target temperatures as observed on your larger machine into the into the corresponding fields under BT. Underneath the table you see the calculated symbolic formula that can be copy-pasted into the BT symbolic formula under Config >> Devices to adjust the computed mapping automatically while roasting on your smaller machine to see the temperature reading as you expect them on the larger machine.
diff --git a/doc/help_dialogs/Script/pyproject.toml b/doc/help_dialogs/Script/pyproject.toml new file mode 100644 index 000000000..7a4a5d649 --- /dev/null +++ b/doc/help_dialogs/Script/pyproject.toml @@ -0,0 +1,368 @@ +# Copied from artisan/src/pyporject.toml +# Modified +# [tool.mypy] +# files = ["xlsx_to_artisan_help.py"] +# and +# [tool.pyright] +# include = [] +# exclude = [] + +[project] +name = 'Artisan' +dynamic = ['version'] +description = "Artisan is a software that helps coffee roasters record, analyze, and control roast profiles." +readme = {file = 'README.txt', content-type='text/markdown'} +authors = [ + {name = 'Rafael Cobo'}, + {name = 'Marko Luther'}, + {name = 'Dave Baxter'} +] +maintainers = [ + {name = 'Marko Luther'}, + {name = 'Dave Baxter'} +] +license = {file = 'LICENSE'} +requires-python = '>=3.8' +keywords = ['roasting', 'roast logging', 'speciality coffee'] +classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + "Operating System :: Windows", + "Operating System :: MacOS", + "Operating System :: POSIX :: Linux", + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3 :: Only', + 'Programming Language :: Python :: Implementation :: CPython', + 'Topic :: Other/Nonlisted Topic' +] + +[project.urls] +'Homepage' = 'https://artisan-scope.org/' +'Documentation' = 'https://artisan-scope.org/docs/quick-start-guide/' +'Repository' = 'https://github.com/artisan-roaster-scope/artisan' +'Issue Tracker' = 'https://github.com/artisan-roaster-scope/artisan/issues' +'Changelog' = 'https://github.com/artisan-roaster-scope/artisan/blob/master/wiki/ReleaseHistory.md' + + +## black + +[tool.black] +line-length = 100 +target-version = ['py38'] +include = '\.pyi?$' +extend-exclude = ''' +# A regex preceded with ^/ will apply only to files and directories +# in the root of the project. +^/foo.py # exclude a file named foo.py in the root of the project (in addition to the defaults) +''' + +## pylint conf + +[tool.pylint.MASTER] +load-plugins = [ +# 'pylint.extensions.bad_builtin', # suggest comprehension over filter/join/map + 'pylint.extensions.check_elif', +# 'pylint.extensions.code_style', # suggests the := operator; NOT YET + 'pylint.extensions.comparison_placement', +# 'pylint.extensions.confusing_elif', # nested if => functions; NOT YET + 'pylint.extensions.docparams', + 'pylint.extensions.docstyle', + 'pylint.extensions.eq_without_hash', + 'pylint.extensions.for_any_all', + 'pylint.extensions.overlapping_exceptions', +# 'pylint.extensions.private_import', + 'pylint.extensions.set_membership', + 'pylint.extensions.typing', +# 'pylint.extensions.redefined_variable_type', # NOT YET +# 'pylint.extensions.mccabe', # complexity rating for functions; NOT YET + 'pylint.extensions.no_self_use' +] +ignore-paths = [ "^uic/.*$", + "^build/.*$", + "^dist/.*$", + "^proto/.*$", + "^test/.*$" ] + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use. +jobs = "0" + +# Minimum supported python version +py-version = "3.8" + +# Pickle collected data for later comparisons. +persistent = "no" + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list='''PyQt6''' + +[tool.pylint.'MESSAGES CONTROL'] + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=''' + line-too-long, + too-many-lines, + trailing-whitespace, + missing-final-newline, + trailing-newlines, + multiple-statements, + multiple-imports, + wrong-import-order, + ungrouped-imports, + wrong-import-position, + useless-import-alias, + import-outside-toplevel, + empty-docstring, + missing-module-docstring, + missing-class-docstring, + missing-function-docstring, + invalid-name, + too-many-statements, + too-many-branches, + too-many-ancestors, + too-many-instance-attributes, + too-few-public-methods, + too-many-public-methods, + too-many-return-statements, + too-many-branches, + too-many-arguments, + too-many-locals, + too-many-boolean-expressions, + too-many-nested-blocks, + too-many-positional-arguments, + cyclic-import, + duplicate-code, +''' + +# raw-checker-failed, +# bad-inline-option, +# locally-disabled, +# file-ignored, +# suppressed-message, +# useless-suppression, +# deprecated-pragma, +# use-symbolic-message-instead, +# wrong-spelling-in-comment, +# wrong-spelling-in-docstring, +# invalid-characters-in-docstring, +# unnecessary-dunder-call, +# bad-file-encoding, +# bad-classmethod-argument, +# bad-mcs-method-argument, +# bad-mcs-classmethod-argument, +# single-string-used-for-slots, +# unnecessary-lambda-assignment, +# unnecessary-direct-lambda-call, +# non-ascii-name, +# non-ascii-module-import, + +# superfluous-parens, +# mixed-line-endings, +# unexpected-line-ending-format, + +# unneeded-not, +# consider-using-enumerate, +# consider-iterating-dictionary, +# consider-using-dict-items, +# use-maxsplit-arg, +# use-sequence-for-iteration, +# consider-using-f-string, +# use-implicit-booleaness-not-len, +# use-implicit-booleaness-not-comparison, + + +# disallowed-name, +# typevar-name-incorrect-variance, +# typevar-double-variance, +# typevar-name-mismatch, + +# singleton-comparison, +# unidiomatic-typecheck, +# useless-option-value, +# no-classmethod-decorator, +# no-staticmethod-decorator, +# useless-object-inheritance, +# property-with-parameters, +# consider-using-from-import, +# consider-merging-isinstance, +# simplifiable-if-statement, +# redefined-argument-from-local, +# no-else-return, +# consider-using-ternary, +# trailing-comma-tuple, +# stop-iteration-return, +# simplify-boolean-expression, +# inconsistent-return-statements, +# useless-return, +# consider-swap-variables, +# consider-using-join, +# consider-using-in, +# consider-using-get, +# chained-comparison, +# consider-using-dict-comprehension, +# consider-using-set-comprehension, +# simplifiable-if-expression, +# no-else-raise, +# unnecessary-comprehension, +# consider-using-sys-exit, +# no-else-break, +# no-else-continue, +# super-with-arguments, +# simplifiable-condition, +# condition-evals-to-constant, +# consider-using-generator, +# use-a-generator, +# consider-using-min-builtin, +# consider-using-max-builtin, +# consider-using-with, +# unnecessary-dict-index-lookup, +# use-list-literal, +# use-dict-literal, +# unnecessary-list-index-lookup, +# literal-comparison, +# comparison-with-itself, +# comparison-of-constants, +# no-self-use, + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable='''c-extension-no-member,''' + + +## mypy conf + +[tool.mypy] +files = ["xlsx_to_artisan_help.py"] +exclude = ['build', 'dist', 'uic', 'misc'] +python_version = "3.8" + +# Ensure full coverage +check_untyped_defs = true +disallow_incomplete_defs = true +disallow_untyped_calls = true +disallow_untyped_defs = true +disallow_untyped_decorators = true +disallow_any_unimported = false # raises about 100 errors with numpy >= 2.1 + +# Restrict dynamic typing +disallow_any_generics = true +disallow_subclassing_any = true +warn_return_any = true + +# Some more checks +local_partial_types = true +strict_equality = true + +# Know exactly what we're doing +warn_redundant_casts = true +warn_unused_configs = true +warn_unused_ignores = true +warn_unreachable = true +#show_error_codes = true + +# Explicit is better than implicit +no_implicit_optional = true + + +plugins = ["numpy.typing.mypy_plugin"] + +[[tool.mypy.overrides]] +module = ["matplotlib.*", "aiohttp.*", "aiohttp.web.*", "aiohttp_jinja2.*", "libusb_package.*"] +ignore_missing_imports = true + + +[[tool.mypy.overrides]] +module = "uic.*" +follow_imports = 'skip' + + +## ruff conf + +[tool.ruff] +# Enable pycodestyle (`E`), Pyflakes (`F`), Updates ('UP'), flake8-bugbear (`B`) codes by default. +# also flake8-2020 (YTT), flake8-commas (COM), flake8-comprehensions (C4), +# flake8-datetimez (DTZ), flake8-pie (PIE), flake8-raise (RSE), flake8-return (RET), +# flake8-simplify (SIM), flake8-gettext (INT), flake8-unused-arguments (ARG), +# Error (PLE), Refactor (PLR), Warning (PLW) +## next: flake8-use-pathlib (PTH), flake8-print (T20) +lint.select = ["E", "F", "UP", "B", "A", "YTT", "COM", "C4", "DTZ", "PIE", "RSE", "RET", "SIM", "ARG", "PLE", "PLR", "PLW", "INT", "RUF013"] + +output-format = "pylint" # one of: text, json, junit, grouped, github, gitlab, pylint, azure + +# Same as Black. +line-length = 80 + +# Never enforce `E501` (line length violations). +lint.ignore = ["E501", "E741", "E402", "PLR0912", "PLR0913", "PLR0915", "SIM105", "PLR2044", "PLR2004", "PLW0603", "PLR0911", "COM812"] + +# Exclude a variety of commonly ignored directories. +exclude = ["dist", "build", "proto", ".pytype", ".mypy_cache", ".git", ".venv", ".venv_universal", ".venv_arm"] + +# Assume Python 3.8. +target-version = "py38" + +[tool.ruff.lint.per-file-ignores] +"uic/*.py" = ["UP004", "F401", "ARG002"] + + + +## pyright conf + +[tool.pyright] +include = [] +exclude = [] +# ignore = [] + +reportMissingImports = true +reportMissingTypeStubs = false + +pythonVersion = "3.8" +pythonPlatform = "All" + +#typeCheckingMode = "strict" # "off", "basic", "strict" + +# strict disabled checks # "error", "warning", false, true +#reportUnboundVariable = "error" +#reportUnknownParameterType = false +#reportMissingParameterType = false +#reportUnknownMemberType = false +#reportUnknownArgumentType = false +#reportGeneralTypeIssues = false +useLibraryCodeForTypes = false +reportInvalidTypeForm = false # since numpy 2.1 more than 150 errors are reported + + +## pytest conf + +[tool.pytest.ini_options] +minversion = "7.4" +addopts = "-ra -v" +testpaths = [ + "test", +] +pythonpath = [ + "." +] + +[tool.codespell] +skip = '*.ts,./coverage,./build,./dist*,./htmlcov,./*.spec' +count = '' +quiet-level = 3 +ignore-words-list = 'ser,alog,nd,iterm,dout,te,commandi,dout,exitt,currenty,exaust,controle,coment,controle,outweight,everytime,sade,weightIn,weightin' diff --git a/doc/help_dialogs/Script/xlsx_to_artisan_help.py b/doc/help_dialogs/Script/xlsx_to_artisan_help.py index 33b1bc8bd..6e4ba26ad 100644 --- a/doc/help_dialogs/Script/xlsx_to_artisan_help.py +++ b/doc/help_dialogs/Script/xlsx_to_artisan_help.py @@ -1,4 +1,3 @@ -# # ABOUT # Script to take an Excel input file and generate Artisan help dialog code. @@ -15,8 +14,7 @@ # AUTHOR # Dave Baxter, 2023 -''' -Command line: xlsx_to_artisan_help.py |all +'''Command line: xlsx_to_artisan_help.py |all **Note that filename should have no suffix, file name only. The input file is drawn from ../input_files/.xlsx @@ -29,14 +27,14 @@ Excel file format: One Excel file for each help dialog. - One or more tabs, each tab is a seperate table within the same help dialog. + One or more tabs, each tab is a separate table within the same help dialog. The tab name is not important but it will be used to generate the associated PrettyTable table name. Each tab must have the following cells, starting in the upper left cell A1 Title of the table [First row, required] Top Note [Multiple contiguous rows, optional] - Table headers, aka column titles [One row, optional but if provided must include table rows] - Table data rows [Multiple coniguous rows, optional but must follow the table headers] + Table headers, aka column titles [One row, optional but if provided must include table data rows] + Table data rows [Multiple contiguous rows, optional but must follow the table headers] Bottom Note [Multiple contiguous rows, optional] QApplication.translate() is not applied to cells formatted as Italic, formatted with any font color @@ -47,7 +45,7 @@ A single quote at the start of a cell string acts as a flag to Excel that the cell contains text. If the single quote at the start of a string is to be displayed and passed along to the help code it should - be escaped (proceeded) with another single quote. Example, to display the string 'Hello' put ''Hello' + be escaped (preceded) with another single quote. Example, to display the string 'Hello' put ''Hello' into the cell. Single quotes in the middle or end of a string do not need to be escaped. Single blank rows are legal. Consecutive blank rows are interpreted as the end of a table. All cells in @@ -70,7 +68,7 @@ Recent changes: - Single quotes now tolerated -- hacked around the problem: The unicode elipsis \x85 "…" is not properly handled. These seem to get into the Excel file when cut and paste from the blog. +- hacked around the problem: The Unicode ellipsis \x85 "…" is not properly handled. These seem to get into the Excel file when cut and paste from the blog. Must be replaced with three periods "..." in the Excel file. - Alt-Enter in Excel to create newlines now tolerated - adds support for PyQt6 @@ -85,32 +83,33 @@ import sys sys.dont_write_bytecode = True #prevents __pycache__ folder written to help/ +from typing import List, Tuple +from openpyxl.worksheet.worksheet import Worksheet # pylint: disable=unused-import + try: - from PyQt6.QtWidgets import QApplication + from PyQt6.QtWidgets import QApplication # pylint: disable=unused-import except ImportError: - from PyQt5.QtWidgets import QApplication # type: ignore # noqa: F401 + from PyQt5.QtWidgets import QApplication # type: ignore # noqa: F401 # pylint: disable=unused-import from openpyxl import load_workbook -def u(x): - return str(x) ind = ' ' #indent nlind = '\n' + ind #new line plus indent -def translateStr(in_str, group='HelpDlg'): - return "QApplication.translate('" + group + "','" + u(in_str) + "')" +def translateStr(in_str:str, group:str='HelpDlg') -> str: + return "QApplication.translate('" + group + "','" + str(in_str) + "')" -def generateRows(ws): +def generateRows(ws:Worksheet) -> List[List[str]]: all_rows = [] for row in ws.iter_rows(): this_row = [] for cell in row: # insert a nonbreaking space into blank cells to keep the row height homgenous - if cell.value in (None, ''): + if cell.value in {None, ''}: cell_str = "' '" else: if cell.data_type == 's': - cell_value = re.subn(r"'",r''',cell.value) #protect downstream by changing single quotes to double + cell_value = re.subn(r"'",r''',str(cell.value)) #protect downstream by changing single quotes to double cell_value = re.subn(r'\n',r'\\n',cell_value[0]) # do not translate if the cell has italic format or any font color if cell.font.italic or \ @@ -132,26 +131,26 @@ def generateRows(ws): all_rows.append(this_row) return all_rows -def getTitle(all_rows,_,nsheet): +def getTitle(all_rows:List[List[str]],_:Worksheet,nsheet:int) -> str: del _ if nsheet == 0: - title = nlind + 'strlist.append("")' + title = nlind + "strlist.append('')" else: - title = nlind + 'strlist.append("

")' + title = nlind + "strlist.append('

')" title += nlind + 'strlist.append(' + str(all_rows[0][0]) + ')' - title += nlind + 'strlist.append("")' + title += nlind + "strlist.append('
')" return title -def getNotes(all_rows,nrows,tbl_name,notetype='top'): +def getNotes(all_rows:List[List[str]],nrows:int,tbl_name:str,notetype:str='top') -> Tuple[str,int]: tbl_name = tbl_name + notetype tbl_notes = '' notes = [] notes_len = 0 for idx in range(1, nrows): if notetype == 'top': - gotnote = re.subn(r'topnote:|tn:','',str(all_rows[idx][0]),0,re.IGNORECASE) + gotnote = re.subn(r'topnote:|tn:','',str(all_rows[idx][0]),count=0,flags=re.IGNORECASE) else: - gotnote = re.subn(r'botnote:|bn:|bottomnote:','',str(all_rows[idx][0]),0,re.IGNORECASE) + gotnote = re.subn(r'botnote:|bn:|bottomnote:','',str(all_rows[idx][0]),count=0,flags=re.IGNORECASE) if gotnote[1]: notes.append(gotnote[0]) notes_len += 1 @@ -161,27 +160,31 @@ def getNotes(all_rows,nrows,tbl_name,notetype='top'): return tbl_notes, notes_len -def getFieldnames(rows,tbl_name): +def getFieldnames(rows:List[str],tbl_name:str) -> str: this_row = ','.join(rows) - return u(tbl_name) + '.field_names = [' + str(this_row) + ']' + return str(tbl_name) + '.field_names = [' + str(this_row) + ']' -def getAddrows(all_rows,tbl_name): +def getAddrows(all_rows:List[List[str]],tbl_name:str) -> str: addrows = '' for idx, row in enumerate(all_rows): this_row = ','.join(row) if idx > 0: addrows += nlind - addrows += u(tbl_name) + '.add_row([' + this_row + '])' + addrows += str(tbl_name) + '.add_row([' + this_row + '])' return addrows -def buildpyCode(filename_in): - data_table_attributes = '"width":"100%","border":"1","padding":"1","border-collapse":"collapse"' - note_table_attributes = '"width":"100%","border":"1","padding":"1","border-collapse":"collapse"' +def buildpyCode(filename_in:str) -> str: + data_table_attributes = "'width':'100%','border':'1','padding':'1','border-collapse':'collapse'" + note_table_attributes = "'width':'100%','border':'1','padding':'1','border-collapse':'collapse'" outstr = '' + + outstr += '# This is an autogenerated file -- Do not edit' + outstr += '\n' + '# Edit the source file in artisan/doc/help_dialogs/Input_files' + outstr += '\n' + '# then execute artisan/doc/help_dialogs/Script/xlsx_to_artisan_help.py' # wrap the output with python code to allow it to execute - outstr += 'import prettytable' + outstr += '\n' + 'import prettytable' outstr += '\n' + 'import re' outstr += '\n' + 'try:' outstr += '\n' + ' from PyQt6.QtWidgets import QApplication # @Reimport @UnresolvedImport @UnusedImport # pylint: disable=import-error' @@ -256,16 +259,16 @@ def buildpyCode(filename_in): outstr += nlind + 'strlist.append(' + tbl_name + 'bottom' + '.get_html_string(attributes={' + note_table_attributes + '}))' # finalize outstr - py code - outstr += nlind + 'strlist.append("")' + outstr += nlind + "strlist.append('')" - outstr += nlind + 'helpstr = "".join(strlist)' + outstr += nlind + "helpstr = ''.join(strlist)" # clean any html entities that get escaped by PrettyTable in its html output - outstr += nlind + 'return re.sub(r"&", r"&",helpstr)' + outstr += nlind + "return re.sub(r'&', r'&',helpstr)" + "\n" return outstr -def writepyFile(filename_in, filename_out): +def writepyFile(filename_in:str, filename_out:str) -> None: outstr = buildpyCode(filename_in) # write outstr (py code) to the specified filename @@ -273,14 +276,14 @@ def writepyFile(filename_in, filename_out): file_object.write(outstr) sleep(0.01) #allow the previous write to settle, resolves appveyor file read fail -def writehtmlFile(_fname_in, filename_out, filename_htm): +def writehtmlFile(_fname_in:str, filename_out:str, filename_htm:str) -> None: del _fname_in importfile = splitext(split(filename_out)[1])[0] importpath = abspath(split(filename_out)[0]) sys.path.append(importpath) var = importlib.import_module(importfile) - htmstr = var.content() + htmstr = var.content() + '\n' # write htmlstr (html) to the specified filename with open(filename_htm,'w', encoding='utf-8') as file_object: diff --git a/src/help/alarms_help.py b/src/help/alarms_help.py index 4c6a20513..d7f30e5ac 100644 --- a/src/help/alarms_help.py +++ b/src/help/alarms_help.py @@ -1,86 +1,89 @@ -import prettytable -import re -try: - from PyQt6.QtWidgets import QApplication # @Reimport @UnresolvedImport @UnusedImport # pylint: disable=import-error -except Exception: # pylint: disable=broad-except - from PyQt5.QtWidgets import QApplication # type: ignore # @Reimport @UnresolvedImport @UnusedImport - -def content() -> str: - strlist = [] - helpstr = '' # noqa: F841 #@UnusedVariable # pylint: disable=unused-variable - newline = '\n' # noqa: F841 #@UnusedVariable # pylint: disable=unused-variable - strlist.append(' ') - strlist.append('') - strlist.append(QApplication.translate('HelpDlg','ALARMS')) - strlist.append('') - tbl_Alarmstop = prettytable.PrettyTable() - tbl_Alarmstop.header = False - tbl_Alarmstop.add_row([QApplication.translate('HelpDlg','Each alarm is only triggered once.\nAlarms are scanned in order from the top of the table to the bottom.')]) - strlist.append(tbl_Alarmstop.get_html_string(attributes={'width':'100%','border':'1','padding':'1','border-collapse':'collapse'})) - tbl_Alarms = prettytable.PrettyTable() - tbl_Alarms.field_names = [QApplication.translate('HelpDlg','Field'),QApplication.translate('HelpDlg','Description')] - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Nr'),QApplication.translate('HelpDlg','Alarm number for reference.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Status'),QApplication.translate('HelpDlg','Activate or Deactivate the alarm.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','If Alarm'),QApplication.translate('HelpDlg','Alarm triggered only if the alarm with the given number was triggered before. Use 0 for no guard.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','But Not'),QApplication.translate('HelpDlg','Alarm triggered only if the alarm with the given number was not triggered before. Use 0 for no guard.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','From'),QApplication.translate('HelpDlg','Alarm only triggered after the given event.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Time'),QApplication.translate('HelpDlg','If not 00:00, alarm is triggered mm:ss after the event "From" happens.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Source'),QApplication.translate('HelpDlg','The observed temperature source.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Condition'),QApplication.translate('HelpDlg','Alarm is triggered if source rises above or below the specified temperature.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Temp'),QApplication.translate('HelpDlg','The specified temperature limit.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Action'),QApplication.translate('HelpDlg','The action to be triggered if all conditions are fulfilled.')]) - tbl_Alarms.add_row([QApplication.translate('HelpDlg','Description'),QApplication.translate('HelpDlg','Commands for alarms with an action go here. Anything after a '#' character is considered a comment and is ignored when processing the alarm. ')]) - strlist.append(tbl_Alarms.get_html_string(attributes={'width':'100%','border':'1','padding':'1','border-collapse':'collapse'})) - strlist.append('

') - strlist.append(QApplication.translate('HelpDlg','ALARM CONFIGURATION OPTIONS')) - strlist.append('') - tbl_Options = prettytable.PrettyTable() - tbl_Options.field_names = [QApplication.translate('HelpDlg','Option'),QApplication.translate('HelpDlg','Description')] - tbl_Options.add_row([QApplication.translate('HelpDlg','Add'),QApplication.translate('HelpDlg','Adds a new alarm to the bottom of the table.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Insert'),QApplication.translate('HelpDlg','Inserts a new alarm above the selected alarm.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Delete'),QApplication.translate('HelpDlg','Deletes the selected alarm.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Copy Table'),QApplication.translate('HelpDlg','Copy the alarm table in tab separated format to the clipboard. Option or ALT click to copy a tabular format to the clipboard.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','All On'),QApplication.translate('HelpDlg','Enables all alarms.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','All Off'),QApplication.translate('HelpDlg','Disables all alarms.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Load'),QApplication.translate('HelpDlg','Load alarm definition from a file.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Save'),QApplication.translate('HelpDlg','Save the alarm definitions to a file.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Clear'),QApplication.translate('HelpDlg','Clears all alarms from the table.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Help'),QApplication.translate('HelpDlg','Opens this window.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Load from Profile'),QApplication.translate('HelpDlg','when ticked will replace the alarm table when loading a profile with the alarms stored in the profile. If there are no alarms in the profile the alarm table will be cleared.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','Load from Background'),QApplication.translate('HelpDlg','when ticked will replace the alarm table when loading a background profile with the alarms stored in the profile. If there are no alarms in the profile the alarm table will be cleared.')]) - tbl_Options.add_row([QApplication.translate('HelpDlg','PopUp TimeOut'),QApplication.translate('HelpDlg','A PopUp will automatically close after this time if the OK button has not been clicked.')]) - strlist.append(tbl_Options.get_html_string(attributes={'width':'100%','border':'1','padding':'1','border-collapse':'collapse'})) - strlist.append('

') - strlist.append(QApplication.translate('HelpDlg','Alarm Actions')) - strlist.append('') - tbl_Actionstop = prettytable.PrettyTable() - tbl_Actionstop.header = False - tbl_Actionstop.add_row([QApplication.translate('HelpDlg','Enter the Command into the Description field of the Alarm.')]) - strlist.append(tbl_Actionstop.get_html_string(attributes={'width':'100%','border':'1','padding':'1','border-collapse':'collapse'})) - tbl_Actions = prettytable.PrettyTable() - tbl_Actions.field_names = [QApplication.translate('HelpDlg','Action'),QApplication.translate('HelpDlg','Command'),QApplication.translate('HelpDlg','Meaning')] - tbl_Actions.add_row([QApplication.translate('HelpDlg','Pop Up'),QApplication.translate('HelpDlg',''),QApplication.translate('HelpDlg','the text to be displayed in the pop up')]) - tbl_Actions.add_row([QApplication.translate('HelpDlg','Call Program'),QApplication.translate('HelpDlg','A program/script path (absolute or relative)'),QApplication.translate('HelpDlg','start an external program')]) - tbl_Actions.add_row([QApplication.translate('HelpDlg','Event Button'),QApplication.translate('HelpDlg','