{ "cells": [ { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks\n", ".. index::\n", " single: Configuration\n", ".. index::\n", " single: Configuration; Tweaks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tweaks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most of the defaults settings are enough to get started with _DashT_ plug-in and many of the key parameters can be changed using the _Preferences_ dialog. However, under the hood there are many more parameters which one could not possibly put in the _Preferences_ dialog without making it totally confusing and overstuffed. Maybe one day there will be an effort made to create a way to set these \"advanced parameters\" with some Graphical User Interface (GUI) solution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But until that day comes, you can get many things shaped to behave to your liking if you are able to use a text editor: When _OpenCPN_ is not running, open its ini/conf-file and follow the instructions in this chapter to make your modifications." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The _OpenCPN_ configuration file is located in:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Windows `\\ProgramData\\opencpn\\opencpn.ini`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Linux `~/.opencpnp/opencpn.conf`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since we do not want to attempt to replace _OpenCPN_ documentation, please open the _OpenCPN_ user's guide on your computer platform if you cannot find the configuration file from above locations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**NOTE**: It goes without saying - **make a backup copy of the file** before start tweaking with it!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**TIP**: In the same directory you have the _OpenCPN_ log file. If something goes wrong, it is good to take a look at the end of that file where the most recent start-up logs are located. You can search lines having string \"_dashboard_tactics_pi_\" which is used by _DashT_ for its log messages (there are usually only few, but if you do not see any, it means quite likely that _DashT_ never gets loaded by _OpenCPN_)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In below sections we explain by owner and by key the meaning and eventual usage of each key." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Configuration; OpenCPN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## OpenCPN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PlugIns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns]\n", "PluginOrder=ChartDownloader;GRIB;VDR;DashT\n", "LatestCatalogDownloaded=Master\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you do not see here `DashT` in the list there can be an issue with the _OpenCPN_ plug-in manager." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Windows:\n", "```\n", "[PlugIns/dashboard_tactics_pi.dll]\n", "bEnabled=1\n", "```\n", "Linux:\n", "```\n", "[PlugIns/libdashboard_tactics_pi.so]\n", "bEnabled=1\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_dashboard_tactis_pi_ is the name of _DashT_ in the _OpenCPN_ plug-in catalog. If `bEnabled=0` then _DashT_ remains disabled: use _OpenCPN_ plug-in manager instead of attempting to tweak this setting yourself." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### AUI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[AUI]\n", "AUIPerspective=layout2|name=ChartCanvas;caption=;state=768;dir=5;layer=0;row=0;\n", "pos=0;prop=100000;bestw=5;besth=5;minw=298;minh=915;maxw=-1;maxh=-1;floatx=-1;\n", "floaty=-1;floatw=-1;floath=-1|name=DASHT-57881c38-fd95-4000-83bf-3804e5d7179;\n", "caption=AvgWind;state=2098121;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=325;\n", "besth=425;minw=325;minh=425;maxw=-1;maxh=-1;floatx=8;floaty=614;floatw=313;\n", "floath=431|....\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are wondering where _OpenCPN_'s wxWidgets stores the _DashT_ many window positions (in this example, window pane named `AvgWind`), this is the place. There is nothing you can do by editing but if you have issues, you can delete all the entries before the restart and all windows (not only those of _DashT_) will be piled up above each other so that you can rearrange them. If the instrument cluster window pane's ID changes for some reason (by your tweak?), its position will be lost and it will be reopened in the default position." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Configuration; DashT\n", ".. index::\n", " single: Tweaks; DashT" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DashT" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT Dashboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dashboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "Version=2\n", "SpeedometerMax=12\n", "COGDamp=0\n", "SpeedUnit=0\n", "SOGDamp=0\n", "DepthUnit=3\n", "DepthOffset=0\n", "DistanceUnit=0\n", "WindSpeedUnit=0\n", "TemperatureUnit=0\n", "UTCOffset=0\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is recommended to use [Configuration Dialog](../dashinst/dashinst.ipynb#Configuration) which provides full _wxWidgets_ platform specific interface to set these values." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| Version | Leave it as 2 - this is the compatibility flag with the OpenCPN Dashboard sometimes used in the code, you do not want version 1 features (backward compatibility has not been tested) | \n", "| SpeedometerMax | Speedometer maximum numerical value |\n", "| COGDamp | 0 = turns damping off. Value 1 gives 1/2 = 0.5 damping factor = no damping, >0.5 = damping - see below note |\n", "| SpeedUnit | -1 = use OpenCPN setting, 0 = [kts], 1 = [mph], 2 = [km/h], 3 = [m/s] |\n", "| SOGDamp | 0 = turns damping off. Value 1 gives 1/2 = 0.5 damping factor = no damping, >0.5 = damping - see below note |\n", "| DepthUnit | 3 = [m], 4 = [feet], 5 = [Fathoms], 6 = [Inches], 7 = [Centimeters] |\n", "| DepthOffset | 0 = no offset, otherwise offset in **meters** (albeit the dialog asks it in centimeters), can be negative or positive floating point value like 0.5; multiplied internally to match the corresponding _DepthUnit_ selection |\n", "| DistanceUnit | -1 = use OpenCPN setting, 0 = [NMi], 1 = [statute miles], 2 = [km], 3 = [m] |\n", "| WindSpeedUnit | 0 = [kts], 1 = [mph], 2 = [km/h], 3 = [m/s] |\n", "| TemperatureUnit | 0 = Celsius, 1 = Fahrenheit |\n", "| UTCoffset | Divided in 48 steps, from -24 to 24, presenting half an hour offsets from -12:00 to 12:00. Eg. -2 is equivalent of -01:00 |" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; COG/SOGDamp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**NOTE**: About COG/SOG filter value: With all the respect, the built-in Dashboard documentation must be mistaken telling that \"1\" is presenting no filtering; it is _activating_ the filtering code but the filtering is, presumably not altering the signal: `dashboard_pi.cpp: mSOGFilter.setFC(g_iDashSOGDamp ? 1.0 / (2.0*g_iDashSOGDamp) : 0.0);`. If you look at the code of `iirfilter.cpp` the value 0.0 turns the filtering completely off. Here is an excerpt of the description of the `iirfilter`: The parameter is a setting to a single order [inifinite-impulse-response filter](https://en.wikipedia.org/wiki/Infinite_impulse_response): The value defines filter's cutoff frequency. A value of 0.5 is basically no filtering and smaller values decrease the cutoff frequency. If you think of the filter as being \"fast\" or \"slow\" then 0.5 is fastest and smaller values are \"slower\". The _OpenCPN_ Dashboard built-in documentation tells us _\"A typical filter value of 10 seems to work pretty well.\"_. That ends up as $1/(2*10)=0.05$ for the _iirfilter_. If we mark the requested `iirfilter` cut-of value with $v$, and the ini/conf file setting with $a$, then $a=1/(2v)$." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT Fonts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fonts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fonts are quite difficult to tweak but you can try. They get their default values by _wxWidgets_ library's adaptation to the operating system platform on which it is running:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Windows:\n", "```\n", "FontTitle=1;10;-20;0;0;0;400;1;0;0;1;0;0;2;32;Arial\n", "FontData=1;14;-28;0;0;0;400;0;0;0;1;0;0;2;32;Arial\n", "FontLabel=1;8;-16;0;0;0;400;0;0;0;1;0;0;2;32;Arial\n", "FontSmall=1;8;-16;0;0;0;400;0;0;0;1;0;0;2;32;Arial\n", "```\n", "Linux:\n", "```\n", "FontTitle=Sans Italic 10\n", "FontData=Monospace Bold 14\n", "FontLabel=Monospace 8\n", "FontSmall=Monospace 8\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, there is perhaps no need to modify anything here, since the [Configuration Dialog](../dashinst/dashinst.ipynb#Configuration) provides full _wxWidgets_ platform specific interface to set these highly platform specific values." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Instrument fonts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is one tweak possibility provided by _DashT_ compared to the _OpenCPN_ Dashboard plug-in or its forks: we can set the _default_ values and fonts in advance before these are set, in more generic terms. This allows to experiment with what values _wxWidgets_ sets for this operating system. Set the values below to your liking, remove the above fields and start _OpenCPN_ with _DashT_ plug-in enabled:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Fonts]\n", "TitleFontSize=10\n", "TitleFontFamily=SWISS\n", "TitleFontStyle=ITALIC\n", "TitleFontWeight=wxNORMAL\n", "DataFontSize=14\n", "DataFontFamily=TELETYPE\n", "DataFontStyle=NORMAL\n", "DataFontWeight=BOLD\n", "LabelFontSize=8\n", "LabelFontFamily=TELETYPE\n", "LabelFontStyle=NORMAL\n", "LabelFontWeight=NORMAL\n", "SmallFontSize=8\n", "SmallFontFamily=TELETYPE\n", "SmallFontStyle=NORMAL\n", "SmallFontWeight=NORMAL\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Please see for the available values in [wxFont documentation](https://docs.wxwidgets.org/trunk/interface_2wx_2font_8h.html) which is not going to be repeated here (yes, we use the short names, they will not go away)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**NOTE**: the above settings are actually designed to be able to pass the user choice from the Dashboard preferences dialog to the JavaScript-based instruments stylesheets - the instrument styles are CSS/SASS controlled. However, nothing has been implemented yet, so if you change something here, the JavaScript instrument's font will not change, sorry, remains in to-do list." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**TIP**: Meanwhile, please remember that the JavaScript instruments are executed on a kind of a browser window. Depending of the operating system on which you are running you can try to zoom in / zoom out. Typically this is Ctrl-(plus-key) and Ctrl-(minus-key), and Ctrl-(zero-key) to get back to 100% zoom." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT Colors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Colors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tweak allows you to change and experiment with the look of the instruments - other than the baro-, wind- and performance history displays which remains on the white background due to their \"hair-line\" printing by making one pixel-size dots around the canvas (it is not impossible, but really challenging color world...)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Colors]\n", "BackgroundColor=DASHB\n", "ForegroundColor=DASHF\n", "LabelColor=DASHL\n", "RedColor=DASHR\n", "GreenColor=DASHG\n", "IllustrationsColor1=DASH1\n", "IllustrationsColor2=DASH2\n", "NeedleColor=DASHN\n", "SecondNeedleColor=BLUE3\n", "CentralCircleColor=UBLCK\n", "CompassBackgroundColor=COMP1\n", "EmbossedNeedle=1\n", "EmbosNeedleContourColor=UBLCK\n", "ShowRedGreenFace=1\n", "LowDegRedGreenFace=20\n", "HighDegRedGreenFace=50\n", "ForeroundColor=DASHF\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You guessed it right - the colors are coming from _OpenCPN_ and the idea of _OpenCPN_ is to provide - not perhaps the most elegant way - color themes which allows to circulate around the \"day\", \"dusk\" and \"night\" themes. You can find the currently (_OpenCPN_ v5.2) available colors [here](https://github.com/OpenCPN/OpenCPN/blob/69c30afcf7be8398e092ddaff6e434707fcd2e18/src/chart1.cpp#L11105). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is better to stick to _OpenCPN_ defined names for colors so that you respect (at least to some extent) the the \"day\", \"dusk\" and \"night\" themes. An example of such usage is available [here](https://github.com/canne/dashboard_tactics_pi/commit/240850ca8c058bf535ab70fc94824c70938e2020#r39650380). " ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT Dials" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Extra dial tweaks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| EmbossedNeedle | When 1 creates an illusion of an embossed needle, set to 0 if you want the classical, flat one | \n", "| ShowRedGreenFace | Red and green circles, present in some dials can be turned off by setting 0 here |\n", "| LowDegRedGreenFace | If the above remains in 1, then one can set the angle in which the informative red / green circle segments ends | HighDegRedGreenFace | As above but the start angle, the left and right sides cannot be adjusted individually | " ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Configuration; Dashboards" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dashboard index" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`DashboardCount=5` - one thing you need to understand with the _OpenCPN_ and wxWidgets dashboard management using the ini/conf-file is that it does not delete the old dashboard block from the ini/conf-file, it just decreases the counters if you delete a dashboard (a window pane collecting instruments) or an instrument in it. At startup we loop on this counter and search for the following block structures - let's check the anatomy of one of those:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Dashboard3]\n", "Name=DASHT-57881c38-fd95-4000-83bf-43804e5d7179\n", "Caption=AvgWind\n", "Orientation=V\n", "Persistence=1\n", "InstrumentCount=1\n", "Instrument1=73\n", "InstrumentID1=\n", "Instrument2=91\n", "InstrumentID2=71ced54e-9110-4dd7-a778-ec133c11496f\n", "Instrument3=27\n", "InstrumentID3=\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- | \n", "| Name | DASHT-[UID] to make difference from Dashboard instrument panes, prefix is different and UID algorithm more advanced |\n", "| Caption | You can see this in the window pane title and in the Preferences |\n", "| Orientation | V = vertical; H = horizontal |\n", "| Persistence | Badly chosen name since it is more like 'visible by default'; make sure that you have at least one dashboard (window pane) visible, otherwise you need to go to plug-in manager to get hold of the Preferences dialog |\n", "| InstrumentCount | As mentioned this is used to control the actual instruments, not the entries below which can be more numerous than the instrument count - they are never deleted by wxWidgets - maybe there is a way to do it but _OpenCPN_ Dashboard has not considered it necessary (and it certainly is not the end of the world) |\n", "| Instrument1 | The number is the index on which the _OpenCPN_ Dashboard will loop to create instruments on a window pane called \"dashboard\" - the type is an [internal code for instrument type](https://github.com/canne/dashboard_tactics_pi/blob/2d4433843824ae0a479220d1b8f73d1de54fd35f/src/instrument.h#L63), in this case a Tactics Average Wind instrument |\n", "| InstrumentID1 | This instrument is of an old _OpenCPN_ Dashboard type and it does not need a unique identifier |\n", "| Instrument2 | The instrument in this position **was** a _DashT Race Start_ but it is gone now |\n", "| InstrumentID2 | _DashT_ adds an unique ID for all instruments. This is used to store the parameters of a web based instrument, for example by the system's web browser library. **TIP**: to make such an instrument to 'forget' it setting, just change any number in the string to something else! |\n", "\n", "There can be even more of 'forgotten' instruments. If you are really bugged by these, or even 'forgotten' instrument panes you can very well remove them, there is no harm." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; Tactics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DashT/Tactics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**NOTE** _DashT_ attempts to keep full compatibility with _Tactics_ instruments and algorithms; there is no way to guarantee that all parameters are available in both plug-ins. Therefore, if using _DashT_ use this documentation and if you are using _Tactics_ plug-in, use its own documentation. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "CurrentDampingFactor=0.003\n", "LaylineDampingFactor=0.2\n", "LaylineLenghtonChart=5\n", "MinLaylineWidth=2\n", "MaxLaylineWidth=30\n", "LaylineWidthDampingFactor=0.2\n", "ShowLaylinesOnChart=1\n", "ShowCurrentOnChart=1\n", "CMGSynonym=CMG\n", "VMGSynonym=VMG\n", "DataExportSeparator=;\n", "DataExportUTC-ISO8601=0\n", "DataExportClockticks=0\n", "TacticsImportChecked=0\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| CurrentDampingFactor | The layline damping factor determines how fast the laylines react on your course changes, i.e. your COG changes. Low values mean high damping. _DashT_ _Tactics_ recommends values from 0.002 to 0.008 to start your experimenting with. |\n", "| LaylineLenghtonChart | The width of the boat laylines is based on the yawing of the boat (vertical axis), i.e. your COG changes. The idea is to display the COG range where you're sailing to. |\n", "| LaylineLenghtonChart | Length of the boat laylines in [nm] |\n", "| ShowLaylinesOnChart | Toggles laylines visibility as an overlay on the chart canvas. 0 turns them off and 1 back on. |\n", "| ShowCurrentOnChart | Toggles current arrow visibility as an overlay on the chart canvas. 0 turns it off and 1 back on. |\n", "| CMGSynonym | This setting allows you to whatever abbreviation you want for the [self-explanatory vector Tactics algorithms is calculating](../tactics/tactics.ipynb#Vector-graph). Finishing the endless discussions in the forums about the meaning of life, too bad! |\n", "| VMGSynonym | Same reason for the existence of this abbreviation settin. I guess that the author of the mentioned, albeit simple vector chart just got enough of it = do what you want! |\n", "| DataExportSeparator | This is used by all CSV-export functions - such as baro-, wind- and performance history - as separator. Space as separator (not recommended) requires \" \" quotes around it. TAB as separator presents as \"\\t\". All printable characters do not require quotes around them. Maybe you want to stick to semicolon (default) and comma (as file name implies), after all. |\n", "| DataExportUTC-ISO860 | You want to set this to 1 if you plan to import the CSV-file later on some application like a time series database, or perhaps some Python script. The dull second as time accuracy is not enough for them. But for your eyes and for your wristwatch only, you do not need this |\n", "| DataExportClockticks | Same, the aforementioned application types like timestamps. This is the best of it all, milliseconds since EPOCH! (a trivia question: were you born before or after the Unix Epoch?) |\n", "| TacticsImportChecked | This is used only if you have both the excellent and light-weight _Tactics_ plug-in installed together with _DashT_ - you are suggested to import _Tactics_ settings into _DashT_ and you can continue to use _Tactics_ as before, the two will not get mixed |" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; Tactics Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "PolarFile=C:\\\\Program Files (x86)\\\\OpenCPN\\\\plugins\\\\\n", "weather_routing_pi\\\\data\\\\polars\\\\yourboat100.pol\n", "BoatLeewayFactor=10\n", "fixedLeeway=30\n", "UseHeelSensor=0\n", "UseFixedLeeway=0\n", "UseManHeelInput=1\n", "CorrectSTWwithLeeway=0\n", "CorrectAWwithHeel=0\n", "ForceTrueWindCalculation=0\n", "UseSOGforTWCalc=0\n", "ShowWindbarbOnChart=1\n", "ShowPolarOnChart=1\n", "PersistentChartPolarAnimation=1\n", "Heel_5kn_45Degree=5\n", "Heel_5kn_90Degree=8\n", "Heel_5kn_135Degree=5\n", "Heel_10kn_45Degree=8\n", "Heel_10kn_90Degree=10\n", "Heel_10kn_135Degree=11\n", "Heel_15kn_45Degree=25\n", "Heel_15kn_90Degree=20\n", "Heel_15kn_135Degree=13\n", "Heel_20kn_45Degree=20\n", "Heel_20kn_90Degree=16\n", "Heel_20kn_135Degree=15\n", "Heel_25kn_45Degree=25\n", "Heel_25kn_90Degree=20\n", "Heel_25kn_135Degree=20\n", "ExpPolarSpeed=0\n", "ExpCourseOtherTack=0\n", "ExpTargetVMG=0\n", "ExpVMG_CMG_Diff_Gain=0\n", "ExpCurrent=0\n", "NKE_TrueWindTableBug=0\n", "TwaMarkUseShortAvgWind=1\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| PolarFile | (a **single line**, BTW) Your boat's polar, or a polar close to your boat - you get plenty of those with the _weather_routing_pi_ plug-in! See [Tactics Polar file discussion](../tactics/tactics.ipynb#With-Polar) - it is not a bad idea to prepare several of those for your boat, say 90%, 95%, 100% and 105%(!). |\n", "| PolarLookupTableOutputFile | Same as the above but use a `.csv` extension for a comma separated value output file which is built from the above `PolarFile` according the algorithm explained in [Tactics Polar](../tactics/tactics.ipynb#With-Polar) section. Once you haver recovered your file and inspected it, you may want to remove this line from your configuration file - there is no need to create at every start! |\n", "| BoatLeewayFactor | _Leeway_ is the 'drift' of the boat due to heel/wind influence. Low values mean high performance of hull. If we mark _Leeway_ as $L$, _BoatLeewayFactor_ as $c$, _Heel_ angle as $a$ and Speed Through Water _STW_ as $v$ then $L(v) = c * a / v^{2}$ - one word, keep you paddlewheel clean! |\n", "| fixedLeeway | This parameter has dual purpose to limit the Leeway in calculations, depending of the _UseFixedLeeway_ : if 0 (use a heel sensor or manual \"heel polar\") then this value limits _Leeway_ to this maximum value; if 1 (do not use manual heel 'polar' nor the heel sensor): _Leeway_ gets this value. |\n", "| UseHeelSensor | Use the internal heel sensor if available. Important for the correct calculation of the surface current. |\n", "| UseFixedLeeway | Select the behavior of _fixedLeeway_ parameter |\n", "| UseManHeelInput | If no heel sensor is available, you can create a manual \"heel polar\" below. Just read/enter the data from a mechanical heel sensor (e.g. available on compass). Use True Wind Speed & Angle only ! Take care: motoring w/o sails and a heel will show wrong current data! |\n", "| CorrectSTWwithLeeway | Correct STW with Leeway: apply a correction to your log speed throughout the plug-in based on the calculated Leeway and Current. Does make only sense with a real heel sensor. Make sure your instruments do not already apply this correction! |\n", "| CorrectAWwithHeel | Correct AWS/AWA with Heel: Use with care, this is normally done by the instruments themselves as soon as you have an integrated, original equipment heel sensor. But if it your own heel sensor, this can make a use of it! |\n", "| ForceTrueWindCalculation | Force True Wind Calculation: Internally calculates True Wind data (TWS,TWA,TWD) and uses it within the whole plug-in even if there is True Wind data available via NMEA or Signal K. |\n", "| UseSOGforTWCalc | Use SOG instead of STW for True Wind Calculations: Recommended (as the True Wind blows over the earth surface, we should calculate it with Speed Over Ground. This eliminates the influence of currents).
 > > > However, some sailors say that are interested in how the wind blows over the water, so you can make your choice here!
 > > > BTW, some other, innovative sailors are even using the great pair of software _DashT_ or _Tactics_ only for this feature while their paddlewheel has got stuck - well, it is like going to plough a potato field with a Ferrari! Better not think too much about this usage for not to lose motivation... |\n", "| ShowWindbarbOnChart | Toggles wind barb visibility as an overlay on the chart canvas. 0 turns it off and 1 back on. |\n", "| ShowPolarOnChart | Toggles the polar visibility as an overlay on the chart canvas. 0 turns it off and 1 back on. |\n", "| PersistentChartPolarAnimation | Toggles the persistent _Tactics_ overlays visibility as an overlay on the chart canvas. Persistent means here that even if you minimize all the _DashT_ instruments by toggling the _DashT_ button on the _OpenCPN_ toolbar - perhaps to clean out the chart area, the real-time calculations and the corresponding _Tactics_ overlays keep on being animated around the boat, perhaps helping you in your sailing. 0 turns this feature off and 1 turns it back on. |\n", "| Heel_5kn_45Degree | This is the first in the series of the manual 'heel polar', give the value in degrees. Remember, here TWS = 5 knots and TWA = 45 degrees. Do not use AWS/AWA! |\n", "| n/a | NKE format (\\$PNKEP) : Currently only set up for NKE instruments. Exports a predefined set of up to five NMEA records which are \"known\" by NKE instruments and can be displayed there. Please read the manual [how to set up the interface connection](../tactics/tactics.ipynb#NKE-style-Perf.Records) and read more details about the contents of the NKE sentences. You got it right, there is no switch other than to select _which_ PNKEP-format sentence will be sent out. |\n", "| ExpPolarSpeed | Target Polar Speed (PNKEP01) |\n", "| ExpCourseOtherTack | COG on other Tack (PNKEP02) |\n", "| ExpTargetVMG | Target VMG angle and performance percentage (PNKENP03) |\n", "| ExpVMG_CMG_Diff_Gain | Angles to optimize Target VMG and Target CMG and corresponding gain (PNKENP04) |\n", "| ExpCurrent | Current direction and speed (PNKENP05) |\n", "| NKE_TrueWindTableBug | In case this is 1 this is used for internal debugging and replacement of its MWD sentence provided TWS. Provided that you are using _DashT_ from the original distribution, nothing will happen with your MWD sentence: the experimental threshold `m_VWR_AWA` has been set to 10.0 but it needs to be lesser than 8.0 before this variable takes whatsoever action. If you are a happy NKE owner and want to experiment with this, it is necessary that you make your own fork and you set the `m_VWR_AWA` lesser than 8.0 to experiment with this. In this case, if the condition hits, you will see a debug message in the _OpenCPN_ log file. For the rest of us, the sheer mortals this parameter has no effect. But better explain it, since you see it... |\n", "| TwaMarkUseShortAvgWind | This is controlling the instrument [TWA to Waypoint](../tactics/tactics.ipynb#TWA-to-Waypoint) in a way how it is using the integrated wind data provided by the Average Wind instrument (which is, actually a background process) providing short and long integration time. If the wind is very stable, you can as well use the long integration time. Or for some other reason you may prefer it - in this case set this value to 0 |\n" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; Tactics Average Wind" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### AverageWind" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/AverageWind]\n", "ShortAvgTimePercentage=25\n", "AvgTime=240\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| ShortAvgTimePercentage | Ratio in percentage of the _AvgTime_ minimum percentage is 10, default is 25, maximum is 50 |\n", "| AvgTime | This is the normal \"long\" integration time, minimum and default is 240 seconds = 4 minutes, while the maximum is 1800 seconds = 30 minutes |" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; Tactics CSV out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BaroHistory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/BaroHistory]\n", "Exportrate=60\n", "BaroHistoryExportfile=C:\\\\Users\\\\JoeDoe\\\\Downloads\\\\barotest.csv\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Export rate is in seconds." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PolarPerformance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/PolarPerformance]\n", "Exportrate=5\n", "BaroHistoryExportfile=C:\\\\Users\\\\JoeDoe\\\\Downloads\\\\perftest.csv\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Export rate is in seconds." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Windhistory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/Windhistory]\n", "Exportrate=5\n", "BaroHistoryExportfile=C:\\\\Users\\\\JoeDoe\\\\Downloads\\\\windtest.csv\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Export rate is in seconds." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Odograph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/Odograph]\n", "GrandTotal=0\n", "DataPointInterval=30\n", "OdographExportfile=C:\\\\Users\\\\JoeDoe\\\\Downloads\\\\odograph.csv\n", "ShowBoatLog=1\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| GrandTotal | The persistent storage for the total trip counter |\n", "| DataPointInterval | Time in seconds between the two GNSS points and the distance calculations between them. It is also the time period of the storage in the CSV file. Default value is 30 seconds, equivalent of 77 meters at 5 knots. Minimum value is 10 seconds (51m @10kn). Possible values are 10, 20, 30, etc. seconds, _i.e._ 15 seconds would become 10 seconds |\n", "| OdographExportfile | A helper so that one does not type the file name if it remains the same |\n", "| ShowBoatLog | Put here 0 if you do not want to show the boat's navigation system's log-based trip data - for example, if it is also making the log data calculation based on GNSS data |" ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; Tactics Stream out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Streamout" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/Streamout]\n", "ConfigFile=streamout.json\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The quite rich (in features) database schema is set in a separate JSON-file. The default configuration file streams into a file which can be imported into a InfluxDB v2 database. However, it is possible to stream directly into a live database using HTTP protocol. In this case you would modify an existing HTTP-configuration file template and put its name here. See [Configuration file management](../idbout/idbout.ipynb#Configuration-file-management) regarding the settings in the JSON-file." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; Tactics Stream in" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### StreaminSk" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Tactics/SteaminSk]\n", "ConfigFile=streamin-sk.json\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In a similar manner like with the output streaming, the Signal K input streaming is configured with a separate JSON file. The default one being good for the local Signal K server node connection you may to make your own copy, if your server is located, for example on another computer." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT WebView/HTTP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DashT/WebView" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/WebView]\n", "[PlugIns/DashT/WebView/EngineDJG]\n", "instrujsURL=http://127.0.0.1:8080/enginedjg/\n", "[PlugIns/DashT/WebView/RaceStart]\n", "instrujsURL=http://127.0.0.1:8088/racedashstart/\n", "[PlugIns/DashT/WebView/RaceMark]\n", "instrujsURL=http://127.0.0.1:8088/racedashmark/\n", "[PlugIns/DashT/WebView/TimesTUI]\n", "instrujsURL=http://127.0.0.1:8088/timestui/\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is to explain with a URL the _DashT_ from which network port it can expect to find and fetch the corresponding JavaScript instrument code to be integrated with the _DashT_ dashboard." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The default values correspond to the helper script set services explained in this document." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nothing prevents to change these values to point to an external server or internally to different ports if you so like, there is no limitation from where the code is coming from, as long as it is from the same _DashT_ version." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT WebView/file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**NOTE**: you may be tempted to use `file://` protocol. Be aware that on all operating systems supported by _DashT_ the code fetched with this protocol will not be allowed to save any of its parameters due to obvious security measures the manufacturers have undertaken in recent years. Therefore this protocol support has been definitely dropped from _DashT_ as well." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT WebView/blank" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**DEBUG**: One can use `about:blank` in URLs to debug issues on _wxWidgets WebView_ implementation on a particular platform, to eliminate all HTML5 and JavaScript code and their dynamic interactions." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT WebView/cache" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ">**Cache**: At every restart or at the orientation change _DashT_ is making a _Reload()_ request on _wxWidgets WebView_ instance to fetch the latest versions of the drivers. But if you change, say [EngineDJG paths](../enginedjg/enginedjg.ipynb#Add-data-paths) by modifying the _common.js_ file and expecting your changes being visible in the instrument it may happen that your changes are not getting loaded. This is certainly depending of the _wxWidgets WebView_ implementation on you platform but also of the web server you are using. The tweak in this case is simply to change the name _common.js_ to something else both on the folder and in the _index.html_ file and the restart the OpenCPN application, or to change the orientation of the window pane on which the instruments are located." ] }, { "cell_type": "raw", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. index::\n", " single: Tweaks; DashT Race" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Race" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "[PlugIns/DashT/Race]\n", "[PlugIns/DashT/Race/RaceStart]\n", "LaylineWidth=3\n", "GridSize=1\n", "GridStep=0.026998\n", "GridLineWidth=1\n", "GridBoldInterval=2\n", "ZeroBurnSeconds=60\n", "[PlugIns/DashT/Race/RaceMark]\n", "LaylineWidth=2\n", "RungStep=0.053996\n", "RungLineWidth=2\n", "AvgWindLineWidth=3\n", "ShortAvgWindRungLineWidth=1\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Key / Parameter | Description |\n", "| ---- | ----------- |\n", "| LaylineWidth | Pen width on the canvas in pixels |\n", "| GridSize | In [NMi] - a square behind the start line |\n", "| GridStep | In [NMi] - 50 meters is 0.026998 NMi, minimum is 0.00486 NMi which corresponds to about 9 meters (otherwise you can start playing 'Painted Black'...)\n", "| GridLineWidth | Pen width on the canvas in pixels (for non-bold line) |\n", "| GridBoldInterval | 1=all lines are bold, 2 every 2nd is bold, etc. |\n", "| ZeroBurnSeconds | Continuously calculate from the polar where the inviting Zero Burn mark should be kept on the COG line and at which point it should disappear if the boat has passed it - or has passed its chance |\n", "| RungStep | In [NMi] = 100 meters is about 0.053996 NMi |\n", "| RungLineWidth | Pen width on the canvas in pixels |\n", "| AvgWindLineWidth | Pen width on the canvas in pixels |\n", "| ShortAvgWindRungLineWidth | Pen width on the canvas in pixels |" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.2" } }, "nbformat": 4, "nbformat_minor": 4 }