# OpcClient.ReadNodeHistory Method

> Reference: Reads the historical values of the node identified by the nodeId specified using the details specified to select the values.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcClient</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx.client">Opc.UaFx.Client</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
<dt>Members</dt>
<dd><a href="./members">OpcClient Members</a></dd>
<dt>Also in</dt>
<dd>Opc.UaFx.Client</dd>
</dl>

<span class="api-meta">24 overloads</span>

| Overload | Description |
|---|---|
| [ReadNodeHistory(OpcNodeId, OpcReadHistoryDetails)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-opc-uafx-opcnodeid-opc-uafx-opcreadhistorydetails)<span class="api-meta">since v2.23</span> | Reads the historical values of the node identified by the `nodeId` specified using the `details` specified to select the values. |
| [ReadNodeHistory(int, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-int32-opc-uafx-opcnodeid) | Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, int, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-int32-opc-uafx-opcnodeid) | Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32-opc-uafx-opcnodeid) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-opc-uafx-opcnodeid) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified. |
| [ReadNodeHistory(int, string)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-int32-system-string) | Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, int, string)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-int32-system-string) | Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int, string)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32-system-string) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, string)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-string) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified. |
| [ReadNodeHistory(int, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-int32-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, int, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-int32-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified. |
| [ReadNodeHistory(int, string, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-int32-system-string-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, int, string, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-int32-system-string-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int, string, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32-system-string-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, string, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-string-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified. |
| [ReadNodeHistory(int, int, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-int32-system-int32-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, int, int, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-int32-system-int32-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int, int, int)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32-system-int32-system-int32) | Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(int, OpcReadNodeHistory)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-int32-opc-uafx-client-opcreadnodehistory) | Reads the raw historical values of the node as defined by the `command` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, int, OpcReadNodeHistory)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-int32-opc-uafx-client-opcreadnodehistory) | Reads the raw historical values of the node as defined by the `command` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, int, OpcReadNodeHistory)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-system-int32-opc-uafx-client-opcreadnodehistory) | Reads the raw historical values of the node as defined by the `command` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page. |
| [ReadNodeHistory(DateTime?, DateTime?, OpcReadNodeHistory)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistory#readnodehistory-system-nullable-of-system-datetime-system-nullable-of-system-datetime-opc-uafx-client-opcreadnodehistory) | Reads the raw historical values of the node as defined by the `command` specified within the period defined by the `startTime` and `endTime` specified. |

**Exceptions (all overloads)**

| Exception | Condition |
|---|---|
| [OpcException](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcexception/) | The client is not connected to the server or the service execution failed upon different circumstances; for more details see exception details. |
| [ObjectDisposedException](https://learn.microsoft.com/dotnet/api/system.objectdisposedexception) | The object has been disposed of. |

## ReadNodeHistory(OpcNodeId, OpcReadHistoryDetails)

<span class="api-meta">since v2.23</span>

Reads the historical values of the node identified by the `nodeId` specified using the `details` specified to select the values.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    OpcNodeId nodeId,
    OpcReadHistoryDetails details)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    nodeId As OpcNodeId,
    details As OpcReadHistoryDetails) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the node whose history is to be read. |
| `details` | [OpcReadHistoryDetails](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadhistorydetails/) | The [OpcReadHistoryDetails](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadhistorydetails/) which define the criteria to use to select the historical values. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `details` is an instance of the [OpcReadNodeHistoryModifiedDetails](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcreadnodehistorymodifieddetails/) class; to read modified values use [ReadNodeHistoryModified](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/readnodehistorymodified#readnodehistorymodified-opc-uafx-opcnodeid-opc-uafx-opcreadhistorydetails). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `nodeId` or `details` is a null reference (Nothing in Visual Basic). |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(int, OpcNodeId)

Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    int numberOfValues,
    OpcNodeId nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    numberOfValues As Integer,
    nodeId As OpcNodeId) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. |
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `nodeId` is a null reference (Nothing in Visual Basic). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, int, OpcNodeId)

Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    int numberOfValues,
    OpcNodeId nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    numberOfValues As Integer,
    nodeId As OpcNodeId) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` is a null reference (Nothing in Visual Basic) or equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `nodeId` is a null reference (Nothing in Visual Basic). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int, OpcNodeId)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int numberOfValues,
    OpcNodeId nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    numberOfValues As Integer,
    nodeId As OpcNodeId) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified and the `numberOfValues` is equals zero the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified and the `numberOfValues` is equals zero the `startTime` needs to be specified. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue) and `numberOfValues` is lower or equals zero. |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `nodeId` is a null reference (Nothing in Visual Basic). |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, OpcNodeId)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public IEnumerable<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    OpcNodeId nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    nodeId As OpcNodeId) As IEnumerable(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified the `startTime` needs to be specified. |
| `nodeId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the node whose history is to be read. |

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

