Skip to content

Commit 2d7674f

Browse files
Merge pull request #11 from volkmarnissen/modbuscache
[Feature] Add number of processed calls to Modbus Status
2 parents fb52801 + 7977bd4 commit 2d7674f

File tree

7 files changed

+88
-91
lines changed

7 files changed

+88
-91
lines changed

CHANGELOG.md

Lines changed: 44 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,92 @@
11
# Changelog for angular
22

3-
## [Unreleased](https://github.com/modbus2mqtt/angular/tree/HEAD)
3+
## [v0.12.19](https://github.com/volkmarnissen/angular/tree/v0.12.19) (2025-01-16)
44

5-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.20...HEAD)
5+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.18...v0.12.19)
66

7-
**Merged pull requests:**
7+
## [v0.12.18](https://github.com/volkmarnissen/angular/tree/v0.12.18) (2025-01-15)
88

9-
- Update Changelog [\#10](https://github.com/modbus2mqtt/angular/pull/10) ([volkmarnissen](https://github.com/volkmarnissen))
10-
- \[bug\]Modbus Error Handling, Slave Specification Detection, TCP RTU bridge, Fixes [\#9](https://github.com/modbus2mqtt/angular/pull/9) ([volkmarnissen](https://github.com/volkmarnissen))
11-
- \[bug\]Modbus Error Handling, Slave Specification Detection, TCP RTU bridge, Fixes [\#8](https://github.com/modbus2mqtt/angular/pull/8) ([volkmarnissen](https://github.com/volkmarnissen))
12-
- Angular TcpBridge Fix [\#7](https://github.com/modbus2mqtt/angular/pull/7) ([volkmarnissen](https://github.com/volkmarnissen))
13-
- \[bug\]Modbus Error Handling, Slave Specification Detection, TCP RTU bridge, Fixes [\#6](https://github.com/modbus2mqtt/angular/pull/6) ([volkmarnissen](https://github.com/volkmarnissen))
14-
- Modbus Error Handling and Monitoring [\#5](https://github.com/modbus2mqtt/angular/pull/5) ([volkmarnissen](https://github.com/volkmarnissen))
9+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.17...v0.12.18)
1510

16-
## [v0.12.20](https://github.com/modbus2mqtt/angular/tree/v0.12.20) (2025-04-14)
11+
## [v0.12.17](https://github.com/volkmarnissen/angular/tree/v0.12.17) (2025-01-02)
1712

18-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.19...v0.12.20)
13+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.16...v0.12.17)
1914

20-
**Merged pull requests:**
15+
## [v0.12.16](https://github.com/volkmarnissen/angular/tree/v0.12.16) (2024-12-31)
2116

22-
- Please update me [\#4](https://github.com/modbus2mqtt/angular/pull/4) ([volkmarnissen](https://github.com/volkmarnissen))
23-
- Fixed package-lock.json [\#3](https://github.com/modbus2mqtt/angular/pull/3) ([volkmarnissen](https://github.com/volkmarnissen))
24-
- Adding support for discrete inputs [\#2](https://github.com/modbus2mqtt/angular/pull/2) ([arturmietek](https://github.com/arturmietek))
17+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.15...v0.12.16)
2518

26-
## [v0.12.19](https://github.com/modbus2mqtt/angular/tree/v0.12.19) (2025-01-16)
19+
## [v0.12.15](https://github.com/volkmarnissen/angular/tree/v0.12.15) (2024-12-30)
2720

28-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.18...v0.12.19)
21+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.14...v0.12.15)
2922

30-
## [v0.12.18](https://github.com/modbus2mqtt/angular/tree/v0.12.18) (2025-01-15)
23+
## [v0.12.14](https://github.com/volkmarnissen/angular/tree/v0.12.14) (2024-12-30)
3124

32-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.17...v0.12.18)
25+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/0.12.14...v0.12.14)
3326

34-
## [v0.12.17](https://github.com/modbus2mqtt/angular/tree/v0.12.17) (2025-01-02)
27+
## [0.12.14](https://github.com/volkmarnissen/angular/tree/0.12.14) (2024-12-13)
3528

36-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.16...v0.12.17)
29+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.13...0.12.14)
3730

