Cybus Connectware Extension (Beta)
YAML language support with built-in validation for Cybus Connectware Service Commissioning Files

✨ Key Features
| Feature |
Description |
| 🔍 Validation |
Real-time schema and syntax checking — errors appear in the Problems panel |
| 💡 Autocomplete |
Context-aware suggestions for YAML elements and attributes Windows Linux: Ctrl+Space, Mac: Option+Esc |
| 📖 Hover Documentation |
Instant descriptions with links to official Cybus docs |
| 📝 Snippets |
Ready-to-use templates for common configurations |
🚀 Getting Started
- Install from the VS Code Marketplace
- Open any
.scf.yaml or .cw.yaml file
- Start typing — autocomplete and validation work automatically
⌨️ Keyboard Shortcuts
| Action |
Windows / Linux |
Mac |
| Trigger autocomplete |
Ctrl+Space |
Option+Esc |
| Open Command Palette |
Ctrl+Shift+P |
Cmd+Shift+P |
| Quick Fix |
Ctrl+. |
Cmd+. |
| Open Problems panel |
Ctrl+Shift+M |
Cmd+Shift+M |
| Show hover info |
Ctrl+K Ctrl+I |
Cmd+K Cmd+I |
📝 Snippets
Type these prefixes and trigger autocomplete:
Service Templates — template:<protocol>:<type>:<action>
| Prefix | Description |
|--------|-------------|
| template:opcua:bridge:read | OPC UA read bridge |
| template:modbus:bridge:read | Modbus read bridge |
| template:s7:bridge:read-write | S7 read/write bridge |
| template:mqtt:bridge:publisher-tls | MQTT TLS publisher |
| template:influxdb:app:deploy | InfluxDB deployment |
| template:grafana:app:deploy | Grafana deployment |
Resource Snippets — snippet:<protocol>:resource:<type>
| Prefix | Description |
|--------|-------------|
| snippet:opcua:resource:connection | OPC UA connection |
| snippet:modbus:resource:connection | Modbus connection |
| snippet:mqtt:resource:endpoint-subscribe | MQTT subscribe endpoint |
💡 Type template: or snippet: and browse all options with autocomplete.
💡 Tips & Tricks
Reference Resources with !ref
connection: !ref myOpcuaConnection
String Substitution with !sub
topic: !sub 'devices/${deviceId}/data'
Get Object Examples (not just properties)
Position your cursor after a space following the colon, then trigger autocomplete:
Examples:
Anyobject: # ← cursor here, then Ctrl+Space → shows full object examples
Properties:
Anyobject:
# ← cursor here, then Ctrl+Space → shows availabe object properties
🎯 Best Practices: Recommended Workflow
The fastest way to create a Connectware service is to start from a template and customize it.
Step-by-Step Workflow
1. CREATE → 2. CUSTOMIZE → 3. VALIDATE → 4. DEPLOY
Start from Add/remove Fix errors Upload to
a template resources as you go Connectware
1️⃣ Start with a Template
- Create a new file with
.scf.yaml extension
- Type
template: and trigger autocomplete (Ctrl+Space)
- Choose a template matching your use case (e.g.,
template:opcua:bridge:read)
- The template includes a complete working example with all required sections
2️⃣ Customize the Service
Remove what you don't need:
- Delete unused endpoints, mappings, or parameters
- The linter will flag any broken references
Add new resources:
- Type
snippet: to add individual resources (connections, endpoints, mappings)
- Use autocomplete inside
resources: to see available resource types
- Reference existing resources with
!ref resourceName
Modify values:
- Update connection parameters (IP addresses, ports, credentials)
- Adjust endpoint configurations (topics, node IDs, registers)
- Customize mappings for your data flow
3️⃣ Validate Continuously
- Watch the Problems panel (
Ctrl+Shift+M) for errors
- Hover over red underlines to see error details
- Use Quick Fix (
Ctrl+.) for suggested corrections
- Ensure all
!ref references point to existing resources
4️⃣ Example: Building an OPC UA to MQTT Bridge
# 1. Started from: template:opcua:bridge:read
# 2. Customized: Changed IP, added second endpoint, modified mapping
description: OPC UA to MQTT Bridge
parameters:
opcuaHost:
type: string
default: '192.168.1.100' # ← Modified for my PLC
resources:
opcuaConnection:
type: Cybus::Connection
properties:
protocol: Opcua
connection:
host: !ref opcuaHost
port: 4840
temperatureEndpoint: # ← Kept from template
type: Cybus::Endpoint
properties:
protocol: Opcua
connection: !ref opcuaConnection
subscribe:
nodeId: ns=2;s=Temperature
pressureEndpoint: # ← Added using snippet
type: Cybus::Endpoint
properties:
protocol: Opcua
connection: !ref opcuaConnection
subscribe:
nodeId: ns=2;s=Pressure
temperatureMapping:
type: Cybus::Mapping
properties:
mappings:
- subscribe:
endpoint: !ref temperatureEndpoint
publish:
topic: 'plant/sensors/temperature'
💡 Pro tip: Keep the template comments initially — they help you understand what each section does. Remove them before deploying.
📁 Supported File Patterns
The extension automatically activates for:
*.scf.yaml / *.scf.yml / *.scf
*.cw.yaml / *.cw.yml
*/connectware/scf*/*.yaml
🔒 Privacy
This extension does not collect or transmit any telemetry data.
📬 Feedback & Support
Questions or issues? Contact: support@cybus.io
📄 License
MIT
MIT, See LICENSE for more information.