Initial commit - cadMyDC V1.5

Projet d'interface graphique automatique pour Designer de Distech Controls.
  Interface type MyDC Control pour automates Eclypse V1.19+.

  Fonctionnalités :
  - Navigation par catégories de points BACnet
  - Support multilingue (FR/EN)
  - Thème clair/sombre
  - Pages spécialisées (alarmes, tendances, programmes, dérogations)
This commit is contained in:
2025-10-29 00:48:51 +01:00
commit 5e3ee8a09b
24 changed files with 440 additions and 0 deletions

40
.gitignore vendored Normal file
View File

@@ -0,0 +1,40 @@
# Fichiers de configuration contenant des secrets
.env
*.env
*.env.example
# Token Gitea
.gitea-token
# Fichiers ZIP temporaires (packages)
*.zip
*.php
# Fichiers temporaires PHP
*.tmp
*.temp
# Fichiers de logs
*.log
# Fichiers systeme
.DS_Store
Thumbs.db
desktop.ini
# Fichiers de backup
*.bak
*.backup
*~
# Dossiers de build/cache
.cache/
tmp/
temp/
build/
# IDE et editeurs
.vscode/
.idea/
*.swp
*.swo

367
README.md Normal file
View File

@@ -0,0 +1,367 @@
# cadMyDC - Alternative à MyDC Controls
*English version below*
**Version:** 1.5\
**Auteur:** Charles-Arthur DAVID\
**Plateforme:** Distech Controls Designer\
**Compatibilité:** Automates Eclypse (Version V1.19)\
**Version Facilities** Disponible dans ce projet : https://git.cadjou.net/DistechControls/cadMyDCFacilities
## Description
cadMyDC est un projet d'interface graphique automatique pour l'application Designer de Distech Controls. Il s'adapte aux points contenus dans le programme GFX en affichant les points par type, ainsi que les tendances, les programmes horaires, les alarmes et les points en dérogation. Il crée une interface utilisateur intuitive ressemblant à MyDC Control pour visualiser et contrôler les points BACnet des automates de la gamme Eclypse en version V1.
Ce projet offre une navigation structurée par catégories de points (entrées/sorties analogiques, digitales, multi-états, tendances, programmes horaires, etc.) avec support multilingue (Français/Anglais).
**Note importante :** Pour les projets avec un **ECY-Display ou Horyzon-C en BI**, MyDC Control pour les ECY V1 n'est pas disponible. Ce projet cadMyDC offre une alternative générique fonctionnelle.
## Fonctionnalités
- **Navigation par catégories** : Organisation automatique des points BACnet par type
- Entrées Analogiques (Analog Input)
- Sorties Analogiques (Analog Output)
- Valeurs Analogiques (Analog Value)
- Entrées Digitales (Binary Input)
- Sorties Digitales (Binary Output)
- Valeurs Digitales (Binary Value)
- Entrées Multi-états (Multi State Input)
- Valeurs Multi-états (Multi State Value)
- Tendances (Trend Log)
- Programmes Horaires (Schedule)
- Dérogations (Override)
- Alarmes (Alarms)
- **Support multilingue** : Interface disponible en Français et Anglais
- **Thème clair/sombre** : Personnalisation de l'apparence selon les préférences
- **Interface responsive** : Adaptation automatique à différentes tailles d'écran
## Prérequis
- Automate **Eclypse V1.19** (minimum) de Distech Controls
- Accès réseau à l'automate
- **XpressNetwork Utilities** (pour l'importation via XNU) ou accès à l'**interface web Designer**
- **DC Library** (à importer séparément - obligatoire pour le bon fonctionnement du projet)
## Installation
### 1. Téléchargement du projet
Téléchargez la version souhaitée dans la section Paquets:
[cadMyDC_V1.5.zip](https://git.cadjou.net/api/packages/DistechControls/generic/cadMyDC/1.5/cadMyDC_V1.5.zip)
### 2. Importation dans Designer
#### a. Via l'interface web
1. Ouvrez l'interface web **Designer**
2. Dans le menu principal, allez dans **Projet > Importer un projet** (ou **Project > Import Project**)
3. Naviguez jusqu'au dossier qui contient `cadMyDC_V1.XX.zip`
4. Sélectionnez le fichier zip **cadMyDC_V1.XX.zip**
5. Cliquez sur **Ok**
#### b. Via XpressNetwork Utilities
1. Ouvrez XpressNetwork Utilities
2. Ajoutez le ou les automates ECY V1.19 (minimum) soit avec le Find / l'import ou manuellement
3. Sélectionnez le ou les automates souhaités
4. Cliquer sur l'icone Eclypse Designer
3. Naviguez jusqu'au dossier qui contient `cadMyDC_V1.XX.zip`
4. Sélectionnez le fichier zip **cadMyDC_V1.XX.zip**
5. Cliquez sur **Ok**
### 3. Importer la DC Library
**IMPORTANT :** Le projet cadMyDC nécessite impérativement la **DC Library** pour fonctionner correctement.
Il est disponible dans Software Center.
Importez la DC Library de la même manière que le projet cadMyDC en suivant les mêmes étapes (via l'interface web ou via XpressNetwork Utilities).
## Structure du projet
```
cadMyDC/
├── _proj.json # Configuration du projet
├── index.dg5 # Page principale avec navigation
├── pages/ # Pages spécialisées
│ ├── alarms.dg5 # Gestion des alarmes
│ ├── loadingPage.dg5 # Page de chargement
│ ├── noData.dg5 # Page sans données
│ ├── override.dg5 # Gestion des dérogations
│ ├── schedule.dg5 # Gestion des programmes horaires
│ ├── showData.dg5 # Affichage des données
│ └── trend.dg5 # Affichage des tendances
├── palette/ # Widgets personnalisés (vide actuellement)
└── fonts/ # Polices personnalisées
```
## Utilisation
### Accès à l'interface
Une fois le projet importé et l'automate configuré, accédez à l'interface via le navigateur web en utilisant l'une des URL suivantes :
#### Français
```
https://[IP_AUTOMATE]/eclypse/envysion/viewer.html?proj=cadMyDC&lan=fr&force-redirect=true
```
#### Anglais
```
https://[IP_AUTOMATE]/eclypse/envysion/viewer.html?proj=cadMyDC&force-redirect=true
```
**Note :** Remplacez `[IP_AUTOMATE]` par l'adresse IP de votre automate Eclypse.
**Note :** L'option `force-redirect=true` bloque l'accès aux autres pages web de l'automate si utilisateur n'est pas admin
### Configuration de la page d'accueil utilisateur
Vous pouvez configurer l'URL avec le paramètre de langue dans la **page d'accueil utilisateur** de l'automate pour définir la langue par défaut.
### Navigation
L'interface présente un menu latéral avec toutes les catégories de points détectées automatiquement. Cliquez sur une catégorie pour afficher les points correspondants.
### Visualisation des données
- Les **points standards** (AI, AO, AV, BI, BO, BV, MSI, MSV) affichent leurs valeurs et permettent les modifications (selon les droits)
- Les **tendances** (Trend Log) affichent les graphiques historiques
- Les **programmes** (Schedule) permettent la visualisation et modification des plannings
- Les **dérogations** (Override) permettent de forcer temporairement des valeurs
- Les **alarmes** (Alarms) affichent l'état des alarmes actives
## Dépannage
### Le projet ne s'importe pas
- Vérifiez que vous importez bien le fichier ZIP `cadMyDC_V1.XX.zip`
- Assurez-vous d'avoir importé la **DC Library** avant ou après le projet
- Vérifiez que votre automate est en version **V1.19 minimum**
### Aucun point n'apparaît
- Vérifiez que l'automate est bien connecté au réseau
- Assurez-vous que l'action `Add Local Device tree` s'est exécutée (vérifiez dans `/Data/Local Device`)
- Vérifiez que votre programme GFX contient des points BACnet
- Actualisez la page du navigateur
### Problème de langue
- Vérifiez que vous utilisez le bon paramètre dans l'URL : `&lan=fr` pour le français
- Pour forcer la langue française, utilisez l'URL complète : `/eclypse/envysion/viewer.html?proj=cadMyDC&lan=fr`
- Sans paramètre de langue, l'interface s'affiche en anglais par défaut
### Le projet ne fonctionne pas correctement
- **Vérifiez impérativement que la DC Library est importée** - c'est la cause la plus fréquente de dysfonctionnement
- Vérifiez les logs dans l'interface Designer pour identifier les erreurs
- Réimportez le projet et la DC Library si nécessaire
## Support et Contribution
**IMPORTANT : Ce projet est un développement personnel indépendant.**
- Ce projet a été développé par Charles-Arthur DAVID à titre personnel
- **Distech Controls n'est pas responsable de ce projet et ne le supporte pas**
- **Aucune demande de support ne sera prise en charge par Distech Controls**
- Distech Controls ne fournit aucune garantie ni assistance technique pour ce projet
### Comment obtenir de l'aide
La **seule façon de remonter un problème ou une suggestion** est de passer par le système de tickets sur Gitea :
**Ouvrir un ticket sur : https://git.cadjou.net/DistechControls/cadMyDC/issues**
Toute demande de support adressée à Distech Controls concernant ce projet sera refusée.
## Historique des versions
### Version 1.5 (Actuelle)
- Interface de navigation structurée par catégories
- Support multilingue FR/EN (via paramètre URL)
- Thèmes clair/sombre
- Pages spécialisées pour alarmes, tendances, programmes, dérogations
- Auto-découverte des points BACnet
- Compatible Eclypse V1.19+
---
# cadMyDC - MyDC Controls of Equivalence
**Version:** 1.5\
**Author:** Charles-Arthur DAVID\
**Platform:** Distech Controls Designer\
**Compatibility:** Eclypse Controllers (Version V1.19)\
**Facilities Version** Available in this project : https://git.cadjou.net/DistechControls/cadMyDCFacilities
## Description
cadMyDC is an automatic graphical interface project for Distech Controls Designer application. It adapts to the points contained in the GFX program by displaying points by type, as well as trends, schedules, alarms and override points. It creates an intuitive user interface similar to MyDC Control to view and control BACnet points of Eclypse V1 series controllers.
This project offers structured navigation by point categories (analog/digital/multi-state inputs/outputs, trends, schedules, etc.) with multilingual support (French/English).
**Important note:** For projects with an **ECY-Display or Horyzon-C in BI**, MyDC Control for ECY V1 is not available. This cadMyDC project offers a functional generic alternative.
## Features
- **Navigation by categories**: Automatic organization of BACnet points by type
- Analog Inputs
- Analog Outputs
- Analog Values
- Binary Inputs
- Binary Outputs
- Binary Values
- Multi State Inputs
- Multi State Values
- Trend Logs
- Schedules
- Overrides
- Alarms
- **Multilingual support**: Interface available in French and English
- **Light/Dark theme**: Appearance customization according to preferences
- **Responsive interface**: Automatic adaptation to different screen sizes
## Prerequisites
- **Eclypse V1.19** (minimum) controller from Distech Controls
- Network access to the controller
- **XpressNetwork Utilities** (for import via XNU) or access to **Designer web interface**
- **DC Library** (to be imported separately - mandatory for proper project operation)
## Installation
### 1. Project Download
Download the desired version from the Packages section:
[cadMyDC_V1.5.zip](https://git.cadjou.net/api/packages/DistechControls/generic/cadMyDC/1.5/cadMyDC_V1.5.zip)
### 2. Import into Designer
#### a. Via web interface
1. Open the **Designer** web interface
2. In the main menu, go to **Project > Import Project**
3. Navigate to the folder containing `cadMyDC_V1.XX.zip`
4. Select the zip file **cadMyDC_V1.XX.zip**
5. Click **Ok**
#### b. Via XpressNetwork Utilities
1. Open XpressNetwork Utilities
2. Add the ECY V1.19 (minimum) controller(s) either with Find/Import or manually
3. Select the desired controller(s)
4. Click on the Eclypse Designer icon
3. Navigate to the folder containing `cadMyDC_V1.XX.zip`
4. Select the zip file **cadMyDC_V1.XX.zip**
5. Click **Ok**
### 3. Import DC Library
**IMPORTANT:** The cadMyDC project absolutely requires the **DC Library** to function properly.
It is available in Software Center.
Import the DC Library the same way as the cadMyDC project by following the same steps (via web interface or via XpressNetwork Utilities).
## Project Structure
```
cadMyDC/
├── _proj.json # Project configuration
├── index.dg5 # Main page with navigation
├── pages/ # Specialized pages
│ ├── alarms.dg5 # Alarm management
│ ├── loadingPage.dg5 # Loading page
│ ├── noData.dg5 # No data page
│ ├── override.dg5 # Override management
│ ├── schedule.dg5 # Schedule management
│ ├── showData.dg5 # Data display
│ └── trend.dg5 # Trend display
├── palette/ # Custom widgets (currently empty)
└── fonts/ # Custom fonts
```
## Usage
### Interface Access
Once the project is imported and the controller configured, access the interface via web browser using one of the following URLs:
#### French
```
https://[CONTROLLER_IP]/eclypse/envysion/viewer.html?proj=cadMyDC&lan=fr&force-redirect=true
```
#### English
```
https://[CONTROLLER_IP]/eclypse/envysion/viewer.html?proj=cadMyDC&force-redirect=true
```
**Note:** Replace `[CONTROLLER_IP]` with the IP address of your Eclypse controller.
**Note:** The `force-redirect=true` option blocks access to other web pages of the controller if user is not admin
### User Home Page Configuration
You can configure the URL with the language parameter in the controller's **user home page** to set the default language.
### Navigation
The interface presents a side menu with all automatically detected point categories. Click on a category to display corresponding points.
### Data Visualization
- **Standard points** (AI, AO, AV, BI, BO, BV, MSI, MSV) display their values and allow modifications (according to rights)
- **Trends** (Trend Log) display historical graphs
- **Schedules** allow visualization and modification of schedules
- **Overrides** allow temporary forcing of values
- **Alarms** display the status of active alarms
## Troubleshooting
### Project won't import
- Verify that you are importing the ZIP file `cadMyDC_V1.XX.zip`
- Make sure you have imported the **DC Library** before or after the project
- Verify that your controller is version **V1.19 minimum**
### No points appear
- Verify that the controller is properly connected to the network
- Make sure the `Add Local Device tree` action has executed (check in `/Data/Local Device`)
- Verify that your GFX program contains BACnet points
- Refresh the browser page
### Language issue
- Verify that you are using the correct parameter in the URL: `&lan=fr` for French
- To force French language, use the complete URL: `/eclypse/envysion/viewer.html?proj=cadMyDC&lan=fr`
- Without language parameter, the interface displays in English by default
### Project doesn't work properly
- **Verify that the DC Library is imported** - this is the most common cause of malfunction
- Check the logs in the Designer interface to identify errors
- Reimport the project and DC Library if necessary
## Support and Contribution
**IMPORTANT: This project is an independent personal development.**
- This project was developed by Charles-Arthur DAVID on a personal basis
- **Distech Controls is not responsible for this project and does not support it**
- **No support request will be handled by Distech Controls**
- Distech Controls provides no warranty or technical assistance for this project
### How to Get Help
The **only way to report a problem or suggestion** is through the ticket system on Gitea:
**Open a ticket at: https://git.cadjou.net/DistechControls/cadMyDC/issues**
Any support request sent to Distech Controls regarding this project will be refused.
## Version History
### Version 1.5 (Current)
- Structured navigation interface by categories
- Multilingual support FR/EN (via URL parameter)
- Light/dark themes
- Specialized pages for alarms, trends, schedules, overrides
- Auto-discovery of BACnet points
- Compatible with Eclypse V1.19+

25
cadMyDC/_proj.json Normal file
View File

@@ -0,0 +1,25 @@
{
"name" : "cadMyDC",
"owner" : "admin",
"canRead" : [
"all"
],
"canWrite" : [
],
"isTemplate" : false,
"isLibrary" : false,
"category" : null,
"description" : "MyDC Controls of Equivalence by Charles-Arthur DAVID",
"version" : "1.5",
"firstDayOfWeek" : 0,
"loadExternalConfig" : false,
"protected" : false,
"loadViewerLocale" : false,
"defaultWidth" : 1,
"defaultHeight" : 1,
"vendor" : "",
"componentName" : "",
"widgetFile" : "index.dg5",
"uiWidgets" : "",
"defaultTheme" : ""
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
cadMyDC/index.dg5 Normal file

File diff suppressed because one or more lines are too long

1
cadMyDC/pages/alarms.dg5 Normal file
View File

@@ -0,0 +1 @@
{"@type":"group","width":"100%","height":"100%","clipContent":true,"WidgetAlarms":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetAlarms@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Gadget d'alarmes"},"@array":[["WidgetAlarms"]],"@ver":10232}

View File

@@ -0,0 +1 @@
{"@type":"group","width":"100%","height":"100%","clipContent":true,"rotate":0,"group":{"@type":"group","layout":"absolute","top":10,"creationPolicy":"onDisplay","width":40,"height":40,"cube":{"@type":"img","src":"lib/dcIcons/assets/Light Theme/Main Navigation/cube.svg","width":"100%","height":"100%","tilingOpt":{"@type":"tilingOpt","fillType":"image","tiling":"contain","hAlign":"center","vAlign":"middle","angle":0},"rotate":0},"scaleContent":"fitRatio","contentWidth":40,"contentHeight":40,"hCenter":0,"rotate":["stopwatch.output"],"stopwatch":{"@type":"stopwatch","interval":0.01,"step":5,"!ps":["enabled","interval","step","output"],"!x":370,"!y":63,"enabled":true,"modulo":360},"!df":true,"@array":[["cube"]]},"@array":[["group"]],"@ver":10094}

1
cadMyDC/pages/noData.dg5 Normal file
View File

@@ -0,0 +1 @@
{"@type":"group","width":"100%","height":"100%","clipContent":true,"Text":{"@type":"text","cornerRadius":0,"multiline":false,"fontSize":"26","border":{"@type":"fill","gradient":{"@type":"gradient","@array":[{"ratio":0,"color":"#000000","alpha":1},{"ratio":100,"color":"#ffffff","alpha":1}]},"color":16777215},"text":"No Data","color":0,"fontFamily":"Roboto-Medium.ttf","fontWeight":"bold","paddingLeft":10,"paddingRight":10,"paddingTop":10,"paddingBottom":10,"keepEqualPaddings":true,"hCenter":0},"@array":[["Text"]],"@ver":10094}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"@type":"group","width":"100%","height":"100%","clipContent":true,"WidgetSchedules":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetSchedules@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Schedules"},"@array":[["WidgetSchedules"]],"@ver":10094}

View File

@@ -0,0 +1 @@
{"@type":"group","Group":{"@type":"group","symbol":"dataBoxRow","renderer":{"map":{"dataPath":["@parent.@data.path"]}},"Analog_Input":{"@type":"getChildren","path":["@parent.@parent.@params.dataPath"],"autoRun":true,"!ps":["path","output","error"],"!x":335,"!y":100},"data":["Analog_Input.output"],"!df":true,"layout":"vertical","alignItems":"flex-start","width":"100.0%","@array":[]},"width":"100%","height":"100%","clipContent":true,"layout":"absolute","alignItems":"flex-start","vScroll":"auto","symbol":"","renderer":{"map":{"dataPath":""}},"@array":[["Group"]],"@params":{"!var":[{"n":"dataPath","t":"nodepath"}],"!layout":{"type":"vbox","children":["dataPath"]},"dataPath":"/Data/Local+Device/Analog+Input"},"@symbols":{"dataBoxRow":{"@type":"group","WidgetDataBox":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetDataBox@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Databox","showHeader":false,"allowResize":"horizontal","nodeList":["bind!nodeList.output"],"bind!nodeList":{"@type":"propMapBinding","!ps":["output"],"@array":[{"@type":"propMapItem","path":["@parent.@parent.@parent.@params.dataPath"],"dg!getNode":{"@type":"getNode","service":["@parent.service"],"path":["@parent.path"]},"dg!Time":1706521306,"!ps":["path"],"@params":{"!var":[{"n":"label","t":"string","isOutput":true},{"n":"numberFormat","t":"string","isOutput":true},{"n":"showPriority","t":"bool","isOutput":true},{"n":"showUnits","t":"bool","isOutput":true},{"n":"showPriorityParameter","t":"bool","isOutput":true},{"n":"showTrends","t":"bool","isOutput":true},{"n":"bindingRefreshRate","t":"number","isOutput":true},{"n":"inlineActions","t":"bool","isOutput":true},{"n":"showActions","t":"bool","isOutput":true},{"n":"actions","t":"multiselectEnum","isOutput":true}],"label":["@parent.dg!getNode.name"]}}]},"!df":true},"width":"100.0%","height":41,"clipContent":true,"scaleContent":"none","layout":"absolute","creationPolicy":"onDisplay","@array":[["WidgetDataBox"]],"@params":{"!reuse":true,"!var":[{"n":"dataPath","t":"string"}],"!layout":{"type":"vbox","children":["dataPath"]}},"@W":1306,"@H":41}},"@ver":10094}

1
cadMyDC/pages/trend.dg5 Normal file
View File

@@ -0,0 +1 @@
{"@type":"group","WidgetTrendBuilder":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetTrendBuilder@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Trend Builder","allTrends":true},"width":"100%","height":"100%","clipContent":true,"@array":[["WidgetTrendBuilder"]],"@ver":9959}

0
cadMyDC/palette/.gitkeep Normal file
View File