38-
**Merged pull requests:**
31+
## [v0.12.13](https://github.com/volkmarnissen/angular/tree/v0.12.13) (2024-12-13)
3932

40-
- Adding signed int 32 and unsigned int 32 options to number format [\#1](https://github.com/modbus2mqtt/angular/pull/1) ([arturmietek](https://github.com/arturmietek))
33+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.12...v0.12.13)
4134

42-
## [v0.12.16](https://github.com/modbus2mqtt/angular/tree/v0.12.16) (2024-12-31)
35+
## [v0.12.12](https://github.com/volkmarnissen/angular/tree/v0.12.12) (2024-12-11)
4336

44-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.15...v0.12.16)
37+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.11...v0.12.12)
4538

46-
## [v0.12.15](https://github.com/modbus2mqtt/angular/tree/v0.12.15) (2024-12-30)
39+
## [v0.12.11](https://github.com/volkmarnissen/angular/tree/v0.12.11) (2024-11-22)
4740

48-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.14...v0.12.15)
41+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.10...v0.12.11)
4942

50-
## [v0.12.14](https://github.com/modbus2mqtt/angular/tree/v0.12.14) (2024-12-30)
43+
## [v0.12.10](https://github.com/volkmarnissen/angular/tree/v0.12.10) (2024-11-19)
5144

52-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/0.12.14...v0.12.14)
45+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.9...v0.12.10)
5346

54-
## [0.12.14](https://github.com/modbus2mqtt/angular/tree/0.12.14) (2024-12-13)
47+
## [v0.12.9](https://github.com/volkmarnissen/angular/tree/v0.12.9) (2024-11-16)
5548

56-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.13...0.12.14)
49+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.8...v0.12.9)
5750

58-
## [v0.12.13](https://github.com/modbus2mqtt/angular/tree/v0.12.13) (2024-12-13)
51+
## [v0.12.8](https://github.com/volkmarnissen/angular/tree/v0.12.8) (2024-11-14)
5952

60-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.12...v0.12.13)
53+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.7...v0.12.8)
6154

62-
## [v0.12.12](https://github.com/modbus2mqtt/angular/tree/v0.12.12) (2024-12-11)
55+
## [v0.12.7](https://github.com/volkmarnissen/angular/tree/v0.12.7) (2024-10-23)
6356

64-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.11...v0.12.12)
57+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.6...v0.12.7)
6558

66-
## [v0.12.11](https://github.com/modbus2mqtt/angular/tree/v0.12.11) (2024-11-22)
59+
## [v0.12.6](https://github.com/volkmarnissen/angular/tree/v0.12.6) (2024-10-16)
6760

68-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.10...v0.12.11)
61+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.5...v0.12.6)
6962

70-
## [v0.12.10](https://github.com/modbus2mqtt/angular/tree/v0.12.10) (2024-11-19)
63+
## [v0.12.5](https://github.com/volkmarnissen/angular/tree/v0.12.5) (2024-09-24)
7164

72-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.9...v0.12.10)
65+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.4...v0.12.5)
7366

74-
## [v0.12.9](https://github.com/modbus2mqtt/angular/tree/v0.12.9) (2024-11-16)
67+
## [v0.12.4](https://github.com/volkmarnissen/angular/tree/v0.12.4) (2024-09-16)
7568

76-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.8...v0.12.9)
69+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.3...v0.12.4)
7770

78-
## [v0.12.8](https://github.com/modbus2mqtt/angular/tree/v0.12.8) (2024-11-14)
71+
## [v0.12.3](https://github.com/volkmarnissen/angular/tree/v0.12.3) (2024-09-06)
7972

