diff --git a/clients/dotnet/README.md b/clients/dotnet/README.md index 2e6131a..136ea22 100644 --- a/clients/dotnet/README.md +++ b/clients/dotnet/README.md @@ -84,6 +84,15 @@ messages. `MxGatewaySession.OpenSessionReply` keeps the raw session-open reply available, and command helpers have `*RawAsync` variants when callers need the complete `MxCommandReply`. +For alarms, the client exposes `QueryActiveAlarmsAsync` (one-shot snapshot of +the active alarms the gateway's central monitor currently holds), +`StreamAlarmsAsync` (server-streaming feed of alarm-state-change messages +keyed by the same monitor), and `AcknowledgeAlarmAsync` (ack by alarm +reference, optional comment, ack target). All three accept a cancellation +token and pass through the `MxGateway:Alarms` configuration on the +server — when alarms are disabled, the gateway returns an empty list / empty +stream rather than failing. + `MxGatewaySession.CloseAsync` is explicit and idempotent. Repeated calls return the first `CloseSessionReply` instead of sending another close request. @@ -125,6 +134,8 @@ dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- advise --s dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- write --session-id --server-handle 1 --item-handle 1 --type int32 --value 123 --json dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- write2 --session-id --server-handle 1 --item-handle 1 --type int32 --value 123 --timestamp 2026-01-01T00:00:00Z --json dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- stream-events --session-id --max-events 1 --json +dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- stream-alarms --session-id --max-messages 1 --json +dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- acknowledge-alarm --session-id --alarm-reference "\\Galaxy\Area001.Pump001.PumpFault" --json dotnet run --project clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli -- smoke --endpoint http://localhost:5000 --api-key-env MXGATEWAY_API_KEY --item Area001.Pump001.Speed --json ``` diff --git a/clients/go/README.md b/clients/go/README.md index 1516e45..58384b3 100644 --- a/clients/go/README.md +++ b/clients/go/README.md @@ -84,6 +84,13 @@ goroutine cleanup. Raw protobuf messages remain available through the `errors.As` for `GatewayError`, `CommandError`, and `MxAccessError`; command errors preserve the raw reply. +For alarms, the package exposes `Client.QueryActiveAlarms` for one-shot +snapshots, `Client.StreamAlarms` for the server-streaming feed, and +`Client.AcknowledgeAlarm` to ack an alarm by full reference. The streaming +call returns a `StreamAlarmsClient`; cancel its context to terminate the +stream. All three pass straight through to the gateway's central alarm +monitor. + ## Galaxy Repository browse The `GalaxyRepository` service (proto package `galaxy_repository.v1`) is a diff --git a/clients/java/README.md b/clients/java/README.md index c12b0c8..b53bbd2 100644 --- a/clients/java/README.md +++ b/clients/java/README.md @@ -68,6 +68,12 @@ cancels the underlying gRPC stream. Canceling or timing out a Java client call only stops the client from waiting; it does not abort an in-flight MXAccess COM call on the worker STA. +For alarms, `MxGatewayClient` exposes `queryActiveAlarms` (one-shot snapshot), +`streamAlarms` (returns an `MxGatewayAlarmFeedSubscription` whose iterator +yields alarm-feed messages from the gateway's central monitor), and +`acknowledgeAlarm` (ack by full alarm reference with an optional comment and +ack target). Close the subscription to cancel the underlying gRPC stream. + ## Galaxy Repository Browse The Galaxy Repository service is a separate metadata-only gRPC service exposed @@ -173,6 +179,8 @@ gradle :zb-mom-ww-mxgateway-cli:run --args="add-item --endpoint localhost:5000 - gradle :zb-mom-ww-mxgateway-cli:run --args="advise --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --server-handle 1 --item-handle 1 --json" gradle :zb-mom-ww-mxgateway-cli:run --args="write --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --server-handle 1 --item-handle 1 --type int32 --value 123 --json" gradle :zb-mom-ww-mxgateway-cli:run --args="stream-events --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --limit 1 --json" +gradle :zb-mom-ww-mxgateway-cli:run --args="stream-alarms --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --limit 1 --json" +gradle :zb-mom-ww-mxgateway-cli:run --args="acknowledge-alarm --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --alarm-reference \"\\Galaxy\Area001.Pump001.PumpFault\" --json" gradle :zb-mom-ww-mxgateway-cli:run --args="smoke --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --item TestObject.TestInt --json" ``` diff --git a/clients/python/README.md b/clients/python/README.md index 10994f7..037196f 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -95,6 +95,13 @@ async with await GatewayClient.connect( events available for parity tests. `Session` helpers call the method-specific MXAccess commands and preserve raw replies on typed command exceptions. +For alarms, the client exposes `GatewayClient.query_active_alarms` (one-shot +snapshot), `GatewayClient.stream_alarms` (async generator yielding alarm-feed +messages from the gateway's central monitor), and +`GatewayClient.acknowledge_alarm` (ack by alarm reference, optional comment +and ack target). Cancel the surrounding task or `aclose()` the iterator to +terminate the stream. + Canceling a Python task cancels the client-side gRPC call or stream wait. It does not abort an in-flight MXAccess COM call inside the worker process. @@ -191,6 +198,8 @@ mxgw-py register --session-id --client-name python-client --json mxgw-py add-item --session-id --server-handle 1 --item Object.Attribute --json mxgw-py advise --session-id --server-handle 1 --item-handle 2 --json mxgw-py stream-events --session-id --max-events 1 --json +mxgw-py stream-alarms --session-id --max-messages 1 --json +mxgw-py acknowledge-alarm --session-id --alarm-reference "\\Galaxy\Area001.Pump001.PumpFault" --json mxgw-py write --session-id --server-handle 1 --item-handle 2 --type int32 --value 123 --json ``` diff --git a/clients/rust/README.md b/clients/rust/README.md index 561fdac..a52c23d 100644 --- a/clients/rust/README.md +++ b/clients/rust/README.md @@ -62,6 +62,8 @@ cargo run -p mxgw-cli -- register --session-id --client-name mxgw-r cargo run -p mxgw-cli -- add-item --session-id --server-handle 1 --item TestChildObject.TestInt --json cargo run -p mxgw-cli -- advise --session-id --server-handle 1 --item-handle 1 --json cargo run -p mxgw-cli -- stream-events --session-id --max-events 1 --json +cargo run -p mxgw-cli -- stream-alarms --session-id --max-messages 1 --json +cargo run -p mxgw-cli -- acknowledge-alarm --session-id --alarm-reference "\\Galaxy\Area001.Pump001.PumpFault" --json cargo run -p mxgw-cli -- write --session-id --server-handle 1 --item-handle 1 --value-type int32 --value 123 --json ``` @@ -82,7 +84,10 @@ creates an authenticated `tonic` client and attaches `authorization: Bearer ` metadata to unary and streaming calls. `GatewayClient` exposes raw generated calls through `open_session_raw`, -`close_session_raw`, `invoke_raw`, `stream_events`, and `raw_client`. The +`close_session_raw`, `invoke_raw`, `stream_events`, `query_active_alarms`, +`stream_alarms`, `acknowledge_alarm`, and `raw_client`. `stream_alarms` +returns an `AlarmFeedStream` async stream of alarm-feed messages and +shares the gateway's central alarm monitor with every other client. The session helpers keep MXAccess handles visible: ```rust