A sequence of the [OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/) instances read for the node or an empty sequence if no values have been read for the node.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `nodeId` is a null reference (Nothing in Visual Basic). |

**Remarks**

All values within the period are read, also if the server provides them using multiple responses. In case there the server reports a bad status code for the node, an empty sequence is returned instead of throwing an exception.

## ReadNodeHistory(int, string)

Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    int numberOfValues,
    string nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    numberOfValues As Integer,
    nodeId As String) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |
| [FormatException](https://learn.microsoft.com/dotnet/api/system.formatexception) | The `nodeId` is not a valid node identifier expression (see [Parse](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#parse)) and [AlwaysParseStringIdentifiers](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcautomatism/members#alwaysparsestringidentifiers) is false. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, int, string)

Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    int numberOfValues,
    string nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    numberOfValues As Integer,
    nodeId As String) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` is a null reference (Nothing in Visual Basic) or equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |
| [FormatException](https://learn.microsoft.com/dotnet/api/system.formatexception) | The `nodeId` is not a valid node identifier expression (see [Parse](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#parse)) and [AlwaysParseStringIdentifiers](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcautomatism/members#alwaysparsestringidentifiers) is false. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int, string)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int numberOfValues,
    string nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    numberOfValues As Integer,
    nodeId As String) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified and the `numberOfValues` is equals zero the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified and the `numberOfValues` is equals zero the `startTime` needs to be specified. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue) and `numberOfValues` is lower or equals zero. |
| [FormatException](https://learn.microsoft.com/dotnet/api/system.formatexception) | The `nodeId` is not a valid node identifier expression (see [Parse](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#parse)) and [AlwaysParseStringIdentifiers](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcautomatism/members#alwaysparsestringidentifiers) is false. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, string)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public IEnumerable<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    string nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    nodeId As String) As IEnumerable(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified the `startTime` needs to be specified. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

A sequence of the [OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/) instances read for the node or an empty sequence if no values have been read for the node.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [FormatException](https://learn.microsoft.com/dotnet/api/system.formatexception) | The `nodeId` is not a valid node identifier expression (see [Parse](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#parse)) and [AlwaysParseStringIdentifiers](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcautomatism/members#alwaysparsestringidentifiers) is false. |

**Remarks**

All values within the period are read, also if the server provides them using multiple responses. In case there the server reports a bad status code for the node, an empty sequence is returned instead of throwing an exception.

## ReadNodeHistory(int, int)

Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    int numberOfValues,
    int nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    numberOfValues As Integer,
    nodeId As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, int, int)

Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    int numberOfValues,
    int nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    numberOfValues As Integer,
    nodeId As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` is a null reference (Nothing in Visual Basic) or equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int, int)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int numberOfValues,
    int nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    numberOfValues As Integer,
    nodeId As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified and the `numberOfValues` is equals zero the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified and the `numberOfValues` is equals zero the `startTime` needs to be specified. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue) and `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public IEnumerable<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int nodeId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    nodeId As Integer) As IEnumerable(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified the `startTime` needs to be specified. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

A sequence of the [OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/) instances read for the node or an empty sequence if no values have been read for the node.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |

**Remarks**

All values within the period are read, also if the server provides them using multiple responses. In case there the server reports a bad status code for the node, an empty sequence is returned instead of throwing an exception.

## ReadNodeHistory(int, string, int)

Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    int numberOfValues,
    string nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    numberOfValues As Integer,
    nodeId As String,
    namespaceIndex As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, int, string, int)

Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    int numberOfValues,
    string nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    numberOfValues As Integer,
    nodeId As String,
    namespaceIndex As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` is a null reference (Nothing in Visual Basic) or equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int, string, int)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int numberOfValues,
    string nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    numberOfValues As Integer,
    nodeId As String,
    namespaceIndex As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified and the `numberOfValues` is equals zero the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified and the `numberOfValues` is equals zero the `startTime` needs to be specified. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue) and `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, string, int)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public IEnumerable<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    string nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    nodeId As String,
    namespaceIndex As Integer) As IEnumerable(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified the `startTime` needs to be specified. |
| `nodeId` | [String](https://learn.microsoft.com/dotnet/api/system.string) | The textual node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

A sequence of the [OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/) instances read for the node or an empty sequence if no values have been read for the node.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is a null reference (Nothing in Visual Basic) or equals [Empty](https://learn.microsoft.com/dotnet/api/system.string.empty), which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |

**Remarks**

All values within the period are read, also if the server provides them using multiple responses. In case there the server reports a bad status code for the node, an empty sequence is returned instead of throwing an exception.

## ReadNodeHistory(int, int, int)

Reads the raw historical values of the node identified by the `nodeId` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    int numberOfValues,
    int nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    numberOfValues As Integer,
    nodeId As Integer,
    namespaceIndex As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, int, int, int)

Reads the raw historical values of the node identified by the `nodeId` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    int numberOfValues,
    int nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    numberOfValues As Integer,
    nodeId As Integer,
    namespaceIndex As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` is a null reference (Nothing in Visual Basic) or equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int, int, int)