80-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.7...v0.12.8)
73+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.2...v0.12.3)
8174

82-
## [v0.12.7](https://github.com/modbus2mqtt/angular/tree/v0.12.7) (2024-10-23)
75+
## [v0.12.2](https://github.com/volkmarnissen/angular/tree/v0.12.2) (2024-08-27)
8376

84-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.6...v0.12.7)
77+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.12.0...v0.12.2)
8578

86-
## [v0.12.6](https://github.com/modbus2mqtt/angular/tree/v0.12.6) (2024-10-16)
79+
## [v0.12.0](https://github.com/volkmarnissen/angular/tree/v0.12.0) (2024-08-16)
8780

88-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.5...v0.12.6)
81+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.11.0...v0.12.0)
8982

90-
## [v0.12.5](https://github.com/modbus2mqtt/angular/tree/v0.12.5) (2024-09-24)
83+
## [v0.11.0](https://github.com/volkmarnissen/angular/tree/v0.11.0) (2024-08-05)
9184

92-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.4...v0.12.5)
85+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/v0.10.1...v0.11.0)
9386

94-
## [v0.12.4](https://github.com/modbus2mqtt/angular/tree/v0.12.4) (2024-09-16)
87+
## [v0.10.1](https://github.com/volkmarnissen/angular/tree/v0.10.1) (2024-08-05)
9588

96-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.3...v0.12.4)
97-
98-
## [v0.12.3](https://github.com/modbus2mqtt/angular/tree/v0.12.3) (2024-09-06)
99-
100-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.2...v0.12.3)
101-
102-
## [v0.12.2](https://github.com/modbus2mqtt/angular/tree/v0.12.2) (2024-08-27)
103-
104-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.12.0...v0.12.2)
105-
106-
## [v0.12.0](https://github.com/modbus2mqtt/angular/tree/v0.12.0) (2024-08-16)
107-
108-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.11.0...v0.12.0)
109-
110-
## [v0.11.0](https://github.com/modbus2mqtt/angular/tree/v0.11.0) (2024-08-05)
111-
112-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/v0.10.1...v0.11.0)
113-
114-
## [v0.10.1](https://github.com/modbus2mqtt/angular/tree/v0.10.1) (2024-08-05)
115-
116-
[Full Changelog](https://github.com/modbus2mqtt/angular/compare/0b2169b1bceece9fa4c2c6940ef33dafe96ae43b...v0.10.1)
89+
[Full Changelog](https://github.com/volkmarnissen/angular/compare/0b2169b1bceece9fa4c2c6940ef33dafe96ae43b...v0.10.1)
11790

11891

11992

cypress/fixtures/slave.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,9 @@
55
"pollInterval": 500,
66
"pollMode": 1,
77
"rootTopic": "heatpump",
8-
"modbusErrorsForSlave": []
8+
"modbusStatusForSlave": {
9+
"errors": [],
10+
"requestCount": [0, 1, 2, 3, 4, 5, 6, 7],
11+
"queueLength": 23
12+
}
913
}

cypress/fixtures/slaves.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
"pollInterval": 500,
77
"pollMode": 1,
88
"rootTopic": "heatpump",
9-
"modbusErrorsForSlave": []
9+
"modbusStatusForSlave": {
10+
"errors": [],
11+
"requestCount": [0, 1, 2, 3, 4, 5, 6, 7],
12+
"queueLength": 23
13+
}
1014
}
1115
]

cypress/modbus-error.cy.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,22 @@ import { ModbusErrorComponent } from "angular/src/app/modbus-error/modbus-error.
1010
import {
1111
Iconfiguration,
1212
ImodbusErrorsForSlave,
13+
ImodbusStatusForSlave,
1314
ModbusErrorStates,
1415
ModbusTasks,
1516
} from "@modbus2mqtt/server.shared";
1617
import { ModbusRegisterType } from "@modbus2mqtt/specification.shared";
1718

