DMR Zone Channel Builder
Project description
dzcb
DMR Zone Channel Builder
- Fetch - fetch input files from local directories or urls
- Assemble - combine information from multiple sources
- Filter - rename, exclude, reorder zones, and talkgroups
- Format - output to common export formats
Overview Video
See Releases for Default Codeplugs
Github Actions
For more information on generating customized codeplugs in the cloud without installing any software, see WALKTHROUGH.
The walkthrough uses mycodeplug/example-codeplug [input files]
Output Formats
Farnsworth JSON
For import into editcp, with theoretical support for:
- TYT
- MD-380, MD-390
- MD-UV380 (tested), MD-UV390
- MD-2017,
- Alinco DJ-MD40,
- Retevis RT3, RT3-G, RT3S, and RT82 radios
Use --farnsworth-template-json
to specify an exported codeplug to
use as the template for settings and radio capabilities.
dzcb
includes basic template files for MD380/390
and MD-UV380/390.
Anytone CPS
For import into the official Anytone CPS (windows-only).
dzcb
generates Channels.CSV, Talkgroups.CSV, ScanList.CSV, and Zone.CSV
Versions Supported
(links fetched 2021/01/24)
GB3GF OpenGD77 CSV
For import into GB3GF CSV tool. Currently only supporting OpenGD77 target. Tool is "windows-only" but runs decently under wine.
A subdirectory gb3gf_opengd77
is created under the output directory
containing the 4 CSV files used by the program:
Channels.csv
Contacts.csv
TG_Lists.csv
Zones.csv
Note: these files are actually semicolon separated.
Input Format
K7ABD style
A directory of inter-related CSV files describing the common settings needed to program all radios. This is a common format used by K7ABD's original anytone-config-builder and N7EKB's cps-import-builder.
An arbitrary number of files and folders will be combined. At this time duplicate zone names in different files may be problematic. Keep zone names unique. Particularly be wary of trucated names.
Analog__ZoneName.csv
- Zone, Channel Name, Bandwidth, Power, RX Freq, TX Freq, CTCSS Decode, CTCSS Encode, TX Prohibit
Talkgroups__ZoneName.csv
- No Header Row tuples of: talkgroup_name,talkgroup_number
Digital-Other__ZoneName.csv
-- only really useful for digital simplex channels or private call- Zone, Channel Name, Power, RX Freq, TX Freq, Color Code, Talk Group, TimeSlot, Call Type, TX Permit
Digital-Repeaters__ZoneName.csv
-- each line is a digital channel with static talkgroup timeslot assignments- Zone Name, Comment, Power, RX Freq, TX Freq, Color Code, talkgroup1, talkgroup2, talkgroup3, ...
- Typically the Zone Name field is semicolon separated: "Longer Name;LNM"
- The value for the talkgroup column should be "-", "1", or "2"
- The talkgroup names must exist in the talkgroups file.
- Some codeplug targets will create a zone for each frequency with channels for each static talkgroup.
Data Sources
PNWdigital.net
Before using this network, please read the quick start
When building a codeplug with the --pnwdigital
switch,
data is downloaded from PNWDigital.net/files/acb.
The files are updated regularly from the cBridge, so there
could be test data or repeaters that are not yet active.
The data is cached by dzcb.pnwdigital
SeattleDMR
Before using these repeaters, please read the website
When building a codeplug with the --seattledmr
switch,
data is downloaded from seattledmr.org/ConfigBuilder/Digital-Repeaters-Seattle-addon.csv
and cleaned up a bit in dzcb.seattledmr
Repeaterbook Proximity
Download live analog Repeaterbook data within distance of point of interest.
--repeaterbook-proximity-csv
references a csv file with the fields:
- Zone Name,Lat,Long,Distance,Unit,Band(2m;1.25m;70cm),Use,Operational Status,etc
See example: src/dzcb/data/repeaterbook_proximity_zones.csv
The fields after Band are optional and correspond directly to the field names and values in the Repeaterbook API (see examples).
--repeaterbook-state
is a space-separated list of US states or Canadian
provinces that should be included in the proximity search. Including more
states will increase the time required to generate the codeplug.
Repeaterbook API data is downloaded and cached in a user and platform-specific cache directory. Data will be refreshed if it is older than 12 hours. When downloading from Repeaterbook, a delay of 30 seconds is introduced between requests to reduce load on the repeaterbook servers.
Please respect their servers and submit changes requests to repeaterbook directly.
See dzcb.repeaterbook
.
Example Format
Zone Name,Lat,Long,Distance,Unit,Band(2m;1.25m;70cm),Use,Operational Status
Longview WA 35mi,46.13819885,-122.93800354,35,miles,2m;70cm,OPEN,On-air
Longview WA VHF 35mi,46.13819885,-122.93800354,35,miles,2m,open,On-air
Longview WA UHF 35mi,46.13819885,-122.93800354,35,miles,70cm,OPEN,On-Air
(it's easy to search on repeaterbook and copy the info from the URL!)
Simplex, GMRS, etc
Some common Digital
and Analog simplex frequencies,
and GMRS/FRS and MURS channels are
included if --default-k7abd
is specified.
Customization
The channels, zones, and contacts present and the ordering of such in the final generated codeplug is controlled by one or more CSV files passed as parameters.
The column headers correspond to the codeplug objects (zones, contacts, channels, etc) and may appear in any order or be omitted (if no change is requested to that type of codeplug object).
The names used in include, exclude, and order are python regular expressions
that match from the beginning of the object name. They are prefix match by
default. To opt-out of prefix match, add a $
at the end. All regular
expression special characters should be escaped (\
).
--include
If the CSV file is passed as a --include
parameter, then any objects not explicitly
mentioned in the file will be removed.
--exclude
If the CSV file is passed as an --exclude
parameter, then any objects mentioned
will be removed.
See example: codeplug/default-tyt-md380/exclude.csv
(for radios with lower channel/zone capacity)
--order
The remaining objects are sorted alphabetically after processing removals.
Any remaining objects are sorted according to the order specified in the file
passed to --order
. Similarly, a file may be specified as --reverse-order
which
will sort in reverse, starting from the end of the list.
See example: codeplug/default/order.csv
--replacements
The replacements CSV column headers are like object_pattern,object_repl
and
correspond exactly to the arguments passed to python's
re.sub
. Similar to the
ordering csv, object
would refer to zones, contacts, channels, etc.
The replacements will be applied to the name of each object of the given type in the listed order. Subsequent patterns will affect previous replacements. Unlike the previous group, these regular expressions are case sensitive, support capturing groups, and indexed replacement.
See example: codeplug/default/replacements.csv
--repeaterbook-name-format
Python format string used to generate channel names from repeaterbook.
The format string will be passed the Repeaterbook API response dictionary for the repeater, so all valid fields are usable in the format string.
The default name format is: "{Callsign} {Nearest City} {Landmark}"
Bonus: Trim the Contact List
Download the usersDB.bin with Farnsworth editcp.
python -m dzcb.contact_trim \
< "~/.cache/codeplug/Codeplug Editor/usersDB.bin" \
> "~/.cache/codeplug/Codeplug Editor/usersDB-trimmed.bin"
Development Usage
Installation
pip install -e ./dzcb
Basic Usage
Download live pnwdigital and seattledmr networks and generate a codeplug
in /tmp/my-codeplug
with local simplex zones included.
python -m dzcb \
--pnwdigital \
--seattledmr \
--default-k7abd /tmp/my-codeplug
See above and --help
for more usage details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dzcb-0.3a1.tar.gz
.
File metadata
- Download URL: dzcb-0.3a1.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a6b8c0a61de184ebf351b92113b297afb27103a3d543ebd668a26ca3bd4577b |
|
MD5 | fedc5ac4febce891ce5a9eb58326f7a5 |
|
BLAKE2b-256 | f604e536100ca11aa5eab7f26a4b61f2dd56191fa006f236aafac0b4b416a448 |
File details
Details for the file dzcb-0.3a1-py2.py3-none-any.whl
.
File metadata
- Download URL: dzcb-0.3a1-py2.py3-none-any.whl
- Upload date:
- Size: 41.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b772803149a97d5389714158029c92a7907f8d12273051b143fbc999c9c07d3e |
|
MD5 | c7dba9b0188ec2e624ee800f786cb69c |
|
BLAKE2b-256 | bfdeec55419710c601d02e1233b151d9504ffba0cd34ddf72156cc3bdd8d3ab3 |