{"_id":"@aqara-claw/aqara-bacnet","_rev":"2-79b767b8c9edfdaf3c4799196f553b1b","name":"@aqara-claw/aqara-bacnet","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aqara-claw/aqara-bacnet","version":"0.1.0","keywords":["openclaw","bacnet","bacnet-ip","iot","building-automation","device-discovery","auto-discovery","绿米","aqara"],"license":"MIT","_id":"@aqara-claw/aqara-bacnet@0.1.0","maintainers":[{"name":"lumi-root","email":"chao.xu@aqara.com"}],"dist":{"shasum":"fe72eb5917e2f418c03a36ba88804f2d4bc4c256","tarball":"https://registry.npmjs.org/@aqara-claw/aqara-bacnet/-/aqara-bacnet-0.1.0.tgz","fileCount":14,"integrity":"sha512-OFs44x05KYey7Z/jERbPyoKidCBQKkrGOoMGrgSvPzBxuLe4Pc76KBorJMVBSSnoMgS8Ipva++EAk6B3h37B+A==","signatures":[{"sig":"MEUCIHZNAmyjXw3AZBpG3wurEasQPDU9Frpi5gNRIb1nziBZAiEAnK0e/Zp6sv/p/l2Av7/uEZF0dL5cjF7usLJqz3F5bLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52532},"type":"module","gitHead":"f72fa1786934073cb7952b99c2d983b204489dd2","_npmUser":{"name":"lumi-root","email":"chao.xu@aqara.com"},"openclaw":{"install":{"npmSpec":"@aqara-claw/aqara-bacnet","localPath":".","defaultChoice":"npm"},"extensions":["./index.ts"]},"_npmVersion":"10.9.2","description":"OpenClaw BACnet/IP auto-discovery plugin – zero-config network scanning for BACnet building-automation devices","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^4.3.6","node-bacnet":"^0.2.4","@sinclair/typebox":"0.34.48"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","openclaw":"2026.2.13","typescript":"^5.7.0","@types/node":"^25.0.10"},"peerDependencies":{"openclaw":">=2026.2.13"},"_npmOperationalInternal":{"tmp":"tmp/aqara-bacnet_0.1.0_1772175930464_0.5944178640915794","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aqara-claw/aqara-bacnet","version":"0.1.1","type":"module","description":"OpenClaw BACnet/IP auto-discovery plugin – zero-config network scanning for BACnet building-automation devices","license":"MIT","keywords":["openclaw","bacnet","bacnet-ip","iot","building-automation","device-discovery","auto-discovery","绿米","aqara"],"openclaw":{"extensions":["./index.ts"],"install":{"npmSpec":"@aqara-claw/aqara-bacnet","localPath":".","defaultChoice":"npm"}},"dependencies":{"@sinclair/typebox":"0.34.48","node-bacnet":"^0.2.4","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.0.10","openclaw":"2026.2.13","tsx":"^4.21.0","typescript":"^5.7.0"},"peerDependencies":{"openclaw":">=2026.2.13"},"_id":"@aqara-claw/aqara-bacnet@0.1.1","gitHead":"5ae862c380ac15debe1679f948c7cb61a25227d9","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-dqxyMPmJzgMCg00yf6XrLpH+sThAhqPy4cBKEizGFG6L8nP3UxG+163AYt3U3yv9z9ICdIhEkXD8QixNfG7wMA==","shasum":"1975d1e0a5eff1496067fcf70752710e55de8827","tarball":"https://registry.npmjs.org/@aqara-claw/aqara-bacnet/-/aqara-bacnet-0.1.1.tgz","fileCount":14,"unpackedSize":51868,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEbjeFIyEmAmHgKKDDb3IqTw0CnXoYpahQFnqC1uLoIgAiAgc1cM9/XEkrOfzmIOKPpcNbZwy4vRIEVObvy4LluceQ=="}]},"_npmUser":{"name":"lumi-root","email":"chao.xu@aqara.com"},"directories":{},"maintainers":[{"name":"lumi-root","email":"chao.xu@aqara.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aqara-bacnet_0.1.1_1772243967821_0.42125399778120776"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-27T07:05:30.354Z","modified":"2026-02-28T01:59:28.118Z","0.1.0":"2026-02-27T07:05:30.660Z","0.1.1":"2026-02-28T01:59:27.971Z"},"license":"MIT","keywords":["openclaw","bacnet","bacnet-ip","iot","building-automation","device-discovery","auto-discovery","绿米","aqara"],"description":"OpenClaw BACnet/IP auto-discovery plugin – zero-config network scanning for BACnet building-automation devices","maintainers":[{"name":"lumi-root","email":"chao.xu@aqara.com"}],"readme":"# OpenClaw BACnet/IP Plugin\n\nBACnet/IP auto-discovery plugin for OpenClaw: zero-config network scanning, device property read/write, and continuous device monitoring for building-automation systems.\n\n## Features\n\n- **Auto-discovery on startup** — Broadcast + unicast WhoIs; devices are discovered as they appear on the network.\n- **Configurable binding** — Bind to a specific interface (or auto-detect first non-loopback IPv4) and set subnet broadcast or target IPs.\n- **Six agent tools** — Scan, list devices, read/write properties, get object lists, and read device summaries.\n\n## Install\n\n```bash\nopenclaw plugins install @aqara-claw/aqara-bacnet\n```\n\n## Upgrade\n\n```bash\nopenclaw plugins update aqara-bacnet\n```\n\n## Configuration\n\nConfigure in `openclaw.json` under `plugins.entries[\"aqara-bacnet\"].config`:\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `interface` | string | auto (first IPv4) | Bind address; `0.0.0.0` = all interfaces. |\n| `port` | number | 47808 | BACnet/IP UDP port (0xBAC0). |\n| `broadcast_address` | string | 255.255.255.255 | WhoIs broadcast target (use subnet-directed e.g. `10.11.255.255`). |\n| `target_addresses` | string[] | [] | Known device IPs; unicast WhoIs is sent to each for reliable discovery. |\n| `scan_on_startup` | boolean | true | Run a network scan when the plugin starts. |\n| `scan_interval_ms` | number | 60000 | Periodic re-scan interval (ms). |\n| `scan_timeout_ms` | number | 5000 | Time to wait for IAm responses per scan (ms). |\n| `apdu_timeout` | number | 6000 | APDU timeout for ReadProperty/WriteProperty (ms). |\n| `auto_read_properties` | boolean | true | Auto-read name, vendor, model, etc. when a device is discovered. |\n\n## Agent tools\n\nThe plugin registers **6 tools** for the OpenClaw agent. Use these from prompts or skills to discover and control BACnet devices.\n\n| Tool | Purpose | Parameters |\n|------|---------|------------|\n| **bacnet_scan_network** | Broadcast WhoIs and optional unicast to target IPs; discover devices on the LAN. Returns discovered devices (name, vendor, model, etc.). | `lowLimit`, `highLimit` (optional device ID range), `target_addresses` (optional extra IPs). |\n| **bacnet_get_devices** | Return all discovered devices from in-memory cache (device ID, IP, name, vendor, model, object count). | None. Call `bacnet_scan_network` first for fresh data. |\n| **bacnet_read_property** | Read one BACnet object property. Common: 85=Present Value, 77=Object Name, 28=Description, 79=Object Type, 111=Status Flags, 117=Units. | `address`, `objectType`, `objectInstance`, `propertyId`. |\n| **bacnet_write_property** | Write one property (e.g. control output). Use Present Value (85) to control points. `valueTag`: 1=Boolean, 2=Unsigned, 3=Signed, 4=Real, 7=String, 9=Enumerated. | `address`, `objectType`, `objectInstance`, `propertyId`, `value`, `valueTag`. |\n| **bacnet_get_device_objects** | Read a device’s Object List: all objects (Analog Input, Binary Output, etc.) and instance numbers. Use to discover data points. | `address`, `deviceId`. |\n| **bacnet_read_device_summary** | One-shot full summary: name, vendor, model, firmware revision, object list. Use for initial device discovery. | `address`, `deviceId`. |\n\n### Typical workflow\n\n1. **Discover** — Call `bacnet_scan_network` (optionally with `target_addresses` for known IPs).\n2. **List** — Call `bacnet_get_devices` to see cached devices and their IPs/IDs.\n3. **Inspect** — For a device, use `bacnet_read_device_summary` or `bacnet_get_device_objects` to see objects and instances.\n4. **Read/Write** — Use `bacnet_read_property` and `bacnet_write_property` with `address`, `objectType`, `objectInstance`, `propertyId` (and for write: `value`, `valueTag`).\n\n## Example config\n\nIn `~/.openclaw/openclaw.json`:\n\n```json\n{\n  \"plugins\": {\n    \"allow\": [\"aqara-bacnet\"],\n    \"entries\": {\n      \"aqara-bacnet\": {\n        \"enabled\": true,\n        \"config\": {\n          \"interface\": \"0.0.0.0\",\n          \"port\": 47808,\n          \"broadcast_address\": \"10.11.255.255\",\n          \"target_addresses\": [\"10.11.0.1\"],\n          \"scan_on_startup\": true,\n          \"scan_interval_ms\": 60000,\n          \"scan_timeout_ms\": 5000,\n          \"apdu_timeout\": 6000,\n          \"auto_read_properties\": true\n        }\n      }\n    }\n  }\n}\n```\n\n- Use **subnet-directed broadcast** (e.g. `10.11.255.255`) when devices are on the same subnet.\n- Use **target_addresses** for known device IPs so unicast WhoIs reaches them even if broadcast is restricted.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}