CRITICAL: Before starting, MUST first use the Read tool to read
../openydt-shared/SKILL.md(authentication / profile / signature / status codes / rate limiting / security rules). Do not execute any commands without reading the shared foundation.
When to use this skill
Use this skill when the user's intent is to "issue commands to on-site parking lot devices or read device status", for example: remote gate open/close, switch the gate to normally open mode, push text to the display, have the device make voice announcements/loudspeaker announcements, capture vehicle images, control the cloud scan machine (start scanning/stop scanning/voice/update configuration), query device online status.
Intent routing:
- "Open gate / close gate / raise barrier / lower barrier / remote door open" → for traditional/cloud sites use
op-gate; for pure cloud sites open/close by channel ID usecloud-open-gate。 - "Normally open / restore normal / change gate mode" →
change-channel-mode。 - "Display screen / LED display / voice announcement / loudspeaker announcement" →
op-show-voice; set default screen display image carousel →set-default-screen。 - "Capture / take photo" →
channel-snap。 - "Scan machine / QR code payment device" → scan
cloud-scan-qr-code, stopcloud-stop-scan-code, voicecloud-scan-voice, update configurationcloud-scan-update-config。 - "Device status / whether online" →
get-cloud-equip-status。
For queries not involving on-site devices (vehicle presence, orders, monthly passes, coupons), please use the corresponding business domain skill (
openydt parking/openydt trade/openydt ticket/openydt couponetc.).
Available commands
| Chinese name | Command | Read/Write | Key parameters |
|---|---|---|---|
| Modify all-in-one gate mode | openydt device change-channel-mode |
Write | parkCode, channelCode, mode (0 normally open/1 normal) |
| Manual capture | openydt device channel-snap |
Write | parkCode, channelCode, operator (optional) |
| Cloud site channel gate open/close | openydt device cloud-open-gate |
Write | parkCode, channelId, opType (0 open/1 close) |
| Scan machine issue scan | openydt device cloud-scan-qr-code |
Write | parkCode, scanMachineId, deviceType, timeLength, voiceType |
| Scan machine update configuration | openydt device cloud-scan-update-config |
Write | scanMachineId, channelId |
| Scan machine voice announcement | openydt device cloud-scan-voice |
Write | parkCode, scanMachineId, voiceType, voiceNum, voiceInterval |
| Scan machine stop scanning | openydt device cloud-stop-scan-code |
Write | parkCode, scanMachineId, deviceType (optional) |
| Get cloud device status | openydt device get-cloud-equip-status |
Read | equipType (0 all-in-one/2 card machine/3 scan machine), clientId |
| Open/close gate | openydt device op-gate |
Write | parkCode, channelCode, opType (0 open/1 close), operator, operateTime, carNo (optional) |
| Display screen/voice announcement | openydt device op-show-voice |
Write | parkCode, channelCode, show/voice (at least one), qrCode (optional), operator, operateTime |
| Set default screen display content | openydt device set-default-screen |
Write | parkCode, deviceType, channelCode, templateData.imageArray |
Except for
get-cloud-equip-status(Read), all of the above arewrite operations, and when executing must add--yesconfirmation.
⚠️
channel-snapA capture device is required on the channel: if it returnsresultCode=908 找不到设备, it means there is no capture device on this channel; please switch to another channel and try again.
Callable interfaces not listed in this table but belonging to the device domain (
setLeavePrompt/removeLeavePrompt/setShowMsg/setVipShowMsg/addMidAccount/scanMachineFlow), useopenydt api <cmd> --body '{...}'to call (write--yes, first--dry-run); see [[openydt-api-explorer]] for details.
Business Flow
Device control is a high-risk operation that directly affects on-site hardware. Standard sequence:First locate the device → you may check the status before intervention → use --dry-run to preview → after confirming it is correct, add --yes to actually issue. Be sure to pass through the fields from the previous command response to the subsequent command inputs; do not manually fill in guessed values.
-
Locate channel / device: in the parking lot domain (
openydt parking/openydt park) obtainparkCode, channelchannelCodeorchannelId, devicescanMachineId/clientId. These are the input sources for all subsequent device commands. -
(Optional) First check device online status: for cloud devices, first run
get-cloud-equip-status(equipType+clientId); confirm the device is available from the device online/status field in the response, then decide whether to issue the command.clientIdis the scan machine'sscanMachineId。 -
preview write command (high-risk, be sure to dry-run first): for
op-gate、cloud-open-gate、op-show-voice、change-channel-mode、set-default-screen、channel-snapand scan machine series commands, first use--dry-runto view the request body and target to be sent, and verify thatparkCode/channelCode/channelId/opTypeand so on are correct. -
Confirm issuance: after reviewing the dry-run output, add the same set of parameters with
--yesto execute for real.- Gate open/close: for traditional lots/cloud lots use
op-gate(channelCode+opType); for pure cloud lots, by channel ID usecloud-open-gate(use thechannelIdobtained in step 1 rather than channelCode). - Gate normally open:
change-channel-mode(mode=0normally open /mode=1normal). - Screen display/announcement:
op-show-voice(showandvoiceprovide at least one); for scan machine announcements usecloud-scan-voice(scanMachineIdobtained from step 1/2). - Scan flow:
cloud-scan-qr-codestart scanning → (if needed)cloud-scan-voiceprompt →cloud-stop-scan-codestop, all three reuse the samescanMachineId。
- Gate open/close: for traditional lots/cloud lots use
-
Verify result: check the returned status code (see the base specification). Actions such as gate open/close can be checked again with
get-cloud-equip-statusor by reviewing the presence records in the parking lot domain to confirm they took effect.
📖 Result interpretation: gate open/close/capture
status=1meansthe command has been issued, which does not mean the physical action is complete—rely onget-cloud-equip-statusonline status or a parking lot domain recheck. For the three-layer interpretation, see [[openydt-shared]]'sreferences/result-reading-sop.md。 🔑 Duplicate issuance risk: gate open/close/capture/scanhas no idempotency key, and automatic retries triggered by gateway 404s may duplicate gate opening/capture. For high-risk writesdry-run first, execute once, if unsure whether it took effect useget-cloud-equip-statusto recheck rather than blindly resending. See [[openydt-shared]]'sreferences/write-idempotency.md。
Error Self-Healing Quick Reference (Devices)
| Symptom | Meaning | Recovery Action |
|---|---|---|
resultCode=908 找不到设备 |
There is no corresponding device on this channel (capture/scan machine) | Switch to a channel that has a device; for scan machines verify scanMachineId |
status=7 Incomplete parameters |
channelId and channelCode used incorrectly (cloud venues use channelId) | Pure cloud venues use channelId; traditional/cloud use channelCode; verify against the schema |
| No response from device after issuing | Device offline | get-cloud-equip-status Check online status before issuing |
For common codes/exit codes/retries see [[openydt-shared]]; for result interpretation (three-layer interpretation/amount/empty result) see its
references/result-reading-sop.md; for write idempotency rules see itsreferences/write-idempotency.md。
Example
Example parkCode/time are documented test values (test only); copying historical sampleBody will hit an invalid venue/expired time.
--client-idof3571F003is taken from the device query; replace with the actual device ID.
# 1) 开闸(写,高危):先预览
openydt device op-gate \
--park-code 1ZS7H5PQH9 --channel-code 001 --op-type 0 \
--operator operator --operate-time "2026-06-01 14:04:04" --dry-run
# 预览无误后真正执行
openydt device op-gate \
--park-code 1ZS7H5PQH9 --channel-code 001 --op-type 0 \
--operator operator --operate-time "2026-06-01 14:04:04" --yes
# 2) 显示屏 + 语音播报(写,需 --yes;show/voice 至少一个)
openydt device op-show-voice \
--park-code 1ZS7H5PQH9 --channel-code 001 \
--show "欢迎光临" --voice "请缴费" \
--operator operator --operate-time "2026-06-01 14:04:04" --yes
# 3) 查询云端扫码机状态(读,无需 --yes)
openydt device get-cloud-equip-status --equip-type 3 --client-id 3571F003