924b7b5b34
Seed the repo described in pda-fieldbus ADR-0009: a sibling repo that
ships device profiles independently of the fieldbus binary.
Layout:
- profiles/schneider-iem2135.json — distilled from the inline extract
rules in examples/poll-d27-g110.yaml
- profiles/lug-heat-meter-v4.json — heat-meter profile with derived
delta_temperature
Both validate against pda-fieldbus's profile.LoadDirs.
Packaging:
- nfpm.yaml builds pda-fieldbus-profiles.deb installing profiles/ to
/usr/share/pda-fieldbus/profiles/, where the loader's DirPackaged dir
picks them up. Recommends pda-fieldbus.
- .gitea/workflows/auto-tag.yml: same conventional-commit auto-tagging
as pda-fieldbus, on tag push installs nfpm, builds .deb, uploads to
repo.pda.cz/PDAT/main using the existing PDA_REPO_TOKEN secret.
- .gitea/workflows/ci.yml: JSON syntax check + schema validation by
importing pda-fieldbus's loader and calling LoadDirs against profiles/.
61 lines
1.5 KiB
YAML
61 lines
1.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
validate:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.25"
|
|
cache: false
|
|
|
|
- name: JSON syntax check
|
|
run: |
|
|
for f in profiles/*.json; do
|
|
echo "checking $f"
|
|
python3 -m json.tool "$f" > /dev/null
|
|
done
|
|
|
|
- name: Schema validation via pda-fieldbus loader
|
|
working-directory: ${{ runner.temp }}
|
|
run: |
|
|
mkdir -p validator && cd validator
|
|
go mod init validator
|
|
go get github.com/pdat-cz/pda-fieldbus@latest
|
|
cat > main.go <<'EOF'
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/pdat-cz/pda-fieldbus/pkg/proto/profile"
|
|
)
|
|
|
|
func main() {
|
|
if len(os.Args) != 2 {
|
|
fmt.Fprintln(os.Stderr, "usage: validator <profiles-dir>")
|
|
os.Exit(2)
|
|
}
|
|
m, err := profile.LoadDirs(os.Args[1])
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "FAIL:", err)
|
|
os.Exit(1)
|
|
}
|
|
for n, p := range m {
|
|
fmt.Printf("OK %s device=%s/%s points=%d derived=%d\n",
|
|
n, p.Device.Manufacturer, p.Device.Model,
|
|
len(p.Points), len(p.Derived))
|
|
}
|
|
}
|
|
EOF
|
|
go run . "$GITHUB_WORKSPACE/profiles"
|