{"id":30196221,"url":"https://github.com/metaneutrons/knxmonitor","last_synced_at":"2026-06-23T22:03:38.970Z","repository":{"id":309197289,"uuid":"1035448918","full_name":"metaneutrons/KnxMonitor","owner":"metaneutrons","description":"Enterprise-grade KNX/EIB bus monitoring and debugging tool built with modern .NET 9","archived":false,"fork":false,"pushed_at":"2025-08-10T13:43:44.000Z","size":125,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-10T14:36:19.594Z","etag":null,"topics":["building-automation","csharp","debugging","dotnet","eib","enterprise","iot","knx","monitoring","smart-home"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/metaneutrons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-10T12:29:08.000Z","updated_at":"2025-08-10T13:43:47.000Z","dependencies_parsed_at":"2025-08-10T14:50:42.246Z","dependency_job_id":null,"html_url":"https://github.com/metaneutrons/KnxMonitor","commit_stats":null,"previous_names":["metaneutrons/knxmonitor"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/metaneutrons/KnxMonitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaneutrons%2FKnxMonitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaneutrons%2FKnxMonitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaneutrons%2FKnxMonitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaneutrons%2FKnxMonitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metaneutrons","download_url":"https://codeload.github.com/metaneutrons/KnxMonitor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metaneutrons%2FKnxMonitor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270183606,"owners_count":24541341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["building-automation","csharp","debugging","dotnet","eib","enterprise","iot","knx","monitoring","smart-home"],"created_at":"2025-08-13T05:17:07.675Z","updated_at":"2026-06-23T22:03:38.966Z","avatar_url":"https://github.com/metaneutrons.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![KNX Monitor](https://img.shields.io/badge/KNX-Monitor-blue) ![.NET 9.0](https://img.shields.io/badge/.NET-9.0-purple) ![Docker](https://img.shields.io/badge/Docker-Ready-blue) ![Terminal.Gui V2](https://img.shields.io/badge/Terminal.Gui-V2-green)\n\n# KNX Monitor\n\nA visual, colorful command-line application for monitoring KNX/EIB bus activity with **Terminal.Gui V2 interface**.\n\n## 🏆 Features\n\n- 🎨 **Terminal.Gui V2 Interface**: Beautiful, interactive TUI with real-time updates\n- 🔄 **Dual-Mode Architecture**: Automatic switching between TUI and logging modes\n- 🌐 **Modern Web Interface**: Real-time browser-based monitoring with live updates and filtering\n- 🔌 **Multiple Connection Types**: Support for IP Tunneling, IP Routing, and USB\n- 🔍 **Real-time Monitoring**: Live display of all KNX bus activity with zero flickering\n- 🎯 **Advanced Filtering**: Interactive filter dialogs with pattern matching\n- 📊 **Rich Status Display**: Connection status, message count, and uptime tracking\n- 🧠 **Advanced DPT Decoding**: Falcon SDK-powered data point type decoding with auto-detection\n- 🎨 **Smart Value Formatting**: Context-aware display of decoded values (temperatures, percentages, etc.) with KNX group address database support\n- 🐳 **Docker Ready**: Development and production Docker containers\n- ⚡ **Hot Reload**: Development mode with automatic code reloading\n- 🎹 **Keyboard Shortcuts**: Full keyboard navigation and shortcuts\n- 📤 **Export Functionality**: Export messages to CSV format\n- 🎨 **Color Coding**: Age-based and type-based color coding for messages\n\n## 🧠 Advanced DPT Decoding\n\nKNX Monitor features sophisticated Data Point Type (DPT) decoding using the Falcon SDK:\n\n### Supported DPT Types\n\n- **DPT 1.xxx**: Boolean values with context-aware formatting\n  - `1.001` Switch: `On/Off`\n  - `1.008` Up/Down: `Up/Down`\n  - `1.009` Open/Close: `Open/Close`\n- **DPT 5.xxx**: 8-bit unsigned values\n  - `5.001` Scaling: `75%`\n  - `5.003` Angle: `180°`\n- **DPT 9.xxx**: 2-byte float values with proper units\n  - `9.001` Temperature: `21.5°C`\n  - `9.004` Illuminance: `1500 lux`\n  - `9.005` Wind Speed: `5.2 m/s`\n  - `9.006` Pressure: `1013 Pa`\n  - `9.007` Humidity: `65.0%`\n- **DPT 14.xxx**: 4-byte IEEE 754 float values\n  - `14.019` Electric Current: `16.5 A`\n  - `14.027` Frequency: `50.0 Hz`\n  - `14.056` Power: `1500.0 W`\n  - `14.076` Voltage: `230.0 V`\n\n## 🖥️ Display Modes\n\n### Interactive Mode (Terminal.Gui V2)\n\nWhen running in an interactive terminal, KNX Monitor automatically launches the **Terminal.Gui V2 interface**:\n\n### Web Interface\n\nKNX Monitor includes a **modern web interface** that provides real-time monitoring through your browser:\n\n- **Automatic activation**: Starts when running in containers, with redirected output, or using `-l/--logging-mode`\n- **Manual activation**: Use `-l/--logging-mode` to force web interface mode\n- **Default URL**: `http://localhost:8671` (configurable via `--http-port`)\n- **Features**:\n  - 📊 Live message table with real-time updates\n  - 🔍 Advanced filtering (supports patterns like `1/2/*` and exact matches)\n  - 📤 CSV export functionality\n  - 📈 Connection status and message count display\n  - 🎨 Clean, responsive design\n\n**Access the web interface**: Open `http://localhost:8671` in your browser when running in non-TUI mode.\n\n### Logging Mode (Console Output)\n\nWhen output is redirected or running in containers, automatically switches to logging mode:\n\n```plaintext\n[14:32:15.123] Write 1.1.5 -\u003e 1/2/1 = 75 (Normal)\n[14:32:15.456] Read 1.1.10 -\u003e 1/2/5 = Empty (Normal)\n[14:32:15.789] Response 1.1.5 -\u003e 1/2/5 = false (Normal)\n```\n\n## Quick Start\n\n### Using .NET CLI\n\n```bash\n# Install dependencies\ndotnet restore\n\n# Run with default settings (connects to knxd via tunneling)\ndotnet run\n\n# Run with custom settings\ndotnet run -- --connection-type tunnel --gateway 192.168.2.8 --verbose\n```\n\n## 🛠️ Command Line Options\n\n| Option | Short | Description | Default | Example |\n|--------|-------|-------------|---------|---------|\n| `--gateway` | `-g` | KNX gateway IP address | `localhost` | `--gateway 192.168.1.100` |\n| `--connection-type` | `-c` | Connection type | `tunnel` | `--connection-type router` |\n| `--port` | `-p` | Gateway port | `3671` | `--port 3672` |\n| `--multicast-address` | `-m` | Multicast address (router mode) | `224.0.23.12` | `--multicast-address 224.0.23.13` |\n| `--verbose` | `-v` | **Enable verbose logging** | `false` | `--verbose` |\n| `--filter` | `-f` | Group address filter | None | `--filter \"1/2/*\"` |\n| `--csv` | | Path to ETS CSV export | None | `--csv addresses.csv` |\n| `--xml` | | Path to ETS XML export | None | `--xml project.xml` |\n| `--logging-mode` | | Logging mode | `auto` | `--logging-mode console` |\n| `--http-port` | | Web UI port | `8080` | `--http-port 8671` |\n\n### 🔍 Verbose Mode\n\nThe `--verbose` flag enables detailed logging for debugging and development:\n\n**Normal Mode (default):**\n```bash\ndotnet run -- --gateway 192.168.1.100\n# Clean output - only KNX monitoring messages\n[22:01:24.022] Write 1.1.40 -\u003e 5/1/40 = 22.80°C (Raw: 0891)\n```\n\n**Verbose Mode:**\n```bash\ndotnet run -- --gateway 192.168.1.100 --verbose\n# Detailed logging including:\n# - Full exception stack traces\n# - ASP.NET Core Kestrel startup messages\n# - Connection debugging information\n# - Internal component logging\n```\n\n## ⌨️ Keyboard Shortcuts (Interactive Mode)\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| **F1** | Help | Show keyboard shortcuts help |\n| **F2** | Filter | Open filter dialog |\n| **F3** | Clear | Clear all messages |\n| **F5** | Refresh | Refresh display |\n| **F9** | Export | Export messages to CSV |\n| **F10** | Quit | Exit application |\n| **Ctrl+C** | Quit | Exit application |\n| **Ctrl+R** | Refresh | Refresh display |\n| **Ctrl+F** | Filter | Open filter dialog |\n| **Ctrl+E** | Export | Export messages |\n| **Arrow Keys** | Navigate | Navigate table |\n| **Page Up/Down** | Scroll | Scroll through messages |\n| **Home/End** | Jump | Go to first/last message |\n\n## 🎨 Color Coding (Interactive Mode)\n\n- 🟢 **Green**: Recent messages (\u003c 1 second), Write operations, Connected status\n- 🟡 **Yellow**: Medium age messages (\u003c 5 seconds), Response operations, Values\n- 🟠 **Orange**: Older messages (\u003c 30 seconds), Urgent priority\n- 🔵 **Cyan**: Read operations, IP Tunneling connection\n- 🟣 **Magenta**: IP Routing connection\n- 🔴 **Red**: System priority, Disconnected status, Errors\n- ⚪ **White/Dim**: Normal priority, Very old messages\n\n## Command Line Options\n\n| Option | Short | Description | Default |\n|--------|-------|-------------|---------|\n| `--connection-type` | `-c` | Connection type: `tunnel`, `router`, or `usb` | `tunnel` |\n| `--gateway` | `-g` | KNX gateway address (required for tunnel/router) | `knxd` |\n| `--port` | `-p` | KNX gateway port | `3671` |\n| `--verbose` | `-v` | Enable verbose logging | `false` |\n| `--filter` | `-f` | Filter group addresses (e.g., `1/2/*` or `1/2/3`) | None |\n| `--csv` |  | Path to KNX group address CSV file (ETS export format) | None |\n| `--xml` |  | Path to KNX group address XML export (KNX GA Export 01) | None |\n| `--logging-mode` | `-l` | Force simple logging mode instead of TUI | `false` |\n| `--http-port` |  | HTTP port for the web UI (non-TUI mode) | `8671` |\n| `--test` | `-t` | Run DPT decoding tests and exit | `false` |\n\n## Group Address Database Support\n\nKNX Monitor supports loading group address databases from ETS exports in two formats:\n\n### CSV Format (ETS Export)\n\n- Use `--csv path/to/addresses.csv`\n- Requires ETS export format with semicolon separation\n- Expected columns: Main, Middle, Sub, Address, Central, Unfiltered, Description, DatapointType, Security\n\n### XML Format (KNX GA Export 01)\n\n- Use `--xml path/to/addresses.xml`\n- Supports KNX GA XML export format with namespace `http://knx.org/xml/ga-export/01`\n- Automatically extracts group addresses, names, descriptions, and DPT information\n- Handles hierarchical group names with automatic splitting\n\n**Note**: `--csv` and `--xml` options are mutually exclusive - use only one at a time.\n\n## Usage Examples\n\n### Basic Monitoring\n\n```bash\n# Monitor KNX bus via IP tunneling to knxd\ndotnet run\n\n# Monitor with verbose logging\ndotnet run -- --verbose\n\n# Monitor with group address database (CSV)\ndotnet run -- --csv ~/Documents/knx-addresses.csv\n\n# Monitor with group address database (XML)\ndotnet run -- --xml ~/Documents/knx-groupaddress.xml\n\n# Monitor specific group addresses\ndotnet run -- --filter \"1/2/*\"\n\n# Use web interface (force non-TUI mode)\ndotnet run -- --logging-mode\n# Then open http://localhost:8671 in your browser\n\n# Web interface on custom port\ndotnet run -- --logging-mode --http-port 9000\n# Then open http://localhost:9000 in your browser\n```\n\n### Different Connection Types\n\n```bash\n# IP Tunneling (most common)\ndotnet run -- --connection-type tunnel --gateway 192.168.1.100\n\n# IP Routing (multicast)\ndotnet run -- --connection-type router --gateway 224.0.23.12\n\n# USB Interface\ndotnet run -- --connection-type usb\n```\n\n### Monitor Production KNX Installation\n\n```bash\n# Connect to real KNX/IP gateway\ndotnet run -- --connection-type tunnel --gateway 192.168.1.100 --port 3671\n\n# Monitor only lighting controls\ndotnet run -- --gateway 192.168.1.100 --filter \"1/1/*\"\n\n# Monitor with IP routing (multicast)\ndotnet run -- --connection-type router --gateway 224.0.23.12\n```\n\n## Development\n\n### Dependencies\n\n- **Knx.Falcon.Sdk**: KNX/EIB communication\n- **Terminal.Gui V2**: Terminal User Interface\n- **System.CommandLine**: Command-line argument parsing\n- **Spectre.Console**: Beautiful console output for logging mode\n- **Microsoft.Extensions.Hosting**: Dependency injection and hosting\n- **Microsoft.Extensions.Logging**: Structured logging\n\n### Building\n\n```bash\n# Restore dependencies\ndotnet restore\n\n# Build project\ndotnet build\n\n# Build Docker images\ndocker build  .\n```\n\n## License\n\nThis project is part of SnapDog2 and is licensed under the GNU GPL v3.0.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Test with both development and production Docker builds\n5. Submit a pull request\n\n---\n\n**Happy KNX Monitoring!** 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaneutrons%2Fknxmonitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetaneutrons%2Fknxmonitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaneutrons%2Fknxmonitor/lists"}