1819
let date = Date.now();
19-
let modbusErrors: ImodbusErrorsForSlave = {
20-
task: ModbusTasks.deviceDetection,
20+
let modbusErrors: ImodbusStatusForSlave = {
21+
errors: [{
22+
task: ModbusTasks.specification,
2123
date: date,
2224
address: { address: 1, registerType: ModbusRegisterType.HoldingRegister },
2325
state: ModbusErrorStates.crc,
26+
}],
27+
requestCount: [0,1,2,3,4,5,6,7],
28+
queueLength: 23
2429
};
2530
function mount(currentDate: number) {
2631
// This configures the rootUrl for /api... calls
@@ -33,7 +38,7 @@ function mount(currentDate: number) {
3338
providers: [provideHttpClient(withInterceptorsFromDi()), provideRouter([])],
3439
autoDetectChanges: true,
3540
componentProperties: {
36-
modbusErrors: [modbusErrors],
41+
modbusErrors: modbusErrors,
3742
currentDate: date + 30 * 1000,
3843
},
3944
});
@@ -48,7 +53,7 @@ function mount(currentDate: number) {
4853
providers: [provideHttpClient(withInterceptorsFromDi()), provideRouter([])],
4954
autoDetectChanges: true,
5055
componentProperties: {
51-
modbusErrors: [modbusErrors],
56+
modbusErrors: modbusErrors,
5257
currentDate: currentDate,
5358
},
5459
});

src/app/modbus-error/modbus-error.component.html

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
<div>
2+
<div>
3+
Number of entries in the queue: {{modbusErrors?modbusErrors.queueLength:""}}
4+
</div>
25
<ng-container *ngFor="let task of tasksToLog">
3-
<div class="icon-text">
4-
<mat-icon [class]="filterNewerThan(filterTask( modbusErrors, task), getMinAgo(60)).length > 0 ? 'red':'green'">circle</mat-icon>
5-
<span>Task: {{ getTaskName(task)}}</span>
6+
<div class="icon-text" >
7+
<mat-icon [class]="filterNewerThan(filterTask( modbusErrors.errors, task), getMinAgo(60)).length > 0 ? 'red':'green'">circle</mat-icon>
8+
<span>Task: {{ getTaskName(task)}} ({{modbusErrors.requestCount[task] }} processed calls) </span>
69
</div>
7-
<div class="indent" *ngFor="let state of getErrorStates( filterNewerThan(filterTask( modbusErrors, task), getMinAgo(60) ))" >
10+
<div class="indent" *ngFor="let state of getErrorStates( filterNewerThan(filterTask( modbusErrors.errors, task), getMinAgo(60) ))" >
811
<div>{{ getErrorStateName(state)}}
912
</div>
1013
<ng-container
1114
[ngTemplateOutlet]="errorStates"
12-
[ngTemplateOutletContext]="{stateErrors:filterNewerThan(filterErrorState( filterTask( modbusErrors, task), state), getMinAgo(60))}"/>
15+
[ngTemplateOutletContext]="{stateErrors:filterNewerThan(filterErrorState( filterTask( modbusErrors.errors, task), state), getMinAgo(60)) }"/>
1316
</div>
1417
</ng-container>
15-
<ng-template #errorStates let-stateErrors='stateErrors'>
18+
<ng-template #errorStates let-stateErrors='stateErrors' >
1619
<ng-container
1720
[ngTemplateOutlet]="errors"
1821
[ngTemplateOutletContext]="{errorlist:filterLast(stateErrors), timeHeader: 'Last', timeSince: true}"/>
@@ -23,7 +26,7 @@
2326
[ngTemplateOutlet]="errors"
2427
[ngTemplateOutletContext]="{errorlist:filterNewerThan(stateErrors, getMinAgo(60)), timeHeader: '1 hour', timeSince: false}"/>
2528
</ng-template>
26-
<ng-template #errors let-errorlist='errorlist' let-timeHeader='timeHeader' let-timeSince="timeSince">
29+
<ng-template #errors let-errorlist='errorlist' let-timeHeader='timeHeader' let-timeSince="timeSince" let-task="task">
2730
<mat-expansion-panel >
2831
<mat-expansion-panel-header>
2932
<mat-panel-title> {{timeHeader}}</mat-panel-title>