Reads the raw historical values of the node identified by the `nodeId` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int numberOfValues,
    int nodeId,
    int namespaceIndex)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    numberOfValues As Integer,
    nodeId As Integer,
    namespaceIndex As Integer) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified and the `numberOfValues` is equals zero the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified and the `numberOfValues` is equals zero the `startTime` needs to be specified. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `nodeId` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The numeric node identifier of the node whose history is to be read. |
| `namespaceIndex` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The index of the namespace within that the node with the `nodeId` specified can be located. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `nodeId` is equals zero, which results in a null identifier (see [IsNull](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#isnull)) or the `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue) and `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(int, OpcReadNodeHistory)

Reads the raw historical values of the node as defined by the `command` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    int numberOfValues,
    OpcReadNodeHistory command)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    numberOfValues As Integer,
    command As OpcReadNodeHistory) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. |
| `command` | [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) | The [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) command which defines the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `command` is a null reference (Nothing in Visual Basic). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, int, OpcReadNodeHistory)

Reads the raw historical values of the node as defined by the `command` specified beginning at the `startTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    int numberOfValues,
    OpcReadNodeHistory command)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    numberOfValues As Integer,
    command As OpcReadNodeHistory) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `command` | [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) | The [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) command which defines the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `startTime` is a null reference (Nothing in Visual Basic) or equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `command` is a null reference (Nothing in Visual Basic). |
| [ArgumentOutOfRangeException](https://learn.microsoft.com/dotnet/api/system.argumentoutofrangeexception) | The `numberOfValues` is lower or equals zero. |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, int, OpcReadNodeHistory)

Reads the raw historical values of the node as defined by the `command` specified within the period defined by the `startTime` and `endTime` specified page by page using the `numberOfValues` specified as the maximum number of values per page.

<div class="api-signature" data-lang="csharp">

```csharp
public IOpcNodeHistoryNavigator<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    int numberOfValues,
    OpcReadNodeHistory command)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    numberOfValues As Integer,
    command As OpcReadNodeHistory) As IOpcNodeHistoryNavigator(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified and the `numberOfValues` is equals zero the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified and the `numberOfValues` is equals zero the `startTime` needs to be specified. |
| `numberOfValues` | [Int32](https://learn.microsoft.com/dotnet/api/system.int32) | The maximum number of values returned for the node per page. If only one time is specified, the time range shall extend to return this number of values. |
| `command` | [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) | The [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) command which defines the node whose history is to be read. |

**Returns**

[IOpcNodeHistoryNavigator](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

An instance implementing the [IOpcNodeHistoryNavigator&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/) interface which provides the first page of the historical values read for the node and further pages using its [MoveNextPage](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.iopcnodehistorynavigator-1/members#movenextpage) method.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue) and `numberOfValues` is lower or equals zero. |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `command` is a null reference (Nothing in Visual Basic). |

**Remarks**

In case there the server reports a bad status code for the node, the navigator provides no values instead of throwing an exception.

## ReadNodeHistory(DateTime?, DateTime?, OpcReadNodeHistory)

Reads the raw historical values of the node as defined by the `command` specified within the period defined by the `startTime` and `endTime` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public IEnumerable<OpcHistoryValue> ReadNodeHistory(
    DateTime? startTime,
    DateTime? endTime,
    OpcReadNodeHistory command)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function ReadNodeHistory(
    startTime As Date?,
    endTime As Date?,
    command As OpcReadNodeHistory) As IEnumerable(Of OpcHistoryValue)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `startTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The beginning of the period to read or a null reference (Nothing in Visual Basic) if no specific start time is specified. If `startTime` is not specified the `endTime` needs to be specified. |
| `endTime` | [Nullable](https://learn.microsoft.com/dotnet/api/system.nullable-1)&lt;[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)&gt; | The end of the period to read or a null reference (Nothing in Visual Basic) if no specific end time is specified. If `endTime` is not specified the `startTime` needs to be specified. |
| `command` | [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) | The [OpcReadNodeHistory](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcreadnodehistory/) command which defines the node whose history is to be read. |

**Returns**

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)&lt;[OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/)&gt;

A sequence of the [OpcHistoryValue](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opchistoryvalue/) instances read for the node or an empty sequence if no values have been read for the node.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `startTime` and `endTime` are a null reference (Nothing in Visual Basic) or are equals [MinValue](https://learn.microsoft.com/dotnet/api/system.datetime.minvalue). |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `command` is a null reference (Nothing in Visual Basic). |

**Remarks**

All values within the period are read, also if the server provides them using multiple responses. In case there the server reports a bad status code for the node, an empty sequence is returned instead of throwing an exception.
