https://github.com/clj/kom2
Interface KiCad database libraries with non-ODBC systems using magic
https://github.com/clj/kom2
kicad odbc
Last synced: 5 months ago
JSON representation
Interface KiCad database libraries with non-ODBC systems using magic
- Host: GitHub
- URL: https://github.com/clj/kom2
- Owner: clj
- License: mit
- Created: 2023-05-15T22:47:42.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-17T19:43:09.000Z (almost 3 years ago)
- Last Synced: 2024-06-21T18:05:43.162Z (almost 2 years ago)
- Topics: kicad, odbc
- Language: Go
- Homepage:
- Size: 250 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Prototype
ODBC to InvenTree prototype driver for KiCad.
See also: https://github.com/clj/kom for a previous prototype that uses SQLite virtual tables
## Installing
### macOS
Install [unixODBC](https://www.unixodbc.org)
```shell
$ brew install unixodbc
```
Download the latest kicad-odbc-middleware2 release from [Releases](https://github.com/clj/kom2/releases):
* For Intel based Macs:
* kicad-odbc-middleware2-**macos**-**amd64**-VERSION.zip
* For Apple Silicon (ARM) Macs:
* kicad-odbc-middleware2-**macos**-**arm64**-VERSION.zip
decompress it and leave the kom2.dylib file somewhere convenient.
### Linux
Contributions welcome.
### Windows
Download the latest kicad-odbc-middleware2 Windows installer from [Releases](https://github.com/clj/kom2/releases) and run it.
* For Intel/Amd based Windows PCs:
* kicad-odbc-middleware2-**windows**-**amd64**-VERSION.exe
### KiCad Configuration
Create a `inventree.kicad_dbl` file with a valid configuration (see the [KiCad documentation on Database Libraries](https://docs.kicad.org/master/en/eeschema/eeschema.html#database-libraries)), e.g.:
```json
{
"meta": {
"version": 0
},
"name": "InvenTree Library",
"description": "Components pulled from InvenTree",
"source": {
"type": "odbc",
"connection_string": "Driver=SEE_BELOW;username=reader;password=readonly;server=https://demo.inventree.org",
"timeout_seconds": 2
},
"libraries": [
{
"name": "Capacitors",
"table": "Electronics/Passives/Capacitors",
"key": "pk",
"symbols": "parameter.Symbol",
"footprints": "parameter.Footprint",
"fields": [
{
"column": "IPN",
"name": "IPN",
"visible_on_add": false,
"visible_in_chooser": true,
"show_name": true,
"inherit_properties": true
},
{
"column": "parameter.Capacitance",
"name": "Value",
"visible_on_add": true,
"visible_in_chooser": true,
"show_name": false
},
{
"column": "parameter.Package",
"name": "Package",
"visible_on_add": true,
"visible_in_chooser": true,
"show_name": false
}
],
"properties": {
"description": "description",
"keywords": "keywords"
}
}
]
}
```
The InvenTree Demo server does not seem to have IPNs for everything though, so the key should probably be `pk` instead if that is the case (i.e. if IPN isn't unique).
#### Connection String
The `Driver` argument of the connection string is used to find the kom2 driver and the exact value used is platform specific.
##### Windows
Use `Driver=kom2` when the driver was installed using the downloaded Windows installer.
##### Linux
Use `Driver=/path/to/kom2.so`, using the correct path where the driver was downloaded and extracted.
##### macOS
Use `Driver=/path/to/kom2.dylib`, using the correct path where the driver was downloaded and extracted.
##### Other Connection String Options
* `username`
* InvenTree username
* `password`
* InvenTree users's password (not required if the `apitoken` is used instead)
* `server`
* The InvenTree server to connect to
* `apitoken`
* The optional API token (not required when `username` and `password` are used)
### Add the library to KiCad:
* *Preferences* -> *Manage Symbol Libraries...*
* Switch to the:
* *Global Libraries*; or
* *Project Specific Libraries*
* Add a new library
* Give it an appropriate *Nickname*
* Set the *Library Path* to point to the `inventree.kicad_dbl` that you created earlier
* Set the *Library Format* to *Database*
You can now open the Schematic Editor and add a new component. The configured library should now be available.
## Interactive Use
You can query InvenTree using `isql` by using a connection string:
```
isql -v -k "Driver=/.../kom2.dylib;username=reader;password=readonly;server=https://demo.inventree.org"
```
and run things like:
```
select * from Electronics/Passives/Resistors
```
or
```
select * from Electronics/Passives/Resistors where pk = 43;
```
or
```
select * from Electronics/Passives/Resistors where IPN = ???;
```
if there were IPNs in the DB.
## License
MIT License Copyright (c) 2023 Christian Lyder Jacobsen
Refer to [LICENSE](./LICENSE) for full text.