src/app/modbus-error/modbus-error.component.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { MatTooltip } from "@angular/material/tooltip";
1818
import {
1919
Iconfiguration,
2020
ImodbusErrorsForSlave,
21+
ImodbusStatusForSlave,
2122
ModbusErrorStates,
2223
ModbusTasks,
2324
} from "@modbus2mqtt/server.shared";
@@ -38,14 +39,17 @@ const oneMinuteInMs = 60 * 1000;
3839
})
3940
export class ModbusErrorComponent implements OnInit {
4041
config: Iconfiguration;
41-
@Input({ required: true }) modbusErrors: ImodbusErrorsForSlave[] | undefined;
42+
@Input({ required: true }) modbusErrors: ImodbusStatusForSlave | undefined;
4243
@Input({ required: false }) currentDate: number | undefined = undefined;
4344

45+
tasksToCount : ModbusTasks[] = [
46+
ModbusTasks.poll,
47+
ModbusTasks.specification
48+
]
49+
4450
tasksToLog: ModbusTasks[] = [
4551
ModbusTasks.poll,
46-
ModbusTasks.specification,
47-
ModbusTasks.deviceDetection,
48-
ModbusTasks.initialConnect,
52+
ModbusTasks.specification
4953
];
5054
constructor(private entityApiService: ApiService) {}
5155
ngOnInit(): void {
@@ -169,7 +173,7 @@ export class ModbusErrorComponent implements OnInit {
169173
address: { address: -1, registerType: ModbusRegisterType.AnalogInputs },
170174
task: ModbusTasks.initialConnect,
171175
state: ModbusErrorStates.noerror,
172-
date: 0,
176+
date: 0
173177
};
174178
if (inValue != undefined)
175179
inValue.forEach((v) => {

src/app/select-slave/select-slave.component.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import {
5151
IEntityCommandTopics,
5252
ImodbusErrorsForSlave,
5353
apiUri,
54+
ImodbusStatusForSlave,
5455
} from "@modbus2mqtt/server.shared";
5556
import { MatInput } from "@angular/material/input";
5657
import {
@@ -194,6 +195,7 @@ export class SelectSlaveComponent extends SessionStorage implements OnInit {
194195

195196
private updateSlaves(detectSpec?: boolean) {
196197
this.entityApiService.getSlaves(this.bus.busId).subscribe((slaves) => {
198+
console.log(JSON.stringify(slaves))
197199
this.uiSlaves = [];
198200
slaves.forEach((s) => {
199201
this.uiSlaves.push(this.getUiSlave(s, detectSpec));
@@ -777,7 +779,9 @@ export class SelectSlaveComponent extends SessionStorage implements OnInit {
777779
uiSlave.slaveForm.get("discoverEntitiesList")!.enable();
778780
else uiSlave.slaveForm.get("discoverEntitiesList")!.disable();
779781
}
780-
getModbusErrors(uiSlave: IuiSlave): ImodbusErrorsForSlave[] | undefined {
781-
return uiSlave.slave.modbusErrorsForSlave;
782+
getModbusErrors(uiSlave: IuiSlave): ImodbusStatusForSlave | undefined {
783+
if( !uiSlave|| ! uiSlave.slave || ! uiSlave.slave.modbusStatusForSlave)
784+
return { requestCount:[0,0,0,0,0,0,0,0,0], errors: [], queueLength:0}
785+
return uiSlave.slave.modbusStatusForSlave;
782786
}
783787
}

0 commit comments

Comments
 (0)