Prima release da quando il modulo è in esercizio su impianti reali. Il tema di fondo è rendere visibile quello che prima succedeva in silenzio: avanzamento delle operazioni lunghe, errori, versione installata, semantica dei punti.
⚠️ Aggiornando da 3.x, fate prima una copia delconfig.bog. Il servizio è passato daBComponentaBAbstractService— necessario per poter segnalare il fault. La migrazione è stata verificata caricando un bog scritto dalla 3.1.1: configurazione, albero Modbus e discovery report vengono conservati, e i nuovi slot compaiono con i valori di default. Anche il ritorno alla 3.1.1 funziona, perché gli slot che il codice vecchio non conosce vengono ignorati. Il test però è stato fatto su un impianto di prova (due centrali, 24 dispositivi, nessuna modifica manuale all'albero): su impianti grandi o personalizzati a mano, la copia di sicurezza resta la mossa giusta.
✨ Novità
- Discover e Commit sono job Niagara. Barra di avanzamento con percentuale, annullamento reale ed esito finale riportato dalla station. Prima la UI indovinava a tempo quando l'operazione fosse finita: con import oltre i 4 secondi la tabella restava vuota e l'operatore rilanciava il discover.
- Gli errori di import si vedono nell'albero. Il servizio va in fault con la causa leggibile accanto, e torna normale da solo al primo import riuscito. Prima l'errore stava in una property da aprire a mano, e il log non è consultabile a station accesa.
- Banner di versione. Il servizio espone
moduleVersioncon versione, commit e data di build: da una segnalazione dal campo si risale subito a cosa è installato. - Tag dictionary
am8xcon tag impliciti. Ogni punto porta centrale, loop, posizione, zona e tipo dispositivo. I tag sono calcolati, non scritti nelconfig.bog: nessuno spazio occupato e nessun disallineamento dopo una rinomina. - Hierarchy pronte nella palette. Due gerarchie da trascinare in
HierarchyServiceper la vista dell'impianto per centrale e per zona, senza configurare nulla. - Nomi di slot più sicuri. Escape dei caratteri non validi, e se due dispositivi diversi reclamano lo stesso nome nella stessa centrale il secondo viene numerato invece di sovrascrivere il primo in silenzio. Lo scoping per centrale è deliberato: su siti con più centrali cablate uguali,
L01S002esiste legittimamente in ognuna. - Display name a template. Lo slot resta canonico e stabile (
L01S002, necessario perché il re-import ritrovi il punto), ma nell'albero si legge anche l'etichetta. Configurabile condisplayNameFormat, applicabile anche a un albero già importato. - Versione del modulo allineata alle release.
module.xml, banner sulla station, badge del README e tag git ora dicono lo stesso numero. Prima la station riportava1.3per una release chiamata3.1.x.
🐛 Fix
- Palette con
UnrestrictedFolder. Unb:Foldercome parent diBTagDictionary/BHierarchymandava in errore l'intera palette, non solo l'elemento sbagliato. - Path del file XML.
Sys.getStationHome()restituisce già la shared root: il codice ci appendeva un secondo segmentosharede cercava in<station>/shared/shared/. Corretto in modo retrocompatibile, gli ORD legacy continuano a risolvere. - Il pannello Database non compare più nella vista di importazione, che lavora sul solo Discover.
- Il job di commit non supera più il 100% di avanzamento e registra correttamente lo stato quando viene annullato.
🧪 Test
40 test JUnit sulla logica pura: indirizzamento Modbus, round-trip fra nome di slot e chiave dispositivo, formattazione dei display name, risoluzione dei path.
📦 Allegati
Moduli .jar firmati, compilati per Niagara 4.15:
am8xControl-rt.jaram8xControl-wb.jar
Per l'installazione vedi la Guida.
Changelog: v3.1.1...v4.0.0