# LiDAR Developer Guide > Developer guide for SICK LRS4000, multiScan100, multiScan200, and picoScan100 LiDAR sensors, with setup, configuration, data streaming, and integration. Source: https://sickag.github.io/sick_lidar_developer_guide/ # LiDAR Developer Guide Integrate SICK LRS4000, multiScan100, multiScan200, and picoScan100 LiDAR sensors into your application. Connect, configure through REST or CoLa, stream measurement data, and use the data in your application. Pick your device, or jump to a topic. ## Device Guides
- [![LRS4000](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/product-photo.png)](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/) LiDAR Sensors [**LRS4000**](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/) Long-range 2D LiDAR sensor with motor synchronization and 3D scan recording. [**View Device Guide →**](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/) [Specifications on sick.com](https://www.sick.com/de/en/search?text=LRS4000) - [![multiScan100](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/product-photo.png)](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/) LiDAR Sensors [**multiScan100**](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/) Multi-layer 3D LiDAR sensor family with segmented scan-data output. [**View Device Guide →**](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/) [Specifications on sick.com](https://www.sick.com/de/en/search?text=multiScan100) - [![multiScan200](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/product-photo.png)](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/) LiDAR Sensors [**multiScan200**](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/) Compact 3D LiDAR sensor with high detection reliability in harsh environments. [**View Device Guide →**](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/) [Specifications on sick.com](https://www.sick.com/de/en/search?text=multiScan200) - [![picoScan100](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/product-photo.png)](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/) LiDAR Sensors [**picoScan100**](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/) Powerful and cost-efficient 2D LiDAR sensor in a compact housing. [**View Device Guide →**](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/) [Specifications on sick.com](https://www.sick.com/de/en/search?text=picoScan100)
## Topics
- [![Getting Started](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/getting-started.png)](https://sickag.github.io/sick_lidar_developer_guide/getting-started/) [**Getting Started**](https://sickag.github.io/sick_lidar_developer_guide/getting-started/) Connect your sensor, open its web interface, and receive the first measurement data. - [![Model Context](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/model-context.png)](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/model-context/) [**Model Context**](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/model-context/) Give your coding assistant local documentation and code context for LiDAR projects. - [![Simulation](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/simulation.png)](https://sickag.github.io/sick_lidar_developer_guide/simulation/) [**Simulation**](https://sickag.github.io/sick_lidar_developer_guide/simulation/) Try virtual sensors in the lab or NVIDIA Isaac Sim. - [![Visualization](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/visualization.png)](https://sickag.github.io/sick_lidar_developer_guide/visualization/) [**Visualization**](https://sickag.github.io/sick_lidar_developer_guide/visualization/) Choose a tool to view live scans and point clouds. - [![On-Device Applications](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/detection.png)](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/) [**On‑Device
Applications**](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/) Evaluate fields, measure distances, and monitor contamination. - [![Data Streaming](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/streaming.png)](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) [**Data Streaming**](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) Choose a transport and decode scan data or device events. - [![Configuration](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/configuration.png)](https://sickag.github.io/sick_lidar_developer_guide/configuration/) [**Configuration**](https://sickag.github.io/sick_lidar_developer_guide/configuration/) Configure through REST or CoLa, back up settings, and enable HTTPS. - [![Recording](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/recording.png)](https://sickag.github.io/sick_lidar_developer_guide/recording/) [**Recording**](https://sickag.github.io/sick_lidar_developer_guide/recording/) Capture scan data for playback, analysis, and debugging. - [![Device-specific](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/device-specific.png)](https://sickag.github.io/sick_lidar_developer_guide/device-specific/) [**Device-specific**](https://sickag.github.io/sick_lidar_developer_guide/device-specific/) Find wiring, interfaces, downloads, and release notes for your sensor family. - [![Shared Features](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/shared-features.png)](https://sickag.github.io/sick_lidar_developer_guide/shared-features/) [**Shared Features**](https://sickag.github.io/sick_lidar_developer_guide/shared-features/) Discover devices, update firmware, and manage timing and access. - [![Integration Notes](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/integration-notes.png)](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/) [**Integration Notes**](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/) Connect your application using SDKs, ROS, MATLAB, or a PLC. - [![Beginner Projects](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/beginner-projects.png)](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/) [**Beginner Projects**](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/) Build your first LiDAR application with guided projects for detection, measurement, 3D capture, and ROS 2. - [![Troubleshooting](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/troubleshooting.png)](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/) [**Troubleshooting**](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/) Diagnose connection, configuration, and scan-data problems. - [![Glossary](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/glossary.png)](https://sickag.github.io/sick_lidar_developer_guide/glossary/) [**Glossary**](https://sickag.github.io/sick_lidar_developer_guide/glossary/) Look up LiDAR terms, acronyms, and interface names. - [![Contact](https://sickag.github.io/sick_lidar_developer_guide/assets/topics/contact.png)](https://sickag.github.io/sick_lidar_developer_guide/contact/) [**Contact**](https://sickag.github.io/sick_lidar_developer_guide/contact/) Find local sales, technical support, and community discussions.
--- # Getting Started with SICK LiDAR Sensors > Connect a SICK LiDAR sensor, open its web interface at the default IP 192.168.0.1, and check the first measurement data in Wireshark. Source: https://sickag.github.io/sick_lidar_developer_guide/getting-started/ # Getting Started Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Use this page once for every new sensor. It takes you from a powered sensor to the web interface and to the first measurement data on your computer. ## Connect the Sensor Connect the sensor to the computer with Ethernet, either with a cable between them or through a network switch. The device must be powered, and at least one LED must be green. For the connector layout and pin assignment, see the electrical connection page for [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/electrical-connection/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/electrical-connection/), or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/electrical-connection/). Give the computer's Ethernet adapter a static address in the sensor subnet. No gateway is needed to communicate within this subnet.

**Connect the Sensor:** device, IP address, and subnet mask.

| Device | IP address | Subnet mask | | -------- | --------------- | --------------- | | Sensor | `192.168.0.1` | `255.255.255.0` | | Computer | `192.168.0.100` | `255.255.255.0` |
The factory sensor address is `192.168.0.1` for LRS4000, multiScan100, multiScan200, and picoScan100. Check the device label or the saved project documentation if the sensor does not respond at that address. === "Windows" Open **Settings → Network & internet → Ethernet → IP assignment → Edit**, select **Manual**, enable IPv4, and enter the computer's values: ![Windows Ethernet IPv4 settings for a sensor connection](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/windows-ip-settings.png){ width="344" } *Example Windows configuration for an Ethernet connection to the sensor.* Set the network profile of this adapter to **Private**. A Public profile blocks inbound UDP data, device discovery replies, and DDS discovery. In PowerShell, replace `18` with the interface index that `Get-NetConnectionProfile` reports for the sensor adapter: ```powershell Get-NetConnectionProfile Set-NetConnectionProfile -InterfaceIndex 18 -NetworkCategory Private ``` === "Linux" Add the computer's address to the adapter connected to the sensor. Replace `eth0` with your interface name from `ip link`. The address is lost on reboot; use `nmcli` for a permanent setting. ```bash sudo ip addr add 192.168.0.100/24 dev eth0 ``` ## Open the Web Interface Open `http:///` in Chrome, Edge, or Firefox. With factory settings, use . ![SOPASair Home page opened at 192.168.0.1](https://sickag.github.io/sick_lidar_developer_guide/assets/getting-started/sopasair-home.png) *SOPASair Home page opened at 192.168.0.1.* If the page does not load, check the subnet settings above or [find the sensor on the network](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/). *picoScan100 example: Connect to the sensor in a web browser after configuring the computer's network adapter.* ## Log In Reading values needs no login. Changing settings requires a login with an enabled [user level](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). On all devices, only **Service** is enabled by default. In SOPASair, open the login dialog, select **Service**, and enter its password. Then enable only the levels required by the deployment. The default passwords are documented in the operating instructions of your device. Do not pass them on, and change them during commissioning. *SOPASair login: select a user level and enter its password to access configuration settings.* ## Change the IP Address To use the sensor in your own network, give it an address in that network: 1. In the web interface, log in and open **Configuration → Connection options**. 2. Set **Addressing mode** to **Static**, or to **DHCP** if a DHCP server assigns the address. 3. Enter the **IP address**, **Subnet mask**, and **Default gateway**. The IP address must be unique in the network. 4. Click **Apply**. The browser loses the connection to the sensor. 5. If the new address is in another subnet, change the computer's Ethernet adapter accordingly. Then open the web interface at the new address and click **Save permanently**. ![Ethernet settings in the web interface](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-configuration-ethernet-tile.png){ width="300" } *Ethernet settings under **Configuration → Connection options**.* *picoScan100 example: Change the device IP address through the web interface. For restrictions on device search, see the IP Address Assignment page.* ## Receive and Explore Measurement Data Use Compact for a first measurement-data check on all four devices: 1. In SOPASair, log in, open **Application > Data output**, and set the output for your device: === "LRS4000" Select **Compact** as the output format. === "multiScan100 / picoScan100" Select **Compact**, set the UDP destination to your computer's IP address (for example, `192.168.0.100`) and port `2115`, then enable **Start/stop data output**. ![SOPASair measurement data output set to Compact over UDP, port 2115, destination 192.168.0.100, with data output, RSSI, and properties enabled](https://sickag.github.io/sick_lidar_developer_guide/assets/getting-started/compact-udp-output.png){ width="340" } *picoScan100 example: Compact UDP output to the development computer.* === "multiScan200" Enable **TCP Compact** measurement-data output. Apply the settings and use **Save permanently** to retain them after a restart. 2. Install [Wireshark](https://www.wireshark.org/download.html) with the [Compact dissector](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#install-the-dissector), then capture on the Ethernet interface connected to the sensor. 3. LRS4000 and multiScan200 send Compact over TCP. Connect a TCP client to the sensor's IP address on port `2115` and keep the connection open. Wireshark captures traffic but does not open the connection itself. 4. Enter `compact` in Wireshark's display-filter bar. Select a `COMPACT` packet and expand its decoded fields to inspect distances and scan metadata. If none appear, clear the filter and check the output settings and connection. ![Wireshark with the compact display filter and an expanded Compact measurement-data packet showing scan metadata](https://sickag.github.io/sick_lidar_developer_guide/assets/getting-started/wireshark-compact-measurement-data.png) *picoScan150 example: Compact packets and decoded scan metadata in Wireshark.* Next: [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) · [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) · [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/) --- # LiDAR Basics: Time-of-Flight, Echoes, and Scanning > How LiDAR sensors measure distance with laser pulses, what remission and echoes mean, and how 2D scans and 3D point clouds are created. Source: https://sickag.github.io/sick_lidar_developer_guide/lidar-basics/ # LiDAR Basics Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 LiDAR stands for light detection and ranging. A LiDAR sensor sends out laser pulses and evaluates the light that comes back from objects. Every measurement produces a distance and the direction the beam pointed in, so the sensor maps its surroundings without touching anything. The sensor supplies its own light. It therefore works in daylight, at night, indoors, and in tunnels. This page explains the measuring principle and the terms used throughout this guide. Short definitions are collected in the [glossary](https://sickag.github.io/sick_lidar_developer_guide/glossary/). ## Measuring Distance with Light ![Pulse time-of-flight measurement: an emitted pulse travels to a truck and returns to the sensor after the time t1](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/time-of-flight.png){ width="70%" } *The sensor measures the time between the emitted pulse and the received pulse.* A pulse leaves the sender, travels to the object, and part of it returns to the receiver. The sensor measures the elapsed time. Light travels at a known speed and covers the distance twice, so the distance is half the time-of-flight multiplied by the speed of light. The beam follows a straight line, so the sensor reports the shortest distance to the first object in its path. Two pulse time-of-flight implementations are relevant here:

**Measuring Distance with Light:** process, how it works, and strength.

| Process | How it works | Strength | | --------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------- | | Single-pulse time-of-flight | Determines a distance from the travel time of one pulse and its echo. | Direct measurement with a short response time. | | HDDM+ | Combines the returns from many pulses to calculate one distance value. | Reliable readings on dark objects and in poor visibility. | Both implementations determine distance from the travel time of light. HDDM+ uses the additional measurements to make the result more robust. ## How Much Light Comes Back ![Diffuse reflection: a laser beam hits a rough surface and is scattered in many directions](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/reflection-diffuse.png){ width="70%" } *A rough surface scatters the beam, so only a fraction of the light returns to the receiver.* Most surfaces scatter light in many directions, and only a small part of it reaches the receiver. The share of light that an object sends back is its [remission factor](https://sickag.github.io/sick_lidar_developer_guide/glossary/#remission-factor). It determines how far away that object can still be measured.

**How Much Light Comes Back:** surface and approximate remission.

| Surface | Approximate remission | | ------------------------ | --------------------- | | Coal | 5 % | | Matte black shoe leather | 10 % | | White drywall | 90 % | | Reflective tape | Several 1,000 % | | Retroreflector | Up to 10,000 % | Scanning ranges are therefore always stated together with a remission factor, for example 30 m at 10 % remission. A dark object is detected at a shorter distance than a bright one, and retroreflectors return far more light than a diffuse surface. The beam needs a clear line of sight. A LiDAR sensor does not see around corners and generally cannot measure through glass or film packaging. Such surfaces create reflections of their own and disturb the measured value. ## One Beam, Several Echoes ![A LiDAR beam passing through fog and rain before reaching a solid object, with the strength of each return shown below](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/multi-echo.png){ width="70%" } *Fog, rain, and the solid object each produce a different return signal.* A laser pulse is not infinitely thin. When the beam hits a raindrop, a dust cloud, or the edge of an object, part of the light is reflected early while the rest travels on to the surface behind. Every reflection that reaches the receiver is an echo, and the sensor can report more than one echo per beam. Echoes are what make LiDAR usable outdoors, because reflections from rain, snow, dust, and hail can be separated from the real target. The [echo filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#echo-filter) selects which echoes the sensor outputs, for example the first echo, the last echo, or all of them. ## One, Two, and Three Dimensions

**One, Two, and Three Dimensions:** variant, what it measures, and typical sensor.

| Variant | What it measures | Typical sensor | | ------- | ----------------------------------------------- | ------------------------------------------------- | | 1D | Distance along a single fixed beam. | Distance sensor aimed at a target or a reflector. | | 2D | Distance and angle within one plane. | 2D LiDAR sensor, also called a laser scanner. | | 3D | Distance, horizontal angle, and vertical angle. | Multi-layer sensor, or a 2D sensor that is moved. | The horizontal angle of a beam is called the azimuth and the vertical angle the elevation. ## How a 2D Sensor Scans a Plane ![Cutaway view of a 2D LiDAR sensor deflecting its beam with a rotating mirror toward an object](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/2d-scanning-principle.png){ width="70%" } *A rotating mirror sweeps the beam of one sender and receiver across a whole plane.* A 2D sensor deflects its beam with a rotating mirror, so a single sender and receiver cover an entire plane. The sensor fires its pulses in step with the mirror rotation. This links three values: the pulse rate of the laser, the rotation speed of the motor, and the angular resolution. Angular resolution is the angle between two neighboring measured points. ![Comparison of a scan with coarse angular resolution and a scan with fine angular resolution](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/angular-resolution.png){ width="70%" } *A fine angular resolution places the measured points closer together.* A fine angular resolution puts the measured points close together and covers the scan plane without gaps, so even small objects are detected. A coarse angular resolution produces fewer points per scan. The beam also widens with distance, so the points move further apart the further away the object is. A scan that covers an area without gaps nearby can leave gaps at long range. One full scan of the plane is called a frame. The sensors in this guide output each frame in segments, and filters can reduce the data before it is sent. See [Data Streaming](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) and [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/). ## From Scan Planes to Point Clouds ![3D LiDAR sensor scanning a stack of pallets with four stacked scan planes](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/multi-layer-planes.png){ width="70%" } *A multi-layer sensor scans several planes at once, each tilted by a fixed angle.* A 3D sensor adds the vertical angle. Multi-layer sensors contain several sender and receiver modules aimed at different vertical angles, so one rotation produces several scan planes, called layers, at the same time. Distance, azimuth, and elevation together describe every measured point as an XYZ coordinate. A set of such points is a point cloud. ![A SICK multiScan sensor using multiple scan planes to measure horizontal and vertical surfaces](https://sickag.github.io/sick_lidar_developer_guide/assets/lidar-basics/multiscan-3d-coverage.png){ width="70%" } *Multiple scan planes provide the spatial coverage needed to build a 3D view.* A 2D sensor can also produce 3D data when it is moved, for example on a rotating axis, a linear axis, or a vehicle. The scans carry time stamps, and the known movement supplies the missing third coordinate. See [3D With 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/). --- # SICK Virtual Sensor Lab: Try LiDAR Sensors in the Browser > Use the SICK Virtual Sensor Lab to run virtual LRS4000, multiScan100, multiScan200, and picoScan100 web interfaces in the browser. Source: https://sickag.github.io/sick_lidar_developer_guide/simulation/virtual-sensor-lab/ # Virtual Sensor Lab Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The cloud-based SICK Virtual Sensor Lab runs a live virtual sensor in your browser, so you can explore its web UI without hardware. Open it at [devices.cloud.sick.com](https://devices.cloud.sick.com/). - Explore every menu of the web UI and change settings, for example the data output or field-evaluation zones. - Prepare a configuration offline, export it, and import it into a real device later. Configuration files from real devices can also be loaded and viewed. - It does not replace commissioning or a function test on the real device. `.sopas` files cannot be imported or exported. ![SICK Virtual Sensor Lab LiDAR product selection](https://sickag.github.io/sick_lidar_developer_guide/assets/simulation/virtual-sensor-lab-lidar-products.png) *SICK Virtual Sensor Lab product selection interface.* --- # LiDAR Simulation Overview > Explore SICK LiDAR web interfaces in the Virtual Sensor Lab or simulate sensor measurements in NVIDIA Isaac Sim before hardware is available. Source: https://sickag.github.io/sick_lidar_developer_guide/simulation/ # Simulation Choose a virtual web interface to explore device configuration, or a robotics simulator to test sensor models in a scene. * [Virtual Sensor Lab](https://sickag.github.io/sick_lidar_developer_guide/simulation/virtual-sensor-lab/): run virtual sensor web interfaces in your browser. * [NVIDIA Isaac Sim](https://sickag.github.io/sick_lidar_developer_guide/simulation/nvidia-isaac-sim/): use SICK LiDAR models in simulated environments. --- # SICK LiDAR Models in NVIDIA Isaac Sim > Simulate SICK LRS4000, multiScan100, and picoScan100 LiDAR models in NVIDIA Isaac Sim before hardware is available. multiScan200 is coming soon. Source: https://sickag.github.io/sick_lidar_developer_guide/simulation/nvidia-isaac-sim/ # NVIDIA Isaac Sim Compatible with: LRS4000 multiScan100 picoScan100
![NVIDIA](https://sickag.github.io/sick_lidar_developer_guide/assets/simulation/nvidia-logo.png) NVIDIA Isaac Sim provides simulation environments for robotics, industrial automation, and autonomous systems. SICK LiDAR models let you test applications and algorithms before physical hardware is available.
SICK models are available for picoScan150, picoScan120, multiScan136, multiScan165, and LRS4581R. multiScan200 models are coming soon. Find them on the applicable SICK product page under **Downloads > Software** or in NVIDIA Omniverse's sensor library. Configure the mounting position, orientation, field of view, scan frequency, detection range, and environment to match the deployment. Search for the product family on sick.com: - [LRS4000](https://www.sick.com/de/en/search?text=LRS4000) - [multiScan100](https://www.sick.com/de/en/search?text=multiScan100) - [picoScan100](https://www.sick.com/de/en/search?text=picoScan100) *Preview of a simulated multiScan270 (multiScan200, coming soon) scanning railway tracks in NVIDIA Omniverse, with the point cloud overlaid on the scene.* For more details on Isaac Sim, see: - [What is Isaac Sim](https://docs.isaacsim.omniverse.nvidia.com/latest/index.html) - [Getting Started Tutorials](https://docs.isaacsim.omniverse.nvidia.com/latest/introduction/quickstart_index.html) --- # SOPASair: The Built-In LiDAR Web Interface > SOPASair is the built-in web interface for SICK LRS4000, multiScan100, multiScan200, and picoScan100 sensors. Source: https://sickag.github.io/sick_lidar_developer_guide/visualization/sopasair/ # SOPASair Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 SOPASair is the sensor's built-in web UI, served directly from the device at `http://192.168.0.1/` with factory settings. There is nothing to install: point a browser at the sensor. Use it to: - configure the settings available on the selected device, - draw or teach in field-evaluation zones where the device supports those functions, - update firmware through the web UI where supported, or use the documented [REST sequence](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/), - create a diagnostic file if the device provides that option. Screen-by-screen walkthroughs are available for the [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/graphical-user-interface/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/). Available menus and functions vary by product family, variant, and firmware. For standard IP address settings, see [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/). For measurement recordings, see the [SOPASair Data recorder](https://sickag.github.io/sick_lidar_developer_guide/recording/sopasair/) if that function is available on your device. ![SOPASair user interface overview](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-home.png) *Live capture from a picoScan100's SOPASair web interface.* --- # LiDAR Visualization: SOPASair, SOPAS ET, rviz2, and More > Choose SICK LiDAR software for live sensor setup, device commissioning, ROS topic checks, or offline point-cloud viewing. Source: https://sickag.github.io/sick_lidar_developer_guide/visualization/ # Choose a Visualization Tool Choose a tool based on whether you need to configure a live sensor, manage devices and firmware, locate a device, or inspect point-cloud files. * [SOPASair](https://sickag.github.io/sick_lidar_developer_guide/visualization/sopasair/): configure and commission a connected sensor in its browser-based interface, including interactive workflows such as field teach-in and firmware update. Start here. * [ROS 2 rviz](https://sickag.github.io/sick_lidar_developer_guide/visualization/rviz2/): view live ROS 2 topics and point clouds to check data flow, frame alignment, and scan coverage; requires a running ROS 2 setup. * [CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/): inspect and process saved 3D point clouds, including compatible PCD files; for offline work, not live sensor configuration. * [Sentio Creator](https://sickag.github.io/sick_lidar_developer_guide/visualization/sentio-creator/): discover and commission SICK devices and find matching firmware packages; requires installing the SICK software. * [SOPAS ET](https://sickag.github.io/sick_lidar_developer_guide/visualization/sopas-et/): use the legacy engineering tool across all device families for network discovery and CoLa commands; use SOPASair for supported device setup. --- # View LiDAR Point Clouds (PCD) in CloudCompare > Open and inspect .pcd point clouds from 3D scan recording or the sick_perception_sdk in the free CloudCompare viewer. Source: https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/ # CloudCompare Compatible with: LRS4000 multiScan100 multiScan200 picoScan100
![CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/assets/visualization/cloudcompare-logo.svg) CloudCompare is a free, open-source 3D point-cloud viewer and processing tool. You can use it to visualize `.pcd` files produced by 3D scan recording or by the [sick_perception_sdk](https://sickag.github.io/sick_lidar_developer_guide/recording/sick-perception-sdk/), without writing any viewer code yourself.
![CloudCompare 2.13.2 displaying a green LiDAR point cloud with the About CloudCompare dialog open](https://sickag.github.io/sick_lidar_developer_guide/assets/visualization/cloudcompare.png) *LiDAR point cloud displayed in CloudCompare 2.13.2.* 1. Open the `.pcd` file with **File → Open**. 2. If the file contains intensity, select the cloud and set **Colors** to **Scalar field** with intensity as the active field in the **Properties** panel. 3. Use the **Point picking** tool to measure the distance between two points. --- # ROS 2 rviz: Visualize LiDAR Data > Use rviz2 to visualize SICK LiDAR point clouds and topics in ROS 2 before any custom application code is written. Source: https://sickag.github.io/sick_lidar_developer_guide/visualization/rviz2/ # ROS 2 rviz Compatible with: LRS4000 multiScan100 multiScan200 picoScan100
![ROS 2](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/ros2-logo.png) Use `rviz2` to inspect SICK LiDAR point clouds, laser scans, and coordinate frames from native ROS 2 or `sick_scan_xd`.
1. Configure the sensor for ROS 2 output as described in [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/). 2. Start the ROS 2 middleware and sensor publisher. For native ROS 2, use Cyclone DDS; for `sick_scan_xd`, start the driver on the host. 3. Confirm that ROS 2 can see the sensor topics: ```bash ros2 topic list ``` For native ROS 2, `/cloud/all_points` is the combined point cloud. A `sick_scan_xd` launch can use different topic names; select the `sensor_msgs/msg/PointCloud2` or `sensor_msgs/msg/LaserScan` topic shown by `ros2 topic list`. 4. Launch `rviz2` in the same sourced ROS 2 environment: ```bash rviz2 ``` 5. In the left panel, add a display such as: - `PointCloud2` for a dense 3D point cloud, - `LaserScan` for 2D planar output, - `TF` to verify coordinate frames, - `Axes` to confirm sensor orientation. 6. Select the published topic, set the fixed frame, and check the sensor data against the expected field of view. Set **Reliability Policy** to match the publisher when rviz2 reports an incompatible QoS profile. Check that data arrives on the topic: ```bash ros2 topic info --verbose /cloud/all_points ros2 topic echo --once /cloud/all_points ``` Replace the topic for a `sick_scan_xd` launch. If data arrives but rviz2 shows a **No transform** error, set **Fixed Frame** to the message's `header.frame_id`, or publish the required static transform. --- # Sentio Creator for SICK LiDAR Sensors > Use SICK Sentio Creator to commission supported SICK devices and obtain firmware packages for LRS4000, multiScan100, multiScan200, and picoScan100. Source: https://sickag.github.io/sick_lidar_developer_guide/visualization/sentio-creator/ # Sentio Creator Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Sentio Creator is a SICK software tool, published on [sick.com](https://www.sick.com/de/en/search?text=sentio-creator), used to configure and commission supported SICK devices. Alongside the device's product page, it is also a source for firmware update packages. Use it to obtain the correct package for your device variant before running a [firmware update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/). ![Sentio Creator software interface](https://sickag.github.io/sick_lidar_developer_guide/assets/visualization/sentio-creator.png) *Sentio Creator software interface displaying device list and extensions manager.* --- # SOPAS ET: Legacy Engineering Tool and Device Search > Find SICK LiDAR sensors on the local network with SOPAS ET. Use SOPAS ET Terminal to send CoLa A and CoLa B commands over TCP. Source: https://sickag.github.io/sick_lidar_developer_guide/visualization/sopas-et/ # SOPAS ET Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 SOPAS ET is a legacy SICK engineering tool that works with all device families in this guide. Use SOPASair for supported device setup and configuration workflows. ![SOPAS Engineering Tool user interface](https://sickag.github.io/sick_lidar_developer_guide/assets/visualization/sopas-et.png) *SOPAS Engineering Tool interface with device search and project view.* SOPAS ET can still be useful for discovering sensors on the local network. Use its network search to locate a device when its IP address is unknown, then continue commissioning in SOPASair or through the [REST API](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/). SOPAS ET also includes the **SOPAS ET Terminal** feature, which can send [CoLa A and CoLa B commands](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/) to sensors over TCP. *SICK knowledge base video: search for the device with SOPAS ET.* --- # LiDAR On-Device Applications Overview > Explore SICK LiDAR field evaluation, object detection, perpendicular-distance measurement, contamination indication, and 3D scan recording. Source: https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/ # On-Device Applications Use sensor-side processing to obtain application results without processing every scan point on a host. Check each page for supported devices and limits. * [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/): configure evaluation fields and read their results. * [Object Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/): use multiScan100 object properties to make decisions based on object criteria. * [Perpendicular Distance Measurement](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/): measure distance relative to a reference plane. * [Contamination Indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/): monitor dirt on the optics cover. * [3D Scan Recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/): record a 3D point cloud with a rotating 2D sensor. --- # LiDAR Field Evaluation: Polygons, Teach-In, and REST API > Configure on-device field evaluation on LRS4000, multiScan100, multiScan200, and picoScan100: evaluation groups, polygons via GUI, REST, or CoLa, and teach-in. Source: https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/ # Field Evaluation Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The sensor evaluates detection zones on the device. Field evaluation checks whether scan points enter a configured polygon and reports whether the field is free or infringed. The result can drive a digital output and can be read through REST, CoLa, or WebSocket events. In SOPASair, field evaluation is the **Object Detection** application; both names mean the same function.

**Field Evaluation:** term and meaning.

| Term | Meaning | | --- | --- | | Evaluation | One field (polygon) with its detection parameters, stored in an evaluation slot | | Evaluation slot | Numbered storage place for one evaluation, for example `Eval001` | | Group | One or more evaluations that are activated together | | Activation type | When a group is evaluated: always, by digital inputs, or by telegram | | Result | Per evaluation: free or infringed; per group: active, inactive, or not configured | *picoScan100: How to draw fields and detect objects?* ## Configure in the Web GUI Open the **Object Detection** application in SOPASair to create and edit polygon points directly. This is the quickest method for commissioning and manual adjustments. The field editor also supports teach-in. ![Field evaluation teach-in tile](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-field-evaluation-teach-in-tile.png) *Field evaluation teach-in tile in SOPASair.* For bulk coordinate changes, open the Field settings dialog and select JSON in its footer toolbar. The editor switches from the coordinate table to a JSON text field. Paste the prepared polygon to replace all points at once: ```json { "points": [ { "x": -5, "y": 531 }, { "x": 837, "y": 565 }, { "x": 907, "y": -637 }, { "x": 12, "y": -590 } ] } ``` ### Copy to Other Devices Use the top-right SOPASair menu to download the complete configuration from a commissioned sensor. It includes field geometries and can be imported into another compatible device, making it suitable for repeatable commissioning and replacement devices. Keep a versioned, validated backup for each deployed configuration. ## Teach In Teach-in captures the current environment and uses the measured contour as a field for object detection. Use it during commissioning when the surrounding geometry should define the detection field instead of drawing a polygon manually. Open the **Object Detection** application in SOPASair and select **Teach-in** in the field configuration. Set the distances in front of and behind the object, choose the minimum teach-in time, and click **Start**. Stop the teach-in when the environment has been captured, then save the field evaluation configuration. *Teach-in configuration in SOPASair.* The configured distances take effect during the next teach-in. Keep the intended environment stable while the contour is captured. Teach-in uses the same evaluation group and output mechanism as a manually configured field. After the contour has been captured, monitor the evaluation result through the configured output, REST, CoLa, or WebSocket events. ## Minimum Object Size The farther an object is, the wider apart the beams are, so small objects can fall between them. Select a device family, scan configuration, target, and object size to estimate up to which range the object is still detected. Device presets fill in the model-specific values from the operating instructions. Select **Custom Values** to adjust angular resolution, beam divergence, minimum spot size, and scanning range.

Input

?

Select the device family, or Custom Values to enter your own geometry and scanning range.

?

Select the model and scan mode. Presets fill in the operating-instruction values. Interlaced modes combine several frames and require a stationary scene.

?

Target reflectance limits the scanning range: 10% is dark, 90% is bright. Reflector ranges assume a suitable reflector. Preset conditions must match your application.

?

Horizontal angle between measurement directions. A smaller step generally allows smaller objects at the same distance. Editable in Custom Values.

?

Angle between scan layers used for the height calculation. Real layer gaps can vary; the multiScan165 preset uses 2.5°, while outer gaps can reach 5°.

?

Horizontal beam spread in milliradians, used to display spot width. A preset may include the scan-mode contribution. Blank means no verified value for this mode.

?

Vertical beam spread in milliradians, used to display spot height. For LRS4000, the vertical spot also determines the height check.

?

Width presented to the sensor across the scan direction. Use the smallest relevant width, accounting for the object's orientation.

?

Height presented to the sensor. The height check uses layer spacing, or the vertical spot for LRS4000. Enter 0 to disable this check. picoScan presets are width-only.

?

One spacing uses the operating-instruction minimum-size model. Larger values add a planning margin and reduce range; they are not a guaranteed number of detected returns.

Result

Maximum range
?

Smallest of the width limit, enabled height limit and target scanning range. This is a geometric planning estimate, not a detection guarantee.

–
Range limit from the width
?

Geometric range supported by the entered width, before applying the height check or target scanning-range cap.

–
Range limit from the height
?

Geometric range supported by the entered height, before applying the width check or target scanning-range cap. Height 0 disables this check.

–
Scanning range for the target
?

Preset range cap for the selected target. picoScan diffuse-target values are typical at 10 klx; multiScan100 values use 10 klx. Footnote 1 marks a working-range fallback, not a specified target range.

–
Minimum object width at maximum range
?

Minimum width from the selected model at the calculated maximum range. If no positive range exists, it is shown at the scanning-range cap instead.

–
Minimum object height at maximum range
?

Minimum height at the calculated range, using layer gaps or the LRS4000 vertical spot. Shown only when the height check is enabled. The multiScan model follows the published size table.

–
Spot width at maximum range
?

Horizontal beam footprint at the calculated range: initial spot plus divergence times distance. This is separate from the minimum object width. Blank means the preset has no verified divergence for this mode.

–
Spot height at maximum range
?

Vertical beam footprint at the calculated range: initial spot plus vertical divergence times distance. A 2D scanner still has a vertical beam footprint.

–

*Minimum object size over the range. The maximum range is where the curve reaches the object size, capped by the scanning range for the selected target.* These results are estimates only. Testing the individual object in its actual position and operating conditions is necessary; the calculator does not guarantee detection. The LRS4000, multiScan100, and picoScan100 presets use the corresponding model-specific operating-instruction data and formulas. ## Activate and Monitor a Group

**Activate and Monitor a Group:** REST resource and purpose.

| REST resource | Purpose | | --- | --- | | `ActivateEvaluationGroup` | Activates or deactivates a `TELEGRAM`-controlled group | | `FieldEvaluationGroupState` | Group state: not configured, active, or inactive | | `FieldEvaluationResult` | Current result: `FREE`, `INFRINGED`, or a transitional state; also available as a [WebSocket event](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/) | A typical application creates the groups once, persists the configuration, and at runtime reads the group state and result, updates contours when necessary, and switches telegram-controlled groups. For full payloads, see the [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) REST API references and the CoLa telegram listings for [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/). Activation types (`Activation.Type` of a group). `ActivateEvaluationGroup` only switches `TELEGRAM` groups:

**Activate and Monitor a Group:** value, type, and behavior.

| Value | Type | Behavior | | --- | --- | --- | | `0` | Deactivated | The group is never evaluated. | | `1` | Always | The group is active as soon as it is stored. `ActivateEvaluationGroup` returns `false` for it and cannot switch it off. | | `2` | Inputs | Digital inputs activate the group. | | `3` | Telegram | The group starts in the state set by `InitialActivationStateTelegram` and is switched with `ActivateEvaluationGroup`. | `FieldEvaluationGroupState` returns one value per group: `0` not configured, `1` active, `2` inactive. `FieldEvaluationResult` returns one state per evaluation: `0` not configured, `1` inactive, `2` free, `3` detecting infringed, `4` infringed, `5` detecting free. ## Configure over the API On all devices, create the evaluations in SOPASair or restore them from a [configuration file](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/); REST and CoLa can then change them. On the picoScan100, REST and CoLa can also build complete evaluations from scratch. The following workflow applies to picoScan150 with firmware V2.3.3. Some of these variables, such as `Eval001`–`Eval048` and `EvaluationGroupMapping`, are not listed in the published OpenAPI file, but can be read and written as REST variables (`GET` / `POST /api/`).

**Configure over the API:** variable or method, purpose, and devices.

| Variable or method | Purpose | Devices | | --- | --- | --- | | `Eval001`–`Eval048` | Detection parameters of one evaluation slot: mode, minimum object size, timing, and the referenced volume (`VolumeList`) | picoScan100 | | `SetFieldEvaluationContour` / `GetFieldEvaluationContour` | Writes or reads the polygon of an evaluation | LRS4000, multiScan100, multiScan200, picoScan100 | | `SetFieldEvaluationConfiguration` / `GetFieldEvaluationConfiguration` | Writes or reads evaluation parameters | multiScan200 | | `EvaluationGroupMapping` | Groups evaluations and sets the activation type of each group | picoScan100 | | `EvaluationGroupType` | Selects field evaluation or perpendicular-distance mode | LRS4000, picoScan100 | | `PortConfiguration` | Assigns an evaluation result to a digital output | LRS4000, multiScan100, multiScan200, picoScan100 | | `WriteEeprom` (REST) / `mEEwriteall` (CoLa) | Stores the configuration permanently | LRS4000, multiScan100, multiScan200, picoScan100 | To create an evaluation on the picoScan100, log in as **Authorized client** or **Service** and write the variables in this order: 1. Write `EvalNNN` with the detection mode, the minimum object size, and `VolumeList = [NNN]`. 2. Write the polygon with `SetFieldEvaluationContour`. It returns error `1` (invalid evaluation) if `VolumeList` of the slot is empty, so write the slot first. 3. Write `EvaluationGroupMapping`. The whole array is replaced on every write: read the current mapping first and include every group you want to keep. 4. Optional: write `PortConfiguration` to switch a digital output when the evaluation is infringed. Outputs refer to evaluations (sources `EG01`–`EG48`), not to groups, and the whole port array must be written. 5. Call `WriteEeprom`. The device re-initializes; wait about 1 s before reading the state. 6. For a `TELEGRAM` group, switch it on with `ActivateEvaluationGroup`. To delete an evaluation, remove its group from `EvaluationGroupMapping`, clear `VolumeList` and the name of the slot, and call `WriteEeprom`. The group state returns to not configured. The coordinates are in millimeters in the sensor coordinate system: `x` points forward (depth) and `y` to the side. **Detection modes** (`EvaluationParamsCommon.Mode` of the evaluation slot):

**Configure over the API:** value, mode, and the field is infringed when.

| Value | Mode | The field is infringed when | | --- | --- | --- | | `0` | Blanking | An object at least as large as the minimum object size is inside the field. This is the most common mode. | | `1` | Reflector only | A highly reflective object such as a retroreflector is inside the field. | | `2` | Contour | The scan deviates from the taught-in contour by more than the tolerance. Requires a valid [teach-in](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#teach-in-over-the-api). | ### Change a Polygon The REST API exposes `SetFieldEvaluationContour` to update a polygon. The evaluation must already exist. Use `GetFieldEvaluationContour` to confirm the stored geometry and persist the change with `WriteEeprom`. See the [REST client example](https://github.com/SICKAG/sick_scan_rest_client/blob/public/examples/sick_scan_rest_client_object_detection_example.py). CoLa provides the same `SetFieldEvaluationContour` function through its telegram interface. Use it when the integration already uses CoLa, such as a PLC or legacy client; see [CoLa](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/). The `sick_perception_sdk` uses the REST interface and provides an application-level option for changing contours. See the [object-detection example](https://github.com/SICKAG/sick_perception_sdk/blob/main/examples/shared/object_detection.cpp). ## Teach in over the API A teach-in evaluation is an evaluation slot with mode `2` (contour). The polygon written with `SetFieldEvaluationContour` is not the detection field: it is the region of interest in which teach-in learns the reference contour. `GetFieldEvaluationContour` therefore returns this region, not the learned contour. Teach-in is global; it is not bound to an evaluation slot. Set the parameters, then start and stop the teach-in:

**Teach in over the API:** variable or method and purpose.

| Variable or method | Purpose | | --- | --- | | `TeachInToleranceFront` / `TeachInToleranceBack` | Tolerance in front of and behind the taught contour, in mm (default 250) | | `TeachInMinimumTimeMs` | Minimum teach-in time, 100 to 60000 ms (default 250) | | `TeachInActivationInput` | Digital input that starts the teach-in; `0` = software only | | `StartTeachIn` / `StopTeachIn` | Starts and stops the teach-in | | `TeachInActive` | `1` while the teach-in runs | | `TeachInContourValid` | `1` after a teach-in produced a valid contour | Keep the scene stable for at least the minimum teach-in time, stop the teach-in, check `TeachInContourValid`, and call `WriteEeprom`. To change the field later, repeat the teach-in, for example with a larger tolerance; the region of interest stays the same. ## Distance-Dependent The **Distance-dependent** parameter determines whether two detected objects are evaluated separately or merged into one object based on their axial separation. It works with the configured **Blanking** width to avoid triggering a field evaluation when separate small objects would otherwise appear as one large object. *picoScan100: 2D Object Detection Parameter Distance-dependent.* The video uses two objects: a foreground object approximately 60 mm wide, a background object approximately 250 mm wide, and about 450 mm of axial separation. The standard blanking width is 300 mm.

**Example:** configuration, result, and explanation.

| Configuration | Result | Explanation | | --- | --- | --- | | Distance-dependent off | Field infringed | Both objects merge into one contiguous object wider than 300 mm. | | Distance-dependent on; threshold 300 mm | Field not infringed | The objects are at least 300 mm apart and are evaluated separately; neither is wider than 300 mm. | | Distance-dependent on; threshold 500 mm | Field infringed | The objects are less than 500 mm apart, so they merge and exceed the blanking width. | Set the separation threshold to the distance at which nearby objects should be merged for your application. ## Ground Filter (multiScan100) The ground filter uses upper and lower ground thresholds to reduce false field-evaluation triggers caused by the ground. When configured correctly, it retains small objects such as forklift tines and can be used indoors and outdoors. The filter also affects perpendicular-distance evaluations. See [Ground Filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#ground-filter) for availability and API settings. *multiScan1xx: Ground-filter behavior in a field application.* --- # LiDAR Object Evaluation with multiScan100 > Configure multiScan100 object evaluation using tracked object properties, spatial regions, motion criteria, and REST result states. Source: https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/ # Object Evaluation Compatible with: multiScan100 **Object Evaluation** combines 3D object tracking with configurable criteria. The tracker estimates each object's track ID, horizontal and vertical size, speed, direction of movement, and age. An evaluation checks those properties within a configured region and reports whether its criteria are met. This lets an application respond to relevant movement without processing every scan point on a host. *multiScan100 Object Evaluation overview: tracked objects are evaluated against configured regions and criteria.* ![SOPASair Object Evaluation view with tracked objects and their properties](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/firmware-250-object-evaluation-light.png) *The multiScan100 3D view displays tracked-object IDs, dimensions, speed, direction of movement, and age alongside the configured evaluation regions.* Object Evaluation is available from multiScan100 firmware 2.5.0 and requires the **3D Object Detection Advanced** package. Check the device variant, firmware, and installed license before commissioning. See the [firmware 2.5.0 release notes](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/release-notes/#firmware-250) and [multiScan100 license list](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/licenses/). Object Evaluation filters tracked objects by measurable properties; it does not return semantic object-class labels. Validate any application decision against the real objects and operating conditions. ## How an Evaluation Works Object tracking estimates object properties over successive scans. An evaluation then applies its spatial region and criteria to those tracks. The result is a state for each configured evaluation, not a class label for each object.

**Object Evaluation criteria:** region and track properties used to determine whether an evaluation is infringed.

| Criterion | How it affects the evaluation | | --- | --- | | Region of interest | A polygon in the scan plane, with lower and upper Z limits, defines where objects are evaluated. | | Object size | Minimum horizontal and vertical sizes can be set. An optional maximum-size filter rejects objects that exceed the configured maximum dimensions. | | Motion state | `ALL` accepts moving and stationary tracks; `MOVING` or `STATIONARY` restricts the evaluation to that motion state. | | Speed | An optional minimum and maximum speed range filters tracks. | | Direction | An optional direction filter uses a configured direction and uncertainty range. | | Object age | A minimum age can exclude tracks until they have been observed long enough. | | Hidden time | A maximum hidden time controls how long a temporarily unobserved track can remain part of the evaluation. | Use SOPASair for the displayed units and the [multiScan100 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) for numeric constraints and enum values. The REST configuration uses `EvaluationId` to associate a contour and criteria with an evaluation. ## Configure and Validate 1. Confirm that the sensor has firmware 2.5.0 or later and the **3D Object Detection Advanced** package. 2. In **Configuration > Basic settings**, turn off interlaced mode. Object evaluation is unavailable in interlaced mode; the sensor reports [error 211](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/error-codes/). 3. Open the **Object Evaluation** application in SOPASair. Define the region of interest and choose the motion, size, speed, direction, and age criteria that match the application. 4. Activate the configured evaluation group. A group can be activated or deactivated through the REST API as well as the device interface. 5. Test representative objects and movements in the intended region. Confirm that qualifying tracks produce the expected result and that excluded tracks do not. 6. Monitor the application, group, configuration, and evaluation states described below. ## Read and Interpret Results Use these read-only REST endpoints to check whether the application is available, the group is active, and the evaluation result matches the scene.

**Object Evaluation status endpoints:** REST path and returned status.

| REST endpoint | Meaning | | --- | --- | | `GET /api/ObjectEvaluationApplicationState` | Application state: `0` DEACTIVATED, `1` ACTIVE, `2` CONFIGURING, or `3` ERROR. | | `GET /api/ObjectEvaluationGroupState` | Activation state for configured groups: `0` NOT_CONFIGURED, `1` ACTIVE, or `2` INACTIVE. | | `GET /api/ObjectEvaluationResult` | Results for configured evaluations. `EvaluationResultList` contains one state per evaluation. | | `GET /api/ObjectEvaluationConfigState` | Reports whether active beam and evaluation limits are `0` OK, `1` WARNING, or `2` EXCEEDED. | Each state in `EvaluationResultList` has a distinct meaning:

**Evaluation result states:** numeric value and interpretation.

| Value | State | Meaning | | ---: | --- | --- | | `0` | `NOT_CONFIGURED` | No evaluation is configured for this entry. | | `1` | `INACTIVE` | The evaluation is configured but not active. | | `2` | `FREE` | No qualifying object infringes the evaluation. | | `3` | `DETECTING_INFRINGED` | The sensor is confirming an infringement. | | `4` | `INFRINGED` | A qualifying object infringes the evaluation. | | `5` | `DETECTING_FREE` | The sensor is confirming that the infringement has cleared. | Treat `DETECTING_INFRINGED` and `DETECTING_FREE` as transitional states, not stable results. The application state, group state, configuration state, and per-evaluation result are separate. Check the relevant status endpoints when diagnosing an unexpected output. ## Configure Through REST The REST API provides operations to get and set each evaluation's contour and criteria, and to activate or deactivate a group. The get/set contour and configuration operations require at least the **Authorized Client** user level. Review the request schemas and error codes in the [multiScan100 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) before writing configuration.

**Object Evaluation configuration operations:** REST method and purpose.

| REST operation | Purpose | | --- | --- | | `POST /api/GetObjectEvaluationContour` | Read an evaluation's polygon and lower/upper Z limits. | | `POST /api/SetObjectEvaluationContour` | Set an evaluation's polygon and lower/upper Z limits. | | `POST /api/GetObjectEvaluationConfiguration` | Read an evaluation's name and criteria. | | `POST /api/SetObjectEvaluationConfiguration` | Set an evaluation's name and criteria. | | `POST /api/ActivateObjectEvaluationGroup` | Activate or deactivate an evaluation group. | The `Get...` operations above use HTTP `POST` with an evaluation ID in the request body. Do not confuse them with the read-only `GET` status endpoints. After changing settings, read them back and verify the live result in SOPASair. ## Configure Through CoLa The same status variables and operations are available as CoLa telegrams, for example for a PLC. See the [Object Evaluation telegrams](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#object-evaluation) in the multiScan100 CoLa telegram listing for the structures and copyable CoLa A and CoLa B examples. `ActivateObjectEvaluationGroup` switches only groups with the activation type Telegram. For a group with the activation type Always, the device confirms the request, but the group stays active. Read `ObjectEvaluationGroupState` to confirm the change. Changes made through CoLa or REST are lost on restart unless you save them permanently. --- # Perpendicular Distance Measurement on SICK LiDAR Sensors > Review perpendicular-distance availability on LRS4000, multiScan100, and picoScan100, with a detailed picoScan100 configuration and API workflow. Source: https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/ # Perpendicular Distance Measurement Compatible with: LRS4000 multiScan100 picoScan100 Perpendicular distance evaluation measures object distances relative to a reference line in the scan plane. Define a field and reference line in the application; the sensor evaluates the points in that field and reports the minimum and maximum perpendicular distances and the positions of the corresponding measuring points. *multiScan1xx: Perpendicular distance application demonstration.* ## Configure a Measurement 1. Open **Application > Perpendicular distance measurement** in SOPASair and add an evaluation group. 2. Draw the zone in which objects should be measured. 3. Set **Max. blanking size** and **Detection time** under Object detection to balance measurement stability and response time for the target. 4. Save the configuration to the device. 5. Check the live minimum and maximum distances and their measuring-point coordinates in the result list. The evaluation runs on the sensor, so the host receives measurement results without having to detect objects from the raw scan itself. See the [SOPASair configuration walkthrough](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/#perpendicular-distance-measurement) for the interface details. *picoScan100 example: Output a field's perpendicular distance after configuring the measurement field; use the interfaces below to read the results in your application.* ## Read Results The REST endpoint `GET /api/perpendicularDistanceResult` returns a timestamp and an `evaluations` array. Each result contains an evaluation ID, minimum and maximum distance, and the 3D position of each corresponding measuring point. The `evaluations` array is empty when no object is measured. The result is read-only; see the [picoScan100 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/). CoLa clients can poll `sRN perpendicularDistanceResult` for the current measurement or subscribe with `sEN perpendicularDistanceResult` for event updates. The telegram reports the shortest and furthest measuring point in the range relative to the reference plane. See the [picoScan100 CoLa Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/). ## Configure over the API (picoScan100) REST and CoLa expose every variable needed to create, change, and delete a perpendicular distance evaluation without SOPASair. The following workflow applies to picoScan150 with firmware V2.3.3. Some of these variables are not listed in the published OpenAPI file, but can be read and written as REST variables (`GET` / `POST /api/`). A perpendicular distance evaluation has two parts, as in SOPASair:

**Configure over the API (picoScan100):** part, variables, and content.

| Part | Variables | Content | | --- | --- | --- | | Object detection | `EvalNNN`, `VolumeNNN` | Detection parameters (blanking mode, minimum object size, detection time) and the field in which objects are measured | | Reference line | `perpDistNNN` | Normal vector of the line in the scan plane and its signed distance from the sensor, in mm | To create an evaluation, log in as **Authorized client** or **Service** and write the variables in this order, using the same slot number `NNN` throughout: 1. Set the slot to perpendicular distance: write `EvaluationGroupType` with all 48 values and `1` at the slot position (`0` = field evaluation). 2. Write `EvalNNN` with `VolumeList = [NNN]`. 3. Write the field polygon directly to `VolumeNNN`. Do not use `SetFieldEvaluationContour` here: it returns success for perpendicular distance slots but is not reliable for them. 4. Write the reference line to `perpDistNNN`. The normal vector sets the orientation, for example `(1, 0, 0)` for a line across the forward direction, and the distance sets its position. Because the picoScan100 is a 2D sensor, the `z` component is always `0`. The no-data mode sets the output when no object is measured: `0` zero, `1` hold the last value, or `2` a user-defined substitution distance. 5. Add the group to `EvaluationGroupMapping` with `EvalIds = [NNN]`. The whole array is replaced on every write, so include every group you want to keep. 6. Call `WriteEeprom` and wait about 1 s before reading the result. Keep in mind: - Perpendicular distance groups need their own slots; they cannot share a slot with a field evaluation group. - If the field is missing (empty `VolumeList` or empty `VolumeNNN`) or the group references no evaluation, the device reports a recoverable error (`DeviceStatus` = `7` instead of `3`) and the result stays empty. - Perpendicular distance results are not assigned to digital outputs; read them from `perpendicularDistanceResult`. - Group activation (`ALWAYS`, `INPUTS`, `TELEGRAM`) and `ActivateEvaluationGroup` work as for [field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#configure-over-the-api). To delete the evaluation, remove the group from `EvaluationGroupMapping`, clear `EvalNNN`, `VolumeNNN`, and `perpDistNNN`, set the slot in `EvaluationGroupType` back to `0`, and call `WriteEeprom`. For output and evaluation-group concepts shared with field evaluation, see [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/). --- # LiDAR Contamination Indication: Monitor the Optics Cover > Monitor dirt on the optics cover of LRS4000, multiScan100, multiScan200, and picoScan100 sensors by sector, and read or configure contamination results via REST. Source: https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/ # Contamination Indication Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Contamination indication monitors the sensor's optics cover for dirt that could reduce measurement quality. It evaluates contamination per sector of the optics cover, so maintenance can target the affected area before the optics become too dirty. The number of sectors depends on the device. The SOPASair sector display shows where contamination is accumulating, with overall states such as **Clean**, **Minor**, **Heavy**, and **Blocked**. ![SOPASair contamination indication tile with status, sector display, and configuration settings](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-contamination-indication-tile.png) *Contamination indication tile in SOPASair, captured live from a multiScan270: overall status, sector display, and configuration.* Configure the sensitivity, response time, warning threshold, and active sectors for the installation. The device can expose the result through its GUI and REST API; depending on configuration, it can also be monitored through CoLa or mapped to digital outputs. The warning and error behavior, and whether blocked sectors count as errors, are configurable. Use the indication as a maintenance signal and inspect and clean the optics according to the product documentation. All contamination settings and results are available through the REST API. The endpoints are listed under **Contamination Indication** in the [LRS4000 REST API](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100 REST API](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200 REST API](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100 REST API](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) references. Writes require the Authorized Client user level and challenge-response authentication. Persist configuration changes with `WriteEeprom`; otherwise, they may be lost after a power cycle. picoScan100 CoLa clients can read configuration and sector data and subscribe to event-driven contamination updates. See the [picoScan100 CoLa Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/). For the interface walkthrough, see [Contamination Indication in SOPASair](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/#contamination-indication). *picoScan100 example: Compare optics-cover contamination states with the sector indications described above.* --- # 3D Scan Recording: On-Device Point Clouds from a 2D LiDAR > Record a 3D point cloud on an LRS4000 or picoScan150 that rotates on an axis, using the IMU or an encoder, and download it as a PCD file. Source: https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/ # 3D Scan Recording Compatible with: LRS4000 picoScan100 3D scan recording turns a rotating 2D LiDAR into a 3D scanner without host-side geometry code. While the sensor rotates on an axis, it combines consecutive 2D scans with the rotation angle and stores one point cloud as a `.pcd` file on the device. The angle comes from the built-in IMU or from an encoder on the axis. Open the result in [CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/). The device keeps only the most recent point cloud, and there is no continuous 3D output. For continuous 3D data or custom transforms, process the scans on the host as described in [3D With 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/). ![3D scan recording interface](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-pointcloud.png) *Live capture of the 3D scan recording interface on a picoScan100.* ## Record in SOPASair 1. Mount the sensor so its scan plane sweeps the area of interest as it rotates. 2. Open **Application → 3D scan recording**, select the rotation source (IMU or encoder), and enter the sensor offset from the rotation axis. 3. Start the recording, rotate the sensor through the sweep, and stop the recording. 4. Download the point cloud when saving is complete. ## Record over the REST API Writing parameters and calling methods requires [challenge-response authentication](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication).

**Record over the REST API:** parameter and values.

| Parameter | Values | | ------------------- | -------------------------------------------------------------- | | `ScanMergerEnabled` | `true` / `false` | | `ScanMergerSource` | `0` IMU, `1` ENCODER | | `ScanMergeTrigger` | `0` METHOD; on the LRS4000 also `1` DIGITAL_INPUT | | `RotationOffset` | `{x, y, z}` in mm: sensor offset from the rotation axis | 1. Write the parameters and persist them with `POST /api/WriteEeprom`. 2. picoScan150 only: `POST /api/ResetScanMergeView` to clear the previous recording. 3. `POST /api/StartScanMerge` and move the axis through the sweep. With `ScanMergeTrigger = 1`, a digital input starts and stops the recording instead. 4. `POST /api/StopScanMerge`. 5. picoScan150 only: poll `GET /api/MergeSaving` until it changes from `true` back to `false`. 6. Download the point cloud. On the picoScan150, use port 80 outside `/api/`: `curl http://192.168.0.1/cloud.pcd -o cloud.pcd`. On the LRS4000, download it in SOPASair under **Application → 3D scan recording**. The endpoints are listed in the [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) REST API references. For a complete example, see the [House 3D Capture](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/house-3d-capture/) project. --- # LiDAR Data Streaming: Compact, MSGPACK, LMDscandata > Choose a SICK LiDAR data format or event interface for measurement streams, notifications, and on-sensor filtering. Source: https://sickag.github.io/sick_lidar_developer_guide/data-streaming/ # Choose a Data Streaming Option * [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/): start here for new integrations needing low-bandwidth, low-latency binary scan, IMU, and encoder data; the parser must know the layout. * [MSGPACK Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/): self-describing scan data parsed with standard libraries; useful for quick Python prototypes. * [LMDscandata Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/): CoLa scan telegrams for PLCs and existing CoLa integrations; less suited to high data rates. * [WebSocket Events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/): low-latency JSON notifications for changing device values, state, and results—not scan data. * [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/): configure on-sensor filters to reduce bandwidth or suppress unwanted points; some filters affect output rate or represent filtered points as zero. Format availability, transport, and filters depend on the device family, variant, and firmware. Filters apply to the supported measurement formats. Use the [Bandwidth Calculator](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#bandwidth-calculator) to estimate Compact scan frame sizes, segment counts, and traffic for your output and filter settings.

**Choose a Data Streaming Option:** device family, Compact, MSGPACK, LMDscandata, and WebSocket events.

| Device family | Compact | MSGPACK | LMDscandata | WebSocket events | | --- | --- | --- | --- | --- | | LRS4000 | Yes | No | Yes | No | | multiScan100 | Yes | Yes | No | No | | multiScan200 | Yes | No | No | Yes | | picoScan100 | Yes | Yes | Yes | Yes |
Customer Application
REST
WebSocket
Compact
Configuration
Notifications
Data
A typical application combines REST for configuration, WebSocket for change notifications where supported, and Compact for measurement data.
See [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) for configuration requests. --- # SICK Compact Format: Parse LiDAR Scan, IMU, Encoder Data > Parse the SICK Compact binary format over UDP or TCP: frame layout, scan telegrams, IMU and encoder data, multiScan200 formats, and Wireshark decoding. Source: https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/ # Compact Format Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The Compact format is SICK's binary format for measurement data. It uses the least bandwidth of all formats and can be parsed very efficiently, for example by copying the bytes into a C struct with `memcpy`. The fields are not self-describing: your parser must know the layout, which SICK publishes as [Kaitai Struct](https://kaitai.io/) definitions. The authoritative definitions are in the [`formats` folder on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/tree/public/formats). Paste a captured telegram into the browser-based [Kaitai Web IDE](https://ide.kaitai.io/) to inspect it field by field, or [generate a parser](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/) for your application. To receive Compact data without writing your own parser, use the C++ [sick_perception_sdk](https://sickag.github.io/sick_lidar_developer_guide/recording/sick-perception-sdk/). It receives the scan, IMU, and encoder data and provides the scans as point clouds. ## Frames and Segments The multiScan100 and picoScan100 send each scan segment in a UDP datagram. The LRS4000 and multiScan200 carry it as a framed telegram in the TCP stream. Every segment can be processed on its own, which keeps latency low. To work with a full scan (frame), collect all segments with the same `frame_number`. The Compact format is organized as one frame definition that dispatches to the individual telegram types. Types 3, 4, 6, and 7 also share the standard header: ```mermaid --- config: flowchart: nodeSpacing: 8 rankSpacing: 30 padding: 4 --- flowchart LR CF["Compact
frame"] T1["Type 1: Scan data"] T2["Type 2: IMU"] T3["Type 3: Ambient light"] T4["Type 4: Encoder"] T6["Type 6: Scan data (multiScan200)"] T7["Type 7: IMU"] CH["Standard
header"] CF --> T1 CF --> T2 CF --> T3 CF --> T4 CF --> T6 CF --> T7 T3 --> CH T4 --> CH T6 --> CH T7 --> CH ``` *Compact parser structure: the frame definition selects the telegram-specific parser. Types 3, 4, 6, and 7 reuse the standard header definition.* ## Transport The multiScan100 and picoScan100 send Compact data over UDP; the LRS4000 and multiScan200 send it over TCP. For a comparison of UDP unicast, UDP multicast, and TCP, see [UDP Unicast / Multicast](https://sickag.github.io/sick_lidar_developer_guide/shared-features/udp-unicast-multicast/). === "LRS4000" Select Compact with the `ScanDataFormat` REST parameter or in the data-output settings. Connect a TCP client to port `2115`. [LMDscandata](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/) is available as an alternative TCP format. === "multiScan100" Select **Compact** or MSGPACK in the data-output settings and set the destination IP address and port. UDP multicast supports Compact only. The REST API exposes the same Ethernet destination settings. === "multiScan200" Select **TCP Compact** as data output mode (`sWN dataOutputMode 1`); see the [multiScan200 CoLa Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#set-data-output-mode-swn-dataoutputmode). The sensor uses a separate TCP port per content:

**Transport:** multiScan200 TCP port, content, and telegram type.

| TCP port | Content | Telegram type | | -------- | ------------------------------------------------ | ------------------------------------- | | `2115` | Distance and RSSI, optionally with ambient light | [6](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-6-scan-data-multiscan200) | | `2116` | Ambient light only | [3](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-3-ambient-light) | | `2117` | IMU | [7](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-7-imu-with-standard-header) | === "picoScan100" Select **Compact** or MSGPACK in the data-output settings and set the destination IP address and port. The factory default destination is `192.168.0.100:2115`. The REST API exposes the same Ethernet destination settings. *picoScan100 example: Enable Compact measurement data over UDP unicast and set the receiver destination address.* For UDP multicast, set the destination to an address from `224.0.0.0` to `239.255.255.255`. The network requirements are on [UDP Unicast / Multicast](https://sickag.github.io/sick_lidar_developer_guide/shared-features/udp-unicast-multicast/#udpip-multicast). ## Wireshark Dissector SICK provides a Wireshark dissector for Compact measurement and IMU data, so you can inspect the stream field by field instead of reading raw bytes. It supports the Compact format only. Use it to confirm framing, ports, CRCs, and decoded values before you debug your own parser. ### Install the Dissector 1. Download and install [Wireshark](https://www.wireshark.org/download.html). 2. Download the dissector: [COMPACT_Dissector.lua](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/COMPACT_Dissector.lua). 3. In Wireshark, open **Help > About Wireshark > Folders** and copy the file to the **Personal Lua Plugins** folder. 4. Restart Wireshark. ### Decode Compact Data 1. Configure the sensor to output Compact data. For multiScan100 and picoScan100, select UDP and set the destination to your PC's IP address and listening port. For LRS4000 and multiScan200, use the [TCP connection](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#transport). 2. Open Wireshark and double-click the Ethernet interface connected to the sensor to start capturing. 3. Enter `compact` in the display-filter bar and press Enter. Decoded packets show `COMPACT` in the **Protocol** column. 4. Select a packet and expand the Compact tree in the packet-details pane. Inspect the telegram type, header, and measurement values, such as distance. For an IMU telegram, inspect acceleration and angular velocity instead. On Windows, the sensor adapter must use the Private network profile; see [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/#connect-the-sensor). If no Compact packets appear, clear the display filter first to check whether traffic arrives at all. Verify the sensor's output format, destination address, and port. If you use a non-default port, add it to the corresponding port list near the top of the Lua file, such as `CompactPorts` or `IMUPorts`, and restart Wireshark. To disable the plug-in temporarily, choose **Analyze > Enabled Protocols** and clear its checkbox. See [Frame Layout](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#frame-layout) for the telegram structure and [Wireshark | pcap](https://sickag.github.io/sick_lidar_developer_guide/recording/wireshark-pcap/) for recording traffic. ### IMU Example Enable IMU output on a supported sensor and capture its IMU stream as well as the measurement stream. The video shows how to receive and inspect IMU telegrams in Wireshark. *How to receive IMU data and dissect it with Wireshark.* ## Frame Layout All multi-byte values are little-endian. The frame contains a start marker, a telegram type, the type-specific payload, and a CRC32 checksum. Verify the checksum before processing the payload. Use the authoritative [`compact_frame.ksy` definition on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/compact_frame.ksy) for the complete frame layout. ## Standard Header Telegram types 3, 4, 6, and 7 start their payload with the same header. Types 1 and 2 do not. For the complete field layout, use the authoritative [`compact_header.ksy` definition on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/compact_header.ksy). For type 4 with `telegram_version` 1, `payload_length` includes `sender_id`; from version 2 onwards it does not. ## Type 1: Scan Data The scan payload is a header followed by one or more modules. Each module carries per-layer metadata plus the beam data for its layers. Read the first module size from the telegram header, then use each module's `next_module_size` to find the next one; zero marks the last module. Do not assume all modules have the same size. Read `telegram_version`, `data_content_echos`, and `data_content_beams` before parsing beam data. Versions 3 and 4 have different beam-field ordering; version 4 also adds a distance scaling factor to the module metadata. For version 4, convert a raw distance to millimeters as `distance_mm = distance_raw × distance_scaling_factor`. All segments of one scan share `frame_number` and differ by segment index. The authoritative definition is [`type_1_primary_data_spherical_coordinates.ksy` on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_1_primary_data_spherical_coordinates.ksy). The following annotated dump shows the first bytes of a real type 1 telegram from the [picoScan150 sample capture](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#sample-packet-captures). All values are little-endian. Offsets are decimal. ```txt Offset Bytes Field Value 0 02 02 02 02 start_of_frame 4 01 00 00 00 telegram_type 1 (scan data) 8 a1 47 00 00 00 00 00 00 telegram_counter 18337 16 24 07 d4 07 00 00 00 00 transmit_timestamp 131335972 µs 24 04 00 00 00 telegram_version 4 28 70 23 00 00 size_module_0 9072 bytes 32 02 00 00 00 00 00 00 00 segment_counter 2 40 53 0e 00 00 00 00 00 00 frame_number 3667 48 99 df 71 01 sender_id 24240025 (serial number) 52 01 00 00 00 58 02 00 00 lines, beams per scan 1 layer, 600 beams 60 03 00 00 00 number_of_echos_per_beam 3 64 56 d8 d3 07 00 00 00 00 timestamp_start 131323990 µs (16 bytes with timestamp_stop) 80 00 00 00 00 phi 0.0 rad 84 78 d9 a0 be 06 36 3b 3f theta_start, theta_stop -0.3142 rad (-18°), 0.7313 rad (41.9°) 92 00 00 80 3f distance_scaling_factor 1.0 96 00 00 00 00 next_module_size 0 (last module) 100 01 03 03 00 reserved, echo/beam flags distance + RSSI, azimuth + properties 104 6e 00 e5 e5 beam 1, echo 1 distance 110 mm, RSSI 58853 108 00 00 00 00 00 00 00 00 beam 1, echoes 2 and 3 no echo 116 00 9a 39 properties, theta 0, 14746 → -18.0° 119 ... beams 2 to 600 15 bytes each 9104 5c 7d ab ce CRC32 over bytes 0 to 9103 ``` The beam azimuth converts to radians as `(theta - 16384) / 5215`. `phi` is the beam elevation above the XY plane of the scan coordinate system, and `theta` is the beam azimuth in that plane, measured from +X towards +Y. They are not the IMU orientation angles roll, pitch, and yaw, and the conversion below does not transform points into a world coordinate system. To convert a beam to a 3D point, use `phi` (elevation), `theta` (azimuth), and the distance `d`: ```txt x = d · cos(phi) · cos(theta) y = d · cos(phi) · sin(theta) z = d · sin(phi) ``` ## Type 2: IMU A flat, fixed-size payload from the integrated inertial measurement unit. It has no standard Compact header and no optional fields. IMU output is available on multiScan100 and picoScan100; sampling and available fields depend on the product. The LRS4000 provides IMU data through CoLa events or `GET /api/InertialMeasurementUnit`, not as a Compact telegram. The authoritative Compact layout is [`type_2_imu.ksy` on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_2_imu.ksy). The data is specified in the following coordinate system based on the DIN 70000 system: The x-axis lies on the 90° beam of the 0° plane. The y-axis is perpendicular to the x-axis and lies in the 0° plane. The y-values increase in the counter rotation direction (right-handed system). The z-axis is perpendicular to the y-axis and the top of the device points towards increasing z-values. Roll, pitch, and yaw are rotations about X, Y, and Z. They describe the sensor orientation, not the beam angles of the [scan data](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-1-scan-data). ![IMU coordinate system showing the x, y, and z axes and their rotation directions](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/imu-coordinate-system.png){ width="520" } *IMU axes and roll, pitch, and yaw rotation directions based on DIN 70000; these are distinct from scan-beam angles.* ## Type 3: Ambient Light The ambient-light image of the multiScan200 is sent as a separate telegram. The sensor captures it passively through the same receiver as the distance data. It follows the [standard header](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#standard-header). Distance and ambient-light data measured at the same time share the same `frame_number`. Use the authoritative [`type_3_ambient_light.ksy` definition on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_3_ambient_light.ksy) for the complete payload layout. ## Type 4: Encoder Reports an external rotary encoder attached to a moving axis (picoScan150). One encoder telegram is sent per scan frame and linked to it by `frame_number`. It follows the [standard header](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#standard-header). See [3D With 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/) for how to fuse encoder and scan data. Use the authoritative [`type_4_encoder.ksy` definition on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_4_encoder.ksy) for the complete payload layout. ## Type 6: Scan Data (multiScan200) The scan data of the multiScan200. One telegram carries one segment: a block of columns (slots), each with all layers. It follows the [standard header](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#standard-header). Convert each pixel to a 3D point with the [formula for type 1](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-1-scan-data), using the elevation angle of its layer as `phi` and the azimuth angle of its column as `theta`. Use the authoritative [`type_6_primary_data_multiscan200.ksy` definition on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_6_primary_data_multiscan200.ksy) for the complete segment header and data-block layout. For interlaced scan configurations, `number_of_interlace_steps` is greater than 1 and consecutive frames must be combined to cover the full field of view; `current_interlace_index` identifies each frame's position in that sequence. Configured data reduction can also leave zero-filled distance and RSSI values in the fixed-size Compact segment, including for angles outside the selected range. A zero value alone therefore does not mean that the beam or column is absent. ## Type 7: IMU with Standard Header The IMU data of the multiScan200. The content matches [type 2](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-2-imu), but the payload starts with the [standard header](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#standard-header) and has no `telegram_version` field of its own: Use the authoritative [`type_7_imu_standard_header.ksy` definition on GitHub](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_7_imu_standard_header.ksy) for the complete payload layout. ## Measurement Data Conventions ### Azimuth Angles The `theta` values within a segment are monotonically increasing. For a 360° sensor, a segment that crosses the +180°/−180° boundary can therefore continue beyond 180° instead of wrapping immediately to a negative value. In the example below, the blue segment runs from 160° to 189°, while the following green segment uses −170° to −141°. Preserve this ordering while parsing; normalize the angles only afterwards if your application needs the range (−180°, 180°]. ![Azimuth angles of segments crossing the 180-degree boundary](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/azimuth-angle-wrap.png){ width="360" } *Azimuth values remain monotonically increasing within a segment.* ### Segment Counters Normally, the segment counter is between `0` and `number_of_segments - 1` and increases with the azimuth. The multiScan100 has one exception: when most beams in a segment lie beyond 180°, that segment belongs to the next frame and receives counter `0`. With 30° segments, an angle-only calculation would produce counter `12`, which wraps to `0`. Use the transmitted counter rather than deriving it from `theta`. ![Segment counter at the 180-degree boundary](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/segment-counter-wrap.png){ width="480" } *The blue segment belongs mainly to the next frame and therefore receives counter 0.* ### RSSI Values Compact and MSGPACK represent RSSI as a dimensionless 16-bit unsigned integer. Treat the full range from `0` to `65535` as valid, although a device may never reach the maximum. RSSI is not standardized, so absolute values are not directly comparable between device families. Some device outputs scale an internally measured 8-bit RSSI value depending on the output format:

**RSSI Values:** format, bit depth, and conversion.

| Format | Bit depth | Conversion | | --- | --- | --- | | Compact type 1 | 16-bit | `16bit = (8bit / 255) × 65535` | | MSGPACK | 16-bit | `16bit = (8bit / 255) × 65535` | | `LMDscandata` (CoLa) | 8-bit | none; value `254` = reflector detected; this representation is compatible with TiM5/7 | For example, an internal 8-bit value of `1` becomes `257` (`0x0101`) in 16-bit output. The low byte equals the high byte (for example `0xe6e6`), which is expected. ### Bit Fields and Beam Properties `data_content_echos`, `data_content_beams`, and each beam's `properties` value are bit fields. Test bit `i` with `(value & (1 << i)) != 0`; do not interpret the complete decimal value as a single state. In `properties`, bit 0 means that a reflector was detected for at least one echo of the beam. This can be treated as applying to the last echo because a reflector echo is not physically followed by another echo on the same beam. Bits 1 through 7 are reserved and must be ignored. ### Segments (LRS4000) LRS4000 sends one Compact scan telegram per frame. The `DataOutputRange` setting replaces measurements outside the selected angles with zeros; it does not reduce the telegram size. ### Segments (picoScan100) The picoScan100 scans a range of 276°. One 276° rotation of the scan layer is one scan (frame). For output, each scan is split into segments of a fixed angular size:

**Segments (picoScan100):** scanning frequency, segment size, and segments at 276°.

| Scanning frequency | Segment size | Segments at 276° | | --- | --- | --- | | ≤ 25 Hz | 30° | 10 | | ≥ 30 Hz | 60° | 5 | ![picoScan100 scan segments](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/data-format-picoscan-scan-segments.png) *Example of 30° scan segments within the 276° scan range.* Segment boundaries do not move when you reduce the scan range. Measured values in hidden angle ranges are filled with zeros, and a segment that is completely hidden is not sent. Example: 180° (−90° to +90°) at 40 Hz gives 4 segments. ### Segments (multiScan100) The multiScan100 captures a 360° frame across its scan layers and divides the output into time-based segments. Each segment contains data from all scan layers, but the azimuth ranges of those layers do not necessarily line up spatially. Raw output keeps the original layer timing. Rectified output aligns the layer start angles as closely as possible and adds at least one segment interval of latency. See the [multiScan100 overview](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/) for device-specific output context. ![multiScan100 scan segments](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/data-format-multiscan-scan-segments.png) *A 360° frame split into twelve 30° segments, each with its own time stamp.* Each segment covers a different time within the rotation, so `t0` to `t11` increase in the scan direction. Use the per-segment time stamps rather than the frame time when you fuse the data with motion or another sensor. ## Sample Packet Captures Open these one-second `.pcap.gz` recordings directly in Wireshark with the [Compact dissector](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#wireshark-dissector). All recordings contain only measurement traffic, with original packet bytes and timestamps. In every sample, `192.168.0.1` is the sensor and `192.168.0.100` is the receiver; your PC does not need matching addresses for offline inspection. The tables describe recorded settings, not required defaults. Enable IPv4 reassembly for UDP and TCP stream reassembly for TCP. UDP scan frames can be partial at the recording boundaries; group segments by `frame_number`. For TCP, use **Follow TCP Stream**: a telegram spans multiple packets. Reference pictures show scene context, not synchronized PCAP frames.

Compact sample availability and transport by device family.

| Device family | Sample | Compact transport | | --- | --- | --- | | LRS4000 | [LRS4000 scan capture (gzip PCAP, 605 KB)](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/lrs4000-compact-scan-tcp.pcap.gz) | TCP | | multiScan100 | [multiScan165 scan and IMU capture (gzip PCAP, 1.16 MB)](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/multiscan165-compact-scan-imu-udp.pcap.gz) | UDP unicast | | multiScan200 | [multiScan270 scan, ambient-light, and IMU capture (gzip PCAP, 13.4 MB)](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/multiscan270-compact-scan-ambient-imu-tcp.pcap.gz) | TCP | | picoScan100 | [picoScan150 scan, IMU, and encoder capture (gzip PCAP, 327 KB)](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/picoscan150-compact-scan-imu-encoder-udp.pcap.gz) | UDP unicast | ### LRS4000 Capture Settings ![LRS4000 planar scan showing blue and green measurement points on a distance grid with coordinate axes](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/lrs4000-compact-sample-reference.png) *LRS4000 reference view: planar scan points on a grid, with distance in meters.*

LRS4000 settings and recorded TCP scan data.

| Setting | Value in this recording | | --- | --- | | Device and firmware | LRS4581R-230001, firmware `1.10.0.0R` | | Scan connection | Sensor TCP port `2115` → receiver port `49455`; Compact (`ScanDataFormat = 2`) | | Scan telegrams | 13 complete type 1 telegrams, version 4; no partial telegrams |
More recorded settings

Additional recorded settings.

| Setting | Value in this recording | | --- | --- | | Duration | 0.994874 s | | Scan configuration | 12.5 Hz, 0.04°; −180° to +180° | | Scan geometry | One module, one layer, 9,000 beams, three echoes per frame | | Filters | All echoes; particle, mean, median, and radial-distance filters disabled | | Distance scale | `ScanDataScaleFactor = 2` |
Wireshark filter: `ip.addr == 192.168.0.1 && tcp.port == 2115`. ### multiScan165 Capture Settings ![multiScan165 scan showing blue and green measurement points on a perspective grid with coordinate axes](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/multiscan165-compact-sample-reference.png) *multiScan165 reference view: scan points on a perspective grid, colored by echo.*

multiScan165 settings and recorded UDP scan and IMU data.

| Setting | Value in this recording | | --- | --- | | Device and firmware | multiScan165, firmware `2.5.0.0R` | | Scan connection | Sensor UDP port `39493` → receiver port `2115`; Compact (`ScanDataFormat = 2`) | | Scan telegrams | 242 type 1 telegrams, version 4; 20 complete 12-segment frames and one partial frame | | IMU connection and telegrams | Sensor UDP port `58362` → receiver port `7503`; 101 type 2 telegrams |
More recorded settings

Additional recorded settings.

| Setting | Value in this recording | | --- | --- | | Duration | 0.998802 s | | Scan configuration | 20 Hz, 0.5° angular resolution; configured azimuth range −180° to +180° | | Recorded scan geometry | Two modules of eight layers each; 60 beams per layer per segment; three echoes; 12 segments per complete frame | | Echo filter | All echoes (`FREchoFilter = 1`) | | Angle, layer, radial-distance, and interval filters | Disabled; all 16 layers selected |
Wireshark filter: `ip.src == 192.168.0.1 && (udp.dstport == 2115 || udp.dstport == 7503)`. ### multiScan270 Capture Settings ![multiScan270 SOPASair view showing a 3D point cloud above a grayscale ambient-light image of the outdoor scene](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/multiscan270-compact-sample-reference.png) *multiScan270 reference view: SOPASair point cloud above the ambient-light image.*

multiScan270 settings and recorded TCP scan, ambient-light, and IMU data.

| Setting | Value in this recording | | --- | --- | | Device and firmware | multiScan270, firmware `1.1.0.0R` | | Output mode | TCP Compact (`dataOutputMode = 1`) | | Scan connection | Sensor `192.168.0.1:2115` to receiver port `59003`; 19 complete type 6 telegrams, version 1 | | Ambient-light connection | Sensor `192.168.0.1:2116` to receiver port `59004`; 19 complete type 3 telegrams, version 1; 592 × 192 pixels | | IMU connection | Sensor `192.168.0.1:2117` to receiver port `59005`; 97 complete type 7 telegrams, version 1 |
More recorded settings

Additional recorded settings.

| Setting | Value in this recording | | --- | --- | | Duration | 0.991826 s | | Scan content | Distance, RSSI, echo properties, and ambient light | | Scan geometry | One segment per frame; 592 columns, 192 layers, three echoes; 192 ambient-light layers included | | Performance profile | `12`: 20 Hz frame rate; four interlace steps per full scan (5 Hz full-scan rate) | | Configured angular range and resolution | Azimuth −138° to +138°, 0.4662° per frame; elevation −22.5° to +22.5°, 0.2344° | | Ambient-light vertical setting | Matching (`ambientPixelCountVertical = 1`), not full vertical pixel count | | Echo and particle filters | All echoes (`FREchoFilter = 1`); particle filter enabled, minimum one neighbor, `distanceThreshold = 500` | | Other filters | Interval, angle-range/focus, and blooming filters disabled | | Recording boundary | Scan and ambient-light streams each end partway through one additional telegram; these tails are not counted as complete telegrams |
Wireshark filter: `ip.addr == 192.168.0.1 && (tcp.port == 2115 || tcp.port == 2116 || tcp.port == 2117)`. Combine the four interlace indices before treating the scan as full coverage. ### picoScan150 Capture Settings Encoder positions use fixed-velocity mode, not physical encoder measurements. ![picoScan150 planar scan showing orange measurement points on an XY grid with distance in meters](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/picoscan150-compact-sample-reference.png) *picoScan150 reference view: planar scan points on an XY grid, with distance in meters.*

picoScan150 settings and recorded UDP scan, IMU, and encoder data.

| Setting | Value in this recording | | --- | --- | | Device and firmware | picoScan150, firmware `2.3.3.0R` | | Scan connection | Sensor UDP port `52593` → receiver port `2115`; Compact (`ScanDataFormat = 2`) | | Scan telegrams | 150 type 1 telegrams, version 4; 29 complete five-segment frames and two partial frames | | IMU connection and telegrams | Sensor UDP port `46180` → receiver port `7503`; 99 type 2 telegrams | | Encoder connection and telegrams | Sensor UDP port `41656` → receiver port `7504`; 30 type 4 telegrams, version 1 |
More recorded settings

Additional recorded settings.

| Setting | Value in this recording | | --- | --- | | Duration | 0.999805 s | | Performance profile | `6`: 30 Hz, 0.1°; −138° to +138° | | Echo filter | All echoes (`FREchoFilter = 1`); three echoes per beam | | Angle, distance, interval, and averaging filters | Disabled | | Encoder settings | Fixed velocity (`EncSetting = 4`); reported speed `1000`; `EncResolution = 1` |
Wireshark filter: `ip.src == 192.168.0.1 && (udp.dstport == 2115 || udp.dstport == 7503 || udp.dstport == 7504)`. ## Bandwidth Calculator Estimate Compact scan frame sizes, segment counts, and network traffic for supported devices and scan settings. The optional IMU and encoder estimates model IMU output at 100 Hz independently of the scan rate and encoder output once per scan frame.

Device and Compact Output

Estimated Result

Loading the calculator…

Remarks: * The calculator provides an estimate of bandwidth requirements. It considers scan data and selected IMU or encoder telegrams, but not additional configuration traffic. * Ensure that your network infrastructure can handle the estimated bandwidth to avoid data loss or latency issues. --- # LiDAR Filters: Echo, Fog, Particle, and Moving Average > How SICK LiDAR on-sensor filters change measurement data, including echo, particle, ground, averaging, layer, field-of-view, and distance filters. Source: https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/ # Filter Details Filters run on the sensor and change the measurement data before it is sent. Use them to reduce bandwidth, remove unwanted points, and keep the data your application needs. The available filters and their settings differ between devices; each section lists the devices it applies to.

**Filter Details:** filter, effect, side effect, and devices.

| Filter | Effect | Side effect | Devices | | --- | --- | --- | --- | | [Interval](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#interval-filter) | Sends only every n-th scan | Lower output rate | multiScan100, multiScan200, picoScan150 | | [Fog](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#fog-filter) | Removes fog echoes at close range | - | multiScan100, picoScan150 | | [Echo](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#echo-filter) | Selects which echoes are sent | - | LRS4000, multiScan100, multiScan200, picoScan150 | | [Particle](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#particle-filter) | Removes dust, rain, and snow hits | Device-specific settings and latency | LRS4000, multiScan100, multiScan200, picoScan100 | | [Moving average](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#moving-average-filter) | Averages distances over several scans | Delayed output | multiScan100, multiScan200, picoScan150 | | [Blooming](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#blooming-filter) | Removes blooming artifacts next to highly reflective objects | - | multiScan200 | | [Angle range](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#angle-range-filter) | Limits horizontal output; multiScan200 also supports vertical ROI | Partly masked Compact segments retain their size | multiScan100, multiScan200, picoScan150 | | [Layer](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#layer-filter) | Removes complete scan layers from the output | Reduced vertical coverage | multiScan100 | | [Vertical FoV](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#vertical-fov-filter) | Keeps nested vertical regions at different resolutions | Raw stream only | multiScan200 | | [Angle range focus](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#angle-range-focus-filter) | Keeps a 3D angle range with an optional full-resolution region | Raw stream only | multiScan200 | | [Rectangular](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#rectangular-filter) | Keeps points inside an X/Y rectangle | Other points set to 0; data size unchanged | multiScan100, picoScan150 | | [Distance](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#distance-filter) | Keeps points inside a radial range | Other points set to 0; data size unchanged | LRS4000, multiScan100, picoScan150 | | [Ground](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#ground-filter) | Filters ground returns with configurable thresholds | Variant and configuration dependent | multiScan100 | | [Sensitivity mode](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#sensitivity-mode) | Trades receiver sensitivity against robustness | Higher sensitivity adds noise in ambient light | LRS4000, multiScan200, picoScan150 | | Mean and median | Median removes outliers; mean averages over several scans. Settings `LFPmedianfilter` and `MeanFilter` in the [OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) | Delayed output | LRS4000 | Active filters run one after another, each on the result of the previous one, in this order:

**Filter Details:** device and filter processing order.

| Device | Processing order | | --- | --- | | LRS4000 | Particle → echo → median → mean | | multiScan100 | Fog → echo → particle → moving average → data reduction | | multiScan200 | Echo → particle → interval → blooming → angle range ([details](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/graphical-user-interface/#filter)) | | picoScan100 | Fog → echo → particle → moving average → data reduction and region of interest | Each active filter adds processing time and therefore output latency. For exact parameter names and value ranges, see the product's OpenAPI reference: [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/). ## Interval Filter Compatible with: multiScan100 multiScan200 picoScan100 The interval filter reduces the scan output rate by a configurable reduction factor from 2 to 50. For example, a factor of three outputs only every third scan, reducing the output rate to one third. On picoScan100, this REST setting is exposed by the picoScan150 OpenAPI. ## Fog Filter Compatible with: multiScan100 picoScan100 The fog filter removes unwanted echoes at close range (approximately 3 m). This reduces false activations in fog. On picoScan100, this REST setting is exposed by the picoScan150 OpenAPI. The multiScan200 has no configurable fog filter. ## Echo Filter Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The echo filter suppresses measurement data caused by edge hits, rain, dust, snow, and other ambient conditions. Pulses attributed to undesirable ambient conditions are not output. The selectable echoes differ by device:

**Echo Filter:** device and selectable echoes.

| Device | Selectable echoes | | --- | --- | | picoScan150 | First echo, last echo, or all echoes | | multiScan200 | First echo, last echo, strongest echo, all echoes, or all echoes with the strongest first | | LRS4000, multiScan100 | Read the selectable echo options for the installed firmware in the device's OpenAPI description. | On the multiScan200, field evaluation always uses a single echo. If all echoes are selected, field evaluation uses the first echo. Echo filter example *Example of retaining or suppressing an echo caused by ambient conditions.* *picoScan100 example: Use multi-echo to suppress a glass-pane return and retain measurements of objects behind it.* ## Particle Filter Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The particle filter suppresses small, irrelevant reflection pulses caused by dust, raindrops, snowflakes, and similar particles. The filter settings differ by device.

**Particle Filter:** device and settings.

| Device | Settings | | --- | --- | | LRS4000 | On/off and a distance-step threshold from 500 to 5000 mm | | multiScan100 | On/off and a distance-step threshold from 20 to 5000 mm | | multiScan200 | On/off, a distance threshold from 20 to 2000 mm, and the minimum number of neighbors from 0 to 8 | | picoScan100 | On/off and a distance-step threshold from 20 to 5000 mm | For LRS4000, multiScan100, and picoScan100, the threshold is the required distance step between the echo to be filtered and the echoes of surrounding beam angles. On multiScan200, a point needs at least the configured number of neighboring measurements within the distance threshold. In interlaced multiScan200 scan configurations (10 to 12), the filter compares measurements from different angular positions, so its effect can change. In the Compact format (telegram type 6), bit 6 of the multiScan200 echo properties marks points detected as particles. ## Moving Average Filter Compatible with: multiScan100 multiScan200 picoScan100 On picoScan150, the moving average filter smooths distance values by calculating the arithmetic mean over several scans of the same point. Configure an averaging depth of two to four scans. The first value is output only after the configured number of scans; invalid distance values (`0`) are excluded from the average. Example of a four-scan moving average for representative angular positions (distance values in mm):

**Moving Average Filter:** scan/output, angle 3, angle 4, angle 5, angle 6, angle 7, and angle 8.

| Scan/output | Angle 3 | Angle 4 | Angle 5 | Angle 6 | Angle 7 | Angle 8 | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | Scan 1 | 1100 | 1100 | 1150 | 1150 | 1380 | 1380 | | Scan 2 | 1200 | 1200 | 1190 | 950 | 1500 | 1500 | | Scan 3 | 1150 | 1450 | 1200 | 1200 | 1450 | 1450 | | Scan 4 | 1170 | 1170 | 1220 | 1220 | 1470 | 1150 | | 1. Output (scans 1–4) | 1155 | 1230 | 1190 | 1130 | 1450 | 1370 | | Scan 5 | 0 | 1110 | 1150 | 1150 | 1380 | 1380 | | 2. Output (scans 2–5) | 1173 | 1233 | 1190 | 1130 | 1450 | 1370 | | Scan 6 | 1200 | 1210 | 1190 | 0 | 1500 | 1500 | | 3. Output (scans 3–6) | 1173 | 1235 | 1190 | 1190 | 1450 | 1370 | | Scan 7 | 1150 | 0 | 1200 | 1200 | 1450 | 1450 | | 4. Output (scans 4–7) | 1173 | 1163 | 1190 | 1190 | 1450 | 1370 | Individual outliers still influence the average. Invalid distance values (`0`) are excluded, so fewer scans contribute at those positions (for example angle 3 in the 2nd output: (1200 + 1150 + 1170) / 3 = 1173). On multiScan200, the moving average filter is called high precision mode and can only be switched on or off. It averages the distance of each point over several scans, which reduces distance noise while the output rate stays the same. The output is delayed by about 0.5 s. If the distance of an object changes significantly, averaging stops for that object. Use it for static scenes only. It has no effect in interlaced scan configurations (10 to 12). On multiScan100, the REST API exposes `LFPmovingAveragingFilter`. Check the OpenAPI description for the available averaging depth and limits for the installed firmware. ## Blooming Filter Compatible with: multiScan200 Highly reflective objects such as retroreflectors can create false points next to the object (blooming). The blooming filter removes them. Select the strength low, medium (default), or strong. In the Compact format (telegram type 6), bit 2 of the echo properties marks points detected as blooming. ## Angle Range Filter Compatible with: multiScan100 multiScan200 picoScan100 The available angle range controls depend on the device. multiScan100 and picoScan150 use horizontal start/stop angles; multiScan100 uses the layer filter for vertical coverage. multiScan200 also supports vertical regions and focus settings. A beam increment subsamples the selected data.

**Angle Range Filter:** comparison criterion, multiScan100, multiScan200, and picoScan150.

| | multiScan100 | multiScan200 | picoScan150 | | --- | --- | --- | --- | | Horizontal range | −180° to +180° | −180° to +180° | −138° to +138° | | Vertical range | Use the layer filter | −90° to +90° | Not applicable (2D) | | Beam increment | 1 to 20 | 1 to 50, separately for horizontal and vertical | 1 to 20 | Complete Compact segments outside the horizontal range are not transmitted. Partly selected segments can retain zero-filled measurements and their full byte size. The exact savings from subsampling, vertical ROI, and focus depend on the serialized layout; verify them in a capture. The ambient-light image is limited by the configured data-reduction settings too. ## Layer Filter Compatible with: multiScan100 The multiScan100 layer filter removes complete scan layers from the output data. Configure one Boolean value per layer through `LFPlayerFilter`; only enabled layers are serialized. This reduces the data volume when an application needs only part of the sensor's vertical coverage. The filter changes the output, not the physical scan performed by the sensor. ## Vertical FoV Filter Compatible with: multiScan200 The multiScan200 CoLa command `verticalAngleRangeFilter` restricts raw streaming data to an outer vertical region of interest (ROI). An optional inner ROI must lie completely inside the outer ROI. Each region has its own layer increment from 1 to 50, so the inner region can retain more vertical detail while the surrounding region is subsampled more strongly. Layers outside the outer ROI are not transmitted. The filter also limits ambient-light data. In **Full** mode, the remaining ambient-light region keeps its full vertical resolution. In **Matching** mode, its vertical resolution matches the primary measurement data, with one ambient-light pixel per beam. ## Angle Range Focus Filter Compatible with: multiScan200 The multiScan200 `angleRangeFocusFilter` restricts raw streaming data to a 3D field of view defined by horizontal (`theta`) and vertical (`phi`) limits. Beams outside this range are not transmitted. Separate horizontal and vertical increments from 1 to 50 can subsample the remaining data. An optional focus region preserves full resolution inside a smaller horizontal or vertical region while the surrounding data remains subsampled. This filter affects raw data streaming only and does not affect field evaluation. ## Rectangular Filter Compatible with: multiScan100 picoScan100 After the measurement filters, data-reduction settings and the region of interest filter limit the points passed on for further processing. On picoScan100, this REST setting is exposed by the picoScan150 OpenAPI. When the rectangular filter is active, only scan parts within the rectangle are retained. The filter does not reduce the data; points outside the rectangle are set to zero. Adjust the rectangle by setting the minimum and maximum X and Y values in millimeters. ## Distance Filter Compatible with: LRS4000 multiScan100 picoScan100 The distance filter limits the measured radial distance and therefore affects a circular area around the product. It does not reduce the data; points outside the selected radial range are set to zero. To keep a circular area, set the maximum range to the required radius in millimeters. To keep a ring, set the maximum range to the required radius and the minimum range to a value greater than 0 mm. On picoScan100, this REST setting is exposed by the picoScan150 OpenAPI. ## Ground Filter Compatible with: multiScan100 The multiScan100 REST API exposes `groundFilterEnable`, `groundFilterThresholds`, and `groundFilterType`. The filter can reduce false field-evaluation triggers caused by the ground while retaining detection of small objects when configured correctly. The ground filter is not applied to the raw measurement-data streaming path. Availability can depend on the variant and software package. See [multiScan100 release notes](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/release-notes/) and the [multiScan100 OpenAPI reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/). ## Sensitivity Mode Compatible with: LRS4000 multiScan200 picoScan100 The REST variable `SensitivityMode` sets the sensitivity of the receiver. A higher sensitivity increases the scanning range but also measurement noise, especially in ambient light. The LRS4000 offers `0` NORMAL, `1` INCREASED, and `2` HIGHEST. The multiScan200 and picoScan150 offer `0` MAXIMUM_ROBUSTNESS, `1` STANDARD (recommended), and `2` MAXIMUM_DETECTIVITY. For the ambient-light limits, see the [LRS4000 release notes](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/release-notes/). --- # LMDscandata: CoLa Scan Data Telegram over TCP > LMDscandata is the CoLa measurement telegram for SICK LiDAR sensors over TCP. Learn when to use it instead of Compact or MSGPACK. Source: https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/ # LMDscandata Format Compatible with: LRS4000 picoScan100 `LMDscandata` is a scan data telegram of SICK's [CoLa interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/). LRS4000 and picoScan100 expose it as a selectable scan data format. On picoScan100 it is sent over a TCP connection that the client opens to the sensor, so delivery is ordered and error-checked. Use it for PLCs and integrations that already use CoLa. For new high-rate integrations, use [Compact](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) or [MSGPACK](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/) over the transport supported by the device. ## Receive LMDscandata 1. Select **LMDscandata** as the measurement data output format (`sWN ScanDataFormat`, or in SOPASair under **Application > Data output**). 2. Open a TCP connection to the sensor: port `2111` for CoLa A or `2112` for CoLa B. 3. Request data:

**Receive LMDscandata:** telegram and result.

| Telegram | Result | | --- | --- | | `sRN LMDscandata` | Returns one scan (polling) | | `sEN LMDscandata 1` | Starts continuous output: one telegram per scan | | `sEN LMDscandata 0` | Stops continuous output | No data is sent during boot-up or in some error states (for example Device Not Ready). A login session does not block the output. RSSI in LMDscandata is 8-bit; the value `254` marks a detected reflector. If the output format is not set to LMDscandata, `sRN LMDscandata` still returns an `sRA LMDscandata` telegram, but every field is `0`. There is no error code, so check the output format first when you only receive zeros. *picoScan100 example: Enable LMDscandata output over CoLa A and TCP, following the receive-and-subscribe steps above.* ## Angle Reference LMDscandata uses the CoLa angle convention: `90°` points straight ahead along the sensor X axis. Compact, MSGPACK, and the REST API use `0°` for straight ahead. The same full scan of the picoScan100 therefore starts at `-48°` in LMDscandata and at `-138°` in Compact. Subtract `90°` from an LMDscandata angle to compare it with Compact or MSGPACK data. The start angle and the angular step in the telegram are given in 1/10000°. ## Configure and Parse - Configure the picoScan100 telegram content, such as the echoes and RSSI, with [`sWN LMDscandatacfg`](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#configure-the-data-content-for-the-scan-swn-lmdscandatacfg). Smaller telegrams reduce PLC load. - The picoScan100 field layout is in the [picoScan100 CoLa Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#poll-one-telegram-srn-lmdscandata). - For TCP stream parsing (partial and concatenated telegrams), follow [PLC Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/plc-integration/#polling-and-cola-b-framing). *picoScan100 example: Read an LMDscandata telegram and understand its fields before implementing a parser.* --- # MSGPACK Data Format for SICK LiDAR Scan Data > Decode SICK MSGPACK scan data: framing, CRC32, uint8 keyword codes, ScanSegment and Scan structures, and binary array encoding. Source: https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/ # MSGPACK Format Compatible with: multiScan100 picoScan100 MSGPACK encodes the measurement data with the [MessagePack](https://msgpack.org/) standard. Unlike [Compact](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/), it is self-describing: every field has a keyword, so any standard MessagePack library can parse it without knowing the exact layout. The price is more bandwidth than Compact. Like Compact, each data package carries one scan segment. Each segment can be processed on its own for low latency; collect all segments with the same `FrameNumber` to get a complete scan. See [multiScan100 segments](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#segments-multiscan100) and [picoScan100 segments](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#segments-picoscan100) for device-specific behavior. SICK's Python [ScanSegmentAPI](https://github.com/SICKAG/ScanSegmentAPI) (`scansegmentapi/msgpack.py`) is the reference implementation of this format. ## Framing Each MSGPACK buffer is wrapped in a frame. Size and checksum are little-endian `uint32` values.

**Framing:** offset, size, and content.

| Offset | Size | Content | | --- | --- | --- | | 0 | 4 bytes | `02 02 02 02` (4 × ``) | | 4 | 4 bytes | Size n of the MSGPACK buffer in bytes (without the checksum) | | 8 | n bytes | MSGPACK buffer | | 8 + n | 4 bytes | CRC32 over the MSGPACK buffer only, without the STX bytes and the size | ## MSGPACK Keywords To save bandwidth, keywords are encoded as `uint8` codes instead of strings. Map the codes back to names with the table below. After removing the framing, parse the buffer with a standard MessagePack parser. Some parsers must be told to accept integer map keys; in Python: ```python unpacked = msgpack.unpackb(msgpack_buffer, strict_map_key=False) ``` ### Used MSGPACK Keywords and Associated uint8 Codes Names follow the SICK reference implementation. Some examples use different capitalization, such as `TimeStampStart` or `PropertyValues`; on the wire only the code is sent.

**Used MSGPACK Keywords and Associated uint8 Codes:** keyword name, code, and description.

| Keyword name | Code | Description | | --- | --- | --- | | `class` | `0x10` | Class name of the map: `Scan` or `ScanSegment` ([ScanSegment](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-the-scansegment-class), [Scan](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-the-scan-class)) | | `data` | `0x11` | Data part of a ScanSegment, Scan, or array ([arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)) | | `numOfElems` | `0x12` | Number of elements in an array | | `elemSz` | `0x13` | Size of one array element in bytes | | `endian` | `0x14` | Endianness of the array elements | | `elemTypes` | `0x15` | Type of the array elements | | `little` | `0x30` | Value: little-endian | | `float32` | `0x31` | Value: data type float32 | | `uint32` | `0x32` | Value: data type uint32 | | `uint8` | `0x33` | Value: data type uint8 | | `uint16` | `0x34` | Value: data type uint16 | | `int16` | `0x35` | Value: data type int16 | | `ChannelTheta` | `0x50` | Channel with azimuth angles | | `ChannelPhi` | `0x51` | Channel with elevation angles | | `DistValues` | `0x52` | Channel with distance values | | `RssiValues` | `0x53` | Channel with RSSI values | | `PropertiesValues` | `0x54` | Channel with beam properties, for example reflector | | `Scan` | `0x70` | Class name `Scan` | | `TimestampStart` | `0x71` | Time stamp of the first beam of a scan | | `TimestampStop` | `0x72` | Time stamp of the last beam of a scan | | `ThetaStart` | `0x73` | Azimuth angle of the first beam of a scan | | `ThetaStop` | `0x74` | Azimuth angle of the last beam of a scan | | `ScanNumber` | `0x75` | Scan number | | `ModuleID` | `0x76` | ID of the measuring module | | `BeamCount` | `0x77` | Number of beams in a scan | | `EchoCount` | `0x78` | Number of echoes in a scan | | `ScanSegment` | `0x90` | Class name `ScanSegment` | | `SegmentCounter` | `0x91` | Segment number | | `FrameNumber` | `0x92` | Frame number | | `Availability` | `0x93` | Availability of a segment | | `SenderId` | `0x94` | Sender ID (device serial number) | | `SegmentSize` | `0x95` | Segment size | | `SegmentData` | `0x96` | Array with the measurement data per layer | | `LayerId` | `0xA0` | Array with layer IDs | | `TelegramCounter` | `0xB0` | Telegram counter | | `TimestampTransmit` | `0xB1` | Transmit time stamp | ## Serialization of a Segment Each data package carries one ScanSegment. Its `SegmentData` array holds one [Scan](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-the-scan-class) per layer of the sensor: ```text ScanSegment ├── TelegramCounter ├── TimestampTransmit ├── SegmentCounter ├── FrameNumber ├── Availability ├── SenderId ├── LayerId └── SegmentData ├── Scan 1 ├── Scan 2 ├── ... └── Scan N ``` Metadata fields are plain MessagePack values. Measurement arrays (distances, RSSI, angles, properties) are an exception: they are stored as binary blobs, see [Serialization Of Arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays). ### Notation Used The following notes on the notation used relate to the description of the structures encoded in MSGPACK: - `msgpack_map_header` denotes the header of a MessagePack map, see the [MessagePack specification](https://github.com/msgpack/msgpack/blob/master/spec.md#map-format-family). - Names correspond to the [keyword table](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#used-msgpack-keywords-and-associated-uint8-codes); on the wire, each name is its `uint8` code. - Angle brackets mark placeholders, for example `` for the number of array elements. - The structures are written in a JSON-like notation, but the data is encoded according to the [MessagePack specification](https://github.com/msgpack/msgpack/blob/master/spec.md). ### Serialization of the ScanSegment Class The ScanSegment class is represented as a nesting of MSGPACK maps as follows: ```msgpack-schema msgpack_map_header { "class": ScanSegment, "data": msgpack_map_header { "TelegramCounter": , "TimestampTransmit": , "SegmentCounter": , "FrameNumber": , "Availability": , "SenderId": , "LayerId": , "SegmentData": } } ``` The meaning of the individual fields is shown in the following table.

**Serialization of the ScanSegment Class:** name, type, and description.

| Name | Type | Description | | ------ | ------ | ------------- | | TelegramCounter | MSGPACK int | Counts all telegrams with measurement data sent in MSGPACK format since switching on the device. The counter starts at 1. | | TimestampTransmit | MSGPACK int | Sensor system time in µs since 1.1.1970 00:00 in UTC. | | SegmentCounter | MSGPACK int | Index of the segment within the frame. | | FrameNumber | MSGPACK int | Counts the number of full revolutions since the device was started. | | Availability | MSGPACK int | Reserved | | SenderId | MSGPACK int | Device serial number. It can be used to detect on the recipient which sensor the data was sent from. | | LayerId | MSGPACK array of int | Array of layer indices. The layer indices start at 1 and increase with decreasing elevation angle. | | SegmentData | MSGPACK array of scans | Array of elements of the Scan class (see [Serialization Of The Scan Class](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-the-scan-class)) that contain the actual measurement data. The following applies: The scan at position i has the layer number LayerId[i]. | The arrays LayerId and SegmentData are MSGPACK arrays as per the MSGPACK specification and are not represented like arrays containing measurement data (see "[Serialization of arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)"). ### Serialization of the Scan Class The Scan class is represented as a nesting of MSGPACK maps as follows: ```msgpack-schema msgpack_map_header { "class": Scan, "data": msgpack_map_header { "TimestampStart": , "TimestampStop": , "ThetaStart": , "ThetaStop": , "ScanNumber": , "ModuleID": , "ChannelTheta": , "ChannelPhi": , "DistValues": , "RssiValues": , "PropertiesValues": , "BeamCount": , "EchoCount": } } ``` The meaning of the individual fields is shown in the following table:

**Serialization of the Scan Class:** name, type, and description.

| Name | Type | Description | | ------ | ------ | ------------- | | TimestampStart | MSGPACK int | Acquisition time of the first beam of the scan in µs. The device's internal time base is used or, if the sensor offers the feature, the time set externally. | | TimestampStop | MSGPACK int | Acquisition time of the last beam of the scan in µs. The device's internal time base is used or, if the sensor offers the feature, the time set externally. | | ThetaStart | MSGPACK int | Azimuth angle of the first beam of the scan in radians. | | ThetaStop | MSGPACK int | Azimuth angle of the last beam of the scan in radians. | | ScanNumber | MSGPACK int | Not used. | | ModuleID | MSGPACK int | Number of the physical module that generated the data. In the case of the multiScan100, for example, this is one of the two measuring modules. | | ChannelTheta | array of float32 | Array of azimuth angles of a specific beam in radians. The encoding of the data in this array is described in "[Serialization of arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)". The user can configure whether the array is present in the data structure. | | ChannelPhi | array of float32 | Array with the elevation angle of the scan in radians. Each Scan covers one layer, so this array contains one element. The encoding of the data in this array is described in "[Serialization of arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)". The user can configure whether the array is present in the data structure. | | DistValues | array of (array of float32) | Array containing an array of distance values for each echo of the scan. The number of sub-arrays corresponds to the number of echoes in the scan, see also the EchoCount field below. The distance values are specified in mm. The encoding of the data in this array is described in "[Serialization of arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)". The user can configure whether the array is present in the data structure. | | RssiValues | array of (array of uint16) | Array containing an array of RSSI values for each echo of the scan. The number of sub-arrays corresponds to the number of echoes in the scan, see also the EchoCount field below. For the representation of RSSI values, see [RSSI scaling](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-1-scan-data). The encoding of the data in this array is described in "[Serialization of arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)". The user can configure whether the array is present in the data structure. | | PropertiesValues | array of uint8 | Array with additional properties, for example "reflector", for each beam of a scan. The encoding of the data in this array is described in "[Serialization of arrays](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#serialization-of-arrays)". This array is optional. | | BeamCount | MSGPACK int | Number of beams in the current scan. | | EchoCount | MSGPACK int | Number of echoes in the current scan. | For more details about the MSGPACK int format family, see the [official msgpack specification](https://github.com/msgpack/msgpack/blob/master/spec.md#int-format-family). ![DistValues and RssiValues array structure](https://sickag.github.io/sick_lidar_developer_guide/assets/data-streaming/distvalues-rssivalues-structure.png) *DistValues and RssiValues array structure.* The diagram illustrates the nested array structure with 3 echoes and 15 beams, showing how each beam contains values for all echoes in both DistValues and RssiValues arrays. ### Serialization of Arrays Arrays of measurement data (ChannelTheta, ChannelPhi, DistValues, RssiValues, and PropertiesValues) are encoded as follows: ```msgpack-schema msgpack_map_header { "numOfElems": , "elemSz": , "endian": little, "elemTypes": , "data": } ``` The meaning of the individual fields of the Array class are shown in the following table.

**Serialization of Arrays:** name and description.

| Name | Description | | ------ | ------------- | | numOfElems | Number of array elements | | elemSz | Size of an array element in bytes, e.g., 4 for float32 or 1 for uint8. | | endian | The value is always little | | elemTypes | Array of element types. Only arrays with one element are supported here. Example: {float32} for an array of float32 values. An array of tuples would need multiple element types; such arrays are not used. | | data | Actual payload. The data is encoded as a byte array in the MSGPACK format and can be copied directly into a structure/array after parsing the MSGPACK structure, taking into account the endianness and the data type. | --- # WebSocket Event API for multiScan200 and picoScan100 > Subscribe to multiScan200 and picoScan100 change events over ws:///apievents: permessage-deflate, register messages, throttling, queues, and event list. Source: https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/ # WebSocket Events Compatible with: multiScan200 picoScan100 Instead of polling the REST API for state, you can open one persistent WebSocket connection, register the events you care about, and the device pushes a JSON frame every time a value changes. Use it for low-latency notifications: field-evaluation results, I/O switching, temperature alarms, firmware-update progress. ## Endpoint and Connection ```txt ws:///apievents ``` Port 80 is used, and no authentication is required to open the connection. No periodic ping/keep-alive is needed. Every event has a matching REST endpoint of the same name; the `data` payload is identical to `GET /api/`. Use REST for one-shot reads/writes, WebSocket for change notifications. See the [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) REST API references for the corresponding endpoint definitions. An event is available only where the device has the matching endpoint. Compression depends on the device firmware. multiScan200 (firmware >1.1.0) and picoScan150 (firmware >2.3.3), the handshake does not negotiate `permessage-deflate`, and event registrations works with compression both enabled and disabled. ## Message Format All messages are JSON text frames. Five types are used. Register (client → device): one message per event, where `clientId` is a caller-chosen integer echoed back for that registration. ```json { "type": "register", "event": "temperatureAlarmStatus", "clientId": 1 } ``` Registration confirmation (device → client): on success (`status: 0`) the device immediately sends the current value. Dispatch it exactly like a live event; it is your first data point. ```json { "type": "register", "event": "temperatureAlarmStatus", "clientId": 1, "status": 0, "data": { "AlarmState": "NoAlarm" } } ``` Event push (device → client): sent whenever the value changes. ```json { "type": "event", "event": "temperatureAlarmStatus", "clientId": 1, "status": 0, "data": { "AlarmState": "OverTemp" } } ``` Error (device → client): sent for an unknown or unavailable event. The connection stays open and other registrations are unaffected. ```json { "type": "register", "event": "nonExistentEvent", "clientId": 2, "status": 1, "error": "Failed to register event ... Does the event exist?" } ``` Deregister (client → device): no response is sent. ```json { "type": "deregister", "event": "temperatureAlarmStatus", "clientId": 1 } ``` ## Step by Step Send registration messages one at a time with at least 200 ms between consecutive frames. If several `register` frames arrive in a tight burst the device resets the connection. The delay is only needed during the initial registration sequence. 1. Open the WebSocket to `ws:///apievents`; let the client negotiate any supported extensions. 2. Register your events, one `register` per event, unique `clientId`, at least 200 ms apart. 3. Receive initial values: each successful registration replies with `type: "register"`, `status: 0`, and the current value in `data`. Dispatch it like a live event. 4. Handle events: keep reading; on change the device pushes `type: "event"`. 5. Handle errors and reconnect: log any `status != 0`; other registrations still work. ## Python Example This script uses the [`websockets`](https://pypi.org/project/websockets/) library (`pip install websockets`), which negotiates supported extensions automatically. It registers two events 200 ms apart and dispatches the initial values and all later changes: ```python import asyncio import json import websockets DEVICE_IP = "192.168.0.1" EVENTS = ["CurrentTempDev", "DeviceStatus"] async def main(): async with websockets.connect(f"ws://{DEVICE_IP}/apievents", ping_interval=None) as ws: for client_id, event in enumerate(EVENTS, start=1): await ws.send(json.dumps({"type": "register", "event": event, "clientId": client_id})) await asyncio.sleep(0.2) async for message in ws: msg = json.loads(message) if msg.get("status", 0) != 0: print("Error:", msg["event"], msg.get("error")) elif msg["type"] in ("register", "event"): print(msg["event"], msg["data"]) asyncio.run(main()) ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. ## Advanced: Throttle and Queue Pass an optional `options` object when registering. Throttle caps delivery frequency; excess events are dropped before queuing: ```json { "type": "register", "event": "LSPdatetime", "clientId": 7, "options": { "throttle": { "minOutputIntervalMs": 5000 } } } ``` Queue means each event has its own per-event queue on the shared connection: ```json "options": { "queue": { "priority": "HIGH", "maxSize": 10, "discardIfFull": "OLDEST" } } ```

**Advanced: Throttle and Queue:** field, values, default, and meaning.

| Field | Values | Default | Meaning | | --- | --- | --- | --- | | `priority` | `HIGH`, `MID`, `LOW` | `MID` | Processing priority among events on this connection | | `maxSize` | integer | 1 | Maximum buffered events | | `discardIfFull` | `OLDEST`, `NEWEST` | `OLDEST` | Which event to drop when full | ## Subscribable Events Event names are case-sensitive. Full data schemas are in the OpenAPI spec under the matching `GET` endpoint.

**Subscribable Events:** event, typical trigger, and devices.

| Event | Typical trigger | Devices | | --- | --- | --- | | `DeviceStatus` | Device operational state changes | multiScan200, picoScan100 | | `SCdevicestate` | Safety controller state | multiScan200, picoScan100 | | `FieldEvaluationResult` | Object enters/leaves a detection field | multiScan200, picoScan150 | | `perpendicularDistanceResult` | Perpendicular-distance result changes | picoScan150 | | `OutputState` / `PortState` | Digital I/O state changes (`PortState` preferred) | multiScan200, picoScan100 | | `InputState` | Digital input state changes | multiScan200, picoScan150 | | `ContaminationData` / `ContaminationResult` | Lens contamination per sector / global result | multiScan200, picoScan150 | | `InertialMeasurementUnit` | Live IMU data | multiScan200, picoScan150 | | `CurrentTempDev` | Device temperature (°C) | multiScan200, picoScan100 | | `temperatureAlarmStatus` | Temperature alarm threshold crossed | multiScan200 | | `UpdateState` | Firmware-update progress | multiScan200, picoScan100 | | `LSPdatetime` | Device clock tick (every second) | multiScan200, picoScan100 | "picoScan100" means both the picoScan120 and the picoScan150. The message examples above use `temperatureAlarmStatus`; on the picoScan100, use `CurrentTempDev` instead. ## Test with Insomnia Before wiring subscriptions into your app, verify them interactively in [Insomnia](https://insomnia.rest/): 1. Create a WebSocket request to `ws:///apievents` and click **Connect**. 2. Send one register message, for example `{ "type": "register", "event": "CurrentTempDev", "clientId": 1 }`. 3. Check the received messages: the registration reply with the current value comes first, then one `event` message per change. ## Reliability and Reconnect The device may close the connection on network interruption or firmware restart, and no subscription state is preserved across connections. On a close event, wait, reconnect, and re-register every subscription. ## Troubleshooting

**Troubleshooting:** symptom, likely cause, and fix.

| Symptom | Likely cause | Fix | | --- | --- | --- | | Connection refused | Wrong IP / not reachable | Ping the device; check firewall | | Resets after first registration | Register frames sent too fast | ≥ 200 ms between `register` messages | | Closes immediately (error 1002) | Frame or extension negotiation mismatch | Check `Sec-WebSocket-Extensions` and firmware; use a client compatible with the negotiated extensions | | "Event not found" | Wrong name (case-sensitive) or absent on this firmware | Check the exact name; confirm firmware | | No events after registration | Value hasn't changed; events are change-driven | Expected; the initial value is still sent on registration | | Stale app state at startup | Dispatch filter only accepts `type == "event"` | Also dispatch `type == "register"` with `status == 0` | | Frequent drops | Read timeout too short | Set read timeout ≥ 300 s; events can be infrequent | Test subscriptions from a plain browser (Chrome/Edge) or from Insomnia/Postman before wiring them into your app. Wireshark on the sensor interface shows the raw WebSocket traffic. --- # SICK LiDAR REST API: Requests, Authentication, OpenAPI > Configure SICK LiDAR sensors over REST: base URL, JSON envelope, persistence, challenge-response authentication, and session tokens. Source: https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/ # REST Interface Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The REST API is the primary interface to configure and control the sensor. It is JSON over HTTP on port 80, or port 443 with [HTTPS](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/). For endpoints and request examples, open the reference for your device: [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), [picoScan120](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-api), or [picoScan150](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-api). ## Base URL and JSON Envelope ```txt http[s]:///api/ ``` Every response uses the same envelope. `header.status` = `0` means success: ```json { "header": { "status": 0, "message": "Ok" }, "data": { "LocationName": "picoScan150 25420067" } } ``` The example is the response to `GET /api/LocationName`. The key inside `data` always matches the endpoint name exactly, including capitalization. ## Reading vs. Writing

**Reading vs. Writing:** operation, method, and authentication.

| Operation | Method | Authentication | | --- | --- | --- | | Read a parameter | `GET /api/` | None | | Write a parameter | `POST /api/` | [Challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) | | Call a protected method (reboot, defaults, teach-in, …) | `POST /api/` | [Challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) | | Binary file transfer (backup, firmware) | `GET`/`PUT /api/parameterbackup`, `PUT /api/update` where supported | [Session token](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#session-token-authentication) where required by firmware | A `POST` to a parameter changes only the working copy in RAM. The change is lost at the next power cycle unless you call `POST /api/WriteEeprom`, as in the [script below](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). `RebootDevice` also persists RAM to EEPROM before it reboots. `SoftReset` and a power cycle discard unsaved changes. See [Checksums](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/#ram-vs-persistent-storage) for how this shows in `MD5Parameters`. ## User Levels Writes require an enabled [user level](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). By default, only Service is enabled. ## Authentication

**Authentication:** method, use case, and reference.

| Method | Use case | Reference | | --- | --- | --- | | Challenge-response | Every `POST`: parameter writes and method calls | [Challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) | | Session token | Binary file transfer: configuration backup and firmware upload | [Session token](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#session-token-authentication) | ### Challenge-Response Authentication Protected `POST` requests use challenge-response authentication. The client proves that it knows the password with a SHA-256 hash chain; the password itself is never sent. `getChallenge` and some credential-check endpoints are exceptions because they start or test the authentication flow. For production code, use [sick_scan_rest_client](https://github.com/SICKAG/sick_scan_rest_client). This Python client handles challenge-response authentication on all devices in this guide. 1. Request a challenge for the user level that will send the request. The challenge is returned in the top-level `challenge` object, not in `data`: ```http POST /api/getChallenge Content-Type: application/json { "data": { "user": "Service" } } ``` ```json { "header": { "status": 0, "message": "Ok" }, "challenge": { "realm": "SICK Sensor", "nonce": "e03caead8342067f4b91fefab37cb4fea551ab3adbd1739785657baf54a598ca", "opaque": "9ec7f4b6f6a26b11c4b4257c1feee26e1a7511d3f9d806d5b2b64fe9868062cc", "salt": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } } ``` 2. Compute the response hash. `endpoint` is the path without `/api/`, for example `LocationName`: ```txt hash1 = SHA256(":::" + salt_bytes) # with salt hash1 = SHA256("::") # without salt hash2 = SHA256("POST:") response = SHA256("::") ``` `salt_bytes` are the raw byte values of the `salt` array, appended after the colon, not the JSON text of the array. If the challenge contains a `salt` field, use the salted form; an unsalted `hash1` is rejected with `header.status` 4 (Access Denied). All hashes are lowercase hex strings. 3. Send the hash in `header` with every protected `POST`. This script writes `LocationName` and saves it with `WriteEeprom`. Each `POST` gets its own challenge: ```python import hashlib, os, requests BASE = "http://192.168.0.1/api" USER = "Service" PASSWORD = os.environ["SICK_PASSWORD"] def sha256(data): return hashlib.sha256(data if isinstance(data, bytes) else data.encode()).hexdigest() def post(endpoint, data=None): challenge = requests.post(f"{BASE}/getChallenge", json={"data": {"user": USER}}).json()["challenge"] secret = f"{USER}:{challenge['realm']}:{PASSWORD}".encode() if challenge.get("salt") is not None: secret += b":" + bytes(challenge["salt"]) response = sha256(f"{sha256(secret)}:{challenge['nonce']}:{sha256('POST:' + endpoint)}") header = {"user": USER, "realm": challenge["realm"], "nonce": challenge["nonce"], "opaque": challenge["opaque"], "response": response} body = {"header": header, "data": data} if data is not None else {"header": header} reply = requests.post(f"{BASE}/{endpoint}", json=body).json() if reply["header"]["status"] != 0: raise RuntimeError(f"{endpoint}: {reply['header']}") return reply post("LocationName", {"LocationName": "my-sensor"}) post("WriteEeprom") ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. Use each challenge for one request only. A challenge for another user level invalidates the pending one, and the request fails with `header.status` 10 (Invalid Challenge). If several clients write to the same sensor, serialize the challenge-and-`POST` sequence and retry once on status 10. The [Postman pre-request script](https://sickag.github.io/sick_lidar_developer_guide/configuration/third-party-tools/#add-the-pre-request-script) is a complete, working implementation of this algorithm. ### Session Token Authentication Binary file transfers such as configuration backup and firmware upload can use a session token instead of the JSON `header` object. Check the matching OpenAPI file for the exact file-transfer authentication required by your firmware. 1. Create a token with `POST /api/CreateSessionToken` at Service level. The response contains `data.token` and its lifetime in `data.timeToLive`. 2. Send the token in the `X-Session-Token` header of each `GET`/`PUT` file transfer. 3. Reuse the token for several transfers until it expires. See [Backup & Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) and [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) for complete sequences. ## Status Codes and Errors The REST API answers every request with HTTP `200 OK`, including failed requests. Check `header.status` in the JSON response: only `0` means success.

**Status Codes and Errors:** status, message, typical cause, and fix.

| Status | Message | Typical cause | Fix | | --- | --- | --- | --- | | 0 | Ok | Request succeeded | - | | 1 | Parsing Failed | Body is not valid JSON, or a required `data` field is missing | Compare the body with the OpenAPI schema | | 2 | Invalid Data | The `data` key does not match the endpoint name (case-sensitive), or a value has the wrong type | Use the endpoint name as `data` key | | 3 | Internal Server Error | For example, `getChallenge` with an unknown user name | Use `Service`, `Maintenance`, or `AuthorizedClient` | | 4 | Access Denied | Wrong password, missing or wrong `header`, hash computed for another endpoint, user level not enabled, or authentication temporarily locked | Check the password, the user level, and the hash; see the lock below | | 5 | Not Found | Unknown endpoint, or wrong HTTP method, for example `GET` on a method | Check the endpoint name and method in the OpenAPI file | | 6 | Out Of Range | Value outside the allowed range | Check the limits in the OpenAPI file | | 7 | Out Of Bounds | Value outside the allowed bounds, for example the user name `Authorized Client` with a space | Check the allowed values | | 8 | Read Only | Write to a read-only variable | Only read the variable | | 9 | Illegal Value | Value not in the allowed set, for example an undefined enum value | Use a value listed in the OpenAPI file | | 10 | Invalid Challenge | The challenge was invalidated by a challenge for another user level | Fetch a new challenge and retry once | | 11 | Out Of Connections | Too many simultaneous connections | Close idle connections and retry | After five failed logins in a row, the device locks authentication for 30 seconds. During the lock, `getChallenge` itself answers with `header.status` 4, so even the correct password fails. Bursts of many `getChallenge` requests in a short time are rejected in the same way for a few seconds. Wait at least 30 seconds before retrying instead of retrying immediately. Real HTTP error codes occur only for binary file transfers:

**Status Codes and Errors:** HTTP status, cause, and fix.

| HTTP status | Cause | Fix | | --- | --- | --- | | 403 | `GET` or `PUT /api/parameterbackup` without a valid `X-Session-Token` | Create a new session token | | 404 | `GET /api/parameterbackup` before a backup file has been created | Call `CreateParameterBackup` first | ## OpenAPI OpenAPI (formerly Swagger) is a machine-readable description of every REST endpoint: paths, parameters, and request and response schemas. Use it to generate a typed client in almost any language, or import it into a REST client. SICK publishes an OpenAPI file for each firmware. Download it from the SICK product page under *Software*, or use the files in this guide: - [picoScan100 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) - [multiScan100 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) - [multiScan200 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) - [LRS4000 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) The OpenAPI file does not describe the challenge-response authentication. Configure your client to compute it, or use [Insomnia or Postman](https://sickag.github.io/sick_lidar_developer_guide/configuration/third-party-tools/) with the prepared SICK plug-in or script. ## Related Articles *How to use the OpenAPI file with Insomnia.* --- # LiDAR Configuration Interfaces: REST, CoLa, Backup, HTTPS > Choose how to configure SICK LiDAR sensors using REST, CoLa, backups, HTTPS, or interactive API clients. Source: https://sickag.github.io/sick_lidar_developer_guide/configuration/ # Choose a Configuration Option Start with the REST interface: it covers reading and writing parameters for applications and scripts. The other options cover legacy integrations, configuration files, security, and interactive testing. * [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/): use the HTTP/JSON API to read and write parameters or call device methods from applications and scripts. Writes require challenge-response authentication. * [CoLa Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/): send SICK commands and telegrams, especially for PLCs, legacy integrations, or systems already using CoLa. * [Backup & Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/): save, recover, or deploy a complete configuration file; restore only to a matching device type. * [HTTPS & Certificates](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/): protect REST traffic with TLS and let clients verify the sensor using a trusted certificate. * [Third-Party Tools](https://sickag.github.io/sick_lidar_developer_guide/configuration/third-party-tools/): import OpenAPI into Insomnia or Postman to explore endpoints and test requests interactively. Insomnia and Postman are clients of the REST interface, not separate device protocols. --- # LiDAR Configuration Backup and Restore via GUI and REST > Back up and restore a complete multiScan100, multiScan200, or picoScan100 configuration file through SOPASair or the REST API, with optional passphrase encryption. Source: https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/ # Backup & Restore Compatible with: multiScan100 multiScan200 picoScan100 A configuration file contains the complete device configuration. Use it to roll back to a known-good state, replace a device, or copy a validated configuration to identical sensors. Encryption with a passphrase is optional. ## In the Web GUI Open the **Device** menu at the top right and select **Download configuration file**. The same menu imports a file. ![Device menu with Download configuration file selected](https://sickag.github.io/sick_lidar_developer_guide/assets/configuration/device-configuration-menu.png) *Access the configuration backup from the Device menu.* ## REST Endpoints See the device-specific [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) REST API references.

**REST Endpoints:** action, method and path, device families, and authentication.

| Action | Method and path | Device families | Authentication | | --- | --- | --- | --- | | Create a session token | `POST /api/CreateSessionToken` | multiScan200, picoScan100 | [Challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication), Service | | Create the backup file | `POST /api/CreateParameterBackup` | multiScan100, multiScan200, picoScan100 | Challenge-response, Service | | Check the create result | `GET /api/CreateParameterBackupResult` | multiScan200, picoScan100 | None | | Download the file | `GET /api/parameterbackup` | multiScan100, multiScan200, picoScan100 | `X-Session-Token` header where required by firmware | | Upload a file | `PUT /api/parameterbackup` | multiScan100, multiScan200, picoScan100 | `X-Session-Token` header where required by firmware | | Apply the uploaded file | `POST /api/RestoreParameterBackup` | multiScan100, multiScan200, picoScan100 | Challenge-response, Service | | Check the restore result | `GET /api/RestoreParameterBackupResult` | multiScan200, picoScan100 | None | The session token protects binary transfers where the firmware exposes that mechanism. `CreateParameterBackup` and `RestoreParameterBackup` accept an optional `Passphrase` (up to 256 characters). It is independent of the login password. A file created with a passphrase can only be restored with the same passphrase. ```json { "header": { "...": "challenge-response fields" }, "data": { "Passphrase": "your-passphrase" } } ``` Every `POST` below needs a fresh [challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) at Service level. ## Download a Configuration === "multiScan200 / picoScan100" 1. `POST /api/CreateSessionToken` and store `data.token`. 2. `POST /api/CreateParameterBackup`, optionally with a passphrase. 3. Poll `GET /api/CreateParameterBackupResult` until `data.Status` is `1` (Finished), and check that `data.Result` is `true`. 4. Download the file with the token: ```http GET /api/parameterbackup HTTP/1.1 Host: 192.168.0.1 X-Session-Token: dKVwNYUkHsHS... ``` The response is `HTTP 200` with the binary file (about 86 KB). Without the token header, the device returns `HTTP 403`. === "multiScan100" 1. `POST /api/CreateParameterBackup`, optionally with a passphrase, and wait for the request to finish. 2. `GET /api/parameterbackup` with the file-transfer authentication described in the multiScan100 OpenAPI file. ## Restore a Configuration === "multiScan200 / picoScan100" 1. `POST /api/CreateSessionToken` and store `data.token`. 2. Upload the file with the token: ```http PUT /api/parameterbackup HTTP/1.1 Host: 192.168.0.1 X-Session-Token: dKVwNYUkHsHS... Content-Type: application/octet-stream ``` 3. `POST /api/RestoreParameterBackup` with the passphrase used to create the file. 4. Poll `GET /api/RestoreParameterBackupResult` until the restore is finished, and check the result. === "multiScan100" 1. `PUT /api/parameterbackup` with the file-transfer authentication described in the multiScan100 OpenAPI file. 2. `POST /api/RestoreParameterBackup` with the passphrase used to create the file. On all devices, persist the result with `POST /api/WriteEeprom`, then confirm the [checksums](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/) and key parameters. ## Error Handling

**Error Handling:** symptom, cause, and fix.

| Symptom | Cause | Fix | | --- | --- | --- | | HTTP 403 on `GET`/`PUT parameterbackup` | Missing or expired session token | Create a new token; send the `X-Session-Token` header | | Download returns an empty or partial file | File read before creation finished | Poll `CreateParameterBackupResult` before downloading | | Restore rejected | Wrong passphrase, or a file from a different device type | Use the same passphrase; restore only onto a matching device type | | `header.status` 4 or 10 on `Create*` or `Restore*` | Wrong password, user level not enabled, or the challenge was invalidated | Fetch a new [challenge](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) per request; use Service | ## Roll Out a Configuration to Many Sensors Configure and validate one "golden" device, download its configuration file, and restore it on every identical sensor. This also transfers [field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) groups, which you can then modify over REST. Use the [`LFTchecksum`](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/) to confirm that a restore changed only what you expected. [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) uses the same session-token pattern. ## Related Articles *How to create a device configuration offline and import it.* *How to import and export configuration with SOPAS ET.* --- # CoLa A and CoLa B Protocol: SICK Command Language Reference > SICK CoLa protocol reference: CoLa A (ASCII) and CoLa B (binary) framing, checksum, command types, variable types, TCP ports 2111 and 2112, and error codes. Source: https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/ # CoLa Interface Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 CoLa (Command Language) is SICK's telegram protocol for reading and writing sensor parameters, calling methods, and subscribing to events over TCP. Use it for PLCs and existing SICK integrations; for new integrations, prefer the [REST API](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/).

**CoLa Interface:** variant, encoding, TCP port, framing, and checksum.

| Variant | Encoding | TCP port | Framing | Checksum | | --- | --- | --- | --- | --- | | CoLa A | ASCII | `2111` | `` … `` (`02` … `03`) | None | | CoLa B | Binary | `2112` | `02 02 02 02` + 4-byte big-endian length | 1-byte XOR | On picoScan100, CoLa A and CoLa B (together called CoLa1) can be disabled for security; see [Cybersecurity](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/#legacy-protocols-cola). ## Command Basics Every telegram starts with a command type, followed by a space and the command name. The device answers with the matching answer type:

**Command Basics:** command type, request, answer, and hex value of the request.

| Command type | Request | Answer | Request in hex | | --- | --- | --- | --- | | Read a variable | `sRN` | `sRA` | `73 52 4E` | | Write a variable | `sWN` | `sWA` | `73 57 4E` | | Call a method | `sMN` | `sAN` | `73 4D 4E` | | Register for an event | `sEN` | `sEA`, then `sSN` per event | `73 45 4E` | An error is answered with `sFA` and an [error code](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/#cola-error-codes). The framing differs between the two variants:

**Command Basics:** framing element, CoLa A, and CoLa B.

| Element | CoLa A (ASCII) | CoLa B (binary) | | --- | --- | --- | | Start | `` = `02` | `02 02 02 02` + 4-byte length | | End | `` = `03` | 1-byte XOR checksum | | Separator | `{SPC}` = `20` | `20` after the command name only | If values are divided into two parts (e.g. measurement data), they are documented according to LSB 0 (e.g. 00 07), output however is according to MSB (e.g. 07 00). ## ASCII Telegram (CoLa A) CoLa A is the plain-text alternative. It is convenient for manual tests and parametrization. For PLCs, CoLa B is still recommended because CoLa A telegrams have a variable length. A CoLa A telegram has two parts: the framing and the data part. `` (`02`) starts and `` (`03`) ends each telegram. The data part contains the command in plain text, then the parameter values. Values are hexadecimal by default, or decimal with a leading `+`. Fixed values with a specific meaning are always hexadecimal. Example: 25 Hz = `+2500` (decimal) = `9C4` (hex). Leading zeros are removed in CoLa A, so a space is required between every command part and every parameter. Without the `+` sign, a numeric parameter is read as **hexadecimal**. For single digits 0-9 this makes no difference, but from 10 upwards it does: `10` and `010` are both read as 0x10 = 16, while `+10` is decimal 10. Write every decimal value greater than 9 with a leading `+` (for example `+10`, `+48`, `+2500`). You can also send the whole telegram as hex bytes, converting every character, including digits, through the ASCII table. The device always answers with parameter values in hexadecimal, regardless of the format you sent. **Example: ASCII telegram**

**ASCII Telegram (CoLa A):** format, start, data, and stop.

| Format | Start | Data | Stop | | --- | --- | --- | --- | | ASCII | `` | `sMN{SPC}SetAccessMode{SPC}03{SPC}` | `` | | Hex | `02` | `73 4D 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 30 33 20 ` | `03` | This is again an example telegram for setting the user level "Authorized Client". As only fixed hexadecimal parameter values are needed, the option to use parameter values in decimal code with special indicator cannot be applied here: - Framing = = telegram start = 02 (Hex) - Data: - sMN = start of SOPAS command (and blank) = 73 4D 4E 20 (Hex) - SetAccessMode = the actual command for setting the user level (and blank) = 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 (Hex) - 03 = fixed Hex value meaning user level "Authorized Client" (and blank) = 30 33 20 (Hex) - `` = 8 hex characters: the hash of the password for the selected user level - Framing = = telegram stop = 03 (Hex) The default passwords are documented in the operating instructions of your device. Do not pass them on, and change them during commissioning. ## Binary Telegram (CoLa B) A CoLa B telegram has four parts: header, data length, data, and checksum. All values are bytes, shown in hexadecimal. CoLa B is recommended for PLCs: the transmitted data is about half the size of CoLa A, and the length field makes parsing simple. - Header: four STX bytes, `02 02 02 02`. - Data length: 4 bytes, big-endian, the number of bytes in the data part. The maximum is 2³² − 1 = 4,294,967,295 bytes. - Data: the command as ASCII bytes, followed by the parameters as binary values. There is always a space (`20`) between the command and the parameters, but not between parameter values. - Checksum: 1 byte, the XOR of all bytes in the data part. **Example: Binary telegram**

**Binary Telegram (CoLa B):** component and value.

| Component | Value | | --- | --- | | Header | `02 02 02 02` | | Length | `00 00 00 17` | | Data | `73 4D 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 03 ` | | CS | XOR of the data bytes | This is an example telegram for setting the user level "Authorized Client": - Header = 02 02 02 02 - Length = 23 bytes (17h) - Data: - 73 4D 4E 20 = sMN = start of SOPAS command (and space) - 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 = SetAccessMode = the actual command for setting the user level (and space) - 03 = fixed Hex value meaning user level "Authorized Client" - `` = 4 bytes: the hash of the password for the selected user level - Checksum = the XOR of all 23 data bytes ## Validate a CoLa B Checksum CoLa B is transported over TCP, so one TCP read is not necessarily one complete telegram. Buffer incoming bytes, locate the four-byte sync header, read the following 4-byte big-endian payload length, and wait until the complete frame has arrived. The frame consists of the 8-byte header and length, the payload, and one checksum byte; therefore its total size is `9 + payload_length`. The checksum is the XOR of every payload byte, excluding the sync header, length field, and checksum byte. For a complete frame in a byte array `frame`, calculate it as follows: ```python xor_sum = 0 for byte in frame[8:-1]: xor_sum ^= byte checksum_valid = xor_sum == frame[-1] ```
Show full Python checksum example The following dummy `LMDscandata` response is an example captured from a picoScan150 with firmware V2.1.0. It demonstrates frame separation and XOR validation; it contains a small number of beams and is not a production measurement sample. The length bytes in this sample are `00 00 00 77`, which encode a 119-byte payload in big-endian order. The checksum is `BB`. ```python tcp_payload = [ 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x77, 0x73, 0x52, 0x41, 0x20, 0x4c, 0x4d, 0x44, 0x73, 0x63, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x20, 0x00, 0x01, 0x00, 0x01, 0x01, 0x64, 0x72, 0x18, 0x00, 0x00, 0x59, 0x89, 0x69, 0x97, 0xbb, 0x9d, 0xc5, 0x02, 0xbb, 0x9e, 0x82, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x49, 0x53, 0x54, 0x31, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xe2, 0xb0, 0x13, 0x88, 0x00, 0x03, 0x00, 0x00, 0x3a, 0xdb, 0x3a, 0xda, 0x00, 0x01, 0x52, 0x53, 0x53, 0x49, 0x31, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xe2, 0xb0, 0x13, 0x88, 0x00, 0x03, 0x00, 0x35, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, ] xor_sum = 0 for byte in tcp_payload[8:-1]: xor_sum ^= byte if xor_sum == tcp_payload[-1]: print("Checksum valid") else: print("Checksum invalid") ```
## Device-Specific Telegram Listing For device-specific commands and parameter telegrams, see the [LRS4000 Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/), [multiScan100 Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/), [multiScan200 Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/), and [picoScan100 Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/). Every write command (`sWN`) has a read (`sRN`) counterpart, even if the Telegram Listing does not describe it. Use it to verify the current value, for example read the IP address with `sRN EIIpAddr`. ## Variable Types

**Variable Types:** variable type, length, value range, and sign.

| Variable type | Length (byte) | Value range | Sign | | --- | --- | --- | --- | | Bool_1 | 1 | 0 or 1 | No | | Uint_8 | 1 | 0 … 255 | No | | Int_8 | 1 | -128 … +127 | Yes | | Uint_16 | 2 | 0 … 65,535 | No | | Int_16 | 2 | -32,768 … +32,767 | Yes | | Uint_32 | 4 | 0 … 4,294,967,295 | No | | Int_32 | 4 | -2,147,483,648 … +2,147,483,647 | Yes | | ULInt_64 | 8 | 0 … 18,446,744,073,709,551,615 | No | | Enum_8 | 1 | Certain values defined in a list of Choices (0 … 255) | No | | Enum_16 | 2 | Certain values defined in a list of Choices (0 … 65535) | No | | String | Context-dependent | Strings are not terminated in zeroes | | | FlexString | array of visible characters with preceding current length
(UInt length) (array of 8 bit) | See description of String and FlexArray | | | Real | 4 | Float according to IEEE 754 (see the [IEEE 754 converter](https://www.h-schmidt.net/FloatConverter/IEEE754.html)) | Yes | Data length is always given in bytes.

**Variable Types:** compound type and description.

| Type | Description | | --- | --- | | *Struct* | A structure is a sequence of further types. These types can be of a BasicType, Structs again or an Array. | | *Array* | An Array is a repetition of a type. The length of the array is defined with each Array. The types can be of a BasicType, a Struct or an Array again (n-dimensional). | | *Flex Array* | A FlexArray is a repetition of a type with a variable length. The maximum length of the array is defined with each FlexArray. The current length of the FlexArray is transferred as a UInt preceding the Array itself. The types can be of a BasicType, a Struct or an Array again (n-dimensional). | ## CoLa Error Codes An `sFA` response reports a SOPAS error. The error code is returned as a decimal value in CoLa A and as a hexadecimal value in CoLa B.

**CoLa Error Codes:** symbol, description, decimal, and hexadecimal value.

| Symbol | Description | Dec. | Hex. | | --- | --- | ---: | ---: | | `Sopas_Ok` | No error | 0 | `0` | | `Sopas_Error_METHODIN_ACCESSDENIED` | Wrong user level; access to the method is not allowed | 1 | `1` | | `Sopas_Error_METHODIN_UNKNOWNINDEX` | Method index is unknown | 2 | `2` | | `Sopas_Error_VARIABLE_UNKNOWNINDEX` | Variable index is unknown | 3 | `3` | | `Sopas_Error_LOCALCONDITIONFAILED` | A local condition was violated, such as a value outside the allowed range | 4 | `4` | | `Sopas_Error_INVALID_DATA` | Invalid variable data; deprecated and no longer used | 5 | `5` | | `Sopas_Error_UNKNOWN_ERROR` | Unknown error; deprecated | 6 | `6` | | `Sopas_Error_BUFFER_OVERFLOW` | Communication buffer was too small for the serialized data | 7 | `7` | | `Sopas_Error_BUFFER_UNDERFLOW` | More data was expected, but the buffer could not be filled | 8 | `8` | | `Sopas_Error_ERROR_UNKNOWN_TYPE` | Variable has an unknown type | 9 | `9` | | `Sopas_Error_VARIABLE_WRITE_ACCESSDENIED` | Variable is read-only | 10 | `A` | | `Sopas_Error_UNKNOWN_CMD_FOR_NAMESERVER` | Nameserver does not understand the command | 11 | `B` | | `Sopas_Error_UNKNOWN_COLA_COMMAND` | Command is not defined by the CoLa specification | 12 | `C` | | `Sopas_Error_METHODIN_SERVER_BUSY` | Another command is already being processed | 13 | `D` | | `Sopas_Error_FLEX_OUT_OF_BOUNDS` | Array was accessed beyond its maximum length | 14 | `E` | | `Sopas_Error_EVENTREG_UNKNOWNINDEX` | Event index is unknown | 15 | `F` | | `Sopas_Error_COLA_A_VALUE_OVERFLOW` | Value is too large for the field | 16 | `10` | | `Sopas_Error_COLA_A_INVALID_CHARACTER` | Character is unknown or not alphanumeric | 17 | `11` | | `Sopas_Error_OSAI_NO_MESSAGE` | No operating-system message could be created for a GET request | 18 | `12` | | `Sopas_Error_OSAI_NO_ANSWER_MESSAGE` | No operating-system message could be created for a PUT request | 19 | `13` | | `Sopas_Error_INTERNAL` | Internal firmware error | 20 | `14` | | `Sopas_Error_HubAddressCorrupted` | SOPAS hub address is too short or too long | 21 | `15` | | `Sopas_Error_HubAddressDecoding` | SOPAS hub address has invalid syntax | 22 | `16` | | `Sopas_Error_HubAddressAddressExceeded` | Hub address contains too many hubs | 23 | `17` | | `Sopas_Error_HubAddressBlankExpected` | Expected blank is missing in the hub address | 24 | `18` | | `Sopas_Error_AsyncMethodsAreSuppressed` | Asynchronous methods are suppressed on the device | 25 | `19` | | `Sopas_Error_ComplexArraysNotSupported` | Device does not support the received complex array | 26 | `1A` | --- # Enable HTTPS on SICK LiDAR Sensors: Certificates and TLS > Enable HTTPS on supported SICK LiDAR sensors: certificate requirements, OpenSSL commands for a CA and leaf certificate, and REST endpoints for upload and removal. Source: https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/ # HTTPS & Certificates Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 By default the REST API is served over plain HTTP on port 80. Activating HTTPS makes the API available on port 443; HTTP on port 80 remains available unless separately disabled. Use HTTPS with certificate verification to protect configuration commands and API data with TLS. Enforce your network-security policy for HTTP separately; enabling HTTPS does not disable HTTP. There is no separate enable/disable toggle: the device turns HTTPS on as soon as a valid certificate bundle is installed. Removing the bundle turns HTTPS off only after the next reboot. ## The Four Endpoints

**The Four Endpoints:** endpoint, method, auth, and purpose.

| Endpoint | Method | Auth | Purpose | | ------------------------------ | ------ | ------- | ---------------------------------------------------- | | `/api/httpsStatus` | GET | none | Read HTTPS enabled state and error code | | `/api/certificateBundleInfo` | GET | none | Inspect subject, issuer, validity dates, fingerprint | | `/api/setCertificateBundle` | POST | Service | Upload the PEM certificate bundle + private key | | `/api/removeCertificateBundle` | POST | Service | Remove the bundle (HTTPS off after the next reboot) | On LRS4000 firmware 1.10.0, the REST API provides only `httpsStatus` and `certificateBundleInfo`. `setCertificateBundle` and `removeCertificateBundle` are not available. ## Certificate Requirements Uploads that don't meet these are rejected with `success: false`.

**Certificate Requirements:** property and requirement.

| Property | Requirement | | -------------------------- | ------------------------------------------------------------------- | | Port | 443 (fixed) | | Format | X.509 PEM (`.pem`, `.crt`, `.cer`) | | Minimum key size | RSA ≥ 3072 bits, ECDSA ≥ 250 bits, or Curve25519 / Curve448 | | Maximum chain length | root CA → intermediate → leaf (3 levels); 2-level chain recommended | | `contentCertificateBundle` | 10 000 characters max | | `contentPrivateKey` | 4 000 characters max | | Mutual TLS | Not supported (server-side certificate only) | Three pieces of material are involved: - Certificate bundle (`contentCertificateBundle`): uploaded to the device. It contains the leaf (server) certificate first, then any intermediates; the root CA may optionally be appended. - Private key (`contentPrivateKey`): uploaded with the bundle. It must match the public key of the leaf certificate. - CA certificate: stays on the client to verify the device during the TLS handshake. For a self-signed root CA, this is the root `ca.pem`. ## Create a Self-Signed Chain (OpenSSL) A two-level hierarchy (self-signed root CA → leaf) is the recommended minimum. Replace `192.168.0.1` with your device IP. ```bash # Root CA key + certificate openssl genrsa -out ca.key 4096 openssl req -new -x509 -key ca.key -out ca.pem -days 365 \ -subj "/CN=My Sensor Root CA/O=My Organisation/C=DE" \ -addext "basicConstraints=critical,CA:TRUE" \ -addext "keyUsage=critical,keyCertSign,cRLSign" ``` ```bash # Server key + CSR openssl genrsa -out server.key 4096 openssl req -new -key server.key -out server.csr \ -subj "/CN=My Sensor/O=My Organisation/C=DE" ``` ```bash # Sign the leaf as a TLS server certificate for the device IP cat > server.ext <<'EOF' subjectAltName=IP:192.168.0.1 basicConstraints=critical,CA:FALSE keyUsage=critical,digitalSignature,keyEncipherment extendedKeyUsage=serverAuth authorityKeyIdentifier=keyid,issuer subjectKeyIdentifier=hash EOF openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key \ -CAcreateserial -out leaf.pem -days 365 -extfile server.ext ``` The extensions are required by strict TLS clients. For example, Python 3.13 and later reject a leaf without `authorityKeyIdentifier` and a CA without `keyUsage`. In Windows PowerShell, write `server.ext` as ASCII, for example with `Set-Content server.ext -Encoding ascii`; OpenSSL cannot read the UTF-16 files that `>` creates in Windows PowerShell 5.1. ```bash # Build the bundle (leaf + root CA) cat leaf.pem ca.pem > server.pem # Linux / macOS # Get-Content leaf.pem, ca.pem | Set-Content server.pem # Windows PowerShell ``` You end up with three files:

**Create a Self-Signed Chain (OpenSSL):** file, contents, and used by.

| File | Contents | Used by | | ------------ | --------------------------- | ------------------------------------------ | | `ca.pem` | Root CA certificate | Clients (verify the server) | | `server.pem` | Leaf + root CA (PEM bundle) | Device upload: `contentCertificateBundle` | | `server.key` | Leaf private key | Device upload: `contentPrivateKey` | TLS clients match the certificate against the address they connect to. Without `subjectAltName=IP:`, verification fails. Add every address you'll use to reach the device. ## Upload the Bundle `POST /api/setCertificateBundle` requires Service-level [challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). Both PEM blocks go in the `data` object as plain-text strings: ```http POST /api/setCertificateBundle Content-Type: application/json ``` ```json { "header": { "user": "Service", "realm": "", "nonce": "", "opaque": "", "response": "" }, "data": { "contentCertificateBundle": "", "contentPrivateKey": "" } } ``` A success looks like: ```json { "header": { "status": 0, "message": "Ok" }, "data": { "success": true, "errorCode": { "error": "None" } } } ``` As soon as a valid bundle is accepted, HTTPS becomes available on port 443. HTTP on port 80 remains available unless separately disabled. ## Read Status and Connect ```http GET /api/httpsStatus # enabled state + error code GET /api/certificateBundleInfo # subject, issuer, validity, fingerprint ``` Then use the API over TLS, trusting your `ca.pem`: ```bash curl --cacert ca.pem https://192.168.0.1/api/DeviceIdent ``` On Windows, if the root CA is already trusted in the OS certificate store, clients use it automatically. ## Remove the Bundle ```http POST /api/removeCertificateBundle # Service auth POST /api/RebootDevice # Service auth; HTTPS is off after the reboot ``` Until the device restarts, port 443 keeps serving the removed certificate and `httpsStatus` still reports `enabled: true`. `RebootDevice` also saves pending parameter changes permanently, so make sure no unwanted changes are pending before you reboot. Keep port 80 available while you validate the certificate. If an upload leaves HTTPS refusing connections, read `httpsStatus` over HTTP to see the error code, fix the certificate, and re-upload. See the [Cybersecurity Hardening Guide](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/) for wider hardening guidance. ## Video Tutorial *How to create SSL certificates to enable HTTPS communication.* --- # SICK LiDAR Test Tools: Insomnia, Postman, and Hercules > Test REST requests with Insomnia or Postman and challenge-response authentication, or send CoLa telegrams over TCP with Hercules. Source: https://sickag.github.io/sick_lidar_developer_guide/configuration/third-party-tools/ # Third-Party Tools Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Use Insomnia or Postman for the REST API, or [Hercules](https://sickag.github.io/sick_lidar_developer_guide/configuration/third-party-tools/#hercules) for manual CoLa telegram testing over TCP. Insomnia and Postman are desktop REST clients that can import the sensor's OpenAPI file. They prepare requests for the documented endpoints so you can explore and test the REST API interactively before writing client code. Writes require challenge-response authentication; the following sections describe how to configure each client. Download the `openapi.yaml` matching the device and firmware from the SICK product page under Software. Your computer must be able to reach the sensor, normally at `192.168.0.1`, and you need the password for an enabled user level. See [User levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). ## Insomnia *How to use the OpenAPI file with Insomnia.* ### Create a Collection from `openapi.yaml` Download the OpenAPI YAML that matches the sensor and firmware: [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/). In Insomnia: 1. Open the workspace and select **Import** → **File**. 2. Choose the downloaded `openapi.yaml`, then select **Scan**. 3. Review the detected resources and select **Import**. Insomnia creates an API Collection and places the OpenAPI definition in its **Spec** tab. 4. In the **Spec** tab, open the settings menu beside **Preview** and select **Generate Collection** to create sendable requests from the specification. ![Insomnia Spec tab settings menu with the Generate Collection action](https://sickag.github.io/sick_lidar_developer_guide/assets/configuration/insomnia-generate-collection.png) *Generate a request collection from the imported OpenAPI specification.* See Insomnia's guide to [importing an API specification](https://developer.konghq.com/how-to/import-an-api-spec/) for screenshots and version-specific details. The generated requests document the endpoints, but write requests still need the SICK challenge-response authentication configured below. The [SICK challenge-response plug-in](https://sickag.github.io/sick_lidar_developer_guide/assets/configuration/sick_rest_insomnia_plugin.rar) calculates the authentication hash for `POST` requests. Download the plug-in, then in Insomnia open Application → Preferences → Plugins, install it, and reload plug-ins. Set the environment to your sensor address and credentials: ```json { "address": "192.168.0.1", "base_url": "http://{{ _.address }}/api", "user": "Service", "password": "", "enableAuthentification": true } ``` Replace the example address, user, and password with the values for your sensor. The plug-in reads the variable name `enableAuthentification`, so keep this spelling. The Postman script below uses `enableAuthentication` instead. The plug-in requests the challenge over plain HTTP from `address`. Keep credentials private; do not include them in exported environments or version control. ## Postman The Postman setup below is intended for demonstration and evaluation; review, test, and adapt it before production use. ### Import the OpenAPI File In Postman, select Import, choose the downloaded `openapi.yaml`, and import it as a collection. The collection contains prepared requests for the sensor endpoints. Imports normally use `{{baseUrl}}`; configure this variable in an environment. ### Create an Environment Create an environment named, for example, SICK REST Auth, add the following variables, and select it in Postman's environment selector.

**Create an Environment:** variable, example value, and purpose.

| Variable | Example value | Purpose | | --- | --- | --- | | `baseUrl` | `http://192.168.0.1/api` | Sensor REST API base URL | | `user` | `Service` | Enabled sensor user level | | `password` | Enter in Current value only | Device password | | `enableAuthentication` | `true` | Enables the script | | `challengePath` | `/getChallenge` | Challenge endpoint, relative to `baseUrl` | Keep the password's Initial value field empty so it is not exported or shared. Mark it as sensitive if available. Do not put credentials in requests, scripts, exported collections, or version control. ### Add the Pre-Request Script Open the imported collection, choose Scripts > Pre-request, paste the following script, and save. A collection-level script applies to every request in that collection; repeat this step after importing a new collection. ```javascript (function () { "use strict"; function isTrue(value) { return String(value).toLowerCase() === "true"; } function bytesToWordArray(bytes) { const words = []; for (let index = 0; index < bytes.length; index += 1) { words[index >>> 2] |= (bytes[index] & 0xff) << (24 - (index % 4) * 8); } return CryptoJS.lib.WordArray.create(words, bytes.length); } function calculateAuthHeader(user, password, challenge, method, endpoint) { const hash1 = challenge.salt == null ? CryptoJS.SHA256(`${user}:${challenge.realm}:${password}`).toString() : CryptoJS.SHA256( CryptoJS.enc.Latin1.parse(`${user}:${challenge.realm}:${password}:`) .concat(bytesToWordArray(challenge.salt)), ).toString(); const hash2 = CryptoJS.SHA256(`${method}:${endpoint}`).toString(); return { nonce: challenge.nonce, opaque: challenge.opaque, realm: challenge.realm, response: CryptoJS.SHA256(`${hash1}:${challenge.nonce}:${hash2}`).toString(), user, }; } const method = pm.request.method.toUpperCase(); const url = pm.variables.replaceIn(pm.request.url.toString()); if ( !["POST", "PUT", "PATCH", "DELETE"].includes(method) || url.includes("/getChallenge") || !isTrue(pm.environment.get("enableAuthentication")) ) { return; } const baseUrl = pm.environment.get("baseUrl")?.replace(/\/+$/, ""); const user = pm.environment.get("user"); const password = pm.environment.get("password"); if (!baseUrl || !user || !password) { throw new Error("[AUTH] Set baseUrl, user, and password in the active environment."); } const path = new URL(url).pathname.replace(/^\/api\//, "").replace(/^\/+|\/+$/g, ""); if (!path) { throw new Error(`[AUTH] Cannot determine endpoint from ${url}.`); } const rawBody = pm.variables.replaceIn(pm.request.body?.raw || "{}"); let body; try { body = JSON.parse(rawBody); } catch { throw new Error("[AUTH] The request body must be valid JSON."); } const challengePath = pm.environment.get("challengePath") || "/getChallenge"; pm.sendRequest({ url: `${baseUrl}${challengePath.startsWith("/") ? "" : "/"}${challengePath}`, method: "POST", header: { "Content-Type": "application/json" }, body: { mode: "raw", raw: JSON.stringify({ data: { user } }) }, }, (error, response) => { if (error) throw new Error(`[AUTH] Challenge request failed: ${error}`); if (!response || response.code !== 200) { throw new Error(`[AUTH] Challenge returned HTTP ${response?.code ?? "no response"}.`); } const challenge = response.json().challenge; if (!challenge?.realm || !challenge?.nonce) { throw new Error("[AUTH] Unexpected challenge response."); } pm.request.body.update({ mode: "raw", raw: JSON.stringify({ header: calculateAuthHeader(user, password, challenge, method, path), data: body.data, }), options: { raw: { language: "json" } }, }); pm.request.headers.upsert({ key: "Content-Type", value: "application/json" }); }); }()); ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. ### Send an Authenticated Write Open the `POST` request for `LocationName`, set the body type to raw JSON, and provide only the data object: ```json { "data": { "LocationName": "my-sensor" } } ``` With the environment active and `enableAuthentication` set to `true`, send the request. The Postman Console should show a successful `POST` to `getChallenge`, followed by the request to `LocationName`. A response header with `"status": 0` confirms success. Set `enableAuthentication` to `false` to verify that the device rejects the protected write. The script leaves `GET` requests unchanged. For each write request, it obtains a fresh one-time challenge, calculates the SHA-256 challenge-response hash, and adds the resulting authentication header to the outgoing JSON body. See [Challenge-Response Authentication](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) for the underlying protocol. ### Troubleshooting

**Troubleshooting:** symptom, likely cause, and fix.

| Symptom | Likely cause | Fix | | --- | --- | --- | | `getaddrinfo ENOTFOUND {{baseUrl}}` | No active environment | Select the environment in the top-right selector. | | `Access Denied` | Script did not run, user level is disabled, or credentials are wrong | Confirm the collection-level script and enabled user level; check credentials. | | Missing-variable error | Environment values are incomplete | Set `baseUrl`, `user`, and the Current value for `password`. | | No authentication on a write | Authentication is disabled or request is a `GET` | Set `enableAuthentication` to `true`; `GET` requests do not need authentication. | The Postman Console is the first diagnostic step: a healthy protected request shows a `getChallenge` call immediately before the endpoint call. ## Hercules [Hercules SETUP utility](https://www.hw-group.com/software/hercules-setup-utility) is a freeware Windows terminal from HW group that runs as a single executable without installation. Use its **TCP Client** tab mainly to send and inspect [CoLa telegrams](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/). Connect to the sensor IP address (factory default `192.168.0.1`) on port `2111` for CoLa A or `2112` for CoLa B. For CoLa A, send the ASCII command between actual STX (`02`) and ETX (`03`) bytes, not the literal text `` and ``. For CoLa B, send the complete binary frame, including length and XOR checksum. The terminal does not add CoLa framing for you. --- # LiDAR Recording Methods: SOPASair, pcap, ROS Bag, JSON > Choose how to capture SICK LiDAR data, from raw packets and ROS topics to structured recordings and custom applications. Source: https://sickag.github.io/sick_lidar_developer_guide/recording/ # Choose a Recording Method Choose a recording approach based on what you need to preserve and how you plan to inspect or replay it. The Recording section currently covers five options: * [SOPASair Recorder \| .sc](https://sickag.github.io/sick_lidar_developer_guide/recording/sopasair/): save sensor measurement scenarios for repeatable analysis, replay, or support; the documented workflow uses picoScan100. * [Wireshark \| pcap](https://sickag.github.io/sick_lidar_developer_guide/recording/wireshark-pcap/): capture raw Ethernet traffic for network or protocol troubleshooting and preserve exactly what was transmitted. * [ROS Bag \| db3](https://sickag.github.io/sick_lidar_developer_guide/recording/ros-bag-db3/): record ROS topics for familiar playback and repeatable robotics testing; requires a running ROS setup. * [ScanSegmentAPI \| JSON](https://sickag.github.io/sick_lidar_developer_guide/recording/scansegmentapi-json/): store Compact or supported MSGPACK measurements as portable JSON for offline analysis and automated tests. * [sick_perception_sdk](https://sickag.github.io/sick_lidar_developer_guide/recording/sick-perception-sdk/): build custom C++ applications that acquire Compact data, create point clouds, and convert output such as PCD; requires a development setup. These methods capture at different layers and are not interchangeable. A SOPASair Recorder saves measurement scenarios; a packet capture is useful when you need the exact wire traffic; a ROS bag stores ROS messages; ScanSegmentAPI stores structured measurement data; and the SDK is a development library for building a custom application. If you are unsure, start with [SOPASair Recorder](https://sickag.github.io/sick_lidar_developer_guide/recording/sopasair/) for a supported measurement scenario, [ROS Bag](https://sickag.github.io/sick_lidar_developer_guide/recording/ros-bag-db3/) when your application already runs in ROS, [Wireshark](https://sickag.github.io/sick_lidar_developer_guide/recording/wireshark-pcap/) for a communication problem, or [ScanSegmentAPI](https://sickag.github.io/sick_lidar_developer_guide/recording/scansegmentapi-json/) for JSON recordings. --- # LiDAR ROS Bag (db3) Recording and Sample Downloads > Record SICK LiDAR ROS topics with ros2 bag, replay them, and download picoScan150 sample recordings for SLAM, perception, and AMR validation. Source: https://sickag.github.io/sick_lidar_developer_guide/recording/ros-bag-db3/ # ROS Bag | db3 Compatible with: LRS4000 multiScan100 multiScan200 picoScan100
![ROS 2](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/ros2-logo.png) ROS bag recordings capture sensor topics in a ROS environment. They support scenario replay, integrate with robotics frameworks, and suit algorithm development for AMR validation, SLAM, and AI or perception projects. ROS 1 saves them as `.bag` files, ROS 2 as bag databases (`.db3` or `.mcap`). The picoScan150 samples below are ROS 1 `.bag` files; convert them before replaying them in ROS 2.
To get the sensor data into ROS 2, use [Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2) where the device supports sensor-side DDS publishing, or [sick_scan_xd](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#sick_scan_xd) for host-side publishing. ## Record Sensor Topics With the sensor publishing in ROS 2, record the topics you need. Record only the topics your application uses, because point clouds produce large files. ```bash ros2 bag record -o my_recording /cloud/all_points ``` List the available topics with `ros2 topic list`. Stop the recording with ++ctrl+c++. ## Replay a Recording Play the recording back and visualize it in `rviz2`: ```bash ros2 bag play my_recording ``` Use `ros2 bag info my_recording` to check the recorded topics, message counts, and duration. *picoScan100 example: Record and play back measurement data as a ROS 2 bag (.db3), before trying the sample recordings below.* ## picoScan150 Sample Recordings SICK provides sample recordings of a picoScan150 on a mobile robot, together with a camera image, in indoor production and logistics scenarios. Use them to test your processing pipeline before a sensor is available. The seven recordings total about 3.4 GB.

**picoScan150 Sample Recordings:** scenario, length, size, and download.

| Scenario | Length | Size | Download | | --- | --- | --- | --- | | Electronic production: static scenario | ~15 s | 376 MB | [picoScan150_S1.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S1.bag) | | Electronic production: dynamic scenario | ~15 s | 376 MB | [picoScan150_S2.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S2.bag) | | Electronic production: dynamic scenario with a person walking by | ~15 s | 376 MB | [picoScan150_S3.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S3.bag) | | Electronic production: approaching a manufacturing cell | ~15 s | 376 MB | [picoScan150_S4.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S4.bag) | | Logistics: approaching a pallet | ~15 s | 376 MB | [picoScan150_S5.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S5.bag) | | Logistics: long corridor | ~30 s | 759 MB | [picoScan150_S6.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S6.bag) | | Electronic production: AMR driving by | ~30 s | 759 MB | [picoScan150_S7.bag](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/picoScan150/picoScan150_S7.bag) | All recordings share these properties:

**picoScan150 Sample Recordings:** property and value.

| Property | Value | | --- | --- | | Sensor | picoScan150 (2D LiDAR) and a camera | | Application | Mobile robot, indoor | | Format | ROS 1 bag (`.bag`) | | Topics | `cloud_unstructured_fullframe` (`sensor_msgs/PointCloud2`), `cv_camera/image_raw` (`sensor_msgs/Image`) | Convert them for ROS 2, for example with the [rosbags](https://pypi.org/project/rosbags/) Python package: ```bash pip install rosbags rosbags-convert --src picoScan150_S1.bag --dst picoScan150_S1 ros2 bag play picoScan150_S1 ``` ## multiScan100 Sample Recordings SICK provides multiScan100 sample recordings from production and logistics environments. Use them to validate perception pipelines, object detection, and AMR applications before a sensor is available on site.

**multiScan100 Sample Recordings:** scenario, basic recording, and advanced recording.

| Scenario | Basic recording | Advanced recording | | --- | --- | --- | | Electronic production: people walking by | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-peopleWalkingBy/electronicProduction-peopleWalkingBy-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-peopleWalkingBy/electronicProduction-peopleWalkingBy-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-peopleWalkingBy/electronicProduction-peopleWalkingBy-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-peopleWalkingBy/electronicProduction-peopleWalkingBy-mounting2-advanced/) | | Electronic production: approaching manufacturing cell | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-approachingManufacturingCell/electronicProduction-approachingManufacturingCell-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-approachingManufacturingCell/electronicProduction-approachingManufacturingCell-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-approachingManufacturingCell/electronicProduction-approachingManufacturingCell-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-approachingManufacturingCell/electronicProduction-approachingManufacturingCell-mounting2-advanced/) | | Logistics: approaching storage rack | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingStorageRack/logistics-approachingStorageRack-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingStorageRack/logistics-approachingStorageRack-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingStorageRack/logistics-approachingStorageRack-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingStorageRack/logistics-approachingStorageRack-mounting2-advanced/) | | Logistics: approaching pallets | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingPallets/logistics-approachingPallets-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingPallets/logistics-approachingPallets-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingPallets/logistics-approachingPallets-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingPallets/logistics-approachingPallets-mounting2-advanced/) | | Logistics: driving through a corridor | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-drivingThroughACorridor/logistics-drivingThroughACorridor-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-drivingThroughACorridor/logistics-drivingThroughACorridor-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-drivingThroughACorridor/logistics-drivingThroughACorridor-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-drivingThroughACorridor/logistics-drivingThroughACorridor-mounting2-advanced/) | | Electronic production: AGV driving by | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvDrivingBy/electronicProduction-agvDrivingBy-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvDrivingBy/electronicProduction-agvDrivingBy-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvDrivingBy/electronicProduction-agvDrivingBy-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvDrivingBy/electronicProduction-agvDrivingBy-mounting2-advanced/) | | Electronic production: AGV leaving manufacturing cell | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvLeavingManufacturingCell/electronicProduction-agvLeavingManufacturingCell-mounting1-basic/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvLeavingManufacturingCell/electronicProduction-agvLeavingManufacturingCell-mounting2-basic/) | [Mounting 1](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvLeavingManufacturingCell/electronicProduction-agvLeavingManufacturingCell-mounting1-advanced/) · [Mounting 2](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-agvLeavingManufacturingCell/electronicProduction-agvLeavingManufacturingCell-mounting2-advanced/) | | Electronic production: two AGVs driving by | [Basic](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-twoAGVsDrivingBy/electronicProduction-twoAGVsDrivingBy-basic/) | [Advanced](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/electronicProduction-twoAGVsDrivingBy/electronicProduction-twoAGVsDrivingBy-advanced/) | | Logistics: pallet truck driving by | [Basic](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-palletTruckDrivingBy/logistics-palletTruckDrivingBy-basic/) | [Advanced](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-palletTruckDrivingBy/logistics-palletTruckDrivingBy-advanced/) | | Logistics: approaching an edge | [Basic](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingAnEdge/logistics-approachingAnEdge-basic/) | [Advanced](https://sickdistribution.jfrog.io/artifactory/ros-bag-data-generic-local/multiScan/electronicProduction/logistics-approachingAnEdge/logistics-approachingAnEdge-advanced/) | All recordings share these properties:

**multiScan100 Sample Recordings:** property and value.

| Property | Value | | --- | --- | | Sensor | multiScan136 / multiScan165 (3D LiDAR) and a camera | | Application | Mobile robot, indoor | | Format | ROS 2 bag database (`.db3`) | | Topics | `/multiscan136/cloud_unstructured_fullframe`, `/multiscan165/cloud_unstructured_fullframe` and camera image topics | The recordings are `.db3` files and can be replayed in ROS 2 directly. For ROS 1 compatibility, convert them first with the [rosbags](https://pypi.org/project/rosbags/) Python package. ## Related Articles - [multiScan100: rosbag recordings - production hall](https://support.sick.com/sick-knowledgebase/article/?code=KA-09442) - [picoScan100: rosbag recordings](https://support.sick.com/sick-knowledgebase/article/?code=KA-09356) --- # Record LiDAR Data as JSON with ScanSegmentAPI > Receive LRS4000, multiScan100, or picoScan100 Compact or MSGPACK data with the Python ScanSegmentAPI for offline analysis and tests. Source: https://sickag.github.io/sick_lidar_developer_guide/recording/scansegmentapi-json/ # ScanSegmentAPI | JSON Compatible with: LRS4000 multiScan100 picoScan100 Compact or MSGPACK data can be received with [ScanSegmentAPI](https://github.com/SICKAG/ScanSegmentAPI) and stored as JSON. The Python ScanSegmentAPI supports LRS4000, multiScan100, and picoScan100; MSGPACK is available where the selected device supports that format. Use this workflow to create portable recordings for analysis, testing, and replay without requiring the sensor to remain connected. Install the project with [Poetry](https://python-poetry.org/) and run the JSON example: ```bash git clone https://github.com/SICKAG/ScanSegmentAPI.git cd ScanSegmentAPI poetry install poetry run python examples/store_segments_json_compact.py ``` Before you run it, set `IP`, `PORT`, and `TRANSPORT_PROTOCOL` at the top of the script. For UDP, `IP` is the receiving computer; for TCP, it is the sensor. The script stores 200 segments in `segments.json`. For MSGPACK, use `store_segments_json_msgpack.py`. See [Using the ScanSegmentAPI from Python](https://github.com/SICKAG/ScanSegmentAPI#using-the-scansegmentapi-from-python) in the README for the API. *picoScan100 example: Record measurement data as JSON with ScanSegmentAPI for offline analysis and replay.* --- # sick_perception_sdk: C++ SDK for SICK LiDAR Sensors > C++17 SDK for receiving, configuring, and diagnosing SICK LRS4000, multiScan100, and picoScan100 sensors, with PCD conversion and examples. Source: https://sickag.github.io/sick_lidar_developer_guide/recording/sick-perception-sdk/ # sick_perception_sdk Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The [sick_perception_sdk](https://github.com/SICKAG/sick_perception_sdk) is mainly a C++17 SDK for receiving SICK LiDAR data and configuring sensors. It is listed under Recording because it converts received scans to PCD files, which you can store and open in tools such as [CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/). It provides event-driven, thread-safe data acquisition from multiple sensors and ready-to-use examples. ![sick_perception_sdk architecture showing sensor data streaming, REST-based configuration, and additional tools](https://sickag.github.io/sick_lidar_developer_guide/assets/recording/sick-perception-sdk-overview.png) *sick_perception_sdk data streaming, REST-based configuration, and additional tools.* ## Supported Devices and Platforms The SDK supports these device variants:

**Supported Devices and Platforms:** product family and variants.

| Product family | Variants | | --- | --- | | LRS4000 | LRS4581 | | multiScan100 | multiScan136, multiScan165, multiScan166 | | multiScan200 | multiScan270 | | picoScan100 | picoScan120, picoScan150 | The SDK's example build option targets `LRS4000`, `multiScan100`, `multiScan200`, or `picoScan100`. The project builds with CMake on Linux and Windows and supports x86_64 and ARM64. Tested platforms are Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, and Windows 11. macOS is not a tested platform. ## Build and Integrate The SDK uses CMake and Conan 2 is available for dependency management. Follow the upstream [build instructions and CMake integration example](https://github.com/SICKAG/sick_perception_sdk/blob/main/README.md) for the current options and dependencies. The example build can be selected for a device family, and the CMake project exposes separate components for drivers, sensor configuration, and Compact format. ## Receive and Record Data The SDK receives event-driven scan, IMU, and encoder data using SICK's Compact format over TCP or UDP. Scan data is exposed as point clouds (Public [`PointField::DataType` API](https://github.com/SICKAG/sick_perception_sdk/blob/main/src/compact_format/include/sick_perception_sdk/compact_format/PointCloud/PointCloudAttributes.hpp)). The Compact-format layer provides a `PointCloudToPCDConverter` helper for converting scan-derived point clouds to PCD. There is ready-made recording application; you can use it to write the PCD files from your own code. The `sensor_configuration` component provides REST-based access to sensor settings and status. ## Threading, Diagnostics, and Logging Data acquisition is thread-safe and event-driven, including when acquiring from multiple sensors. The SDK includes diagnostic examples and built-in diagnostic and logging capabilities. The default logger uses plog; applications can provide a custom logger and set a minimum log level. See the [SDK README](https://github.com/SICKAG/sick_perception_sdk/blob/main/README.md) for current setup details, examples, and API documentation. --- # Record LiDAR Scenarios with the SOPASair Data Recorder > Record LRS4000, multiScan100, or picoScan100 measurement scenarios to .sc files with the SOPASair Data recorder. Source: https://sickag.github.io/sick_lidar_developer_guide/recording/sopasair/ # SOPASair Recorder | .sc Compatible with: LRS4000 multiScan100 picoScan100 The **SOPASair Data recorder** saves real LiDAR measurement scenarios as `.sc` files for later analysis and replay. ## Open the Data Recorder In the sensor's SOPASair web interface, open **Diagnostics → Data recorder**. The page provides an installation file for a separate recorder application: 1. Download the data recorder installation file from SOPASair. 2. Unzip the downloaded ZIP file and start the recorder application. 3. In the Connection Wizard, connect the recorder to the device. The recorder interface opens in a new window. 4. Use the recorder application to capture the measurement scenario and save the `.sc` recording for later use. The recorder runs on Windows and Linux. To replay a recording, connect the recorder to the device and open the `.sc` file; the device plays back the recorded data internally. ![SOPASair Diagnostics Data recorder page](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-diagnosis-recording.png) *The picoScan100 SOPASair Data recorder page links to the separate recorder application.*

picoScan100 example: Record and replay a measurement scenario as an `.sc` file with SOPASair. Menu labels and recorder availability may differ by software version.

## When to Use It - Capture a real scene during operation to investigate an intermittent issue. - Replay a captured measurement scenario to compare processing results across application changes, rather than returning to the installation site. - Share a recording with colleagues or SICK support for reproducible analysis. Recordings capture a particular measurement scenario, not an entire device configuration or raw Ethernet traffic. Save the relevant configuration and firmware details separately when comparing behavior after changes. For a complete device configuration, use [Backup & Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/); for raw network traffic, use [Wireshark | pcap](https://sickag.github.io/sick_lidar_developer_guide/recording/wireshark-pcap/). This is the **SOPASair** Data recorder workflow, not the separate legacy [SOPAS ET](https://sickag.github.io/sick_lidar_developer_guide/visualization/sopas-et/) Excel/CSV recording workflow. The availability of the recorder and replay functions may depend on device and software version; the illustrated entry point is from picoScan100. LRS4000 and multiScan100 also provide the SOPASair **Diagnostics → Data recorder** entry. --- # Record and Decode LiDAR Traffic with Wireshark (pcap) > Capture SICK LiDAR Ethernet traffic as .pcap or .pcapng with Wireshark and decode Compact data with the SICK Lua dissector. Source: https://sickag.github.io/sick_lidar_developer_guide/recording/wireshark-pcap/ # Wireshark | pcap Compatible with: LRS4000 multiScan100 multiScan200 picoScan100
![Wireshark](https://sickag.github.io/sick_lidar_developer_guide/assets/recording/wireshark-logo.svg) Packet captures record the raw Ethernet communication between the sensor and a host computer, for protocol-level diagnostics, network troubleshooting, decoder development, and SICK support. Capture with Wireshark, tcpdump, or tshark and save as `.pcap` or `.pcapng`.
To decode Compact captures, install the [Wireshark Compact dissector](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#wireshark-dissector). ![Wireshark Compact packet dissection](https://sickag.github.io/sick_lidar_developer_guide/assets/recording/wireshark-compact-dissector.png) *Wireshark displaying decoded Compact measurement data with the SICK dissector.* *picoScan100 example: Use the Wireshark dissector to decode Compact packets into readable fields when checking a capture before debugging your own decoder.* --- # SICK LiDAR Device Guides > Open the LRS4000, multiScan100, multiScan200, or picoScan100 guide for device-specific wiring, interfaces, downloads, and release notes. Source: https://sickag.github.io/sick_lidar_developer_guide/device-specific/ # Device-Specific Guides Choose your sensor family for wiring, web-interface walkthroughs, command references, downloads, and firmware information. * [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/): long-range 2D LiDAR, including motor synchronization. * [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/): multi-layer 3D LiDAR, including multiScan136, multiScan165, and multiScan166. * [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/): 3D LiDAR, including multiScan270. * [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/): compact 2D LiDAR, including picoScan120 and picoScan150. --- # LRS4000 Overview > Developer entry point for the SICK LRS4000 long-range 2D LiDAR sensor: SOPASair, REST and CoLa, measurement data, synchronization, and applications. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/ # LRS4000 The LRS4000 is a long-range 2D LiDAR sensor for demanding outdoor applications. This developer section covers the LRS4581R. For a sensor and cable combination to get started, see the [Starter Kit](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/starter-kit/). [Specifications and data sheet on sick.com](https://www.sick.com/de/en/search?text=LRS4000)
LRS4000 with a rotating blue beam and fading wall hit points in a single horizontal scan plane *LRS4000: one scan plane, up to 360° depending on settings. Blue represents infrared; beam geometry, wall hits, and speed are schematic.*
Find firmware, EPLAN and CAD data, NVIDIA Isaac Sim models, and Milestone XProtect plug-ins on the *Downloads* tab of your device variant's product page: [search for LRS4000 on sick.com](https://www.sick.com/de/en/search?text=LRS4000). Select the files for your device variant; see [Release Notes](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/release-notes/) for firmware changes.
**Input** - [CoLa A/B](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/) - [Digital inputs](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/) - [Encoder](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/) - [Ethernet](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/) - [HTTPS](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) - [NTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [PTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [REST API](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) - [SOPASair](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/)
**Processing** - [3D scan recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/) - [Contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Device discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/) - [Echo filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [Long-range 2D scanning](https://sickag.github.io/sick_lidar_developer_guide/lidar-basics/) - [Mean filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Median filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Motor synchronization](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/motor-synchronization/) - [Particle filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Perpendicular distance](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) - [Range filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/)
**Output** - [CoLa A/B telegrams](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/) - [Compact over TCP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) - [Contamination status](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Detection history](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/) - [Diagnostic recordings](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/) - [Digital outputs](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/) - [Field-evaluation states](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [LMDscandata over TCP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/) - [Perpendicular-distance values](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) - [REST JSON responses](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) - [ROS 2 via sick_scan_xd](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/)
*Inputs, onboard processing, and outputs of the **LRS4000**. Each column is an independent list.* Use the Product ID (PID) to find the exact product variant on [sick.com](https://www.sick.com/): enter the part number (P/N) and optional serial number (S/N), for example `1134610/25250710`. A complete [pid.sick.com](https://pid.sick.com/) URL is also accepted.
pid.sick.com/

--- # LRS4000 API | REST | OpenAPI V1.10.0 > Download the LRS4000 V1.10.0 OpenAPI description and search REST endpoints, request parameters, and response schemas. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/ # API | REST | OpenAPI
![OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/assets/openapi-logo.png) This page provides the searchable V1.10.0 REST reference and downloadable OpenAPI description for LRS4000. For REST concepts, authentication, and request patterns, see [REST API / OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/).
[LRS4000_1.10.0.yaml (Download)](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/openapi/LRS4000_1.10.0.yaml) Always match the file to your device's actual firmware version. Function availability can vary by variant and installed software package. ### 1 - General #### [POST /SetPassword](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-setpassword) Sets the password for the CoLa A/B interface. In this example the password for userlevel service (4) is set to - test - (Integer value of the password hash - test -). For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "siUserLevel": 4, "udiNewPassword": 3410122659 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "siUserLevel": 4, "udiNewPassword": 3410122659 } ``` | `siUserLevel` | **Type:** integer · **Format:** int8 | | --- | --- | | `udiNewPassword` | **Type:** integer · **Format:** uint32 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `bSuccess` **Type:** boolean · **Default:** false | #### [POST /getChallenge](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-getchallenge) Returns a challenge for the challenge and response authentication method. For more details see https://github.com/SICKAG/sick_scan_rest_client **JSON example** ```json { "data": { "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `user` **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-e-user-level-type) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `challenge` | | `realm` | **Type:** string · **Default:** | | `nonce` | **Type:** string · **Default:** | | `opaque` | **Type:** string · **Default:** | | `salt` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** integer | | #### [POST /changePassword](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-changepassword) Sets the password for the REST interface. For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "encryptedMessage": [], "userLevel": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `encryptedMessage` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 96 **Items:** **Type:** integer · **Format:** uint8 | | --- | --- | | `userLevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-e-user-level-type) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED * 4 - PWD_NOT_CHANGABLE * 5 - TIMELOCK_ACTIVE | #### [POST /WriteEeprom](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-writeeeprom) Saves all parameters permanently. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [POST /SoftReset](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-softreset) Reboots the device. All non-saved parameters are lost. This function requires the user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ProcessorNbr": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ProcessorNbr` **Type:** integer · **Format:** uint16 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /RebootDevice](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-rebootdevice) Reboots the device and includes saving of all parameters. This function requires the user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /LoadFactoryDefaults](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-loadfactorydefaults) Resets all parameters to default. This function requires the user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /LoadApplicationDefaults](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-loadapplicationdefaults) Resets only the user parametrization of the fields, evaluation cases, and parameters under the section Application. Other parameters like interface settings, echo filter, etc. remain unchanged. This function requires the user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 2 - Status #### [GET /DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-devicestatus) Returns the device state (9 possible states). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceStatus` **Fields:** [DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-devicestatus) | #### [GET /SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-scdevicestate) Returns the device state (busy, ready, or error). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SCdevicestate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SCdevicestate` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Busy * 1 - Ready * 2 - Error | ### 3 - Device #### [GET /DeviceIdent](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-deviceident) Returns the device name and firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceIdent" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Name` | **Type:** string · **Default:** LRSNAV · **Maximum length:** 20 | | `Version` | **Type:** string · **Default:** 1.10.0.0R · **Maximum length:** 32 | | #### [GET /LocationName](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-locationname) Returns/sets the device name. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LocationName" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 16 | #### [POST /LocationName](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-locationname) Returns/sets the device name. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LocationName": "not defined" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 16 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /SerialNumber](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-serialnumber) Returns the serial number. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SerialNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SerialNumber` **Type:** string · **Default:** 12345678 · **Maximum length:** 8 | #### [GET /FirmwareVersion](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-firmwareversion) Returns the current firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FirmwareVersion" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FirmwareVersion` **Type:** string · **Default:** x.x.x.x · **Maximum length:** 32 | #### [POST /FindMe](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-findme) Sets the device LEDs into blinking mode for better identification. **JSON example** ```json { "data": { "uiDuration": 100 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "uiDuration": 100 } ``` `uiDuration` **Type:** integer · **Format:** uint16 **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /OrderNumber](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-ordernumber) Returns the order number (SICK part number). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OrderNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `OrderNumber` **Type:** string · **Default:** 1234567 · **Maximum length:** 32 | #### [GET /DeviceType](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-devicetype) Returns the device type. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceType` **Type:** string · **Default:** LRSNAV · **Maximum length:** 18 | ### 4 - Basic settings #### [GET /ScanConfig](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-scanconfig) Configuration of angular resolution, scanning frequency, start- and stop angle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `udiScanFreq` | **Type:** integer · **Format:** uint32 · **Default:** 1250 · **Minimum:** 500 · **Maximum:** 2500 | | `ScanRange` | | `uiLength` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 1 | | `aRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiAngleRes` | **Type:** integer · **Format:** uint32 · **Default:** 1200 · **Minimum:** 200 · **Maximum:** 5000 | | `diStartAngle` | **Type:** integer · **Format:** int32 · **Default:** -1800000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `diStopAngle` | **Type:** integer · **Format:** int32 · **Default:** 1800000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | | | #### [GET /SensitivityMode](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-sensitivitymode) The sensitivity mode can be used to adjust the detection behavior. A higher sensitivity increases the scanning range. This setting should only be used when there is no direct sunlight and only low ambient light. A higher sensitivity increases the proneness to measurement noise and data loss. Ambient light can negatively affect the signal quality and impair the measurement performance. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensitivityMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SensitivityMode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NORMAL * 1 - INCREASED * 2 - HIGHEST | #### [POST /SensitivityMode](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-sensitivitymode) The sensitivity mode can be used to adjust the detection behavior. A higher sensitivity increases the scanning range. This setting should only be used when there is no direct sunlight and only low ambient light. A higher sensitivity increases the proneness to measurement noise and data loss. Ambient light can negatively affect the signal quality and impair the measurement performance. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "SensitivityMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `SensitivityMode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NORMAL * 1 - INCREASED * 2 - HIGHEST | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /SetScanConfigList](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-setscanconfiglist) Set a new device scan resolution/frequency combination. Please note that configurations, starting with value 3x or 9x switch the device from standard to extended range mode and values starting with x, 1x, 6x, 7x switch the device from extended range to normal mode. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanConfigList": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "ScanConfigList": 1 } ``` `ScanConfigList` **Fields:** [PerformanceProfiles_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-performanceprofiles-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `eScanConfigError` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SCE_OK * 1 - SCE_ERROR_FREQ * 2 - SCE_ERROR_RES * 3 - SCE_ERROR_FREQ_RES_COMB * 4 - SCE_ERROR_NUM_RANGE * 5 - SCE_ERROR | #### [GET /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-ledenable) Returns/sets the LED mode (on/off). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | #### [POST /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-ledenable) Returns/sets the LED mode (on/off). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LEDEnable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /mStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-mstartmeasure) Start motor, measurement and laser. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStandby](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-mstandby) Disable the laser. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 5 - Date and system time #### [GET /DeviceTime](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-devicetime) Returns the current time of the internal clock (ms). The timer is 32 bit counter with a resolution of 1 ms. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceTime` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-tscrole) Returns/sets the time synchronization role (none = 0 , NTP = 1 or PTP = 3). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCRole" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE * 4 - TX_PTP_MASTER | #### [POST /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-tscrole) Returns/sets the time synchronization role (none = 0 , NTP = 1 or PTP = 3). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCRole": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE * 4 - TX_PTP_MASTER | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-tsctcsrvaddr) Returns/sets the NTP time server's IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCSrvAddr" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-tsctcsrvaddr) Returns/sets the NTP time server's IP address. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCSrvAddr": [ 192, 168, 0, 11 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-tsctctimezone) Returns/sets the NTP time zone. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCtimezone" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - AMMAN * 43 - ATHEN_BUKAREST * 44 - BEIRUT * 45 - DAMASCUS * 46 - HARARE_PRETORIA * 47 - HELSINKI_KIEW_RIGA * 48 - ISTANBUL * 49 - JERUSALEM * 50 - KAIRO * 51 - KALININGRAD * 52 - EASTERN_EUROPE * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | #### [POST /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-tsctctimezone) Returns/sets the NTP time zone. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCtimezone": 36 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - AMMAN * 43 - ATHEN_BUKAREST * 44 - BEIRUT * 45 - DAMASCUS * 46 - HARARE_PRETORIA * 47 - HELSINKI_KIEW_RIGA * 48 - ISTANBUL * 49 - JERUSALEM * 50 - KAIRO * 51 - KALININGRAD * 52 - EASTERN_EUROPE * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-tsctcupdatetime) Returns/sets the NTP update time. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCupdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Format:** uint32 · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | #### [POST /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-tsctcupdatetime) Returns/sets the NTP update time. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCupdatetime": 600 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Format:** uint32 · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /DateTime](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-datetime) Returns the current time of the device (years, months, days, hours, minutes, seconds, microseconds). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DateTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-datetime-t) | #### [POST /mSetDateTime](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-msetdatetime) Sets the time of the device (years, months, days, hours, minutes, seconds, microseconds). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DateTime": { "uiYear": 0, "usiMonth": 1, "usiDay": 1, "usiHour": 0, "usiMinute": 0, "usiSec": 0, "udiUSec": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-datetime-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 6 - Filter #### [GET /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment the sensor receives several measurement points on the same angular step (multi-echo). The filter can filter out the first echo, the last echo or all echoes. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FREchoFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO | #### [POST /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment the sensor receives several measurement points on the same angular step (multi-echo). The filter can filter out the first echo, the last echo or all echoes. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "FREchoFilter": 2 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /ParticleFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-particlefilter) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimal threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ParticleFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Format:** uint16 · **Default:** 1000 · **Minimum:** 500 · **Maximum:** 5000 | | #### [POST /ParticleFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-particlefilter) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimal threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ParticleFilter": { "bEnable": false, "uiThreshold": 1000 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ParticleFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Format:** uint16 · **Default:** 1000 · **Minimum:** 500 · **Maximum:** 5000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /MeanFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-meanfilter) Returns/sets the mean filter settings. This filter smooths the distance value by calculating the arithmetic mean from the configured number of scans. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/MeanFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiScanNumber` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 2 · **Maximum:** 100 | | `eFilterMethod` | **Allowed values:** ``` [ 0 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ARITHMETIC | | #### [POST /MeanFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-meanfilter) Returns/sets the mean filter settings. This filter smooths the distance value by calculating the arithmetic mean from the configured number of scans. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "MeanFilter": { "bEnable": false, "uiScanNumber": 10, "eFilterMethod": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `MeanFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiScanNumber` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 2 · **Maximum:** 100 | | `eFilterMethod` | **Allowed values:** ``` [ 0 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ARITHMETIC | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /LFPmedianfilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-lfpmedianfilter) Returns/sets the median filter settings. This filter smooths the distance values by transmitting just the median value of the last X scans. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPmedianfilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiMedianWidth` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 3 · **Maximum:** 3 | | #### [POST /LFPmedianfilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-lfpmedianfilter) Returns/sets the median filter settings. This filter smooths the distance values by transmitting just the median value of the last X scans. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPmedianfilter": { "bEnable": false, "uiMedianWidth": 3 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPmedianfilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiMedianWidth` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 3 · **Maximum:** 3 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 7 - Contamination indication #### [GET /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-contaminationconfig) Returns/sets of the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 0 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 255, 128, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 255 - CM_COVER_CUSTOM_SECTORS * 128 - CM_COVER_REAR_MOUNTING_BRACKETS * 1 - CM_COVER_210_NO_FLAPS * 2 - CM_COVER_210_FLAP_LEFT * 3 - CM_COVER_210_FLAP_RIGTH * 4 - CM_COVER_210_BOTH_FLAPS * 5 - CM_COVER_275 | | `CustomSectors` | **Type:** array · **Minimum items:** 12 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** false | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | #### [POST /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-contaminationconfig) Returns/sets of the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ContaminationConfig": { "eStrategy": 0, "usiResponseTime": 3, "eThreshold": 1, "eCover": 0, "CustomSectors": [ false ], "bEnableWarning": true, "bEnableError": true } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ContaminationConfig` | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 0 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 255, 128, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 255 - CM_COVER_CUSTOM_SECTORS * 128 - CM_COVER_REAR_MOUNTING_BRACKETS * 1 - CM_COVER_210_NO_FLAPS * 2 - CM_COVER_210_FLAP_LEFT * 3 - CM_COVER_210_FLAP_RIGTH * 4 - CM_COVER_210_BOTH_FLAPS * 5 - CM_COVER_275 | | `CustomSectors` | **Type:** array · **Minimum items:** 12 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** false | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /ContaminationData](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-contaminationdata) Returns the contamination state of all contamination sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationData" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ContaminationData` **Type:** array · **Minimum items:** 12 · **Maximum items:** 12 **Items:** **Fields:** [ContaminationData_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-contaminationdata-t) | #### [GET /ContaminationActiveSectors](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-contaminationactivesectors) Returns the active contamination sectors. Starts with right backside of the sensor when looking to the device on topside view and continues counterclockwise. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationActiveSectors" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ContaminationActiveSectors` **Type:** array · **Minimum items:** 12 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** false | #### [GET /ContaminationResult](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-contaminationresult) Returns the contamination indication state of the device. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `warningActive` | **Type:** boolean · **Default:** false | | `errorActive` | **Type:** boolean · **Default:** false | | ### 8 - Ethernet #### [GET /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheripaddress) Returns/sets used static IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-etheripaddress) Returns/sets used static IP address. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPAddress": [ 192, 168, 0, 1 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheripgateaddress) Returns/sets default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-etheripgateaddress) Returns/sets default gateway address. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPGateAddress": [ 0, 0, 0, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheripmask) Returns/sets the subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMask" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-etheripmask) Returns/sets the subnet mask. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPMask": [ 255, 255, 255, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAddressingMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | #### [POST /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAddressingMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherDHCPFallback" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | #### [POST /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherDHCPFallback": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /EthernetUpdate](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-ethernetupdate) Applies the ethernet settings. This needs to be executed to actually change the ethernet settings. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheripaddressdhcp) Returns the assigned DHCP IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPAddressDHCP` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherIPGateAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheripgateaddressdhcp) Returns the assigned DHCP default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddressDHCP` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherIPMaskDHCP](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etheripmaskdhcp) Returns the assigned DHCP subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMaskDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPMaskDHCP` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherMACAddress](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-ethermacaddress) Returns the MAC address of the ethernet interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherMACAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherMACAddress` **Default:** ``` [ 0, 6, 119, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherColaTransmitTimeout](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-ethercolatransmittimeout) This parameter should only be changed in case the sensor is connected to a network where reconnections may be required caused by e.g. loose contact of the Ethernet cable. This command changes the Acknowledge timeout for TCP based CoLa protocols. Reducing the Acknowledge timeout allows a faster restart of data transmission after unwanted disconnects. In large networks with high amount of data traffic, a reduced Acknowledge timeout may lead to a port close, initiated by the sensor. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherColaTransmitTimeout": 15000 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherColaTransmitTimeout` **Type:** integer · **Format:** uint16 · **Default:** 15000 · **Minimum:** 250 · **Maximum:** 15000 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 9 - Legacy protocols #### [GET /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled CoLa A uses port 2111 and CoLa B uses 2112. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxEnabled" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | #### [POST /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled CoLa A uses port 2111 and CoLa B uses 2112. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAuxEnabled": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EnableColaScan](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-enablecolascan) Enables/disables the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EnableColaScan" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EnableColaScan` **Type:** boolean · **Default:** true | #### [POST /EnableColaScan](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-enablecolascan) Enables/disables the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EnableColaScan": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EnableColaScan` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 10 - Webserver settings #### [POST /SetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-setwebserverenabled) Sets availability of the webserver (reboot required). If disabled, the webserver-based GUI and the REST interface can not be used anymore. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Enable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `Enable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 11 - Inputs and outputs #### [GET /InputState](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-inputstate) Returns the state of all inputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aDigitalIn` | **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** `IOState` **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-iostate-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-datetime-t) | | #### [GET /OutputState](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-outputstate) Returns the state of all outputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OutputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aDigitalOut` | **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** | `IOState` | **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-iostate-t) | | `udiCounter` | **Type:** integer · **Format:** uint32 | | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-datetime-t) | | --- | --- | | #### [GET /PortState](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-portstate) Returns the state of the ports. PortState is preferred over OutputState. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aInternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 6 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-portstateandcounter-t) | | `aExternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 6 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-portstateandcounter-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-datetime-t) | | #### [POST /mResetOutputCounter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-mresetoutputcounter) Resets the counter for the outputs. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-portconfiguration) Returns/sets the port configuration of all I/Os. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-logic-t) | | `Debounce` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 5 · **Maximum:** 10000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved2` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Format:** uint32 · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved4` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `Reserved6` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | | `Reserved7` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | --- | --- | | `Reserved8` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved9` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved10` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | #### [POST /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-portconfiguration) Returns/sets the port configuration of all I/Os. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": [ { "PortType": 0, "Name": "InOut1", "InputSettings": { "Logic": 0, "Debounce": 5, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 1, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 1, "Name": "InOut2", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 1, "OutputMode": 2, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [ { "Name": "DRDY", "Invert": false, "Reserved5": 0, "Reserved6": 0 } ] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 1, "Name": "InOut3", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [ { "Name": "FE01", "Invert": false, "Reserved5": 0, "Reserved6": 0 } ] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 0, "Name": "InOut4", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 0, "Name": "InOut5", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 0, "Name": "InOut6", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 } ] } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` [ { "InputSettings": { "Debounce": 5, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut1", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut2", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 2, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut3", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "FE01", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut4", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut5", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut6", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 } ] ``` `PortConfiguration` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-logic-t) | | `Debounce` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 5 · **Maximum:** 10000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved2` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Format:** uint32 · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved4` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `Reserved6` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | | `Reserved7` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | --- | --- | | `Reserved8` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved9` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved10` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /SetOutput](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-setoutput) Sets the output state for an individual output. Precondition: output source set to SOPAS command. **Editable JSON template** ```json { "data": { "Output": "", "Value": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `Output` | **Type:** integer · **Format:** uint8 | | --- | --- | | `Value` | **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | ### 12 - Data output #### [GET /DataOutputRange](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-dataoutputrange) Select the start and stop angle of the measurement data output for the currently active configuration. Once a valid configuration is set, the device will transmit valid distance values between the selected start and stop angle and for all other angles zero values. The amount of transmitted data will not be reduced by using this function. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DataOutputRange" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiLength` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 1 | | `aRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiAngleRes` | **Type:** integer · **Format:** uint32 · **Default:** 1200 · **Minimum:** 200 · **Maximum:** 4800 | | `diStartAngle` | **Type:** integer · **Format:** int32 · **Default:** -1800000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `diStopAngle` | **Type:** integer · **Format:** int32 · **Default:** 1800000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | | #### [POST /DataOutputRange](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-dataoutputrange) Select the start and stop angle of the measurement data output for the currently active configuration. Once a valid configuration is set, the device will transmit valid distance values between the selected start and stop angle and for all other angles zero values. The amount of transmitted data will not be reduced by using this function. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DataOutputRange": { "uiLength": 1, "aRange": [ { "udiAngleRes": 1200, "diStartAngle": -1800000, "diStopAngle": 1800000 } ] } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `DataOutputRange` | `uiLength` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 1 | | `aRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiAngleRes` | **Type:** integer · **Format:** uint32 · **Default:** 1200 · **Minimum:** 200 · **Maximum:** 4800 | | `diStartAngle` | **Type:** integer · **Format:** int32 · **Default:** -1800000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `diStopAngle` | **Type:** integer · **Format:** int32 · **Default:** 1800000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /ScanDataScaleFactor](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-scandatascalefactor) Configure the scaling factor for distance measurements when LMDscandata or Compact is selected as the data output format. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataScaleFactor" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ScanDataScaleFactor` **Type:** number · **Format:** float · **Default:** 1.0 · **Minimum:** 0.1 · **Maximum:** 16.0 | #### [POST /ScanDataScaleFactor](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-scandatascalefactor) Configure the scaling factor for distance measurements when LMDscandata or Compact is selected as the data output format. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataScaleFactor": 1.0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanDataScaleFactor` **Type:** number · **Format:** float · **Default:** 1.0 · **Minimum:** 0.1 · **Maximum:** 16.0 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-scandataformat) Returns/sets the scan data format (e.g. Compact format) or disable scan data transmission. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataFormat" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 0, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - Deactivated * 2 - Compact * 3 - LMDscandata | #### [POST /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-scandataformat) Returns/sets the scan data format (e.g. Compact format) or disable scan data transmission. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataFormat": 3 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 0, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - Deactivated * 2 - Compact * 3 - LMDscandata | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 13 - IMU data output #### [POST /EnableInertialMeasurementUnit](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-enableinertialmeasurementunit) Enables/Disables IMU data streaming output on CoLa A/B protocol. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EnableInertialMeasurementUnit": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EnableInertialMeasurementUnit` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /InertialMeasurementUnit](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-inertialmeasurementunit) Returns the current IMU data (e.g. Acceleration, Orientation, ... ). The data is given in the following coordinate system which is based on the DIN70000 system: The x-axis lies on the 90 degree beam of the 0 degree layer. The y-axis is perpendicular to the x-axis and lies in the 0 degree layer. The y-values are rising in the counterclockwise rotation direction (right-handed system). The z-axis is perpendicular to the x-y-plane and the scanner top points to rising z-values. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InertialMeasurementUnit" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Acceleration` | **Type:** array · **Minimum items:** 3 · **Maximum items:** 3 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `AngularVelocity` | **Type:** array · **Minimum items:** 3 · **Maximum items:** 3 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `MagneticField` | **Type:** array · **Minimum items:** 3 · **Maximum items:** 3 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `Orientation` | **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `TimeStamp` | **Type:** integer · **Format:** uint32 · **Default:** 0 | | ### 14 - Region of interest #### [GET /LFPradialDistanceRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-lfpradialdistancerangefilter) Returns/sets the scanning range filter settings. Restriction of the distance measurements to a specified distance range. Measurement distances outside of the specified distance are assigned the distance and RSSI value 0. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPradialDistanceRangeFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `ulDistMin` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 300000 | | `ulDistMax` | **Type:** integer · **Format:** int32 · **Default:** 200000 · **Minimum:** 0 · **Maximum:** 300000 | | #### [POST /LFPradialDistanceRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-lfpradialdistancerangefilter) Returns/sets the scanning range filter settings. Restriction of the distance measurements to a specified distance range. Measurement distances outside of the specified distance are assigned the distance and RSSI value 0. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPradialDistanceRangeFilter": { "bEnable": false, "ulDistMin": 0, "ulDistMax": 200000 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPradialDistanceRangeFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `ulDistMin` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 300000 | | `ulDistMax` | **Type:** integer · **Format:** int32 · **Default:** 200000 · **Minimum:** 0 · **Maximum:** 300000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 15 - Field evaluation #### [GET /FieldEvaluationResult](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-fieldevaluationresult) Returns the state of all possible fields. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationResult` **Fields:** [FieldEvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-fieldevaluationresult-t) | #### [POST /ActivateEvaluationGroup](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-activateevaluationgroup) Sets the activation condition for all existing evaluation groups, when activation is set to Telegram. **JSON example** ```json { "data": { "List": [ { "GroupId": 1, "Activate": true }, { "GroupId": 2, "Activate": false }, { "GroupId": 3, "Activate": true } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "List": [ { "Activate": true, "GroupId": 1 }, { "Activate": false, "GroupId": 2 }, { "Activate": true, "GroupId": 3 } ] } ``` `List` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `GroupId` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | | `Activate` | **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** false | #### [POST /SetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-setfieldevaluationcontour) Sets the contour of an existing field. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationId": 1, "LowerZLimit": 0, "UpperZLimit": 0, "Points": [ { "x": 0, "y": -1000 }, { "x": 1000, "y": -1000 }, { "x": 1000, "y": 1000 }, { "x": 0, "y": 1000 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1, "LowerZLimit": 0, "Points": [ { "x": 0, "y": -1000 }, { "x": 1000, "y": -1000 }, { "x": 1000, "y": 1000 }, { "x": 0, "y": 1000 } ], "UpperZLimit": 0 } ``` | `EvaluationId` | **Type:** integer · **Format:** uint16 | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_POLYGON * 3 - SOPAS_ERR_INVALID_ZLIM | #### [POST /GetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-getfieldevaluationcontour) Returns the contour of an existing field. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationId": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EvaluationId` **Type:** integer · **Format:** uint16 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Contour` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer · **Format:** uint16 | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | #### [GET /EvaluationGroupType](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-evaluationgrouptype) Reads the evaluation group type whether it's a field evaluation or perpendicular distance. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationGroupType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EvaluationGroupType` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - FIELD_EVALUATION * 1 - PERPENDICULAR_DISTANCE | #### [POST /EvaluationGroupType](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-evaluationgrouptype) Reads the evaluation group type whether it's a field evaluation or perpendicular distance. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationGroupType": [ 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EvaluationGroupType` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - FIELD_EVALUATION * 1 - PERPENDICULAR_DISTANCE | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /FieldEvaluationGroupState](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-fieldevaluationgroupstate) Returns the activation condition for all existing evaluation groups (not configured, active, or inactive). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationGroupState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationGroupState` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - ACTIVE * 2 - INACTIVE | #### [GET /FieldEvaluationApplicationState](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-fieldevaluationapplicationstate) Get the field evaluation application state. It returns the information whether the field evaluation application is active, configuring or deactivated. 0 - Deactivated - no evaluation is set up. 1 - Activated - at least one active evaluation (group activation has no influence on that). 2 - Configuring - new calculation of the e.g. field geometries. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationApplicationState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationApplicationState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - DEACTIVATED * 1 - ACTIVE * 2 - CONFIGURING * 3 - ERROR | #### [POST /StartTeachIn](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-startteachin) Starts the teach in process. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /StopTeachIn](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-stopteachin) Stops the teach in process. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /perpendicularDistanceResult](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-perpendiculardistanceresult) Returns the perpendicular distance within a field. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/perpendicularDistanceResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `timestamp` | **Type:** integer · **Format:** uint64 | | `evaluations` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `evaluationId` | **Type:** integer · **Format:** uint16 | | `minimumDistance` | **Type:** integer · **Format:** int32 | | `maximumDistance` | **Type:** integer · **Format:** int32 | | `minimumDistancePosition` | **Fields:** [Point3d_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-point3d-t) | | `maximumDistancePosition` | **Fields:** [Point3d_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-point3d-t) | | | ### 16 - Operating data #### [GET /LastParaDate](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-lastparadate) Returns the last date (e.g. 12.11.2024) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaDate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LastParaDate` **Type:** string · **Default:** DD.MM.YYYY · **Maximum length:** 10 | #### [GET /LastParaTime](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-lastparatime) Returns the last time (e.g. 13:24) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LastParaTime` **Type:** string · **Default:** HH:MM · **Maximum length:** 5 | #### [GET /PowerOnCnt](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-poweroncnt) Returns the number of power on cycles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PowerOnCnt" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PowerOnCnt` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /DailyOpHours](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-dailyophours) Returns the runtime duration since the last power on (non-persistent). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DailyOpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DailyOpHours` **Type:** number · **Format:** float · **Default:** 0.0 | #### [GET /OpHours](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-ophours) Returns the total number of operating hours during the lifetime of the device. The resolution is a 1/10 hour. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `OpHours` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /CurrentTempDev](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-currenttempdev) Returns the current device temperature. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CurrentTempDev" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `CurrentTempDev` **Type:** number · **Format:** float · **Default:** 20.0 | ### 17 - 3D scan recording #### [POST /ScanMergerEnabled](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-scanmergerenabled) Enable/ disable the Scan Merger functionality. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanMergerEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanMergerEnabled` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /ScanMergerSource](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-scanmergersource) Select the source of the rotation that should be used to create the 3D point cloud. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanMergerSource": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanMergerSource` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - IMU * 1 - ENCODER | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /ScanMergeTrigger](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-scanmergetrigger) Select a trigger for the Scan Merger functionality. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanMergeTrigger": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanMergeTrigger` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - METHOD * 1 - DIGITAL_INPUT | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /RotationOffset](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-rotationoffset) Read/Write the current rotation offset of the scan merge in x, y and z direction in mm. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/RotationOffset" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | #### [POST /RotationOffset](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-rotationoffset) Read/Write the current rotation offset of the scan merge in x, y and z direction in mm. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "RotationOffset": { "x": 0, "y": 0, "z": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `RotationOffset` | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /EncoderTransformationType](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-encodertransformationtype) Select the Encoder type that is used to create the scan merge when the Scan Merger source is set to Encoder. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderTransformationType": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EncoderTransformationType` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ROTATION * 1 - TRANSLATION | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /EncoderRotation](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-encoderrotation) Set the start orientation when the encoder transformation type is set to rotation. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderRotation": { "yaw": 0, "pitch": 0, "roll": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EncoderRotation` | `yaw` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /EncoderTranslation](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-encodertranslation) Set the start orientation when the encoder transformation type is set to translation. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderTranslation": { "x": 0, "y": 0, "z": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EncoderTranslation` | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /StartScanMerge](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-startscanmerge) Start the recording of a scan merge when the Scan Merger functionality is enabled. The recording time is limited to 15 or 30 seconds, depending on the selected scan configuration. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /StopScanMerge](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-stopscanmerge) Stop the recording of a running scan merge. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 18 - Motor synchronization #### [POST /SyncMode](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-syncmode) synchronisation mode e.g. no synchronisation, hardware synchronisation, CAN synchronisation or CLOCK synchronisation (LRS4000 only supports Clock-Sync and wire sync). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "SyncMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `SyncMode` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NO_SYNC * 1 - SYNC_BY_WIRE * 3 - SYNC_BY_CLOCK | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /SyncPhase](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-syncphase) synchronisation phase difference between master and slave. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "SyncPhase": 180 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `SyncPhase` **Type:** integer · **Format:** int16 · **Default:** 180 · **Minimum:** -180 · **Maximum:** 180 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /MotorSyncStatus](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-motorsyncstatus) Check if PTP master and slave are synced. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/MotorSyncStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `MotorSyncStatus` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NO_CLOCK_AND_ROT_SYNC * 1 - ONLY_TIME_SYNCED * 2 - SYNCED | ### 19- Encoder #### [POST /EncSetting](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-encsetting) Select the encoder type. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncSetting": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EncSetting` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_OFF * 1 - TX_INCREMENT1 * 2 - TX_DIR_PHASE12 * 3 - TX_DIR_LEVEL12 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /EncResolution](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-encresolution) Set the encoder resolution in mm/Inc. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncResolution": 10 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EncResolution` **Type:** number · **Format:** float · **Default:** 10 · **Minimum:** 0.001 · **Maximum:** 2000 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /ActualEncSpeed](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-actualencspeed) Read encoder speed in m/s. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ActualEncSpeed" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ActualEncSpeed` **Type:** number · **Format:** float | ### 20-Diagnostic file #### [POST /DoDiagnosisDump](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-dodiagnosisdump) Creates a diagnostic file (zip file) for further analysis. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DoRunlevelLoop": true, "Output": "file" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "DoRunlevelLoop": true, "Output": "file" } ``` | `DoRunlevelLoop` | **Type:** boolean · **Default:** false | | `Output` | **Type:** string · **Default:** · **Maximum length:** 64 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Successful` **Type:** boolean · **Default:** false | #### [POST /GetDiagnosisDumpInfo](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-getdiagnosisdumpinfo) Returns additional meta-information about the diagnostic file. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `DiagDumpExists` | **Type:** boolean · **Default:** false | | `DiagDumpTimestamp` | **Type:** integer · **Format:** uint32 | | ### 21 - Detection History #### [GET /EnableDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-enabledetectionhistory) Returns/sets the detection history. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EnableDetectionHistory" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EnableDetectionHistory` **Type:** boolean · **Default:** true | #### [POST /EnableDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-enabledetectionhistory) Returns/sets the detection history. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EnableDetectionHistory": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EnableDetectionHistory` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [GET /EvaluationsToLog](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-evaluationstolog) Returns/sets the evaluations which are logged (if they are in use). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationsToLog" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EvaluationsToLog` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** true | #### [POST /EvaluationsToLog](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-evaluationstolog) Returns/sets the evaluations which are logged (if they are in use). **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationsToLog": [ true ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EvaluationsToLog` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) #### [POST /ResetDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-post-resetdetectionhistory) Resets the detection history logs. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) ### 22 - Cybersecurity #### [GET /httpsStatus](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-httpsstatus) Returns the status of the HTTPS interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/httpsStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `enabled` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-httpserror-t) | | #### [GET /certificateBundleInfo](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#rest-get-certificatebundleinfo) Returns information about the uploaded certificate bundle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/certificateBundleInfo" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uuidBundle` | **Type:** string · **Default:** · **Maximum length:** 100 | | `certificates` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** | `names` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** `entry` **Type:** string · **Default:** · **Maximum length:** 1000 | | `issuer` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `subject` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `serialNumber` | **Type:** string · **Default:** · **Maximum length:** 119 | | `fingerprint` | **Type:** string · **Default:** · **Maximum length:** 119 | | `validNotBefore` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | `validNotAfter` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-httpserror-t) | | --- | --- | | ### Shared request and response fields #### ResponseHeader | `status` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - Ok * 1 - Parsing Failed * 2 - Invalid Data * 3 - Internal Server Error * 4 - Access Denied * 5 - Not Found * 6 - Out Of Range * 7 - Out Of Bounds * 8 - Read Only * 9 - Illegal Value * 10 - Invalid Challenge * 11 - Out Of Connections | | --- | --- | | `message` | **Type:** string · **Default:** Ok | #### PostBodyHeader | `nonce` | **Type:** string · **Default:** | | --- | --- | | `opaque` | **Type:** string · **Default:** | | `realm` | **Type:** string · **Default:** SICK Sensor | | `response` | **Type:** string · **Default:** | | `user` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-e-user-level-type) | #### E_USER_LEVEL_TYPE **Allowed values:** ``` [ "Run", "Operator", "Maintenance", "AuthorizedClient", "Service" ] ``` **Type:** string · **Default:** Run #### DeviceStatus **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - DS_UnknownState * 1 - DS_Startup * 2 - DS_ServiceMode * 3 - DS_NormalOperation * 4 - DS_SuspendedOperation * 5 - DS_ServiceRecommended * 6 - DS_ServiceRequired * 7 - DS_RecoverableError * 8 - DS_FatalError #### httpsError_t `error` **Type:** string · **Default:** · **Maximum length:** 100 #### DateTime_t | `uiYear` | **Type:** integer · **Format:** uint16 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 2105 | | --- | --- | | `usiMonth` | **Type:** integer · **Format:** uint8 · **Default:** 1 · **Minimum:** 0 · **Maximum:** 12 | | `usiDay` | **Type:** integer · **Format:** uint8 · **Default:** 1 · **Minimum:** 0 · **Maximum:** 31 | | `usiHour` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 23 | | `usiMinute` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `usiSec` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `udiUSec` | **Type:** integer · **Format:** uint32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 999999 | #### IOState_t `eIOState` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - IOS_LOW * 1 - IOS_HIGH * 2 - IOS_TRISTATE #### ContaminationData_t **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - CLEAN * 1 - WARN * 2 - ERROR * 3 - NONE #### PerformanceProfiles_t **Allowed values:** ``` [ 0, 11, 21, 1, 2, 4, 5, 71, 81, 61, 62, 64, 65, 31, 32, 33, 35, 91, 92, 93, 95 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INVALID * 11 - SC_125HZ_0020DEG_m180_180_2Overlap * 21 - SC_125HZ_0020DEG_m180_180_2IL * 1 - SC_125HZ_0040DEG_m180_180_noIL * 2 - SC_125HZ_0060DEG_m180_180_noIL * 4 - SC_125HZ_0100DEG_m180_180_noIL * 5 - SC_125HZ_0120DEG_m180_180_noIL * 71 - SC_250HZ_0040DEG_m180_180_2Overlap * 81 - SC_250HZ_0040DEG_m180_180_2IL * 61 - SC_250HZ_0080DEG_m180_180_noIL * 62 - SC_250HZ_0120DEG_m180_180_noIL * 64 - SC_250HZ_0200DEG_m180_180_noIL * 65 - SC_250HZ_0240DEG_m180_180_noIL * 31 - SC_125HZ_0240DEG_m180_180_noIL_XR * 32 - SC_125HZ_0120DEG_m180_180_2Overlap_XR * 33 - SC_125HZ_0080DEG_m180_180_3Overlap_XR * 35 - SC_125HZ_0040DEG_m180_180_3Overlap_2IL_XR * 91 - SC_250HZ_0480DEG_m180_180_noIL_XR * 92 - SC_250HZ_0240DEG_m180_180_2Overlap_XR * 93 - SC_250HZ_0160DEG_m180_180_3Overlap_XR * 95 - SC_250HZ_0080DEG_m180_180_3Overlap_2IL_XR #### Logic_t **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ACTIVE_HIGH * 1 - ACTIVE_LOW #### PortStateAndCounter_t | `ePortState` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - OUTPUT_NOT_ACTIVE * 1 - OUTPUT_ACTIVE * 2 - TRISTATE * 3 - INPUT_ACTIVE * 4 - INPUT_NOT_ACTIVE | | --- | --- | | `PortCounter` | **Type:** integer · **Format:** uint32 | #### Point2d_t | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 | | --- | --- | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 | #### EvaluationResult_t | `State` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - INACTIVE * 2 - FREE * 3 - DETECTING_INFRINGED * 4 - INFRINGED * 5 - DETECTING_FREE | | --- | --- | | `Positions` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [Point2d_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-point2d-t) | #### FieldEvaluationResult_t | `Version` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | --- | --- | | `Timestamp` | **Type:** integer · **Format:** uint64 | | `EvaluationResultList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Fields:** [EvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/#schema-evaluationresult-t) | #### Point3d_t | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | | --- | --- | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | --- # LRS4000 API | CoLa Telegrams (CoLa A and CoLa B) > LRS4000 CoLa telegram reference with sRN, sWN, sMN, and sEN commands, parameter structures, and CoLa A and CoLa B examples. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/ # API | CoLa Telegrams This reference lists the CoLa telegrams supported by the LRS4000. Use the command details to build or troubleshoot PLC and other low-level integrations without guessing the telegram structure. For connection setup, framing, and log in, see [CoLa Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/). Entries follow the telegram order in the LRS4000 operating instructions. Detailed entries list request and response structures, examples, variable types, lengths, and CoLa A and CoLa B values where applicable. Every entry uses the same layout, as in the first entry, [Log In](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/#log-in-smn-setaccessmode): a telegram structure table with the variable type, length, and the values in CoLa A and CoLa B, followed by examples that you can copy. Examples are grouped by protocol, with each telegram representation in a separate code block and its own copy button. Categories follow the [LRS4000 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) where corresponding CoLa telegrams are available. Select a telegram to expand its structure and examples. A direct link to a telegram opens it automatically. The categories organize the reference; availability still depends on the device variant, firmware, and installed software packages.
## General
### Log In [sMN SetAccessMode] The password hashes of the default passwords are documented in the operating instructions (PDF) of your device. Do not pass them on, and change the passwords during commissioning. A log in to the device is necessary to change parameters. In most cases, the user level 'Authorized client' is needed. Changed parameters are reset to the previous state via a reboot unless they are saved. To save parameter changes, send "sMN mEEwriteall" before logging out. **Telegram structure: sMN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ---------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | User level | Select user level | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value for the selected user level | Uint_32 | 4 | Maintenance:
Authorized client:
Service: | `` | `` | **Example: sMN SetAccessMode - Log in as “Authorized client”** **CoLa A (ASCII)** ```text sMN{SPC}SetAccessMode{SPC}3{SPC} ``` ```text sMN SetAccessMode 3 ``` ```text sMN SetAccessMode 3 ``` **Telegram structure: sAN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | Change user level | Changed level | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN SetAccessMode** **CoLa A (ASCII)** ```text sAN{SPC}SetAccessMode{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 01 38 ```
### Load Factory Defaults [sMN mSCloadfacdef] The Factory-Reset (Load factory defaults) deletes the entire parametrization of the device. All parameters, settings and system applications will be set to default. **Telegram structure: sMN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` | **Example: sMN mSCloadfacdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadfacdef ``` ```text sMN mSCloadfacdef ``` ```text sMN mSCloadfacdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 28 ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 ``` **Telegram structure: sAN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` |
### Load Application Defaults [sMN mSCloadappdef] The Application-Reset (Load application defaults) deletes only the user parametrization of the Fields, Evaluation cases (EVC) and parameters under the header “Application”. Other parameters like Interface settings, Echo Filter, etc. remain unaffected. **Telegram structure: sMN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sMN mSCloadappdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadappdef ``` ```text sMN mSCloadappdef ``` ```text sMN mSCloadappdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 2D ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 ``` **Telegram structure: sAN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sAN mSCloadappdef** **CoLa A (ASCII)** ```text sAN{SPC}mSCloadappdef ``` ```text 02 73 41 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 20 01 ```
### Check Password [sMN CheckPassword] Check the password for a specific user level, e.g. to verify if it has been changed correctly. **Telegram structure: sMN CheckPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ---------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Check password request | String | 13 | | `CheckPassword` | `43 68 65 63 6B 50 61 73 73 77 6F 72 64` | | User level | User level to check the password for | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value of the password to be checked | Uint_32 | 4 | | `` | | Check password “testtest” for 'Authorized client'. **Example: sMN CheckPassword** **CoLa A (ASCII)** ```text sMN{SPC}CheckPassword{SPC}3{SPC}1920E4C9 ``` ```text sMN CheckPassword 3 1920E4C9 ``` ```text sMN CheckPassword 3 1920E4C9 ``` ```text 02 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 33 20 31 39 32 30 45 34 43 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 1E ``` ```text 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 ``` **Telegram structure: sAN CheckPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ------------------- | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Check password request | String | 13 | | `CheckPassword` | `43 68 65 63 6B 50 61 73 73 77 6F 72 64` | | Success | Confirmation | Int_8 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN CheckPassword** **CoLa A (ASCII)** ```text sAN{SPC}CheckPassword{SPC}1 ``` ```text 02 73 41 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 01 04 ```
### Save Parameters Permanently [sMN mEEwriteall] Save all parameter changes of the device. Must be sent before logging off and/ or hardware rebooting of the device. Else all changes will be lost. **Telegram structure: sMN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | **Example: sMN mEEwriteall** **CoLa A (ASCII)** ```text sMN{SPC}mEEwriteall ``` ```text sMN mEEwriteall ``` ```text sMN mEEwriteall ``` ```text 02 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 21 ``` ```text 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C ``` **Telegram structure: sAN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mEEwriteall** **CoLa A (ASCII)** ```text sAN{SPC}mEEwriteall{SPC}1 ``` ```text 02 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 01 0C ```
### Set to Run [sMN Run] Log out from device and activate all parameter changes. **Telegram structure: sMN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ---------------------------------- | --------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | **Example: sMN Run** **CoLa A (ASCII)** ```text sMN{SPC}Run ``` ```text sMN Run ``` ```text sMN Run ``` ```text 02 73 4D 4E 20 52 75 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 07 73 4D 4E 20 52 75 6E 19 ``` ```text 73 4D 4E 20 52 75 6E ``` **Telegram structure: sAN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------ | ------------------------------------- | --------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN Run** **CoLa A (ASCII)** ```text sAN{SPC}Run{SPC}1 ``` ```text 02 73 41 4E 20 52 75 6E 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 09 73 41 4E 20 52 75 6E 20 01 34 ```
### Reboot Device [sMN mSCreboot] This command includes saving all parameters. **Telegram structure: sMN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sMN mSCreboot** **CoLa A (ASCII)** ```text sMN{SPC}mSCreboot ``` ```text sMN mSCreboot ``` ```text sMN mSCreboot ``` ```text 02 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 2C ``` ```text 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 ``` **Telegram structure: sAN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sAN mSCreboot** **CoLa A (ASCII)** ```text sAN{SPC}mSCreboot ``` ```text 02 73 41 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 41 4E 20 6D 53 43 72 65 62 6F 6F 74 20 00 ```
## Status
### Ask for Device Measurement State [sRN LMCmeasstate] Ask for Device Measurement State. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN LMCmeasstate`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Ask for measurement state | String | 12 | CoLa A: LMCmeasstate | **Response: `sRA LMCmeasstate`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------- | ------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Ask for measurement state | String | 12 | CoLa A: LMCmeasstate | | Current measurement state | Enum_16 | 2 | Idle: Ready 2D: Measure 2D: Other state codes may show up during booting, firmware update or transition between states.
CoLa A: 3 6 7 | **Request example** **CoLa A (ASCII)** ```text sRN LMCmeasstate ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 4D 43 6D 65 61 73 73 74 61 74 65 60 ``` **Response example** **CoLa A (ASCII)** ```text sRA LMCmeasstate 7 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 4C 4D 43 6D 65 61 73 73 74 61 74 65 20 00 07 48 ```
### Read the Device State [sRN SCdevicestate] This telegram reads the general device state. **Telegram structure: sRN SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | **Example: sRN SCdevicestate** **CoLa A (ASCII)** ```text sRN{SPC}SCdevicestate ``` ```text sRN SCdevicestate ``` ```text sRN SCdevicestate ``` ```text 02 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 30 ``` ```text 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 ``` **Telegram structure: sRA SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | | Status code | Code number | Enum_8 | 1 | Busy / logged-in:
Ready:
Error: | `0
1
2` | `00
01
02` | **Example: sRA SCdevicestate** **CoLa A (ASCII)** ```text sRA{SPC}SCdevicestate{SPC}1 ``` ```text 02 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 1E ```
## Device
### Read Device Order Number [sRN DIornr] Read device order number. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN DIornr`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------ | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Read device order number | String | 6 | CoLa A: DIornr | **Response: `sRA DIornr`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------------------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sRA | | Read device order number | String | 6 | CoLa A: DIornr | | Number of characters of the following order number | Int_8 | 1 | Fix:
CoLa A: 7h | | Order number in 7 digits | String | 7 | CoLa A: 0000000 … 9999999 | **Request example** **CoLa A (ASCII)** ```text sRN DIornr ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 6F 72 6E 72 43 ``` **Response example** **CoLa A (ASCII)** ```text sRA DIornr 7 1098855 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 44 49 6F 72 6E 72 20 07 31 30 39 38 38 35 35 53 ```
### Read Firmware Version [sRN DeviceIdent] **Telegram structure: sRN DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read firmware version | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | **Example: sRN DeviceIdent** **CoLa A (ASCII)** ```text sRN{SPC}DeviceIdent ``` ```text sRN DeviceIdent ``` ```text sRN DeviceIdent ``` ```text 02 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 25 ``` ```text 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 ``` **Telegram structure: sRA DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | | Value | Length of firmware designation | Enum_16 | 2 | | `0 ... 22h` | `0 ... 22h` | | Value | Firmware designation for device family | String | | | `(See example)` | `(See example)` | | Value | Length of firmware version | Enum_16 | 2 | | `0 ... 22h` | `0 ... 22h` | | Value | Firmware version | String | | | `(See example)` | `(See example)` |
### Read Serial Number [sRN SerialNumber] Read the serial number of the device. **Telegram structure: sRN SerialNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read serial number of the device | String | 12 | | `SerialNumber` | `53 65 72 69 61 6C 4E 75 6D 62 65 72` | **Example: sRN SerialNumber** **CoLa A (ASCII)** ```text sRN{SPC}SerialNumber ``` ```text sRN SerialNumber ``` ```text sRN SerialNumber ``` ```text 02 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 4C ``` ```text 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 ``` **Telegram structure: sRA SerialNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------------- | --------------------------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read serial number of the device | String | 12 | | `SerialNumber` | `53 65 72 69 61 6C 4E 75 6D 62 65 72` | | Length of serial number | Number of characters of the serial number | Uint_16 | 2 | | `0 ... 8h` | `00 00 ... 00 08h` | | Serial number | Production period (year, calendar week, number): YYWWxxxx | String | 8 | | `(See example)` | `(See example)` | **Example: sRA SerialNumber** **CoLa A (ASCII)** ```text sRA{SPC}SerialNumber{SPC}8{SPC}23360024 ``` ```text 02 73 52 41 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 20 38 20 32 33 33 36 30 30 32 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 20 00 08 32 33 33 36 30 30 32 34 69 ```
### Read Device Type [sRN DItype] This telegram asks for the device type of the product family. **Telegram structure: sRN DItype** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask state | String | 6 | | `DItype` | `44 49 74 79 70 65` | **Example: sRN DItype** **CoLa A (ASCII)** ```text sRN{SPC}DItype ``` ```text sRN DItype ``` ```text sRN DItype ``` ```text 02 73 52 4E 20 44 49 74 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 74 79 70 65 5A ``` ```text 73 52 4E 20 44 49 74 79 70 65 ``` **Telegram structure: sRA DItype** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | -------------------------------------------------- | -------- | ------ | ------------------ | --------------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Ask state | String | 6 | | `DItype` | `44 49 74 79 70 65` | | Length of type key | Number of digits of the following type code length | Uint_8 | 1 | | `0d … 255d (0h … FFh)` | `00 … FF` | | Device type | Type code of the device | String | (var.) | | `(Device type)` | `(Device type)` | **sRA DItype Example for picoScan150:** **CoLa A (ASCII)** ```text sRA{SPC}DItype{SPC}B{SPC}picoScan150 ``` ```text 02 73 52 41 20 44 49 74 79 70 65 20 42 20 70 69 63 6F 53 63 61 6E 31 35 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 52 41 20 44 49 74 79 70 65 20 00 0B 70 69 63 6F 53 63 61 6E 31 35 30 60 ```
### Set Device Name [sWN LocationName] Give the device a specific description name such as its location. **Telegram structure: sWN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | | Value | Number of characters of the following device name | Uint_16 | 2 | | `0d … +16d (0h … 10h )` | `00 00 … 00 10` | | Value | Device name | String | 32 | | `[Device name]` | `[Device name]` | **Telegram structure: sWA LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sWA LocationName** **CoLa A (ASCII)** ```text sWA{SPC}LocationName ``` ```text 02 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 7F ```
### Read Device Name [sRN LocationName] Read the given name of the device (Default is the serial number of the device). **Telegram structure: sRN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sRN LocationName** **CoLa A (ASCII)** ```text sRN{SPC}LocationName ``` ```text sRN LocationName ``` ```text sRN LocationName ``` ```text 02 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 55 ``` ```text 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 ``` **Telegram structure: sRA LocationName** The response contains the same length-prefixed device-name value described for `sWN LocationName` above.
## Basic Settings
### Read for Frequency and Angular Resolution [sRN LMPscancfg] Read the scanning frequency, angular resolution and aperture angle of the device. Values show the information of the values before any filters are applied. Therefore aperture angle is always showing the maximum, scanning frequency and angular resolution may also be static depending on device family. **Telegram structure: sRN LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | **Example: sRN LMPscancfg** **CoLa A (ASCII)** ```text sRN{SPC}LMPscancfg ``` ```text sRN LMPscancfg ``` ```text sRN LMPscancfg ``` ```text 02 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 63 ``` ```text 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 ``` **Telegram structure: sRA LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | --------------------------------------------- | -------- | ------ | ------------------------------------------------------------------------------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | | Scan frequency | [1/100 Hz] | Uint_32 | 4 | 12.5 Hz:
25 Hz: | `4E2h
9C4h` | `00 00 04 E2
00 00 09 C4` | | Reserved | - | Int_16 | 2 | Always: | `1` | `00 01` | | Angular resolution | [1/10000°] | Uint_32 | 4 | 12.5 Hz: 0.02°, 0.04°, 0.06°, 0.1°, 0.12°
25 Hz: 0.04°, 0.08°, 0.12°, 0.2°, 0.24° | `C8h … 4B0h
190h … 960h` | `00 00 00 C8 … 00 00 04 B0
00 00 01 90 … 00 00 09 60` | | Start angle | [1/10000°] | Int_32 | 4 | -180° ... +180° | `FFE488C0h … 1B7740h` | `FF E4 88 C0 … 00 1B 77 40` | | Stop angle | [1/10000°] | Int_32 | 4 | -180° ... +180° | `FFE488C0h … 1B7740h` | `FF E4 88 C0 … 00 1B 77 40` | **Example: sRA LMPscancfg - 25 Hz scan frequency, 0.24° angular resolution, -180° start angle, +180° stop angle** **CoLa A (ASCII)** ```text sRA{SPC}LMPscancfg{SPC}9C4{SPC}1{SPC}960{SPC}FFE488C0{SPC}1B7740 ``` ```text 02 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 39 43 34 20 31 20 39 36 30 20 46 46 45 34 38 38 43 30 20 31 42 37 37 34 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 00 00 09 C4 00 01 00 00 09 60 FF E4 88 C0 00 1B 77 40 96 ```
### Set Scan Configuration [sMN mCLsetscancfglist] Set scan configuration. **Access:** Authorized client user level is required. **Request: `sMN mCLsetscancfglist`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------------ | ------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Method | String | 3 | CoLa A: sMN | | Set scan configuration | String | 17 | CoLa A: mCLsetscancfglist | | Scan configuration (see table below) | Enum_8 | 1 | Normal mode: 12.5Hz & 0.020°: 12.5Hz & 0.040°: 12.5Hz & 0.060°: 12.5Hz & 0.100°: 12.5Hz & 0.120°: 25Hz & 0.040°: 25Hz & 0.080°: 25Hz & 0.120°: 25Hz & 0.200°: 25Hz & 0.240°: Extended range mode: 12,5Hz & 0.240° 12,5Hz & 0.120° 12,5Hz & 0.080° 12,5Hz & 0.040° 25Hz & 0.480° 25Hz & 0.240° 25Hz & 0.160° 25Hz & 0.080°
CoLa A: 11d (0Bh) 1d (1h) 2d (2h) 4d (4h) 5d (5h) 71d (47h) 61d (3Dh) 62d (3Eh) 64d (40h) 65d (41h) 31d (1Fh) 32d (20h) 33d (21h) 35d (23h) 91d (5Bh) 92d (5Ch) 93d (5Dh) 95d (5Fh) | **Response: `sAN mCLsetscancfglist`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sAN | | Set scan configuration | String | 17 | CoLa A: mCLsetscancfglist | | Wrong setting | Enum_8 | 1 | Ok:: 0
Error frequency:: 1
Error resolution:: 2
Error resolution and frequency:: 3
Error Range error:: 4
General Error:: 5 | The selected scan configuration changes scan frequency, angular resolution, field of view, and interlace mode. The sensor may need up to 30 seconds to apply a changed configuration. **Request example** **CoLa A (ASCII)** ```text sMN mCLsetscancfglist 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 01 0E ``` **Response example** **CoLa A (ASCII)** ```text sAN mCLsetscancfglist 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 41 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 00 03 ```
### Activate Standby Mode [sMN LMCstandby] Shut off the laser in order to extend the lifetime of laser diode and reduce motor speed to 25 Hz. **Telegram structure: sMN LMCstandby** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set device to standby | String | 10 | | `LMCstandby` | `4C 4D 43 73 74 61 6E 64 62 79` | **Example: sMN LMCstandby** **CoLa A (ASCII)** ```text sMN{SPC}LMCstandby ``` ```text sMN LMCstandby ``` ```text sMN LMCstandby ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 65 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 ``` **Telegram structure: sAN LMCstandby** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set device to standby | String | 10 | | `LMCstandby` | `4C 4D 43 73 74 61 6E 64 62 79` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstandby** **CoLa A (ASCII)** ```text sAN{SPC}LMCstandby{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 6E 64 62 79 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 41 4E 20 4C 4D 43 73 74 61 6E 64 62 79 20 00 49 ```
### Start Measurement [sMN LMCstartmeas] Start the laser and (unless in Standby mode) the motor of the device **Telegram structure: sMN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | **Example: sMN LMCstartmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstartmeas ``` ```text sMN LMCstartmeas ``` ```text sMN LMCstartmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 68 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 ``` **Telegram structure: sAN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstartmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstartmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 00 44 ```
### Set Sensitivity Mode [sWN SensitivityMode] Define a sensitivity mode for the detection of reflectors . **Telegram structure: sWN SensitivityMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------- | -------- | ------ | ---------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sensitivity Mode | String | 15 | | `SensitivityMode` | `53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65` | | Sensitivity | Choose Sensitivity Mode | Enum_8 | 1 | Maximum robustness:
Standard (recommended):
Maximum detectivity: | `0
1
2` | `00
01
02` | **Example: sWN SensitivityMode** **CoLa A (ASCII)** ```text sWN{SPC}SensitivityMode{SPC}1 ``` ```text sWN SensitivityMode 1 ``` ```text sWN SensitivityMode 1 ``` ```text 02 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 01 05 ``` ```text 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 01 ``` **Telegram structure: sWA SensitivityMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sensitivity Mode | String | 15 | | `SensitivityMode` | `53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65` | **Example: sWA SensitivityMode** **CoLa A (ASCII)** ```text sWA{SPC}SensitivityMode ``` ```text 02 73 57 41 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 0B ```
## Date and System Time
### Set Time Synchronization [sWN TSCRole] Set the device synchronization mode. **Telegram structure: sWN TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | -------------------- | ------------------------------------------ | --------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | | Status | Timestamp role | Uint_8 | 1 | Off:
NTP:
PTP: | `0
1
3` | `00
01
03` | **Example: sWN TSCRole** **CoLa A (ASCII)** ```text sWN{SPC}TSCRole{SPC}1 ``` ```text sWN TSCRole 1 ``` ```text sWN TSCRole 1 ``` ```text 02 73 57 4E 20 54 53 43 52 6F 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 1B ``` ```text 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 ``` **Telegram structure: sWA TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | -------------------------------------- | --------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | **Example: sWA TSCRole** **CoLa A (ASCII)** ```text sWA{SPC}TSCRole ``` ```text 02 73 57 41 20 54 53 43 52 6F 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 57 41 20 54 53 43 52 6F 6C 65 20 15 ```
### Set Time Stamp [sMN LSPsetdatetime] The data format in the telegram is: +2009{SPC}+7{SPC}+22{SPC}+12{SPC}+0{SPC}+0{SPC}+0.The numbers represent year, month, day, hour, minute, second, microsecond. If plus is used up-front the data it is interpreted as an integer decimal number, without the plus it's the scanner reads the data as hex format. The answer is always in ASCII format. Does only work if NTP- respectively PTP-Client is not active. There is no real time clock inside the device. When the scanner is switched off and after a reboot, the time has to be set again. Therefore, it is recommended to use a NTP or a PTP setting. **Telegram structure: sMN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | -------------------------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Year | | Uint_16 | 2 | | `+1970d … +2099d (07B2h … 0833h)` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `+1d … +12d(01h … 0Ch)` | `01 … 0C` | | Day | | Uint_8 | 1 | | `+1d … +31d(01h … 1Fh)` | `00 … 1F` | | Hour | | Uint_8 | 1 | | `+0d … +23d(00h … 17h)` | `00 … 17` | | Minute | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Second | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `+0d … +999999d(00000000h … 000F423Fh)` | `00 00 00 00 … 00 0F 42 3F` | **Example 2: sMN LSPsetdatetime Date: 26.01.2010; Time: 10:35** **CoLa A (ASCII)** ```text sMN{SPC}LSPsetdatetime{SPC}+2010{SPC}+01{SPC}+26{SPC}+10{SPC}+35{SPC}0{SPC}0 ``` ```text sMN LSPsetdatetime +2010 +01 +26 +10 +35 0 0 ``` ```text sMN LSPsetdatetime +2010 +01 +26 +10 +35 0 0 ``` ```text 02 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 2B 32 30 31 30 20 2B 30 31 20 2B 32 36 20 2B 31 30 20 2B 33 35 20 2B 30 30 20 2B 30 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 DA 01 1A 0A 23 00 00 00 00 00 B3 ``` ```text 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 DA 01 1A 0A 23 00 00 00 00 00 ``` **Telegram structure: sAN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Status code | Code number | Enum_8 | 1 | Success: | `0` | `00` | **Example 1, 2: sAN LSPsetdatetime** **CoLa A (ASCII)** ```text sAN{SPC}LSPsetdatetime{SPC}0 ``` ```text 02 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 00 50 ``` Activate time stamp in the output string format or on SOPAS page “data processing”.
### Read Device Time [sRN DeviceTime] Read device time. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN DeviceTime`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Parameter | String | 10 | CoLa A: DeviceTime | **Response: `sRA DeviceTime`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------------- | -------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Parameter | String | 10 | CoLa A: DeviceTime | | The sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_32 | 4 | CoLa A: 0d … +9999d (0h … 270Fh) | **Request example** **CoLa A (ASCII)** ```text sRN DeviceTime ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 44 65 76 69 63 65 54 69 6D 65 42 ``` **Response example** **CoLa A (ASCII)** ```text sRA DeviceTime 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 44 65 76 69 63 65 54 69 6D 65 20 00 00 00 00 6D ```
### Set Time Server IP Address [sWN TSCTCSrvAddr] Define the IP address from which the device will receive the time synchronization. **Telegram structure: sWN TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | -------------------------- | -------- | ------ | ------------------------- | ----------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | | IP address data | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sWN TSCTCSrvAddr 192.168.0.11** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCSrvAddr{SPC}C0{SPC}A8{SPC}00{SPC}0B ``` ```text sWN TSCTCSrvAddr C0 A8 00 0B ``` ```text sWN TSCTCSrvAddr C0 A8 00 0B ``` ```text 02 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 43 30 20 41 38 20 30 30 20 30 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B 3E ``` ```text 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B ``` **Telegram structure: sWA TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | **Example: sWA TSCTCSrvAddr** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCSrvAddr ``` ```text 02 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 20 52 ```
### Set Time Zone [sWN TSCTCtimezone] **Telegram structure: sWN TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------- | ---------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------ | --------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | | Time zone data | Select the time zone of the client | Enum_8 | 1 | List of time zones | `+0d … +104d (00h … 68h)` | `00 … 68` | **Time zone data Values CoLa (ASCII)** | Value | Time zone | Value | Time zone | Value | Time zone | | ----- | ---------------------- | ----- | --------------------- | ----- | --------------------- | | 0 | DATE_LINE_STANDARD | 35 | MONROVIA_REYKJAVIK | 70 | MUMBAI_NEUDELHI | | 1 | COORD_WORLD_TIME_11 | 36 | AMSTERDAM_BERLIN_ROM | 71 | SRI_JAYAWARDENEPURA | | 2 | HAWAII | 37 | BELGRAD_BUDAPEST_PRAG | 72 | KATMANDU | | 3 | ALASKA | 38 | BRUESSEL_MADRID_PARIS | 73 | ASTANA | | 4 | CALIFORNIA | 39 | SARAJEVO_WARSCHAU | 74 | DAKKA | | 5 | USA_CANADA | 40 | WEST_CENTRAL_AFRICA | 75 | NOWOSIBIRSK | | 6 | ARIZONA | 41 | WINDHUK | 76 | YANGON | | 7 | LA_PAZ | 42 | AMMAN | 77 | BANGKOK_HANOI_JAKARTA | | 8 | MOUNTAIN_TIME_USA | 43 | ATHEN_BUKAREST | 78 | KRASNOJARSK | | 9 | CENTRAL_TIME_USA | 44 | BEIRUT | 79 | IRKUTSK | | 10 | MEXICO_CITY | 45 | DAMASCUS | 80 | KUALA_LUMPUR_SINGAPUR | | 11 | MIDDLE_AMERICA | 46 | HARARE_PRETORIA | 81 | PEKING_HONGKONG | | 12 | SASKATCHEWAN | 47 | HELSINKI_KIEW_RIGA | 82 | PERTH | | 13 | BOGOTA_LIMA | 48 | ISTANBUL | 83 | TAIPEH | | 14 | EASTERN_TIME_USA | 49 | JERUSALEM | 84 | ULAN_BATOR | | 15 | INDIANA | 50 | KAIRO | 85 | JAKUTSK | | 16 | CARACAS | 51 | KALININGRAD | 86 | OSAKA_TOKIO | | 17 | ASUNCION | 52 | EASTERN_EUROPE | 87 | SEOUL | | 18 | ATLANTIC_KANADA | 53 | TRIPOLIS | 88 | ADELAIDE | | 19 | CUIABA | 54 | BAGDAD | 89 | DARWIN | | 20 | LAPAZ_SANJUAN | 55 | KUWAIT_RIAD | 90 | BRISBANE | | 21 | SANTIAGO | 56 | MINSK | 91 | CANBERRA_SYDNEY | | 22 | NEUFUNDLAND | 57 | MOSKAU_PETERSBURG | 92 | GUAM_PORT_MORESBY | | 23 | BRASILIA | 58 | NAIROBI | 93 | HOBART | | 24 | BUENOS_AIRES | 59 | TEHERAN | 94 | MAGADAN | | 25 | CAYENNE_FORTALEZA | 60 | ABU_DHABI | 95 | WLADIWOSTOK | | 26 | GROENLAND | 61 | BAKU | 96 | SALOMONEN_KALEDONIEN | | 27 | MONTEVIDEO | 62 | ERIWAN | 97 | TSCHOKURDACH | | 28 | SALVADOR | 63 | ISCHEWSK_SAMARA | 98 | ANADYR | | 29 | COORD_WORLD_TIME_02 | 64 | PORT_LOUIS | 99 | AUCKLAND_WELLINGTON | | 30 | AZOREN | 65 | TIFLIS | 100 | FIDSCHI | | 31 | KAP_VERDE | 66 | KABUL | 101 | COORD_WORLD_TIME_12 | | 32 | CASABLANCA | 67 | ASCHGABET_TASCHKENT | 102 | NAKUALOFA | | 33 | DUBLIN_LISSABON_LONDON | 68 | ISLAMABAD_KARATSCHI | 103 | SAMOA | | 34 | COORD_WORLD_TIME | 69 | JEKATERINBURG | 104 | KIRITIMATI | **Telegram structure: sWA TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | **Example: sWA TSCTCtimezone** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCtimezone ``` ```text 02 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 3D ```
### Set Update Time [sWN TSCTCupdatetime] Define the time period after which the sensor will attempt to get the current system time for the TSC server. **Telegram structure: sWN TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------ | ---------------------------------- | -------- | ------ | ------------------ | -------------------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | | Update time of synchronization | Set values in seconds | Uint_32 | 4 | | `+1d … +3600d(01h … 0E10h)` | `00 00 00 00 … 00 00 0E 10` | **Example: sWN TSCTCupdatetime 600 s** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCupdatetime{SPC}+600 ``` ```text sWN TSCTCupdatetime +600 ``` ```text sWN TSCTCupdatetime +600 ``` ```text 02 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 2B 36 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 67 ``` ```text 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 ``` **Telegram structure: sWA TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | **Example: sWA TSCTCupdatetime** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCupdatetime ``` ```text 02 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 32 ```
## Filter
### Set Particle Filter [sWN LFPparticle] Filter out disturbances in the meausurement data caused by particles such as dust, snow flakes or similar . **Telegram structure: sWN LFPparticle** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | -------------------- | ------------------------------------------- | --------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set particle filter | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | | Status code | Code number | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | | Threshold1) | Particle threshold in mm | Uint_16 | 2 | (must be taken) | `+500d (1F4h)` | `01 F4` | Never change the threshold here, it is taken by the device to handle the particles. **Example: sWN LFPparticle** **CoLa A (ASCII)** ```text sWN{SPC}LFPparticle{SPC}1{SPC}+500 ``` ```text sWN LFPparticle 1 +500 ``` ```text sWN LFPparticle 1 +500 ``` ```text 02 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 31 20 2B 35 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 01 01 F4 D0 ``` ```text 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 01 01 F4 ``` **Telegram structure: sWA LFPparticle** | Telegram part | Description | Variable | Length | Sensor | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set particle filter | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | **Example: sWA LFPparticle** **CoLa A (ASCII)** ```text sWA{SPC}LFPparticle ``` ```text 02 73 57 41 20 4C 46 50 70 61 72 74 69 63 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 4C 46 50 70 61 72 74 69 63 6C 65 20 2B ```
### Set Average Filter [sWN LFPmeanfilter] Set average filter. **Access:** Authorized client user level is required. **Request: `sWN LFPmeanfilter`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set average filter | String | 13 | CoLa A: LFPmeanfilter | | Code number | Bool_1 | 1 | Inactive:: 0
Active:: 1 | | Number | Uint_16 | 2 | CoLa A: +2d … +100d (00 02h … 00 64h) | | - | Enum_8 | 1 | Always:
CoLa A: 0 | **Response: `sWA LFPmeanfilter`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set average filter | String | 13 | CoLa A: LFPmeanfilter | **Request example** **CoLa A (ASCII)** ```text sWN LFPmeanfilter 1 +10 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 4E 20 4C 46 50 6D 65 61 6E 66 69 6C 74 65 72 20 01 00 0A 00 3C ``` **Response example** **CoLa A (ASCII)** ```text sWA LFPmeanfilter ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4C 46 50 6D 65 61 6E 66 69 6C 74 65 72 18 ```
### Set Echo Filter [sWN FREchoFilter] Only available with firmware versions > V1.10. Select which measurement value(s) shall be send via LMDscanata, if the meausrement of one angular position returns several distance values **Telegram structure: sWN FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | --------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | | Status code | Code number | Enum_8 | 1 | First echo:
All echos:
Last echo: | `0
1
2` | `00
01
02` | **Example: sWN FREchoFilter** **CoLa A (ASCII)** ```text sWN{SPC}FREchoFilter{SPC}1 ``` ```text sWN FREchoFilter 1 ``` ```text sWN FREchoFilter 1 ``` ```text 02 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 7E ``` ```text 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 ``` **Telegram structure: sWA FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | **Example: sWa FREchoFilter** **CoLa A (ASCII)** ```text sWA{SPC}FREchoFilter ``` ```text 02 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 70 ```
### Activate Median Filter [sWN LFPmedianfilter] Activate Median filter. **Access:** Authorized client user level is required. **Request: `sWN LFPmedianfilter`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------------------------------------------- | ------------- | -------------- | ------------------------- | | Write | String | 3 | CoLa A: sWN | | Sector function | String | 15 | CoLa A: LFPmedianfilter | | Enable or disable Median filter | Bool_1 | 1 | Disable:: 0
Enable:: 1 | | Number of considered measurement points and number of scans | Uint_16 | 2 | Always:
CoLa A: 3 | **Response: `sWA LFPmedianfilter`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Sector function | String | 15 | CoLa A: LFPmedianfilter | **Request example** **CoLa A (ASCII)** ```text sWN LFPmedianfilter 1 3 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 4C 46 50 6D 65 64 69 61 6E 66 69 6C 74 65 72 20 01 00 03 38 ``` **Response example** **CoLa A (ASCII)** ```text sWA LFPmedianfilter ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 4C 46 50 6D 65 64 69 61 6E 66 69 6C 74 65 72 15 ```
## Contamination Indication
### Set Contamination Indication Settings [sWN ContaminationConfig] Define how and under which conditions the device shall indicate a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sWN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------- | ------------------------------------------------------------------------------------------ | -------- | ------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | No output:
All sectors contaminated:
One sector contaminated: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | Value range 3 ... 60
Default: 3 | `+3d … +60d (03h … 3Ch)` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | High:
Medium:
Low: | `0
1
2` | `00
01
02` | | Sector preselection | Selection of either custom sectors or used weather protection hood | Enum_8 | 1 | All sectors:
Weather protection hood:
Custom sectors: | `0
6
255d (FFh)` | `00
06
FF` | | Length | | UInt_16 | 2 | Always: | `7` | `07` | | Custom sectors | Enable/ disable individual sectors when custom sectors got selected in Sector preselection | Array | 7 | Active: 1
Inactive: 0
Default value of all sectors is active | `0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1` | `00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01` | | Enable Warning | Warning monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | | Enable Error | Error monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | **Telegram structure: sWA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` |
### Read Contamination Indication Settings [sRN ContaminationConfig] Reads the current contamination settings that define how and under which conditions the device indicates a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sRN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Telegram structure: sRA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------- | ------------------------------------------------------------------------------------------ | -------- | ------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | No output:
All sectors contaminated:
One sector contaminated: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | Value range 3 ... 60
Default: 3 | `03h … 3Ch` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | High:
Medium:
Low: | `0
1
2` | `00
01
02` | | Sector preselection | Selection of either custom sectors or used weather protection hood | Enum_8 | 1 | All sectors:
Weather protection hood:
Custom sectors: | `0
6
FF` | `00
06
FF` | | Length | | Enum_8 | 1 | Always: | `7` | `07` | | Custom sectors | Enable/ disable individual sectors when custom sectors got selected in Sector preselection | Array | 7 | Active: 1
Inactive: 0
Default value of all sectors is active | `0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1` | `00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01` | | Enable Warning | Warning monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | | Enable Error | Error monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | **Example: sRA ContaminationConfig No output, response time 3 sec, All sectors active, warning enabled, error enabled** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationConfig{SPC}0{SPC}3{SPC}0{SPC}0{SPC}7{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 30 20 33 20 30 20 30 20 37 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 28 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 07 01 01 01 01 01 01 01 01 01 0F ```
### Read Contamination Indication Data [sRN ContaminationData] Get the current contamination indication data. **Telegram structure: sRN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Reading status of all contamination sectors | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | **Example: sRN ContaminationData** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationData ``` ```text sRN ContaminationData ``` ```text sRN ContaminationData ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 3F ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 ``` **Telegram structure: sRA ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------- | ------------------------------------------- | --------------- | ------ | ---------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Reading status of all contamination sectors | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Number of contamination sectors | | Uint_16 | 2 | Always: | `7` | `00 07` | | Contamination data | Status of contamination of each sector | Array of Enum_8 | 7 | Blocked:
Clean:
Warning:
Error: | `0
1
2
3` | `00
01
02
03` |
### Read Contamination Indication Result [sRN ContaminationResult] This telegram is intended to read the contamination result. The telegram returns two Boolean. One for warning and one for error. Depending on the strategy of the contamination indication the state changes if one or all sectors are in the specific status (warning or error). **Telegram structure: sRN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN ContaminationResult** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationResult ``` ```text sRN ContaminationResult ``` ```text sRN ContaminationResult ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 26 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------- | ----------- | -------- | ------ | ---------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Contamination Result | Warning | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | | Contamination Result | Error | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sRA ContaminationResult warning inactive error inactive** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 00 09 ```
### Send Contamination Indication Result Permanently [sEN ContaminationResult] This telegram is intended to activate the event for read the contamination result permanently. The telegram returns two Boolean. One for warning and one for error. Depending on the strategy of the contamination indication the state changes if one or all sectors are in the specific status (warning or error). **Telegram structure: sEN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sEN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationResult** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationResult{SPC}1 ``` ```text sEN ContaminationResult 1 ``` ```text sEN ContaminationResult 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 10 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sSN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------- | ----------- | -------- | ------ | ---------------------- | ------------------------------------- | --------------------------------------- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Contamination Result | Warning | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | | Contamination Result | Error | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sSN ContaminationResult warning active error inactive** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}1{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 00 08 ```
## Ethernet
### Set IP Address [sWN EIIpAddr] Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------------- | --------------------------------------------------- | ------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | | IP address | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | **Example: sWN EIIpAddr 192.168.0.2** **CoLa A (ASCII)** ```text sWN{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}0{SPC}2 ``` ```text sWN EIIpAddr C0 A8 0 2 ``` ```text sWN EIIpAddr C0 A8 0 2 ``` ```text 02 73 57 4E 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 06 ``` ```text 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 ``` **Telegram structure: sWA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | **Example: sWA EIIpAddr** **CoLa A (ASCII)** ```text sWA{SPC}EIIpAddr ``` ```text 02 73 57 41 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 41 20 45 49 49 70 41 64 64 72 20 63 ```
### Read IP Address [sRN EIIpAddr] Read the IP address of the device. **Telegram structure: sRN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | **Example: sRN EIIpAddr** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddr ``` ```text sRN EIIpAddr ``` ```text sRN EIIpAddr ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 45 49 49 70 41 64 64 72 49 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 ``` **Telegram structure: sRA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------------- | ------------------------------------------------- | ------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 … FF)` | `00 … FF` |
### Set Ethernet Gateway [sWN EIgate] Change Ethernet gateway IP address (TCP/IP) Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ------------------- | -------- | ------ | ------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Set values | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EIgate 192.168.0.1** **CoLa A (ASCII)** ```text sWN{SPC}EIgate{SPC}C0{SPC}A8{SPC}00{SPC}01 ``` ```text sWN EIgate C0 A8 00 01 ``` ```text sWN EIgate C0 A8 00 01 ``` ```text 02 73 57 4E 20 45 49 67 61 74 65 20 43 30 20 41 38 20 30 30 20 30 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 67 61 74 65 20 C0 A8 00 01 18 ``` ```text 73 57 4E 20 45 49 67 61 74 65 20 C0 A8 00 01 ``` **Telegram structure: sWA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sWA EIgate** **CoLa A (ASCII)** ```text sWA{SPC}EIgate ``` ```text 02 73 57 41 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 67 61 74 65 20 7E ```
### Read Ethernet Gateway [sRN EIgate] Read for the Ethernet gateway (TCP/IP) **Telegram structure: sRN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sRN EIgate** **CoLa A (ASCII)** ```text sRN{SPC}EIgate ``` ```text sRN EIgate ``` ```text sRN EIgate ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 67 61 74 65 54 ``` ```text 73 52 4E 20 45 49 67 61 74 65 ``` **Telegram structure: sRA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | -------------------- | -------- | ------ | ------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 … FF` |
### Set IP Mask [sWN EImask] Define the subnet mask of the device. Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ---------------------- | ----------------------------------------------- | ------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Set values | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EImask 255.255.254.0** **CoLa A (ASCII)** ```text sWN{SPC}EImask{SPC}FF{SPC}FF{SPC}FE{SPC}00 ``` ```text sWN EImask FF FF FE 00 ``` ```text sWN EImask FF FF FE 00 ``` ```text 02 73 57 4E 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 45 20 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FE 00 8C ``` ```text 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FE 00 ``` **Telegram structure: sWA EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sWA EImask** **CoLa A (ASCII)** ```text sWA{SPC}EImask ``` ```text 02 73 57 41 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 6D 61 73 6B 20 7D ```
### Read IP Mask [sRN EImask] Read the subnet mask of the device. **Telegram structure: sRN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sRN EImask** **CoLa A (ASCII)** ```text sRN{SPC}EImask ``` ```text sRN EImask ``` ```text sRN EImask ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 6D 61 73 6B 57 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B ``` **Telegram structure: sRA EImask** | Telegram part | Description | Variable | Length | Sensor | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ---------------------- | ----------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 … FF` |
### Change CoLa TCP Timeout [sWN EtherColaTransmitTimeout] Change CoLa TCP Timeout. **Access:** Authorized client user level is required. **Request: `sWN EtherColaTransmitTimeout`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------------------- | ------------- | -------------- | ------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Adjust CoLa TCP Acknowledge timeout time | String | 24 | CoLa A: EtherColaTransmitTimeout | | New timeout time in ms | Uint_16 | 2 | Default: 15000
CoLa A: +250d ... +15000d | **Response: `sWA EtherColaTransmitTimeout`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------------------- | ------------- | -------------- | -------------------------------- | | Answer | String | 3 | CoLa A: sWA | | Adjust CoLa TCP Acknowledge timeout time | String | 24 | CoLa A: EtherColaTransmitTimeout | The timeout change takes effect after the sensor is restarted. **Request example** **CoLa A (ASCII)** ```text sWN EtherColaTransmitTimeout +250 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 45 74 68 65 72 43 6F 6C 61 54 72 61 6E 73 6D 69 74 54 69 6D 65 6F 75 74 20 00 FA 8E ``` **Response example** **CoLa A (ASCII)** ```text sWA EtherColaTransmitTimeout ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 41 20 45 74 68 65 72 43 6F 6C 61 54 72 61 6E 73 6D 69 74 54 69 6D 65 6F 75 74 5B ```
## Legacy Protocols
### Enable/ Disable CoLa Scan [sWN EnableColaScan] Enable/ disable CoLa Scan. **Access:** Authorized client user level is required. **Request: `sWN EnableColaScan`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Write | String | 3 | CoLa A: sWN | | Set CoLa Scan / AutoIP | String | 14 | CoLa A: EnableColaScan | | Enable/ disable | Bool_1 | 1 | Disable:: 0
Enable:: 1 | **Response: `sWA EnableColaScan`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set CoLa Scan / AutoIP | String | 14 | CoLa A: EnableColaScan | **Request example** **CoLa A (ASCII)** ```text sWN EnableColaScan 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 45 6E 61 62 6C 65 43 6F 6C 61 53 63 61 6E 20 01 54 ``` **Response example** **CoLa A (ASCII)** ```text sWA EnableColaScan ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 45 6E 61 62 6C 65 43 6F 6C 61 53 63 61 6E 7A ```
## Webserver Settings
### Set Webserver State [sMN SetWebserverEnabled] This command enables/ disables the Webserver. Port 80 will not be opened after a reboot. **Telegram structure: sMN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Telegram structure: sAN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` |
### Read Webserver State [sMN GetWebserverEnabled] Returns state if Webserver is enabled. **Telegram structure: sMN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sMN GetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}GetWebserverEnabled ``` ```text sMN GetWebserverEnabled ``` ```text sMN GetWebserverEnabled ``` ```text 02 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 16 ``` ```text 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 ``` **Telegram structure: sAN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------- | -------- | ------ | --------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Status of the webserver | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sAN GetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}GetWebserverEnabled{SPC}1 ``` ```text 02 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 3B ```
## Inputs and Outputs
### Read Port Configuration of All I/Os [sRN PortConfiguration] Read the configuration of the digital inputs and outputs. **Telegram structure: sRN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 12 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN PortConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}PortConfiguration ``` ```text sRN PortConfiguration ``` ```text sRN PortConfiguration ``` ```text 02 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 26 ``` ```text 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Configuration of all I/Os | String | 12 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Start of loop, number of loops = amount of all current and future Inputs and Outputs of device family | | | | | | | | Port Type | Input or Output | Enum_8 | 1 | Input:
Output: | `0
1` | `00
01` | | Port Name | Amount of characters of the following port name | Uint_16 | 2 | | `0h … 20h` | `00 00 … 00 20` | | Port Name | Port name | String | 16
(depending on string length) | | `[Port name]` | `[Port name]` | | Input Settings | | | | | | | | Logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Debouncing | Select debouncing time in ms | Uint_16 | 2 | (max. 10,000ms) | `0h … 2710h` | `00 00 … 27 10` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Reserved | Reserved value 1 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 2 | Uint_16 | 2 | | `0` | `00 00` | | Output Settings | | | | | | | | Logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Output Mode | PNP, NPN or Push-Pull | Enum_8 | 1 | PNP:
NPN:
Push-Pull: | `0
1
2` | `00
01
02` | | Restart type | Restart behavior of output after event: immediately or after specific time | Enum_8 | 1 | Immediately:
Time:
Input: | `0
1
2` | `00
01
02` | | Restart time | [Only with restart type = Time], time in ms | Uint_32 | 4 | (20 ms … 600,000 ms) | `14h … 927C0h` | `00 00 00 14 … 00 09 27 C0` | | Restart input | [Only with restart type = Input], input for restart | Uint_16 | 2 | | `1 ... 8` | `00 01 ... 00 08` | | Combination | Combining multiple Events and/or Inputs | Enum_8 | 1 | AND:
OR:
XOR: | `0
1
2` | `00
01
02` | | Reserved | Reserved value 3 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 4 | Uint_16 | 2 | | `0` | `00 00` | | Sources | Amount (n) of combined sources | Uint_16 | 2 | | `0h ... FFFFh` | `00 00 ... FF FF` | | Sources | Start of source loop, number of loops = amount of combined sources | | | | | | | Sources | Source name | String | 4 | Device Ready:
Sopas Command:(xx = Number of output port)
Indexsignal:
SyncOutByClock:
Input = Port Name:(INxx = Number of input port) | `[Source]
DRDY
SCxx
SROT
SCLK
INxx` | `[Source]` | | Sources | Source Inverted or not | Bool_1 | 1 | Not inverted:
Inverted: | `0
1` | `00
01` | | Sources | Reserved value 5 | Uint_8 | 1 | | `0` | `00` | | Sources | Reserved value 6 | Uint_8 | 1 | | `0` | `00` | | Sources | Stop of source loop | | | | | | | Reserved | Reserved value 7 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 8 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 9 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 10 | Uint_16 | 2 | | `0` | `00 00` | | Stop of loop | | | | | | |
### Read State of the Inputs [sRN LIDinputstate] Use sEN LIDinputstate 1 to receive a telegram each time an input signal (e.g. by trigger) changes. **Telegram structure: sRN LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Input state | String | 14 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | **Example: sRN LIDinputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDinputstate ``` ```text sRN LIDinputstate ``` ```text sRN LIDinputstate ``` ```text 02 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 0F ``` ```text 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -------- | ------ | ----------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Output state | String | 14 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Status code | System counter
(time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0 h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | State of the inputs 1 … n | Amount of inputs (n) depending of device family | Enum_8 | 1 | Not active:
Active:
Input not used: | `0
1
2` | `00
01
02` | | Time | States code | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Year | Array | 2 | E. g. | `1970` | `07 B2` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` |
### Read State of the Outputs [sRN LIDoutputstate] Status of all outputs **Telegram structure: sRN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | **Example: sRN LIDoutputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text 02 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 66 ``` ```text 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDoutputstate** The response uses the structure documented for `sRA/sSN LIDoutputstate` under the event telegram below.
### Receive Outputstate by Event [sEN LIDoutputstate] Output telegram is sent every time an output state changes. **Telegram structure: sEN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | | Start/stop | Enum_8 | 1 | Start:
Stop: | `1
0` | `01
00` | **Example: sEN LIDoutputstate** **CoLa A (ASCII)** ```text sEN{SPC}LIDoutputstate{SPC}1 ``` ```text sEN LIDoutputstate 1 ``` ```text sEN LIDoutputstate 1 ``` ```text 02 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 50 ``` ```text 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 ``` **Telegram structure: sRA/sSN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -------- | ------ | ------------------------------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA / sSN` | `73 52 41 / 73 53 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Status code | System counter
(time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | State of the outputs 1 ... n and count value in hex. (values of an example)
Amount of outputs (n) depending of device family | Output 1 ... n state | Enum_8 | 1 | Not active:
Active:
Output not used: | `0
1
2` | `00
01
02` | | State of the outputs 1 ... n and count value in hex. (values of an example)
Amount of outputs (n) depending of device family | Output 1 ... n count | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time | States code | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Year | Array | 2 | E. g. | `1970` | `07 B2` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` |
### Set Output State [sMN mDOSetOutput] Set a specific output to high or low via software command. Output source needs to be set to "SOPAS command" and the port configured as Output (in case of I/O). **Telegram structure: sMN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ----------------------- | --------------------------------------------- | ------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Output number | | Uint_8 | 1 | Depends on system plug: | `1 … 3
1 … 6` | `01 … 03
01 … 06` | | Output state | | Enum_8 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sMN mDOSetOutput** **CoLa A (ASCII)** ```text sMN{SPC}mDOSetOutput{SPC}1{SPC}1 ``` ```text sMN mDOSetOutput 1 1 ``` ```text sMN mDOSetOutput 1 1 ``` ```text 02 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 01 6B ``` ```text 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 01 ``` **Telegram structure: sAN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Status Code | Status code | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mDOSetOutput** **CoLa A (ASCII)** ```text sAN{SPC}mDOSetOutput{SPC}1 ``` ```text 02 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 66 ```
### Reset Output Counter [sMN LIDrstoutpcnt] Reset the counter which keeps track of how often an digital output has been active (and not active). Information from the counter is included in LIDoutputstate. **Telegram structure: sMN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | **Example: sMN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sMN{SPC}LIDrstoutpcnt ``` ```text sMN LIDrstoutpcnt ``` ```text sMN LIDrstoutpcnt ``` ```text 02 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` ```text 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 ``` **Telegram structure: sAN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | | Status code | Code number | Bool_1 | 1 | Success:
Error: | `0
1` | `00
01` | **Example: sAN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sAN{SPC}LIDrstoutpcnt{SPC}0 ``` ```text 02 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 00 2F ```
## Data Output
### Configure the Data Content for the Scan [sWN LMDscandatacfg] Configuration of the channels (e.g. distance) and information that will be send by the device as measurement data (output data format). **Telegram structure: sWN LMDscandatacfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------------- | -------- | ------ | ------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Configure scandata | String | 14 | | `LMDscandatacfg` | `4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67` | | Reserved | - | Uint_8 | 2 | Always: | `0 0` | `00 00` | | RSSI | Enable or disable the output of RSSI values | Uint_8 | 1 | RSSI disabled:
RSSI enabled: | `0
1` | `00
01` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Encoder | Encoder data | Uint_8 | 2 | No encoder:
Channel 1: | `0 0
1 0` | `00 00
01 00` | | Reserved | - | Bool_1 | 1 | Always: | `0` | `00` | | Device name | Sends the device name | Bool_1 | 1 | No:
Yes: | `0
1` | `00
01` | | Reserved | - | Bool_1 | 1 | Always: | `0` | `00` | | Time | Sends time stamp information | Bool_1 | 1 | No:
Yes: | `0
1` | `00
01` | | Reserved | - | Uint_16 | 2 | Always: | `+1d (1h)` | `00 01` | Example: RSSI enabled **Example: sWN LMDscandatacfg** **CoLa A (ASCII)** ```text sWN{SPC}LMDscandatacfg{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}+1 ``` ```text sWN LMDscandatacfg 0 0 1 0 0 0 0 0 0 0 0 +1 ``` ```text sWN LMDscandatacfg 0 0 1 0 0 0 0 0 0 0 0 +1 ``` ```text 02 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 30 20 30 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 2B 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 00 00 01 00 00 00 00 00 00 00 00 00 01 42 ``` ```text 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 00 00 01 00 00 00 00 00 00 00 00 00 01 ``` **Telegram structure: sWA LMDscandatacfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Configure scandata | String | 14 | | `LMDscandatacfg` | `4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67` | **Example: sWA LMDscandatacfg** **CoLa A (ASCII)** ```text sWA{SPC}LMDscandatacfg ``` ```text 02 73 57 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 4D ```
### Configure Aperture Angle of the Scandata for Output [sWN LMPoutputRange] Configure aperture angle of the scandata for output. **Access:** Authorized client user level is required. **Request: `sWN LMPoutputRange`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------- | ------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Change output angle range | String | 14 | CoLa A: LMPoutputRange | | - | Int_16 | 2 | Always:
CoLa A: 1 | | [1/10000°] | Uint_32 | 4 | Normal mode @ 12.5 Hz: 0.0200°: 0.0400°: 0.0600°: 0.1000°: 0.1200°: Normal mode @ 25 Hz: 0.0400°: 0.0800°: 0.1200°: 0.2000°: 0.2400°: Extended range mode @ 12.5 Hz: 0.240°: 0.120°: 0.080°: 0.040°: Extended range mode @ 25 Hz: 0.480°: 0.240°: 0.160°: 0.080°:
CoLa A: +200d (C8h) +400d (190h) +600d (258h) +1000d (3E8h) +1200d (4B0h) +400d (190h) +800d (320h) +1200d (4B0h) +2000d (7D0h) +2400d (960h) +2400d (960h) +1200d (4B0h) +800d (320h) +400d (190h) +4800d (12C0h) +2400d (960h) +1600d (640h) +800d (320h) | | [1/10000°] | Int_32 | 4 | -180° ... +180°:
CoLa A: -1800000d (FFE488C0h) … +1800000d (1B7740h) | | [1/10000°] | Int_32 | 4 | -180° ... +180°
CoLa A: -1800000d (FFE488C0h) … +1800000d (1B7740h) | **Response: `sWA LMPoutputRange`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Change output angle range | String | 14 | CoLa A: LMPoutputRange | **Request example** **CoLa A (ASCII)** ```text sWN LMPoutputRange 1 +400 0 +900000 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 57 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 00 01 00 00 01 90 00 00 00 00 00 0D BB A0 FD ``` **Response example** **CoLa A (ASCII)** ```text sWA LMPoutputRange ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 54 ```
### Read for Actual Output Range [sRN LMPoutputRange] Read for actual output range. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN LMPoutputRange`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Output range | String | 14 | CoLa A: LMPoutputRange | **Response: `sRA LMPoutputRange`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Output range | String | 14 | CoLa A: LMPoutputRange | | Parameter | Int_16 | 2 | Always:
CoLa A: 1h | | [1/10000°] | Uint_32 | 4 | Normal mode @ 12.5 Hz 0.0200°: 0.0400°: 0.0600°: 0.1000°: 0.1200°: Normal mode @ 25 Hz: 0.0400°: 0.0800°: 0.1200°: 0.2000°: 0.2400°: Extended range mode @ 12.5 Hz: 0.240°: 0.120°: 0.080°: 0.040°: Extended range mode @ 25 Hz: 0.480°: 0.240°: 0.160°: 0.080°:
CoLa A: C8h 190h 258h 3E8h 4B0h 190h 320h 4B0h 7D0h 960h 960h 4B0h 320h 190h 12C0h 960h 640h 320h | | [1/10000°] | Int_32 | 4 | -180° ... +180°
CoLa A: FFE488C0h … 1B7740h | | [1/10000°] | Int_32 | 4 | -180° ... +180°
CoLa A: FFE488C0h … 1B7740h | **Request example** **CoLa A (ASCII)** ```text sRN LMPoutputRange ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 5E ``` **Response example** **CoLa A (ASCII)** ```text sRA LMPoutputRange 1 190 0 DBBA0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 00 01 00 00 01 90 00 00 00 00 00 0D BB A0 F7 ```
### Configure the Distance Scaling of the Scandata for the Output [sWN LMDscandatascalefactor] Configure the distance scaling of the scandata for the output. **Access:** Authorized client user level is required. **Request: `sWN LMDscandatascalefactor`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------- | ---------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Write | String | 3 | CoLa A: sWN | | Change distance scale factor | String | 14 | CoLa A: LMDscandatascalefactor | | [mm/digit] | Real as float according to IEEE754 | 4 | Factor × 1: Factor × 2 (values have to be scaled by factor two): MinValue="0.1" MaxValue="16.0" Default “2.0” PhysicalUnit="mm/digit"
CoLa A: 3F800000h 40000000h (Default) | **Response: `sWA LMDscandatascalefactor`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------- | ------------- | -------------- | ------------------------------ | | Answer | String | 3 | CoLa A: sWA | | Change distance scale factor | String | 14 | CoLa A: LMDscandatascalefactor | **Request example** **CoLa A (ASCII)** ```text sWN LMDscandatascalefactor 3F800000 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 73 63 61 6C 65 66 61 63 74 6F 72 20 3F 80 00 00 EA ``` **Response example** **CoLa A (ASCII)** ```text sWA LMDscandatascalefactor ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 57 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 73 63 61 6C 65 66 61 63 74 6F 72 7A ```
### Read the Distance Scaling for the Distance Values of the Scandata [sRN LMDscandatascalefactor] Read the distance scaling for the distance values of the scandata. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN LMDscandatascalefactor`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------- | ------------- | -------------- | ------------------------------ | | Read | String | 3 | CoLa A: sRN | | Change distance scale factor | String | 14 | CoLa A: LMDscandatascalefactor | **Response: `sRA LMDscandatascalefactor`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------- | ---------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Answer | String | 3 | CoLa A: sRA | | Change distance scale factor | String | 14 | CoLa A: LMDscandatascalefactor | | [mm/digit] | Real as float according to IEEE754 | 4 | Factor × 1: Factor × 2 (values have to be scaled by factor two): MinValue="0.1" MaxValue="16.0" Default “1.0” PhysicalUnit="mm/digit"
CoLa A: 3F800000h 40000000h (Default) | **Request example** **CoLa A (ASCII)** ```text sRN LMDscandatascalefactor ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 73 63 61 6C 65 66 61 63 74 6F 72 70 ``` **Response example** **CoLa A (ASCII)** ```text sRA LMDscandatascalefactor 3F800000 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 73 63 61 6C 65 66 61 63 74 6F 72 20 3F 80 00 00 E0 ```
### Poll One Telegram [sRN LMDscandata] Asking the device for the measurement values of the last valid scan. The device will respond, even if currently no measurement data is created (e.g. due to standby or log in). Data is transmitted only via LMDscandata when LMDscandata is selected as data output format. During the boot up phase of the device, there will be no data telegram or answer from the device. > **Important:** The `sRN LMDscandata` and `sEN LMDscandata` telegrams must not be sent via CoLa A. Use CoLa B for these data telegrams; sending them over CoLa A can result in data loss. **Telegram structure: sRN LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Only one telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | **Example: sRN LMDscandata** **CoLa A (ASCII)** ```text sRN{SPC}LMDscandata ``` ```text sRN LMDscandata ``` ```text sRN LMDscandata ``` ```text 02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 05 ``` ```text 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 ``` **Telegram structure: sRA LMDscandata** The response uses the scan-data structure documented for `sRA/sSN LMDscandata` below. The `sEA LMDscandata` telegram is the subscription acknowledgement, not the scan-data payload.
### Send Data Permanently [sEN LMDscandata] Start or stop continuous transmission of measurement data. Data is transmitted as configured as soon as measurement data is generated by the device. No data is generated when there is an active log in, the laser is shut off (e.g. in Standby mode), the motor is stopped, the data format is Compact, or the device is in certain error modes (e.g. Device not ready). Data is transmitted only via LMDscandata when LMDscandata is selected as data output format. During the boot up phase of the device, there will be no data telegram or answer from the device. **Telegram structure: sEN LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Data telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | | Measurement | Start/stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN LMDscandata** **CoLa A (ASCII)** ```text sEN{SPC}LMDscandata{SPC}1 ``` ```text sEN LMDscandata 1 ``` ```text sEN LMDscandata 1 ``` ```text 02 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 33 ``` ```text 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 ``` **Telegram structure: sEA LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sEA` | `73 45 41` | | Command | Data telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | | Measurement | Start/stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: Confirmation of sEA LMDscandata** **CoLa A (ASCII)** ```text sEA{SPC}LMDscandata{SPC}1 ``` ```text 02 73 45 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 45 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 3C ``` The answer to the telegram will be followed by the scandata: **Telegram structure: Datastream of sRA LMDscandata/sSN LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------- | | Command type | Read | String | 3 | Answer to sRN LMDscandata:
Answer to sEN LMDscandata: | `sRA
sSN` | `73 52 41
73 53 4E` | | Command | Data telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | | Version number | For detecting format changes by the version. | Uint_16 | 2 | | `1h … FFFFh` | `00 01 … FF FF` | | Device | | | | | | | | Device number | Defined with SOPAS | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Serial number | Production period (year, calendar week, number): YYWWxxxx | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Device status | (See values column) | Uint_8 | 2 x 1 | Ok:
Error: | `0 0
1 0` | `00 00
01 00` | | Status info | | | | | | | | Telegram counter | Number of measurement telegrams finished in the scanner and given to the interface. Does not count how many telegrams were really given out; is relevant if not all scans are delivered from the scan core. | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Scan counter | Number of scans which were created in the device; counts how many scans were really done. | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Time since start up in µs | In the output telegram this is the time at the zero index before the measurement itself starts. Time base is the boot up time in µs since power up, max. 71 min then starting from 0 again. | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time of transmission in µs | In the output telegram this is the time when the complete scan is transmitted to the buffer for data output. Time base is the boot up time in µs since power up, max. 71 min then starting from 0 again. | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Status of digital inputs | Low byte represents input 1. | Uint_8 | 2 x 1 | All inputs low:
Input 1 high:
Input 2 high:
Input 1+2 high:
All inputs high:
(Depends on system plug and port configuration) | `0 0
1 0
2 0
3 0
3 F` | `00 00
01 00
02 00
03 00
03 0F` | | Status of digital outputs | Low byte represents output 1. | Uint_8 | 2 x 1 | All outputs low:
All outputs high: | `0 0
3 F` | `00 00
03 0F` | | Reserved | - | Uint_16 | 2 | Always: | `0` | `00 00 00 00` | | Frequencies | | | | | | | | Scan frequency | [1/100 Hz] | Uint_32 | 4 | 12.5 Hz:
25 Hz: | `4E2h
9C4h` | `00 00 04 E2
00 00 09 C4` | | Reserved | - | Uint_32 | 4 | Always: | `0` | `00 00 00 00` | | Encoder | | | | | | | | Amount of encoder | If 0, then next two telegram parts are missing. | Enum_16 | 2 | External encoder | `0
1` | `00 00
00 01` | | Encoder position | Info in ticks | Uint_32 | 4 | Only filled if parameter is activated | `0h … FFFFFFFFh` | `00 00 00 00 ... FF FF FF FF` | | Encoder speed | mm/sec
or
milligrad/sec | Uint_16 | 2 | Only filled if parameter is activated | `0h ... FFFFh` | `00 00 ... FF FF` | | 16 bit output channel (Distance) | | | | | | | | Amount of 16 bit channels | Number of 16 bit channels that provide measured data | Enum_16 | 2 | Output channels | `1 or 3` | `01 or 03` | | Content | Defines the content of the output channel | String | 5 | Distance values:
Distance values:
Distance values: | `DIST1
DIST2
DIST3` | `44 49 53 54 31
44 49 53 54 32
44 49 53 54 33` | | Scale factor | Scale factor or factor of the measurement values | Real as float according to IEEE754 | 4 | Factor x 1:
Factor x 2:
Factor x 1 (REFL1) (alternative): | `3F800000h
40000000h` | `3F 80 00 00
40 00 00 00` | | Reserved | - | Real as float according to IEEE754 | 4 | Always: | `00000000` | `00 00 00 00` | | Start angle | [1/10000°] | Int_32 | 4 | -180° ... +180° | `FFE488C0h … 1B7740h` | `FF E4 88 C0 … 00 1B 77 40` | | Size of single angular step | Output format in degree: 1/10000° | Uint_16 | 2 | 0.02° ... 0.48°
(depends on the scan configuration) | `C8h ... 12C0h` | `00 C8 ... 12 C0` | | Amount of data | Number of transmitted measurement points | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Data_1
Data_n | Data stream starting Data_1 to Data_n | Uint_16 | 2 | | `0h … 61A8h` | `00 00 00 00 … 00 00 61 A8` | | 8 bit output channel (RSSI) | | | | | | | | Amount of 8 bit channels | Number of 8 bit channels that provide measured data | Enum_16 | 2 | Output channels: | `1 or 3` | `01 or 03` | | Content | Defines the content of the output channel (RSSI) | String | 5 | | `RSSI1
RSSI2
RSSI3` | `52 53 53 49 31
52 53 53 49 32
52 53 53 49 33` | | Scale factor | Scale factor of the RSSI values | Real as float according to IEEE754 | 4 | Factor x 1:
Factor x 2: | `3F800000h
40000000h` | `3F 80 00 00
40 00 00 00` | | Reserved | - | Real as float according to IEEE754 | 4 | Always: | `00000000h` | `00 00 00 00` | | Start angle | Output format: [1/10000°] | Uint_32 | 4 | -180° ... +180° | `FFE488C0h … 1B7740h` | `FF E4 88 C0 … 00 1B 77 40` | | Size of single angular step | Output format: 1/10000° | Uint_16 | 2 | 0.02° ... 0.48°
(depends on the scan configuration) | `C8h ... 12C0h` | `00 C8 ... 12 C0` | | Amount of data | Number of transmitted measurement points | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Data_1
Data_n | Data stream starting Data_1 to Data_n | Uint_8 | 1 | | `00h ... FFh` | `00 ... FF` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Uint_16 | 2 | Always: | `0` | `00 00` | LMDscandata - reserved values Valid distance measurement values are values starting from 16d upwards; everything below has the following meaning: | DIST | RSSI | Description | | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 0d | 0d | Invalid measurement value; caused by very low remission (extremely dark object), object distance not within measurement range (too close or too far away) or selected filter settings at device | | 1d - 15d | 0d | Reserved, currently not in use | | ≥16d | >0h | Valid measurement values | | ≥16d | 254d | Reflector detected | | ≥16d | 255d | Reserved | Higher measurement values will be given out with a zero, that means no measurement value detected.
### Set Scan Data Format [sWN ScanDataFormat] Set the data serialization format **Telegram structure: sWN ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------------------------------------------------------ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | | Variable Data | Data | Enum_8 | 1 | MSGPACK:
Compact (recommended):
LMDscandata:
Native ROS2: | `+1d (1h)
+2d (2h)
+3d (3h)
+4d (4h)` | `01
02
03
04` | Example: sWN ScanDataFormat Scan data format set to Compact format **Telegram structure: sWA ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | **Example: sWA ScanDataFormat** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataFormat ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 49 ```
## IMU Data Output
### Set IMU Data Enable [sWN EnableInertialMeasurementUnit] Set IMU data enable. **Access:** Authorized client user level is required. **Request: `sWN EnableInertialMeasurementUnit`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set IMU data output. | String | 28 | CoLa A: EnableInertialMeasurementUnit | | Enable/ disable | Bool | 1 | Disable: 0
Enable: 1 | **Response: `sWA EnableInertialMeasurementUnit`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set IMU data output. | String | 28 | CoLa A: EnableInertialMeasurementUnit | **Request example** **CoLa A (ASCII)** ```text sWN EnableInertialMeasurementUnit 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 23 73 57 4E 20 45 6E 61 62 6C 65 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 20 00 07 ``` **Response example** **CoLa A (ASCII)** ```text sWA EnableInertialMeasurementUnit ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 57 41 20 45 6E 61 62 6C 65 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 28 ```
### Read IMU Data [sRN InertialMeasurementUnit] Read IMU data. **Access:** Authorized client user level is required. **Request: `sRN InertialMeasurementUnit`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------------- | | Write | String | 3 | CoLa A: sRN | | Read IMU data | String | 23 | CoLa A: InertialMeasurementUnit | **Response: `sRA InertialMeasurementUnit`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | -------------- | ------------------------------------------------ | | Answer | String | 3 | CoLa A: sRA | | Read IMU data | String | 23 | CoLa A: InertialMeasurementUnit | | Vector with acceleration (including gravity) along the X axes. | Real as float according to IEEE754 | 4 | Real in m/s^2
CoLa A: 00000000h ... FFFFFFFFh | | Vector with acceleration (including gravity) along the Y axes. | Real as float according to IEEE754 | 4 | Real in m/s^2
CoLa A: 00000000h ... FFFFFFFFh | | Vector with acceleration (including gravity) along the Z axes. | Real as float according to IEEE754 | 4 | Real in m/s^2
CoLa A: 00000000h ... FFFFFFFFh | | Vector with rotation rates along the X coordinate axes. | Real as float according to IEEE754 | 4 | Real in rad/s
CoLa A: 00000000h ... FFFFFFFFh | | Vector with rotation rates along the Y coordinate axes. | Real as float according to IEEE754 | 4 | Real in rad/s
CoLa A: 00000000h ... FFFFFFFFh | | Vector with rotation rates along the Z coordinate axes. | Real as float according to IEEE754 | 4 | Real in rad/s
CoLa A: 00000000h ... FFFFFFFFh | | Vector with magnetic field strength along the X coordinate axes. | Real as float according to IEEE754 | 4 | Real in T
CoLa A: 00000000h ... FFFFFFFFh | | Vector with magnetic field strength along the Y coordinate axes. | Real as float according to IEEE754 | 4 | Real in T
CoLa A: 00000000h ... FFFFFFFFh | | Vector with magnetic field strength along the Z coordinate axes. | Real as float according to IEEE754 | 4 | Real in T
CoLa A: 00000000h ... FFFFFFFFh | | Orientation in the specified coordinate system given as quaternion | Real as float according to IEEE754 | 4 | CoLa A: 00000000h ... FFFFFFFFh | | Orientation in the specified coordinate system given as quaternion | Real as float according to IEEE754 | 4 | CoLa A: 00000000h ... FFFFFFFFh | | Orientation in the specified coordinate system given as quaternion | Real as float according to IEEE754 | 4 | CoLa A: 00000000h ... FFFFFFFFh | | Orientation in the specified coordinate system given as quaternion | Real as float according to IEEE754 | 4 | CoLa A: 00000000h ... FFFFFFFFh | | Point in time when the IMU data was captured. Time base is the boot-up time in µs since power up, max. 71 min then starting from 0 again. | Uint_32 | 4 | µs
CoLa A: 0h ... FFFFFFFFh | **Request example** **CoLa A (ASCII)** ```text sRN InertialMeasurementUnit ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 4E 20 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 03 ```
## Region of Interest
### Set Radial Distance Range Filter [sWN LFPradialDistanceRangeFilter] Restriction of the scan(s) to a specified distance range. **Telegram structure: sWN LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | --------------------------------------------------------- | -------- | ------ | -------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Restriction of the scan(s) to a specified distance range. | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter. | Bool_1 | 1 | Off:
On: | `0d (0h)
1d (1h)` | `00
01` | | DistMin | Lower boundary of the distance range. | Int_32 | 4 | Minimum:
Maximum: | `+0d (0h)
+200000d (30D40h)` | `00 00 00 00
00 03 0D 40` | | DistMax | Upper boundary of the distance range. | Int_32 | 4 | Minimum:
Maximum: | `+0d (0h)
+200000d (30D40h)` | `00 00 00 00
00 03 0D 40` | Disable the radial distance range filter and set up the boundaries to min 0mm and max 200000mm. **Telegram structure: sWA LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Restriction of the scan(s) to a specified distance range. | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sWA LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPradialDistanceRangeFilter ``` ```text 02 73 57 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 57 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 70 ```
## Field Evaluation
### Set Activation of Evaluation Group [sMN ActivateEvaluationGroup] The telegram is intended to activate or deactivate groups via telegram. The group activation needs to be changed from always to telegram in advance. **Telegram structure: sMN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------------------------------- | ----------------------------------------- | -------- | ------ | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of evaluation groups to activate/ deactivate | Array | Uint_16 | 2 | Each array element contains two parameters:Evaluation group numberDeactivation / activation of evaluation group | `1d ... 48d (1 ... 30h)` | `00 01 … 00 30` | | Evaluation group number | Evaluation group 1 | UInt_16 | 2 | | `1` | `00 01` | | Deactivation / activation of evaluation group | Activate / deactivate evaluation group 1 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | Evaluation group number | Evaluation group 2 | UInt_16 | 2 | | `2` | `00 02` | | Activate/ deactivate evaluation group | Activate / deactivate evaluation group 2 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | .. | | | | | | | | Evaluation group number | Evaluation group 48 | UInt_16 | 2 | | `48d (30h)` | `00 30` | | Activate/ deactivate evaluation group | Activate / deactivate evaluation group 48 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | **Example1: sMN ActivateEvaluationGroup – Deactivate evaluation group 1** **CoLa A (ASCII)** ```text sMN{SPC}ActivateEvaluationGroup{SPC}1{SPC}1{SPC}0 ``` ```text sMN ActivateEvaluationGroup 1 1 0 ``` ```text sMN ActivateEvaluationGroup 1 1 0 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 20 ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 ``` **Telegram structure: sAN ActivateEvaluation** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------------- | -------------------------------------- | -------- | ------ | ---------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 52 41` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of activated/deactivated evaluation groups | - | UInt_16 | 2 | | `1h... 30h` | `00 01 … 00 30` | | State of activation / deactivation | - | Bool_1 | 1 | Activation/Deactivation failed:
Successfully activated/deactivated: | `0
1` | `00
01` |
### Set Field Evaluation Contour [sMN SetFieldEvaluationContour] This telegram can be used to change or reshape the contour/ polygon of an already defined field. It´s possible to add additional points. **Telegram structure: sMN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------------- | ------------------------------------------------------------ | -------- | --------- | ------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `+1d ... +48d (1h ... 30h)` | `00 01 … 00 30` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Array | 3 ... 100 | | `+3d ... +800d (3h ... 320h)` | `00 03... 03 20` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | .. | | | | | | | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | Must be:
(Other values than 0 will lead to an error) | `0` | `00 00 00 00` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | Must be:
(Other values than 0 will lead to an error) | `0` | `00 00 00 00` | **Example: sMN SetFieldEvaluationContour** **CoLa A (ASCII)** ```text sMN{SPC}SetFieldEvaluationContour{SPC}1{SPC}4{SPC}+2000{SPC}+1000{SPC}+0{SPC}+1000{SPC}+0{SPC}+0{SPC}+2000{SPC}+0{SPC}+0{SPC}+0 ``` ```text sMN SetFieldEvaluationContour 1 4 +2000 +1000 +0 +1000 +0 +0 +2000 +0 +0 +0 ``` ```text sMN SetFieldEvaluationContour 1 4 +2000 +1000 +0 +1000 +0 +0 +2000 +0 +0 +0 ``` ```text 02 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 34 20 2B 32 30 30 30 20 2B 31 30 30 30 20 2B 30 20 2B 31 30 30 30 20 2B 30 20 2B 30 20 2B 32 30 30 30 20 2B 30 20 2B 30 20 2B 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4A 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 1D ``` ```text 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sAN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------ | ------------------------------------------------------------ | -------- | ------ | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 52 41` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | State of evaluation conversion | - | Enum_8 | 1 | Conversion successful:
Invalid Evaluation:
Invalid Polygon:
Invalid Z limit: | `0
1
2
3` | `00
01
02
03` | **Example: sAN SetFieldEvaluationContour – Evaluation conversion successful** **CoLa A (ASCII)** ```text sAN{SPC}SetFieldEvaluationContour{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 14 ```
### Get Field Evaluation Contour [sMN GetFieldEvaluationContour] This telegram can be used to read the contour/ polygon of an already defined field. **Telegram structure: sMN GetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------------------------------ | -------- | ------ | ------------------ | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Get the region of interest of an object detection evaluation | String | 25 | | `GetFieldEvaluationContour` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `+1d ... +48d (1h ... 30h)` | `00 01 … 00 30` | **Example request: sMN GetFieldEvaluationContour (evaluation ID 1)** - CoLa A: `sMN GetFieldEvaluationContour 1` - CoLa A hex: `02 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 03` - CoLa B: `02 02 02 02 00 00 00 20 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 0D` **Telegram structure: sAN GetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------------- | ------------------------------------------------------------ | -------- | --------- | ------------------ | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 52 41` | | Command | Get the region of interest of an object detection evaluation | String | 25 | | `GetFieldEvaluationContour` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Length of array | | Uint_8 | 1 | Always: | `1` | `00 01` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `1h ... 30h` | `00 01 … 00 30` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Array | 3 ... 100 | | `3h ... 320h` | `00 03... 03 20` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | .. | | | | | | | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | Always: | `0` | `00 00 00 00` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | Always: | `0` | `00 00 00 00` | **Example: sAN GetFieldEvaluationContour** **CoLa A (ASCII)** ```text sAN{SPC}GetFieldEvaluationContour{SPC}1{SPC}1{SPC}4{SPC}7D0{SPC}3E8{SPC}0{SPC}3E8{SPC}0{SPC}0{SPC}7D0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 31 20 34 20 37 44 30 20 33 45 38 20 30 20 33 45 38 20 30 20 30 20 37 44 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 04 ```
### Read the Current Field Evaluation Application State [sRN FieldEvaluationApplicationState] Read the current field evaluation application state. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN FieldEvaluationApplicationState`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------------------------------- | ------------- | -------------- | --------------------------------------- | | Read | String | 3 | CoLa A: sRN | | Info on current field evaluation application state | String | 31 | CoLa A: FieldEvaluationApplicationState | **Response: `sRA FieldEvaluationApplicationState`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------------------------------- | ------------- | -------------- | ------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Info on current field evaluation application state | String | 31 | CoLa A: FieldEvaluationApplicationState | | - | Enum_8 | 1 | Deactivated:: 0
Active:: 1
Configuring:: 2
Error:: 3 | **Request example** **CoLa A (ASCII)** ```text sRN FieldEvaluationApplicationState ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 23 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 36 ``` **Response example** **CoLa A (ASCII)** ```text sRA FieldEvaluationApplicationState 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 20 01 18 ```
### Read Field Evaluation Result [sRN FieldEvaluationResult] This telegram returns the status information of all evaluations. **Telegram structure: sRN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN FieldEvaluationResult** **CoLa A (ASCII)** ```text sRN{SPC}FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text 02 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 12 ``` ```text 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------ | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the last field infringement. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | .. | | | | | | | | Evaluation Result | Evaluation state of the last field. (maximum amount of evaluations = 48) | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` |
### Request Perpendicular Distance Once [sRN perpendicularDistanceResult] This telegram can be used to request the perpendicular distance. The shortest and furthest measuring point in a range to a reference plane will be transmitted. A field and a reference plane must be defined in the user interface under Application > Perpendicular distance measurement. **Telegram structure: sRN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | **Example: sRN perpendicularDistanceResult** **CoLa A (ASCII)** ```text sRN{SPC}perpendicularDistanceResult ``` ```text sRN perpendicularDistanceResult ``` ```text sRN perpendicularDistanceResult ``` ```text 02 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 3D ``` ```text 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 ``` **Telegram structure: sRA perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Timestamp | Time of the latest object detection in the defined fields. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_32 | 8 | | `0 ... FFFFFFFFh` | `00 00 00 00 00 00 00 00... FF FF FF FF FF FF FF FF` | | Amount of channels | Amount of perpendicular distance evaluation channels/fields | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | ID of perpendicular distance field | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | Minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | X minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID X | X maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID .. | .. | .. | .. | .. | `..` | `..` | **Example: sRA perpendicularDistanceResult - 1 configured field** **CoLa A (ASCII)** ```text sRA{SPC}perpendicularDistanceResult{SPC}138D305E8{SPC}1{SPC}1{SPC}9D{SPC}7EA{SPC}9D{SPC}FFFFFC67{SPC}0{SPC}7EA{SPC}FFFFFD70{SPC}0 ``` ```text 02 73 52 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 31 33 38 44 33 30 35 45 38 20 31 20 31 20 39 44 20 37 45 41 20 39 44 20 46 46 46 46 46 43 36 37 20 30 20 37 45 41 20 46 46 46 46 46 44 37 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 52 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 00 00 00 01 31 80 92 88 00 01 00 01 00 00 00 9F 00 00 07 EB 00 00 00 9F FF FF FC 8C 00 00 00 00 00 00 07 EB FF FF FD 70 00 00 00 00 45 ```
### Request Perpendicular Distance Continuously on Event [sEN perpendicularDistanceResult] This telegram can be used to request the perpendicular distance continuously on event. The shortest and furthest measuring point in a range to a reference plane will be transmitted. A field and a reference plane must be defined in the user interface under Application > Perpendicular distance measurement. **Telegram structure: sEN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Start/ Stop | - | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN perpendicularDistanceResult** **CoLa A (ASCII)** ```text sEN{SPC}perpendicularDistanceResult{SPC}1 ``` ```text sEN perpendicularDistanceResult 1 ``` ```text sEN perpendicularDistanceResult 1 ``` ```text 02 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 0B ``` ```text 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sSN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Timestamp | Time of the latest object detection in the defined fields. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_32 | 8 | | `0 ... FFFFFFFFh` | `00 00 00 00 00 00 00 00... FF FF FF FF FF FF FF FF` | | Amount of channels | Amount of perpendicular distance evaluation channels/fields | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | ID of perpendicular distance field | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | Minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | X minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID X | X maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID .. | .. | .. | .. | .. | `..` | `..` | **Example: sSN perpendicularDistanceResult - 1 configured field** **CoLa A (ASCII)** ```text sSN{SPC}perpendicularDistanceResult{SPC}D5BD2DA8{SPC}1{SPC}1{SPC}174{SPC}7CE{SPC}174{SPC}FFFFFFFC{SPC}0{SPC}7CE{SPC}FFFFFD13{SPC}0 ``` ```text 02 73 53 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 44 35 42 44 32 44 41 38 20 31 20 31 20 31 37 34 20 37 43 45 20 31 37 34 20 46 46 46 46 46 46 46 43 20 30 20 37 43 45 20 46 46 46 46 46 44 31 33 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 53 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 00 00 00 00 F9 B6 D5 88 00 01 00 01 00 00 00 9D 00 00 07 D0 00 00 00 9D FF FF FC D0 00 00 00 00 00 00 07 D0 FF FF FD 1F 00 00 00 00 C0 ```
### Read Evaluation Group Type [sRN EvaluationGroupType] Array with the type of each group, either perpendicular distance or field evaluation. **Telegram structure: sRN EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | **Example: sRN EvaluationGroupType** **CoLa A (ASCII)** ```text sRN{SPC}EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text 02 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 1E ``` ```text 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 ``` **Telegram structure: sRA EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | -------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | | Data | Type of evaluation group | Array | 48 | Field evaluation:
Perpendicular distance: | `0d (00h)
+1d (01h)` | `00
01` |
## Operating Data
### Read Temperature [sRN OPcurtmpdev] Read temperature. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN OPcurtmpdev`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------ | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Read temperature of the device | String | 11 | CoLa A: OPcurtmpdev | **Response: `sRA OPcurtmpdev`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------ | ---------------------------------- | -------------- | ------------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Read temperature of the device | String | 11 | CoLa A: OPcurtmpdev | | [°C] | Real as float according to IEEE754 | 4 | (-50°C … +100°C)
CoLa A: C2480000h … 42C80000h | **Request example** **CoLa A (ASCII)** ```text sRN OPcurtmpdev ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 2A ``` **Response example** **CoLa A (ASCII)** ```text sRA OPcurtmpdev 420C0000 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 42 0C 00 00 4B ```
### Read Operating Hours [sRN ODoprh] Views the total number of operating hours during the lifetime of the device. **Telegram structure: sRN ODoprh** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read operating hours | String | 6 | | `ODoprh` | `4F 44 6F 70 72 68` | **Example: sRN ODoprh** **CoLa A (ASCII)** ```text sRN{SPC}ODoprh ``` ```text sRN ODoprh ``` ```text sRN ODoprh ``` ```text 02 73 52 4E 20 4F 44 6F 70 72 68 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 44 6F 70 72 68 41 ``` ```text 73 52 4E 20 4F 44 6F 70 72 68 ``` **Telegram structure: sRA ODoprh** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read operating hours | String | 6 | | `ODoprh` | `4F 44 6F 70 72 68` | | Value | Operating hours in 1/10 h | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODoprh** **CoLa A (ASCII)** ```text sRA{SPC}ODoprh{SPC}1B50B ``` ```text 02 73 52 41 20 4F 44 6F 70 72 68 20 31 42 35 30 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4F 44 6F 70 72 68 20 00 01 B5 0B D1 ``` Calculation of the value: 1B50B (hex) 111883 (dez) × 1/10 h = 11188.3 h
### Read Power on Counter [sRN ODpwrc] Shows the number of power on cycles. **Telegram structure: sRN ODpwrc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read power on counter | String | 6 | | `ODpwrc` | `4F 44 70 77 72 63` | **Example: sRN ODpwrc** **CoLa A (ASCII)** ```text sRN{SPC}ODpwrc ``` ```text sRN ODpwrc ``` ```text sRN ODpwrc ``` ```text 02 73 52 4E 20 4F 44 70 77 72 63 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 44 70 77 72 63 52 ``` ```text 73 52 4E 20 4F 44 70 77 72 63 ``` **Telegram structure: sRA ODpwrc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read power on counter | String | 6 | | `ODpwrc` | `4F 44 70 77 72 63` | | Value | Power on counter | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODpwrc** **CoLa A (ASCII)** ```text sRA{SPC}ODpwrc{SPC}9A ``` ```text 02 73 52 41 20 4F 44 70 77 72 63 20 39 41 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4F 44 70 77 72 63 20 00 00 00 9A E7 ```
## 3D Scan Recording
### Set Scan Merger Source [sWN ScanMergerSource] Set Scan Merger source. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sWN ScanMergerSource`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------- | ------------- | -------------- | ------------------------- | | Write | String | 3 | CoLa A: sWN | | Set Source for Scan Merger | String | 16 | CoLa A: ScanMergerSource | | Source | Enum_8 | 1 | IMU:: 0
Encoder:: 1 | **Response: `sWA ScanMergerSource`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set Source for Scan Merger | String | 16 | CoLa A: ScanMergerSource | **Request example** **CoLa A (ASCII)** ```text sWN ScanMergerSource 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 4E 20 53 63 61 6E 4D 65 72 67 65 72 53 6F 75 72 63 65 20 01 43 ``` **Response example** **CoLa A (ASCII)** ```text sWA ScanMergerSource ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 53 63 61 6E 4D 65 72 67 65 72 53 6F 75 72 63 65 6D ```
### Start Scan Merger Recording [sMN StartScanMerge] Start Scan Merger recording. **Access:** Authorized client user level is required. **Request: `sMN StartScanMerge`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | --------------------------- | ------------- | -------------- | ------------------------- | | Method | String | 3 | CoLa A: sMN | | Start Scan Merger recording | String | 14 | CoLa A: StartScanMerge | **Response: `sAN StartScanMerge`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | --------------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sAN | | Start Scan Merger recording | String | 14 | CoLa A: StartScanMerge | **Request example** **CoLa A (ASCII)** ```text sMN StartScanMerge ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 4D 4E 20 53 74 61 72 74 53 63 61 6E 4D 65 72 67 65 77 ``` **Response example** **CoLa A (ASCII)** ```text sAN StartScanMerge ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 53 74 61 72 74 53 63 61 6E 4D 65 72 67 65 7B ```
### Stop Scan Merger Recording [sMN StopScanMerge] Stop Scan Merger recording. **Access:** Authorized client user level is required. **Request: `sMN StopScanMerge`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------- | ------------- | -------------- | ------------------------- | | Method | String | 3 | CoLa A: sMN | | Stop Scan Merger recording | String | 13 | CoLa A: StopScanMerge | **Response: `sAN StopScanMerge`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sAN | | Stop Scan Merger recording | String | 13 | CoLa A: StopScanMerge | **Request example** **CoLa A (ASCII)** ```text sMN StopScanMerge ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 53 74 6F 70 53 63 61 6E 4D 65 72 67 65 0F ``` **Response example** **CoLa A (ASCII)** ```text sAN StopScanMerge ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 53 74 6F 70 53 63 61 6E 4D 65 72 67 65 03 ```
### Read for Scan Merger Saving Status [sRN MergeSaving] Read for Scan Merger saving status. **Access:** Authorized client user level is required. **Request: `sRN MergeSaving`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Read for Scan Merger saving status | String | 11 | CoLa A: MergeSaving | **Response: `sRA MergeSaving`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ---------------------------------- | ------------- | -------------- | ---------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Read for Scan Merger saving status | String | 11 | CoLa A: MergeSaving | | Saving status | Bool_1 | 1 | Saving not active:: 0
Saving in process:: 1 | **Request example** **CoLa A (ASCII)** ```text sRN MergeSaving ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4D 65 72 67 65 53 61 76 69 6E 67 33 ``` **Response example** **CoLa A (ASCII)** ```text sRA MergeSaving 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 4D 65 72 67 65 53 61 76 69 6E 67 20 00 1C ```
### Set Encoder Transformation Type [sWN EncoderTransformationType] Set Encoder transformation type. **Access:** Authorized client user level is required. **Request: `sWN EncoderTransformationType`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------- | ------------- | -------------- | --------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set encoder transformation type | String | 25 | CoLa A: EncoderTransformationType | | Transformation type | Enum_8 | 1 | Rotation:: 0
Translation:: 1 | **Response: `sWA EncoderTransformationType`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------- | ------------- | -------------- | --------------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set encoder transformation type | String | 25 | CoLa A: EncoderTransformationType | **Request example** **CoLa A (ASCII)** ```text sWN EncoderTransformationType 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 45 6E 63 6F 64 65 72 54 72 61 6E 73 66 6F 72 6D 61 74 69 6F 6E 54 79 70 65 20 00 37 ``` **Response example** **CoLa A (ASCII)** ```text sWA EncoderTransformationType ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 41 20 45 6E 63 6F 64 65 72 54 72 61 6E 73 66 6F 72 6D 61 74 69 6F 6E 54 79 70 65 18 ```
### Set Start Orientation for Encoder Transformation Type Rotation [sWN EncoderRotation] Set start orientation for encoder transformation type rotation. **Access:** Authorized client user level is required. **Request: `sWN EncoderRotation`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ----------------------------------------------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set encoder rotation | String | 15 | CoLa A: EncoderRotation | | Yaw in 1/10000° | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -3600000 d (FFC91180h) +3600000 d (36EE80h) | | Pitch in 1/10000° | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -3600000d (FFC91180h) +3600000 d (36EE80h) | | Roll in 1/10000° | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -3600000d (FFC91180h) +3600000 d (36EE80h) | **Response: `sWA EncoderRotation`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set encoder rotation | String | 15 | CoLa A: EncoderRotation | **Request example** **CoLa A (ASCII)** ```text sWN EncoderRotation FFF24460 0 DBBA0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 57 4E 20 45 6E 63 6F 64 65 72 52 6F 74 61 74 69 6F 6E 20 FF F2 44 60 00 00 00 00 00 0D BB A0 35 ``` **Response example** **CoLa A (ASCII)** ```text sWA EncoderRotation ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 45 6E 63 6F 64 65 72 52 6F 74 61 74 69 6F 6E 25 ```
### Set Start Orientation for Encoder Transformation Type Translation [sWN EncoderTranslation] Set start orientation for encoder transformation type translation. **Access:** Authorized client user level is required. **Request: `sWN EncoderTranslation`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | -------------------------------------------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set encoder translation | String | 18 | CoLa A: EncoderTranslation | | Offset for X in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Y in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Z in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | **Response: `sWA EncoderTranslation`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | -------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set encoder translation | String | 18 | CoLa A: EncoderTranslation | **Request example** **CoLa A (ASCII)** ```text sWN EncoderTranslation FFFE7960 0 186A0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 23 73 57 4E 20 45 6E 63 6F 64 65 72 54 72 61 6E 73 6C 61 74 69 6F 6E 20 FF FE 79 60 00 00 00 00 00 01 86 A0 4A ``` **Response example** **CoLa A (ASCII)** ```text sWA EncoderTranslation ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 45 6E 63 6F 64 65 72 54 72 61 6E 73 6C 61 74 69 6F 6E 5A ```
### Set Rotation Offset [sWN RotationOffset] Set rotation offset. **Access:** Authorized client user level is required. **Request: `sWN RotationOffset`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | -------------------------------------------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set a rotation offset | String | 14 | CoLa A: RotationOffset | | Offset for X in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Y in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Z in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | **Response: `sWA RotationOffset`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | -------------------------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set rotation offset | String | 14 | CoLa A: RotationOffset | | Answer | String | 3 | CoLa A: sRA | | Read rotation offset | String | 14 | CoLa A: RotationOffset | | Offset for X in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Y in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Z in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | **Request example** **CoLa A (ASCII)** ```text sWN RotationOffset FFFE7960 0 186A0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 52 6F 74 61 74 69 6F 6E 4F 66 66 73 65 74 20 FF FE 79 60 00 00 00 00 00 01 86 A0 4C ```
### Read for Rotation Offset [sRN RotationOffset] Read for rotation offset. **Access:** Authorized client user level is required. **Request: `sRN RotationOffset`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Read rotation offset | String | 14 | CoLa A: RotationOffset | **Response: `sRA RotationOffset`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | -------------------------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Read rotation offset | String | 14 | CoLa A: RotationOffset | | Offset for X in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Y in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | | Offset for Z in mm | Int_32 | 4 | Default: Min: Max:
CoLa A: +0 d (0h) -100000 d (FFFE7960h) +100000 d (186A0h) | **Request example** **CoLa A (ASCII)** ```text sRN RotationOffset ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 52 6F 74 61 74 69 6F 6E 4F 66 66 73 65 74 56 ``` **Response example** **CoLa A (ASCII)** ```text sRA RotationOffset FFFE7960 0 186A0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 41 20 52 6F 74 61 74 69 6F 6E 4F 66 66 73 65 74 20 FF FE 79 60 00 00 00 00 00 01 86 A0 46 ```
### Set Scan Merger Trigger [sWN ScanMergeTrigger] Set Scan Merger trigger. **Access:** Authorized client user level is required. **Request: `sWN ScanMergeTrigger`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------ | ------------- | -------------- | -------------------------------- | | Write | String | 3 | CoLa A: sWN | | Select Trigger for Scan Merger | String | 16 | CoLa A: ScanMergeTrigger | | Trigger source | Enum_8 | 1 | Command:: 0
Digital input:: 1 | **Response: `sWA ScanMergeTrigger`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------------ | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Select Trigger for Scan Merger | String | 16 | CoLa A: ScanMergeTrigger | **Request example** **CoLa A (ASCII)** ```text sWN ScanMergeTrigger 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 4E 20 53 63 61 6E 4D 65 72 67 65 54 72 69 67 67 65 72 20 01 54 ``` **Response example** **CoLa A (ASCII)** ```text sWA ScanMergeTrigger ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 53 63 61 6E 4D 65 72 67 65 54 72 69 67 67 65 72 7A ```
### Set Scan Merger [sWN ScanMergerEnabled] Set Scan Merger. **Access:** Authorized client user level is required. **Request: `sWN ScanMergerEnabled`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Write | String | 3 | CoLa A: sWN | | Set Scan Merger | String | 17 | CoLa A: ScanMergerEnabled | | Enable/ Disable | Bool_1 | 1 | Disable:: 0
Enable:: 1 | **Response: `sWA ScanMergerEnabled`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set Scan Merger | String | 17 | CoLa A: ScanMergerEnabled | **Request example** **CoLa A (ASCII)** ```text sWN ScanMergerEnabled 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 53 63 61 6E 4D 65 72 67 65 72 45 6E 61 62 6C 65 64 20 01 3B ``` **Response example** **CoLa A (ASCII)** ```text sWA ScanMergerEnabled ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 53 63 61 6E 4D 65 72 67 65 72 45 6E 61 62 6C 65 64 15 ```
## Motor Synchronization
### Set Synchronization Mode [sWN SYMode] Set synchronization mode. **Access:** Authorized client user level is required. **Request: `sWN SYMode`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ------------------------- | ------------- | -------------- | -------------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set sync mode | String | 6 | CoLa A: SYMode | | Synchronization mode data | Bool_1 | 1 | No sync:: 0
Sync by wire:: 1
Sync by PTP:: 3 | **Response: `sWA SYMode`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set sync mode | String | 6 | CoLa A: SYMode | **Request example** **CoLa A (ASCII)** ```text sWN SYMode 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 57 4E 20 53 59 4D 6F 64 65 20 01 42 ``` **Response example** **CoLa A (ASCII)** ```text sWA SYMode ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 57 41 20 53 59 4D 6F 64 65 6C ```
### Set Synchronization Phase [sWN SYPhase] Set synchronization phase. **Access:** Authorized client user level is required. **Request: `sWN SYPhase`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------- | ------------- | -------------- | ----------------------------------------------------------- | | Write | String | 3 | CoLa A: sWN | | Set sync phase | String | 7 | CoLa A: SYPhase | | Synchronization phase data | Int_16 | 2 | Default:
CoLa A: +180d (B4h) -180d … +180d (FF4Ch … B4h) | **Response: `sWA SYPhase`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set sync phase | String | 7 | CoLa A: SYPhase | **Request example** **CoLa A (ASCII)** ```text sWN SYPhase +90 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 4E 20 53 59 50 68 61 73 65 20 00 5A 75 ``` **Response example** **CoLa A (ASCII)** ```text sWA SYPhase ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 53 59 50 68 61 73 65 00 ```
### Read for Motor Synchronization [sRN MotorSyncStatus] Read for Motor synchronization. **Access:** Authorized client user level is required. **Request: `sRN MotorSyncStatus`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | --------------------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Read motor synchronization status | String | 15 | CoLa A: MotorSyncStatus | **Response: `sRA MotorSyncStatus`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | --------------------------------- | ------------- | -------------- | ---------------------------------------------------------------------- | | Answer | String | 3 | CoLa A: sRA | | Read motor synchronization status | String | 15 | CoLa A: MotorSyncStatus | | Synchronization status | Enum_8 | 1 | Not synchronized:: 0
Only Time synchronized:: 1
Synchronized:: 2 | **Request example** **CoLa A (ASCII)** ```text sRN MotorSyncStatus ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 4E 20 4D 6F 74 6F 72 53 79 6E 63 53 74 61 74 75 73 17 ``` **Response example** **CoLa A (ASCII)** ```text sRA MotorSyncStatus 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 41 20 4D 6F 74 6F 72 53 79 6E 63 53 74 61 74 75 73 20 00 38 ```
## Encoder
### Set Increment Source [sWN LICsrc] Set increment source. **Access:** Authorized client user level is required. **Request: `sWN LICsrc`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Write | String | 3 | CoLa A: sWN | | Set increment source | String | 6 | CoLa A: LICsrc | | Parameter | Enum_8 | 1 | Encoder:
CoLa A: 1 | **Response: `sWA LICsrc`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sWA | | Set increment source | String | 6 | CoLa A: LICsrc | **Request example** **CoLa A (ASCII)** ```text sWN LICsrc 1 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 57 4E 20 4C 49 43 73 72 63 20 01 4F ``` **Response example** **CoLa A (ASCII)** ```text sWA LICsrc ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 57 41 20 4C 49 43 73 72 63 61 ```
### Set Encoder Settings [sWN LICencset] Define if and which type of encoder is connected to the device so that input signals are processed correctly. **Telegram structure: sWN LICencset** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ---------------- | -------- | ------ | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- | --------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Encoder settings | String | 9 | | `LICencset` | `4C 49 43 65 6E 63 73 65 74` | | Encoder setting | | Enum_8 | 1 | Off:
Single increment/INC1:
Direction recognition (phase):
Direction recognition (level):
Fixed speed: | `0
1
2
3
4` | `00
01
02
03
04` | **Example: sWN LICencset** **CoLa A (ASCII)** ```text sWN{SPC}LICencset{SPC}0 ``` ```text sWN LICencset 0 ``` ```text sWN LICencset 0 ``` ```text 02 73 57 4E 20 4C 49 43 65 6E 63 73 65 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 4C 49 43 65 6E 63 73 65 74 20 00 26 ``` ```text 73 57 4E 20 4C 49 43 65 6E 63 73 65 74 20 00 ``` **Telegram structure: sWA LICencset** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Encoder settings | String | 9 | | `LICencset` | `4C 49 43 65 6E 63 73 65 74` | **Example: sWA LICencset** **CoLa A (ASCII)** ```text sWA{SPC}LICencset ``` ```text 02 73 57 41 20 4C 49 43 65 6E 63 73 65 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 49 43 65 6E 63 73 65 74 20 29 ```
### Set Encoder Resolution [sWN LICencres] Determine the encoder resolution in mm/increment. **Telegram structure: sWN LICencres** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | -------------------------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------------- | -------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set encoder resolution | String | 9 | | `LICencres` | `4C 49 43 65 6E 63 72 65 73` | | Encoder resolution | Resolution value in mm/Inc as float according to IEEE754 | Real | 4 | | `+0.001d … +2000d` | `3A 83 12 6F … 44 FA 00 00
(see IEEE 754)` | **Example: sWN LICencres** **CoLa A (ASCII)** ```text sWN{SPC}LICencres{SPC}+1000 ``` ```text sWN LICencres +1000 ``` ```text sWN LICencres +1000 ``` ```text 02 73 57 4E 20 4C 49 43 65 6E 63 72 65 73 20 2B 31 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 4C 49 43 65 6E 63 72 65 73 20 44 7A 00 00 1E ``` ```text 73 57 4E 20 4C 49 43 65 6E 63 72 65 73 20 44 7A 00 00 ``` **Telegram structure: sWA LICencres** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set encoder resolution | String | 9 | | `LICencres` | `4C 49 43 65 6E 63 72 65 73` | **Example: sWA LICencres** **CoLa A (ASCII)** ```text sWA{SPC}LICencres ``` ```text 02 73 57 41 20 4C 49 43 65 6E 63 72 65 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 49 43 65 6E 63 72 65 73 20 2F ```
### Read Encoder Speed [sRN LICencsp] Read encoder speed. **Access:** No additional user-level requirement is specified in this telegram table. **Request: `sRN LICencsp`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | ----------------------- | ------------- | -------------- | ------------------------- | | Read | String | 3 | CoLa A: sRN | | Read encoder speed | String | 8 | CoLa A: LICencsp | **Response: `sRA LICencsp`** | Telegram part / meaning | Variable type | Length (bytes) | Values, ranges, and notes | | -------------------------------------------- | ------------- | -------------- | ------------------------- | | Answer | String | 3 | CoLa A: sRA | | Read encoder speed | String | 8 | CoLa A: LICencsp | | [Speed in m/s as float according to IEEE754] | Real | 4 | CoLa A: 0h … FFFFFFFFh | **Request example** **CoLa A (ASCII)** ```text sRN LICencsp ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 4C 49 43 65 6E 63 73 70 62 ``` **Response example** **CoLa A (ASCII)** ```text sRA LICencsp 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 4C 49 43 65 6E 63 73 70 20 00 00 00 00 4D ```
--- # LRS4000 Electrical Connection and Pin Assignment > Wire the LRS4000 power, Ethernet, encoder, and digital I/O connectors to a controller using the documented M12 pin assignments. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/ # Electrical Connection Compatible with: LRS4000 The LRS4000 has separate M12 connectors for power, Ethernet, and digital I/O/encoder signals. The tables below reproduce the assignments from LRS4000 operating instructions 8026337/1VNC, pages 34–35. To check whether the sensor still receives its minimum supply voltage at the end of a long cable, use the [Cable Dimensioning](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cable-dimensioning/) calculator. ## Power This connection uses a male, 5-pin, A-coded M12 connector. ![PWR connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/lrs4000-pwr.png)

PWR connector face with numbered pins.

**PWR** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `Vs` | Supply, +10 V DC to +30 V DC | | 2 | — | Reserved; do not connect | | 3 | `GND` | Supply return, 0 V | | 4 | `IN8/OUT8` | Configurable digital input 8 or output 8 | | 5 | — | Reserved; do not connect | ## Ethernet This connection uses a female, 4-pin, D-coded M12 connector. ![Ethernet connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/lrs4000-ethernet.png)

Ethernet connector face with numbered pins.

**Ethernet** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `TX+` | Transmit + | | 2 | `RX+` | Receive + | | 3 | `TX-` | Transmit − | | 4 | `RX-` | Receive − | ## IOs and Encoder This connection uses a female, 8-pin, A-coded M12 connector. ![I/O and encoder connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/lrs4000-io.png)

I/O and encoder connector face with numbered pins.

**IOs and Encoder** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `IN1` | Encoder input 1 | | 2 | `IN2` | Encoder input 2 | | 3 | `IN3/OUT3` | Configurable digital input 3 or output 3 | | 4 | `IN4/OUT4` | Configurable digital input 4 or output 4 | | 5 | `IN5/OUT5` | Configurable digital input 5 or output 5 | | 6 | `IN6/OUT6` | Configurable digital input 6 or output 6 | | 7 | `GND INx/OUTx` | Common reference for all digital I/O | | 8 | `IN7/OUT7` | Configurable digital input 7 or output 7 | --- # LRS4000 Motor Synchronization > Synchronize LRS4000 scan start angles with PTP over Ethernet or with an index signal between a reference sensor and synchronized sensors. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/motor-synchronization/ # Motor Synchronization Motor synchronization coordinates measurement start angles across several LRS4000 sensors. It can increase the effective scan frequency or resolution of a combined system. The sensor shifts its measurement start angle between −180° and +180°; set the phase for each device individually. LRS4000 supports two synchronization methods. ## PTP Synchronization Synchronize the LiDAR sensors over Ethernet to a central PTP master. The sensors then share a system time and operate synchronously. The OpenAPI reference exposes the `SyncMode` and `SyncPhase` settings and provides the `MotorSyncStatus` endpoint. ## Synchronization Through Inputs and Outputs Use one LRS4000 as the reference device and configure the remaining devices as synchronized devices. 1. On the reference device, set the motor synchronization source to **No source**, define its start angle, and configure an output with the index signal as its source. 2. On each synchronized device, set the motor synchronization source to **Line (index signal at IN1)** and define its start angle. 3. Connect each synchronized device's IN1 to the reference device's output that generates the index signal. Combine measurement data from multiple devices in the customer application. ## Check Synchronization Status Read the `MotorSyncStatus` endpoint in the [LRS4000 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/). The documented values distinguish between no clock/rotation synchronization, time synchronization only, and synchronized operation. ## Related Articles - [LRS4000 REST API | OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) - [Time Synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [3D scan recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/) --- # LRS4000 Firmware Release Notes > LRS4000 firmware history, update guidance, feature changes, fixes, and known issues from versions 1.10.0 to 1.4.0. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/release-notes/ # Release Notes This page summarizes LRS4000 firmware changes, fixes, compatibility notes, and known issues. The releases apply to the LRS4581R. Check the device serial number and firmware version before applying release-specific information. ## General Information The extended-range capability is available for eligible devices. Firmware from version 1.7.0 supports that mode only on devices produced from November 2024 with serial number `SN2442xxxx` or higher. Earlier devices may be updated, but do not gain the extended-range feature. ## Update Instructions Use SOPAS ET or Sentio Creator for firmware updates. Downgrading firmware is not recommended. For the steps, see [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/#sopas-et). ## Firmware V1.10.0 **Compatible with:** LRS4581R **New features:** Redesigned web interface, cybersecurity page, HTTPS for web services, distance-data recording, and Perpendicular Distance. **Improvements:** SOPAS ET web-server access and encoder settings presentation. **New features.** - The web interface was redesigned, and a cybersecurity page was added to show open ports and user levels and manage related settings. - Web-server and REST configuration can use HTTPS. - Distance-data recording is available through the SICK data recorder; download the software from the device web interface. - Perpendicular Distance functionality was added. **Improvements.** - SOPAS ET can enable a disabled web server and now links to the device web interface instead of emulating it. - Encoder settings are shown under inputs and outputs; encoder functionality is unchanged. **Bug fixes.** - Invalid device IP address ranges are now rejected by the sensor, preventing the fatal device error that could occur with an invalid address. - Several minor field-evaluation bugs have been fixed. - DHCP fallback behavior has been corrected to use static IP. **Incompatibilities.** - `sWN EtherCoLaAEventsEnable` is no longer available. CoLa A event output is generally allowed, but do not use it for LMDscandata because data may be lost. - `sWN ScanDataEnable` has no effect. Use the data-output format setting to disable output. **Known issues.** Device temperature is displayed as 20 °C in the web interface and by `sRN OPcurtmpdev`. This display and telegram behavior are planned for removal in a later firmware version. ## Firmware V1.9.1 **Compatible with:** LRS4581R; **Release date:** 2026-04 **Improvements:** Softer motor startup after power-on. **Bug fixes.** - Activating field-evaluation groups through inputs 1 to 3 no longer causes device errors. The incorrect offset between physical inputs and the input selections in the group tab has also been corrected. - The device no longer enters an overload error after startup when multiple configured groups would overload it if all were active simultaneously. **Known issues.** After reboot, an IP address in the `169.254.x.x` range may cause a fatal device error. Return the device to `192.168.0.1` and install current firmware through SOPAS ET as a recovery procedure. ## Firmware V1.9.0 **Compatible with:** LRS4581R **New feature:** Adds Sensitivity Mode. **Sensitivity Mode.** The mode can extend range and improve detection of highly reflective targets. Observe the operating conditions in the table below. Using a mode outside its stated ambient-light conditions may reduce detection probability and increase noise.

**Firmware V1.9.0:** maximum range in standard and extended-range mode (10% remission) and maximum ambient light per sensitivity mode.

| Sensitivity mode | Maximum range, standard mode (10% remission) | Maximum range, extended-range mode (10% remission) | Maximum ambient light | | --- | ---: | ---: | ---: | | Normal | 55 m | 100 m | 80 klux | | Sensitive | 65 m | 115 m | 30 klux | | Very Sensitive | 70 m | 120 m | 10 klux | **Incompatibilities.** The device temperature sensor was removed. `OPcurtmpdev` no longer works. ## Firmware V1.8.1 **Compatible with:** LRS4581R **Improvement:** Adds an adjustable TCP transmit timeout for CoLa connections. `EtherColaTransmitTimeout` adjusts the transmit timeout for TCP connections on ports 2111 and 2112. The default remains 15 seconds; the setting can be changed from 250 milliseconds to 15 seconds to speed reconnection after an unexpected disconnect. **Bug fixes.** The release fixes CoLa A/B commands being ignored after reconnecting over an unstable network on TCP ports 2111 and 2112. **Known issues.** The GUI depicts the input/output connector as male A-coded, although the connector should be female A-coded. ## Firmware V1.8.0 **Compatible with:** LRS4581R **New features:** Field-evaluation detection history and teach-in, additional GUI languages, and a cybersecurity tab with a hash calculator. **Improvements:** Compact timestamps, date/time interface, and maximum region-of-interest range. **New features.** - The home page shows field-infringement detection history, with links to related field-evaluation pages. - Teach-in can capture a static background manually or through an input. The taught background can be used for blanking and contour evaluation. - A detection-list shortcut was added to field evaluation. - Chinese, Japanese, and French were added as GUI languages. - The cybersecurity tab groups security functions. Its hash calculator is required for changing passwords through CoLa A/B or logging in through a SICK software driver. **Improvements and bug fixes.** - The field-evaluation setting previously labeled **Do not regard an echo as object detected** is now labeled **Ignore missing echo**. - Detection history has a revised graphical layout. - Start and stop timestamps in Compact output are now transmitted as Linux system time. - The date and system-time GUI has been updated. - The maximum region-of-interest scanning range has increased from 200 m to 300 m to cover all possible LRS4000 distance values. - Loading application defaults now resets the LED enablement state correctly. - SOPAS ET device import has been corrected so that all parameters are included in parameter export. **Known issues.** The input/output connector is depicted as male A-coded in the GUI, but should be female A-coded. ## Firmware V1.7.0 **Compatible with:** LRS4581R; extended-range feature only on eligible production units **New features:** Extended-range mode, field evaluation, online help, user-level management, and distance measurement between two points. **New features.** - Extended-range mode increases measurement distance up to 300 m. It is selected through the scan configuration, which also changes the scale factor. Eligibility is limited to devices produced from November 2024 with serial number `SN2442xxxx` or higher. - Field evaluation supports up to 16 user-defined fields, subject to field shape and concurrent application load. - Online help provides topic descriptions and guided tours. - Other web-interface user levels can be enabled after logging in at Service level; CoLa A/B user levels are unaffected. - The scan view can measure the distance between two points. **Improvements and bug fixes.** - The distance filter has been renamed **Scanning range filter**, and its graphical presentation has been updated. The scan view now shows the ignored scan area in gray. - The separate start and stop buttons for 3D scan recording have been combined into one button that changes function. Recording can therefore be started and stopped without moving the mouse. - The 3D scan view has an updated appearance and additional options. - The diagnostics overview provides additional message filters, including filtering by occurrence time and showing only active messages. - A fatal device error has been fixed for configurations combining an angular area below 360° (12.5 Hz / 0.02° or 25 Hz / 0.04°) with the echo filter set to **First echo** or **Last echo**. - The scan-data viewer has been adapted for compatibility with updated Chromium browsers. **Incompatibilities.** The default echo-filter value changed from `FIRST_ECHO` to `LAST_ECHO`. **Known issues.** During 3D scan recording, an overtime measurement stop may leave the button showing **Stop**. Pressing it a second time restores the **Start** state. ## Firmware V1.6.0 **Compatible with:** LRS4581R **New features:** Scan merge, Compact streaming over TCP, motor synchronization, and system diagnosis. **New features.** - Scan merge creates a 3D point cloud using position and orientation from the internal IMU or an external encoder. A rotation offset can compensate for rotation around a pivot; the recording can be started in the GUI or by a digital input. The resulting point cloud can be downloaded through the browser. - Compact streaming was added over TCP port 2115. UDP is not supported for this format on this device, and only one streaming format can be enabled at a time. - Motor synchronization can use PTP clock synchronization or a wired index signal. Synchronization is disabled by default; the receiver phase can set the rotation offset. - System diagnosis can create a reduced diagnosis after an error or an extended file at Service level. **Improvements.** Robustness was improved for applications that move or swivel the device. **Known issues.** Certain combinations of partial scan configurations and first- or last-echo filtering could cause a fatal device error. This was fixed in V1.7.0. A Chrome scan-view issue was also fixed in V1.7.0. ## Firmware V1.5.0 **Compatible with:** LRS4581R **New features:** Particle Filter, Distance Filter, updated scan-data viewer, and a prompt to change default passwords. **New features.** - Particle Filter removes isolated small-object or noise echoes, such as rain or dust, based on distance steps from neighboring beam angles. - Distance Filter limits scans to a configured range; out-of-range echoes receive distance and RSSI values of zero. - The scan viewer adds 3D and split views. - The interface prompts users to change passwords that are still at their defaults. **Incompatibilities.** Customer passwords from firmware earlier than 1.5.0 are reset to defaults because of updated password handling. The Glare Detection Filter was removed and replaced by Particle Filter. **Known issues.** The fatal-error scan configuration and Chrome scan-view issues from V1.6.0 also apply to this release; both are fixed in V1.7.0. ## Firmware V1.4.0 **Compatible with:** LRS4581R **New features:** Contamination Indication, PTP, IMU secondary data, and controls for the web server and CoLaScan/AutoIP. **New features.** - Contamination Indication monitors 12 sectors around 360 degrees. Thresholds, response time, and weather-protection cover can be configured. Monitoring is available by GUI and telegram; evaluation is inactive by default. - PTP synchronization can be enabled through the web interface or the `TSCRole` CoLa parameter. - IMU secondary data can be read or sent as events. - The web server can be disabled from connection settings. `EnableColaScan` can disable CoLaScan/AutoIP and prevent opening port 30178. **Improvements.** - Loading factory defaults now requires the Service user level. - The 2D scan-view update interval now adapts to the rotation and filter settings. Previously, visualization could become slow, particularly with the median filter enabled. - The connection-options page now groups settings into separate panels for legacy CoLa A/B, CoLa 2, and the web-server port. Each panel also includes security settings for disabling the related ports. - The unused Expert Mode has been removed. **Bug fixes and incompatibilities.** - The default CoLa dialect for the UDP port has changed from CoLa A to CoLa B. - All application parameters are now accessible to SOPAS ET for export and import through `.sopas` files. Previously, some application parameters could not be stored in parameter exports. - CoLa A event output is disabled by default from V1.4.0. At the highest performance settings with all features enabled, loss-free CoLa ASCII output cannot be guaranteed; compatibility handling can also affect other CoLa1 ports. Port 2111 still supports polling device parameters, while event streaming uses ports 2112 (CoLa B) and 2122 (CoLa 2). - For compatibility, `EtherCoLaAEventsEnable` can enable CoLa A events. Changing it requires explicitly saving parameters permanently and cycling power. Data loss depends on resolution and device configuration, and enabling this setting can also affect other CoLa ports. **Known issues.** Firmware V1.4.0 has a known fatal-error issue for certain partial scan configurations with first- or last-echo filtering. Firmware V1.7.0 fixes this issue. For feature availability and parameter details, use the documentation for the device and firmware version. --- # LRS4000 Web GUI (SOPASair): Screens and Settings > Walk through the LRS4000 SOPASair web interface for status, configuration, data output, applications, cybersecurity, and diagnostics. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/ # SOPASair Walkthrough SOPASair is the built-in web interface of the LRS4000. It runs directly on the sensor, so no software installation is needed. Open `http:///` in a browser on the same network as the sensor. The factory default address is `192.168.0.1`. You can view status and settings without logging in. To change settings, log in with the **Authorized Client** user level using the user icon in the top bar. ![SOPASair Home dashboard showing LRS4581R status, live measurement data, I/O states, and detection history](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-home-overview.png) *The SOPASair Home dashboard: device status, live scan view, input and output states, and detection history at a glance.* ## Home The Home page summarizes the sensor's state. **Status** shows separate indicators for the device, connection, measurement, field evaluation, and data output. Because each state is reported independently, measurement can be running while external data output is switched off. ![LRS4581R device and application status](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-status.png) *Device and application status indicators.* **Device information** lists the model, part number, serial number, firmware version, system time, and the time of the last save. Click **Find device** to make the sensor LEDs blink, so you can identify the unit on site. ![LRS4581R device information](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-device-information.png) *Device identity and installed firmware version.* ## Configuration The Configuration menu contains the measurement, filter, network, and I/O settings. For the matching REST parameters and value ranges, see the [LRS4000 OpenAPI reference](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/). ### Basic Settings **Configuration > Basic settings** defines how the sensor scans. Select a scan configuration to set the scan rate and angular resolution. The page also shows the angular range, interlaced mode, and maximum scanning range, and lets you adjust sensitivity, the status LED, and the measurement state. ![LRS4581R basic settings](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-basic-settings.png) *Scan configuration and measurement settings. The values shown are an example configuration.* **Date and system time** shows the device clock and its synchronization source. **Apply computer time** sets the sensor clock to your computer's time. For network-based time sources, see [Time synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/). ![LRS4581R date and system time](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-date-time.png) *Device clock and time synchronization settings.* **Motor synchronization** aligns the rotation of several scanners to avoid mutual interference. Select the synchronization source here when you integrate multiple sensors. See [Motor synchronization](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/motor-synchronization/) for setup details. ![LRS4581R motor synchronization](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-motor-synchronization.png) *Motor synchronization source.* ### Filter **Configuration > Filter** combines the echo, particle, median, and mean filters. The echo filter selects all, first, or last echoes. Expand each of the other filters to set its threshold, width, or averaging parameters. See [Filter details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) for how each filter affects the measurement data. ![LRS4581R filter settings](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-filters.png) *Echo, particle, median, and mean filters.* ### Contamination Indication **Configuration > Contamination indication** monitors the front window for dirt. The sector diagram shows the contamination state per sector, using the color legend below it. You can configure whether a warning or error is output, the sensitivity, the monitored sectors, and the response delay. See [Contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) for the application background. ![LRS4581R contamination indication](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-contamination.png) *Contamination status per sector and evaluation settings.* ### Connection Options **Configuration > Connection options** contains the Ethernet settings: addressing mode, IP address, subnet mask, default gateway, MAC address, and link speed. When you click **Apply**, the new network settings take effect immediately. The browser loses its connection if the sensor moves to an address that your computer cannot reach, so note the new address before applying the change. ![LRS4581R Ethernet settings](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-ethernet.png) *Ethernet addressing and link settings.* ### Inputs and Outputs **Configuration > Inputs and outputs** assigns each port as an input or an output. For outputs, select the signal sources, inversion, logic, and restart behavior. The connector diagram next to each port shows the corresponding pin, and the status indicators show the current physical state. Enable **Use encoder** if an external encoder is connected. ![LRS4581R input and output assignments](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-inputs-outputs.png) *Port assignments with connector pin diagrams.* ## Application The Application menu contains measurement-data output and the on-device applications: field evaluation, 3D scan recording, and perpendicular distance measurement. ### Data Output **Application > Data output** selects the output format: Compact, LMDscandata, or Deactivated. The page lists the protocols and ports on which the data is available. See [Data streaming](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) for the transport options and parser requirements. ![LRS4581R measurement-data output](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-data-output.png) *Output format, protocols, and ports.* **Output data format** selects the optional content of each telegram: device name, time stamp, encoder values, and RSSI. It also sets the output interval and the distance scaling factor. ![LRS4581R output data format](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-output-format.png) *Optional telegram content, output interval, and scaling factor.* **Output range** limits the output to a start and stop angle. ![LRS4581R output angular range](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-output-range.png) *Start and stop angle of the output range.* **Range filter** removes measurement points outside a distance window. ![LRS4581R distance filter](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-range-filter.png) *Distance filter.* ### Field Evaluation **Application > Field evaluation** monitors fields for objects and switches outputs when a field is infringed. Each group combines fields, evaluations, and outputs, and has its own activation source. **Resource requirements** shows how much of the sensor's evaluation capacity is in use, and **Detection list** shows recent detections. ![LRS4581R field evaluation groups](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-field-evaluation.png) *An evaluation group with its field, evaluation, and output.* **Teach-in** creates a field automatically from the current environment. Set the distances in front of and behind the detected contour and the minimum teach-in time, then start teach-in from the button or a digital input. ![LRS4581R teach-in controls](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-teach-in.png) *Teach-in parameters and start control.* See [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) for a complete commissioning procedure. ### 3D Scan Recording **Application > 3D scan recording** combines 2D scans with the sensor's rotation to build a 3D point cloud. The rotation comes from the internal IMU or an external encoder. Start the recording with the button or an input signal, and download the resulting point cloud when it is complete. ![LRS4581R 3D scan recording settings](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-scan-recording.png) *3D scan recording with the internal IMU as rotation source.* See [3D Scan Recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/) for the REST workflow. ### Perpendicular Distance Measurement **Application > Perpendicular distance measurement** reports the shortest and furthest measuring points within a field, relative to a reference plane. Use **Add group** to define a new measurement, and **Result list for distance measurement** to view the results. ![LRS4581R perpendicular-distance application](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-perpendicular-distance.png) *A perpendicular-distance measurement group.* ## Diagnostics ### Overview **Diagnostics > Overview** combines status, device identity, operating information, the current device status, and the message log. Expand **Operating information** to see the number of power-on cycles, the operating hours, and the time of the last parameterization. ![LRS4581R operating information](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-operating-information.png) *Power-on count, operating hours, and last parameterization.* The message table lists current and past events with their status number and description. If you need support, use **Create diagnostic file** to collect the device state in one file and send it to SICK. See [Contact](https://sickag.github.io/sick_lidar_developer_guide/contact/). ### Cybersecurity **Diagnostics > Cybersecurity** shows the HTTPS certificate with its fingerprint, serial number, issuer, and expiry date. Use **Create certificate** to generate a new certificate. The **Hash calculator** helps you verify file checksums. See [HTTPS and certificates](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) for the complete certificate setup. For the variant-qualified service ports, see the [LRS4000 network-services matrix](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/#lrs4000-lrs4581). ![LRS4581R cybersecurity certificate status](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-certificates.png) *HTTPS certificate overview.* ### Data Recorder **Diagnostics > Data recorder** explains how to install the SICK data recorder on your computer and connect it to the sensor. Use the recorder to capture measurement data for later analysis or support cases. ![LRS4581R recorder instructions](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-recorder.png) *Installation and connection steps for the data recorder.* ### Detection History **Diagnostics > Detection history** records field-evaluation detections. Select the evaluations to include, then start the history. The **Statistics** section counts the detections per evaluation, and the **Detection list** shows each event with its time stamp. Use **Reset detection history** to clear the counters. ![LRS4581R detection history](https://sickag.github.io/sick_lidar_developer_guide/assets/LRS4000/img/sopasair-detection-statistics.png) *Detection counts per evaluation.* --- # LRS4000 Starter Kit > Three SICK products for an LRS4000 starter kit, with product photos, direct product links, and a link to getting started. Source: https://sickag.github.io/sick_lidar_developer_guide/LRS4000/starter-kit/ This compact starter kit brings together an LRS4000 and the cables needed to connect it to a development computer.
1
SICK LRS4581R LiDAR sensor
LRS4581R-230001

Part no.: 1098855

Product details
2
3
Together, these products are a good combination to get started with the LRS4000. A suitable DC power supply is also required; see [Electrical Connection](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/electrical-connection/) for the supply requirements and pin assignments. Continue with [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/) to connect the sensor and open its web interface. --- # multiScan100 Overview > Developer entry point for the SICK multiScan100 multi-layer 3D LiDAR family: setup, REST and CoLa interfaces, scan data, and device applications. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/ # multiScan100 The multiScan100 is a family of multi-layer 3D LiDAR sensors. Supported variants include the multiScan136, multiScan165, and multiScan166. For a sensor and cable combination to get started, see the [Starter Kit](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/starter-kit/). [Specifications and data sheet on sick.com](https://www.sick.com/de/en/search?text=multiScan100)
multiScan136/166 on the left, measuring from −22.7° to +42.8°, and multiScan165 on the right, from −7.3° to +35.3°, with positive elevation upward *multiScan136/166 (left; high-resolution layers 6 and 14 emphasized) and multiScan165 (right). Schematic infrared beams in blue; angles are positive upward, opposite to the DIN ISO output sign.*
Find firmware, EPLAN and CAD data, NVIDIA Isaac Sim models, and Milestone XProtect plug-ins on the *Downloads* tab of your device variant's product page: [search for multiScan100 on sick.com](https://www.sick.com/de/en/search?text=multiScan100). Select the files for your device variant; see [Release Notes](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/release-notes/) for firmware changes. See [Licenses](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/licenses/) for software packages, included functions, and license part numbers.
**Input** - [CoLa A/B](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/) - [Digital inputs](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/electrical-connection/) - [Ethernet](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/electrical-connection/) - [HTTPS](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) - [NTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [PTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [REST API](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) - [SOPASair](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/)
**Processing** - [Contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Device discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/) - [Echo filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [Object evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/) - [Fog filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Ground filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Mounting transformation](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/) - [Moving-average filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Multi-layer 3D scanning](https://sickag.github.io/sick_lidar_developer_guide/lidar-basics/) - [Particle filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Perpendicular distance](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) - [Range and cuboid filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/)
**Output** - [CoLa A/B telegrams](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/) - [Compact over UDP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) - [Detection history](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/) - [Digital outputs](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/electrical-connection/) - [Field-evaluation states](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [IMU data](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) - [MSGPACK over UDP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/) - [Perpendicular-distance values](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) - [REST JSON responses](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) - [ROS 2 via sick_scan_xd](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/)
*Inputs, onboard processing, and outputs of the **multiScan100**. Each column is an independent list.* Use the Product ID (PID) to find the exact product variant on [sick.com](https://www.sick.com/): enter the part number (P/N) and optional serial number (S/N), for example `1134610/25250710`. A complete [pid.sick.com](https://pid.sick.com/) URL is also accepted.
pid.sick.com/

--- # multiScan100 API | REST | OpenAPI V2.5.0 > Download the multiScan100 V2.5.0 OpenAPI description and search REST endpoints, request parameters, and response schemas. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/ # API | REST | OpenAPI
![OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/assets/openapi-logo.png) This page provides the searchable V2.5.0 REST reference and downloadable OpenAPI description for the multiScan100 family. For REST concepts, authentication, and request patterns, see [REST API / OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/).
[multiScan100_2.5.0.yaml (Download)](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/openapi/multiScan100_2.5.0.yaml) Always match the file to your device's actual firmware version. Function availability can vary by variant and installed software package. The `ScanDataFormat` enum also lists `3` LMDscandata and `4` NativeROS2; the multiScan100 does not support these formats. Use `1` MSGPACK or `2` Compact. ### 1 - General #### [POST /checkCredentials](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-checkcredentials) Indicates whether authentication succeeded. For more details, see https://github.com/SICKAG/sick_scan_rest_client. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /SetPassword](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setpassword) Sets the password for the CoLa A/B interface only. In this example, the password for user level: Service (4) is set to - test - (integer value of the password hash - test -). For more details, see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "siUserLevel": 4, "udiNewPassword": 3410122659 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "siUserLevel": 4, "udiNewPassword": 3410122659 } ``` | `siUserLevel` | **Type:** integer | | --- | --- | | `udiNewPassword` | **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `bSuccess` **Type:** boolean · **Default:** false | #### [POST /getChallenge](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getchallenge) Returns a challenge for the challenge-response authentication method. For more details, see https://github.com/SICKAG/sick_scan_rest_client **JSON example** ```json { "data": { "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `user` **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-e-user-level-type) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `challenge` | | `realm` | **Type:** string · **Default:** | | `nonce` | **Type:** string · **Default:** | | `opaque` | **Type:** string · **Default:** | | `salt` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** integer | | #### [POST /changePassword](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-changepassword) Sets the password for the REST interface. For more details, see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "encryptedMessage": [], "userLevel": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `encryptedMessage` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 96 **Items:** **Type:** integer | | --- | --- | | `userLevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-e-user-level-type) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2, 4, 5 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED * 4 - PWD_NOT_CHANGABLE * 5 - TIMELOCK_ACTIVE | #### [POST /EnableUserLevel](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-enableuserlevel) Activates/deactivates a specific user level for the REST interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED | #### [POST /WriteEeprom](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-writeeeprom) Saves all parameters permanently. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [POST /SoftReset](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-softreset) Reboots the device. All unsaved parameters are lost. This function requires the user level: Service. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ProcessorNbr": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ProcessorNbr` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /RebootDevice](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-rebootdevice) Reboots the device. All parameters are saved. This function requires the user level: Service. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /LoadFactoryDefaults](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-loadfactorydefaults) Resets all parameters to default. This function requires the user level: Service. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /LoadApplicationDefaults](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-loadapplicationdefaults) Resets only the user parameterization of the fields, evaluation cases, and parameters under the section "Application". Other parameters like interface settings, echo filter, etc. remain unchanged. This function requires the user level: Service. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /EnableLegacyUserLevel](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-enablelegacyuserlevel) Activates/deactivates a specific user level for the CoLa A/B interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer · **Minimum:** 0 · **Maximum:** 7 | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Type:** boolean · **Default:** false | ### 2 - Status #### [GET /DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-devicestatus) Returns the device state (9 possible states). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceStatus` **Fields:** [DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-devicestatus) | #### [GET /SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-scdevicestate) Returns the device state (busy, ready, or error). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SCdevicestate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SCdevicestate` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Busy * 1 - Ready * 2 - Error | #### [GET /temperatureAlarmConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-temperaturealarmconfiguration) Returns/sets the thresholds for the device temperature alarm status. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/temperatureAlarmConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `upperThreshold` | **Type:** integer · **Default:** 55 | | `lowerThreshold` | **Type:** integer · **Default:** 50 | | #### [POST /temperatureAlarmConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-temperaturealarmconfiguration) Returns/sets the thresholds for the device temperature alarm status. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "temperatureAlarmConfiguration": { "upperThreshold": 55, "lowerThreshold": 50 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `temperatureAlarmConfiguration` | `upperThreshold` | **Type:** integer · **Default:** 55 | | `lowerThreshold` | **Type:** integer · **Default:** 50 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /temperatureAlarmStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-temperaturealarmstatus) Returns the current device temperature alarm status. If true, the configured temperature alarm is active. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/temperatureAlarmStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `temperatureAlarmStatus` **Type:** boolean · **Default:** false | ### 3 - Device #### [GET /DeviceIdent](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-deviceident) Returns the device name and the firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceIdent" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Name` | **Type:** string · **Default:** multiScan · **Maximum length:** 9 | | `Version` | **Type:** string · **Default:** 2.5.0.0R · **Maximum length:** 8 | | #### [GET /LocationName](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-locationname) Returns/sets the device name. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LocationName" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | **Example:** ``` { "LocationName": "TestDevice" } ``` `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | #### [POST /LocationName](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-locationname) Returns/sets the device name. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LocationName": "not defined" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /SerialNumber](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-serialnumber) Returns the serial number. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SerialNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SerialNumber` **Type:** string · **Default:** 123456789 · **Maximum length:** 9 | #### [GET /FirmwareVersion](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-firmwareversion) Returns the current firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FirmwareVersion" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FirmwareVersion` **Type:** string · **Default:** XXXXXXXXXX · **Maximum length:** 40 | #### [GET /OrderNumber](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-ordernumber) Returns the order number (SICK part number). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OrderNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `OrderNumber` **Type:** string · **Default:** 1234567 · **Maximum length:** 32 | #### [GET /DeviceType](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-devicetype) Returns the device type. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceType` **Type:** string · **Default:** multiScan1xxx · **Maximum length:** 18 | #### [POST /FindMe](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-findme) Sets the device LEDs into blinking mode for better identification. **JSON example** ```json { "data": { "uiDuration": 100 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "uiDuration": 100 } ``` `uiDuration` **Type:** integer · **Minimum:** 1 **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 4 - Basic settings #### [GET /LEDState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-ledstate) Returns the LED status. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LEDState` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [LedStateType](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-ledstatetype) | #### [GET /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-ledenable) Returns/sets the LED mode (on/off). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | #### [POST /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-ledenable) Returns/sets the LED mode (on/off). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LEDEnable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /mStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-mstartmeasure) Starts the motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStopMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-mstopmeasure) Stops the motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/AutoStartMeasure" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | #### [POST /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. **JSON example** ```json { "data": { "AutoStartMeasure": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `AutoStartMeasure` **Type:** boolean · **Default:** true **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /bInterlacedMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-binterlacedmode) Returns/sets the interlaced mode. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/bInterlacedMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `bInterlacedMode` **Type:** boolean · **Default:** false | #### [POST /bInterlacedMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-binterlacedmode) Returns/sets the interlaced mode. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "bInterlacedMode": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `bInterlacedMode` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 5 - Date and system time #### [GET /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-tscrole) Returns/sets the time synchronization role (none, NTP, or PTP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCRole" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | #### [POST /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-tscrole) Returns/sets the time synchronization role (none, NTP, or PTP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCRole": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-tsctcsrvaddr) Returns/sets the IP address of the time server. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCSrvAddr" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-tsctcsrvaddr) Returns/sets the IP address of the time server. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCTCSrvAddr": [ 192, 168, 0, 11 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-tsctctimezone) Returns/sets the time zone of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCtimezone" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | #### [POST /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-tsctctimezone) Returns/sets the time zone of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCTCtimezone": 36 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-tsctcupdatetime) Returns/sets the update time of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCupdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | #### [POST /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-tsctcupdatetime) Returns/sets the update time of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCTCupdatetime": 600 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /LSPdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lspdatetime) Returns the current time of the device (years, months, days, hours, minutes, seconds, microseconds). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LSPdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LSPdatetime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-datetime-t) | #### [POST /LSPsetdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lspsetdatetime) Sets the time of the device (years, months, days, hours, minutes, seconds, microseconds). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "DateTime": { "uiYear": 0, "usiMonth": 1, "usiDay": 1, "usiHour": 0, "usiMinute": 0, "usiSec": 0, "udiUSec": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-datetime-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 6 - Filter #### [GET /groundFilterEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-groundfilterenable) Returns/sets whether the ground filter is enabled. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/groundFilterEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `groundFilterEnable` **Type:** boolean · **Default:** false | #### [POST /groundFilterEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-groundfilterenable) Returns/sets whether the ground filter is enabled. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "groundFilterEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `groundFilterEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /groundFilterThresholds](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-groundfilterthresholds) Returns/sets the ground filter thresholds. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/groundFilterThresholds" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `minimumDistance` | **Type:** integer · **Default:** -100 · **Minimum:** -10000 · **Maximum:** 0 | | `maximumDistance` | **Type:** integer · **Default:** 100 · **Minimum:** 0 · **Maximum:** 10000 | | #### [POST /groundFilterThresholds](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-groundfilterthresholds) Returns/sets the ground filter thresholds. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "groundFilterThresholds": { "minimumDistance": -100, "maximumDistance": 100 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `groundFilterThresholds` | `minimumDistance` | **Type:** integer · **Default:** -100 · **Minimum:** -10000 · **Maximum:** 0 | | `maximumDistance` | **Type:** integer · **Default:** 100 · **Minimum:** 0 · **Maximum:** 10000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /groundFilterType](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-groundfiltertype) Returns the ground filter type. Currently, the ground filter only works on plain measurement data (P3D algorithm). The option IMU is currently not available. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/groundFilterType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `groundFilterType` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - P3D * 1 - IMU | #### [GET /MCSenseLevel](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-mcsenselevel) Returns/sets the fog filter settings. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/MCSenseLevel" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `MCSenseLevel` **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 1 | #### [POST /MCSenseLevel](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-mcsenselevel) Returns/sets the fog filter settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "MCSenseLevel": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `MCSenseLevel` **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 1 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /LFPparticle](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfpparticle) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimum threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPparticle" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Default:** 500 · **Minimum:** 20 · **Maximum:** 5000 | | #### [POST /LFPparticle](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfpparticle) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimum threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPparticle": { "bEnable": false, "uiThreshold": 500 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPparticle` | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Default:** 500 · **Minimum:** 20 · **Maximum:** 5000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /LFPmovingAveragingFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfpmovingaveragingfilter) Returns/sets the mean filter settings. This filter smooths the distance value by calculating the arithmetic mean from the configured number of scans (2 to 4 scans). Points with zero distance are treated as missing values and are not taken into account for averaging. If all distances considered for averaging have the value 0, the result will be 0 as well. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPmovingAveragingFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiAveragingDepth` | **Type:** integer · **Default:** 3 · **Minimum:** 2 · **Maximum:** 4 | | #### [POST /LFPmovingAveragingFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfpmovingaveragingfilter) Returns/sets the mean filter settings. This filter smooths the distance value by calculating the arithmetic mean from the configured number of scans (2 to 4 scans). Points with zero distance are treated as missing values and are not taken into account for averaging. If all distances considered for averaging have the value 0, the result will be 0 as well. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPmovingAveragingFilter": { "bEnable": false, "uiAveragingDepth": 3 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPmovingAveragingFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiAveragingDepth` | **Type:** integer · **Default:** 3 · **Minimum:** 2 · **Maximum:** 4 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment, the sensor receives several measurement points on the same angular step (multi-echo). The filter can filter out the first echo, the last echo, or all echoes. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FREchoFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO | #### [POST /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment, the sensor receives several measurement points on the same angular step (multi-echo). The filter can filter out the first echo, the last echo, or all echoes. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "FREchoFilter": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 7 - Mounting position #### [POST /CopySensorOrientationFromImu](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-copysensororientationfromimu) Copies the roll and pitch angles from the IMU data to the sensor orientation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-sensorposition) Returns/sets the mounting position in increments of 1/10,000 degree. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensorPosition" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | #### [POST /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-sensorposition) Returns/sets the mounting position in increments of 1/10,000 degree. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "SensorPosition": { "x": 0, "y": 0, "z": 0, "yaw": 0, "pitch": 0, "roll": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `SensorPosition` | `x` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 8 - Contamination indication #### [GET /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-contaminationconfig) Returns/sets the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Default:** 3 · **Minimum:** 3 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 6, 255 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 6 - CM_COVER * 255 - CM_COVER_CUSTOM_SECTORS | | `CustomSectors` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** true | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | #### [POST /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-contaminationconfig) Returns/sets the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ContaminationConfig": { "eStrategy": 0, "usiResponseTime": 3, "eThreshold": 0, "eCover": 0, "CustomSectors": [], "bEnableWarning": true, "bEnableError": true } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ContaminationConfig` | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Default:** 3 · **Minimum:** 3 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 6, 255 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 6 - CM_COVER * 255 - CM_COVER_CUSTOM_SECTORS | | `CustomSectors` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** true | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /ContaminationActiveSectors](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-contaminationactivesectors) Returns which sectors are included in the contamination result calculation. Each element is true if the corresponding sector is included and false otherwise. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationActiveSectors" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ContaminationActiveSectors` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** false | #### [GET /ContaminationData](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-contaminationdata) Returns the contamination state of all contamination sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationData" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ContaminationData` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_DATA_NONE * 1 - CM_DATA_CLEAN * 2 - CM_DATA_WARN * 3 - CM_DATA_ERROR | #### [GET /ContaminationResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-contaminationresult) Returns the contamination indication state of the device. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bWarningActive` | **Type:** boolean · **Default:** false | | `bErrorActive` | **Type:** boolean · **Default:** false | | ### 9 - Ethernet #### [GET /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheripaddress) Returns/sets the static IP address in use. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-etheripaddress) Returns/sets the static IP address in use. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherIPAddress": [ 192, 168, 0, 1 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheripgateaddress) Returns/sets the default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-etheripgateaddress) Returns/sets the default gateway address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherIPGateAddress": [ 0, 0, 0, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheripmask) Returns/sets the subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMask" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-etheripmask) Returns/sets the subnet mask. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherIPMask": [ 255, 255, 255, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAddressingMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | #### [POST /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherAddressingMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherDHCPFallback" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | #### [POST /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherDHCPFallback": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /EthernetUpdate](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-ethernetupdate) Applies the ethernet settings. This needs to be executed to actually change the ethernet settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheripaddressdhcp) Returns the assigned DHCP IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPAddressDHCP` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [GET /EtherIPGateAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheripgateaddressdhcp) Returns the assigned DHCP default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddressDHCP` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [GET /EtherIPMaskDHCP](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etheripmaskdhcp) Returns the assigned DHCP subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMaskDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPMaskDHCP` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [GET /EtherMACAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-ethermacaddress) Returns the MAC address of the Ethernet interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherMACAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherMACAddress` **Default:** ``` [ 0, 6, 119, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** **Type:** integer | ### 10 - Legacy protocols #### [GET /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled, CoLa A uses port 2111 and CoLa B uses port 2112. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxEnabled" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | #### [POST /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled, CoLa A uses port 2111 and CoLa B uses port 2112. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherAuxEnabled": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherCoLaScanMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | #### [POST /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherCoLaScanMode": 3 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 11 - Webserver settings #### [POST /SetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setwebserverenabled) Sets the availability of the web server (reboot required). If disabled, the web-based GUI and the REST interface can no longer be used. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "Enable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `Enable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /GetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getwebserverenabled) Returns the availability of the web server. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `IsEnabled` **Type:** boolean · **Default:** true | ### 12 - Inputs and outputs #### [GET /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-portconfiguration) Returns/sets the port configuration of all I/Os. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-logic-t) | | `Debounce` | **Type:** integer · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Default:** 0 | | `Reserved2` | **Type:** integer · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Default:** 0 | | `Reserved4` | **Type:** integer · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Default:** 0 | | `Reserved6` | **Type:** integer · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Default:** 0 | | `Reserved9` | **Type:** integer · **Default:** 0 | | `Reserved10` | **Type:** integer · **Default:** 0 | | #### [POST /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-portconfiguration) Returns/sets the port configuration of all I/Os. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "PortConfiguration": [ { "PortType": 0, "Name": "InOut1", "InputSettings": { "Logic": 0, "Debounce": 1, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 1, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 1, "Name": "InOut2", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 1, "OutputMode": 2, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [ { "Name": "DRDY", "Invert": false, "Reserved5": 0, "Reserved6": 0 } ] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 1, "Name": "InOut3", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [ { "Name": "FE01", "Invert": false, "Reserved5": 0, "Reserved6": 0 } ] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 0, "Name": "InOut4", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 0, "Name": "InOut5", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 0, "Name": "InOut6", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 1, "Name": "InOut7", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 1, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [ { "Name": "DRDY", "Invert": false, "Reserved5": 0, "Reserved6": 0 } ] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 }, { "PortType": 1, "Name": "InOut8", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 1, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 1, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [ { "Name": "DRDY", "Invert": false, "Reserved5": 0, "Reserved6": 0 } ] }, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "PortConfiguration": [ { "InputSettings": { "Debounce": 1, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut1", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut2", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 2, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut3", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "FE01", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut4", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut5", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut6", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut7", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut8", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 } ] } ``` `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-logic-t) | | `Debounce` | **Type:** integer · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Default:** 0 | | `Reserved2` | **Type:** integer · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Default:** 0 | | `Reserved4` | **Type:** integer · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Default:** 0 | | `Reserved6` | **Type:** integer · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Default:** 0 | | `Reserved9` | **Type:** integer · **Default:** 0 | | `Reserved10` | **Type:** integer · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /SetOutput](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setoutput) Sets the state of an individual output. The output source must first be set to "SOPAS command". **Editable JSON template** ```json { "data": { "Output": "", "Value": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `Output` | **Type:** integer | | --- | --- | | `Value` | **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [GET /InputState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-inputstate) Returns the state of all inputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Default:** 1 | | `udiSystCount` | **Type:** integer | | `aDigitalIn` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** `IOState` **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-iostate-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-datetime-t) | | #### [GET /OutputState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-outputstate) Returns the state of all outputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OutputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Default:** 1 | | `udiSystCount` | **Type:** integer | | `aDigitalOut` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `IOState` | **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-iostate-t) | | `udiCounter` | **Type:** integer | | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-datetime-t) | | --- | --- | | #### [GET /PortState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-portstate) Returns the state of the ports. "PortState" is preferred over "OutputState". **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer | | `udiSystCount` | **Type:** integer | | `aInternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-portstateandcounter-t) | | `aExternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-portstateandcounter-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-datetime-t) | | #### [POST /mResetOutputCounter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-mresetoutputcounter) Resets the counter for the outputs. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 13 - Measurement data output #### [GET /ScanDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-scandataethsettings) Returns/sets the destination IP address settings for measurement data streaming (UDP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataEthSettings" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | | `Port` | **Type:** integer · **Default:** 2115 | | #### [POST /ScanDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-scandataethsettings) Returns/sets the destination IP address settings for measurement data streaming (UDP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ScanDataEthSettings": { "Protocol": 1, "IPAddress": [ 192, 168, 0, 100 ], "Port": 2115 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanDataEthSettings` | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | | `Port` | **Type:** integer · **Default:** 2115 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /ScanDataEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-scandataenable) Enables/disables the measurement data streaming. The measurement data itself is sent via a UDP-based SICK-specific format. A Python example can be found at https://github.com/SICKAG/ScanSegmentAPI. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ScanDataEnable` **Type:** boolean · **Default:** false | #### [POST /ScanDataEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-scandataenable) Enables/disables the measurement data streaming. The measurement data itself is sent via a UDP-based SICK-specific format. A Python example can be found at https://github.com/SICKAG/ScanSegmentAPI. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ScanDataEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanDataEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-scandataformat) Although this endpoint lists `4` (`NativeROS2`), multiScan100 does not support native ROS 2 output. To use ROS 2, run [sick_scan_xd](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#sick_scan_xd) on the host. Returns/sets the scan data format (e.g. Compact format). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataFormat" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 2 Mapping: * 1 - MSGPACK * 2 - Compact * 3 - LMDscandata * 4 - NativeROS2 | #### [POST /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-scandataformat) Returns/sets the scan data format (e.g. Compact format). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ScanDataFormat": 2 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 2 Mapping: * 1 - MSGPACK * 2 - Compact * 3 - LMDscandata * 4 - NativeROS2 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /ScanDataPreformatting](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-scandatapreformatting) Returns/sets the azimuth reordering mode for the layers. In Raw mode, no reordering is performed. In Rectified mode, the layers are reordered so that their azimuth angle ranges match as closely as possible. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataPreformatting" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ScanDataPreformatting` **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - Raw * 2 - Rectified | #### [POST /ScanDataPreformatting](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-scandatapreformatting) Returns/sets the azimuth reordering mode for the layers. In Raw mode, no reordering is performed. In Rectified mode, the layers are reordered so that their azimuth angle ranges match as closely as possible. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ScanDataPreformatting": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanDataPreformatting` **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - Raw * 2 - Rectified | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 14 - IMU data output #### [GET /ImuDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-imudataethsettings) Returns/sets the destination IP address settings for IMU data streaming (UDP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ImuDataEthSettings" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | | `Port` | **Type:** integer · **Default:** 7503 | | #### [POST /ImuDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-imudataethsettings) Returns/sets the destination IP address settings for IMU data streaming (UDP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ImuDataEthSettings": { "Protocol": 1, "IPAddress": [ 192, 168, 0, 100 ], "Port": 7503 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ImuDataEthSettings` | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | | `Port` | **Type:** integer · **Default:** 7503 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /ImuDataEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-imudataenable) Enables/disables IMU data streaming. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ImuDataEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ImuDataEnable` **Type:** boolean · **Default:** false | #### [POST /ImuDataEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-imudataenable) Enables/disables IMU data streaming. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ImuDataEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ImuDataEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /InertialMeasurementUnit](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-inertialmeasurementunit) Returns the current IMU data (e.g. acceleration and orientation). The data uses a coordinate system based on DIN 70000. The x-axis lies on the 90-degree beam of the 0-degree layer. The y-axis is perpendicular to the x-axis and lies in the 0-degree layer. The y-values increase in the counterclockwise rotation direction (right-handed system). The z-axis is perpendicular to the x-y plane, with positive values pointing toward the top of the scanner. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InertialMeasurementUnit" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Acceleration` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 3 **Items:** **Type:** number · **Default:** 0.0 | | `AngularVelocity` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 3 **Items:** **Type:** number · **Default:** 0.0 | | `Orientation` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** number · **Default:** 0.0 | | `TimeStamp` | **Type:** integer | | ### 15 - Data reduction #### [GET /LFPangleRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfpanglerangefilter) Returns/sets the angle range filter settings. The filter restricts the output scan to a specified angle range. Filtered measurement values are set to 0. If an entire data segment is set to 0, it is no longer output. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPangleRangeFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `fThetaStart` | **Type:** integer · **Default:** -900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `fThetaStop` | **Type:** integer · **Default:** 900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `fPhiStart` | **Type:** integer · **Default:** -900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `fPhiStop` | **Type:** integer · **Default:** 900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `uiBeamIncrement` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 20 | | #### [POST /LFPangleRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfpanglerangefilter) Returns/sets the angle range filter settings. The filter restricts the output scan to a specified angle range. Filtered measurement values are set to 0. If an entire data segment is set to 0, it is no longer output. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPangleRangeFilter": { "bEnable": false, "fThetaStart": -900000, "fThetaStop": 900000, "fPhiStart": -900000, "fPhiStop": 900000, "uiBeamIncrement": 1 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPangleRangeFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `fThetaStart` | **Type:** integer · **Default:** -900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `fThetaStop` | **Type:** integer · **Default:** 900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `fPhiStart` | **Type:** integer · **Default:** -900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `fPhiStop` | **Type:** integer · **Default:** 900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `uiBeamIncrement` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 20 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /LFPintervalFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfpintervalfilter) Returns/sets the interval filter settings. The filter reduces the scan output rate by a given factor. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPintervalFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiReductionFactor` | **Type:** integer · **Default:** 2 · **Minimum:** 2 · **Maximum:** 50 | | #### [POST /LFPintervalFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfpintervalfilter) Returns/sets the interval filter settings. The filter reduces the scan output rate by a given factor. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPintervalFilter": { "bEnable": false, "uiReductionFactor": 2 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPintervalFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiReductionFactor` | **Type:** integer · **Default:** 2 · **Minimum:** 2 · **Maximum:** 50 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /LFPlayerFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfplayerfilter) Returns/sets the layer filter settings. The filter removes selected complete layers from the output data. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPlayerFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `aLayers` | **Default:** ``` [ true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** boolean · **Default:** false | | #### [POST /LFPlayerFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfplayerfilter) Returns/sets the layer filter settings. The filter removes selected complete layers from the output data. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPlayerFilter": { "bEnable": false, "aLayers": [ true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true ] } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPlayerFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `aLayers` | **Default:** ``` [ true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 16 - Region of interest #### [GET /LFPradialDistanceRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfpradialdistancerangefilter) Returns/sets the scanning range filter settings. The filter restricts distance measurements to a specified range. Measurements outside the specified range are assigned a distance and RSSI value of 0. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPradialDistanceRangeFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `ulDistMin` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 200000 | | `ulDistMax` | **Type:** integer · **Default:** 20000 · **Minimum:** 0 · **Maximum:** 200000 | | #### [POST /LFPradialDistanceRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfpradialdistancerangefilter) Returns/sets the scanning range filter settings. The filter restricts distance measurements to a specified range. Measurements outside the specified range are assigned a distance and RSSI value of 0. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPradialDistanceRangeFilter": { "bEnable": false, "ulDistMin": 0, "ulDistMax": 20000 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPradialDistanceRangeFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `ulDistMin` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 200000 | | `ulDistMax` | **Type:** integer · **Default:** 20000 · **Minimum:** 0 · **Maximum:** 200000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /LFPcubicareafilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lfpcubicareafilter) Returns/sets the cuboid area filter settings. The cuboid area filter limits the measurement data box defined by its extension along the x- and y-axes. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPcubicareafilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `lXMin` | **Type:** integer · **Default:** -20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lXMax` | **Type:** integer · **Default:** 20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMin` | **Type:** integer · **Default:** -20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMax` | **Type:** integer · **Default:** 20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMin` | **Type:** integer · **Default:** -20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMax` | **Type:** integer · **Default:** 20000 · **Minimum:** -200000 · **Maximum:** 200000 | | #### [POST /LFPcubicareafilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-lfpcubicareafilter) Returns/sets the cuboid area filter settings. The cuboid area filter limits the measurement data box defined by its extension along the x- and y-axes. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPcubicareafilter": { "bEnable": false, "lXMin": -20000, "lXMax": 20000, "lYMin": -20000, "lYMax": 20000, "lZMin": -20000, "lZMax": 20000 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPcubicareafilter` | `bEnable` | **Type:** boolean · **Default:** false | | `lXMin` | **Type:** integer · **Default:** -20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lXMax` | **Type:** integer · **Default:** 20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMin` | **Type:** integer · **Default:** -20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMax` | **Type:** integer · **Default:** 20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMin` | **Type:** integer · **Default:** -20000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMax` | **Type:** integer · **Default:** 20000 · **Minimum:** -200000 · **Maximum:** 200000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 17 - Field evaluation #### [GET /FieldEvaluationResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-fieldevaluationresult) Returns the state of all possible fields. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationResult` **Fields:** [FieldEvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-fieldevaluationresult-t) | #### [POST /ActivateEvaluationGroup](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-activateevaluationgroup) Sets the activation condition for all existing field evaluation groups (not configured, active, or inactive). **JSON example** ```json { "data": { "List": [ { "GroupId": 1, "Activate": true }, { "GroupId": 2, "Activate": false }, { "GroupId": 3, "Activate": true } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "List": [ { "Activate": true, "GroupId": 1 }, { "Activate": false, "GroupId": 2 }, { "Activate": true, "GroupId": 3 } ] } ``` `List` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `GroupId` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | | `Activate` | **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** false | #### [POST /SetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setfieldevaluationcontour) Sets the contour of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": 1, "LowerZLimit": 0, "UpperZLimit": 0, "Points": [ { "x": 0, "y": -1000 }, { "x": 1000, "y": -1000 }, { "x": 1000, "y": 1000 }, { "x": 0, "y": 1000 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1, "LowerZLimit": 0, "Points": [ { "x": 0, "y": -1000 }, { "x": 1000, "y": -1000 }, { "x": 1000, "y": 1000 }, { "x": 0, "y": 1000 } ], "UpperZLimit": 0 } ``` | `EvaluationId` | **Type:** integer | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Default:** 0 | | `y` | **Type:** integer | | | `LowerZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_POLYGON * 3 - SOPAS_ERR_INVALID_ZLIM | #### [POST /GetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getfieldevaluationcontour) Returns the contour of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1 } ``` `EvaluationId` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Contour` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Default:** 0 | | `y` | **Type:** integer · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | #### [POST /SetFieldEvaluationConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setfieldevaluationconfiguration) Sets the configuration of a field evaluation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": "", "Name": " ", "Configuration": { "Version": 1, "Source": 0, "Name": " ", "ID": 1, "EvaluationParamsMaskBased": [ { "InfringementThresholdFactor": 80 } ], "EvaluationParamsSegmentationBased": [ { "SampleParam1": "" } ], "EvaluationParamsCommon": [ { "MinimumObjectSizeHorizontal": 200, "MinimumObjectSizeVertical": 200, "OcclusionHandling": false, "TreatMissingDataAsInfringed": false, "TimeForInfringedState": 50, "TimeForFreeState": 50, "Reserved3": "", "Reserved4": "" } ], "EvaluationParamsExitSize": [ { "disableExitSize": false, "exitSizeVertical": 70, "exitSizeHorizontal": 100 } ], "VolumeList": [] } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `EvaluationId` | **Type:** integer | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `Configuration` | **Fields:** [Evaluation_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-evaluation-t) | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_CONFIGURATION | #### [POST /GetFieldEvaluationConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getfieldevaluationconfiguration) Gets the configuration of a field evaluation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1 } ``` `EvaluationId` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Configuration` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `Configuration` | **Fields:** [Evaluation_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-evaluation-t) | | #### [GET /EvaluationConfigState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-evaluationconfigstate) Returns the performance state of an evaluation configuration. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationConfigState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `ActiveBeamsLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `ActiveEvaluationsLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `NumberOfIntersectingBeams` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** integer | | `InputIsOutputErrorList` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** integer | | #### [GET /FieldEvaluationGroupState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-fieldevaluationgroupstate) Returns the activation condition for all existing field evaluation groups (not configured, active, or inactive). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationGroupState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationGroupState` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - ACTIVE * 2 - INACTIVE | #### [GET /FieldEvaluationApplicationState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-fieldevaluationapplicationstate) Returns the state (DEACTIVATED, ACTIVE, CONFIGURING, ERROR) of the field evaluation. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationApplicationState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationApplicationState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - DEACTIVATED * 1 - ACTIVE * 2 - CONFIGURING * 3 - ERROR | ### 18 - Object evaluation #### [GET /ObjectEvaluationApplicationState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-objectevaluationapplicationstate) Returns the application state (DEACTIVATED, ACTIVE, CONFIGURING, ERROR). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ObjectEvaluationApplicationState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ObjectEvaluationApplicationState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - DEACTIVATED * 1 - ACTIVE * 2 - CONFIGURING * 3 - ERROR | #### [GET /ObjectEvaluationResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-objectevaluationresult) Returns the results of all configured object evaluations. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ObjectEvaluationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ObjectEvaluationResult` **Fields:** [ObjectEvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-objectevaluationresult-t) | #### [GET /ObjectEvaluationConfigState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-objectevaluationconfigstate) Returns the performance state of an object evaluation configuration. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ObjectEvaluationConfigState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `ActiveBeamsLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `ActiveEvaluationsLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `NumberOfIntersectingBeams` | **Default:** ``` [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** integer · **Default:** 0 · **Minimum:** 0 | | `InputIsOutputErrorList` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** integer | | #### [GET /ObjectEvaluationGroupState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-objectevaluationgroupstate) Returns the activation condition for all existing object evaluation groups (not configured, active, or inactive). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ObjectEvaluationGroupState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ObjectEvaluationGroupState` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - ACTIVE * 2 - INACTIVE | #### [POST /ActivateObjectEvaluationGroup](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-activateobjectevaluationgroup) Activates/deactivates an object evaluation group. **JSON example** ```json { "data": { "List": [] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `List` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `GroupId` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | | `Activate` | **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** false | #### [POST /SetObjectEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setobjectevaluationcontour) Sets the region of interest of an object detection evaluation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": "", "Points": [], "LowerZLimit": "", "UpperZLimit": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `EvaluationId` | **Type:** integer | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Default:** 0 | | `y` | **Type:** integer | | | `LowerZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_POLYGON * 3 - SOPAS_ERR_INVALID_ZLIM | #### [POST /GetObjectEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getobjectevaluationcontour) Gets the region of interest of an object detection evaluation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1 } ``` `EvaluationId` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Contour` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Default:** 0 | | `y` | **Type:** integer · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | #### [POST /SetObjectEvaluationConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setobjectevaluationconfiguration) Sets the configuration of an object detection evaluation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": "", "Name": " ", "Configuration": { "Version": 1, "EvaluationParamsCommon": [ { "MaximumHiddenTime": 500, "MinimumObjectAge": 0, "TimeForInfringedState": 500, "MinimumObjectWidth": 200, "MinimumObjectHeight": 0, "EnableMaximumSizeFilter": false, "MaximumObjectWidth": 2000, "MaximumObjectHeight": 2000, "MotionState": 1, "EnableSpeedFilter": true, "MinimumObjectVelocity": 300, "MaximumObjectVelocity": 15000, "EnableDirectionFilter": false, "ObjectDirection": 180, "ObjectDirectionUncertainty": 90, "Reserved1": 0, "Reserved2": 0, "Reserved3": 0, "Reserved4": 0, "Reserved5": 0, "Reserved6": 0 } ], "ReservedParams1": [], "ReservedParams2": [] } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `EvaluationId` | **Type:** integer | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `Configuration` | **Fields:** [TrackEvaluation_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-trackevaluation-t) | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_CONFIGURATION | #### [POST /GetObjectEvaluationConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getobjectevaluationconfiguration) Gets the configuration of an object detection evaluation. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1 } ``` `EvaluationId` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Configuration` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `Configuration` | **Fields:** [TrackEvaluation_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-trackevaluation-t) | | ### 19 - Perpendicular distance #### [GET /perpendicularDistanceResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-perpendiculardistanceresult) Returns the perpendicular distance within a field. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/perpendicularDistanceResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `timestamp` | **Type:** integer | | `evaluations` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `evaluationId` | **Type:** integer | | `minimumDistance` | **Type:** integer | | `maximumDistance` | **Type:** integer | | `minimumDistancePosition` | **Fields:** [Point3d_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-point3d-t) | | `maximumDistancePosition` | **Fields:** [Point3d_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-point3d-t) | | | ### 20 - Operating data #### [GET /LastParaDate](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lastparadate) Returns the last date (e.g. 12.11.2024) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaDate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LastParaDate` **Type:** string · **Default:** DD.MM.YYYY · **Maximum length:** 10 | #### [GET /LastParaTime](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-lastparatime) Returns the last time (e.g. 13:24) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LastParaTime` **Type:** string · **Default:** HH:MM · **Maximum length:** 5 | #### [GET /PowerOnCnt](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-poweroncnt) Returns the number of power-on cycles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PowerOnCnt" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PowerOnCnt` **Type:** integer · **Default:** 0 | #### [GET /DailyOpHours](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-dailyophours) Returns the runtime duration since the last power-on (non-persistent). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DailyOpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DailyOpHours` **Type:** number · **Default:** 0.0 | #### [GET /OpHours](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-ophours) Returns the total number of operating hours during the lifetime of the device. The resolution is one-tenth of an hour. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `OpHours` **Type:** integer · **Default:** 0 | #### [GET /CurrentTempDev](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-currenttempdev) Returns the current device temperature in Celsius. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CurrentTempDev" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `CurrentTempDev` **Type:** number · **Default:** 20.0 | ### 21 - Diagnostic file #### [GET /crown/file](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-crown-file) Downloads the diagnostic file (zip file) if one exists. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/crown/file?filePath=diagnosisDump.zip" ``` **Parameters** **`filePath`** **Location:** query **Required:** true path **Type:** string · **Example:** diagnosisDump.zip **Responses** **Status `200`** **Media type: `application/zip`** **Type:** string · **Format:** binary **Status `400`** bad operation **Status `404`** file not found **Status `500`** Server not found #### [POST /DoDiagnosisDump](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-dodiagnosisdump) Creates a diagnostic file (zip file) for further analysis. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "DoRunlevelLoop": true, "Output": "file" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "DoRunlevelLoop": true, "Output": "file" } ``` | `DoRunlevelLoop` | **Type:** boolean · **Default:** false | | `Output` | **Type:** string · **Default:** · **Maximum length:** 64 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Successful` **Type:** boolean · **Default:** false | #### [POST /GetDiagnosisDumpInfo](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-getdiagnosisdumpinfo) Returns additional metadata about the diagnostic file. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | **Example:** ``` { "DiagDumpExists": true, "DiagDumpTimestamp": 247 } ``` | `DiagDumpExists` | **Type:** boolean · **Default:** false | | `DiagDumpTimestamp` | **Type:** integer | | ### 22 - Detection history #### [GET /EnableDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-enabledetectionhistory) Enables/disables detection history. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EnableDetectionHistory" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EnableDetectionHistory` **Type:** boolean · **Default:** true | #### [POST /EnableDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-enabledetectionhistory) Enables/disables detection history. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EnableDetectionHistory": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EnableDetectionHistory` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /EvaluationsToLog](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-evaluationstolog) Returns/sets which evaluations are logged when they are in use. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationsToLog" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EvaluationsToLog` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** true | #### [POST /EvaluationsToLog](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-evaluationstolog) Returns/sets which evaluations are logged when they are in use. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationsToLog": [ true ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EvaluationsToLog` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [POST /ResetDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-resetdetectionhistory) Resets the detection history logs. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) ### 23 - Firmware update #### [PUT /update](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-put-update) Uploads a firmware file (.spk) to the device. The maximum file size is 100 MB. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) for the firmware update workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `application/octet-stream`** `data` | `Type` | **Type:** string | | --- | --- | | `Binary` | **Type:** string | **Responses** **Status `200`** #### [POST /RunFirmwareUpdate](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-runfirmwareupdate) Starts the firmware update process. This function requires the user level: Service. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) #### [GET /UpdateState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-updatestate) Returns the state of the update process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/UpdateState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `UpdateState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Initial * 1 - Started * 2 - Finished * 3 - Error | ### 24 - Cybersecurity #### [GET /httpsStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-httpsstatus) Returns the status of the HTTPS interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/httpsStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `enabled` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-httpserror-t) | | #### [GET /certificateBundleInfo](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-certificatebundleinfo) Returns information about the uploaded certificate bundle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/certificateBundleInfo" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uuidBundle` | **Type:** string · **Default:** · **Maximum length:** 100 | | `certificates` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** | `names` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** `entry` **Type:** string · **Default:** · **Maximum length:** 1000 | | `issuer` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `subject` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `serialNumber` | **Type:** string · **Default:** · **Maximum length:** 119 | | `fingerprint` | **Type:** string · **Default:** · **Maximum length:** 119 | | `validNotBefore` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | `validNotAfter` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-httpserror-t) | | --- | --- | | #### [POST /removeCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-removecertificatebundle) Removes the uploaded certificate bundle. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-httpserror-t) | | #### [POST /setCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-setcertificatebundle) Uploads a certificate bundle in the PEM format via JSON. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "contentCertificateBundle": " ", "contentPrivateKey": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `contentCertificateBundle` | **Type:** string · **Default:** · **Maximum length:** 10000 | | `contentPrivateKey` | **Type:** string · **Default:** · **Maximum length:** 4000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-httpserror-t) | | ### 25 - Backup/Restore #### [GET /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-get-parameterbackup) Downloads the parameter backup file (.json) from the device or uploads it to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/parameterbackup" ``` **Responses** **Status `200`** **Media type: `application/json`** | `version` | **Type:** string | | --- | --- | | `device identification` | **Type:** string | | `checksum` | **Type:** string | | `parameters` | **Type:** array **Items:** | `userlevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-e-user-level-type) | | `parameters` | **Type:** array **Items:** | `name` | **Type:** string | | `id` | **Type:** string | | `value` | **oneOf** **Type:** integer **Type:** boolean **Type:** string **Type:** object **Type:** number | | | #### [PUT /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-put-parameterbackup) Downloads the parameter backup file (.json) from the device or uploads it to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `multipart/form-data`** `datei` **Type:** string · **Format:** binary Json-Datei **Responses** **Status `200`** #### [POST /CreateParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-createparameterbackup) Creates a parameter backup file. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "Passphrase": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `Passphrase` **Type:** string · **Default:** · **Maximum length:** 256 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [POST /RestoreParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#rest-post-restoreparameterbackup) Restores the device parameters from the uploaded backup file. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "Passphrase": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `Passphrase` **Type:** string · **Default:** · **Maximum length:** 256 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `RestoreResult` | **Fields:** [RestoreBackupResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-restorebackupresult) | | `ParametersFailedToRestore` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** **Type:** string · **Default:** · **Maximum length:** 256 | | ### Shared request and response fields #### ResponseHeader | `status` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Ok * 1 - Parsing Failed * 2 - Invalid Data * 3 - Internal Server Error * 4 - Access Denied * 5 - Not Found * 6 - Out Of Range * 7 - Out Of Bounds * 8 - Read Only * 9 - Illegal Value * 10 - Invalid Challenge * 11 - Out Of Connections | | --- | --- | | `message` | **Type:** string · **Default:** Ok | #### PostBodyHeader | `nonce` | **Type:** string · **Default:** | | --- | --- | | `opaque` | **Type:** string · **Default:** | | `realm` | **Type:** string · **Default:** SICK Sensor | | `response` | **Type:** string · **Default:** | | `user` | **Type:** string · **Default:** AuthorizedClient | #### E_USER_LEVEL_TYPE **Allowed values:** ``` [ "Run", "Operator", "Maintenance", "AuthorizedClient", "Service" ] ``` **Type:** string · **Default:** Run #### RestoreBackupResult **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Ok * 1 - ChecksumError * 2 - ParseError * 3 - DeviceIdentificationError * 4 - UpdateRepositoryError * 5 - UpdateSourceError * 6 - DecryptionError * 7 - DecryptionHeaderError * 8 - DecryptionLengthError * 9 - IoError * 10 - VersionConversionError * 50 - ComponentRegistryError #### DeviceStatus **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - DS_UnknownState * 1 - DS_Startup * 2 - DS_ServiceMode * 3 - DS_NormalOperation * 4 - DS_SuspendedOperation * 5 - DS_ServiceRecommended * 6 - DS_ServiceRequired * 7 - DS_RecoverableError * 8 - DS_FatalError #### httpsError_t `error` **Type:** string · **Default:** · **Maximum length:** 100 #### Logic_t **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - ACTIVE_HIGH * 1 - ACTIVE_LOW #### IOState_t `eIOState` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 2 Mapping: * 0 - IOS_LOW * 1 - IOS_HIGH * 2 - IOS_TRISTATE #### PortStateAndCounter_t | `ePortState` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 2 Mapping: * 0 - OUTPUT_NOT_ACTIVE * 1 - OUTPUT_ACTIVE * 2 - TRISTATE * 3 - INPUT_ACTIVE * 4 - INPUT_NOT_ACTIVE | | --- | --- | | `PortCounter` | **Type:** integer | #### DateTime_t | `uiYear` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 2105 | | --- | --- | | `usiMonth` | **Type:** integer · **Default:** 1 · **Minimum:** 0 · **Maximum:** 12 | | `usiDay` | **Type:** integer · **Default:** 1 · **Minimum:** 0 · **Maximum:** 31 | | `usiHour` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 23 | | `usiMinute` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `usiSec` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `udiUSec` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 999999 | #### LedStateType | `Color` | **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - GREEN * 1 - YELLOW * 2 - RED * 3 - WHITE | | --- | --- | | `Function` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - ON * 1 - OFF * 2 - BLINKING * 3 - BLINKING_FAST * 4 - BLINKING_DELAYED * 5 - BLINKING_COLOR * 6 - BLINKING_YELLOW_RED | | `Id` | **Type:** string · **Default:** · **Maximum length:** 8 | #### Point3d_t | `x` | **Type:** integer · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | | --- | --- | | `y` | **Type:** integer · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | | `z` | **Type:** integer · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | #### Evaluation_t | `Version` | **Type:** integer · **Default:** 1 | | --- | --- | | `Source` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - STANDARD * 1 - HIGHRES_6 * 2 - HIGHRES_14 | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `ID` | **Type:** integer · **Default:** 1 | | `EvaluationParamsMaskBased` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** `InfringementThresholdFactor` **Type:** integer · **Default:** 80 · **Minimum:** 1 · **Maximum:** 100 | | `EvaluationParamsSegmentationBased` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** `SampleParam1` **Type:** integer | | `EvaluationParamsCommon` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `MinimumObjectSizeHorizontal` | **Type:** integer · **Default:** 200 · **Minimum:** 0 · **Maximum:** 5000 | | `MinimumObjectSizeVertical` | **Type:** integer · **Default:** 200 · **Minimum:** 0 · **Maximum:** 5000 | | `OcclusionHandling` | **Type:** boolean · **Default:** false | | `TreatMissingDataAsInfringed` | **Type:** boolean · **Default:** false | | `TimeForInfringedState` | **Type:** integer · **Default:** 50 · **Minimum:** 1 · **Maximum:** 10000 | | `TimeForFreeState` | **Type:** integer · **Default:** 50 · **Minimum:** 1 · **Maximum:** 10000 | | `Reserved3` | **Type:** integer | | `Reserved4` | **Type:** integer | | | `EvaluationParamsExitSize` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `disableExitSize` | **Type:** boolean · **Default:** false | | `exitSizeVertical` | **Type:** integer · **Default:** 70 · **Minimum:** 0 · **Maximum:** 100 | | `exitSizeHorizontal` | **Type:** integer · **Default:** 100 · **Minimum:** 0 · **Maximum:** 100 | | | `VolumeList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | #### EvaluationResult_t `State` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - INACTIVE * 2 - FREE * 3 - DETECTING_INFRINGED * 4 - INFRINGED * 5 - DETECTING_FREE #### FieldEvaluationResult_t | `Version` | **Type:** integer · **Default:** 1 | | --- | --- | | `Timestamp` | **Type:** integer | | `EvaluationResultList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Fields:** [EvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-evaluationresult-t) | #### TrackEvaluation_t | `Version` | **Type:** integer · **Default:** 1 | | --- | --- | | `EvaluationParamsCommon` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `MaximumHiddenTime` | **Type:** integer · **Default:** 500 · **Minimum:** 0 · **Maximum:** 1000 | | `MinimumObjectAge` | **Type:** integer · **Default:** 0 · **Minimum:** 0 | | `TimeForInfringedState` | **Type:** integer · **Default:** 500 · **Minimum:** 1 | | `MinimumObjectWidth` | **Type:** integer · **Default:** 200 · **Minimum:** 0 · **Maximum:** 200000 | | `MinimumObjectHeight` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 200000 | | `EnableMaximumSizeFilter` | **Type:** boolean · **Default:** false | | `MaximumObjectWidth` | **Type:** integer · **Default:** 2000 · **Minimum:** 0 · **Maximum:** 200000 | | `MaximumObjectHeight` | **Type:** integer · **Default:** 2000 · **Minimum:** 0 · **Maximum:** 200000 | | `MotionState` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - ALL * 1 - MOVING * 2 - STATIONARY | | `EnableSpeedFilter` | **Type:** boolean · **Default:** true | | `MinimumObjectVelocity` | **Type:** integer · **Default:** 300 · **Minimum:** 0 · **Maximum:** 65000 | | `MaximumObjectVelocity` | **Type:** integer · **Default:** 15000 · **Minimum:** 0 · **Maximum:** 65000 | | `EnableDirectionFilter` | **Type:** boolean · **Default:** false | | `ObjectDirection` | **Type:** integer · **Default:** 180 · **Minimum:** -180 · **Maximum:** 180 | | `ObjectDirectionUncertainty` | **Type:** integer · **Default:** 90 · **Minimum:** 0 · **Maximum:** 180 | | `Reserved1` | **Type:** integer · **Default:** 0 | | `Reserved2` | **Type:** integer · **Default:** 0 | | `Reserved3` | **Type:** integer · **Default:** 0 | | `Reserved4` | **Type:** integer · **Default:** 0 | | `Reserved5` | **Type:** integer · **Default:** 0 | | `Reserved6` | **Type:** integer · **Default:** 0 | | | `ReservedParams1` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** `ReservedDummy` **Type:** integer · **Default:** 0 | | --- | --- | | `ReservedParams2` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** `ReservedDummy` **Type:** integer · **Default:** 0 | #### ObjectEvaluationResult_t | `Version` | **Type:** integer · **Default:** 1 | | --- | --- | | `Timestamp` | **Type:** integer | | `EvaluationResultList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Fields:** [EvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/#schema-evaluationresult-t) | --- # multiScan100 API | CoLa Telegrams (CoLa A and CoLa B) > multiScan100 CoLa telegram reference with sRN, sWN, sMN, and sEN commands, parameter structures, and CoLa A and CoLa B examples. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/ # API | CoLa Telegrams This reference lists the CoLa telegrams supported by the multiScan100. Use the command details to build or troubleshoot PLC and other low-level integrations without guessing the telegram structure. For connection setup, framing, and log in, see [CoLa Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/). Each telegram lists its request and response structure, examples, variable types, lengths, and CoLa A and CoLa B byte values. Every entry uses the same layout, as in the first entry, [Log In](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#log-in-smn-setaccessmode): a telegram structure table with the variable type, length, and the values in CoLa A and CoLa B, followed by examples that you can copy. Examples are grouped by protocol, with each telegram representation in a separate code block and its own copy button. Categories follow the [multiScan100 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) where corresponding CoLa telegrams are available. Select a telegram to expand its structure and examples. A direct link to a telegram opens it automatically. The categories organize the reference; availability still depends on the device variant, firmware, and installed software packages.
## General
### Log In [sMN SetAccessMode] The password hashes of the default passwords are documented in the operating instructions (PDF) of your device. Do not pass them on, and change the passwords during commissioning. A log in to the device is necessary to change parameters. In most cases, the user level 'Authorized client' is needed. Changed parameters will be reset to the previous state via a reboot unless the are saved. To save parameter changes the command "sMN mEEwriteall" must be send before log out. **Telegram structure: sMN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ---------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | User level | Select user level | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value for the selected user level | Uint_32 | 4 | Maintenance:
Authorized client:
Service: | `` | `` | **Example: sMN SetAccessMode** **CoLa A (ASCII)** ```text sMN{SPC}SetAccessMode{SPC}4{SPC} ``` ```text sMN SetAccessMode 4 ``` **Telegram structure: sAN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | Change user level | Changed level | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN SetAccessMode** **CoLa A (ASCII)** ```text sAN{SPC}SetAccessMode{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 01 38 ```
### Enable/ Disable CoLa User Levels [sMN EnableLegacyUserLevel] This command enables and disables a specific CoLa user level (Maintenance, Authorized Client). **Telegram structure: sMN EnableLegacyUserLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ---------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Enable/ disable CoLa user level | String | 21 | | `EnableLegacyUserLevel` | `45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C` | | User level | - | Uint_8 | 1 | Maintenance:
Authorized Client: | `2
3` | `02
03` | | Status | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sMN EnableLegacyUserLevel** **CoLa A (ASCII)** ```text sMN{SPC}EnableLegacyUserLevel{SPC}3{SPC}1 ``` ```text sMN EnableLegacyUserLevel 3 1 ``` ```text 02 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 33 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 03 20 01 21 ``` ```text 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 03 20 01 ``` **Telegram structure: sAN EnableLegacyUserLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ---------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Enable/ disable CoLa user level | String | 21 | | `EnableLegacyUserLevel` | `45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C` | | Status code | Confirmation | Bool_1 | 1 | unsuccessful:
successful: | `0
1` | `00
01` | **Example: sAN EnableLegacyUserLevel** **CoLa A (ASCII)** ```text sAN{SPC}EnableLegacyUserLevel{SPC}1 ``` ```text 02 73 41 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 41 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 01 0E ```
### Load Factory Defaults [sMN mSCloadfacdef] The Factory-Reset (Load factory defaults) deletes the entire parametrization of the device. All parameters, settings and system applications will be set to default. **Telegram structure: sMN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` | **Example: sMN mSCloadfacdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadfacdef ``` ```text sMN mSCloadfacdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 28 ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 ``` **Telegram structure: sAN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` | **Example: sAN mSCloadfacdef** **CoLa A (ASCII)** ```text sAN{SPC}mSCloadfacdef ``` ```text 02 73 41 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 20 04 ```
### Load Application Defaults [sMN mSCloadappdef] The Application-Reset (Load application defaults) deletes only the user parametrization of the Fields, Evaluation cases (EVC) and parameters under the header “Application”. Other parameters like Interface settings, Echo Filter, etc. remain unaffected. **Telegram structure: sMN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sMN mSCloadappdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadappdef ``` ```text sMN mSCloadappdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 2D ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 ``` **Telegram structure: sAN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sAN mSCloadappdef** **CoLa A (ASCII)** ```text sAN{SPC}mSCloadappdef ``` ```text 02 73 41 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 20 01 ```
### Change Password [sMN SetPassword] Changing the log in password for a specific user level. If logged in with a higher user level you may set the password for lower user levels as well. **Telegram structure: sMN SetPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------------- | -------- | ------ | ---------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set password request | String | 11 | | `SetPassword` | `53 65 74 50 61 73 73 77 6F 72 64` | | User level | User level that the password will be applied to | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value of the new password | Uint_32 | 4 | | `` | | Set password for 'Authorized client' to “testtest” (hash value = 1920E4C9). **Example: sMN SetPassword** **CoLa A (ASCII)** ```text sMN{SPC}SetPassword{SPC}3{SPC}1920E4C9 ``` ```text sMN SetPassword 3 1920E4C9 ``` ```text 02 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 33 20 31 39 32 30 45 34 43 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 1A ``` ```text 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 ``` **Telegram structure: sAN SetPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ------------------- | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set password requested | String | 11 | | `SetPassword` | `53 65 74 50 61 73 73 77 6F 72 64` | | Success | Confirmation | Int_8 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN SetPassword** **CoLa A (ASCII)** ```text sAN{SPC}SetPassword{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 01 00 ```
### Check Password [sMN CheckPassword] Check the password for a specific user level, e.g. to verify if it has been changed correctly. **Telegram structure: sMN CheckPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ---------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Check password request | String | 13 | | `CheckPassword` | `43 68 65 63 6B 50 61 73 73 77 6F 72 64` | | User level | User level to check the password for | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value of the password to be checked | Uint_32 | 4 | | `` | | Check password “testtest” for 'Authorized client'. **Example: sMN CheckPassword** **CoLa A (ASCII)** ```text sMN{SPC}CheckPassword{SPC}3{SPC}1920E4C9 ``` ```text sMN CheckPassword 3 1920E4C9 ``` ```text 02 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 33 20 31 39 32 30 45 34 43 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 1E ``` ```text 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 ``` **Telegram structure: sAN CheckPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ------------------- | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Check password request | String | 13 | | `CheckPassword` | `43 68 65 63 6B 50 61 73 73 77 6F 72 64` | | Success | Confirmation | Int_8 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN CheckPassword** **CoLa A (ASCII)** ```text sAN{SPC}CheckPassword{SPC}1 ``` ```text 02 73 41 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 01 04 ```
### Save Parameters Permanently [sMN mEEwriteall] Save all parameter changes of the device. Must be sent before logging off and/ or hardware rebooting of the device. Else all changes will be lost. **Telegram structure: sMN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | **Example: sMN mEEwriteall** **CoLa A (ASCII)** ```text sMN{SPC}mEEwriteall ``` ```text sMN mEEwriteall ``` ```text 02 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 21 ``` ```text 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C ``` **Telegram structure: sAN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mEEwriteall** **CoLa A (ASCII)** ```text sAN{SPC}mEEwriteall{SPC}1 ``` ```text 02 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 01 0C ```
### Set to Run [sMN Run] Log out from device and activate all parameter changes. **Telegram structure: sMN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ---------------------------------- | --------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | **Example: sMN Run** **CoLa A (ASCII)** ```text sMN{SPC}Run ``` ```text sMN Run ``` ```text 02 73 4D 4E 20 52 75 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 07 73 4D 4E 20 52 75 6E 19 ``` ```text 73 4D 4E 20 52 75 6E ``` **Telegram structure: sAN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------ | ------------------------------------- | --------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN Run** **CoLa A (ASCII)** ```text sAN{SPC}Run{SPC}1 ``` ```text 02 73 41 4E 20 52 75 6E 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 09 73 41 4E 20 52 75 6E 20 01 34 ```
### Reboot Device [sMN mSCreboot] This command includes saving all parameters. **Telegram structure: sMN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sMN mSCreboot** **CoLa A (ASCII)** ```text sMN{SPC}mSCreboot ``` ```text sMN mSCreboot ``` ```text 02 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 2C ``` ```text 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 ``` **Telegram structure: sAN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sAN mSCreboot** **CoLa A (ASCII)** ```text sAN{SPC}mSCreboot ``` ```text 02 73 41 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 41 4E 20 6D 53 43 72 65 62 6F 6F 74 20 00 ```
## Status
### Read the Device State [sRN DevSta] This telegram reads the device state. **Telegram structure: sRN DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the current device state | String | 6 | | `DevSta` | `44 65 76 53 74 61` | **Example: sRN DevSta** **CoLa A (ASCII)** ```text sRN{SPC}DevSta ``` ```text sRN DevSta ``` ```text sRN DevSta ``` ```text 02 73 52 4E 20 44 65 76 53 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 65 76 53 74 61 5E ``` ```text 73 52 4E 20 44 65 76 53 74 61 ``` **Telegram structure: sRA DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the current device state | String | 6 | | `DevSta` | `44 65 76 53 74 61` | | Status code | Code number | Enum_8 | 1 | Reserved:
Startup:
Service mode:
Normal operation:
Suspended operation:
Service recommended:
Service required:
Recoverable error:
Fatal error: | `0
1
2
3
4
5
6
7
8` | `00
01
02
03
04
05
06
07
08` | **Example: sRA DevSta** **CoLa A (ASCII)** ```text sRA{SPC}DevSta{SPC}3 ``` ```text 02 73 52 41 20 44 65 76 53 74 61 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 41 20 44 65 76 53 74 61 20 03 72 ```
### Read the Device State [sRN SCdevicestate] This telegram reads the general device state. **Telegram structure: sRN SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | **Example: sRN SCdevicestate** **CoLa A (ASCII)** ```text sRN{SPC}SCdevicestate ``` ```text sRN SCdevicestate ``` ```text sRN SCdevicestate ``` ```text 02 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 30 ``` ```text 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 ``` **Telegram structure: sRA SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | | Status code | Code number | Enum_8 | 1 | Busy / logged-in:
Ready:
Error: | `0
1
2` | `00
01
02` | **Example: sRA SCdevicestate** **CoLa A (ASCII)** ```text sRA{SPC}SCdevicestate{SPC}1 ``` ```text 02 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 1E ```
### Read the Current Device Temperature Alarm Status [sRN temperatureAlarmStatus] Current device temperature alarm status. If true, the configured temperature alarm is active. **Telegram structure: sRN temperatureAlarmStatus** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Device temperature alarm status | String | 22 | | `temperatureAlarmStatus` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73` | **Example: sRN temperatureAlarmStatus** **CoLa A (ASCII)** ```text sRN{SPC}temperatureAlarmStatus ``` ```text sRN temperatureAlarmStatus ``` ```text sRN temperatureAlarmStatus ``` ```text 02 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 44 ``` ```text 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 ``` **Telegram structure: sRA temperatureAlarmStatus** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | --------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Device temperature alarm status | String | 22 | | `temperatureAlarmStatus` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73` | | Data | Alarm state | Bool_1 | 1 | Disabled:
Enabled: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sRA temperatureAlarmStatus** **CoLa A (ASCII)** ```text sRA{SPC}temperatureAlarmStatus{SPC}0 ``` ```text 02 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 20 00 6B ```
### Set Device Temperature Alarm Configuration [sWN temperatureAlarmConfiguration] Sets the upper and lower threshold for the temperature alarm status. **Telegram structure: sWN temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Data 1 | Upper threshold [°C] | Int_8 | 1 | Default: 55 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | | Data 2 | Lower threshold [°C] | Int_8 | 1 | Default: 50 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | **Example: sWN temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sWN{SPC}temperatureAlarmConfiguration{SPC}37{SPC}32 ``` ```text sWN temperatureAlarmConfiguration 37 32 ``` ```text 02 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 33 37 20 33 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 00 ``` ```text 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 ``` **Telegram structure: sWA temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sWA temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sWA{SPC}temperatureAlarmConfiguration ``` ```text 02 73 57 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 22 73 57 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 0A ```
### Read Device Temperature Alarm Configuration [sRN temperatureAlarmConfiguration] Returns the upper and lower threshold for the temperature alarm status. **Telegram structure: sRN temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}temperatureAlarmConfiguration ``` ```text sRN temperatureAlarmConfiguration ``` ```text sRN temperatureAlarmConfiguration ``` ```text 02 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 ``` ```text 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Data 1 | Upper threshold [°C] | Int_8 | 1 | Default: 55 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | | Data 2 | Lower threshold [°C] | Int_8 | 1 | Default: 50 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | **Example: sRA temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sRA{SPC}temperatureAlarmConfiguration{SPC}37{SPC}32 ``` ```text 02 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 33 37 20 33 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 0A ```
## Device
### Read Firmware Version [sRN DeviceIdent] **Telegram structure: sRN DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read firmware version | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | **Example: sRN DeviceIdent** **CoLa A (ASCII)** ```text sRN{SPC}DeviceIdent ``` ```text sRN DeviceIdent ``` ```text sRN DeviceIdent ``` ```text 02 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 25 ``` ```text 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 ``` **Telegram structure: sRA DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | | Value | Length of firmware designation | Enum_16 | 2 | | `0 ... 22h` | `0 ... 22h` | | Value | Firmware designation for device family | String | | | `(See example)` | `(See example)` | | Value | Length of firmware version | Enum_16 | 2 | | `0 ... 22h` | `0 ... 22h` | | Value | Firmware version | String | | | `(See example)` | `(See example)` | **Example: sRA DeviceIdent** **CoLa A (ASCII)** ```text sRA{SPC}DeviceIdent{SPC}9{SPC}multiScan{SPC}8{SPC}2.4.4.0R ``` ```text 02 73 52 41 20 44 65 76 69 63 65 49 64 65 6E 74 20 39 20 6D 75 6C 74 69 53 63 61 6E 20 38 20 32 2E 34 2E 34 2E 30 52 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 52 41 20 44 65 76 69 63 65 49 64 65 6E 74 20 00 09 6D 75 6C 74 69 53 63 61 6E 00 08 32 2E 34 2E 34 2E 30 52 23 ```
### Read Version of the Application Software [sRN FirmwareVersion] **Telegram structure: sRN FirmwareVersion** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read version of the application software | String | 15 | | `FirmwareVersion` | `46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E` | **Example: sRN FirmwareVersion** **CoLa A (ASCII)** ```text sRN{SPC}FirmwareVersion ``` ```text sRN FirmwareVersion ``` ```text sRN FirmwareVersion ``` ```text 02 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 24 ``` ```text 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E ``` **Telegram structure: sRA FirmwareVersion** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | -------- | ---------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read version of the application software | String | 15 | | `FirmwareVersion` | `46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E` | | Value | Length of version | Uint_16 | 2 | | `0 ... 28h` | `0 ... 28h` | | Value | Version | String | variable | Length is given by the preceding Uint_16 | `(See example)` | `(See example)` | **Example: sRA FirmwareVersion** **CoLa A (ASCII)** ```text sRA{SPC}FirmwareVersion{SPC}5{SPC}2.4.4 ``` ```text 02 73 52 41 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 20 35 20 32 2E 34 2E 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 20 00 05 32 2E 34 2E 34 3C ```
### Read Device Order Number [sRN OrdNum] This telegram reads the device order number which corresponds to the SICK part number of the device. **Telegram structure: sRN OrdNum** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read device order number | String | 6 | | `OrdNum` | `4F 72 64 4E 75 6D` | **Example: sRN OrdNum** **CoLa A (ASCII)** ```text sRN{SPC}OrdNum ``` ```text sRN OrdNum ``` ```text sRN OrdNum ``` ```text 02 73 52 4E 20 4F 72 64 4E 75 6D 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 72 64 4E 75 6D 40 ``` ```text 73 52 4E 20 4F 72 64 4E 75 6D ``` **Telegram structure: sRA OrdNum** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | -------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read device order number | String | 6 | | `OrdNum` | `4F 72 64 4E 75 6D` | | Length | Number of characters of the following order number | Uint_16 | 2 | | `0h ... 20h` | `00 00 ... 00 20` | | Order number | Order number in 7 digits | String | 7 | | `0000000 … 9999999` | `00 00 00 00 00 00 00 … FF FF FF FF FF FF FF` | **Example: sRA OrdNum** **CoLa A (ASCII)** ```text sRA{SPC}OrdNum{SPC}7{SPC}1137723 ``` ```text 02 73 52 41 20 4F 72 64 4E 75 6D 20 37 20 31 31 33 37 37 32 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 4F 72 64 4E 75 6D 20 00 07 31 31 33 37 37 32 33 5A ```
### Read Serial Number [sRN SerialNumber] Read the serial number of the device. **Telegram structure: sRN SerialNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read serial number of the device | String | 12 | | `SerialNumber` | `53 65 72 69 61 6C 4E 75 6D 62 65 72` | **Example: sRN SerialNumber** **CoLa A (ASCII)** ```text sRN{SPC}SerialNumber ``` ```text sRN SerialNumber ``` ```text sRN SerialNumber ``` ```text 02 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 4C ``` ```text 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 ``` **Telegram structure: sRA SerialNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------------- | --------------------------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read serial number of the device | String | 12 | | `SerialNumber` | `53 65 72 69 61 6C 4E 75 6D 62 65 72` | | Length of serial number | Number of characters of the serial number | Uint_16 | 2 | | `0 ... 8h` | `00 00 ... 00 08h` | | Serial number | Production period (year, calendar week, number): YYWWxxxx | String | 8 | | `(See example)` | `(See example)` | **Example: sRA SerialNumber** **CoLa A (ASCII)** ```text sRA{SPC}SerialNumber{SPC}8{SPC}24480041 ``` ```text 02 73 52 41 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 20 38 20 32 34 34 38 30 30 34 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 20 00 08 32 34 34 38 30 30 34 31 64 ```
### Read Device Type [sRN DItype] This telegram asks for the device type of the product family. **Telegram structure: sRN DItype** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask state | String | 6 | | `DItype` | `44 49 74 79 70 65` | **Example: sRN DItype** **CoLa A (ASCII)** ```text sRN{SPC}DItype ``` ```text sRN DItype ``` ```text sRN DItype ``` ```text 02 73 52 4E 20 44 49 74 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 74 79 70 65 5A ``` ```text 73 52 4E 20 44 49 74 79 70 65 ``` **Telegram structure: sRA DItype** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | -------------------------------------------------- | -------- | ------ | ---------------------- | -------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Ask state | String | 6 | | `DItype` | `44 49 74 79 70 65` | | Length of type key | Number of digits of the following type code length | Uint_16 | 2 | String length in bytes | `0 ... FFFF` | `00 00 ... FF FF` | | Device type | Type code of the device | String | (var.) | | `(Device type)` | `(Device type)` | **Example: sRA DItype** **CoLa A (ASCII)** ```text sRA{SPC}DItype{SPC}C{SPC}multiScan165 ``` ```text 02 73 52 41 20 44 49 74 79 70 65 20 43 20 6D 75 6C 74 69 53 63 61 6E 31 36 35 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 41 20 44 49 74 79 70 65 20 00 0C 6D 75 6C 74 69 53 63 61 6E 31 36 35 1D ```
### Set Device Name [sWN LocationName] Give the device a specific description name such as its location. **Telegram structure: sWN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | | Value | Number of characters of the following device name | Uint_16 | 2 | | `0d … +16d (0h … 10h )` | `00 00 … 00 10` | | Value | Device name | String | 32 | | `[Device name]` | `[Device name]` | **Example: sWN LocationName** **CoLa A (ASCII)** ```text sWN{SPC}LocationName{SPC}9{SPC}BenchTest ``` ```text sWN LocationName 9 BenchTest ``` ```text 02 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 39 20 42 65 6E 63 68 54 65 73 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 09 42 65 6E 63 68 54 65 73 74 0D ``` ```text 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 09 42 65 6E 63 68 54 65 73 74 ``` **Telegram structure: sWA LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sWA LocationName** **CoLa A (ASCII)** ```text sWA{SPC}LocationName ``` ```text 02 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 7F ```
### Read Device Name [sRN LocationName] Read the given name of the device (Default is the serial number of the device). **Telegram structure: sRN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sRN LocationName** **CoLa A (ASCII)** ```text sRN{SPC}LocationName ``` ```text sRN LocationName ``` ```text sRN LocationName ``` ```text 02 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 55 ``` ```text 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 ``` **Telegram structure: sRA LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------------- | ----------- | -------- | ------ | ------------------ | --------------------- | ---------------------- | | Find complete telegram structure of the answer in | | | | | | | **Example: sRA LocationName** **CoLa A (ASCII)** ```text sRA{SPC}LocationName{SPC}15{SPC}multiScan165{SPC}24480041 ``` ```text 02 73 52 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 31 35 20 6D 75 6C 74 69 53 63 61 6E 31 36 35 20 32 34 34 38 30 30 34 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 28 73 52 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 15 6D 75 6C 74 69 53 63 61 6E 31 36 35 20 32 34 34 38 30 30 34 31 24 ```
### Initiate an Acoustic or Visual Signal for a Defined Period of Time [sMN FindMe] This command can be used to make the device easier to find. **Telegram structure: sMN FindMe** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------- | ------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------------------- | ------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Initiate an acoustic or visual signal | String | 6 | | `FindMe` | `46 69 6E 64 4D 65` | | Period of time | Duration in seconds | Uint_16 | 2 | | `0d … 65535d (0h .. FF FF)` | `00 ... FF FF` | **Example: sMN FindMe** **CoLa A (ASCII)** ```text sMN{SPC}FindMe{SPC}1 ``` ```text sMN FindMe 1 ``` ```text 02 73 4D 4E 20 46 69 6E 64 4D 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 46 69 6E 64 4D 65 20 00 01 7C ``` ```text 73 4D 4E 20 46 69 6E 64 4D 65 20 00 01 ``` **Telegram structure: sAN FindMe** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Initiate an acoustic or visual signal | String | 6 | | `FindMe` | `46 69 6E 64 4D 65` | **Example: sAN FindMe** **CoLa A (ASCII)** ```text sAN{SPC}FindMe ``` ```text 02 73 41 4E 20 46 69 6E 64 4D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 41 4E 20 46 69 6E 64 4D 65 20 71 ```
## Basic Settings
### Read for Frequency and Angular Resolution [sRN LMPscancfg] Read the scanning frequency, angular resolution and aperture angle of the device. Values show the information of the values before any filters are applied. Therefore aperture angle is always showing the maximum, scanning frequency and angular resolution may also be static depending on device family. **Telegram structure: sRN LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | **Example: sRN LMPscancfg** **CoLa A (ASCII)** ```text sRN{SPC}LMPscancfg ``` ```text sRN LMPscancfg ``` ```text sRN LMPscancfg ``` ```text 02 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 63 ``` ```text 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 ``` **Telegram structure: sRA LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | --------------------------------------------- | -------- | ------ | ---------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | | Scan frequency | [1/100 Hz] | Uint_32 | 4 | 20 Hz: | `7D0h` | `00 00 07 D0` | | Reserved | - | Int_16 | 2 | Always: | `1` | `00 01` | | Angular resolution | [1/10000°] | Uint_32 | 4 | 0.5°:
0.25° (interlaced):
0.125° (interlaced): | `1388h
9C4h
4E2h` | `00 00 13 88
00 00 09 C4
00 00 04 E2` | | Start angle | [1/10000°] | Int_32 | 4 | Variant-dependent; example: -180 to +180 degrees | `FFE488C0 ... 1B7740` | `FF E4 88 C0 ... 00 1B 77 40` | | Stop angle | [1/10000°] | Int_32 | 4 | Variant-dependent; example: -180 to +180 degrees | `FFE488C0 ... 1B7740` | `FF E4 88 C0 ... 00 1B 77 40` | **Example: sRA LMPscancfg** **CoLa A (ASCII)** ```text sRA{SPC}LMPscancfg{SPC}7D0{SPC}1{SPC}1388{SPC}FFE488C0{SPC}1B7740 ``` ```text 02 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 37 44 30 20 31 20 31 33 38 38 20 46 46 45 34 38 38 43 30 20 31 42 37 37 34 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 00 00 07 D0 00 01 00 00 13 88 FF E4 88 C0 00 1B 77 40 7E ```
### Start Measurement [sMN LMCstartmeas] Start the laser and (unless in Standby mode) the motor of the device **Telegram structure: sMN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | **Example: sMN LMCstartmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstartmeas ``` ```text sMN LMCstartmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 68 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 ``` **Telegram structure: sAN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstartmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstartmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 00 44 ```
### Stop Measurement [sMN LMCstopmeas] Shut off the laser and the motor is running at the set up frequency. **Telegram structure: sMN LMCstopmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Stop measurement | String | 11 | | `LMCstopmeas` | `4C 4D 43 73 74 6F 70 6D 65 61 73` | **Example: sMN LMCstopmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstopmeas ``` ```text sMN LMCstopmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 10 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 ``` **Telegram structure: sAN LMCstopmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------------- | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Stop measurement | String | 11 | | `LMCstopmeas` | `4C 4D 43 73 74 6F 70 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | No error:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstopmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstopmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 20 00 3C ```
### Autostart Measurement [sWN LMPautostartmeas] This parameter defines whether the scanner will start to rotate directly and measure when powering up or remain in idle mode. Save the changed setting with `sMN mEEwriteall`; it takes effect at the next power-up cycle. In case autostart is deactivated, the sensor will remain in idle mode with the laser switched off. **Telegram structure: sWN LMPautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | | Status code | Activate / Deactivate Autostart | Bool_1 | 1 | Autostart off:
Autostart on: | `0
1` | `00
01` | **Example: sWN LMPautostartmeas** **CoLa A (ASCII)** ```text sWN{SPC}LMPautostartmeas{SPC}1 ``` ```text sWN LMPautostartmeas 1 ``` ```text 02 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 4F ``` ```text 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 ``` **Telegram structure: sWA LMDautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | **Telegram structure: sWA LMPautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | **Example: sWA LMPautostartmeas** **CoLa A (ASCII)** ```text sWA{SPC}LMPautostartmeas ``` ```text 02 73 57 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 41 ```
### Read Parameter [sRN LMPautostartmeas] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LMPautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LMPautostartmeas | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | **Example: sRN LMPautostartmeas** **CoLa A (ASCII)** ```text sRN{SPC}LMPautostartmeas ``` ```text sRN LMPautostartmeas ``` ```text sRN LMPautostartmeas ``` ```text 02 73 52 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 6B ``` ```text 73 52 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 ``` **Example: sRA LMPautostartmeas** **CoLa A (ASCII)** ```text sRA{SPC}LMPautostartmeas{SPC}1 ``` ```text 02 73 52 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 52 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 45 ```
### Set Scan Configuration [sMN mCLsetscancfglist] Enable or disable interlacing. Four shifted scans can be combined to obtain finer angular sampling. See manual pages 108-109. Requires Authorized client. **Telegram structure: sMN mCLsetscancfglist** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | mCLsetscancfglist | String | 17 | | `mCLsetscancfglist` | `6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74` | | Mode | Interlacing | Enum_8 | 1 | Off / on | `0 / 1` | `00 / 01` | **Example: sMN mCLsetscancfglist** **CoLa A (ASCII)** ```text sMN{SPC}mCLsetscancfglist{SPC}1 ``` ```text sMN mCLsetscancfglist 1 ``` ```text 02 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 01 0E ``` ```text 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 01 ``` **Telegram structure: sAN mCLsetscancfglist** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ---------------------------------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | mCLsetscancfglist | String | 17 | | `mCLsetscancfglist` | `6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74` | | Status | Scan configuration result | Enum_8 | 1 | 0 OK; 1 frequency; 2 resolution; 3 frequency and resolution; 4 scan field; 5 error | `0 ... 5` | `00 ... 05` | **Example: sAN mCLsetscancfglist** **CoLa A (ASCII)** ```text sAN{SPC}mCLsetscancfglist{SPC}0 ``` ```text 02 73 41 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 41 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 00 03 ```
### Read Parameter [sRN LEDEnable] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LEDEnable | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | **Example: sRN LEDEnable** **CoLa A (ASCII)** ```text sRN{SPC}LEDEnable ``` ```text sRN LEDEnable ``` ```text sRN LEDEnable ``` ```text 02 73 52 4E 20 4C 45 44 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 52 4E 20 4C 45 44 45 6E 61 62 6C 65 23 ``` ```text 73 52 4E 20 4C 45 44 45 6E 61 62 6C 65 ``` **Example: sRA LEDEnable** **CoLa A (ASCII)** ```text sRA{SPC}LEDEnable{SPC}1 ``` ```text 02 73 52 41 20 4C 45 44 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4C 45 44 45 6E 61 62 6C 65 20 01 0D ```
### Enable/ Disable LEDs [sWN LEDEnable] This command enables/ disables the LEDs of the device. **Telegram structure: sWN LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Method | String | 3 | | `sWN` | `73 57 4E` | | Command | Set LEDs | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | | Status | Enable/ disable | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | **Example: sWN LEDEnable** **CoLa A (ASCII)** ```text sWN{SPC}LEDEnable{SPC}1 ``` ```text sWN LEDEnable 1 ``` ```text 02 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 01 07 ``` ```text 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set LEDs | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | **Example: sWA LEDEnable** **CoLa A (ASCII)** ```text sWA{SPC}LEDEnable ``` ```text 02 73 57 41 20 4C 45 44 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 45 44 45 6E 61 62 6C 65 20 09 ```
### Read State of LEDs [sRN LEDState] Read the current state of the LEDs. **Telegram structure: sRN LEDState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Method | String | 3 | | `sRN` | `73 52 4E` | | Command | Read state of LEDs | String | 8 | | `LEDState` | `4C 45 44 53 74 61 74 65` | **Example: sRN LEDState** **CoLa A (ASCII)** ```text sRN{SPC}LEDState ``` ```text sRN LEDState ``` ```text sRN LEDState ``` ```text 02 73 52 4E 20 4C 45 44 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 4C 45 44 53 74 61 74 65 55 ``` ```text 73 52 4E 20 4C 45 44 53 74 61 74 65 ``` **Telegram structure: sRA LEDState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ---------------------------------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | State of LEDs | String | 8 | | `LEDState` | `4C 45 44 53 74 61 74 65` | | LED Color | - | Enum_8 | 1 | Green:
Yellow:
Red: | `0
1
2` | `00
01
02` | | LED behavior | - | Enum_8 | 1 | On:
Off:
Blinking:
Blinking fast:
Blinking delayed:
Find me active: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | LED ID | Name of the LED | String | 8 | | `LED1
LED2` | `4C 45 44 31
4C 45 44 32` | **Example: sRA LEDState** **CoLa A (ASCII)** ```text 02 73 52 41 20 4C 45 44 53 74 61 74 65 20 34 20 30 20 30 20 4C 45 44 34 00 00 00 00 20 30 20 30 20 4C 45 44 32 00 00 00 00 20 31 20 30 20 4C 45 44 31 00 00 00 00 20 31 20 30 20 4C 45 44 33 00 00 00 00 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 37 73 52 41 20 4C 45 44 53 74 61 74 65 20 00 04 00 00 4C 45 44 34 00 00 00 00 00 00 4C 45 44 32 00 00 00 00 01 00 4C 45 44 31 00 00 00 00 01 00 4C 45 44 33 00 00 00 00 7A ```
## Date and System Time
### Set Time Synchronization [sWN TSCRole] Set the device synchronization mode. **Telegram structure: sWN TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | -------------------- | ------------------------------------------ | --------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | | Status | Timestamp role | Uint_8 | 1 | Off:
NTP:
PTP: | `0
1
3` | `00
01
03` | **Example: sWN TSCRole** **CoLa A (ASCII)** ```text sWN{SPC}TSCRole{SPC}1 ``` ```text sWN TSCRole 1 ``` ```text 02 73 57 4E 20 54 53 43 52 6F 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 1B ``` ```text 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 ``` **Telegram structure: sWA TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | -------------------------------------- | --------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | **Example: sWA TSCRole** **CoLa A (ASCII)** ```text sWA{SPC}TSCRole ``` ```text 02 73 57 41 20 54 53 43 52 6F 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 57 41 20 54 53 43 52 6F 6C 65 20 15 ```
### Set Time Stamp [sMN LSPsetdatetime] The data format in the telegram is: +2009{SPC}+7{SPC}+22{SPC}+12{SPC}+0{SPC}+0{SPC}+0.The numbers represent year, month, day, hour, minute, second, microsecond. If plus is used up-front the data it is interpreted as an integer decimal number, without the plus it's the scanner reads the data as hex format. The answer is always in ASCII format. Does only work if NTP- respectively PTP-Client is not active. There is no real time clock inside the device. When the scanner is switched off and after a reboot, the time has to be set again. Therefore, it is recommended to use a NTP or a PTP setting. **Telegram structure: sMN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | -------------------------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Year | | Uint_16 | 2 | | `+1970d … +2099d (07B2h … 0833h)` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `+1d … +12d(01h … 0Ch)` | `01 … 0C` | | Day | | Uint_8 | 1 | | `+1d … +31d(01h … 1Fh)` | `00 … 1F` | | Hour | | Uint_8 | 1 | | `+0d … +23d(00h … 17h)` | `00 … 17` | | Minute | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Second | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `+0d … +999999d(00000000h … 000F423Fh)` | `00 00 00 00 … 00 0F 42 3F` | **Example: sMN LSPsetdatetime** **CoLa A (ASCII)** ```text sMN{SPC}LSPsetdatetime{SPC}+2026{SPC}+10{SPC}+6{SPC}+9{SPC}+25{SPC}+28{SPC}+0 ``` ```text sMN LSPsetdatetime +2026 +10 +6 +9 +25 +28 +0 ``` ```text 02 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 2B 32 30 32 36 20 2B 31 30 20 2B 36 20 2B 39 20 2B 32 35 20 2B 32 38 20 2B 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 EA 0A 06 09 19 1C 00 00 00 00 B1 ``` ```text 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 EA 0A 06 09 19 1C 00 00 00 00 ``` **Telegram structure: sAN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Status code | Code number | Enum_8 | 1 | Success: | `0` | `00` | **Example: sAN LSPsetdatetime** **CoLa A (ASCII)** ```text sAN{SPC}LSPsetdatetime{SPC}0 ``` ```text 02 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 00 50 ```
### Read Device Time [sRN DeviceTime] Read sensor system time in milliseconds. Firmware 2.4.4.0R returns an 8-byte value. Values are time-dependent. **Telegram structure: sRN DeviceTime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | DeviceTime | String | 10 | | `DeviceTime` | `44 65 76 69 63 65 54 69 6D 65` | **Example: sRN DeviceTime** **CoLa A (ASCII)** ```text sRN{SPC}DeviceTime ``` ```text sRN DeviceTime ``` ```text sRN DeviceTime ``` ```text 02 73 52 4E 20 44 65 76 69 63 65 54 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 44 65 76 69 63 65 54 69 6D 65 42 ``` ```text 73 52 4E 20 44 65 76 69 63 65 54 69 6D 65 ``` **Telegram structure: sRA DeviceTime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------- | -------- | ------ | ------------------ | ----------------------------------------------------- | ---------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | DeviceTime | String | 10 | | `DeviceTime` | `44 65 76 69 63 65 54 69 6D 65` | | Device time | Sensor system time in milliseconds | Uint_64 | 8 | Firmware 2.4.4.0R | `0 ... FFFFFFFFFFFFFFFF` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | **Example: sRA DeviceTime** **CoLa A (ASCII)** ```text sRA{SPC}DeviceTime{SPC}77F7B ``` ```text 02 73 52 41 20 44 65 76 69 63 65 54 69 6D 65 20 37 37 46 37 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 44 65 76 69 63 65 54 69 6D 65 20 00 00 00 00 00 07 7F 7B 6E ```
### Set Time Server IP Address [sWN TSCTCSrvAddr] Define the IP address from which the device will receive the time synchronization. **Telegram structure: sWN TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | -------------------------- | -------- | ------ | ------------------------- | ----------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | | IP address data | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sWN TSCTCSrvAddr** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCSrvAddr{SPC}C0{SPC}A8{SPC}00{SPC}0B ``` ```text sWN TSCTCSrvAddr C0 A8 00 0B ``` ```text 02 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 43 30 20 41 38 20 30 30 20 30 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B 3E ``` ```text 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B ``` **Telegram structure: sWA TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | **Example: sWA TSCTCSrvAddr** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCSrvAddr ``` ```text 02 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 20 52 ```
### Set Time Zone [sWN TSCTCtimezone] **Telegram structure: sWN TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------- | ---------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------ | --------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | | Time zone data | Select the time zone of the client | Enum_8 | 1 | List of time zones | `+0d … +104d (00h … 68h)` | `00 … 68` | **Time zone data Values CoLa (ASCII)** | Value | Time zone | Value | Time zone | Value | Time zone | | ----- | ---------------------- | ----- | --------------------- | ----- | --------------------- | | 0 | DATE_LINE_STANDARD | 35 | MONROVIA_REYKJAVIK | 70 | MUMBAI_NEUDELHI | | 1 | COORD_WORLD_TIME_11 | 36 | AMSTERDAM_BERLIN_ROM | 71 | SRI_JAYAWARDENEPURA | | 2 | HAWAII | 37 | BELGRAD_BUDAPEST_PRAG | 72 | KATMANDU | | 3 | ALASKA | 38 | BRUESSEL_MADRID_PARIS | 73 | ASTANA | | 4 | CALIFORNIA | 39 | SARAJEVO_WARSCHAU | 74 | DAKKA | | 5 | USA_CANADA | 40 | WEST_CENTRAL_AFRICA | 75 | NOWOSIBIRSK | | 6 | ARIZONA | 41 | WINDHUK | 76 | YANGON | | 7 | LA_PAZ | 42 | AMMAN | 77 | BANGKOK_HANOI_JAKARTA | | 8 | MOUNTAIN_TIME_USA | 43 | ATHEN_BUKAREST | 78 | KRASNOJARSK | | 9 | CENTRAL_TIME_USA | 44 | BEIRUT | 79 | IRKUTSK | | 10 | MEXICO_CITY | 45 | DAMASCUS | 80 | KUALA_LUMPUR_SINGAPUR | | 11 | MIDDLE_AMERICA | 46 | HARARE_PRETORIA | 81 | PEKING_HONGKONG | | 12 | SASKATCHEWAN | 47 | HELSINKI_KIEW_RIGA | 82 | PERTH | | 13 | BOGOTA_LIMA | 48 | ISTANBUL | 83 | TAIPEH | | 14 | EASTERN_TIME_USA | 49 | JERUSALEM | 84 | ULAN_BATOR | | 15 | INDIANA | 50 | KAIRO | 85 | JAKUTSK | | 16 | CARACAS | 51 | KALININGRAD | 86 | OSAKA_TOKIO | | 17 | ASUNCION | 52 | EASTERN_EUROPE | 87 | SEOUL | | 18 | ATLANTIC_KANADA | 53 | TRIPOLIS | 88 | ADELAIDE | | 19 | CUIABA | 54 | BAGDAD | 89 | DARWIN | | 20 | LAPAZ_SANJUAN | 55 | KUWAIT_RIAD | 90 | BRISBANE | | 21 | SANTIAGO | 56 | MINSK | 91 | CANBERRA_SYDNEY | | 22 | NEUFUNDLAND | 57 | MOSKAU_PETERSBURG | 92 | GUAM_PORT_MORESBY | | 23 | BRASILIA | 58 | NAIROBI | 93 | HOBART | | 24 | BUENOS_AIRES | 59 | TEHERAN | 94 | MAGADAN | | 25 | CAYENNE_FORTALEZA | 60 | ABU_DHABI | 95 | WLADIWOSTOK | | 26 | GROENLAND | 61 | BAKU | 96 | SALOMONEN_KALEDONIEN | | 27 | MONTEVIDEO | 62 | ERIWAN | 97 | TSCHOKURDACH | | 28 | SALVADOR | 63 | ISCHEWSK_SAMARA | 98 | ANADYR | | 29 | COORD_WORLD_TIME_02 | 64 | PORT_LOUIS | 99 | AUCKLAND_WELLINGTON | | 30 | AZOREN | 65 | TIFLIS | 100 | FIDSCHI | | 31 | KAP_VERDE | 66 | KABUL | 101 | COORD_WORLD_TIME_12 | | 32 | CASABLANCA | 67 | ASCHGABET_TASCHKENT | 102 | NAKUALOFA | | 33 | DUBLIN_LISSABON_LONDON | 68 | ISLAMABAD_KARATSCHI | 103 | SAMOA | | 34 | COORD_WORLD_TIME | 69 | JEKATERINBURG | 104 | KIRITIMATI | **Example: sWN TSCTCtimezone** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCtimezone{SPC}24 ``` ```text sWN TSCTCtimezone 24 ``` ```text 02 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 32 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 16 ``` ```text 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 ``` **Telegram structure: sWA TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | **Example: sWA TSCTCtimezone** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCtimezone ``` ```text 02 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 3D ```
### Set Update Time [sWN TSCTCupdatetime] Define the time period after which the sensor will attempt to get the current system time for the TSC server. **Telegram structure: sWN TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------ | ---------------------------------- | -------- | ------ | ------------------ | -------------------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | | Update time of synchronization | Set values in seconds | Uint_32 | 4 | | `+1d … +3600d(01h … 0E10h)` | `00 00 00 00 … 00 00 0E 10` | **Example: sWN TSCTCupdatetime** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCupdatetime{SPC}+600 ``` ```text sWN TSCTCupdatetime +600 ``` ```text 02 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 2B 36 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 67 ``` ```text 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 ``` **Telegram structure: sWA TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | **Example: sWA TSCTCupdatetime** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCupdatetime ``` ```text 02 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 32 ```
### Read Parameter [sRN TSCRole] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------- | --------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | TSCRole | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | **Example: sRN TSCRole** **CoLa A (ASCII)** ```text sRN{SPC}TSCRole ``` ```text sRN TSCRole ``` ```text sRN TSCRole ``` ```text 02 73 52 4E 20 54 53 43 52 6F 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 52 4E 20 54 53 43 52 6F 6C 65 3F ``` ```text 73 52 4E 20 54 53 43 52 6F 6C 65 ``` **Example: sRA TSCRole** **CoLa A (ASCII)** ```text sRA{SPC}TSCRole{SPC}0 ``` ```text 02 73 52 41 20 54 53 43 52 6F 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 52 41 20 54 53 43 52 6F 6C 65 20 00 10 ```
### Read Parameter [sRN TSCTCSrvAddr] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | TSCTCSrvAddr | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | **Example: sRN TSCTCSrvAddr** **CoLa A (ASCII)** ```text sRN{SPC}TSCTCSrvAddr ``` ```text sRN TSCTCSrvAddr ``` ```text sRN TSCTCSrvAddr ``` ```text 02 73 52 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 78 ``` ```text 73 52 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 ``` **Example: sRA TSCTCSrvAddr** **CoLa A (ASCII)** ```text sRA{SPC}TSCTCSrvAddr{SPC}C0{SPC}A8{SPC}0{SPC}B ``` ```text 02 73 52 41 20 54 53 43 54 43 53 72 76 41 64 64 72 20 43 30 20 41 38 20 30 20 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 41 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B 34 ```
### Read Parameter [sRN TSCTCtimezone] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | TSCTCtimezone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | **Example: sRN TSCTCtimezone** **CoLa A (ASCII)** ```text sRN{SPC}TSCTCtimezone ``` ```text sRN TSCTCtimezone ``` ```text sRN TSCTCtimezone ``` ```text 02 73 52 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 17 ``` ```text 73 52 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 ``` **Example: sRA TSCTCtimezone** **CoLa A (ASCII)** ```text sRA{SPC}TSCTCtimezone{SPC}24 ``` ```text 02 73 52 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 32 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 1C ```
### Read Parameter [sRN TSCTCupdatetime] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | ---------------------------------------------- | --------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | TSCTCupdatetime | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | **Example: sRN TSCTCupdatetime** **CoLa A (ASCII)** ```text sRN{SPC}TSCTCupdatetime ``` ```text sRN TSCTCupdatetime ``` ```text sRN TSCTCupdatetime ``` ```text 02 73 52 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 18 ``` ```text 73 52 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 ``` **Example: sRA TSCTCupdatetime** **CoLa A (ASCII)** ```text sRA{SPC}TSCTCupdatetime{SPC}258 ``` ```text 02 73 52 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 32 35 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 52 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 6D ```
## Filter
### Read Parameter [sRN MCSenseLevel] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN MCSenseLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | MCSenseLevel | String | 12 | | `MCSenseLevel` | `4D 43 53 65 6E 73 65 4C 65 76 65 6C` | **Example: sRN MCSenseLevel** **CoLa A (ASCII)** ```text sRN{SPC}MCSenseLevel ``` ```text sRN MCSenseLevel ``` ```text sRN MCSenseLevel ``` ```text 02 73 52 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 59 ``` ```text 73 52 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C ``` **Example: sRA MCSenseLevel** **CoLa A (ASCII)** ```text sRA{SPC}MCSenseLevel{SPC}0 ``` ```text 02 73 52 41 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 41 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 00 76 ```
### Set Particle Filter [sWN LFPparticle] Filter out disturbances in the meausurement data caused by particles such as dust, snow flakes or similar . **Telegram structure: sWN LFPparticle** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | -------------------- | ------------------------------------------- | --------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set particle filter | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | | Status code | Code number | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | | Threshold1) | Particle threshold in mm | Uint_16 | 2 | (must be taken) | `+500d (1F4h)` | `01 F4` | Never change the threshold here, it is taken by the device to handle the particles. **Example: sWN LFPparticle** **CoLa A (ASCII)** ```text sWN{SPC}LFPparticle{SPC}1{SPC}+500 ``` ```text sWN LFPparticle 1 +500 ``` ```text 02 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 31 20 2B 35 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 01 01 F4 D0 ``` ```text 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 01 01 F4 ``` **Telegram structure: sWA LFPparticle** | Telegram part | Description | Variable | Length | Sensor | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set particle filter | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | **Example: sWA LFPparticle** **CoLa A (ASCII)** ```text sWA{SPC}LFPparticle ``` ```text 02 73 57 41 20 4C 46 50 70 61 72 74 69 63 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 4C 46 50 70 61 72 74 69 63 6C 65 20 2B ```
### Set Echo Filter [sWN FREchoFilter] Only available with firmware versions > V1.10. Select which measurement value(s) shall be send via LMDscanata, if the meausrement of one angular position returns several distance values **Telegram structure: sWN FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | --------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | | Status code | Code number | Enum_8 | 1 | First echo:
All echos:
Last echo: | `0
1
2` | `00
01
02` | **Example: sWN FREchoFilter** **CoLa A (ASCII)** ```text sWN{SPC}FREchoFilter{SPC}1 ``` ```text sWN FREchoFilter 1 ``` ```text 02 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 7E ``` ```text 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 ``` **Telegram structure: sWA FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | **Example: sWA FREchoFilter** **CoLa A (ASCII)** ```text sWA{SPC}FREchoFilter ``` ```text 02 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 70 ```
### Set Sensitivity Fog Filter [sWN MCSenseLevel] Filter out disturbances in the meausurement data caused by fog or steam. **Telegram structure: sWN MCSenseLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | -------------------------------------------- | -------- | ------ | ------------------------------- | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sense level | String | 12 | | `MCSenseLevel` | `4D 43 53 65 6E 73 65 4C 65 76 65 6C` | | Sensitivity level | Enable or disable fog filter and Sense Level | Uint_8 | 1 | Fog Filter off
Fog Filter on | `0
1` | `00
01` | **Example: sWN MCSenseLevel** **CoLa A (ASCII)** ```text sWN{SPC}MCSenseLevel{SPC}0 ``` ```text sWN MCSenseLevel 0 ``` ```text 02 73 57 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 00 7C ``` ```text 73 57 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 00 ``` **Telegram structure: sWA MCSenseLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sense level | String | 12 | | `MCSenseLevel` | `4D 43 53 65 6E 73 65 4C 65 76 65 6C` | **Example: sWA MCSenseLevel** **CoLa A (ASCII)** ```text sWA{SPC}MCSenseLevel ``` ```text 02 73 57 41 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 73 ```
### Set Moving Averaging Filter [sWN LFPmovingAveragingFilter] Enables the moving average filter **Telegram structure: sWN LFPmovingAveragingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | --------------------------- | -------- | ------ | -------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | String | String | 24 | | `LFPmovingAveragingFilter` | `4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72` | | Variable Data 1 | Moving averaging is enabled | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00
01` | | Variable Data 2 | averaging depth | UInt | 2 | Minimum:
Maximum: | `+2d (02h)
+4d (0Ah)` | `00 02
00 04` | Disable the moving average filter and set averaging depth to 3 **Example: sWN LFPmovingAveragingFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPmovingAveragingFilter{SPC}0{SPC}3 ``` ```text sWN LFPmovingAveragingFilter 0 3 ``` ```text 02 73 57 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 30 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 57 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 00 00 03 41 ``` ```text 73 57 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 00 00 03 ``` **Telegram structure: sWA LFPmovingAveragingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | String | String | 24 | | `LFPmovingAveragingFilter` | `4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72` | **Example: sWA LFPmovingAveragingFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPmovingAveragingFilter ``` ```text 02 73 57 41 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 41 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 4D ```
### Set Ground Filter [sWN groundFilterEnable] Enable ground-point exclusion for field evaluation and perpendicular-distance measurement (manual pages 149-151). Requires Authorized client. **Telegram structure: sWN groundFilterEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | groundFilterEnable | String | 18 | | `groundFilterEnable` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65` | | State | Filter enabled | Bool_1 | 1 | Disabled / enabled | `0 / 1` | `00 / 01` | **Example: sWN groundFilterEnable** **CoLa A (ASCII)** ```text sWN{SPC}groundFilterEnable{SPC}1 ``` ```text sWN groundFilterEnable 1 ``` ```text 02 73 57 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 20 01 6F ``` ```text 73 57 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA groundFilterEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | groundFilterEnable | String | 18 | | `groundFilterEnable` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65` | **Example: sWA groundFilterEnable** **CoLa A (ASCII)** ```text sWA{SPC}groundFilterEnable ``` ```text 02 73 57 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 20 61 ```
### Read Ground Filter State [sRN groundFilterEnable] Read whether the ground filter is enabled. **Telegram structure: sRN groundFilterEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | groundFilterEnable | String | 18 | | `groundFilterEnable` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65` | **Example: sRN groundFilterEnable** **CoLa A (ASCII)** ```text sRN{SPC}groundFilterEnable ``` ```text sRN groundFilterEnable ``` ```text sRN groundFilterEnable ``` ```text 02 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 4B ``` ```text 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 ``` **Telegram structure: sRA groundFilterEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | groundFilterEnable | String | 18 | | `groundFilterEnable` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65` | | State | Filter enabled | Bool_1 | 1 | Disabled / enabled | `0 / 1` | `00 / 01` | **Example: sRA groundFilterEnable** **CoLa A (ASCII)** ```text sRA{SPC}groundFilterEnable{SPC}0 ``` ```text 02 73 52 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 52 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 45 6E 61 62 6C 65 20 00 64 ```
### Read Ground Filter Type [sRN groundFilterType] Read the ground-plane source (manual pages 151-152). **Telegram structure: sRN groundFilterType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | groundFilterType | String | 16 | | `groundFilterType` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65` | **Example: sRN groundFilterType** **CoLa A (ASCII)** ```text sRN{SPC}groundFilterType ``` ```text sRN groundFilterType ``` ```text sRN groundFilterType ``` ```text 02 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65 52 ``` ```text 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65 ``` **Telegram structure: sRA groundFilterType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | groundFilterType | String | 16 | | `groundFilterType` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65` | | Type | Ground-plane source | Enum_8 | 1 | P3D / IMU | `0 / 1` | `00 / 01` | **Example: sRA groundFilterType** **CoLa A (ASCII)** ```text sRA{SPC}groundFilterType{SPC}0 ``` ```text 02 73 52 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 52 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 79 70 65 20 00 7D ```
### Set Ground Filter Thresholds [sWN groundFilterThresholds] Set the minimum and maximum signed ground-plane distances in mm (manual pages 152-154). Both values are two-byte signed integers; the manual's Int_8 label is inconsistent with its length and bytes. Requires Authorized client. **Telegram structure: sWN groundFilterThresholds** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ---------------- | --------------------------------------- | -------- | ------ | ---------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | groundFilterThresholds | String | 22 | | `groundFilterThresholds` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73` | | Minimum distance | Signed distance from ground plane in mm | Int_16 | 2 | -1000 to +1000; default -100 | `-100` | `FF 9C` | | Maximum distance | Signed distance from ground plane in mm | Int_16 | 2 | -1000 to +1000; default +100 | `+100` | `00 64` | **Example: sWN groundFilterThresholds** **CoLa A (ASCII)** ```text sWN{SPC}groundFilterThresholds{SPC}-50{SPC}+50 ``` ```text sWN groundFilterThresholds -50 +50 ``` ```text 02 73 57 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 20 2D 35 30 20 2B 35 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 20 FF CE 00 32 68 ``` ```text 73 57 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 20 FF CE 00 32 ``` **Telegram structure: sWA groundFilterThresholds** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | groundFilterThresholds | String | 22 | | `groundFilterThresholds` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73` | **Example: sWA groundFilterThresholds** **CoLa A (ASCII)** ```text sWA{SPC}groundFilterThresholds ``` ```text 02 73 57 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 57 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 20 64 ```
### Read Ground Filter Thresholds [sRN groundFilterThresholds] Read the signed ground-point distance limits in mm (manual pages 154-155). **Telegram structure: sRN groundFilterThresholds** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | groundFilterThresholds | String | 22 | | `groundFilterThresholds` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73` | **Example: sRN groundFilterThresholds** **CoLa A (ASCII)** ```text sRN{SPC}groundFilterThresholds ``` ```text sRN groundFilterThresholds ``` ```text sRN groundFilterThresholds ``` ```text 02 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 4E ``` ```text 73 52 4E 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 ``` **Telegram structure: sRA groundFilterThresholds** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ---------------- | --------------------------------------- | -------- | ------ | ---------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | groundFilterThresholds | String | 22 | | `groundFilterThresholds` | `67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73` | | Minimum distance | Signed distance from ground plane in mm | Int_16 | 2 | -1000 to +1000; default -100 | `-100` | `FF 9C` | | Maximum distance | Signed distance from ground plane in mm | Int_16 | 2 | -1000 to +1000; default +100 | `+100` | `00 64` | **Example: sRA groundFilterThresholds** **CoLa A (ASCII)** ```text sRA{SPC}groundFilterThresholds{SPC}FF9C{SPC}64 ``` ```text 02 73 52 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 20 46 46 39 43 20 36 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 41 20 67 72 6F 75 6E 64 46 69 6C 74 65 72 54 68 72 65 73 68 6F 6C 64 73 20 FF 9C 00 64 66 ```
### Read Parameter [sRN FREchoFilter] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | FREchoFilter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | **Example: sRN FREchoFilter** **CoLa A (ASCII)** ```text sRN{SPC}FREchoFilter ``` ```text sRN FREchoFilter ``` ```text sRN FREchoFilter ``` ```text 02 73 52 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 5A ``` ```text 73 52 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 ``` **Example: sRA FREchoFilter** **CoLa A (ASCII)** ```text sRA{SPC}FREchoFilter{SPC}1 ``` ```text 02 73 52 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 74 ```
### Read Parameter [sRN LFPmovingAveragingFilter] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LFPmovingAveragingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LFPmovingAveragingFilter | String | 24 | | `LFPmovingAveragingFilter` | `4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72` | **Example: sRN LFPmovingAveragingFilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPmovingAveragingFilter ``` ```text sRN LFPmovingAveragingFilter ``` ```text sRN LFPmovingAveragingFilter ``` ```text 02 73 52 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 67 ``` ```text 73 52 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 ``` **Example: sRA LFPmovingAveragingFilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPmovingAveragingFilter{SPC}0{SPC}3 ``` ```text 02 73 52 41 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 30 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 52 41 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 00 00 03 4B ```
### Read Parameter [sRN LFPparticle] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LFPparticle** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LFPparticle | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | **Example: sRN LFPparticle** **CoLa A (ASCII)** ```text sRN{SPC}LFPparticle ``` ```text sRN LFPparticle ``` ```text sRN LFPparticle ``` ```text 02 73 52 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 01 ``` ```text 73 52 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 ``` **Example: sRA LFPparticle** **CoLa A (ASCII)** ```text sRA{SPC}LFPparticle{SPC}0{SPC}1F4 ``` ```text 02 73 52 41 20 4C 46 50 70 61 72 74 69 63 6C 65 20 30 20 31 46 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 4C 46 50 70 61 72 74 69 63 6C 65 20 00 01 F4 DB ```
## Contamination Indication
### Set Contamination Indication Settings [sWN ContaminationConfig] Define how and under which conditions the device shall indicate a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sWN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------- | ------------------------------------------------------------------------------------------ | -------- | ------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | No output:
All sectors contaminated:
One sector contaminated: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | Value range 3 ... 60
Default: 3 | `+3d … +60d (03h … 3Ch)` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | High:
Medium:
Low: | `0
1
2` | `00
01
02` | | Sector preselection | Selection of either custom sectors or used weather protection hood | Enum_8 | 1 | All sectors:
Weather protection hood:
Custom sectors: | `0
6
255d (FFh)` | `00
06
FF` | | Length | | UInt_16 | 2 | Always: | `7` | `07` | | Custom sectors | Enable/ disable individual sectors when custom sectors got selected in Sector preselection | Array | 7 | Active: 1
Inactive: 0
Default value of all sectors is active | `0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1` | `00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01` | | Enable Warning | Warning monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | | Enable Error | Error monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | **Example: sWN ContaminationConfig** **CoLa A (ASCII)** ```text sWN{SPC}ContaminationConfig{SPC}0{SPC}3{SPC}0{SPC}0{SPC}C{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text sWN ContaminationConfig 0 3 0 0 C 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ``` ```text 02 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 30 20 33 20 30 20 30 20 43 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0F ``` ```text 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ``` **Telegram structure: sWA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Example: sWA ContaminationConfig** **CoLa A (ASCII)** ```text sWA{SPC}ContaminationConfig ``` ```text 02 73 57 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 0F ```
### Read Contamination Indication Settings [sRN ContaminationConfig] Reads the current contamination settings that define how and under which conditions the device indicates a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sRN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Example: sRN ContaminationConfig** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationConfig ``` ```text sRN ContaminationConfig ``` ```text sRN ContaminationConfig ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 25 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 ``` **Telegram structure: sRA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------- | ------------------------------------------------------------------------------------------ | -------- | ------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | No output:
All sectors contaminated:
One sector contaminated: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | Value range 3 ... 60
Default: 3 | `03h … 3Ch` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | High:
Medium:
Low: | `0
1
2` | `00
01
02` | | Sector preselection | Selection of either custom sectors or used weather protection hood | Enum_8 | 1 | All sectors:
Weather protection hood:
Custom sectors: | `0
6
FF` | `00
06
FF` | | Length | | Enum_8 | 1 | Always: | `7` | `07` | | Custom sectors | Enable/ disable individual sectors when custom sectors got selected in Sector preselection | Array | 7 | Active: 1
Inactive: 0
Default value of all sectors is active | `0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1` | `00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01` | | Enable Warning | Warning monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | | Enable Error | Error monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | **Example: sRA ContaminationConfig** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationConfig{SPC}0{SPC}3{SPC}0{SPC}0{SPC}C{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 30 20 33 20 30 20 30 20 43 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 01 01 05 ```
### Send Contamination Indication Data Permanently [sEN ContaminationData] Provides continuous contamination indication data for the individual sectors of the optical cover. When a change in contamination is detected in any sector, the current contamination status of all sectors will be transmitted **Telegram structure: sEN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sEN` | `73 45 4E` | | Command | Get the contamination indication data continuously | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationData** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationData{SPC}1 ``` ```text sEN ContaminationData 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 09 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 ``` **Example: sEA ContaminationData** **CoLa A (ASCII)** ```text sEA{SPC}ContaminationData{SPC}1 ``` ```text 02 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 06 ``` **Telegram structure: sSN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------- | -------------------------------------------------- | --------------- | ------ | ---------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Get the contamination indication data continuously | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Number of contamination sectors | | Uint_16 | 2 | Always: | `7` | `00 07` | | Contamination data | Status of contamination of each sector | Array of Enum_8 | 7 | Blocked:
Clean:
Warning:
Error: | `0
1
2
3` | `00
01
02
03` |
### Read Contamination Indication Result [sRN ContaminationResult] This telegram is intended to read the contamination result. The telegram returns two Boolean. One for warning and one for error. Depending on the strategy of the contamination indication the state changes if one or all sectors are in the specific status (warning or error). **Telegram structure: sRN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN ContaminationResult** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationResult ``` ```text sRN ContaminationResult ``` ```text sRN ContaminationResult ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 26 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------- | ----------- | -------- | ------ | ---------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Contamination Result | Warning | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | | Contamination Result | Error | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sRA ContaminationResult** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 00 09 ```
### Send Contamination Indication Result Permanently [sEN ContaminationResult] This telegram is intended to activate the event for read the contamination result permanently. The telegram returns two Boolean. One for warning and one for error. Depending on the strategy of the contamination indication the state changes if one or all sectors are in the specific status (warning or error). **Telegram structure: sEN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sEN` | `73 45 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationResult** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationResult{SPC}1 ``` ```text sEN ContaminationResult 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 10 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Example: sEA ContaminationResult** **CoLa A (ASCII)** ```text sEA{SPC}ContaminationResult{SPC}1 ``` ```text 02 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 1F ``` **Telegram structure: sSN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------- | ----------- | -------- | ------ | ---------------------- | ------------------------------------- | --------------------------------------- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Contamination Result | Warning | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | | Contamination Result | Error | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sSN ContaminationResult warning active error inactive** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}1{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 00 08 ```
## Ethernet
### Read Parameter [sRN EIAddrMode] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | EIAddrMode | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | **Example: sRN EIAddrMode** **CoLa A (ASCII)** ```text sRN{SPC}EIAddrMode ``` ```text sRN EIAddrMode ``` ```text sRN EIAddrMode ``` ```text 02 73 52 4E 20 45 49 41 64 64 72 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 41 64 64 72 4D 6F 64 65 53 ``` ```text 73 52 4E 20 45 49 41 64 64 72 4D 6F 64 65 ``` **Example: sRA EIAddrMode** **CoLa A (ASCII)** ```text sRA{SPC}EIAddrMode{SPC}0 ``` ```text 02 73 52 41 20 45 49 41 64 64 72 4D 6F 64 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 41 20 45 49 41 64 64 72 4D 6F 64 65 20 00 7C ```
### Read Parameter [sRN EIDHCPFallback] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | EIDHCPFallback | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | **Example: sRN EIDHCPFallback** **CoLa A (ASCII)** ```text sRN{SPC}EIDHCPFallback ``` ```text sRN EIDHCPFallback ``` ```text sRN EIDHCPFallback ``` ```text 02 73 52 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 70 ``` ```text 73 52 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B ``` **Example: sRA EIDHCPFallback** **CoLa A (ASCII)** ```text sRA{SPC}EIDHCPFallback{SPC}0 ``` ```text 02 73 52 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 00 5F ```
### Set IP Address [sWN EIIpAddr] Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------------- | --------------------------------------------------- | ------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | | IP address | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | **Example: sWN EIIpAddr** **CoLa A (ASCII)** ```text sWN{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}0{SPC}1 ``` ```text sWN EIIpAddr C0 A8 0 1 ``` ```text 02 73 57 4E 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 01 05 ``` ```text 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 01 ``` **Telegram structure: sWA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | **Example: sWA EIIpAddr** **CoLa A (ASCII)** ```text sWA{SPC}EIIpAddr ``` ```text 02 73 57 41 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 41 20 45 49 49 70 41 64 64 72 20 63 ```
### Read IP Address [sRN EIIpAddr] Read the IP address of the device. **Telegram structure: sRN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | **Example: sRN EIIpAddr** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddr ``` ```text sRN EIIpAddr ``` ```text sRN EIIpAddr ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 45 49 49 70 41 64 64 72 49 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 ``` **Telegram structure: sRA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------------- | ------------------------------------------------- | ------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sRA EIIpAddr** **CoLa A (ASCII)** ```text sRA{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}0{SPC}1 ``` ```text 02 73 52 41 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 45 49 49 70 41 64 64 72 20 C0 A8 00 01 0F ```
### Read IP Address Assigned by DHCP [sRN EIIpAddrDHCP] DHCP needs to be set as mode for ethernet assignment. **Telegram structure: sRN EIIpAddrDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address assigned by DHCP | String | 12 | | `EIIpAddrDHCP` | `45 49 49 70 41 64 64 72 44 48 43 50` | **Example: sRN EIIpAddrDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddrDHCP ``` ```text sRN EIIpAddrDHCP ``` ```text sRN EIIpAddrDHCP ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 56 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 ``` **Telegram structure: sRA EIIpAddrDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------------- | ------------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address assigned by DHCP | String | 12 | | `EIIpAddrDHCP` | `45 49 49 70 41 64 64 72 44 48 43 50` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sRA EIIpAddrDHCP** **CoLa A (ASCII)** ```text sRA{SPC}EIIpAddrDHCP{SPC}C0{SPC}A8{SPC}0{SPC}1 ``` ```text 02 73 52 41 20 45 49 49 70 41 64 64 72 44 48 43 50 20 43 30 20 41 38 20 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 41 20 45 49 49 70 41 64 64 72 44 48 43 50 20 C0 A8 00 01 10 ```
### Set Mode for Ethernet Address Assignment [sWN EIAddrMode] This Command determines the mode for the ethernet address assignment. **Telegram structure: sWN EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------- | ---------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set mode for ethernet address assignment | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | | Ethernet address assignment | Static IP address / DHCP | Enum_8 | 1 | Static:
DHCP: | `0
1` | `00
01` | **Example: sWN EIAddrMode** **CoLa A (ASCII)** ```text sWN{SPC}EIAddrMode{SPC}0 ``` ```text sWN EIAddrMode 0 ``` ```text 02 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 00 76 ``` ```text 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 00 ``` **Telegram structure: sWA EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set mode for ethernet address assignment | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | **Example: sWA EIAddrMode** **CoLa A (ASCII)** ```text sWA{SPC}EIAddrMode ``` ```text 02 73 57 41 20 45 49 41 64 64 72 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 41 20 45 49 41 64 64 72 4D 6F 64 65 20 79 ```
### Set Fallback for DHCP [sWN EIDHCPFallback] This Command determines the fallback when DHCP is not successful. **Telegram structure: sWN EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------ | ---------------------------------- | -------- | ------ | --------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set fallback for DHCP | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | | Fallback ethernet address assignment | Use Static IP address / Retry DHCP | Enum_8 | 1 | Static IP address:
DHCP retry: | `0
1` | `00
01` | **Example: sWN EIDHCPFallback** **CoLa A (ASCII)** ```text sWN{SPC}EIDHCPFallback{SPC}0 ``` ```text sWN EIDHCPFallback 0 ``` ```text 02 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 00 55 ``` ```text 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 00 ``` **Telegram structure: sWA EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set fallback for DHCP | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | **Example: sWA EIDHCPFallback** **CoLa A (ASCII)** ```text sWA{SPC}EIDHCPFallback ``` ```text 02 73 57 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 5A ```
### Set Ethernet Gateway [sWN EIgate] Change Ethernet gateway IP address (TCP/IP) Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ------------------- | -------- | ------ | ------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Set values | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EIgate** **CoLa A (ASCII)** ```text sWN{SPC}EIgate{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN EIgate 0 0 0 0 ``` ```text 02 73 57 4E 20 45 49 67 61 74 65 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 67 61 74 65 20 00 00 00 00 71 ``` ```text 73 57 4E 20 45 49 67 61 74 65 20 00 00 00 00 ``` **Telegram structure: sWA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sWA EIgate** **CoLa A (ASCII)** ```text sWA{SPC}EIgate ``` ```text 02 73 57 41 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 67 61 74 65 20 7E ```
### Read Ethernet Gateway [sRN EIgate] Read for the Ethernet gateway (TCP/IP) **Telegram structure: sRN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sRN EIgate** **CoLa A (ASCII)** ```text sRN{SPC}EIgate ``` ```text sRN EIgate ``` ```text sRN EIgate ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 67 61 74 65 54 ``` ```text 73 52 4E 20 45 49 67 61 74 65 ``` **Telegram structure: sRA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | -------------------- | -------- | ------ | ------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIgate** **CoLa A (ASCII)** ```text sRA{SPC}EIgate{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 49 67 61 74 65 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 45 49 67 61 74 65 20 00 00 00 00 7B ```
### Read Ethernet Gateway IP Address Assigned by DHCP [sRN EIgateDHCP] DHCP needs to be set as mode for ethernet assignment. Read for the ethernet gateway IP address which was assigned by DHCP. **Telegram structure: sRN EIgateDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read ethernet gateway IP address assigned by DHCP | String | 10 | | `EIgateDHCP` | `45 49 67 61 74 65 44 48 43 50` | **Example: sRN EIgateDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EIgateDHCP ``` ```text sRN EIgateDHCP ``` ```text sRN EIgateDHCP ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 4B ``` ```text 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 ``` **Telegram structure: sRA EIgateDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ------------------------------------------------- | -------- | ------ | --------------------------------- | ----------------------------------------------- | ------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read ethernet gateway IP address assigned by DHCP | String | 10 | | `EIgateDHCP` | `45 49 67 61 74 65 44 48 43 50` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIgateDHCP** **CoLa A (ASCII)** ```text sRA{SPC}EIgateDHCP{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 49 67 61 74 65 44 48 43 50 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 67 61 74 65 44 48 43 50 20 00 00 00 00 64 ```
### Set IP Mask [sWN EImask] Define the subnet mask of the device. Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ---------------------- | ----------------------------------------------- | ------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Set values | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EImask** **CoLa A (ASCII)** ```text sWN{SPC}EImask{SPC}FF{SPC}FF{SPC}FF{SPC}0 ``` ```text sWN EImask FF FF FF 0 ``` ```text 02 73 57 4E 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 46 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FF 00 8D ``` ```text 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FF 00 ``` **Telegram structure: sWA EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sWA EImask** **CoLa A (ASCII)** ```text sWA{SPC}EImask ``` ```text 02 73 57 41 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 6D 61 73 6B 20 7D ```
### Read IP Mask [sRN EImask] Read the subnet mask of the device. **Telegram structure: sRN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sRN EImask** **CoLa A (ASCII)** ```text sRN{SPC}EImask ``` ```text sRN EImask ``` ```text sRN EImask ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 6D 61 73 6B 57 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B ``` **Telegram structure: sRA EImask** | Telegram part | Description | Variable | Length | Sensor | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------- | -------- | ------ | ---------------------- | ----------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EImask** **CoLa A (ASCII)** ```text sRA{SPC}EImask{SPC}FF{SPC}FF{SPC}FF{SPC}0 ``` ```text 02 73 52 41 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 46 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 45 49 6D 61 73 6B 20 FF FF FF 00 87 ```
### Read IP Mask Assigned by DHCP [sRN EImaskDHCP] DHCP needs to be set as mode for ethernet assignment. Read for the IP mask which was assigned by DHCP. **Telegram structure: sRN EImaskDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | ----------------------------------------- | ------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask assigned by DHCP | String | 10 | | `EImaskDHCP` | `45 49 6D 61 73 6B 44 48 43 50` | **Example: sRN EImaskDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EImaskDHCP ``` ```text sRN EImaskDHCP ``` ```text sRN EImaskDHCP ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 48 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 ``` **Telegram structure: sRA EImaskDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ---------------------- | ----------------------------------------------- | ------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask assigned by DHCP | String | 10 | | `EImaskDHCP` | `45 49 6D 61 73 6B 44 48 43 50` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EImaskDHCP** **CoLa A (ASCII)** ```text sRA{SPC}EImaskDHCP{SPC}FF{SPC}FF{SPC}FF{SPC}0 ``` ```text 02 73 52 41 20 45 49 6D 61 73 6B 44 48 43 50 20 46 46 20 46 46 20 46 46 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 6D 61 73 6B 44 48 43 50 20 FF FF FF 00 98 ```
### Read MAC Address [sRN EIMacAdr] Read the MAC address of the device. **Telegram structure: sRN EIMacAdr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------ | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read MAC address of the device | String | 8 | | `EIMacAdr` | `45 49 4D 61 63 41 64 72` | **Example: sRN EIMacAdr** **CoLa A (ASCII)** ```text sRN{SPC}EIMacAdr ``` ```text sRN EIMacAdr ``` ```text sRN EIMacAdr ``` ```text 02 73 52 4E 20 45 49 4D 61 63 41 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 45 49 4D 61 63 41 64 72 5B ``` ```text 73 52 4E 20 45 49 4D 61 63 41 64 72 ``` **Telegram structure: sRA EIMacAdr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------ | -------- | ------ | -------------------------- | ----------------------------------------------- | ------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read MAC address of the device | String | 8 | | `EIMacAdr` | `45 49 4D 61 63 41 64 72` | | MAC address | Values | Uint_8 | 1 | First part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Second part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Third part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Fourth part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Fifth part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Sixth part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIMacAdr** **CoLa A (ASCII)** ```text sRA{SPC}EIMacAdr{SPC}0{SPC}6{SPC}77{SPC}5A{SPC}CF{SPC}E2 ``` ```text 02 73 52 41 20 45 49 4D 61 63 41 64 72 20 30 20 36 20 37 37 20 35 41 20 43 46 20 45 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 4D 61 63 41 64 72 20 00 06 77 5A CF E2 72 ```
## Legacy Protocols
### Read Parameter [sRN EIAuxEnable] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | EIAuxEnable | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | **Example: sRN EIAuxEnable** **CoLa A (ASCII)** ```text sRN{SPC}EIAuxEnable ``` ```text sRN EIAuxEnable ``` ```text sRN EIAuxEnable ``` ```text 02 73 52 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 2E ``` ```text 73 52 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 ``` **Example: sRA EIAuxEnable** **CoLa A (ASCII)** ```text sRA{SPC}EIAuxEnable{SPC}1 ``` ```text 02 73 52 41 20 45 49 41 75 78 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 00 ```
### Set Device Search Mode [sWN EtherCoLaScanMode] This command configures the Auto IP functionalities (Device search by SICK Enginnering Tools) and the changeability of the IP address. The functionality can reduces the number of open ports to a minimum. **Telegram structure: sWN EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ---------------------------------- | -------------------------------------- | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | | CoLa Scan / AutoIP search settings | Choose setting | Uint_8 | 1 | IP address can be found/changed without login:
IP address can be found/ changed with login:
Disable the Auto IP search/ IP change:
IP address can be found/changed for 1 min: | `0
1
2
3` | `00
01
02
03` | **Example: sWN EtherCoLaScanMode** **CoLa A (ASCII)** ```text sWN{SPC}EtherCoLaScanMode{SPC}3 ``` ```text sWN EtherCoLaScanMode 3 ``` ```text 02 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 03 3A ``` ```text 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 03 ``` **Telegram structure: sWA EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | **Example: sWA EtherCoLaScanMode** **CoLa A (ASCII)** ```text sWA{SPC}EtherCoLaScanMode ``` ```text 02 73 57 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 36 ```
### Read Device Search Mode [sRN EtherCoLaScanMode] This command polls the Auto IP functionalities (Device search by SICK Enginnering Tools) and the IP address changeability settings. **Telegram structure: sRN EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sRN` | `73 52 4E` | | Command | Read CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | **Example: sRN EtherCoLaScanMode** **CoLa A (ASCII)** ```text sRN{SPC}EtherCoLaScanMode ``` ```text sRN EtherCoLaScanMode ``` ```text sRN EtherCoLaScanMode ``` ```text 02 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 1C ``` ```text 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 ``` **Telegram structure: sRA EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ---------------------------------- | --------------------------------------- | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | | CoLa Scan / AutoIP search settings | Poll setting | Uint_8 | 1 | IP address can be found/changed without login:
IP address can be found/ changed with login:
Auto IP search/ IP change is disabled:
IP address can be found/changed for 1 min: | `0
1
2
3` | `00
01
02
03` | **Example: sRA EtherCoLaScanMode** **CoLa A (ASCII)** ```text sRA{SPC}EtherCoLaScanMode{SPC}3 ``` ```text 02 73 52 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 03 30 ```
### Enable/ Disable CoLa1 Interface [sWN EIAuxEnable] After enabling the CoLa1 interface, use port 2111 for CoLa A and port 2112 for CoLa B. **Telegram structure: sWN EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ------------------- | -------- | ------ | ------------------- | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set CoLa1 interface | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | | CoLa1 interface | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN EIAuxEnable** **CoLa A (ASCII)** ```text sWN{SPC}EIAuxEnable{SPC}1 ``` ```text sWN EIAuxEnable 1 ``` ```text 02 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 0A ``` ```text 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set CoLa1 interface | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | **Example: sWA EIAuxEnable** **CoLa A (ASCII)** ```text sWA{SPC}EIAuxEnable ``` ```text 02 73 57 41 20 45 49 41 75 78 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 45 49 41 75 78 45 6E 61 62 6C 65 20 04 ```
## Webserver Settings
### Set Webserver State [sMN SetWebserverEnabled] This command enables/ disables the Webserver. Port 80 will not be opened after a reboot. **Telegram structure: sMN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sMN SetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}SetWebserverEnabled{SPC}1 ``` ```text sMN SetWebserverEnabled 1 ``` ```text 02 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 23 ``` ```text 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 ``` **Telegram structure: sAN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sAN SetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}SetWebserverEnabled ``` ```text 02 73 41 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 41 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 2E ```
### Read Webserver State [sMN GetWebserverEnabled] Returns state if Webserver is enabled. **Telegram structure: sMN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sMN GetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}GetWebserverEnabled ``` ```text sMN GetWebserverEnabled ``` ```text 02 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 16 ``` ```text 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 ``` **Telegram structure: sAN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------- | -------- | ------ | --------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Status of the webserver | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sAN GetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}GetWebserverEnabled{SPC}1 ``` ```text 02 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 3B ```
## Inputs and Outputs
### Read State of the Ports [sRN LIDportstate] LIDportstate has to be available additionally or as successor of the LIDoutputstate telegram. Valid for all sensors with Ethernet and ports (inputs / outputs). **Telegram structure: sRN LIDportstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 12 | | `LIDportstate` | `4C 49 44 70 6F 72 74 73 74 61 74 65` | **Example: sRN LIDportstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDportstate ``` ```text sRN LIDportstate ``` ```text sRN LIDportstate ``` ```text 02 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 60 ``` ```text 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDportstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Port state | String | 12 | | `LIDportstate` | `4C 49 44 70 6F 72 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | Current version: | `0 … FFFFh
0` | `00 01 … FF FF` | | Status code | System counter (time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0 … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | ARRAY which defines the number of internal ports* | 0...n | Uint_16 | 2 | Hex:
Not available:
Number of ports: | `0000 - FFFF
00
01 ... n` | `00 00 - FF FF` | | State of the ports and count value in hex | Internal port state | Enum_8 | 1 | Output voltage low:(Relays open)
Output voltage high:(Relays closed)
Tri-state:
Input voltage high (level):Input voltage from low to high (edge)
Input voltage low (level):Input voltage high to low (edge) | `00
01
02
03
04` | `00
01
02
03
04` | | State of the ports and count value in hex | Internal port counter | Uint_32 | 4 | | `0 … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | | …. | | | | | | | ARRAY which defines the number of external or virtual ports* | 0...n | Uint_16 | 1 | Hex:
Not available:
Number of ports: | `00 00 - FF FF
00
01 ... n` | `00 00 - FF FF` | | State of the ports and count value in hex | External port state | Enum_8 | 1 | Output voltage low:(Relays open)
Output voltage high:(Relays closed)
Tri-state:
Input voltage high (level):Input voltage from low to high (edge)
Input voltage low (level):Input voltage high to low (edge) | `00
01
02
03
04` | `00
01
02
03
04` | | State of the ports and count value in hex | External port counter | Uint_32 | 4 | | `0 … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time | States code | Enum_16 | 1 | No time data:
Time data: | `00 00
00 01` | `00 00
00 01` | | Time Block (sensor time from the last change of min. one of the outputs) | Year | Array | 2 | E.g. | `1970` | `07 B2` | | Time Block (sensor time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block (sensor time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block (sensor time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block (sensor time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block (sensor time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block (sensor time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` | Inputs/outputs: If the device has separate inputs and outputs (instead of general purpose ports) the ARRAY shall start with inputs followed by the outputs. Virtual ports are ports that can be used to expand the number of ports but are not physically available. They just show up in the corresponding ethernet telegrams (like LIDportstate). Tri-State: Port is neither input nor output; the port is set inactive in SOPAS **Example: sRA LIDportstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDportstate{SPC}0{SPC}A56D1F0{SPC}1{SPC}0{SPC}1{SPC}1{SPC}4{SPC}0{SPC}4{SPC}0{SPC}3{SPC}0{SPC}4{SPC}0{SPC}1{SPC}1{SPC}1{SPC}1{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}2{SPC}35{SPC}70CB0 ``` ```text 02 73 52 41 20 4C 49 44 70 6F 72 74 73 74 61 74 65 20 30 20 41 35 36 44 31 46 30 20 31 20 30 20 31 20 31 20 34 20 30 20 34 20 30 20 33 20 30 20 34 20 30 20 31 20 31 20 31 20 31 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 37 42 32 20 31 20 31 20 30 20 32 20 33 35 20 37 30 43 42 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 74 73 52 41 20 4C 49 44 70 6F 72 74 73 74 61 74 65 20 00 00 0A 56 D1 F0 01 00 00 00 00 01 00 00 00 01 04 00 00 00 00 04 00 00 00 00 03 00 00 00 00 04 00 00 00 00 01 00 00 00 01 01 00 00 00 01 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 00 01 07 B2 01 01 00 02 35 00 07 0C B0 0C ```
### Read Port Configuration of All I/Os [sRN PortConfiguration] Read the configuration of the digital inputs and outputs. **Telegram structure: sRN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN PortConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}PortConfiguration ``` ```text sRN PortConfiguration ``` ```text sRN PortConfiguration ``` ```text 02 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 26 ``` ```text 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Configuration of all I/Os | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Start of loop, number of loops = amount of all current and future Inputs and Outputs of device family | | | | | | | | Port Type | Input or Output | Enum_8 | 1 | Input:
Output: | `0
1` | `00
01` | | Port Name | Amount of characters of the following port name | Uint_16 | 2 | | `0h … 20h` | `00 00 … 00 20` | | Port Name | Port name | String | 16
(depending on string length) | | `[Port name]` | `[Port name]` | | Input Settings | | | | | | | | Logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Debouncing | Select debouncing time in ms | Uint_16 | 2 | (max. 10,000ms) | `0h … 2710h` | `00 00 … 27 10` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Reserved | Reserved value 1 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 2 | Uint_16 | 2 | | `0` | `00 00` | | Output Settings | | | | | | | | Logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Output Mode | PNP, NPN or Push-Pull | Enum_8 | 1 | PNP:
NPN:
Push-Pull: | `0
1
2` | `00
01
02` | | Restart type | Restart behavior of output after event: immediately or after specific time | Enum_8 | 1 | Immediately:
Time:
Input: | `0
1
2` | `00
01
02` | | Restart time | [Only with restart type = Time], time in ms | Uint_32 | 4 | (20 ms … 600,000 ms) | `14h … 927C0h` | `00 00 00 14 … 00 09 27 C0` | | Restart input | [Only with restart type = Input], input for restart | Uint_16 | 2 | | `1 ... 8` | `00 01 ... 00 08` | | Combination | Combining multiple Events and/or Inputs | Enum_8 | 1 | AND:
OR:
XOR: | `0
1
2` | `00
01
02` | | Reserved | Reserved value 3 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 4 | Uint_16 | 2 | | `0` | `00 00` | | Sources | Amount (n) of combined sources | Uint_16 | 2 | | `0h ... FFFFh` | `00 00 ... FF FF` | | Sources | Start of source loop, number of loops = amount of combined sources | | | | | | | Sources | Source name | String | 4 | Device Ready:
Sopas Command:(xx = Number of output port)
Indexsignal:
SyncOutByClock:
Input = Port Name:(INxx = Number of input port) | `[Source]
DRDY
SCxx
SROT
SCLK
INxx` | `[Source]` | | Sources | Source Inverted or not | Bool_1 | 1 | Not inverted:
Inverted: | `0
1` | `00
01` | | Sources | Reserved value 5 | Uint_8 | 1 | | `0` | `00` | | Sources | Reserved value 6 | Uint_8 | 1 | | `0` | `00` | | Sources | Stop of source loop | | | | | | | Reserved | Reserved value 7 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 8 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 9 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 10 | Uint_16 | 2 | | `0` | `00 00` | | Stop of loop | | | | | | | **Example: sRA PortConfiguration** **CoLa A (ASCII)** ```text sRA{SPC}PortConfiguration{SPC}1{SPC}6{SPC}InOut1{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}2{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}FE01{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut2{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut3{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut4{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut5{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut6{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut7{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut8{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 36 20 49 6E 4F 75 74 31 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 32 20 44 52 44 59 20 30 20 30 20 30 20 46 45 30 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 32 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 33 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 34 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 35 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 36 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 37 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 38 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 01 81 73 52 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 02 44 52 44 59 00 00 00 46 45 30 31 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 ```
### Set Port Configuration [sWN PortConfiguration] Configuration of the given ports. Telegram structure represents the configuration of 1 port. If the device has multiple ports, use the same structure. **Telegram structure: sWN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | -------------------------------------------------------------------- | ---------- | ------------ | ------------------------------------------------------ | --------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Configuration of the given ports | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Port Type | Input or Output | Enum_8 | 1 | Input:
Output: | `+0d (0h)
+1d (1h)` | `00
01` | | Name | Name of the port | FlexString | 9
(0..32) | Default: | `InOut1` | `00 06 49 6E 4F 75 74 31 00` | | Input Settings | | | | | | | | Logic | Logic of the input | Enum_8 | 1 | Active high:
Active low: | `+0d (0h)
+1d (1h)` | `00
01` | | Debounce | Select debouncing time in ms | Uint_16 | 2 | 0 to 10000 ms | `0 ... 2710` | `00 00 ... 27 10` | | Sensitivity | Input sensitivity | Enum_8 | 1 | | `1` | `01` | | Reserved1 | | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved2 | | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Output Settings | | | | | | | | Logic | Definition of the output logic | Enum_8 | 1 | Active high:
Active low: | `+0d (0h)
+1d (1h)` | `00
01` | | Output Mode | Set kind of mode for output pin | Enum_8 | 1 | PNP:
NPN:
Push-Pull: | `0
1
2` | `00
01
02` | | Restart Type | Defines type of restart to be used | Enum_8 | 1 | Immediately:
Time: | `+0d (0h)
+1d (1h)` | `00
01` | | Restart Time | [Only with restart type = Time], time in ms | Uint_32 | 4 | (20 ms … 600,000 ms) | `+20d … +600000d (C8h ... 927C0h)` | `00 00 00 00 … 00 09 27 C0` | | Restart Input | [Only with restart type = Input], input for restart | Uint_16 | 2 | | `+1d ... +8d (1h ... 8h)` | `00 00 … 00 08` | | Combination | Combining multiple Events and/or Inputs | Enum_8 | 1 | AND:
OR:
XOR: | `+0d (0h)
+1d (1h)
+2d (2h)` | | | Reserved | Reserved value 3 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 4 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | | Source | | | | | | | Source | The source parameter are only existing if the port is set to OUTPUT! | | 2 | | `+1d (1h)` | `00 01` | | Source Name | Name of the source option | String | 4 | DeviceNotReady:
Input1:
Input2:
SopasCommand: | `DRDY
IN01
IN02
SC01` | `44 52 44 59
49 4E 30 31
49 4E 30 32
53 43 30 31` | | Invert | Invert the source signal | Bool_1 | 1 | Not inverted:
Inverted: | `+0d (0h)
+1d (1h)` | `00
01` | | Reserved | Reserved value 5 | Uint_8 | 1 | | `+0d (0h)` | `00` | | Reserved | Reserved value 6 | Uint_8 | 1 | | `+0d (0h)` | `00` | | Reserved | | | | | | | | Reserved | Reserved value 7 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 8 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 9 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 10 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | **Example: sWN PortConfiguration** **CoLa A (ASCII)** ```text sWN{SPC}PortConfiguration{SPC}1{SPC}6{SPC}InOut1{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}2{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}FE01{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut2{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut3{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut4{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut5{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut6{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut7{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut8{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN PortConfiguration 1 6 InOut1 0 A 1 0 0 0 0 0 C8 1 1 0 0 2 DRDY 0 0 0 FE01 0 0 0 0 0 0 0 1 6 InOut2 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 0 6 InOut3 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut4 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut5 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut6 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 1 6 InOut7 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut8 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 ``` ```text 02 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 36 20 49 6E 4F 75 74 31 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 32 20 44 52 44 59 20 30 20 30 20 30 20 46 45 30 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 32 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 33 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 34 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 35 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 36 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 37 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 38 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 01 81 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 02 44 52 44 59 00 00 00 46 45 30 31 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 0B ``` ```text 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 02 44 52 44 59 00 00 00 46 45 30 31 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sWA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Configuration of the given ports | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sWA PortConfiguration** **CoLa A (ASCII)** ```text sWA{SPC}PortConfiguration ``` ```text 02 73 57 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 0C ```
### Read State of the Inputs [sRN LIDinputstate] Use sEN LIDinputstate 1 to receive a telegram each time an input signal (e.g. by trigger) changes. **Telegram structure: sRN LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Input state | String | 13 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | **Example: sRN LIDinputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDinputstate ``` ```text sRN LIDinputstate ``` ```text sRN LIDinputstate ``` ```text 02 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 0F ``` ```text 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -------- | ------ | ----------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Output state | String | 13 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Status code | System counter
(time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0 h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | State of the inputs 1 … n | Amount of inputs (n) depending of device family | Enum_8 | 1 | Not active:
Active:
Input not used: | `0
1
2` | `00
01
02` | | Time | States code | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Year | Array | 2 | E. g. | `1970` | `07 B2` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` | **Example: sRA LIDinputstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDinputstate{SPC}1{SPC}A56CE08{SPC}2{SPC}2{SPC}0{SPC}0{SPC}1{SPC}0{SPC}2{SPC}2{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}2{SPC}35{SPC}708C8 ``` ```text 02 73 52 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 31 20 41 35 36 43 45 30 38 20 32 20 32 20 30 20 30 20 31 20 30 20 32 20 32 20 31 20 37 42 32 20 31 20 31 20 30 20 32 20 33 35 20 37 30 38 43 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 00 01 0A 56 CE 08 02 02 00 00 01 00 02 02 00 01 07 B2 01 01 00 02 35 00 07 08 C8 FE ```
### Receive Input State by Event [sEN LIDinputstate] Receive an event when an input state changes. Use `0` to disable the subscription. **Telegram structure: sEN LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------- | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Event subscription | String | 3 | | `sEN` | `73 45 4E` | | Command | Input state | String | 13 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | | State | Subscription state | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sEN LIDinputstate** **CoLa A (ASCII)** ```text sEN{SPC}LIDinputstate{SPC}1 ``` ```text sEN LIDinputstate 1 ``` ```text 02 73 45 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 45 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 01 39 ``` ```text 73 45 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 01 ``` **Example: sEA LIDinputstate** **CoLa A (ASCII)** ```text sEA{SPC}LIDinputstate{SPC}1 ``` ```text 02 73 45 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 45 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 01 36 ```
### Read State of the Outputs [sRN LIDoutputstate] Status of all outputs **Telegram structure: sRN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | **Example: sRN LIDoutputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text 02 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 66 ``` ```text 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------- | ----------- | -------- | ------ | ------------------ | --------------------- | ---------------------- | | Complete telegram structure of the answer . | | | | | | | **Example: sRA LIDoutputstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDoutputstate{SPC}1{SPC}A56D1F0{SPC}1{SPC}0{SPC}1{SPC}1{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}2{SPC}35{SPC}70CB0 ``` ```text 02 73 52 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 20 41 35 36 44 31 46 30 20 31 20 30 20 31 20 31 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 31 20 31 20 31 20 31 20 37 42 32 20 31 20 31 20 30 20 32 20 33 35 20 37 30 43 42 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4E 73 52 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 00 01 0A 56 D1 F0 01 00 00 00 00 01 00 00 00 01 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 01 00 00 00 01 01 00 00 00 01 00 01 07 B2 01 01 00 02 35 00 07 0C B0 0C ```
### Receive Outputstate by Event [sEN LIDoutputstate] Output telegram is sent every time an output state changes. **Telegram structure: sEN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------ | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | | Start/stop | Enum_8 | 1 | Start:
Stop: | `1
0` | `01
00` | **Example: sEN LIDoutputstate** **CoLa A (ASCII)** ```text sEN{SPC}LIDoutputstate{SPC}1 ``` ```text sEN LIDoutputstate 1 ``` ```text 02 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 50 ``` ```text 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 ``` **Example: sEA LIDoutputstate** **CoLa A (ASCII)** ```text sEA{SPC}LIDoutputstate{SPC}1 ``` ```text 02 73 45 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 45 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 5F ``` **Telegram structure: sRA/sSN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -------- | ------ | ------------------------------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA / sSN` | `73 52 41 / 73 53 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Status code | System counter
(time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | State of the outputs 1 ... n and count value in hex. (values of an example)
Amount of outputs (n) depending of device family | Output 1 ... n state | Enum_8 | 1 | Not active:
Active:
Output not used: | `0
1
2` | `00
01
02` | | State of the outputs 1 ... n and count value in hex. (values of an example)
Amount of outputs (n) depending of device family | Output 1 ... n count | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time | States code | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Year | Array | 2 | E. g. | `1970` | `07 B2` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` | **Example: sSN LIDoutputstate** **CoLa A (ASCII)** ```text sSN{SPC}LIDoutputstate{SPC}1{SPC}70D6F68{SPC}0{SPC}1{SPC}1{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}0{SPC}1{SPC}0{SPC}1{SPC}7EA{SPC}A{SPC}6{SPC}9{SPC}1A{SPC}2{SPC}1CCF0 ``` ```text 02 73 53 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 20 37 30 44 36 46 36 38 20 30 20 31 20 31 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 30 20 31 20 30 20 31 20 37 45 41 20 41 20 36 20 39 20 31 41 20 32 20 31 43 43 46 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4E 73 53 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 00 01 07 14 F5 30 00 00 00 00 02 01 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 01 00 00 00 00 01 00 00 00 00 00 01 07 EA 0A 06 09 1A 02 00 09 52 B8 81 ```
### Set Output State [sMN mDOSetOutput] Set a specific output to high or low via software command. Output source needs to be set to "SOPAS command" and the port configured as Output (in case of I/O). **Telegram structure: sMN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ----------------------- | --------------------------------------------- | ------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Output number | | Uint_8 | 1 | Depends on system plug: | `1 … 3
1 … 6` | `01 … 03
01 … 06` | | Output state | | Enum_8 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sMN mDOSetOutput** **CoLa A (ASCII)** ```text sMN{SPC}mDOSetOutput{SPC}1{SPC}1 ``` ```text sMN mDOSetOutput 1 1 ``` ```text 02 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 01 6B ``` ```text 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 01 ``` **Telegram structure: sAN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------- | -------- | ------ | ------------------ | ------------------------------------------- | ------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Status Code | Status code | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mDOSetOutput** **CoLa A (ASCII)** ```text sAN{SPC}mDOSetOutput{SPC}1 ``` ```text 02 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 66 ```
### Reset Output Counter [sMN LIDrstoutpcnt] Reset the counter which keeps track of how often an digital output has been active (and not active). Information from the counter is included in LIDoutputstate. **Telegram structure: sMN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | **Example: sMN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sMN{SPC}LIDrstoutpcnt ``` ```text sMN LIDrstoutpcnt ``` ```text 02 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` ```text 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 ``` **Telegram structure: sAN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | | Status code | Code number | Bool_1 | 1 | Success:
Error: | `0
1` | `00
01` | **Example: sAN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sAN{SPC}LIDrstoutpcnt{SPC}0 ``` ```text 02 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 00 2F ```
## Measurement Data Output
### Configure Scan Output Angles [sWN LMPoutputRange] Select the scan output start and stop angles (manual pages 124-126). Angular resolution is taken from the scan configuration. This example uses 0.5 degree and -90 to +90 degrees. Requires Authorized client. **Telegram structure: sWN LMPoutputRange** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ----------------------- | -------- | ------ | ---------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | LMPoutputRange | String | 14 | | `LMPoutputRange` | `4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65` | | Reserved | Single output range | Int_16 | 2 | Always 1 | `1` | `00 01` | | Angular resolution | Units of 1/10000 degree | Uint_32 | 4 | Read from scan configuration; not changed here | `1388 (0.5 degree)` | `00 00 13 88` | | Start angle | Units of 1/10000 degree | Int_32 | 4 | -180 to +180 degrees | `FFE488C0 ... 1B7740` | `FF E4 88 C0 ... 00 1B 77 40` | | Stop angle | Units of 1/10000 degree | Int_32 | 4 | -180 to +180 degrees | `FFE488C0 ... 1B7740` | `FF E4 88 C0 ... 00 1B 77 40` | **Example: sWN LMPoutputRange** **CoLa A (ASCII)** ```text sWN{SPC}LMPoutputRange{SPC}1{SPC}1388{SPC}FFF24460{SPC}DBBA0 ``` ```text sWN LMPoutputRange 1 1388 FFF24460 DBBA0 ``` ```text 02 73 57 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 31 20 31 33 38 38 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 57 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 00 01 00 00 13 88 FF F2 44 60 00 0D BB A0 DE ``` ```text 73 57 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 00 01 00 00 13 88 FF F2 44 60 00 0D BB A0 ``` **Telegram structure: sWA LMPoutputRange** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | LMPoutputRange | String | 14 | | `LMPoutputRange` | `4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65` | **Example: sWA LMPoutputRange** **CoLa A (ASCII)** ```text sWA{SPC}LMPoutputRange ``` ```text 02 73 57 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 74 ```
### Read Scan Output Angles [sRN LMPoutputRange] Read the active output range. The example shows 0.5 degree angular resolution and an output range of -180 to +180 degrees. **Telegram structure: sRN LMPoutputRange** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LMPoutputRange | String | 14 | | `LMPoutputRange` | `4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65` | **Example: sRN LMPoutputRange** **CoLa A (ASCII)** ```text sRN{SPC}LMPoutputRange ``` ```text sRN LMPoutputRange ``` ```text sRN LMPoutputRange ``` ```text 02 73 52 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 5E ``` ```text 73 52 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 ``` **Telegram structure: sRA LMPoutputRange** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ----------------------- | -------- | ------ | ---------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | LMPoutputRange | String | 14 | | `LMPoutputRange` | `4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65` | | Reserved | Single output range | Int_16 | 2 | Always 1 | `1` | `00 01` | | Angular resolution | Units of 1/10000 degree | Uint_32 | 4 | Read from scan configuration; not changed here | `1388 (0.5 degree)` | `00 00 13 88` | | Start angle | Units of 1/10000 degree | Int_32 | 4 | -180 to +180 degrees | `FFE488C0 ... 1B7740` | `FF E4 88 C0 ... 00 1B 77 40` | | Stop angle | Units of 1/10000 degree | Int_32 | 4 | -180 to +180 degrees | `FFE488C0 ... 1B7740` | `FF E4 88 C0 ... 00 1B 77 40` | **Example: sRA LMPoutputRange** **CoLa A (ASCII)** ```text sRA{SPC}LMPoutputRange{SPC}1{SPC}1388{SPC}FFE488C0{SPC}1B7740 ``` ```text 02 73 52 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 31 20 31 33 38 38 20 46 46 45 34 38 38 43 30 20 31 42 37 37 34 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 00 01 00 00 13 88 FF E4 88 C0 00 1B 77 40 94 ```
### Set Scan Data Enable [sWN ScanDataEnable] Enables/ Disables streaming data output **Telegram structure: sWN ScanDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Enables/ Disables streaming data output. | String | 14 | | `ScanDataEnable` | `53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65` | | Data | | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sWN ScanDataEnable** **CoLa A (ASCII)** ```text sWN{SPC}ScanDataEnable{SPC}0 ``` ```text sWN ScanDataEnable 0 ``` ```text 02 73 57 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 00 44 ``` ```text 73 57 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 00 ``` **Telegram structure: sWA ScanDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Enables/ Disables streaming data output. | String | 14 | | `ScanDataEnable` | `53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65` | **Example: sWA ScanDataEnable** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataEnable ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 4B ```
### Set Streaming Ethernet Settings [sWN ScanDataEthSettings] Ethernet settings for the scan data streaming functionality of the device **Telegram structure: sWN ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming data | Enum_8 | 1 | UDP (fix): | `+1d (01h)` | `01` | | IPAddress | IP address of the destination for data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the data reseiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Example: sWN ScanDataEthSettings +1 +192 +168 +0 +100 +2115 Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (2115) **Example: sWN ScanDataEthSettings** **CoLa A (ASCII)** ```text sWN{SPC}ScanDataEthSettings{SPC}1{SPC}C0{SPC}A8{SPC}0{SPC}64{SPC}843 ``` ```text sWN ScanDataEthSettings 1 C0 A8 0 64 843 ``` ```text 02 73 57 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 38 34 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 08 43 5F ``` ```text 73 57 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 08 43 ``` **Telegram structure: sWA ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sWA ScanDataEthSettings** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataEthSettings ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 16 ```
### Read Streaming Ethernet Settings [sRN ScanDataEthSettings] Read ethernet settings for the scan data streaming functionality of the device. **Telegram structure: sRN ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sRN ScanDataEthSettings** **CoLa A (ASCII)** ```text sRN{SPC}ScanDataEthSettings ``` ```text sRN ScanDataEthSettings ``` ```text sRN ScanDataEthSettings ``` ```text 02 73 52 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 3C ``` ```text 73 52 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 ``` **Telegram structure: sRA ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming data | Enum_8 | 1 | UDP:
TCP: | `+1d (01h)
+2d (02h)` | `01
02` | | IPAddress | IP address of the destination for data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the data receiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (2115) **Example: sRA ScanDataEthSettings** **CoLa A (ASCII)** ```text sRA{SPC}ScanDataEthSettings{SPC}1{SPC}C0{SPC}A8{SPC}0{SPC}64{SPC}843 ``` ```text 02 73 52 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 38 34 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 08 43 55 ```
### Read Scan Data Format [sRN ScanDataFormat] Return of the scan data format **Telegram structure: sRN ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | Example: sRN ScanDataFormat Read of the data serialization format **Example: sRN ScanDataFormat** **CoLa A (ASCII)** ```text sRN{SPC}ScanDataFormat ``` ```text sRN ScanDataFormat ``` ```text sRN ScanDataFormat ``` ```text 02 73 52 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 63 ``` ```text 73 52 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 ``` **Telegram structure: sRA ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | | Data | | Enum_8 | 1 | MSGPACK:
Compact:
LMDscandata (not supported on multiScan100):
Native ROS2 (not supported on multiScan100): | `1h
2h
3h
4h` | `01
02
03
04` | Scan data format is set to Compact = 2 **Example: sRA ScanDataFormat** **CoLa A (ASCII)** ```text sRA{SPC}ScanDataFormat{SPC}2 ``` ```text 02 73 52 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 02 4E ```
### Set Scan Data Format [sWN ScanDataFormat] Set the data serialization format **Telegram structure: sWN ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | | Variable Data | Data | Enum_8 | 1 | MSGPACK:
Compact (recommended):
LMDscandata (not supported on multiScan100):
Native ROS2 (not supported on multiScan100): | `+1d (1h)
+2d (2h)
+3d (3h)
+4d (4h)` | `01
02
03
04` | Example: sWN ScanDataFormat Scan data format set to Compact format **Example: sWN ScanDataFormat** **CoLa A (ASCII)** ```text sWN{SPC}ScanDataFormat{SPC}2 ``` ```text sWN ScanDataFormat 2 ``` ```text 02 73 57 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 02 44 ``` ```text 73 57 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 02 ``` **Telegram structure: sWA ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | **Example: sWA ScanDataFormat** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataFormat ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 49 ```
### Read Parameter [sRN ScanDataEnable] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN ScanDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | ScanDataEnable | String | 14 | | `ScanDataEnable` | `53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65` | **Example: sRN ScanDataEnable** **CoLa A (ASCII)** ```text sRN{SPC}ScanDataEnable ``` ```text sRN ScanDataEnable ``` ```text sRN ScanDataEnable ``` ```text 02 73 52 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 61 ``` ```text 73 52 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 ``` **Example: sRA ScanDataEnable** **CoLa A (ASCII)** ```text sRA{SPC}ScanDataEnable{SPC}0 ``` ```text 02 73 52 41 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 00 4E ```
## IMU Data Output
### Read Parameter [sRN ImuDataEnable] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN ImuDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------- | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | ImuDataEnable | String | 13 | | `ImuDataEnable` | `49 6D 75 44 61 74 61 45 6E 61 62 6C 65` | **Example: sRN ImuDataEnable** **CoLa A (ASCII)** ```text sRN{SPC}ImuDataEnable ``` ```text sRN ImuDataEnable ``` ```text sRN ImuDataEnable ``` ```text 02 73 52 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 0F ``` ```text 73 52 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 ``` **Example: sRA ImuDataEnable** **CoLa A (ASCII)** ```text sRA{SPC}ImuDataEnable{SPC}0 ``` ```text 02 73 52 41 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 00 20 ```
### Set IMU Data Enable [sWN ImuDataEnable] Enables/ Disables streaming IMU data output. **Telegram structure: sWN ImuDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ------------------------------ | -------- | ------ | ------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set streaming IMU data output. | String | 13 | | `ImuDataEnable` | `49 6D 75 44 61 74 61 45 6E 61 62 6C 65` | | IMU data stream | Enable/ disable | Bool | 1 | Disable:
Enable: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sWN ImuDataEnable** **CoLa A (ASCII)** ```text sWN{SPC}ImuDataEnable{SPC}0 ``` ```text sWN ImuDataEnable 0 ``` ```text 02 73 57 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 00 2A ``` ```text 73 57 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 00 ``` **Telegram structure: sWA ImuDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------ | -------- | ------ | ------------------ | -------------------------------------------- | --------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set streaming IMU data output. | String | 13 | | `ImuDataEnable` | `49 6D 75 44 61 74 61 45 6E 61 62 6C 65` | **Example: sWA ImuDataEnable** **CoLa A (ASCII)** ```text sWA{SPC}ImuDataEnable ``` ```text 02 73 57 41 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 25 ```
### Set IMU Data Streaming Ethernet Settings [sWN ImuDataEthSettings] Ethernet settings for the IMU data streaming functionality of the device **Telegram structure: sWN ImuDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IMU data streaming ethernet settings | String | 18 | | `ImuDataEthSettings` | `49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming IMU data | Enum_8 | 1 | UDP: | `+1d (01h)` | `01` | | IP address | IP address of the destination for IMU data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the IMU data reseiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Example: sWN ImuDataEthSettings +1 +192 +168 +0 +100 +7503 Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (7503) **Example: sWN ImuDataEthSettings** **CoLa A (ASCII)** ```text sWN{SPC}ImuDataEthSettings{SPC}1{SPC}C0{SPC}A8{SPC}0{SPC}64{SPC}1D4F ``` ```text sWN ImuDataEthSettings 1 C0 A8 0 64 1D4F ``` ```text 02 73 57 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 31 44 34 46 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 57 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F 28 ``` ```text 73 57 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F ``` **Telegram structure: sWA ImuDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IMU data streaming ethernet settings | String | 18 | | `ImuDataEthSettings` | `49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sWA ImuDataEthSettings** **CoLa A (ASCII)** ```text sWA{SPC}ImuDataEthSettings ``` ```text 02 73 57 41 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 41 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 78 ```
### Read Parameter [sRN ImuDataEthSettings] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN ImuDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | ImuDataEthSettings | String | 18 | | `ImuDataEthSettings` | `49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sRN ImuDataEthSettings** **CoLa A (ASCII)** ```text sRN{SPC}ImuDataEthSettings ``` ```text sRN ImuDataEthSettings ``` ```text sRN ImuDataEthSettings ``` ```text 02 73 52 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 52 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 52 ``` ```text 73 52 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 ``` **Example: sRA ImuDataEthSettings** **CoLa A (ASCII)** ```text sRA{SPC}ImuDataEthSettings{SPC}1{SPC}C0{SPC}A8{SPC}0{SPC}64{SPC}1D4F ``` ```text 02 73 52 41 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 31 44 34 46 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 52 41 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F 22 ```
## Data Reduction
### Set Angle Range Filter [sWN LFPangleRangeFilter] The angle range Horizontal (theta) and vertical (phi) limits in units of 1/10000 degree. BeamIncrement = the 'beamIncrement' which is used to subsample the beams within the selected angle range. With a 'beamIncrement' of n only every nth beam from the selected angle range is copied to the output scan, i.e. the angle resolution is reduced by factor n. If the beamIncrement is zero it is set to one. **Telegram structure: sWN LFPangleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ----------------------------------------------------------------------- | -------- | ------ | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Horizontal (theta) and vertical (phi) limits in units of 1/10000 degree | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter | Bool_1 | 1 | Off:
On: | `+0d
+1d` | `00
01` | | Variable Data 2 | ThetaStart | Int_32 | 4 | No impact on sensor setting but needs to be filled (see example) | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 3 | ThetaStop | Int_32 | 4 | No impact on sensor setting but needs to be filled (see example) | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 4 | PhiStart | Int_32 | 4 | No impact on sensor setting but needs to be filled (see example) | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 5 | PhiStop | Int_32 | 4 | No impact on sensor setting but needs to be filled (see example) | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 6 | BeamIncrement | UInt_16 | 2 | No impact on sensor setting but needs to be filled (see example) | `1d…+20d` | `00 01 … 00 14` | Explanation: Enable the angle range filter and set up theta (horizontal) start -90°, theta stop +90°, phi (vertical) start -90°, phi stop +90°, beam increment 1 **Example: sWN LFPangleRangeFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPangleRangeFilter{SPC}0{SPC}FFF24460{SPC}DBBA0{SPC}FFF24460{SPC}DBBA0{SPC}1 ``` ```text sWN LFPangleRangeFilter 0 FFF24460 DBBA0 FFF24460 DBBA0 1 ``` ```text 02 73 57 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 30 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2B 73 57 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 2F ``` ```text 73 57 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 ``` **Telegram structure: sWA LFP AngleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Horizontal (theta) and vertical (phi) limits in units of 1/10000 degree | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sWA LFPangleRangeFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPangleRangeFilter ``` ```text 02 73 57 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 21 ``` **Telegram structure: sWA LFPangleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Angle range filter | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sWA LFPangleRangeFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPangleRangeFilter ``` ```text 02 73 57 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 21 ```
### Read Angle Range Filter [sRN LFPangleRangeFilter] The angle range Horizontal (theta) and vertical (phi) limits in units of 1/10000 degree. BeamIncrement = the 'beamIncrement' which is used to subsample the beams within the selected angle range. With a 'beamIncrement' of n only every nth beam from the selected angle range is copied to the output scan, i.e. the angle resolution is reduced by factor n. If the beamIncrement is zero it is set to one. **Telegram structure: sRN LFPangleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Horizontal (theta) and vertical (phi) limits in units of 1/10000 degree | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sRN LFPangleRangeFilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPangleRangeFilter ``` ```text sRN LFPangleRangeFilter ``` ```text sRN LFPangleRangeFilter ``` ```text 02 73 52 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 0B ``` ```text 73 52 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 ``` **Telegram structure: sRA LFPangleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ----------------------------------------------------------------------- | -------- | ------ | --------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Horizontal (theta) and vertical (phi) limits in units of 1/10000 degree | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter | Bool_1 | 1 | Off:
On: | `+0d
+1d` | `00
01` | | Variable Data 2 | ThetaStart | Int_32 | 4 | No impact on sensor setting | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 3 | ThetaStop | Int_32 | 4 | No impact on sensor setting | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 4 | PhiStart | Int_32 | 4 | No impact on sensor setting | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 5 | PhiStop | Int_32 | 4 | No impact on sensor setting | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 6 | BeamIncrement | UInt_16 | 2 | No impact on sensor setting | `1d…+20d` | `00 01 … 00 14` | The example response has the filter disabled, theta and phi limits of -90° to +90°, and beam increment 1. **Example: sRA LFPangleRangeFilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPangleRangeFilter{SPC}0{SPC}FFF24460{SPC}DBBA0{SPC}FFF24460{SPC}DBBA0{SPC}1 ``` ```text 02 73 52 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 30 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2B 73 52 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 25 ```
### Set Interval Filter [sWN LFPintervalFilter] Enables and set up the interval filter. The interval filter reduce the scan output rate by a given factor. **Telegram structure: sWN LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ------------------------------------------------------------------------------------ | -------- | ------ | ------------------ | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Reduce the scan output rate by a given factor | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | | Variable data 1 | Enables/Disables the filter. | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00
01` | | Variable Data 2 | Only every nth scan is output where n is given by
the value of uiReductionFactor. | Uint_32 | 4 | | `1d…+50d
(00 00 00 01h … 00 00 00 32h)` | `00 00 00 01 … 00 00 00 32` | Enables the interval filter an set up to the 3rd scan **Example: sWN LFPintervalFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPintervalFilter{SPC}0{SPC}2 ``` ```text sWN LFPintervalFilter 0 2 ``` ```text 02 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 30 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 00 00 00 00 02 0D ``` ```text 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 00 00 00 00 02 ``` **Telegram structure: sWA LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Reduce the scan output rate by a given factor | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | **Example: sWA LFPintervalFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPintervalFilter ``` ```text 02 73 57 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 00 ```
### Set Layer Filter [sWN LFPlayerFilter] Select which of the sixteen layers are included in scan output (manual pages 146-147). This example disables filtering and enables all layers. Requires Authorized client. **Telegram structure: sWN LFPlayerFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------- | --------------- | ------ | -------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | LFPlayerFilter | String | 14 | | `LFPlayerFilter` | `4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72` | | State | Filter enabled | Bool_1 | 1 | Disabled / enabled | `0 / 1` | `00 / 01` | | Layers | One enable flag per layer, in layer order | Array of Bool_1 | 16 | Sixteen flags: 0 off, 1 on | `0 / 1 (each layer)` | `00 / 01 (each layer)` | **Example: sWN LFPlayerFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPlayerFilter{SPC}0{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text sWN LFPlayerFilter 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ``` ```text 02 73 57 4E 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 20 30 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 57 4E 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 20 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 73 ``` ```text 73 57 4E 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 20 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ``` **Telegram structure: sWA LFPlayerFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | LFPlayerFilter | String | 14 | | `LFPlayerFilter` | `4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72` | **Example: sWA LFPlayerFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPlayerFilter ``` ```text 02 73 57 41 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 20 7C ```
### Read Parameter [sRN LFPintervalFilter] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------- | -------- | ------ | ------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LFPintervalFilter | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | **Example: sRN LFPintervalFilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPintervalFilter ``` ```text sRN LFPintervalFilter ``` ```text sRN LFPintervalFilter ``` ```text 02 73 52 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 2A ``` ```text 73 52 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 ``` **Example: sRA LFPintervalFilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPintervalFilter{SPC}0{SPC}2 ``` ```text 02 73 52 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 30 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 00 00 00 00 02 07 ```
### Read Parameter [sRN LFPlayerFilter] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LFPlayerFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LFPlayerFilter | String | 14 | | `LFPlayerFilter` | `4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72` | **Example: sRN LFPlayerFilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPlayerFilter ``` ```text sRN LFPlayerFilter ``` ```text sRN LFPlayerFilter ``` ```text 02 73 52 4E 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 56 ``` ```text 73 52 4E 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 ``` **Example: sRA LFPlayerFilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPlayerFilter{SPC}0{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 20 30 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 41 20 4C 46 50 6C 61 79 65 72 46 69 6C 74 65 72 20 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 79 ```
## Region of Interest
### Set Rectangular Filter [sWN LFPcubicareafilter] **Telegram structure: sWN LFPcubicareafilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | ---------------------------------------------------------- | -------- | ------ | ----------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | CubicAreaFilter limits a polar scan to a axisparallel cube | String | 18 | | `LFPcubicareafilter` | `4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72` | | Variable data 1 | Enables/Disables the filter. | Bool | 1 | Off:
On: | `0d
1d` | `00
01` | | Variable Data 2 | X min
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 3 | X max
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 4 | Y min
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 5 | Y max
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 6 | Z min
1/10 mm | Int_32 | 4 | Other values than 0 will be ignored | `0` | `00 00 00 00` | | Variable Data 7 | Z max
1/10 mm | Int_32 | 4 | Other values than 0 will be ignored | `0` | `00 00 00 00` | **Example: sWN LFPcubicareafilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPcubicareafilter{SPC}0{SPC}FFFFB1E0{SPC}4E20{SPC}FFFFB1E0{SPC}4E20{SPC}FFFFB1E0{SPC}4E20 ``` ```text sWN LFPcubicareafilter 0 FFFFB1E0 4E20 FFFFB1E0 4E20 FFFFB1E0 4E20 ``` ```text 02 73 57 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 30 73 57 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 00 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 66 ``` ```text 73 57 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 00 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 ``` **Telegram structure: sWA LFPcubicareafilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------------------------- | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | CubicAreaFilter limits a polar scan to a axisparallel cube | String | 18 | | `LFPcubicareafilter` | `4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72` | **Example: sWA LFPcubicareafilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPcubicareafilter ``` ```text 02 73 57 41 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 41 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 56 ```
### Set Radial Distance Range Filter [sWN LFPradialDistanceRangeFilter] Restriction of the scan(s) to a specified distance range. **Telegram structure: sWN LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------- | --------------------------------------------------------- | -------- | ------ | -------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Restriction of the scan(s) to a specified distance range. | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter. | Bool_1 | 1 | Off:
On: | `0d (0h)
1d (1h)` | `00
01` | | DistMin | Lower boundary of the distance range. | Int_32 | 4 | Minimum:
Maximum: | `+0d (0h)
+200000d (30D40h)` | `00 00 00 00
00 03 0D 40` | | DistMax | Upper boundary of the distance range. | Int_32 | 4 | Minimum:
Maximum: | `+0d (0h)
+200000d (30D40h)` | `00 00 00 00
00 03 0D 40` | Disable the radial distance range filter and set up the boundaries to min 0mm and max 200000mm. **Example: sWN LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPradialDistanceRangeFilter{SPC}0{SPC}0{SPC}4E20 ``` ```text sWN LFPradialDistanceRangeFilter 0 0 4E20 ``` ```text 02 73 57 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 30 20 30 20 34 45 32 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2A 73 57 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 00 00 00 00 00 00 4E 20 11 ``` ```text 73 57 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 00 00 00 00 00 00 4E 20 ``` **Telegram structure: sWA LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------------------- | -------- | ------ | ------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Restriction of the scan(s) to a specified distance range. | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sWA LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPradialDistanceRangeFilter ``` ```text 02 73 57 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 57 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 70 ```
### Read Parameter [sRN LFPcubicareafilter] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LFPcubicareafilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------ | -------- | ------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LFPcubicareafilter | String | 18 | | `LFPcubicareafilter` | `4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72` | **Example: sRN LFPcubicareafilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPcubicareafilter ``` ```text sRN LFPcubicareafilter ``` ```text sRN LFPcubicareafilter ``` ```text 02 73 52 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 52 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 7C ``` ```text 73 52 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 ``` **Example: sRA LFPcubicareafilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPcubicareafilter{SPC}0{SPC}FFFFB1E0{SPC}4E20{SPC}FFFFB1E0{SPC}4E20{SPC}FFFFB1E0{SPC}4E20 ``` ```text 02 73 52 41 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 30 73 52 41 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 00 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 6C ```
### Read Parameter [sRN LFPradialDistanceRangeFilter] Read the current parameter values. The returned parameter block corresponds to the parameters of the matching write command. **Telegram structure: sRN LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------- | -------- | ------ | ------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | LFPradialDistanceRangeFilter | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sRN LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPradialDistanceRangeFilter ``` ```text sRN LFPradialDistanceRangeFilter ``` ```text sRN LFPradialDistanceRangeFilter ``` ```text 02 73 52 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 52 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 5A ``` ```text 73 52 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 ``` **Example: sRA LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPradialDistanceRangeFilter{SPC}0{SPC}0{SPC}4E20 ``` ```text 02 73 52 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 30 20 30 20 34 45 32 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2A 73 52 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 00 00 00 00 00 00 4E 20 1B ```
## Field Evaluation
### Set Activation of Evaluation Group [sMN ActivateEvaluationGroup] The telegram is intended to activate or deactivate groups via telegram. The group activation needs to be changed from always to telegram in advance. **Telegram structure: sMN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------------------------------- | ----------------------------------------- | -------- | ------ | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of evaluation groups to activate/ deactivate | Array | Uint_16 | 2 | Each array element contains two parameters:Evaluation group numberDeactivation / activation of evaluation group | `1d ... 48d (1 ... 30h)` | `00 01 … 00 30` | | Evaluation group number | Evaluation group 1 | UInt_16 | 2 | | `1` | `00 01` | | Deactivation / activation of evaluation group | Activate / deactivate evaluation group 1 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | Evaluation group number | Evaluation group 2 | UInt_16 | 2 | | `2` | `00 02` | | Activate/ deactivate evaluation group | Activate / deactivate evaluation group 2 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | .. | | | | | | | | Evaluation group number | Evaluation group 48 | UInt_16 | 2 | | `48d (30h)` | `00 30` | | Activate/ deactivate evaluation group | Activate / deactivate evaluation group 48 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | **Example: sMN ActivateEvaluationGroup** **CoLa A (ASCII)** ```text sMN{SPC}ActivateEvaluationGroup{SPC}1{SPC}1{SPC}0 ``` ```text sMN ActivateEvaluationGroup 1 1 0 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 20 ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 ``` **Telegram structure: sAN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------------------------- | -------------------------------------- | -------- | ------ | ---------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of activated/deactivated evaluation groups | - | UInt_16 | 2 | | `1h... 30h` | `00 01 … 00 30` | | State of activation / deactivation | - | Bool_1 | 1 | Activation/Deactivation failed:
Successfully activated/deactivated: | `0
1` | `00
01` | **Example: sAN ActivateEvaluationGroup** **CoLa A (ASCII)** ```text sAN{SPC}ActivateEvaluationGroup{SPC}1{SPC}0 ``` ```text 02 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 2D ```
### Read Evaluation Group Type [sRN EvaluationGroupType] Array with the type of each group: field evaluation, perpendicular distance, or object evaluation (firmware 2.5.0 and later). **Telegram structure: sRN EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------- | -------- | ------ | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | **Example: sRN EvaluationGroupType** **CoLa A (ASCII)** ```text sRN{SPC}EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text 02 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 1E ``` ```text 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 ``` **Telegram structure: sRA EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | | ------------- | ------------------------ | -------- | ------ | ------------------------------------------------------------------ | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | | Command | | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | | | Data | Type of evaluation group | Array | 48 | Field evaluation:
Perpendicular distance:
Object evaluation: | `0d (00h)
+1d (01h)
+2d (02h)` | `00
01
02` | | **Example: sRA EvaluationGroupType** **CoLa A (ASCII)** ```text sRA{SPC}EvaluationGroupType{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 48 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 ```
### Set Field Evaluation Contour [sMN SetFieldEvaluationContour] This telegram can be used to change or reshape the contour/ polygon of an already defined field. It´s possible to add additional points. **Telegram structure: sMN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------------- | ------------------------------------------------------------ | -------- | ------ | ----------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `+1d ... +48d (1h ... 30h)` | `00 01 … 00 30` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Uint_16 | 2 | | `+3d ... +800d (3h ... 320h)` | `00 03... 03 20` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | .. | | | | | | | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | Lower limit must be less than upper limit | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | Lower limit must be less than upper limit | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | **Example: sMN SetFieldEvaluationContour** **CoLa A (ASCII)** ```text sMN{SPC}SetFieldEvaluationContour{SPC}1{SPC}4{SPC}+2000{SPC}+1000{SPC}+0{SPC}+1000{SPC}+0{SPC}+0{SPC}+2000{SPC}+0{SPC}+0{SPC}+1000 ``` ```text sMN SetFieldEvaluationContour 1 4 +2000 +1000 +0 +1000 +0 +0 +2000 +0 +0 +1000 ``` ```text 02 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 34 20 2B 32 30 30 30 20 2B 31 30 30 30 20 2B 30 20 2B 31 30 30 30 20 2B 30 20 2B 30 20 2B 32 30 30 30 20 2B 30 20 2B 30 20 2B 31 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4A 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 03 E8 F6 ``` ```text 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 03 E8 ``` **Telegram structure: sAN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------------ | ------------------------------------------------------------ | -------- | ------ | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | State of evaluation conversion | - | Enum_8 | 1 | Conversion successful:
Invalid Evaluation:
Invalid Polygon:
Invalid Z limit: | `0
1
2
3` | `00
01
02
03` | **Example: sAN SetFieldEvaluationContour** **CoLa A (ASCII)** ```text sAN{SPC}SetFieldEvaluationContour{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 14 ```
### Read Evaluation Configuration State [sRN EvaluationConfigState] Read beam-limit and evaluation-limit status. On firmware 2.4.4.0R, the response contains two status bytes followed by 49 two-byte words. Retain the final word when parsing the response; its meaning is unspecified. **Telegram structure: sRN EvaluationConfigState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | EvaluationConfigState | String | 21 | | `EvaluationConfigState` | `45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65` | **Example: sRN EvaluationConfigState** **CoLa A (ASCII)** ```text sRN{SPC}EvaluationConfigState ``` ```text sRN EvaluationConfigState ``` ```text sRN EvaluationConfigState ``` ```text 02 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 04 ``` ```text 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 ``` **Telegram structure: sRA EvaluationConfigState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------ | ----------------------------- | ---------------- | ---------------------- | ----------------------------- | ----------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | EvaluationConfigState | String | 21 | | `EvaluationConfigState` | `45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65` | | Active beams limit | Limit status | Enum_8 | 1 | OK / warning / error | `0 / 1 / 2` | `00 / 01 / 02` | | Active evaluations limit | Limit status | Enum_8 | 1 | OK / warning / error | `0 / 1 / 2` | `00 / 01 / 02` | | Beam counts | Raw returned beam-count words | Array of Uint_16 | 98 (firmware 2.4.4.0R) | 49 words on firmware 2.4.4.0R | `0 ... FFFF (each word)` | `00 00 ... FF FF (each word)` | **Example: sRA EvaluationConfigState** **CoLa A (ASCII)** ```text sRA{SPC}EvaluationConfigState{SPC}0{SPC}0{SPC}F1F{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 20 30 20 30 20 46 31 46 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 7E 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 20 00 00 0F 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3B ```
### Read Field Evaluation Result [sRN FieldEvaluationResult] This telegram returns the status information of all evaluations. **Telegram structure: sRN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN FieldEvaluationResult** **CoLa A (ASCII)** ```text sRN{SPC}FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text 02 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 12 ``` ```text 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------ | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the last field infringement. Time base is the sensor system time in microseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | .. | | | | | | | | | Evaluation Result | Evaluation state of the last field. (maximum amount of evaluations = 48) | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | On firmware 2.4.4.0R, the parameter block is a 2-byte version, an 8-byte timestamp, and 48 one-byte result codes (58 bytes total). Each result occupies one byte, with no additional reserved byte. The timestamp unit is microseconds for both read replies (`sRA`) and events (`sSN`), not milliseconds. For example, the event timestamp `65D2897B50D60` is 1,791,278,785,564,000 microseconds, corresponding to October 6, 2026, 09:26:25.564 UTC. Interpreting it as milliseconds would put the date more than 56,000 years after 1970. **Example: sRA FieldEvaluationResult** **CoLa A (ASCII)** ```text sRA{SPC}FieldEvaluationResult{SPC}1{SPC}A07E2E8{SPC}4{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 41 30 37 45 32 45 38 20 34 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 54 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 0A 07 E2 E8 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F ```
### Receive Field Evaluation Result by Event [sEN FieldEvaluationResult] This telegram returns the status information of all evaluations. **Telegram structure: sEN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Reporting | Start/ stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN FieldEvaluationResult** **CoLa A (ASCII)** ```text sEN{SPC}FieldEvaluationResult{SPC}1 ``` ```text sEN FieldEvaluationResult 1 ``` ```text 02 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 24 ``` ```text 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Example: sEA FieldEvaluationResult** **CoLa A (ASCII)** ```text sEA{SPC}FieldEvaluationResult{SPC}1 ``` ```text 02 73 45 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 45 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 2B ``` **Telegram structure: sSN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the latest field infringement. Time base is the sensor system time in microseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | .. | | | | | | | | Evaluation Result | Evaluation state of the last field.
(maximum amount of evaluations = 48) | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | **Example: sSN FieldEvaluationResult** **CoLa A (ASCII)** ```text sSN{SPC}FieldEvaluationResult{SPC}1{SPC}65D2897B50D60{SPC}4{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 53 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 36 35 44 32 38 39 37 42 35 30 44 36 30 20 34 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 54 73 53 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 06 5D 28 97 CE F6 30 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DA ```
## Object Evaluation These telegrams read and configure [Object Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/). Object Evaluation is available from firmware 2.5.0 and requires the **3D Object Detection Advanced** package. Create the evaluations in SOPASair; the telegrams then read their state and change their contour, criteria, and group activation. The `Get...` and `Set...` methods require the Authorized Client user level; without a log in, the device answers with `sFA 1`. The other telegrams need no log in. Changes are applied immediately but are lost on restart unless you save them with [sMN mEEwriteall](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#save-parameters-permanently-smn-meewriteall).
### Read Object Evaluation Application State [sRN ObjectEvaluationApplicationState] This telegram returns the state of the Object Evaluation application. **Telegram structure: sRN ObjectEvaluationApplicationState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------- | -------- | ------ | ------------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Object evaluation application state | String | 32 | | `ObjectEvaluationApplicationState` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65` | **Example: sRN ObjectEvaluationApplicationState** **CoLa A (ASCII)** ```text sRN{SPC}ObjectEvaluationApplicationState ``` ```text sRN ObjectEvaluationApplicationState ``` ```text 02 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 41 ``` ```text 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 ``` **Telegram structure: sRA ObjectEvaluationApplicationState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ----------------------------------- | -------- | ------ | ------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Object evaluation application state | String | 32 | | `ObjectEvaluationApplicationState` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65` | | Application state | State of the application | Enum_8 | 1 | Deactivated:
Active:
Configuring:
Error: | `0
1
2
3` | `00
01
02
03` | **Example: sRA ObjectEvaluationApplicationState** **CoLa A (ASCII)** ```text sRA{SPC}ObjectEvaluationApplicationState{SPC}1 ``` ```text 02 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 26 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 20 01 6F ```
### Read Object Evaluation Group State [sRN ObjectEvaluationGroupState] This telegram returns the activation state of all 48 object evaluation groups. **Telegram structure: sRN ObjectEvaluationGroupState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Object evaluation group state | String | 26 | | `ObjectEvaluationGroupState` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65` | **Example: sRN ObjectEvaluationGroupState** **CoLa A (ASCII)** ```text sRN{SPC}ObjectEvaluationGroupState ``` ```text sRN ObjectEvaluationGroupState ``` ```text 02 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 44 ``` ```text 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 ``` **Telegram structure: sRA ObjectEvaluationGroupState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------------------- | -------- | ------ | --------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Object evaluation group state | String | 26 | | `ObjectEvaluationGroupState` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65` | | Group state | State of group 1 | Enum_8 | 1 | Not configured:
Active:
Inactive: | `0
1
2` | `00
01
02` | | Group state | State of group 2 | Enum_8 | 1 | Not configured:
Active:
Inactive: | `0
1
2` | `00
01
02` | | .. | | | | | | | | Group state | State of group 48. The array always has 48 entries. | Enum_8 | 1 | Not configured:
Active:
Inactive: | `0
1
2` | `00
01
02` | **Example: sRA ObjectEvaluationGroupState** **CoLa A (ASCII)** ```text sRA{SPC}ObjectEvaluationGroupState{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4F 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 20 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6A ```
### Read Object Evaluation Result [sRN ObjectEvaluationResult] This telegram returns the state of all 48 object evaluations. The timestamp changes only when an evaluation state changes. **Telegram structure: sRN ObjectEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Object evaluation result | String | 22 | | `ObjectEvaluationResult` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN ObjectEvaluationResult** **CoLa A (ASCII)** ```text sRN{SPC}ObjectEvaluationResult ``` ```text sRN ObjectEvaluationResult ``` ```text 02 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 65 ``` ```text 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA ObjectEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ------------------------------------------------------------------------------------------------------------------ | -------- | ------ | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Object evaluation result | String | 22 | | `ObjectEvaluationResult` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `1` | `00 01` | | Timestamp | Time of the last state change, in microseconds since January 1, 1970, 00:00 (UTC), based on the sensor system time | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation result | State of evaluation 1 | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Evaluation result | State of evaluation 2 | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | .. | | | | | | | | Evaluation result | State of evaluation 48. The array always has 48 entries. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | **Example: sRA ObjectEvaluationResult** **CoLa A (ASCII)** ```text sRA{SPC}ObjectEvaluationResult{SPC}1{SPC}2AF4D38{SPC}2{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 32 41 46 34 44 33 38 20 32 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 55 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 02 AF 4D 38 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 91 ```
### Receive Object Evaluation Result by Event [sEN ObjectEvaluationResult] This telegram starts or stops the `sSN ObjectEvaluationResult` event. The device sends the event when the state of an evaluation changes, not cyclically. **Telegram structure: sEN ObjectEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Object evaluation result | String | 22 | | `ObjectEvaluationResult` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Reporting | Start/ stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ObjectEvaluationResult** **CoLa A (ASCII)** ```text sEN{SPC}ObjectEvaluationResult{SPC}1 ``` ```text sEN ObjectEvaluationResult 1 ``` ```text 02 73 45 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 45 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 53 ``` ```text 73 45 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sEA ObjectEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------ | -------- | ------ | -------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sEA` | `73 45 41` | | Command | Object evaluation result | String | 22 | | `ObjectEvaluationResult` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Reporting | Start/ stop | Enum_8 | 1 | Stopped:
Started: | `0
1` | `00
01` | **Example: sEA ObjectEvaluationResult** **CoLa A (ASCII)** ```text sEA{SPC}ObjectEvaluationResult{SPC}1 ``` ```text 02 73 45 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 45 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 5C ``` The `sSN` event has the same parameters as the `sRA ObjectEvaluationResult` answer. The example shows evaluation 1 after its group was deactivated: state 1 (Inactive). **Telegram structure: sSN ObjectEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | ------------------------------------------------------------------------------------------------------------------ | -------- | ------ | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | Command type | Event | String | 3 | | `sSN` | `73 53 4E` | | Command | Object evaluation result | String | 22 | | `ObjectEvaluationResult` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `1` | `00 01` | | Timestamp | Time of the last state change, in microseconds since January 1, 1970, 00:00 (UTC), based on the sensor system time | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation result | State of evaluation 1 | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Evaluation result | State of evaluation 2 | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | .. | | | | | | | | Evaluation result | State of evaluation 48. The array always has 48 entries. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | **Example: sSN ObjectEvaluationResult** **CoLa A (ASCII)** ```text sSN{SPC}ObjectEvaluationResult{SPC}1{SPC}22434938{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 53 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 32 32 34 33 34 39 33 38 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 55 73 53 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 22 43 49 38 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 ```
### Read Object Evaluation Configuration State [sRN ObjectEvaluationConfigState] This telegram reports whether the configured evaluations stay within the resources of the device. **Telegram structure: sRN ObjectEvaluationConfigState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Object evaluation configuration state | String | 27 | | `ObjectEvaluationConfigState` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65` | **Example: sRN ObjectEvaluationConfigState** **CoLa A (ASCII)** ```text sRN{SPC}ObjectEvaluationConfigState ``` ```text sRN ObjectEvaluationConfigState ``` ```text 02 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 31 ``` ```text 73 52 4E 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 ``` **Telegram structure: sRA ObjectEvaluationConfigState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------ | ------------------------------------------------------------------------------ | -------- | ------ | ---------------------------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Object evaluation configuration state | String | 27 | | `ObjectEvaluationConfigState` | `4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65` | | Active beams limit | Load from the beams that intersect the evaluations | Enum_8 | 1 | OK:
Warning:
Exceeded: | `0
1
2` | `00
01
02` | | Active evaluations limit | Load from the number of active evaluations | Enum_8 | 1 | OK:
Warning:
Exceeded: | `0
1
2` | `00
01
02` | | Intersecting beams | Number of beams that intersect evaluation 1 | Uint_16 | 2 | | `0 ... FFFFh` | `00 00 ... FF FF` | | .. | | | | | | | | Intersecting beams | Number of beams that intersect evaluation 48. The array always has 48 entries. | Uint_16 | 2 | | `0 ... FFFFh` | `00 00 ... FF FF` | | Error list length | Number of entries in the input/output error list (`InputIsOutputErrorList`) | Uint_16 | 2 | | `0 ... 30h` | `00 00 ... 00 30` | | Error list entry | Entry of the input/output error list | Uint_16 | 2 | | `0 ... FFFFh` | `00 00 ... FF FF` | **Example: sRA ObjectEvaluationConfigState** **CoLa A (ASCII)** ```text sRA{SPC}ObjectEvaluationConfigState{SPC}0{SPC}0{SPC}451{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 20 30 20 30 20 34 35 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 84 73 52 41 20 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 20 00 00 04 51 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B ```
### Set Activation of Object Evaluation Group [sMN ActivateObjectEvaluationGroup] This telegram activates or deactivates object evaluation groups. It switches only groups whose activation type is Telegram. For a group with the activation type Always, the device confirms the telegram, but the group stays active. Check the result with [sRN ObjectEvaluationGroupState](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#read-object-evaluation-group-state-srn-objectevaluationgroupstate). **Telegram structure: sMN ActivateObjectEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ---------------- | --------------------------------------------- | -------- | ------ | ------------------------ | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Activate / deactivate object evaluation group | String | 29 | | `ActivateObjectEvaluationGroup` | `41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Number of groups | Number of following group entries | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Group number | Group 1 | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Activation | Activate / deactivate the group | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | .. | | | | | | | | Group number | Last group | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Activation | Activate / deactivate the group | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | **Example: sMN ActivateObjectEvaluationGroup** **CoLa A (ASCII)** ```text sMN{SPC}ActivateObjectEvaluationGroup{SPC}1{SPC}1{SPC}0 ``` ```text sMN ActivateObjectEvaluationGroup 1 1 0 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 4D 4E 20 41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 15 ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 ``` **Telegram structure: sAN ActivateObjectEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ----------------- | --------------------------------------------- | -------- | ------ | ------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Activate / deactivate object evaluation group | String | 29 | | `ActivateObjectEvaluationGroup` | `41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Number of results | One result per group in the request | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Result | Result for the group | Bool_1 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN ActivateObjectEvaluationGroup** **CoLa A (ASCII)** ```text sAN{SPC}ActivateObjectEvaluationGroup{SPC}1{SPC}1 ``` ```text 02 73 41 4E 20 41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 41 4E 20 41 63 74 69 76 61 74 65 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 01 19 ```
### Read Object Evaluation Contour [sMN GetObjectEvaluationContour] This telegram returns the polygon and the Z limits of the region of an object evaluation. Coordinates are in the sensor coordinate system. **Telegram structure: sMN GetObjectEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------------------------- | -------- | ------ | ------------------ | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Read the region of an object evaluation | String | 26 | | `GetObjectEvaluationContour` | `47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | ID of the evaluation | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | **Example: sMN GetObjectEvaluationContour** **CoLa A (ASCII)** ```text sMN{SPC}GetObjectEvaluationContour{SPC}1 ``` ```text sMN GetObjectEvaluationContour 1 ``` ```text 02 73 4D 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 4D 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 7A ``` ```text 73 4D 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 ``` **Telegram structure: sAN GetObjectEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------------- | ---------------------------------------------- | -------- | ------ | -------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Read the region of an object evaluation | String | 26 | | `GetObjectEvaluationContour` | `47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Number of contours | 0 if the evaluation does not exist | Uint_16 | 2 | | `0
1` | `00 00
00 01` | | Evaluation ID | ID of the evaluation | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Number of polygon vertices | At least 3, at most 100 | Uint_16 | 2 | | `3 ... +100` | `00 03 ... 00 64` | | Polygon vertex | X coordinate of the first vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Polygon vertex | Y coordinate of the first vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | .. | | | | | | | | Polygon vertex | X coordinate of the last vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Polygon vertex | Y coordinate of the last vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Lower Z limit | Lower bound of the region in Z direction in mm | Int_32 | 4 | Must be less than the upper Z limit | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Upper Z limit | Upper bound of the region in Z direction in mm | Int_32 | 4 | Must be greater than the lower Z limit | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | **Example: sAN GetObjectEvaluationContour** **CoLa A (ASCII)** ```text sAN{SPC}GetObjectEvaluationContour{SPC}1{SPC}1{SPC}4{SPC}FFFFFF38{SPC}0{SPC}FFFFFCE0{SPC}64{SPC}FFFFFCE0{SPC}FFFFFE0C{SPC}FFFFFF38{SPC}FFFFFE0C{SPC}C8{SPC}7D0 ``` ```text 02 73 41 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 31 20 34 20 46 46 46 46 46 46 33 38 20 30 20 46 46 46 46 46 43 45 30 20 36 34 20 46 46 46 46 46 43 45 30 20 46 46 46 46 46 45 30 43 20 46 46 46 46 46 46 33 38 20 46 46 46 46 46 45 30 43 20 43 38 20 37 44 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4D 73 41 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 01 00 04 FF FF FF 38 00 00 00 00 FF FF FC E0 00 00 00 64 FF FF FC E0 FF FF FE 0C FF FF FF 38 FF FF FE 0C 00 00 00 C8 00 00 07 D0 08 ```
### Set Object Evaluation Contour [sMN SetObjectEvaluationContour] This telegram changes the polygon and the Z limits of the region of an existing object evaluation. The example sets a rectangle from -200 mm to -800 mm in X and from 100 mm to -500 mm in Y, between 200 mm and 2000 mm in Z. **Telegram structure: sMN SetObjectEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | -------------------------- | ---------------------------------------------- | -------- | ------ | -------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set the region of an object evaluation | String | 26 | | `SetObjectEvaluationContour` | `53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | ID of the evaluation | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Number of polygon vertices | At least 3, at most 100 | Uint_16 | 2 | | `3 ... +100` | `00 03 ... 00 64` | | Polygon vertex | X coordinate of the first vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Polygon vertex | Y coordinate of the first vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | .. | | | | | | | | Polygon vertex | X coordinate of the last vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Polygon vertex | Y coordinate of the last vertex in mm | Int_32 | 4 | | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Lower Z limit | Lower bound of the region in Z direction in mm | Int_32 | 4 | Must be less than the upper Z limit | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | | Upper Z limit | Upper bound of the region in Z direction in mm | Int_32 | 4 | Must be greater than the lower Z limit | `-100000 ... +100000` | `FF FE 79 60 ... 00 01 86 A0` | **Example: sMN SetObjectEvaluationContour** **CoLa A (ASCII)** ```text sMN{SPC}SetObjectEvaluationContour{SPC}1{SPC}4{SPC}-200{SPC}+0{SPC}-800{SPC}+100{SPC}-800{SPC}-500{SPC}-200{SPC}-500{SPC}+200{SPC}+2000 ``` ```text sMN SetObjectEvaluationContour 1 4 -200 +0 -800 +100 -800 -500 -200 -500 +200 +2000 ``` ```text 02 73 4D 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 34 20 2D 32 30 30 20 2B 30 20 2D 38 30 30 20 2B 31 30 30 20 2D 38 30 30 20 2D 35 30 30 20 2D 32 30 30 20 2D 35 30 30 20 2B 32 30 30 20 2B 32 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4B 73 4D 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 FF FF FF 38 00 00 00 00 FF FF FC E0 00 00 00 64 FF FF FC E0 FF FF FE 0C FF FF FF 38 FF FF FE 0C 00 00 00 C8 00 00 07 D0 11 ``` ```text 73 4D 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 FF FF FF 38 00 00 00 00 FF FF FC E0 00 00 00 64 FF FF FC E0 FF FF FE 0C FF FF FF 38 FF FF FE 0C 00 00 00 C8 00 00 07 D0 ``` **Telegram structure: sAN SetObjectEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------------- | -------- | ------ | ---------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set the region of an object evaluation | String | 26 | | `SetObjectEvaluationContour` | `53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Error code | Result of the change | Enum_8 | 1 | No error:
Invalid evaluation ID:
Invalid polygon:
Invalid Z limits: | `0
1
2
3` | `00
01
02
03` | **Example: sAN SetObjectEvaluationContour** **CoLa A (ASCII)** ```text sAN{SPC}SetObjectEvaluationContour{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 41 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 63 ```
### Read Object Evaluation Configuration [sMN GetObjectEvaluationConfiguration] This telegram returns the name and the criteria of an object evaluation. **Telegram structure: sMN GetObjectEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------------------- | -------- | ------ | ------------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Read the criteria of an object evaluation | String | 32 | | `GetObjectEvaluationConfiguration` | `47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Evaluation ID | ID of the evaluation | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | **Example: sMN GetObjectEvaluationConfiguration** **CoLa A (ASCII)** ```text sMN{SPC}GetObjectEvaluationConfiguration{SPC}1 ``` ```text sMN GetObjectEvaluationConfiguration 1 ``` ```text 02 73 4D 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 4D 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 74 ``` ```text 73 4D 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 ``` **Telegram structure: sAN GetObjectEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------ | -------------------------------------------------------------------- | -------- | -------- | ------------------------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Read the criteria of an object evaluation | String | 32 | | `GetObjectEvaluationConfiguration` | `47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Number of configurations | 0 if the evaluation does not exist | Uint_16 | 2 | | `0
1` | `00 00
00 01` | | Evaluation ID | ID of the evaluation | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Name length | Number of characters of the name | Uint_16 | 2 | | `0 ... +20` | `00 00 ... 00 14` | | Name | Name of the evaluation | String | 0 ... 20 | | `Evaluation 1` | `45 76 61 6C ...` | | Version | Version of the parameter structure | Uint_16 | 2 | | `1` | `00 01` | | Number of parameter sets | Always 1 | Uint_16 | 2 | | `1` | `00 01` | | Maximum hidden time | Maximum time in ms that a tracked object can be hidden in the region | Uint_16 | 2 | | `0 ... +1000` | `00 00 ... 03 E8` | | Minimum object age | Minimum time in ms that an object must be tracked | Uint_16 | 2 | | `0 ... FFFFh` | `00 00 ... FF FF` | | Time for infringed state | Time in ms that a qualifying object must be in the region | Uint_32 | 4 | | `1 ... FFFFFFFFh` | `00 00 00 01 ...` | | Minimum object width | Minimum horizontal size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Minimum object height | Minimum vertical size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Maximum size filter | Rejects objects larger than the maximum size | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Maximum object width | Maximum horizontal size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Maximum object height | Maximum vertical size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Motion state | Tracks that are evaluated | Enum_8 | 1 | All:
Moving:
Stationary: | `0
1
2` | `00
01
02` | | Speed filter | Evaluates only tracks within the speed range | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Minimum speed | Minimum speed in mm/s | Uint_32 | 4 | | `0 ... +65000` | `00 00 00 00 ... 00 00 FD E8` | | Maximum speed | Maximum speed in mm/s | Uint_32 | 4 | | `0 ... +65000` | `00 00 00 00 ... 00 00 FD E8` | | Direction filter | Evaluates only tracks that move in the configured direction | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Direction | Direction of movement in degrees | Int_16 | 2 | | `-180 ... +180` | `FF 4C ... 00 B4` | | Direction uncertainty | Accepted deviation from the direction in degrees | Uint_16 | 2 | | `0 ... +180` | `00 00 ... 00 B4` | | Reserved | Reserved1 ... Reserved6, 6 values. Send 0; the device returns 0. | Int_32 | 4 | | `0` | `00 00 00 00` | | Reserved parameters 1 | Number of entries, always 0 | Uint_16 | 2 | | `0` | `00 00` | | Reserved parameters 2 | Number of entries, always 0 | Uint_16 | 2 | | `0` | `00 00` | **Example: sAN GetObjectEvaluationConfiguration** **CoLa A (ASCII)** ```text sAN{SPC}GetObjectEvaluationConfiguration{SPC}1{SPC}1{SPC}C{SPC}Evaluation{SPC}1{SPC}1{SPC}1{SPC}1F4{SPC}0{SPC}1F4{SPC}C8{SPC}0{SPC}0{SPC}7D0{SPC}7D0{SPC}1{SPC}1{SPC}12C{SPC}3A98{SPC}0{SPC}B4{SPC}5A{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 41 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 31 20 43 20 45 76 61 6C 75 61 74 69 6F 6E 20 31 20 31 20 31 20 31 46 34 20 30 20 31 46 34 20 43 38 20 30 20 30 20 37 44 30 20 37 44 30 20 31 20 31 20 31 32 43 20 33 41 39 38 20 30 20 42 34 20 35 41 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 7F 73 41 4E 20 47 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 00 01 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 01 00 01 01 F4 00 00 00 00 01 F4 00 00 00 C8 00 00 00 00 00 00 00 07 D0 00 00 07 D0 01 01 00 00 01 2C 00 00 3A 98 00 00 B4 00 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB ```
### Set Object Evaluation Configuration [sMN SetObjectEvaluationConfiguration] This telegram changes the name and the criteria of an existing object evaluation. Write all parameters; read the current configuration first and change only the values you need. The example sets evaluation 1 to moving objects of at least 200 mm width with a speed between 300 mm/s and 15000 mm/s. Values outside the allowed range are rejected with `sFA 30`, and a name longer than 20 characters with `sFA 7`. A minimum that is greater than its maximum, for example for the size or speed, returns error code 2. **Telegram structure: sMN SetObjectEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------------ | -------------------------------------------------------------------- | -------- | -------- | ------------------------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set the criteria of an object evaluation | String | 32 | | `SetObjectEvaluationConfiguration` | `53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Evaluation ID | ID of the evaluation | Uint_16 | 2 | | `1 ... +48` | `00 01 ... 00 30` | | Name length | Number of characters of the name | Uint_16 | 2 | | `0 ... +20` | `00 00 ... 00 14` | | Name | Name of the evaluation | String | 0 ... 20 | | `Evaluation 1` | `45 76 61 6C ...` | | Version | Version of the parameter structure | Uint_16 | 2 | | `1` | `00 01` | | Number of parameter sets | Always 1 | Uint_16 | 2 | | `1` | `00 01` | | Maximum hidden time | Maximum time in ms that a tracked object can be hidden in the region | Uint_16 | 2 | | `0 ... +1000` | `00 00 ... 03 E8` | | Minimum object age | Minimum time in ms that an object must be tracked | Uint_16 | 2 | | `0 ... FFFFh` | `00 00 ... FF FF` | | Time for infringed state | Time in ms that a qualifying object must be in the region | Uint_32 | 4 | | `1 ... FFFFFFFFh` | `00 00 00 01 ...` | | Minimum object width | Minimum horizontal size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Minimum object height | Minimum vertical size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Maximum size filter | Rejects objects larger than the maximum size | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Maximum object width | Maximum horizontal size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Maximum object height | Maximum vertical size in mm | Uint_32 | 4 | | `0 ... +200000` | `00 00 00 00 ... 00 03 0D 40` | | Motion state | Tracks that are evaluated | Enum_8 | 1 | All:
Moving:
Stationary: | `0
1
2` | `00
01
02` | | Speed filter | Evaluates only tracks within the speed range | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Minimum speed | Minimum speed in mm/s | Uint_32 | 4 | | `0 ... +65000` | `00 00 00 00 ... 00 00 FD E8` | | Maximum speed | Maximum speed in mm/s | Uint_32 | 4 | | `0 ... +65000` | `00 00 00 00 ... 00 00 FD E8` | | Direction filter | Evaluates only tracks that move in the configured direction | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Direction | Direction of movement in degrees | Int_16 | 2 | | `-180 ... +180` | `FF 4C ... 00 B4` | | Direction uncertainty | Accepted deviation from the direction in degrees | Uint_16 | 2 | | `0 ... +180` | `00 00 ... 00 B4` | | Reserved | Reserved1 ... Reserved6, 6 values. Send 0; the device returns 0. | Int_32 | 4 | | `0` | `00 00 00 00` | | Reserved parameters 1 | Number of entries, always 0 | Uint_16 | 2 | | `0` | `00 00` | | Reserved parameters 2 | Number of entries, always 0 | Uint_16 | 2 | | `0` | `00 00` | **Example: sMN SetObjectEvaluationConfiguration** **CoLa A (ASCII)** ```text sMN{SPC}SetObjectEvaluationConfiguration{SPC}1{SPC}+12{SPC}Evaluation{SPC}1{SPC}1{SPC}1{SPC}+500{SPC}+0{SPC}+500{SPC}+200{SPC}+0{SPC}0{SPC}+2000{SPC}+2000{SPC}1{SPC}1{SPC}+300{SPC}+15000{SPC}0{SPC}+180{SPC}+90{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sMN SetObjectEvaluationConfiguration 1 +12 Evaluation 1 1 1 +500 +0 +500 +200 +0 0 +2000 +2000 1 1 +300 +15000 0 +180 +90 0 0 0 0 0 0 0 0 ``` ```text 02 73 4D 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 2B 31 32 20 45 76 61 6C 75 61 74 69 6F 6E 20 31 20 31 20 31 20 2B 35 30 30 20 2B 30 20 2B 35 30 30 20 2B 32 30 30 20 2B 30 20 30 20 2B 32 30 30 30 20 2B 32 30 30 30 20 31 20 31 20 2B 33 30 30 20 2B 31 35 30 30 30 20 30 20 2B 31 38 30 20 2B 39 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 7D 73 4D 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 01 00 01 01 F4 00 00 00 00 01 F4 00 00 00 C8 00 00 00 00 00 00 00 07 D0 00 00 07 D0 01 01 00 00 01 2C 00 00 3A 98 00 00 B4 00 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E2 ``` ```text 73 4D 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 01 00 01 01 F4 00 00 00 00 01 F4 00 00 00 C8 00 00 00 00 00 00 00 07 D0 00 00 07 D0 01 01 00 00 01 2C 00 00 3A 98 00 00 B4 00 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sAN SetObjectEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | -------- | ------ | ------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set the criteria of an object evaluation | String | 32 | | `SetObjectEvaluationConfiguration` | `53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Error code | Result of the change | Enum_8 | 1 | No error:
Invalid evaluation ID:
Invalid configuration: | `0
1
2` | `00
01
02` | **Example: sAN SetObjectEvaluationConfiguration** **CoLa A (ASCII)** ```text sAN{SPC}SetObjectEvaluationConfiguration{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 26 73 41 4E 20 53 65 74 4F 62 6A 65 63 74 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 6D ``` **Additional Parameter Read Commands**
## Perpendicular Distance
### Request Perpendicular Distance Once [sRN perpendicularDistanceResult] This telegram can be used to request the perpendicular distance. The shortest and furthest measuring point in a range to a reference plane will be transmitted. A field and a reference plane must be defined in the user interface under Application > Perpendicular distance measurement. **Telegram structure: sRN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | **Example: sRN perpendicularDistanceResult** **CoLa A (ASCII)** ```text sRN{SPC}perpendicularDistanceResult ``` ```text sRN perpendicularDistanceResult ``` ```text sRN perpendicularDistanceResult ``` ```text 02 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 3D ``` ```text 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 ``` **Telegram structure: sRA perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Timestamp | Time of the latest object detection in the defined fields. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_64 | 8 | | `0 ... FFFFFFFFFFFFFFFF` | `00 00 00 00 00 00 00 00... FF FF FF FF FF FF FF FF` | | Amount of channels | Amount of perpendicular distance evaluation channels/fields | Uint_16 | 2 | | `0 ... +20` | `00 00 ... 00 14` | | Evaluation ID X | ID of perpendicular distance field | Uint_16 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | Minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | X minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID X | X maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID .. | .. | .. | .. | .. | `..` | `..` | **Example: sRA perpendicularDistanceResult** **CoLa A (ASCII)** ```text sRA{SPC}perpendicularDistanceResult{SPC}A065478{SPC}0 ``` ```text 02 73 52 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 41 30 36 35 34 37 38 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2A 73 52 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 00 00 00 00 0A 06 54 78 00 00 32 ```
### Request Perpendicular Distance Continuously on Event [sEN perpendicularDistanceResult] This telegram can be used to request the perpendicular distance continuously on event. The shortest and furthest measuring point in a range to a reference plane will be transmitted. A field and a reference plane must be defined in the user interface under Application > Perpendicular distance measurement. **Telegram structure: sEN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ----------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Start/ Stop | - | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN perpendicularDistanceResult** **CoLa A (ASCII)** ```text sEN{SPC}perpendicularDistanceResult{SPC}1 ``` ```text sEN perpendicularDistanceResult 1 ``` ```text 02 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 0B ``` ```text 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 ``` **Example: sEA perpendicularDistanceResult** **CoLa A (ASCII)** ```text sEA{SPC}perpendicularDistanceResult{SPC}1 ``` ```text 02 73 45 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 45 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 04 ``` **Telegram structure: sSN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ------------------ | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Timestamp | Time of the latest object detection in the defined fields. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_64 | 8 | | `0 ... FFFFFFFFFFFFFFFF` | `00 00 00 00 00 00 00 00... FF FF FF FF FF FF FF FF` | | Amount of channels | Amount of perpendicular distance evaluation channels/fields | Uint_16 | 2 | | `0 ... +20` | `00 00 ... 00 14` | | Evaluation ID X | ID of perpendicular distance field | Uint_16 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | Minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | X minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID X | X maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID .. | .. | .. | .. | .. | `..` | `..` | **Example: sSN perpendicularDistanceResult - 1 configured field** **CoLa A (ASCII)** ```text sSN{SPC}perpendicularDistanceResult{SPC}D5BD2DA8{SPC}1{SPC}1{SPC}174{SPC}7CE{SPC}174{SPC}FFFFFFFC{SPC}0{SPC}7CE{SPC}FFFFFD13{SPC}0 ``` ```text 02 73 53 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 44 35 42 44 32 44 41 38 20 31 20 31 20 31 37 34 20 37 43 45 20 31 37 34 20 46 46 46 46 46 46 46 43 20 30 20 37 43 45 20 46 46 46 46 46 44 31 33 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 53 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 00 00 00 00 F9 B6 D5 88 00 01 00 01 00 00 00 9D 00 00 07 D0 00 00 00 9D FF FF FC D0 00 00 00 00 00 00 07 D0 FF FF FD 1F 00 00 00 00 C0 ```
## Operating Data
### Read Operating Hours [sRN ODoprh] Views the total number of operating hours during the lifetime of the device. **Telegram structure: sRN ODoprh** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read operating hours | String | 6 | | `ODoprh` | `4F 44 6F 70 72 68` | **Example: sRN ODoprh** **CoLa A (ASCII)** ```text sRN{SPC}ODoprh ``` ```text sRN ODoprh ``` ```text sRN ODoprh ``` ```text 02 73 52 4E 20 4F 44 6F 70 72 68 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 44 6F 70 72 68 41 ``` ```text 73 52 4E 20 4F 44 6F 70 72 68 ``` **Telegram structure: sRA ODoprh** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read operating hours | String | 6 | | `ODoprh` | `4F 44 6F 70 72 68` | | Value | Operating hours in 1/10 h | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | Calculation of the value: 1B50B (hex) 111883 (dez) × 1/10 h = 11188.3 h **Example: sRA ODoprh** **CoLa A (ASCII)** ```text sRA{SPC}ODoprh{SPC}413 ``` ```text 02 73 52 41 20 4F 44 6F 70 72 68 20 34 31 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4F 44 6F 70 72 68 20 00 00 04 13 79 ```
### Read Operating Hours Since Last Power On [sRN ODopdaily] Shows the runtime duration since the last power on of the device. **Telegram structure: sRN ODopdaily** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------- | -------- | ------ | ------------------ | ---------------------------------------- | --------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read operating hours | String | 9 | | `ODopdaily` | `4F 44 6F 70 64 61 69 6C 79` | **Example: sRN ODopdaily** **CoLa A (ASCII)** ```text sRN{SPC}ODopdaily ``` ```text sRN ODopdaily ``` ```text sRN ODopdaily ``` ```text 02 73 52 4E 20 4F 44 6F 70 64 61 69 6C 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 52 4E 20 4F 44 6F 70 64 61 69 6C 79 22 ``` ```text 73 52 4E 20 4F 44 6F 70 64 61 69 6C 79 ``` **Telegram structure: sRA ODopdaily** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ---------------------------------------- | ---------------------------------- | ------ | ------------------ | --------------------------------------------- | --------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read operating hours since last power on | String | 9 | | `ODopdaily` | `4F 44 6F 70 64 61 69 6C 79` | | Value | Operating hours in 1/10 h | Real as float according to IEEE754 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODopdaily** **CoLa A (ASCII)** ```text sRA{SPC}ODopdaily{SPC}3E088B3B ``` ```text 02 73 52 41 20 4F 44 6F 70 64 61 69 6C 79 20 33 45 30 38 38 42 33 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 41 20 4F 44 6F 70 64 61 69 6C 79 20 3E 08 8B 3B 8B ```
### Read Power on Counter [sRN ODpwrc] Shows the number of power on cycles. **Telegram structure: sRN ODpwrc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read power on counter | String | 6 | | `ODpwrc` | `4F 44 70 77 72 63` | **Example: sRN ODpwrc** **CoLa A (ASCII)** ```text sRN{SPC}ODpwrc ``` ```text sRN ODpwrc ``` ```text sRN ODpwrc ``` ```text 02 73 52 4E 20 4F 44 70 77 72 63 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 44 70 77 72 63 52 ``` ```text 73 52 4E 20 4F 44 70 77 72 63 ``` **Telegram structure: sRA ODpwrc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | --------------------- | -------- | ------ | ------------------ | --------------------------------------------- | ------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read power on counter | String | 6 | | `ODpwrc` | `4F 44 70 77 72 63` | | Value | Power on counter | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODpwrc** **CoLa A (ASCII)** ```text sRA{SPC}ODpwrc{SPC}6E ``` ```text 02 73 52 41 20 4F 44 70 77 72 63 20 36 45 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4F 44 70 77 72 63 20 00 00 00 6E 13 ```
### Read Temperature [sRN OPcurtmpdev] With this command the internal temperature of the device can be identified. Please note that it does not give an indication of the current ambient temperature. **Telegram structure: sRN OPcurtmpdev** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | ------------------------------ | -------- | ------ | ------------------ | ------------------------------------------ | --------------------------------------------------------------- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read temperature of the device | String | 11 | | `OPcurtmpdev` | `4F 50 63 75 72 74 6D 70 64 65 76` | **Example: sRN OPcurtmpdev** **CoLa A (ASCII)** ```text sRN{SPC}OPcurtmpdev ``` ```text sRN OPcurtmpdev ``` ```text sRN OPcurtmpdev ``` ```text 02 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 2A ``` ```text 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 ``` **Telegram structure: sRA OPcurtmpdev** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ---------------- | ------------------------------ | ---------------------------------- | ------ | ------------------ | ---------------------------------------------------- | --------------------------------------------------------------- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read temperature of the device | String | 11 | | `OPcurtmpdev` | `4F 50 63 75 72 74 6D 70 64 65 76` | | Temperature data | [°C] | Real as float according to IEEE754 | 4 | (-50°C … +100°C) | `C2480000h … 42C80000h` | `C2 48 00 00 … 42 C8 00 00` | **Example: sRA OPcurtmpdev** **CoLa A (ASCII)** ```text sRA{SPC}OPcurtmpdev{SPC}422BDE83 ``` ```text 02 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 34 32 32 42 44 45 38 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 42 2B DE 83 31 ```
### Read Date of Last Permanent Save [sRN DIpara] This command reads the date at which the last permanent save was executed. **Telegram structure: sRN DIpara** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------ | ------------------------------------- | ------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read date of last permanent save | String | 6 | | `DIpara` | `44 49 70 61 72 61` | **Example: sRN DIpara** **CoLa A (ASCII)** ```text sRN{SPC}DIpara ``` ```text sRN DIpara ``` ```text sRN DIpara ``` ```text 02 73 52 4E 20 44 49 70 61 72 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 70 61 72 61 40 ``` ```text 73 52 4E 20 44 49 70 61 72 61 ``` **Telegram structure: sRA DIpara** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------- | ------------------------------------------------- | ---------- | ------ | ------------------ | -------------------------------------------- | ------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read date of last permanent save | String | 6 | | `DIpara` | `44 49 70 61 72 61` | | String length | Number of bytes in the following date/time string | Uint_16 | 2 | Always: | `Ah` | `00 0A` | | Date of last permanent save | DD.MM.YYYY | FlexString | 10 | | `(see example)` | `(see example)` | **Example: sRA DIpara** **CoLa A (ASCII)** ```text sRA{SPC}DIpara{SPC}A{SPC}06.10.2026 ``` ```text 02 73 52 41 20 44 49 70 61 72 61 20 41 20 30 36 2E 31 30 2E 32 30 32 36 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 44 49 70 61 72 61 20 00 0A 30 36 2E 31 30 2E 32 30 32 36 64 ```
### Read Time of Last Permanent Save [sRN DIparatm] This command reads the time at which the last permanent save was executed. **Telegram structure: sRN DIparatm** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | ------------- | -------------------------------- | -------- | ------ | ------------------ | --------------------------------------- | ------------------------------------------------------ | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read time of last permanent save | String | 8 | | `DIparatm` | `44 49 70 61 72 61 74 6D` | **Example: sRN DIparatm** **CoLa A (ASCII)** ```text sRN{SPC}DIparatm ``` ```text sRN DIparatm ``` ```text sRN DIparatm ``` ```text 02 73 52 4E 20 44 49 70 61 72 61 74 6D 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 44 49 70 61 72 61 74 6D 59 ``` ```text 73 52 4E 20 44 49 70 61 72 61 74 6D ``` **Telegram structure: sRA DIparatm** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --------------------------- | ------------------------------------------------- | -------- | ------ | ------------------ | -------------------------------------------- | ------------------------------------------------------ | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read time of last permanent save | String | 8 | | `DIparatm` | `44 49 70 61 72 61 74 6D` | | String length | Number of bytes in the following date/time string | Uint_16 | 2 | Always: | `5h` | `00 05` | | Time of last permanent save | HH:MM | String | 5 | | `(see example)` | `(see example)` | **Example: sRA DIparatm** **CoLa A (ASCII)** ```text sRA{SPC}DIparatm{SPC}5{SPC}10:30 ``` ```text 02 73 52 41 20 44 49 70 61 72 61 74 6D 20 35 20 31 30 3A 33 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 44 49 70 61 72 61 74 6D 20 00 05 31 30 3A 33 30 4B ```
--- # multiScan100 Electrical Connection and Pin Assignment > Wire a multiScan100 power, Ethernet, and digital I/O system plug to a controller using the documented M12 pin assignments. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/electrical-connection/ # Electrical Connection Compatible with: multiScan100 To check whether the sensor still receives its minimum supply voltage at the end of a long cable, use the [Cable Dimensioning](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cable-dimensioning/) calculator. ## Power / 3 IOs System plug part number: 2116047 ![System plug 2116047 with Ethernet and 5-pin power connectors](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical/system-plug-2116047.png){ width="320" } *System plug 2116047 for power and three configurable digital I/Os.* This system plug uses a male, 5-pin, A-coded M12 connector. ![5-pin PWR connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/multiscan100-pwr-5.png)

5-pin PWR connector face with numbered pins.

**PWR / 3 IOs** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `Vs` | Supply, +9 V DC to +30 V DC | | 2 | `IN2/OUT2` | Configurable digital input 2 or output 2 | | 3 | `GND` | Supply return, 0 V | | 4 | `IN1/OUT1` | Configurable digital input 1 or output 1 | | 5 | `IN3/OUT3` | Configurable digital input 3 or output 3 | ## Power / 8 IOs System plug part number: 2130754 ![System plug 2130754 with Ethernet and 12-pin power and I/O connectors](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical/system-plug-12-pin.png){ width="320" } *System plug 2130754 with a 12-pin power and I/O connector.* This system plug uses a male, 12-pin, A-coded M12 connector. ![12-pin PWR and I/O connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/multiscan100-pwr-12.png)

12-pin PWR and I/O connector face with numbered pins.

**PWR / 8 IOs** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `IN1/OUT1` | Configurable digital input 1 or output 1 | | 2 | `GND` | Supply return, 0 V | | 3 | `IN2/OUT2` | Configurable digital input 2 or output 2 | | 4 | `IN7/OUT7` | Configurable digital input 7 or output 7 | | 5 | `IN8/OUT8` | Configurable digital input 8 or output 8 | | 6 | `IN3/OUT3` | Configurable digital input 3 or output 3 | | 7 | `IN4/OUT4` | Configurable digital input 4 or output 4 | | 8 | `IN6/OUT6` | Configurable digital input 6 or output 6 | | 9 | `Vs` | Supply, +9 V DC to +30 V DC | | 10 | `IN5/OUT5` | Configurable digital input 5 or output 5 | | 11 | — | Reserved; do not connect | | 12 | — | Reserved; do not connect | ## Ethernet The Ethernet connection uses a female, 4-pin, D-coded M12 connector. ![Ethernet connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/multiscan100-ethernet.png)

Ethernet connector face with numbered pins.

**Ethernet** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `TX+` | Transmit + | | 2 | `RX+` | Receive + | | 3 | `TX-` | Transmit − | | 4 | `RX-` | Receive − | --- # multiScan100 Licenses and Part Numbers > multiScan100 software licenses and part numbers for streaming, 3D object detection and tracking, filters, multi-echo, IMU, PTP, and interlaced mode. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/licenses/ # Licenses The following licenses enable multiScan100 device functions. Check the licenses included with your device variant before ordering. For activation, see [LiDAR License Activation](https://sickag.github.io/sick_lidar_developer_guide/shared-features/license-activation/).

**multiScan100 licenses:** category, license name, license part number, included functions, and firmware availability.

| Category | License name | License part number | Description | | --- | --- | --- | --- | | Sensor App | multiScan Streaming | 1128959 | [Measurement data streaming](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) | | Sensor App | 3D Object Detection | 1128958 | 3D Object Detection package (firmware 2.0.0)
  • [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/)
  • [Field Infringement Logging](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/#detection-history)
| | Sensor App | 3D Object Detection Advanced
  • Includes [3D Object Detection](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/)
| 1148360 | 3D Object Detection package (launched with firmware 2.3.0)
  • [Detection History](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/#detection-history)
  • [Perpendicular Distance](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) (from firmware 2.4.1)
  • [Ground Filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#ground-filter) (from firmware 2.4.1)
  • [3D Object Evaluation / Tracking](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/) (from firmware 2.5.0)
| | Software Feature | Data Reduction & Preparation Filter Package | 1128953 | [Data reduction & preparation filter package](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/)
  • [Horizontal FoV filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#angle-range-filter)
  • [Radial distance filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#distance-filter)
  • [Layer filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#layer-filter)
  • [Interval filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#interval-filter)
  • [Averaging filter](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/#filter)
  • [Cubic area filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#rectangular-filter)
  • [Moving average filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#moving-average-filter)
| | Software Feature | Reliability Package | 1128960 | Reliability package
  • [Particle filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#particle-filter)
  • [Contamination Detection](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/)
  • [Fog filter](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#fog-filter)
| | Software Feature | Multi echo | 1128973 | [Multi-echo technology](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#echo-filter) | | Software Feature | Inertial measurement unit | 1128976 | [Inertial measurement unit (IMU)](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-2-imu) | | Software Feature | Reflector recognition | 1129349 | [Reflector recognition](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#bit-fields-and-beam-properties) | | Software Feature | LIDAR time sync PTP | 1139900 | [Precision Time Protocol (PTP)](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/#ptp-time-synchronization); launched with firmware 2.0.0 | | Software Feature | Interlaced mode | 1128974 | [Interlaced mode](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#set-scan-configuration-smn-mclsetscancfglist) | See [Object Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/) for tracking functionality and the [Release Notes](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/release-notes/) for firmware changes. --- # multiScan100 Firmware Release Notes > Changes, new features, improvements, bug fixes, and known issues in the multiScan100 firmware 2.x.x releases. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/release-notes/ # Release Notes This page summarizes firmware changes for the multiScan100 product family from firmware version 2.x.x. Check the release and device variant before updating or using a feature. ## General Information - Firmware 2.x.x is the standard firmware for all multiScan100 variants. - multiScan100-S has a separate firmware file, which must be requested. - A firmware update typically does not affect active parameter settings. - Purchased licenses are not affected by firmware upgrades. - Reboot the device after activating or deactivating licenses. ## Update Instructions multiScan100 firmware can be updated through SOPAS ET, Sentio Creator, or the web UI (SOPASair) with an `.spk` software package. For the steps, see [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/). **Update via SOPASair.** Firmware updates through SOPASair in a web browser are supported from version 2.4.1. Use the signed `.spk.signed` package. Start the update from the device menu or from the link on the displayed firmware version. ## Firmware 2.5.0 **Release date:** 22 October 2026 **Effective from:** SN2644xxxx **3D Object Evaluation / 3D Object Tracking.** - New [3D Object Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/) functionality using tracked object characteristics. - Filtering by stationary or moving objects, object size, speed, direction of movement, and age. - A detailed description is available in the online help in SOPASair. - Available within the **3D Object Detection Advanced Package**. ![SOPASair light-mode 3D Object Evaluation view with tracked objects and their characteristics](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/firmware-250-object-evaluation-light.png) *Firmware 2.5.0: tracked objects and their characteristics in the SOPASair 3D Object Evaluation view.* **Optimization of Motor Parameters.** - Improved motor control for increased robustness and stability. - Improved measurement data availability under challenging operating conditions. **GUI.** - New **Dark Mode**. - Updated GUI for 3D Object Evaluation. - Updated error and notification messages. - General usability improvements. ![SOPASair Dark Mode showing the 3D Object Evaluation view](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/firmware-250-object-evaluation-dark.png) *Firmware 2.5.0: SOPASair Dark Mode with the 3D Object Evaluation view.* ## Firmware 2.4.4 **Release date:** 5 May 2026. Firmware 2.4.3 was not released. **New features.** - Firmware 2.4.4 is available for multiScan165S. The previous firmware for that variant is 2.3.0. - Ground Filter and Perpendicular Distance are available as non-safety-related add-ons for multiScan165S with Safe 3D Object Detection (part number 1151596). See the current multiScan165S operating instructions for details. **Optimization.** The FPGA version was updated for production optimization. Firmware 2.4.4 is functionally identical to 2.4.2. **Known issues.** Contamination-indication sectors may not be saved permanently and can be lost after a reboot. As a workaround, import an appropriate sensor configuration after reboot and verify the sector setup. Use the REST `/ContaminationConfig` endpoint or the CoLa A/B `sWN ContaminationConfig` telegram for parameterization. ## Firmware 2.4.2 **Release date:** 20 October 2025 **New features.** Firmware 2.4.2 adds support for multiScan166. Earlier firmware versions do not support multiScan166. ## Firmware 2.4.1 **Release date:** 20 October 2025 **New features.** **Ground Filter.** The Ground Filter provides upper and lower ground-threshold values. In applications with moving objects, it can reduce false field-evaluation triggers caused by the ground. When configured correctly, it is intended to retain detection of small objects such as forklift tines. The filter can be used indoors and outdoors. It affects both field evaluation and Perpendicular Distance. **Perpendicular Distance.** For an object inside a configured box-shaped field, Perpendicular Distance can output the object's minimum and maximum distance to an axis (X, Y, or Z). Use `sRN perpendicularDistanceResult` for a one-time request and `sEN perpendicularDistanceResult` for event-based output. **Firmware update via web GUI.** Firmware can be updated through the web GUI without SOPAS ET, using the signed `.spk.signed` package. **Parameter import and export.** The firmware adds parameter import and export through the web GUI. **GUI optimization and feature enhancements.** - The multiScan-S is now shown with a yellow ring in the GUI. Previously, it was not visually distinguishable from other variants. - Field contours uploaded by telegram are transferred directly to the web UI. - The Cybersecurity overview shows that the Maintenance and Authorized Client user levels are disabled by default. They can be enabled in the GUI after logging in at the Service user level. - HTTPS is supported for multiScan100 GUI components. - Full-screen mode can be selected by adding `?fullscreen_mode=` to the scan view URL. - The web update file dialog allows only signed `.spk` files. - The scan-layer filter has a redesigned interface that makes enabled and disabled layers easier to identify. Each layer can be deactivated individually with a click. - The distance filter displays minimum- and maximum-distance spheres to show the selected area. - An Undo button was added next to Save. - The Fullscreen button was moved from the top line next to split view to the device menu. - The DHCP fallback mode was changed to Static IP. - The `GetFieldEvaluationContour` telegram was implemented. **Temperature improvements.** The temperature range was extended from +50 °C to +60 °C when the device is mounted with standard bracket 2130373. The device does not shut off when its temperature exceeds the configured limits.

**Firmware 2.4.1:** usage condition and mission time.

| Usage condition | Mission time | | --- | --- | | Continuous use at 25 °C | 42 years | | Continuous use rarely above 30 °C | 37.5 years | | 55% of the time up to 30 °C, 35% up to 40 °C, and 10% up to 50 °C | 20 years | | 70% of the time up to 30 °C and 30% up to 50 °C | 18 years | | 80% of the time up to 30 °C and 20% up to 60 °C | 13.4 years | | Continuous use at 50 °C | 8 years | When a configured temperature range is exceeded, an output can be switched. Use these telegrams for temperature warnings: - Read current device temperature alarm status: `sRN temperatureAlarmStatus` - Set device temperature alarm configuration: `sWN temperatureAlarmConfiguration` - Read device temperature alarm configuration: `sRN temperatureAlarmConfiguration` **Bug fixes.** - Harmonized sensor behavior with other LiDAR sensors. - Fixed diagnostic dumps not downloading through the GUI. - Fixed measurement data sometimes not appearing in the UI after a browser refresh. - Fixed an error when creating fields with X/Y extents greater than 100 m. - Fixed missing layer selection in the Object Detection scheme. - Fixed the queue-overflow error not resetting when streaming was stopped while the error was active. ## Firmware 2.3.0 **Release date:** 2 December 2024 **New features.** - **High-resolution layers in 3D Object Detection:** Choose among 14 one-degree scan layers or either of two high-resolution layers (2D scan layers 6 or 14). A field can be configured multiple times with different sources. multiScan165 does not have high-resolution layers. - **Detection History:** The 3D Object Detection software adds a page for reviewing field-infringement history and logs of current field status. - **REST firmware update:** Firmware updates can be performed using REST. - **Online Help:** Existing help was updated with new content and guidance. - **I/O application:** Adds a warning when I/O ports cannot be created and removes `FieldEvaluationAppState` from the source list. - **CoLa1 password handling:** ROM passwords were removed; only RAM passwords are permitted. - **Third-party components:** Updated to newer versions. - **GUI changes:** Input configuration is visible when Port 1 is set to Input; the start page can show field evaluation or measurement data; the Field Evaluation Scan GUI can receive scan layers (for multiScan136, both one-degree and high-resolution layers); and the I/O status display was redesigned. **Bug fixes and improvements.** - IMU errors, including missing data delivery, now generate an error notification. - Fixed mounting position not being written when set in the SOPAS ET device window. - More than 20 sources can now be connected to a single output. Previously, exceeding 20 sources produced an error. - PTP is no longer shown in the selection list when no PTP license is available. - Switching between streaming and field-evaluation views is disabled when either required license is missing. - System Diagnosis displays the sensor's local time when configured, instead of UTC. - Corrected the translation of “No echo” to “Ignore missing echo.” - Duplicated evaluations now appear immediately in the GUI without reloading the browser. Previously, duplicated fields were not displayed and could not be deleted. - Fixed the maximum-range circle being tilted; it is positioned in the scanner's zero-degree layer. - Fixed the preset mounting position not being displayed correctly. - The frame count displayed for field-evaluation response time now reflects the scanning frequency correctly. Previously, a 50 ms response time could incorrectly be shown as three frames. - Online Help no longer overlaps the settings area. - Opening Object Detection and rapidly clicking **+** no longer produces `Access Denied (/api/EvaluationGroupMapping)`. - White points are visible in Echo View. - Fixed CoLa 2 reading and writing of Port Configuration and Source List. - Fixed deserialization of Compact azimuth angles above pi. - Cleaned up different API interfaces. **Known issues.** **Hardware.** At startup, the motor may not begin rotating immediately and a **Motor Stalled** error may appear in the error log. The sensorless motor driver cannot measure the current frequency at startup. It retries its start sequence, which may take up to six seconds; after ten seconds, software resets the driver module. **Firmware.** - `DoDiagnosis` increases system load and can adversely affect measurement operation, potentially causing additional errors. - While the GUI creates a diagnostic file, the device LED can remain green and the status can show **READY** even though 3D Object Detection and field evaluation are blocked. Normal operation resumes when file generation is complete. - Ports configured as inputs with a 5-pin system plug do not work with **Active Low**. **Application and UI.** - In the **Upper Z limit** field, the cursor can jump vertically when the field is empty; this does not occur when it contains text. - Device-name assignment can produce an error. - A soft reset triggered through the UI can cause web-server error messages. - Creating fields with an X/Y extent greater than 100 m can cause an error and prevent field evaluation from working. - The queue-overflow error is not reset when streaming stops while the error is active. - Layer selection is missing in the Object Detection scheme. - Duplicating evaluations can fail after a group and evaluation are created, one evaluation is duplicated, and the original is deleted. Adding a new evaluation with ID 1 allows duplication again. ## Firmware 2.2.2 **Compatible with:** multiScan100; **Release date:** 19 August 2024 **New features.** **Licensed 3D Object Detection for multiScan165.** The licensed SensorApp was already available for multiScan136. For multiScan165, it supports collision avoidance and area monitoring, with up to 48 configurable fields. The evaluation uses real elevation angles based on each sensor's production calibration data. It improves evaluation of object position and size for multiScan136 and multiScan165, using all 16 layers for multiScan165. More simultaneously active fields require more processing and increase system load. Excessive load can cause performance problems or system errors. Deactivating other features, such as the GUI, measurement-data output, and filters, can reduce load and allow more fields to be active. - Additional GUI languages were added. - An internal recorder can record and play back data on the device; a separate recorder tool is required. - `sRN FieldEvaluationGroupState` reads evaluation-group state: `0` = not configured, `1` = active, `2` = inactive. - Online Help was updated. - Scan-GUI visualization was optimized, including use of scanner-specific elevation angles. - The GUI now warns when an object is too small compared with the layer distance. - Support for multiScan165 was added. **Fixes, improvements, and changes.** - Improved port selection in 3D Object Detection; ports already in use are no longer selectable. - Improved resource monitoring in 3D Object Detection. Warnings indicate potential high load and help identify which functions use resources; creating additional fields no longer produces an error message, only warnings. - Applied performance optimizations. - Improved the GUI structure. - Aligned contamination-indication and warning-LED behavior. - Improved 3D Object Detection field visualization. - Fields can now be duplicated more than four consecutive times, and group deletion works correctly. - Applying the current system time now assigns the required internal variables correctly, preventing an incorrect system-time display. - Mounting settings are visible without an IMU license. - Improved contamination-indication timing and error handling. - Field points deleted in the 3D Object Detection table view are now also removed from the graphical view, so both views show the same values. - Corrected display of umlauts in the Input/Output window. - Reduced the internally blocked `169.254.x.x` IP address range. - The **Reset and maintain communication interface** button now performs the reset correctly. - System timestamps, including IMU, 3D Object Detection, and scan timestamps, are in UTC. - The interval filter now starts at `2`. - Removed the sensitivity setting from Inputs/Outputs (edge/level). - When more than three echoes are measured, the last echo is used instead of the third. - An application-state error now changes the device state to error. - Queue-overflow errors are shown only when data loss occurs. **Known issues.** - More than 100 field points can produce a duplicate error message. - In Object Detection, quickly clicking **+** after opening the page can produce `Access Denied (/api/EvaluationGroupMapping)`. - Duplicating fields may not work correctly. Press **F5** to refresh the browser as a workaround. - GUI CPU usage can increase over time. If the GUI freezes, close and reopen the browser. - Connecting more than 20 sources to an output produces an error. - The change-password dialog may not disappear. - An incorrect error message is shown if polygon points exceed 100 m. - The queue-overflow error is not reset when streaming stops while the error is active. **Firmware hash.** The published SHA-256 hash for the firmware file is: `110a4eb514b7ec868ecd97f2fc40ec8418dd5e5f56a7e48a099d649e3a84e2b6` Compare a downloaded file's SHA-256 fingerprint with the value published by SICK to check that the file has not been corrupted or manipulated. **Chrome 128 scan-view issue.** During tests with the Chrome 128 beta, measurement data was not displayed in the 2D and 3D SOPASair visualizations. SOPAS ET was not affected. Microsoft Edge was also affected because it uses the same software base. Workarounds are to update the sensor to the latest firmware, use Firefox, use SOPAS ET, or use Chrome Portable version 127 or earlier. Firmware 2.2.2 contains a fix for this issue. --- # multiScan100 Web Interface (SOPASair) > Navigate the multiScan100 SOPASair web interface to configure scan output, filters, field evaluation, and device settings. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/ # SOPASair Walkthrough SOPASair is the built-in web interface of the multiScan100 for parameterization, service, and diagnostics. It runs directly on the sensor, so no software installation is needed. Connect the sensor to the same network as your computer and open `http:///` in a browser. The factory default address is `192.168.0.1`. You can view status and settings without logging in. To change settings, log in with the **Authorized Client** user level using the user icon in the top bar. ![SOPASair Home dashboard showing multiScan165 status, 3D live view with field evaluation, I/O states, and detection history](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-home-overview.png) *The SOPASair Home dashboard: device status, 3D live view with field evaluation, input and output states, and detection history at a glance.* ## Home The Home page summarizes the sensor's state. It is a good place to start before you change any settings. **Status** shows separate indicators for the device, connection, measurement, field evaluation, and data output. Because each state is reported independently, the sensor can be measuring while no data is sent to an external receiver. ![multiScan165 device and application status](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-status.png) *Device and application status indicators.* **Device information** lists the model, part number, serial number, firmware version, system time, and the time of the last save. Check the firmware version before you use a firmware-specific API example. Click **Find device** to make the sensor LEDs blink, so you can identify the unit on site. ![multiScan165 device information](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-device-information.png) *Device identity and installed firmware version.* ## Configuration The Configuration menu contains the measurement, filter, mounting, network, and I/O settings. For the matching REST parameters, value ranges, and variant-specific limits, see the [multiScan100 OpenAPI reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/). ### Basic Settings **Configuration > Basic settings** contains interlaced mode, the status LED, and the measurement state. ![multiScan165 basic settings](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-basic-settings.png) *Interlaced mode, LED, and measurement settings.* **Date and system time** shows the device clock and its synchronization source. **Apply computer time** sets the sensor clock to your computer's time. For network-based time sources, see [Time synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/). ![multiScan165 date and system time](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-date-time.png) *Device clock and time synchronization settings.* ### Filter **Configuration > Filter** combines the fog, echo, particle, and moving-average filters. The echo filter selects all, first, or last echoes, and the moving-average filter sets the averaging depth. See [Filter details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) to choose the right filters for your application. ![multiScan165 filter settings](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-filters.png) *Fog, echo, particle, and moving-average filters.* ### Mounting **Configuration > Mounting** describes how the sensor is installed. Select a preset mounting position or enter the orientation angles and position offsets. **Adjust fields to mounting position** moves existing fields to match the new mounting, and **Accept IMU data** takes the orientation from the internal IMU. ![multiScan165 mounting position](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-mounting.png) *Mounting position, orientation, and offsets.* The **Inertial measuring unit (IMU)** panel shows the current orientation and acceleration. Because the IMU is not calibrated, use its values as a starting point for the mounting orientation, not as a precise measurement. ![multiScan165 live IMU readings](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-imu.png) *IMU orientation and acceleration.* ### Contamination Indication **Configuration > Contamination indication** monitors the front window for dirt. The sector diagram shows the contamination state per sector, using the color legend below it. You can configure whether a warning or error is output, the sensitivity, the monitored sectors, the handling of blocked sectors, and the response delay. See [Contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) for the application background. ![multiScan165 contamination indication](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-contamination.png) *Contamination status per sector and evaluation settings.* ### Connection Options **Configuration > Connection options** contains the Ethernet settings: addressing mode, IP address, subnet mask, default gateway, MAC address, and link speed. When you click **Apply**, the new network settings take effect immediately. The browser loses its connection if the sensor moves to an address that your computer cannot reach, so note the new address before applying the change. ![multiScan165 Ethernet settings](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-ethernet.png) *Ethernet addressing and link settings.* ### Inputs and Outputs **Configuration > Inputs and outputs** assigns each port a name and a direction. For outputs, select the signal source, inversion, logic, and restart behavior. The connector diagram next to each port shows the corresponding pin. The status panels below show the current input and output states, and **Reset counters** clears the output switching counters. ![multiScan165 input and output assignments](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-inputs-outputs.png) *Port assignments with connector pin diagrams.* ## Application The Application menu contains measurement-data output and field evaluation. Some variants offer additional functions. For example, the multiScan165S with Safe 3D Object Detection adds a ground filter and perpendicular distance measurement as non-safety-related functions. ### Data Output **Application > Data output** selects the measurement-data format, MSGPACK or Compact, and the UDP destination address and port. Start or stop the data stream from the same panel. See [Data streaming](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) to choose a receiver and parser. ![multiScan165 measurement-data output](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-data-output.png) *Output format, UDP destination, and stream control.* IMU data is streamed separately, with its own destination address, port, and start/stop control. ![multiScan165 IMU output](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-imu-output.png) *IMU data output.* **Data reduction** limits the output by scan layer, angular range, and output interval. **Range filter** removes points outside a cuboid area or a distance window. If layers or points are missing from the received data, check these settings together with the output format. ![multiScan165 data reduction](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-data-reduction.png) *Scan-layer, angular-range, and interval reduction.* ![multiScan165 range filters](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-range-filter.png) *Cuboid-area and distance filters.* ### Field Evaluation **Application > Field evaluation** monitors fields for objects and switches outputs when a field is infringed. Each group combines fields, evaluations, and outputs, and has its own activation source. **Resource requirements** shows how much of the sensor's evaluation capacity is in use, and **Detection list** shows recent detections. ![multiScan165 field evaluation groups](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-field-evaluation.png) *Evaluation groups with their activation sources.* See [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) for a complete commissioning procedure and API support. ### Perpendicular Distance Measurement Where supported by the device variant and software package, perpendicular distance measurement evaluates points within a field relative to a reference line. The results include minimum and maximum perpendicular distances and the positions of the corresponding measuring points. See [Perpendicular Distance Measurement](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) for configuration steps and result interfaces. ### Object Evaluation Object Evaluation provides object properties such as size, speed, and direction for decisions based on object criteria rather than only field infringements. It is available from multiScan100 firmware 2.5.0; check the device variant and installed software package for support. See [Object Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/object-evaluation/) for an introduction and application example. ## Diagnostics ### Overview **Diagnostics > Overview** combines status, device information, operating information, the current device status, and the message log. Expand **Operating information** to see the number of power-on cycles, the operating hours, and the time of the last parameterization. ![multiScan165 operating information](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-operating-information.png) *Power-on count, operating hours, and last parameterization.* The message table lists current and past events with their status, number, time, description, and counter. **Current device status** shows only the messages that are still active. If you need support, use **Create diagnostic file** to collect the device state in one file and send it to SICK. See [Contact](https://sickag.github.io/sick_lidar_developer_guide/contact/). ### Cybersecurity **Diagnostics > Cybersecurity** shows the HTTPS certificates and the **Services and protocols** table. The table lists each service with its purpose and port, so you can enable only the services your integration needs. See [HTTPS and certificates](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) for the complete certificate setup. ![multiScan165 services and protocols](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-services-protocols.png) *Services and protocols with their ports.* The service list is specific to the device and firmware shown. For the multiScan165 port reference and the separately configurable measurement-data ports, see the [Cybersecurity network-services matrix](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/#multiscan100-multiscan165). ### Data Recorder **Diagnostics > Data recorder** explains how to install the SICK data recorder on your computer and connect it to the sensor. Use the recorder to capture measurement data for later analysis or support cases. ![multiScan165 recorder instructions](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-recorder.png) *Installation and connection steps for the data recorder.* ### Detection History **Diagnostics > Detection history** records field-evaluation detections. Select the evaluations to include, then start the history. The **Statistics** section counts the detections per evaluation, and the **Detection list** shows each event with its time stamp. Use **Reset detection history** to clear the counters. ![multiScan165 detection history](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan100/img/sopasair-detection-statistics.png) *Detection counts per evaluation.* --- # multiScan100 Starter Kit > Three SICK products for a multiScan166 starter kit, with product photos, direct product links, and a link to getting started. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan100/starter-kit/ This compact starter kit brings together a multiScan166 and the cables needed to connect it to a development computer. Together, these products are a good combination to get started with the multiScan166. Continue with [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/) to connect the sensor and open its web interface. --- # multiScan200 Overview > Developer entry point for the SICK multiScan200 3D LiDAR family (multiScan270): web GUI, REST API, CoLa telegrams, native ROS 2, and firmware release notes. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan200/ # multiScan200 The multiScan200 is a compact 3D LiDAR sensor family with high detection reliability in harsh environments. The first variant is the multiScan270. [Specifications and data sheet on sick.com](https://www.sick.com/de/en/search?text=multiScan200)
multiScan270 with up to 192 scan layers and labelled physical elevation limits of −22.5° downward and +22.5° upward *multiScan270: up to 192 layers, 45° vertical and 360° horizontal coverage, depending on configuration. Schematic infrared beams in blue; angles are positive upward.*
On sick.com, open your device variant's download area for firmware, EPLAN and CAD data, and available NVIDIA Isaac Sim models and Milestone XProtect plug-ins. See [Release Notes](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/release-notes/) for firmware changes.
**Input** - [CoLa A/B](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/) - [Digital inputs](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/electrical-connection/) - [Gigabit Ethernet](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/electrical-connection/) - [HTTPS](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) - [NTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [PTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [REST API](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) - [SOPASair](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/graphical-user-interface/)
**Processing** - [Angle-range focus filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#angle-range-focus-filter) - [Blooming filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#blooming-filter) - [Compact 3D scanning](https://sickag.github.io/sick_lidar_developer_guide/lidar-basics/) - [Contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Device discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/) - [Echo filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [High-precision mode](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#moving-average-filter) - [Interval filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Particle filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Sensitivity modes](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#sensitivity-mode) - [Time synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/)
**Output** - [Ambient-light images](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/graphical-user-interface/#data-output) - [Compact over TCP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) - [CoLa A/B telegrams](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/) - [Contamination status](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Device status](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/) - [Diagnostic and error data](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/error-codes/) - [Digital outputs](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/electrical-connection/) - [Field-evaluation states](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [IMU data](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/graphical-user-interface/#inertial-measuring-unit-imu) - [Native ROS 2 topics](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/) - [REST JSON responses](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) - [Synchronized timestamps](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [WebSocket JSON events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/)
*Inputs, onboard processing, and outputs of the **multiScan200**. Each column is an independent list.* Use the Product ID (PID) to find the exact product variant on [sick.com](https://www.sick.com/): enter the part number (P/N) and optional serial number (S/N), for example `1134610/25250710`. A complete [pid.sick.com](https://pid.sick.com/) URL is also accepted.
pid.sick.com/

--- # multiScan200 API | REST | OpenAPI V1.1.0 > Download the multiScan200 V1.1.0 OpenAPI description and search REST endpoints, request parameters, and response schemas. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/ # API | REST | OpenAPI
![OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/assets/openapi-logo.png) This page provides the searchable V1.1.0 REST reference and downloadable OpenAPI description for the multiScan200 family. For REST concepts, authentication, and request patterns, see [REST API / OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/).
[multiScan200_1.1.0.yaml (Download)](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/openapi/multiScan200_1.1.0.yaml) Always match the file to your device's actual firmware version. Function availability can vary by variant and installed software package. ### 1 - General #### [POST /checkCredentials](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-checkcredentials) Returns authentication success. For more details see https://github.com/SICKAG/sick_scan_rest_client. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [PUT /update](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-put-update) Transfers a firmware file (.spk.signed) from the file location to the device. The maximum possible file size is 100 MB. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) for the firmware update workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `application/octet-stream`** `data` | `Type` | **Type:** string | | --- | --- | | `Binary` | **Type:** string | **Responses** **Status `200`** #### [GET /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-parameterbackup) Reads/transfers the backup file (.json) from/to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/parameterbackup" ``` **Responses** **Status `200`** **Media type: `application/json`** | `version` | **Type:** string | | --- | --- | | `device identification` | **Type:** string | | `checksum` | **Type:** string | | `parameters` | **Type:** array **Items:** | `userlevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-e-user-level-type) | | `parameters` | **Type:** array **Items:** | `name` | **Type:** string | | `id` | **Type:** string | | `value` | **oneOf** **Type:** integer **Type:** boolean **Type:** string **Type:** object **Type:** number | | | #### [PUT /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-put-parameterbackup) Reads/transfers the backup file (.json) from/to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `multipart/form-data`** `datei` **Type:** string · **Format:** binary Json-Datei **Responses** **Status `200`** #### [POST /SetPassword](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setpassword) Sets the password for the CoLa A/B interface only. For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "siUserLevel": 4, "udiNewPassword": 3410122659 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "siUserLevel": 4, "udiNewPassword": 3410122659 } ``` | `siUserLevel` | **Type:** integer | | --- | --- | | `udiNewPassword` | **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `bSuccess` **Type:** boolean · **Default:** false | #### [POST /getChallenge](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-getchallenge) Returns a challenge for the challenge and response authentication method. For more details see https://github.com/SICKAG/sick_scan_rest_client **JSON example** ```json { "data": { "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `user` **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-e-user-level-type) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `challenge` | | `realm` | **Type:** string · **Default:** | | `nonce` | **Type:** string · **Default:** | | `opaque` | **Type:** string · **Default:** | | `salt` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** integer | | #### [POST /changePassword](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-changepassword) Sets the password for the REST interface. For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "encryptedMessage": [], "userLevel": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `encryptedMessage` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 96 **Items:** **Type:** integer | | --- | --- | | `userLevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-e-user-level-type) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2, 4, 5 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED * 4 - PWD_NOT_CHANGABLE * 5 - TIMELOCK_ACTIVE | #### [POST /EnableUserLevel](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-enableuserlevel) Activates/deactivates a specific user level for the REST interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED | #### [POST /WriteEeprom](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-writeeeprom) Saves all parameters permanently. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [POST /SoftReset](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-softreset) Reboots the device. All non-saved parameters are lost. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ProcessorNbr": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ProcessorNbr` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /RebootDevice](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-rebootdevice) Reboots the device. All parameters are saved. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /LoadFactoryDefaults](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-loadfactorydefaults) Resets all parameters to default. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /LoadApplicationDefaults](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-loadapplicationdefaults) Resets all parameters except the communication interfaces. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /EnableLegacyUserLevel](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-enablelegacyuserlevel) Activates/deactivates a specific user level for the CoLa A/B interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer · **Minimum:** 0 · **Maximum:** 7 | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `result` **Type:** boolean · **Default:** false | #### [POST /RunFirmwareUpdate](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-runfirmwareupdate) Starts the firmware update process. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /UpdateState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-updatestate) Returns the state of the update process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/UpdateState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `UpdateState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Initial * 1 - Started * 2 - Finished * 3 - Error | #### [GET /CreateParameterBackupResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-createparameterbackupresult) Returns the current status of the parameter backup process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CreateParameterBackupResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Status` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Pending * 1 - Finished | | `Result` | **Type:** boolean · **Default:** false | | #### [GET /RestoreParameterBackupResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-restoreparameterbackupresult) Returns the current status of the parameter restoration process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/RestoreParameterBackupResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Status` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Pending * 1 - Finished | | `RestoreResult` | **Fields:** [RestoreBackupResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-restorebackupresult) | | `ParametersFailedToRestore` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** **Type:** string · **Default:** · **Maximum length:** 256 | | #### [POST /CreateParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-createparameterbackup) Creates a parameter backup file. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "Passphrase": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `Passphrase` **Type:** string · **Default:** · **Maximum length:** 256 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [POST /RestoreParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-restoreparameterbackup) Starts the backup file upload. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "Passphrase": " ", "Filter": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `Passphrase` | **Type:** string · **Default:** · **Maximum length:** 256 | | `Filter` | **Type:** integer · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [GET /LFTchecksum](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-lftchecksum) Returns a checksum over all software parts and configurations. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFTchecksum" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `MD5SumOK` | **Type:** boolean · **Default:** false | | `MD5LinuxRoot` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5App` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5Calibration` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5Parameters` | **Type:** string · **Default:** · **Maximum length:** 32 | | #### [POST /CreateSessionToken](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-createsessiontoken) A short-lived session token to pass to a HTTP request header. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `token` | **Fields:** [SessionToken](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-sessiontoken) | | `timeToLive` | **Type:** integer | | ### 2 - Status #### [GET /DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-devicestatus) Returns the device state (9 possible states). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceStatus` **Fields:** [DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-devicestatus) | #### [GET /SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-scdevicestate) Returns the device state (busy, ready, or error). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SCdevicestate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SCdevicestate` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Busy * 1 - Ready * 2 - Error | ### 3 - Device Information #### [GET /DeviceIdent](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-deviceident) Returns the device name and the firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceIdent" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Name` | **Type:** string · **Default:** multiScan200 · **Maximum length:** 12 | | `Version` | **Type:** string · **Default:** 1.1.0.0R · **Maximum length:** 8 | | #### [GET /LocationName](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-locationname) Returns/sets the device name. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LocationName" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | #### [POST /LocationName](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-locationname) Returns/sets the device name. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LocationName": "not defined" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /SerialNumber](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-serialnumber) Returns the serial number. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SerialNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SerialNumber` **Type:** string · **Default:** 123456789 · **Maximum length:** 9 | #### [GET /FirmwareVersion](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-firmwareversion) Returns the current firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FirmwareVersion" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FirmwareVersion` **Type:** string · **Default:** XXXXXXXXXX · **Maximum length:** 40 | #### [GET /OrderNumber](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ordernumber) Returns the order number (SICK part number). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OrderNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `OrderNumber` **Type:** string · **Default:** 1234567 · **Maximum length:** 32 | #### [GET /DeviceType](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-devicetype) Returns the device type. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DeviceType` **Type:** string · **Default:** multiScan2xx · **Maximum length:** 18 | #### [POST /FindMe](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-findme) Sets the device LEDs into blinking mode for better identification. **JSON example** ```json { "data": { "uiDuration": 100 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "uiDuration": 100 } ``` `uiDuration` **Type:** integer · **Minimum:** 1 **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) ### 4 - Basic Settings #### [GET /enableHighPrecisionMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-enablehighprecisionmode) Returns/sets the high precision mode (temporal moving averaging). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/enableHighPrecisionMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `enableHighPrecisionMode` **Type:** boolean · **Default:** false | #### [POST /enableHighPrecisionMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-enablehighprecisionmode) Returns/sets the high precision mode (temporal moving averaging). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "enableHighPrecisionMode": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `enableHighPrecisionMode` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /mStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-mstartmeasure) Starts motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStandby](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-mstandby) Disables the Laser. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStopMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-mstopmeasure) Stops motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/AutoStartMeasure" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | #### [POST /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "AutoStartMeasure": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /LEDState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ledstate) Returns the LED status. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LEDState` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [LedStateType](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-ledstatetype) | #### [GET /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ledenable) Returns/sets the LED mode (on/off). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | #### [POST /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-ledenable) Returns/sets the LED mode (on/off). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LEDEnable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /ScanConfig](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-scanconfig) Returns the configuration of angular resolution, scanning frequency and start angle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `udiScanFreq` | **Type:** integer · **Default:** 2000 · **Minimum:** 100 · **Maximum:** 2000 | | `ScanRange` | | `uiLength` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 1 | | `aThetaAngleRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiThetaAngleRes` | **Type:** integer · **Default:** 4700 · **Minimum:** 100 · **Maximum:** 100000 | | `diThetaStartAngle` | **Type:** integer · **Default:** -1380000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `diThetaStopAngle` | **Type:** integer · **Default:** 1380000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | | `aPhiAngleRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiPhiAngleRes` | **Type:** integer · **Default:** 4700 · **Minimum:** 100 · **Maximum:** 100000 | | `diPhiStartAngle` | **Type:** integer · **Default:** -225000 · **Minimum:** -450000 · **Maximum:** 450000 | | `diPhiStopAngle` | **Type:** integer · **Default:** 225000 · **Minimum:** -450000 · **Maximum:** 450000 | | | | #### [GET /PerformanceProfileNumber](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-performanceprofilenumber) Returns the scan configuration profile (scanning frequency and angular resolution). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PerformanceProfileNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PerformanceProfileNumber` **Fields:** [PerformanceProfiles_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-performanceprofiles-t) | #### [POST /SetScanConfigList](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setscanconfiglist) Sets the scan configuration profile (field of view, scanning frequency and angular resolution). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ScanConfigList": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ScanConfigList` **Fields:** [PerformanceProfiles_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-performanceprofiles-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `eScanConfigError` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SCE_OK * 1 - SCE_ERROR_FREQ * 2 - SCE_ERROR_RES * 3 - SCE_ERROR_FREQ_RES_COMB * 4 - SCE_ERROR_NUM_RANGE * 5 - SCE_ERROR * 6 - SCE_ERROR_NO_LICENSE | #### [GET /horizontalFieldOfViewCenterAngle](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-horizontalfieldofviewcenterangle) Returns/sets the horizontal field of view center angle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/horizontalFieldOfViewCenterAngle" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `horizontalFieldOfViewCenterAngle` **Type:** integer · **Default:** 0 · **Minimum:** -1800000 · **Maximum:** 1800000 | #### [POST /horizontalFieldOfViewCenterAngle](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-horizontalfieldofviewcenterangle) Returns/sets the horizontal field of view center angle. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "horizontalFieldOfViewCenterAngle": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `horizontalFieldOfViewCenterAngle` **Type:** integer · **Default:** 0 · **Minimum:** -1800000 · **Maximum:** 1800000 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /ambientPixelCountVertical](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ambientpixelcountvertical) Returns/sets the vertical ambient pixel count. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ambientPixelCountVertical" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ambientPixelCountVertical` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - FULL * 1 - MATCHING | #### [POST /ambientPixelCountVertical](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-ambientpixelcountvertical) Returns/sets the vertical ambient pixel count. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ambientPixelCountVertical": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ambientPixelCountVertical` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - FULL * 1 - MATCHING | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /SensitivityMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-sensitivitymode) Returns/sets the sensitivity of the receiver unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensitivityMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `SensitivityMode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - MAXIMUM_ROBUSTNESS * 1 - STANDARD * 2 - MAXIMUM_DETECTIVITY | #### [POST /SensitivityMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-sensitivitymode) Returns/sets the sensitivity of the receiver unit. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "SensitivityMode": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `SensitivityMode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - MAXIMUM_ROBUSTNESS * 1 - STANDARD * 2 - MAXIMUM_DETECTIVITY | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) ### 5 - Date and System Time #### [GET /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-tscrole) Returns/sets the time synchronization role (none, NTP or PTP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCRole" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | #### [POST /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-tscrole) Returns/sets the time synchronization role (none, NTP or PTP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCRole": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-tsctcsrvaddr) Returns/sets the IP address of the time server. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCSrvAddr" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-tsctcsrvaddr) Returns/sets the IP address of the time server. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCTCSrvAddr": [ 192, 168, 0, 11 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-tsctctimezone) Returns/sets the time zone of the device. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCtimezone" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | #### [POST /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-tsctctimezone) Returns/sets the time zone of the device. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCTCtimezone": 36 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-tsctcupdatetime) Returns/sets the update time of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCupdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | #### [POST /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-tsctcupdatetime) Returns/sets the update time of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "TSCTCupdatetime": 600 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /LSPdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-lspdatetime) Returns the current time of the device (years, months, days, hours, minutes, seconds, microseconds). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LSPdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LSPdatetime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-datetime-t) | #### [POST /LSPsetdatetime](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-lspsetdatetime) Sets the current time of the device in local time by using the time zone as defined in TSCTCtimezone (years, months, days, hours, minutes, seconds, microseconds). Does only work if NTP-Client and PTP is not active. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "DateTime": { "uiYear": 0, "usiMonth": 1, "usiDay": 1, "usiHour": 0, "usiMinute": 0, "usiSec": 0, "udiUSec": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-datetime-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /setDateTimeUTC](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setdatetimeutc) Preferred method to sets the current time of device in UTC (years, months, days, hours, minutes, seconds, microseconds). Does only work if NTP-Client and PTP is not active. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "DateTime": { "uiYear": 0, "usiMonth": 1, "usiDay": 1, "usiHour": 0, "usiMinute": 0, "usiSec": 0, "udiUSec": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-datetime-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 6 - Filter #### [GET /bloomingFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-bloomingfilter) Returns/sets the blooming filter. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/bloomingFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `strength` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - LOW * 1 - MEDIUM * 2 - STRONG | | `enable` | **Type:** boolean · **Default:** false | | #### [POST /bloomingFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-bloomingfilter) Returns/sets the blooming filter. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "bloomingFilter": { "strength": 1, "enable": false } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `bloomingFilter` | `strength` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - LOW * 1 - MEDIUM * 2 - STRONG | | `enable` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /particleFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-particlefilter) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snow, or similar. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/particleFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `enable` | **Type:** boolean · **Default:** false | | `minNumberOfNeighbors` | **Type:** integer · **Default:** 1 · **Maximum:** 8 | | `distanceThreshold` | **Type:** integer · **Default:** 500 · **Minimum:** 20 · **Maximum:** 2000 | | #### [POST /particleFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-particlefilter) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snow, or similar. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "particleFilter": { "enable": false, "minNumberOfNeighbors": 1, "distanceThreshold": 500 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `particleFilter` | `enable` | **Type:** boolean · **Default:** false | | `minNumberOfNeighbors` | **Type:** integer · **Default:** 1 · **Maximum:** 8 | | `distanceThreshold` | **Type:** integer · **Default:** 500 · **Minimum:** 20 · **Maximum:** 2000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment the sensor receives several measurement points on the same angular step (multi-echo). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FREchoFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 2 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO * 3 - STRONGEST_ECHO * 4 - ALL_ECHOS_STRONGEST_FIRST | #### [POST /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment the sensor receives several measurement points on the same angular step (multi-echo). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "FREchoFilter": 2 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 2 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO * 3 - STRONGEST_ECHO * 4 - ALL_ECHOS_STRONGEST_FIRST | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) ### 7 - Mounting Position #### [GET /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-sensorposition) Returns/sets the mounting position. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensorPosition" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | #### [POST /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-sensorposition) Returns/sets the mounting position. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "SensorPosition": { "x": 0, "y": 0, "z": 0, "yaw": 0, "pitch": 0, "roll": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `SensorPosition` | `x` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) ### 8 - Contamination indication #### [GET /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-contaminationconfig) Returns/sets of the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Default:** 3 · **Minimum:** 3 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 6, 255 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 6 - CM_COVER * 255 - CM_COVER_CUSTOM_SECTORS | | `CustomSectors` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** true | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | #### [POST /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-contaminationconfig) Returns/sets of the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "ContaminationConfig": { "eStrategy": 0, "usiResponseTime": 3, "eThreshold": 0, "eCover": 0, "CustomSectors": [], "bEnableWarning": true, "bEnableError": true } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `ContaminationConfig` | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Default:** 3 · **Minimum:** 3 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 6, 255 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 6 - CM_COVER * 255 - CM_COVER_CUSTOM_SECTORS | | `CustomSectors` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** true | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /ContaminationActiveSectors](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-contaminationactivesectors) Element i is true, if the sector result i is included in the computation of the contamination results and false otherwise. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationActiveSectors" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ContaminationActiveSectors` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** false | #### [GET /ContaminationData](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-contaminationdata) Returns the contamination state of all contamination sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationData" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ContaminationData` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - CM_DATA_NONE * 1 - CM_DATA_CLEAN * 2 - CM_DATA_WARN * 3 - CM_DATA_ERROR | #### [GET /ContaminationResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-contaminationresult) Returns the contamination indication state of the device. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bWarningActive` | **Type:** boolean · **Default:** false | | `bErrorActive` | **Type:** boolean · **Default:** false | | #### [GET /treatBlockedSectorsAsErrorSectors](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-treatblockedsectorsaserrorsectors) Returns/sets the state if blocked sectors are treated as blocked or contaminated sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/treatBlockedSectorsAsErrorSectors" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `treatBlockedSectorsAsErrorSectors` **Type:** boolean · **Default:** false | #### [POST /treatBlockedSectorsAsErrorSectors](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-treatblockedsectorsaserrorsectors) Returns/sets the state if blocked sectors are treated as blocked or contaminated sectors. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "treatBlockedSectorsAsErrorSectors": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `treatBlockedSectorsAsErrorSectors` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) ### 8 - Ethernet #### [GET /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheripaddress) Returns/sets the used static IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-etheripaddress) Returns/sets the used static IP address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherIPAddress": [ 192, 168, 0, 1 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheripgateaddress) Returns/sets the default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-etheripgateaddress) Returns/sets the default gateway address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherIPGateAddress": [ 0, 0, 0, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheripmask) Returns/sets the subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMask" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [POST /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-etheripmask) Returns/sets the subnet mask. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherIPMask": [ 255, 255, 255, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAddressingMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | #### [POST /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherAddressingMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherDHCPFallback" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | #### [POST /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherDHCPFallback": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /EthernetUpdate](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-ethernetupdate) Applies the Ethernet settings. This needs to be executed to actually change the Ethernet settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /EtherIPAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheripaddressdhcp) Returns the assigned DHCP IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPAddressDHCP` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [GET /EtherIPGateAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheripgateaddressdhcp) Returns the assigned DHCP default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddressDHCP` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [GET /EtherIPMaskDHCP](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etheripmaskdhcp) Returns the assigned DHCP subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMaskDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherIPMaskDHCP` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer | #### [GET /EtherMACAddress](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ethermacaddress) Returns the MAC address of the Ethernet interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherMACAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherMACAddress` **Default:** ``` [ 0, 6, 119, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** **Type:** integer | ### 9 - Inputs and Outputs #### [GET /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-portconfiguration) Returns/sets the port configuration of all I/Os. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-logic-t) | | `Debounce` | **Type:** integer · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Default:** 0 | | `Reserved2` | **Type:** integer · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Default:** 0 | | `Reserved4` | **Type:** integer · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Default:** 0 | | `Reserved6` | **Type:** integer · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Default:** 0 | | `Reserved9` | **Type:** integer · **Default:** 0 | | `Reserved10` | **Type:** integer · **Default:** 0 | | #### [POST /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-portconfiguration) Returns/sets the port configuration of all I/Os. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "PortConfiguration": [ { "PortType": 0, "Name": "IOx", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 0, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "EncoderPortType": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-logic-t) | | `Debounce` | **Type:** integer · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Default:** 0 | | `Reserved2` | **Type:** integer · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Default:** 0 | | `Reserved4` | **Type:** integer · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Default:** 0 | | `Reserved6` | **Type:** integer · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Default:** 0 | | `Reserved9` | **Type:** integer · **Default:** 0 | | `Reserved10` | **Type:** integer · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /SetOutput](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setoutput) Sets the output state for an individual output. Precondition is to set the output source to "SOPAS command". **Editable JSON template** ```json { "data": { "Output": "", "Value": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `Output` | **Type:** integer | | --- | --- | | `Value` | **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [GET /InputState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-inputstate) Returns the state of all inputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Default:** 1 | | `udiSystCount` | **Type:** integer | | `aDigitalIn` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** `IOState` **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-iostate-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-datetime-t) | | #### [GET /OutputState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-outputstate) Returns the state of all outputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OutputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Default:** 1 | | `udiSystCount` | **Type:** integer | | `aDigitalOut` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `IOState` | **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-iostate-t) | | `udiCounter` | **Type:** integer | | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-datetime-t) | | --- | --- | | #### [GET /PortState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-portstate) Returns the state of the ports. "PortState" is preferred over "OutputState". **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer | | `udiSystCount` | **Type:** integer | | `aInternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-portstateandcounter-t) | | `aExternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-portstateandcounter-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-datetime-t) | | #### [POST /mResetOutputCounter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-mresetoutputcounter) Resets the counter for the outputs. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /temperatureAlarmConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-temperaturealarmconfiguration) Returns/sets temperature alarm thresholds. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/temperatureAlarmConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `upperThreshold` | **Type:** integer · **Default:** 55 | | `lowerThreshold` | **Type:** integer · **Default:** 50 | | #### [GET /temperatureAlarmStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-temperaturealarmstatus) Returns the current temperature alarm status. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/temperatureAlarmStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `temperatureAlarmStatus` **Type:** boolean · **Default:** false | ### 10 - Measurement Data Output #### [GET /dataOutputMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-dataoutputmode) Returns/sets the data output mode (e.g. Compact format) or disables scan data transmission. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/dataOutputMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `dataOutputMode` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - DISABLED * 1 - TCP_COMPACT * 3 - NATIVE_ROS_2 | #### [POST /dataOutputMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-dataoutputmode) Returns/sets the data output mode (e.g. Compact format) or disables scan data transmission. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "dataOutputMode": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `dataOutputMode` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Default:** 1 Mapping: * 0 - DISABLED * 1 - TCP_COMPACT * 3 - NATIVE_ROS_2 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /compactTelegramType6Content](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-compacttelegramtype6content) Return/sets the optional channels in the scan data compact telegram type 6 (muls270 specific compact format.). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/compactTelegramType6Content" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `includeRssi` | **Type:** boolean · **Default:** true | | `includeProperties` | **Type:** boolean · **Default:** false | | `includeAmbientLight` | **Type:** boolean · **Default:** true | | `reserved` | **Type:** boolean · **Default:** false | | #### [POST /compactTelegramType6Content](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-compacttelegramtype6content) Return/sets the optional channels in the scan data compact telegram type 6 (muls270 specific compact format.). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "compactTelegramType6Content": { "includeRssi": true, "includeProperties": false, "includeAmbientLight": true, "reserved": false } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `compactTelegramType6Content` | `includeRssi` | **Type:** boolean · **Default:** true | | `includeProperties` | **Type:** boolean · **Default:** false | | `includeAmbientLight` | **Type:** boolean · **Default:** true | | `reserved` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /rosFrameId](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-rosframeid) Returns/sets the frame ID of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosFrameId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `rosFrameId` **Type:** string · **Default:** multiScan200_ · **Maximum length:** 64 | #### [POST /rosFrameId](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-rosframeid) Returns/sets the frame ID of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "rosFrameId": "multiScan200_" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `rosFrameId` **Type:** string · **Default:** multiScan200_ · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /rosParentFrameId](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-rosparentframeid) Returns/sets the parent frame ID of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosParentFrameId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `rosParentFrameId` **Type:** string · **Default:** world · **Maximum length:** 64 | #### [POST /rosParentFrameId](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-rosparentframeid) Returns/sets the parent frame ID of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "rosParentFrameId": "world" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `rosParentFrameId` **Type:** string · **Default:** world · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /rosPointCloud2Content](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-rospointcloud2content) Returns/sets the content of the published PointCloud2 topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosPointCloud2Content" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `includeRssi` | **Type:** boolean · **Default:** false | | `includeProperties` | **Type:** boolean · **Default:** false | | `includeTimeOffset` | **Type:** boolean · **Default:** false | | `includeRing` | **Type:** boolean · **Default:** false | | #### [POST /rosPointCloud2Content](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-rospointcloud2content) Returns/sets the content of the published PointCloud2 topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "rosPointCloud2Content": { "includeRssi": false, "includeProperties": false, "includeTimeOffset": false, "includeRing": false } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `rosPointCloud2Content` | `includeRssi` | **Type:** boolean · **Default:** false | | `includeProperties` | **Type:** boolean · **Default:** false | | `includeTimeOffset` | **Type:** boolean · **Default:** false | | `includeRing` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /rosNamespace](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-rosnamespace) Returns/sets the namespace of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosNamespace" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `rosNamespace` **Type:** string · **Default:** · **Maximum length:** 64 | #### [POST /rosNamespace](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-rosnamespace) Returns/sets the namespace of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "rosNamespace": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `rosNamespace` **Type:** string · **Default:** · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /rosDomainId](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-rosdomainid) Returns/sets the ros domain ID. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosDomainId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `rosDomainId` **Type:** integer · **Default:** 0 · **Maximum:** 232 | #### [POST /rosDomainId](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-rosdomainid) Returns/sets the ros domain ID. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "rosDomainId": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `rosDomainId` **Type:** integer · **Default:** 0 · **Maximum:** 232 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /InertialMeasurementUnit](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-inertialmeasurementunit) Returns the current IMU data (e.g. Acceleration, Orientation, ... ). The data is given in the following coordinate system which is based on the DIN70000 system. The x-axis lies on the 90-degree-beam of the 0-degree-layer. The y-axis is perpendicular to the x-axis and lies in the 0-degree-layer. The y-values are rising in the counterclockwise rotation direction (right-handed system). The z-axis is perpendicular to the x-y-plane and the scanner top points to rising z-values. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InertialMeasurementUnit" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `Acceleration` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 3 **Items:** **Type:** number · **Default:** 0.0 | | `AngularVelocity` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 3 **Items:** **Type:** number · **Default:** 0.0 | | `Orientation` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** number · **Default:** 0.0 | | `TimeStamp` | **Type:** integer | | ### 11 - Data Reduction #### [GET /LFPintervalFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-lfpintervalfilter) Returns/sets the interval filter settings. The filter reduces the scan output rate by a given factor. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPintervalFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiReductionFactor` | **Type:** integer · **Default:** 2 · **Minimum:** 2 · **Maximum:** 50 | | #### [POST /LFPintervalFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-lfpintervalfilter) Returns/sets the interval filter settings. The filter reduces the scan output rate by a given factor. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "LFPintervalFilter": { "bEnable": false, "uiReductionFactor": 2 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `LFPintervalFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiReductionFactor` | **Type:** integer · **Default:** 2 · **Minimum:** 2 · **Maximum:** 50 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /angleRangeFocusFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-anglerangefocusfilter) Returns/sets the angle range focus filter settings. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/angleRangeFocusFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `enable` | **Type:** boolean · **Default:** false | | `thetaStart` | **Type:** integer · **Default:** -900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `thetaStop` | **Type:** integer · **Default:** 900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `phiStart` | **Type:** integer · **Default:** -250000 · **Minimum:** -900000 · **Maximum:** 900000 | | `phiStop` | **Type:** integer · **Default:** 250000 · **Minimum:** -900000 · **Maximum:** 900000 | | `thetaIndexIncrement` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 50 | | `phiIndexIncrement` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 50 | | `focusRegion` | | `enable` | **Type:** boolean · **Default:** false | | `direction` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - HORIZONTAL * 1 - VERTICAL | | `thetaStart` | **Type:** integer · **Default:** -450000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `thetaStop` | **Type:** integer · **Default:** 450000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `phiStart` | **Type:** integer · **Default:** -100000 · **Minimum:** -900000 · **Maximum:** 900000 | | `phiStop` | **Type:** integer · **Default:** 100000 · **Minimum:** -900000 · **Maximum:** 900000 | | | #### [POST /angleRangeFocusFilter](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-anglerangefocusfilter) Returns/sets the angle range focus filter settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "angleRangeFocusFilter": { "enable": false, "thetaStart": -900000, "thetaStop": 900000, "phiStart": -250000, "phiStop": 250000, "thetaIndexIncrement": 1, "phiIndexIncrement": 1, "focusRegion": { "enable": false, "direction": 0, "thetaStart": -450000, "thetaStop": 450000, "phiStart": -100000, "phiStop": 100000 } } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `angleRangeFocusFilter` | `enable` | **Type:** boolean · **Default:** false | | `thetaStart` | **Type:** integer · **Default:** -900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `thetaStop` | **Type:** integer · **Default:** 900000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `phiStart` | **Type:** integer · **Default:** -250000 · **Minimum:** -900000 · **Maximum:** 900000 | | `phiStop` | **Type:** integer · **Default:** 250000 · **Minimum:** -900000 · **Maximum:** 900000 | | `thetaIndexIncrement` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 50 | | `phiIndexIncrement` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 50 | | `focusRegion` | | `enable` | **Type:** boolean · **Default:** false | | `direction` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - HORIZONTAL * 1 - VERTICAL | | `thetaStart` | **Type:** integer · **Default:** -450000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `thetaStop` | **Type:** integer · **Default:** 450000 · **Minimum:** -1800000 · **Maximum:** 1800000 | | `phiStart` | **Type:** integer · **Default:** -100000 · **Minimum:** -900000 · **Maximum:** 900000 | | `phiStop` | **Type:** integer · **Default:** 100000 · **Minimum:** -900000 · **Maximum:** 900000 | | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) ### 12 - Operating Data #### [GET /LastParaDate](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-lastparadate) Returns the last date (e.g. 12.11.2024) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaDate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LastParaDate` **Type:** string · **Default:** DD.MM.YYYY · **Maximum length:** 10 | #### [GET /LastParaTime](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-lastparatime) Returns the last time (e.g. 13:24) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `LastParaTime` **Type:** string · **Default:** HH:MM · **Maximum length:** 5 | #### [GET /PowerOnCnt](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-poweroncnt) Returns the number of power on cycles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PowerOnCnt" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `PowerOnCnt` **Type:** integer · **Default:** 0 | #### [GET /DailyOpHours](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-dailyophours) Returns the runtime duration since the last power on (non-persistent). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DailyOpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `DailyOpHours` **Type:** number · **Default:** 0.0 | #### [GET /OpHours](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ophours) Returns the total number of operating hours during the lifetime of the device. The resolution is 1/10 hour. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `OpHours` **Type:** integer · **Default:** 0 | #### [GET /CurrentTempDev](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-currenttempdev) Returns the current device temperature. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CurrentTempDev" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `CurrentTempDev` **Type:** number · **Default:** 20.0 | ### 13 - Diagnostics #### [GET /crown/file](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-crown-file) Downloads the diagnostic file (zip file) if one exists. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/crown/file?filePath=diagnosisDump.zip" ``` **Parameters** **`filePath`** **Location:** query **Required:** true path **Type:** string · **Example:** diagnosisDump.zip **Responses** **Status `200`** **Media type: `application/zip`** **Type:** string · **Format:** binary **Status `400`** bad operation **Status `404`** file not found **Status `500`** Server not found #### [POST /DoDiagnosisDump](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-dodiagnosisdump) Creates a diagnostic file (zip file) for further analysis. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "DoRunlevelLoop": true, "Output": "file" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "DoRunlevelLoop": true, "Output": "file" } ``` | `DoRunlevelLoop` | **Type:** boolean · **Default:** false | | `Output` | **Type:** string · **Default:** · **Maximum length:** 64 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Successful` **Type:** boolean · **Default:** false | #### [POST /GetDiagnosisDumpInfo](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-getdiagnosisdumpinfo) Returns additional meta-information about the diagnostic file. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `DiagDumpExists` | **Type:** boolean · **Default:** false | | `DiagDumpTimestamp` | **Type:** integer | | ### 14 - Cybersecurity #### [GET /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled CoLa A uses port 2111 and CoLa B uses 2112. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxEnabled" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** false | #### [POST /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled CoLa A uses port 2111 and CoLa B uses 2112. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherAuxEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherCoLaScanMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | #### [POST /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EtherCoLaScanMode": 3 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [GET /httpsStatus](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-httpsstatus) Returns the status of the HTTPS interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/httpsStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `enabled` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-httpserror-t) | | #### [GET /certificateBundleInfo](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-certificatebundleinfo) Returns information about the uploaded certificate bundle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/certificateBundleInfo" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `uuidBundle` | **Type:** string · **Default:** · **Maximum length:** 100 | | `certificates` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** | `names` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** `entry` **Type:** string · **Default:** · **Maximum length:** 1000 | | `issuer` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `subject` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `serialNumber` | **Type:** string · **Default:** · **Maximum length:** 119 | | `fingerprint` | **Type:** string · **Default:** · **Maximum length:** 119 | | `validNotBefore` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | `validNotAfter` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-httpserror-t) | | --- | --- | | #### [POST /removeCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-removecertificatebundle) Removes the uploaded certificate bundle. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-httpserror-t) | | #### [POST /setCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setcertificatebundle) Uploads a certificate bundle in the PEM format via JSON. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "contentCertificateBundle": " ", "contentPrivateKey": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `contentCertificateBundle` | **Type:** string · **Default:** · **Maximum length:** 10000 | | `contentPrivateKey` | **Type:** string · **Default:** · **Maximum length:** 4000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-httpserror-t) | | #### [POST /SetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setwebserverenabled) Sets the availability of the web server (reboot required). If disabled, the web server-based GUI and the REST interface cannot be used anymore. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "Enable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `Enable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) #### [POST /GetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-getwebserverenabled) Returns the availability of the web server. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `IsEnabled` **Type:** boolean · **Default:** true | ### 15 - Field evaluation #### [GET /FieldEvaluationResult](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-fieldevaluationresult) Returns the state of all possible fields. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationResult` **Fields:** [FieldEvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-fieldevaluationresult-t) | #### [POST /ActivateEvaluationGroup](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-activateevaluationgroup) Sets the activation condition for all existing evaluation groups (not configured, active, or inactive). **JSON example** ```json { "data": { "List": [ { "GroupId": 1, "Activate": true }, { "GroupId": 2, "Activate": false }, { "GroupId": 3, "Activate": true } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "List": [ { "Activate": true, "GroupId": 1 }, { "Activate": false, "GroupId": 2 }, { "Activate": true, "GroupId": 3 } ] } ``` `List` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `GroupId` | **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | | `Activate` | **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Success` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** false | #### [POST /SetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setfieldevaluationcontour) Sets the contour of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": 1, "LowerZLimit": 0, "UpperZLimit": 0, "Points": [ { "x": 0, "y": -1000 }, { "x": 1000, "y": -1000 }, { "x": 1000, "y": 1000 }, { "x": 0, "y": 1000 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "EvaluationId": 1, "LowerZLimit": 0, "Points": [ { "x": 0, "y": -1000 }, { "x": 1000, "y": -1000 }, { "x": 1000, "y": 1000 }, { "x": 0, "y": 1000 } ], "UpperZLimit": 0 } ``` | `EvaluationId` | **Type:** integer | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Default:** 0 | | `y` | **Type:** integer | | | `LowerZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_POLYGON * 3 - SOPAS_ERR_INVALID_ZLIM | #### [POST /GetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-getfieldevaluationcontour) Returns the contour of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EvaluationId` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Contour` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Default:** 0 | | `y` | **Type:** integer · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Minimum:** -100000 · **Maximum:** 100000 | | #### [POST /SetFieldEvaluationConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-setfieldevaluationconfiguration) Sets the configuration of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": "", "Name": " ", "Configuration": { "Version": 1, "Source": 0, "Name": " ", "ID": 1, "EvaluationParamsMaskBased": [ { "InfringementThresholdFactor": 80 } ], "EvaluationParamsSegmentationBased": [ { "SampleParam1": "" } ], "EvaluationParamsCommon": [ { "MinimumObjectSizeHorizontal": 200, "MinimumObjectSizeVertical": 200, "OcclusionHandling": false, "TreatMissingDataAsInfringed": false, "TimeForInfringedState": 300, "TimeForFreeState": 50, "Reserved3": "", "Reserved4": "" } ], "EvaluationParamsExitSize": [ { "disableExitSize": false, "exitSizeVertical": 70, "exitSizeHorizontal": 100 } ], "VolumeList": [] } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | | `EvaluationId` | **Type:** integer | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `Configuration` | **Fields:** [Evaluation_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-evaluation-t) | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_CONFIGURATION | #### [POST /GetFieldEvaluationConfiguration](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-post-getfieldevaluationconfiguration) Returns the configuration of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "AuthorizedClient" }, "data": { "EvaluationId": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-postbodyheader) | | --- | --- | | `data` | `EvaluationId` **Type:** integer | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `Configuration` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `Configuration` | **Fields:** [Evaluation_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-evaluation-t) | | #### [GET /EvaluationConfigState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-evaluationconfigstate) Returns the performance state (OK, WARNING, EXCEEDED) of an evaluation config. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationConfigState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | | `ActiveBeamsLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `ActiveEvaluationsLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `ActiveBeamsPerEvaluationLimit` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - OK * 1 - WARNING * 2 - EXCEEDED | | `NumberOfIntersectingBeams` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** integer | | `InputIsOutputErrorList` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** integer | | #### [GET /FieldEvaluationGroupState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-fieldevaluationgroupstate) Returns the activation condition for all existing evaluation groups (not configured, active, or inactive). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationGroupState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationGroupState` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - ACTIVE * 2 - INACTIVE | #### [GET /FieldEvaluationApplicationState](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#rest-get-fieldevaluationapplicationstate) Returns the state (DEACTIVATED, ACTIVE, CONFIGURING, ERROR) of the field evaluation. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationApplicationState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationApplicationState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - DEACTIVATED * 1 - ACTIVE * 2 - CONFIGURING * 3 - ERROR | ### Shared request and response fields #### ResponseHeader | `status` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Ok * 1 - Parsing Failed * 2 - Invalid Data * 3 - Internal Server Error * 4 - Access Denied * 5 - Not Found * 6 - Out Of Range * 7 - Out Of Bounds * 8 - Read Only * 9 - Illegal Value * 10 - Invalid Challenge * 11 - Out Of Connections | | --- | --- | | `message` | **Type:** string · **Default:** Ok | #### PostBodyHeader | `nonce` | **Type:** string · **Default:** | | --- | --- | | `opaque` | **Type:** string · **Default:** | | `realm` | **Type:** string · **Default:** SICK Sensor | | `response` | **Type:** string · **Default:** | | `user` | **Type:** string · **Default:** AuthorizedClient | #### E_USER_LEVEL_TYPE **Allowed values:** ``` [ "Run", "Operator", "Maintenance", "AuthorizedClient", "Service" ] ``` **Type:** string · **Default:** Run #### RestoreBackupResult **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - Ok * 1 - ChecksumError * 2 - ParseError * 3 - DeviceIdentificationError * 4 - UpdateRepositoryError * 5 - UpdateSourceError * 6 - DecryptionError * 7 - DecryptionHeaderError * 8 - DecryptionLengthError * 9 - IoError * 10 - VersionConversionError * 50 - ComponentRegistryError #### DeviceStatus **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - DS_UnknownState * 1 - DS_Startup * 2 - DS_ServiceMode * 3 - DS_NormalOperation * 4 - DS_SuspendedOperation * 5 - DS_ServiceRecommended * 6 - DS_ServiceRequired * 7 - DS_RecoverableError * 8 - DS_FatalError #### httpsError_t `error` **Type:** string · **Default:** · **Maximum length:** 100 #### Logic_t **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - ACTIVE_HIGH * 1 - ACTIVE_LOW #### IOState_t `eIOState` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 2 Mapping: * 0 - IOS_LOW * 1 - IOS_HIGH * 2 - IOS_TRISTATE #### PortStateAndCounter_t | `ePortState` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Default:** 2 Mapping: * 0 - OUTPUT_NOT_ACTIVE * 1 - OUTPUT_ACTIVE * 2 - TRISTATE * 3 - INPUT_ACTIVE * 4 - INPUT_NOT_ACTIVE | | --- | --- | | `PortCounter` | **Type:** integer | #### DateTime_t | `uiYear` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 2105 | | --- | --- | | `usiMonth` | **Type:** integer · **Default:** 1 · **Minimum:** 0 · **Maximum:** 12 | | `usiDay` | **Type:** integer · **Default:** 1 · **Minimum:** 0 · **Maximum:** 31 | | `usiHour` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 23 | | `usiMinute` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `usiSec` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `udiUSec` | **Type:** integer · **Default:** 0 · **Minimum:** 0 · **Maximum:** 999999 | #### LedStateType | `Color` | **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - GREEN * 1 - YELLOW * 2 - RED * 3 - WHITE | | --- | --- | | `Function` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - ON * 1 - OFF * 2 - BLINKING * 3 - BLINKING_FAST * 4 - BLINKING_DELAYED * 5 - BLINKING_COLOR * 6 - BLINKING_YELLOW_RED | | `Id` | **Type:** string · **Default:** · **Maximum length:** 8 | #### Evaluation_t | `Version` | **Type:** integer · **Default:** 1 | | --- | --- | | `Source` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - STANDARD * 1 - HIGHRES_6 * 2 - HIGHRES_14 | | `Name` | **Type:** string · **Default:** · **Maximum length:** 20 | | `ID` | **Type:** integer · **Default:** 1 | | `EvaluationParamsMaskBased` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** `InfringementThresholdFactor` **Type:** integer · **Default:** 80 · **Minimum:** 1 · **Maximum:** 100 | | `EvaluationParamsSegmentationBased` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** `SampleParam1` **Type:** integer | | `EvaluationParamsCommon` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `MinimumObjectSizeHorizontal` | **Type:** integer · **Default:** 200 · **Minimum:** 0 · **Maximum:** 5000 | | `MinimumObjectSizeVertical` | **Type:** integer · **Default:** 200 · **Minimum:** 0 · **Maximum:** 5000 | | `OcclusionHandling` | **Type:** boolean · **Default:** false | | `TreatMissingDataAsInfringed` | **Type:** boolean · **Default:** false | | `TimeForInfringedState` | **Type:** integer · **Default:** 300 · **Minimum:** 1 · **Maximum:** 10000 | | `TimeForFreeState` | **Type:** integer · **Default:** 50 · **Minimum:** 1 · **Maximum:** 10000 | | `Reserved3` | **Type:** integer | | `Reserved4` | **Type:** integer | | | `EvaluationParamsExitSize` | **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `disableExitSize` | **Type:** boolean · **Default:** false | | `exitSizeVertical` | **Type:** integer · **Default:** 70 · **Minimum:** 0 · **Maximum:** 100 | | `exitSizeHorizontal` | **Type:** integer · **Default:** 100 · **Minimum:** 0 · **Maximum:** 100 | | | `VolumeList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Type:** integer · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | #### EvaluationResult_t `State` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - INACTIVE * 2 - FREE * 3 - DETECTING_INFRINGED * 4 - INFRINGED * 5 - DETECTING_FREE #### FieldEvaluationResult_t | `Version` | **Type:** integer · **Default:** 1 | | --- | --- | | `Timestamp` | **Type:** integer | | `EvaluationResultList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Fields:** [EvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/#schema-evaluationresult-t) | #### PerformanceProfiles_t **Allowed values:** ``` [ 1, 2, 3, 4, 10, 11, 12, 20, 21 ] ``` **Type:** integer · **Default:** 1 Mapping: * 1 - SC_047h_047v_276_20Hz_1x * 2 - SC_047h_094v_276_20Hz_1x * 3 - SC_047h_023v_276_20Hz_1x * 4 - SC_047h_047v_360_10Hz_1x * 10 - SC_023h_047v_276_20Hz_2x * 11 - SC_023h_023v_276_20Hz_2x * 12 - SC_012h_023v_276_20Hz_4x * 20 - SC_047h_047v_190_20Hz_1x * 21 - SC_047h_047v_120_20Hz_1x #### SessionToken **Type:** string · **Default:** · **Maximum length:** 36 --- # multiScan200 API | CoLa Telegrams (CoLa A and CoLa B) > multiScan200 CoLa telegram reference with sRN, sWN, sMN, and sEN commands, parameter structures, and CoLa A and CoLa B examples. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/ # API | CoLa Telegrams This reference lists the CoLa telegrams supported by the multiScan200. Use the command details to build or troubleshoot PLC and other low-level integrations without guessing the telegram structure. Examples are grouped by protocol, with each telegram representation in a separate code block and its own copy button. Categories follow the [multiScan200 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) where corresponding CoLa telegrams are available. Select a telegram to expand its structure and examples. A direct link to a telegram opens it automatically. The categories organize the reference; availability still depends on the device variant, firmware, and installed software packages.
## General
### Log In [sMN SetAccessMode] The password hashes of the default passwords are documented in the operating instructions (PDF) of your device. Do not pass them on, and change the passwords during commissioning. A log in to the device is necessary to change parameters. In most cases, the user level 'Authorized client' is needed. On delivery, only the Service user level is enabled; until a Service user enables Maintenance or Authorized client, the device answers a log in with these levels with `sAN SetAccessMode 0` (see [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/)). Changed parameters will be reset to the previous state via a reboot unless they are saved. To save parameter changes the command "sMN mEEwriteall" must be sent before log out. **Telegram structure: sMN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | User level | Select user level | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value for the selected user level | Uint_32 | 4 | Maintenance:
Authorized client:
Service: | `` | `` | **Example: sMN SetAccessMode - Log in as “Authorized client”** **CoLa A (ASCII)** ```text sMN{SPC}SetAccessMode{SPC}3{SPC} ``` ```text sMN SetAccessMode 3 ``` **Telegram structure: sAN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | Change user level | Changed level | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN SetAccessMode** **CoLa A (ASCII)** ```text sAN{SPC}SetAccessMode{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 01 38 ```
### Enable or Disable CoLa User Levels [sMN EnableLegacyUserLevel] This command enables and disables a specific CoLa user level (Maintenance, Authorized Client). **Telegram structure: sMN EnableLegacyUserLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Enable/ disable CoLa user level | String | 21 | | `EnableLegacyUserLevel` | `45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C` | | User level | - | Uint_8 | 1 | Maintenance:
Authorized Client: | `2
3` | `02
03` | | Status | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sMN EnableLegacyUserLevel - Enable Authorized client** **CoLa A (ASCII)** ```text sMN{SPC}EnableLegacyUserLevel{SPC}3{SPC}1 ``` ```text sMN EnableLegacyUserLevel 3 1 ``` ```text 02 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 33 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 03 01 01 ``` ```text 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 03 01 ``` **Telegram structure: sAN EnableLegacyUserLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Enable/ disable CoLa user level | String | 21 | | `EnableLegacyUserLevel` | `45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C` | | Status code | Confirmation | Bool_1 | 1 | unsuccessful:
successful: | `0
1` | `00
01` | **Example: sAN EnableLegacyUserLevel** **CoLa A (ASCII)** ```text sAN{SPC}EnableLegacyUserLevel{SPC}1 ``` ```text 02 73 41 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 41 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 01 0E ```
### Load Factory Defaults [sMN mSCloadfacdef] The Factory-Reset (Load factory defaults) deletes the entire parametrization of the device. All parameters, settings and system applications will be set to default. Required user level: Authorized client. **Telegram structure: sMN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` | **Example: sMN mSCloadfacdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadfacdef ``` ```text sMN mSCloadfacdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 28 ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 ``` **Telegram structure: sAN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` |
### Load Application Defaults [sMN mSCloadappdef] The Application-Reset (Load application defaults) deletes only the user parametrization of the Fields, Evaluation cases (EVC) and parameters under the header “Application”. Other parameters like Interface settings, Echo Filter, etc. remain unaffected. Required user level: Authorized client. **Telegram structure: sMN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sMN mSCloadappdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadappdef ``` ```text sMN mSCloadappdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 2D ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 ``` **Telegram structure: sAN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` |
### Change Password [sMN SetPassword] Change the log in password of a user level. If you are logged in with a higher user level, you can also set the password of lower user levels. The password is sent as a hash value. To calculate it, log in to SOPASair as Service and open **Diagnosis > Cybersecurity > Hash calculator**. For example, the hash value of the password `testtest` is `1920E4C9`. **Telegram structure: sMN SetPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set password request | String | 11 | | `SetPassword` | `53 65 74 50 61 73 73 77 6F 72 64` | | User level | User level that the password will be applied to | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value of the new password | Uint_32 | 4 | | `` | | **Example: sMN SetPassword - Set the Authorized client password to "testtest"** **CoLa A (ASCII)** ```text sMN{SPC}SetPassword{SPC}3{SPC}1920E4C9 ``` ```text sMN SetPassword 3 1920E4C9 ``` ```text 02 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 33 20 31 39 32 30 45 34 43 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 1A ``` ```text 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 ``` **Telegram structure: sAN SetPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set password requested | String | 11 | | `SetPassword` | `53 65 74 50 61 73 73 77 6F 72 64` | | Success | Confirmation | Int_8 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN SetPassword** **CoLa A (ASCII)** ```text sAN{SPC}SetPassword{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 01 00 ```
### Save Parameters Permanently [sMN mEEwriteall] Save all parameter changes of the device. Must be sent before logging off and/ or a hardware reboot of the device, else all changes will be lost. **Telegram structure: sMN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | **Example: sMN mEEwriteall** **CoLa A (ASCII)** ```text sMN{SPC}mEEwriteall ``` ```text sMN mEEwriteall ``` ```text 02 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 21 ``` ```text 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C ``` **Telegram structure: sAN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mEEwriteall** **CoLa A (ASCII)** ```text sAN{SPC}mEEwriteall{SPC}1 ``` ```text 02 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 01 0C ```
### Set to Run [sMN Run] Log out from device and activate all parameter changes. **Telegram structure: sMN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | **Example: sMN Run** **CoLa A (ASCII)** ```text sMN{SPC}Run ``` ```text sMN Run ``` ```text 02 73 4D 4E 20 52 75 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 07 73 4D 4E 20 52 75 6E 19 ``` ```text 73 4D 4E 20 52 75 6E ``` **Telegram structure: sAN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN Run** **CoLa A (ASCII)** ```text sAN{SPC}Run{SPC}1 ``` ```text 02 73 41 4E 20 52 75 6E 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 09 73 41 4E 20 52 75 6E 20 01 34 ```
### Reboot Device [sMN mSCreboot] Restart the device. Required user level: Authorized client. **Telegram structure: sMN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sMN mSCreboot** **CoLa A (ASCII)** ```text sMN{SPC}mSCreboot ``` ```text sMN mSCreboot ``` ```text 02 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 2C ``` ```text 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 ``` **Telegram structure: sAN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` |
### Soft Reset the Device [sMN mSCsoftreset] Performs a soft reset of the device without power cycle. Applies pending configuration changes. Required user level: Authorized client. **Telegram structure: sMN mSCsoftreset** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | Method executes a software reset on the device | String | 12 | | `mSCsoftreset` | `6D 53 43 73 6F 66 74 72 65 73 65 74` | | ProcessorNbr | | Uint_16 | 2 | | `0` | `00 00` | **Example: sMN mSCsoftreset** **CoLa A (ASCII)** ```text sMN{SPC}mSCsoftreset{SPC}0 ``` ```text sMN mSCsoftreset 0 ``` ```text 02 73 4D 4E 20 6D 53 43 73 6F 66 74 72 65 73 65 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 4D 4E 20 6D 53 43 73 6F 66 74 72 65 73 65 74 20 00 00 76 ``` ```text 73 4D 4E 20 6D 53 43 73 6F 66 74 72 65 73 65 74 20 00 00 ``` **Telegram structure: sAN mSCsoftreset** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 12 | | `mSCsoftreset` | `6D 53 43 73 6F 66 74 72 65 73 65 74` |
## Status
### Read Device State [sRN DevSta] Read the device state: startup, service mode, normal operation, suspended operation (conditions prevent adequate measurement), service recommended, service required, recoverable error, or fatal error (the device must be replaced). **Telegram structure: sRN DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the current device state | String | 6 | | `DevSta` | `44 65 76 53 74 61` | **Example: sRN DevSta** **CoLa A (ASCII)** ```text sRN{SPC}DevSta ``` ```text sRN DevSta ``` ```text 02 73 52 4E 20 44 65 76 53 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 65 76 53 74 61 5E ``` ```text 73 52 4E 20 44 65 76 53 74 61 ``` **Telegram structure: sRA DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the current device state | String | 6 | | `DevSta` | `44 65 76 53 74 61` | | Status code | Code number | Enum_8 | 1 | Reserved:
Startup:
Service mode:
Normal operation:
Suspended operation:
Service recommended:
Service required:
Recoverable error:
Fatal error: | `0
1
2
3
4
5
6
7
8` | `00
01
02
03
04
05
06
07
08` | **Example: sRA DevSta** **CoLa A (ASCII)** ```text sRA{SPC}DevSta{SPC}3 ``` ```text 02 73 52 41 20 44 65 76 53 74 61 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 41 20 44 65 76 53 74 61 20 03 72 ```
### Read Device Ready State [sRN SCdevicestate] Read whether the device is busy, ready, or in error. **Telegram structure: sRN SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | **Example: sRN SCdevicestate** **CoLa A (ASCII)** ```text sRN{SPC}SCdevicestate ``` ```text sRN SCdevicestate ``` ```text 02 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 30 ``` ```text 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 ``` **Telegram structure: sRA SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | | Status code | Code number | Enum_8 | 1 | Busy / logged-in:
Ready:
Error: | `0
1
2` | `00
01
02` | **Example: sRA SCdevicestate** **CoLa A (ASCII)** ```text sRA{SPC}SCdevicestate{SPC}1 ``` ```text 02 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 1E ```
## Device Information
### Read Device Identification [sRN DeviceIdent] Read the device family and the firmware version. **Telegram structure: sRN DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read firmware version | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | **Example: sRN DeviceIdent** **CoLa A (ASCII)** ```text sRN{SPC}DeviceIdent ``` ```text sRN DeviceIdent ``` ```text 02 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 25 ``` ```text 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 ``` **Telegram structure: sRA DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | | Device name length | Number of characters of device name | Uint_16 | 2 | 0 … 34 | `C` | `00 0C` | | Device name | Device family | String | Length | Maximum 34 characters | `multiScan200` | `6D 75 6C 74 69 53 63 61 6E 32 30 30` | | Firmware version length | Number of characters of firmware version | Uint_16 | 2 | 0 … 34 | `8` | `00 08` | | Firmware version | Firmware version | String | Length | Maximum 34 characters | `1.1.0.0R` | `31 2E 31 2E 30 2E 30 52` | **Example: sRA DeviceIdent** **CoLa A (ASCII)** ```text sRA{SPC}DeviceIdent{SPC}C{SPC}multiScan200{SPC}8{SPC}1.1.0.0R ``` ```text 02 73 52 41 20 44 65 76 69 63 65 49 64 65 6E 74 20 43 20 6D 75 6C 74 69 53 63 61 6E 32 30 30 20 38 20 31 2E 31 2E 30 2E 30 52 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 28 73 52 41 20 44 65 76 69 63 65 49 64 65 6E 74 20 00 0C 6D 75 6C 74 69 53 63 61 6E 32 30 30 00 08 31 2E 31 2E 30 2E 30 52 16 ```
### Read Firmware Version [sRN FirmwareVersion] Read the version of the application software. **Telegram structure: sRN FirmwareVersion** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read version of the application software | String | 15 | | `FirmwareVersion` | `46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E` | **Example: sRN FirmwareVersion** **CoLa A (ASCII)** ```text sRN{SPC}FirmwareVersion ``` ```text sRN FirmwareVersion ``` ```text 02 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 24 ``` ```text 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E ``` **Telegram structure: sRA FirmwareVersion** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read version of the application software | String | 15 | | `FirmwareVersion` | `46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E` | | Version length | Number of characters of version | Uint_16 | 2 | 0 … 40 | `5` | `00 05` | | Version | Version of the application software | String | Length | Maximum 40 characters | `1.1.0` | `31 2E 31 2E 30` | **Example: sRA FirmwareVersion** **CoLa A (ASCII)** ```text sRA{SPC}FirmwareVersion{SPC}5{SPC}1.1.0 ``` ```text 02 73 52 41 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 20 35 20 31 2E 31 2E 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 20 00 05 31 2E 31 2E 30 3E ```
### Set Device Name [sWN LocationName] Give the device a descriptive name, such as its location. Required user level: Maintenance. **Telegram structure: sWN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | | Device name length | Number of characters of device name | Uint_16 | 2 | 0 … 32 | `9` | `00 09` | | Device name | Device name, for example its location | String | Length | Maximum 32 characters | `LongRange` | `4C 6F 6E 67 52 61 6E 67 65` | **Example: sWN LocationName - Device name is "LongRange"** **CoLa A (ASCII)** ```text sWN{SPC}LocationName{SPC}+9{SPC}LongRange ``` ```text sWN LocationName +9 LongRange ``` ```text 02 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 2B 39 20 4C 6F 6E 67 52 61 6E 67 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 09 4C 6F 6E 67 52 61 6E 67 65 0C ``` ```text 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 09 4C 6F 6E 67 52 61 6E 67 65 ``` **Telegram structure: sWA LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sWA LocationName** **CoLa A (ASCII)** ```text sWA{SPC}LocationName ``` ```text 02 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 7F ```
### Identify Device [sMN FindMe] Let the LEDs of the device blink for the given time, to find the device. Required user level: Authorized client. **Telegram structure: sMN FindMe** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Initiate an acoustic or visual signal | String | 6 | | `FindMe` | `46 69 6E 64 4D 65` | | Period of time | Duration in seconds | Uint_16 | 2 | | `0d … 65535d(0h .. FF FF)` | `00 ... FF FF` | **Example: sMN FindMe - Blink for 3 s** **CoLa A (ASCII)** ```text sMN{SPC}FindMe{SPC}3 ``` ```text sMN FindMe 3 ``` ```text 02 73 4D 4E 20 46 69 6E 64 4D 65 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 46 69 6E 64 4D 65 20 00 03 7E ``` ```text 73 4D 4E 20 46 69 6E 64 4D 65 20 00 03 ``` **Telegram structure: sAN FindMe** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Initiate an acoustic or visual signal | String | 6 | | `FindMe` | `46 69 6E 64 4D 65` | **Example: sAN FindMe** **CoLa A (ASCII)** ```text sAN{SPC}FindMe ``` ```text 02 73 41 4E 20 46 69 6E 64 4D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 41 4E 20 46 69 6E 64 4D 65 20 71 ```
## Basic Settings
### Read Scan Frequency and Angular Resolution [sRN LMPscancfg] Read the scanning frequency, the angular resolution, and the angular range of the active scan configuration. The values apply before any filter. **Telegram structure: sRN LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | **Example: sRN LMPscancfg** **CoLa A (ASCII)** ```text sRN{SPC}LMPscancfg ``` ```text sRN LMPscancfg ``` ```text 02 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 63 ``` ```text 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 ``` **Telegram structure: sRA LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | | Scan frequency | In 1/100 Hz | Uint_32 | 4 | 20 Hz: | `7D0` | `00 00 07 D0` | | Reserved | - | Int_16 | 2 | Always: | `1` | `00 01` | | Theta angular resolution | Horizontal angular resolution in 1/10000° | Uint_32 | 4 | 0.4662°: | `1236` | `00 00 12 36` | | Theta start angle | In 1/10000° | Int_32 | 4 | −138°: | `FFEAF160` | `FF EA F1 60` | | Theta stop angle | In 1/10000° | Int_32 | 4 | +138°: | `150EA0` | `00 15 0E A0` | | Phi angular resolution | Vertical angular resolution in 1/10000° | Uint_32 | 4 | 0.4688°: | `1250` | `00 00 12 50` | | Phi start angle | In 1/10000° | Int_32 | 4 | −22.5°: | `FFFC9118` | `FF FC 91 18` | | Phi stop angle | In 1/10000° | Int_32 | 4 | +22.5°: | `36EE8` | `00 03 6E E8` | **Example: sRA LMPscancfg** **CoLa A (ASCII)** ```text sRA{SPC}LMPscancfg{SPC}7D0{SPC}1{SPC}1236{SPC}FFEAF160{SPC}150EA0{SPC}928{SPC}FFFC9118{SPC}36EE8 ``` ```text 02 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 37 44 30 20 31 20 31 32 33 36 20 46 46 45 41 46 31 36 30 20 31 35 30 45 41 30 20 39 32 38 20 46 46 46 43 39 31 31 38 20 33 36 45 45 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 00 00 07 D0 00 01 00 00 12 36 FF EA F1 60 00 15 0E A0 00 00 09 28 FF FC 91 18 00 03 6E E8 AF ```
### Activate Standby Mode [sMN LMCstandby] Set the device to standby mode. Required user level: Authorized client. **Telegram structure: sMN LMCstandby** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set device to standby | String | 10 | | `LMCstandby` | `4C 4D 43 73 74 61 6E 64 62 79` | **Example: sMN LMCstandby** **CoLa A (ASCII)** ```text sMN{SPC}LMCstandby ``` ```text sMN LMCstandby ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 65 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 ``` **Telegram structure: sAN LMCstandby** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set device to standby | String | 10 | | `LMCstandby` | `4C 4D 43 73 74 61 6E 64 62 79` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success: | `0` | `00` | **Example: sAN LMCstandby** **CoLa A (ASCII)** ```text sAN{SPC}LMCstandby{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 6E 64 62 79 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 41 4E 20 4C 4D 43 73 74 61 6E 64 62 79 20 00 49 ```
### Start Measurement [sMN LMCstartmeas] Start the laser and, unless the device is in standby, the motor. Required user level: Authorized client. **Telegram structure: sMN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | **Example: sMN LMCstartmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstartmeas ``` ```text sMN LMCstartmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 68 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 ``` **Telegram structure: sAN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstartmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstartmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 00 44 ```
### Stop Measurement [sMN LMCstopmeas] Switch off the laser. The motor keeps running at the configured frequency. Required user level: Authorized client. **Telegram structure: sMN LMCstopmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Stop measurement | String | 11 | | `LMCstopmeas` | `4C 4D 43 73 74 6F 70 6D 65 61 73` | **Example: sMN LMCstopmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstopmeas ``` ```text sMN LMCstopmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 10 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 ``` **Telegram structure: sAN LMCstopmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Stop measurement | String | 11 | | `LMCstopmeas` | `4C 4D 43 73 74 6F 70 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | No error:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstopmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstopmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 20 00 3C ```
### Autostart Measurement [sWN LMPautostartmeas] Define whether the device starts measuring directly at power-up or stays idle. Save the parameters permanently (`sMN mEEwriteall`); the setting takes effect at the next power-up. Required user level: Authorized client. **Telegram structure: sWN LMPautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | | Status code | Activate / Deactivate Autostart | Bool_1 | 1 | Autostart off:
Autostart on: | `0
1` | `00
01` | **Example: sWN LMPautostartmeas** **CoLa A (ASCII)** ```text sWN{SPC}LMPautostartmeas{SPC}1 ``` ```text sWN LMPautostartmeas 1 ``` ```text 02 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 4F ``` ```text 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 ``` **Telegram structure: sWA LMPautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | **Example: sWA LMPautostartmeas** **CoLa A (ASCII)** ```text sWA{SPC}LMPautostartmeas ``` ```text 02 73 57 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 41 ```
### Set Sensitivity Mode [sWN SensitivityMode] Set the sensitivity of the measurement: maximum robustness, standard (recommended), or maximum detectivity. Required user level: Authorized client. **Telegram structure: sWN SensitivityMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sensitivity Mode | String | 15 | | `SensitivityMode` | `53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65` | | Sensitivity | Choose Sensitivity Mode | Enum_8 | 1 | Maximum robustness:
Standard (recommended):
Maximum detectivity: | `0
1
2` | `00
01
02` | **Example: sWN SensitivityMode** **CoLa A (ASCII)** ```text sWN{SPC}SensitivityMode{SPC}1 ``` ```text sWN SensitivityMode 1 ``` ```text 02 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 01 05 ``` ```text 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 01 ``` **Telegram structure: sWA SensitivityMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sensitivity Mode | String | 15 | | `SensitivityMode` | `53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65` | **Example: sWA SensitivityMode** **CoLa A (ASCII)** ```text sWA{SPC}SensitivityMode ``` ```text 02 73 57 41 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 0B ```
### Set Performance Profile [sWN PerformanceProfileNumber] Select the scan configuration (performance profile) by its number. The supported scan configurations are listed in the parameter table below. Read the active scan configuration with `sRN PerformanceProfileNumber`. In CoLa A, a number without a sign is hexadecimal: send scan configuration 11 as `+11` or `B`. Required user level: Authorized client. **Telegram structure: sWN PerformanceProfileNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Write the number of the performance profile | String | 24 | | `PerformanceProfileNumber` | `50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72` | | Scan configuration | Number of the scan configuration | Enum_8 | 1 | 276°, 0.47° × 0.47°, 20 Hz:
276°, 0.47° × 0.94°, 20 Hz:
276°, 0.47° × 0.23°, 20 Hz:
360°, 0.47° × 0.47°, 10 Hz:
276°, 0.23° × 0.47°, 20 Hz, 2× interlaced:
276°, 0.23° × 0.23°, 20 Hz, 2× interlaced:
276°, 0.12° × 0.23°, 20 Hz, 4× interlaced:
190°, 0.47° × 0.47°, 20 Hz:
120°, 0.47° × 0.47°, 20 Hz: | `1
2
3
4
+10d (A)
+11d (B)
+12d (C)
+20d (14)
+21d (15)` | `01
02
03
04
0A
0B
0C
14
15` | **Example: sWN PerformanceProfileNumber - Scan configuration 11** **CoLa A (ASCII)** ```text sWN{SPC}PerformanceProfileNumber{SPC}+11 ``` ```text sWN PerformanceProfileNumber +11 ``` ```text 02 73 57 4E 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 2B 31 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 57 4E 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 0B 51 ``` ```text 73 57 4E 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 0B ``` **Telegram structure: sWA PerformanceProfileNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set Performance Profile | String | 24 | | `PerformanceProfileNumber` | `50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72` | **Example: sWA PerformanceProfileNumber** **CoLa A (ASCII)** ```text sWA{SPC}PerformanceProfileNumber ``` ```text 02 73 57 41 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 41 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 55 ```
### Set Horizontal Field of View Center Angle [sWN horizontalFieldOfViewCenterAngle] Rotate the horizontal field of view by setting its center angle in 1/10000°: center angle = (stop angle − start angle) / 2. Required user level: Authorized client. **Telegram structure: sWN horizontalFieldOfViewCenterAngle** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Set the orientation of the horizontal field of view, defined by its center angle: horizontalFieldOfViewCenterAngle = (stopAngle - startAngle)/2. | String | 32 | | `horizontalFieldOfViewCenterAngle` | `68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65` | | Value | Set the orientation of the horizontal field of view, defined by its center angle: horizontalFieldOfViewCenterAngle = (stopAngle - startAngle)/2. | Int_32 | 4 | | `0` | `00 00 00 00` | **Example: sWN horizontalFieldOfViewCenterAngle** **CoLa A (ASCII)** ```text sWN{SPC}horizontalFieldOfViewCenterAngle{SPC}0 ``` ```text sWN horizontalFieldOfViewCenterAngle 0 ``` ```text 02 73 57 4E 20 68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 29 73 57 4E 20 68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65 20 00 00 00 00 58 ``` ```text 73 57 4E 20 68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65 20 00 00 00 00 ``` **Telegram structure: sWA horizontalFieldOfViewCenterAngle** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 32 | | `horizontalFieldOfViewCenterAngle` | `68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65` | **Example: sWA horizontalFieldOfViewCenterAngle** **CoLa A (ASCII)** ```text sWA{SPC}horizontalFieldOfViewCenterAngle ``` ```text 02 73 57 41 20 68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 57 41 20 68 6F 72 69 7A 6F 6E 74 61 6C 46 69 65 6C 64 4F 66 56 69 65 77 43 65 6E 74 65 72 41 6E 67 6C 65 20 57 ```
### Enable High Precision Mode [sWN enableHighPrecisionMode] Enable or disable the high precision mode (the multiScan200 mean filter). See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#moving-average-filter). Required user level: Authorized client. **Telegram structure: sWN enableHighPrecisionMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Enable high-precision mode | String | 23 | | `enableHighPrecisionMode` | `65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65` | | Value | Enable high-precision mode | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN enableHighPrecisionMode - Disable** **CoLa A (ASCII)** ```text sWN{SPC}enableHighPrecisionMode{SPC}0 ``` ```text sWN enableHighPrecisionMode 0 ``` ```text 02 73 57 4E 20 65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 4E 20 65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65 20 00 30 ``` ```text 73 57 4E 20 65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65 20 00 ``` **Telegram structure: sWA enableHighPrecisionMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 23 | | `enableHighPrecisionMode` | `65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65` | **Example: sWA enableHighPrecisionMode** **CoLa A (ASCII)** ```text sWA{SPC}enableHighPrecisionMode ``` ```text 02 73 57 41 20 65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 41 20 65 6E 61 62 6C 65 48 69 67 68 50 72 65 63 69 73 69 6F 6E 4D 6F 64 65 20 3F ```
### Set Scan Configuration [sMN mCLsetscancfglist] Select the scan configuration (field of view, scanning frequency, and angular resolution) by its number. Scan configurations 10 to 12 use interlace mode: they achieve a higher angular resolution by combining scans that are shifted to each other. The supported scan configurations are listed in the parameter table below. Read the active scan configuration with `sRN PerformanceProfileNumber`. To set it, use [`sWN PerformanceProfileNumber`](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#set-performance-profile-swn-performanceprofilenumber). In CoLa A, a number without a sign is hexadecimal: send scan configuration 10 as `+10` or `A`, not as `10`. **Telegram structure: sMN mCLsetscancfglist** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set scan configuration | String | 17 | | `mCLsetscancfglist` | `6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74` | | Scan configuration | Number of the scan configuration | Enum_8 | 1 | 276°, 0.47° × 0.47°, 20 Hz:
276°, 0.47° × 0.94°, 20 Hz:
276°, 0.47° × 0.23°, 20 Hz:
360°, 0.47° × 0.47°, 10 Hz:
276°, 0.23° × 0.47°, 20 Hz, 2× interlaced:
276°, 0.23° × 0.23°, 20 Hz, 2× interlaced:
276°, 0.12° × 0.23°, 20 Hz, 4× interlaced:
190°, 0.47° × 0.47°, 20 Hz:
120°, 0.47° × 0.47°, 20 Hz: | `1
2
3
4
+10d (A)
+11d (B)
+12d (C)
+20d (14)
+21d (15)` | `01
02
03
04
0A
0B
0C
14
15` | **Example: sMN mCLsetscancfglist 1 - Select scan configuration 1** **CoLa A (ASCII)** ```text sMN{SPC}mCLsetscancfglist{SPC}1 ``` ```text sMN mCLsetscancfglist 1 ``` ```text 02 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 01 0E ``` ```text 73 4D 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 01 ``` **Telegram structure: sAN mCLsetscancfglist** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set scan configuration | String | 17 | | `mCLsetscancfglist` | `6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74` | | Status code | Wrong setting | Enum_8 | 1 | Ok:
Error frequency:
Error resolution:
Error resolution and frequency:
Error scan field:
Error:
Error no license: | `0
1
2
3
4
5
6` | `00
01
02
03
04
05
06` | **Example: sAN mCLsetscancfglist Ok** **CoLa A (ASCII)** ```text sAN{SPC}mCLsetscancfglist{SPC}0 ``` ```text 02 73 41 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 41 4E 20 6D 43 4C 73 65 74 73 63 61 6E 63 66 67 6C 69 73 74 20 00 03 ```
### Enable or Disable LEDs [sWN LEDEnable] Switch the LEDs of the device on or off. Diagnostics over Ethernet and the digital outputs are not affected. Required user level: Authorized client. **Telegram structure: sWN LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sWN` | `73 57 4E` | | Command | Set LEDs | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | | Status | Enable/ disable | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | **Example: sWN LEDEnable** **CoLa A (ASCII)** ```text sWN{SPC}LEDEnable{SPC}1 ``` ```text sWN LEDEnable 1 ``` ```text 02 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 01 07 ``` ```text 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set LEDs | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | **Example: sWA LEDEnable** **CoLa A (ASCII)** ```text sWA{SPC}LEDEnable ``` ```text 02 73 57 41 20 4C 45 44 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 45 44 45 6E 61 62 6C 65 20 09 ```
### Read State of LEDs [sRN LEDState] Read the current state of the LEDs. **Telegram structure: sRN LEDState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sRN` | `73 52 4E` | | Command | Read state of LEDs | String | 8 | | `LEDState` | `4C 45 44 53 74 61 74 65` | **Example: sRN LEDState** **CoLa A (ASCII)** ```text sRN{SPC}LEDState ``` ```text sRN LEDState ``` ```text 02 73 52 4E 20 4C 45 44 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 4C 45 44 53 74 61 74 65 55 ``` ```text 73 52 4E 20 4C 45 44 53 74 61 74 65 ``` **Telegram structure: sRA LEDState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | State of LEDs | String | 8 | | `LEDState` | `4C 45 44 53 74 61 74 65` | | Number of LEDs | Number of the following LED records | Uint_16 | 2 | | `4` | `00 04` | | LED color | Repeats with the next two rows for every LED | Enum_8 | 1 | Green:
Yellow:
Red: | `0
1
2` | `00
01
02` | | LED behavior | - | Enum_8 | 1 | On:
Off:
Blinking:
Blinking fast:
Blinking delayed:
Find me active: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | LED ID | Name of the LED, padded with NUL bytes to 8 characters | String | 8 | | `LED1` | `4C 45 44 31 00 00 00 00` | **Example: sRA LEDState** **CoLa A (ASCII)** ```text sRA{SPC}LEDState{SPC}4{SPC}1{SPC}0{SPC}LED3{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}LED2{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}0{SPC}LED1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}LED4{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 4C 45 44 53 74 61 74 65 20 34 20 31 20 30 20 4C 45 44 33 00 00 00 00 20 30 20 30 20 4C 45 44 32 00 00 00 00 20 31 20 30 20 4C 45 44 31 00 00 00 00 20 30 20 30 20 4C 45 44 34 00 00 00 00 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 37 73 52 41 20 4C 45 44 53 74 61 74 65 20 00 04 01 00 4C 45 44 33 00 00 00 00 00 00 4C 45 44 32 00 00 00 00 01 00 4C 45 44 31 00 00 00 00 00 00 4C 45 44 34 00 00 00 00 7A ```
### Set Vertical Ambient Light Resolution [sWN ambientPixelCountVertical] Set the vertical resolution of the ambient light image: **Full** (all ambient light rows) or **Matching** (one ambient light pixel per beam, matching the point cloud). Required user level: Authorized client. **Telegram structure: sWN ambientPixelCountVertical** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Vertical resolution of the ambient light image. | String | 25 | | `ambientPixelCountVertical` | `61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C` | | Value | Vertical resolution of the ambient light image. | Enum_8 | 1 | Full:
Matching: | `0
1` | `00
01` | **Example: sWN ambientPixelCountVertical** **CoLa A (ASCII)** ```text sWN{SPC}ambientPixelCountVertical{SPC}1 ``` ```text sWN ambientPixelCountVertical 1 ``` ```text 02 73 57 4E 20 61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C 20 01 2A ``` ```text 73 57 4E 20 61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C 20 01 ``` **Telegram structure: sWA ambientPixelCountVertical** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 25 | | `ambientPixelCountVertical` | `61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C` | **Example: sWA ambientPixelCountVertical** **CoLa A (ASCII)** ```text sWA{SPC}ambientPixelCountVertical ``` ```text 02 73 57 41 20 61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 57 41 20 61 6D 62 69 65 6E 74 50 69 78 65 6C 43 6F 75 6E 74 56 65 72 74 69 63 61 6C 20 24 ```
## Date and System Time
### Set Time Synchronization [sWN TSCRole] Select the time synchronization: off, NTP, or PTP. Required user level: Authorized client. **Telegram structure: sWN TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | | Status | Timestamp role | Uint_8 | 1 | Off:
NTP:
PTP: | `0
1
3` | `00
01
03` | **Example: sWN TSCRole - NTP** **CoLa A (ASCII)** ```text sWN{SPC}TSCRole{SPC}1 ``` ```text sWN TSCRole 1 ``` ```text 02 73 57 4E 20 54 53 43 52 6F 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 1B ``` ```text 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 ``` **Telegram structure: sWA TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | **Example: sWA TSCRole** **CoLa A (ASCII)** ```text sWA{SPC}TSCRole ``` ```text 02 73 57 41 20 54 53 43 52 6F 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 57 41 20 54 53 43 52 6F 6C 65 20 15 ```
### Set Device Time [sMN LSPsetdatetime] Set the device time: year, month, day, hour, minute, second, and microsecond. In CoLa A, write decimal values with a leading `+`; values without a sign are hexadecimal. The device has no real-time clock. After a power cycle, the time must be set again, or use NTP or PTP. Required user level: Authorized client. **Telegram structure: sMN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Year | | Uint_16 | 2 | | `+1970d …+2099d (07B2h… 0833h)` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `+1d … +12d(01h … 0Ch)` | `01 … 0C` | | Day | | Uint_8 | 1 | | `+1d … +31d(01h … 1Fh)` | `00 … 1F` | | Hour | | Uint_8 | 1 | | `+0d … +23d(00h … 17h)` | `00 … 17` | | Minute | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Second | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `+0d …+999999d(00000000h …000F423Fh)` | `00 00 00 00 … 00 0F 42 3F` | **Example: sMN LSPsetdatetime** **CoLa A (ASCII)** ```text sMN{SPC}LSPsetdatetime{SPC}+2026{SPC}+10{SPC}+1{SPC}+16{SPC}+52{SPC}+1{SPC}0 ``` ```text sMN LSPsetdatetime +2026 +10 +1 +16 +52 +1 0 ``` ```text 02 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 2B 32 30 32 36 20 2B 31 30 20 2B 31 20 2B 31 36 20 2B 35 32 20 2B 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 EA 0A 01 10 34 01 00 00 00 00 9F ``` ```text 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 EA 0A 01 10 34 01 00 00 00 00 ``` **Telegram structure: sAN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Status code | Code number | Enum_8 | 1 | Success: | `0` | `00` | **Example: sAN LSPsetdatetime** **CoLa A (ASCII)** ```text sAN{SPC}LSPsetdatetime{SPC}0 ``` ```text 02 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 00 50 ```
### Read Device Time [sRN LSPdatetime] Read the device time. Required user level: Read-only. **Telegram structure: sRN LSPdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | The device time | String | 11 | | `LSPdatetime` | `4C 53 50 64 61 74 65 74 69 6D 65` | **Example: sRN LSPdatetime** **CoLa A (ASCII)** ```text sRN{SPC}LSPdatetime ``` ```text sRN LSPdatetime ``` ```text 02 73 52 4E 20 4C 53 50 64 61 74 65 74 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4C 53 50 64 61 74 65 74 69 6D 65 01 ``` ```text 73 52 4E 20 4C 53 50 64 61 74 65 74 69 6D 65 ``` **Telegram structure: sRA LSPdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | The device time | String | 11 | | `LSPdatetime` | `4C 53 50 64 61 74 65 74 69 6D 65` | | Year | | Uint_16 | 2 | Max: 2105 | `0` | `00 00` | | Month | | Uint_8 | 1 | | `+1` | `01` | | Day | | Uint_8 | 1 | | `+1` | `01` | | Hours | Value for [h] in current time | Uint_8 | 1 | | `0` | `00` | | Minutes | Value for [min] in current time | Uint_8 | 1 | | `0` | `00` | | Seconds | Value for [s] in current time | Uint_8 | 1 | | `0` | `00` | | Microseconds | Value for [µs] in current time | Uint_32 | 4 | | `0` | `00 00 00 00` | **Example: sRA LSPdatetime** **CoLa A (ASCII)** ```text sRA{SPC}LSPdatetime{SPC}7B2{SPC}1{SPC}1{SPC}9{SPC}14{SPC}3A{SPC}45D30 ``` ```text 02 73 52 41 20 4C 53 50 64 61 74 65 74 69 6D 65 20 37 42 32 20 31 20 31 20 39 20 31 34 20 33 41 20 34 35 44 33 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 4C 53 50 64 61 74 65 74 69 6D 65 20 07 B2 01 01 09 14 3A 00 04 5D 30 D5 ```
### Set Device Time in UTC [sMN setDateTimeUTC] Set the device time in UTC. This works only if neither NTP nor PTP is active. Required user level: Authorized client. **Telegram structure: sMN setDateTimeUTC** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | Sets datetime of device in UTC. Does only work if NTP-Client and PTP is not active | String | 14 | | `setDateTimeUTC` | `73 65 74 44 61 74 65 54 69 6D 65 55 54 43` | | uiYear | UTC year. Range: 0 ... 2105d | Uint_16 | 2 | | `0` | `00 00` | | usiMonth | UTC month | Uint_8 | 1 | | `1` | `01` | | usiDay | UTC day | Uint_8 | 1 | | `1` | `01` | | usiHour | UTC hour | Uint_8 | 1 | | `0` | `00` | | usiMinute | UTC minute | Uint_8 | 1 | | `0` | `00` | | usiSec | UTC second | Uint_8 | 1 | | `0` | `00` | | udiUSec | UTC microseconds; range | Uint_32 | 4 | | `0` | `00 00 00 00` | **Example: sMN setDateTimeUTC** **CoLa A (ASCII)** ```text sMN{SPC}setDateTimeUTC{SPC}+2026{SPC}+10{SPC}+1{SPC}+16{SPC}+52{SPC}+1{SPC}0 ``` ```text sMN setDateTimeUTC +2026 +10 +1 +16 +52 +1 0 ``` ```text 02 73 4D 4E 20 73 65 74 44 61 74 65 54 69 6D 65 55 54 43 20 2B 32 30 32 36 20 2B 31 30 20 2B 31 20 2B 31 36 20 2B 35 32 20 2B 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 4D 4E 20 73 65 74 44 61 74 65 54 69 6D 65 55 54 43 20 07 EA 0A 01 10 34 01 00 00 00 00 92 ``` ```text 73 4D 4E 20 73 65 74 44 61 74 65 54 69 6D 65 55 54 43 20 07 EA 0A 01 10 34 01 00 00 00 00 ``` **Telegram structure: sAN setDateTimeUTC** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 14 | | `setDateTimeUTC` | `73 65 74 44 61 74 65 54 69 6D 65 55 54 43` | | ErrorCode | Result of setting the UTC time | Enum_8 | 1 | Successful:
No permission: | `0
1` | `00
01` | **Example: sAN setDateTimeUTC** **CoLa A (ASCII)** ```text sAN{SPC}setDateTimeUTC{SPC}0 ``` ```text 02 73 41 4E 20 73 65 74 44 61 74 65 54 69 6D 65 55 54 43 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 41 4E 20 73 65 74 44 61 74 65 54 69 6D 65 55 54 43 20 00 5D ```
### Set Time Server IP Address [sWN TSCTCSrvAddr] Define the IP address from which the device will receive the time synchronization. Required user level: Authorized client. **Telegram structure: sWN TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | | IP address data | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sWN TSCTCSrvAddr - 192.168.0.11** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCSrvAddr{SPC}C0{SPC}A8{SPC}0{SPC}B ``` ```text sWN TSCTCSrvAddr C0 A8 0 B ``` ```text 02 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 43 30 20 41 38 20 30 20 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B 3E ``` ```text 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B ``` **Telegram structure: sWA TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | **Example: sWA TSCTCSrvAddr** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCSrvAddr ``` ```text 02 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 20 52 ```
### Set Time Zone [sWN TSCTCtimezone] Required user level: Authorized client. **Telegram structure: sWN TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | | Time zone data | Select the time zone of the client | Enum_8 | 1 | List of time zones see table 228, page 127 | `+0d … +104d(00h … 68h)` | `00 … 68` | **Time zones** | Value | Time zone | Value | Time zone | Value | Time zone | | --- | --- | --- | --- | --- | --- | | +0d (0h) | DATE LINE STANDARD | +35d (23h) | MONROVIA REYKJAVIK | +70d (46h) | MUMBAI NEUDELHI | | +1d (1h) | COORDWORLDTIME 11 | +36d (24h) | AMSTERDAM BERLIN ROM | +71d (47h) | SRI JAYAWARDENEPURA | | +2d (2h) | HAWAII | +37d (25h) | BELGRAD BUDAPEST PRAG | +72d (48h) | KATMANDU | | +3d (3h) | ALASKA | +38d (26h) | BRUESSEL MADRID PARIS | +73d (49h) | ASTANA | | +4d (4h) | CALIFORNIA | +39d (27h) | SARAJEVO WARSCHAU | +74d (4Ah) | DAKKA | | +5d (5h) | USA CANADA | +40d (28h) | WEST CENTRAL AFRICA | +75d (4Bh) | NOWOSIBIRSK | | +6d (6h) | ARIZONA | +41d (29h) | WINDHUK | +76d (4Ch) | YANGON | | +7d (7h) | LA PAZ | +42d (2Ah) | AMMAN | +77d (4Dh) | BANGKOK HANOI JAKARTA | | +8d (8h) | MOUNTAIN TIME USA | +43d (2Bh) | ATHEN BUKAREST | +78d (4Eh) | KRASNOJARSK | | +9d (9h) | CENTRAL TIME USA | +44d (2Ch) | BEIRUT | +79d (4Fh) | IRKUTSK | | +10d (Ah) | MEXICO CITY | +45d (2Dh) | DAMASCUS | +80d (50h) | KUALA LUMPUR SINGAPUR | | +11d (Bh) | MIDDLE AMERICA | +46d (2Eh) | HARARE PRETORIA | +81d (51h) | PEKING HONGKONG | | +12d (Ch) | SASKATCHEWAN | +47d (2Fh) | HELSINKI KIEW RIGA | +82d (52h) | PERTH | | +13d (Dh) | BOGOTA LIMA | +48d (30h) | ISTANBUL | +83d (53h) | TAIPEH | | +14d (Eh) | EASTERN TIME USA | +49d (31h) | JERUSALEM | +84d (54h) | ULAN BATOR | | +15d (Fh) | INDIANA | +50d (32h) | KAIRO | +85d (55h) | JAKUTSK | | +16d (10h) | CARACAS | +51d (33h) | KALININGRAD | +86d (56h) | OSAKA TOKIO | | +17d (11h) | ASUNCION | +52d (34h) | EASTERN EUROPE | +87d (57h) | SEOUL | | +18d (12h) | ATLANTIC KANADA | +53d (35h) | TRIPOLIS | +88d (58h) | ADELAIDE | | +19d (13h) | CUIABA | +54d (36h) | BAGDAD | +89d (59h) | DARWIN | | +20d (14h) | LA PAZ SAN JUAN | +55d (37h) | KUWAIT RIAD | +90d (5Ah) | BRISBANE | | +21d (15h) | SANTIAGO | +56d (38h) | MINSK | +91d (5Bh) | CANBERRA SYDNEY | | +22d (16h) | NEUFUNDLAND | +57d (39h) | MOSKAU PETERSBURG | +92d (5Ch) | GUAM PORT MORESBY | | +23d (17h) | BRASILIA | +58d (3Ah) | NAIROBI | +93d (5Dh) | HOBART | | +24d (18h) | BUENOS AIRES | +59d (3Bh) | TEHERAN | +94d (5Eh) | MAGADAN | | +25d (19h) | CAYENNE FORTALEZA | +60d (3Ch) | ABU DHABI | +95d (5Fh) | WLADIWOSTOK | | +26d (1Ah) | GROENLAND | +61d (3Dh) | BAKU | +96d (60h) | SALOMONEN KALEDONIEN | | +27d (1Bh) | MONTEVIDEO | +62d (3Eh) | ERIWAN | +97d (61h) | TSCHOKURDACH | | +28d (1Ch) | SALVADOR | +63d (3Fh) | ISCHEWSK SAMARA | +98d (62h) | ANADYR | | +29d (1Dh) | COORDWORLDTIME 02 | +64d (40h) | PORT LOUIS | +99d (63h) | AUCKLAND WELLINGTON | | +30d (1Eh) | AZOREN | +65d (41h) | TIFLIS | +100d (64h) | FIDSCHI | | +31d (1Fh) | KAPVERDE | +66d (42h) | KABUL | +101d (65h) | COORDWORLDTIME 12 | | +32d (20h) | CASABLANCA | +67d (43h) | ASCHGABAT TASCHKENT | +102d (66h) | NAKUALOFA | | +33d (21h) | DUBLIN LISSABON LONDON | +68d (44h) | ISLAMABAD KARATSCHI | +103d (67h) | SAMOA | | +34d (22h) | COORDWORLDTIME | +69d (45h) | JEKATERINBURG | +104d (68h) | KIRITIMATI | **Example: sWN TSCTCtimezone - Amsterdam, Berlin, Rome** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCtimezone{SPC}+36 ``` ```text sWN TSCTCtimezone +36 ``` ```text 02 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 2B 33 36 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 16 ``` ```text 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 ``` **Telegram structure: sWA TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | **Example: sWA TSCTCtimezone** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCtimezone ``` ```text 02 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 3D ```
### Set Update Time [sWN TSCTCupdatetime] Define the time period after which the sensor will attempt to get the current system time for the TSC server. Required user level: Authorized client. **Telegram structure: sWN TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | | Update time of synchronization | Set values in seconds | Uint_32 | 4 | | `+1d … +3600d(01h … 0E10h)` | `00 00 00 00 … 00 00 0E 10` | **Example: sWN TSCTCupdatetime - 600 s** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCupdatetime{SPC}+600 ``` ```text sWN TSCTCupdatetime +600 ``` ```text 02 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 2B 36 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 67 ``` ```text 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 ``` **Telegram structure: sWA TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | **Example: sWA TSCTCupdatetime** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCupdatetime ``` ```text 02 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 32 ```
## Filter
### Set Particle Filter [sWN particleFilter] Configure the particle filter. A point is a particle if fewer than the minimum number of neighbors in its 8-connected neighborhood, over all echoes, are within the distance threshold. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#particle-filter). Required user level: Authorized client. **Telegram structure: sWN particleFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Particle filter | String | 14 | | `particleFilter` | `70 61 72 74 69 63 6C 65 46 69 6C 74 65 72` | | enable | If true a detected particle is filtered out (aka distance set to zero) and subsequent echoes are moved up. Otherwise, the point is flagged in the properties channel. | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | minNumberOfNeighbors | If a measurement has less points in its 8-connected neighborhood over all echoes within the distance threshold, this measurement is considered as particle. | Uint_16 | 2 | Max: 8 | `+1` | `00 01` | | distanceThreshold | Distance threshold value. For a given measurement all points in the 8-connected neighborhood over all three echoes are with a distance less than the distanceThreshold are counted. If the result is below the minNumberOfNeighbors, this measurement is considered as particle | Uint_16 | 2 | Max: 2000 | `+500` | `01 F4` | **Example: sWN particleFilter - Disable the particle filter** **CoLa A (ASCII)** ```text sWN{SPC}particleFilter{SPC}0{SPC}+1{SPC}+500 ``` ```text sWN particleFilter 0 +1 +500 ``` ```text 02 73 57 4E 20 70 61 72 74 69 63 6C 65 46 69 6C 74 65 72 20 30 20 2B 31 20 2B 35 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 4E 20 70 61 72 74 69 63 6C 65 46 69 6C 74 65 72 20 00 00 01 01 F4 AA ``` ```text 73 57 4E 20 70 61 72 74 69 63 6C 65 46 69 6C 74 65 72 20 00 00 01 01 F4 ``` **Telegram structure: sWA particleFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 14 | | `particleFilter` | `70 61 72 74 69 63 6C 65 46 69 6C 74 65 72` | **Example: sWA particleFilter** **CoLa A (ASCII)** ```text sWA{SPC}particleFilter ``` ```text 02 73 57 41 20 70 61 72 74 69 63 6C 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 70 61 72 74 69 63 6C 65 46 69 6C 74 65 72 20 51 ```
### Set Echo Filter [sWN FREchoFilter] Select which echoes are output when one beam returns several distance values. Required user level: Authorized client. **Telegram structure: sWN FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | | Status code | Code number | Enum_8 | 1 | First echo:
All echos:
Last echo: | `0
1
2` | `00
01
02` | **Example: sWN FREchoFilter - All echoes** **CoLa A (ASCII)** ```text sWN{SPC}FREchoFilter{SPC}1 ``` ```text sWN FREchoFilter 1 ``` ```text 02 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 7E ``` ```text 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 ``` **Telegram structure: sWA FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | **Example: sWA FREchoFilter** **CoLa A (ASCII)** ```text sWA{SPC}FREchoFilter ``` ```text 02 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 70 ```
### Set Blooming Filter [sWN bloomingFilter] Configure the blooming filter. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#blooming-filter). Required user level: Authorized client. **Telegram structure: sWN bloomingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Blooming Filter | String | 14 | | `bloomingFilter` | `62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72` | | strength | | Enum_8 | 1 | Low:
Medium:
Strong: | `0
1
2` | `00
01
02` | | enable | Enable/ disable Blooming Filter | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN bloomingFilter - Medium strength, disabled** **CoLa A (ASCII)** ```text sWN{SPC}bloomingFilter{SPC}1{SPC}0 ``` ```text sWN bloomingFilter 1 0 ``` ```text 02 73 57 4E 20 62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72 20 01 00 48 ``` ```text 73 57 4E 20 62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72 20 01 00 ``` **Telegram structure: sWA bloomingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 14 | | `bloomingFilter` | `62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72` | **Example: sWA bloomingFilter** **CoLa A (ASCII)** ```text sWA{SPC}bloomingFilter ``` ```text 02 73 57 41 20 62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 62 6C 6F 6F 6D 69 6E 67 46 69 6C 74 65 72 20 46 ```
## Mounting Position
### Set Sensor Position [sWN SensorPosition] Required user level: Authorized client. **Telegram structure: sWN SensorPosition** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | | String | 14 | | `SensorPosition` | `53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E` | | x | in mm | Int_32 | 4 | Max: 100000 | `0` | `00 00 00 00` | | y | in mm | Int_32 | 4 | Max: 100000 | `0` | `00 00 00 00` | | z | in mm | Int_32 | 4 | Max: 100000 | `0` | `00 00 00 00` | | yaw | in 1/10000 deg | Int_32 | 4 | Max: 3600000 | `0` | `00 00 00 00` | | pitch | in 1/10000 deg | Int_32 | 4 | Max: 3600000 | `0` | `00 00 00 00` | | roll | in 1/10000 deg | Int_32 | 4 | Max: 3600000 | `0` | `00 00 00 00` | **Example: sWN SensorPosition** **CoLa A (ASCII)** ```text sWN{SPC}SensorPosition{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN SensorPosition 0 0 0 0 0 0 ``` ```text 02 73 57 4E 20 53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2B 73 57 4E 20 53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 ``` ```text 73 57 4E 20 53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sWA SensorPosition** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 14 | | `SensorPosition` | `53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E` | **Example: sWA SensorPosition** **CoLa A (ASCII)** ```text sWA{SPC}SensorPosition ``` ```text 02 73 57 41 20 53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 53 65 6E 73 6F 72 50 6F 73 69 74 69 6F 6E 20 6A ```
## Contamination Indication
### Set Contamination Indication Settings [sWN ContaminationConfig] Define how and when the device signals a potential contamination of the optics cover, so that it can be cleaned in time. See [Contamination Indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/). Required user level: Authorized client. **Telegram structure: sWN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | Inactive:
High available:
Sensitive: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | 3 … 60, default 3 | `+3d … +60d (3 … 3Ch)` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | Low:
Medium:
High: | `0
1
2` | `00
01
02` | | Cover | No cover, weather protection hood, or custom sectors | Enum_8 | 1 | No cover:
Weather protection hood:
Custom sectors: | `0
6
+255d (FFh)` | `00
06
FF` | | Number of sectors | Number of the following sector values | Uint_16 | 2 | Always 12 | `C` | `00 0C` | | Custom sector | Sector 1 … 12 is evaluated, one value per sector | Bool_1 | 1 | Inactive:
Active (default): | `0
1` | `00
01` | | Enable warning | Warning monitoring | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Enable error | Error monitoring | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | **Example: sWN ContaminationConfig** **CoLa A (ASCII)** ```text sWN{SPC}ContaminationConfig{SPC}0{SPC}3{SPC}0{SPC}0{SPC}C{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text sWN ContaminationConfig 0 3 0 0 C 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ``` ```text 02 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 30 20 33 20 30 20 30 20 43 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0F ``` ```text 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ``` **Telegram structure: sWA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Example: sWA ContaminationConfig** **CoLa A (ASCII)** ```text sWA{SPC}ContaminationConfig ``` ```text 02 73 57 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 0F ```
### Read Contamination Indication Settings [sRN ContaminationConfig] Reads the current contamination settings that define how and under which conditions the device indicates a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sRN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Example: sRN ContaminationConfig** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationConfig ``` ```text sRN ContaminationConfig ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 25 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 ``` **Telegram structure: sRA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | Inactive:
High available:
Sensitive: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | 3 … 60, default 3 | `+3d … +60d (3 … 3Ch)` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | Low:
Medium:
High: | `0
1
2` | `00
01
02` | | Cover | No cover, weather protection hood, or custom sectors | Enum_8 | 1 | No cover:
Weather protection hood:
Custom sectors: | `0
6
+255d (FFh)` | `00
06
FF` | | Number of sectors | Number of the following sector values | Uint_16 | 2 | Always 12 | `C` | `00 0C` | | Custom sector | Sector 1 … 12 is evaluated, one value per sector | Bool_1 | 1 | Inactive:
Active (default): | `0
1` | `00
01` | | Enable warning | Warning monitoring | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | | Enable error | Error monitoring | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | **Example: sRA ContaminationConfig** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationConfig{SPC}0{SPC}3{SPC}0{SPC}0{SPC}C{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 30 20 33 20 30 20 30 20 43 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 01 01 05 ```
### Read Contamination Indication Data [sRN ContaminationData] Get the current contamination indication data. **Telegram structure: sRN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Reading status of all contamination sectors | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | **Example: sRN ContaminationData** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationData ``` ```text sRN ContaminationData ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 3F ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 ``` **Telegram structure: sRA ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Reading status of all contamination sectors | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Number of sectors | Number of the following sector values | Uint_16 | 2 | Always 12 | `C` | `00 0C` | | Contamination data | Status of contamination of sector 1 … 12, one value per sector | Enum_8 | 1 | Deactivated:
Clean:
Warning:
Error: | `0
1
2
3` | `00
01
02
03` | **Example: sRA ContaminationData** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationData{SPC}C{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}2{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 43 20 31 20 31 20 31 20 31 20 31 20 32 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 00 0C 01 01 01 01 01 02 01 01 01 01 01 01 1F ```
### Read Contamination Indication Result [sRN ContaminationResult] Read the contamination result: one value for the warning and one for the error. Depending on the strategy, the state changes when one or all sectors reach warning or error. **Telegram structure: sRN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN ContaminationResult** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationResult ``` ```text sRN ContaminationResult ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 26 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Warning | Contamination warning | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | | Error | Contamination error | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | **Example: sRA ContaminationResult** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 00 09 ```
### Set Treat Blocked Sectors as Error Sectors [sWN treatBlockedSectorsAsErrorSectors] If enabled, blocked sectors get interpreted as error sectors for contamination strategy evaluation. Required user level: Authorized client. **Telegram structure: sWN treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | treatBlockedSectorsAsErrorSectors | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | | Value | Enable/ disable Treat Blocked Sectors As Error Sectors | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN treatBlockedSectorsAsErrorSectors - Enable** **CoLa A (ASCII)** ```text sWN{SPC}treatBlockedSectorsAsErrorSectors{SPC}1 ``` ```text sWN treatBlockedSectorsAsErrorSectors 1 ``` ```text 02 73 57 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 57 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 01 3F ``` ```text 73 57 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 01 ``` **Telegram structure: sWA treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | **Example: sWA treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sWA{SPC}treatBlockedSectorsAsErrorSectors ``` ```text 02 73 57 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 26 73 57 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 31 ```
### Read Treat Blocked Sectors as Error Sectors [sRN treatBlockedSectorsAsErrorSectors] Returns the state if blocked sectors are treated as error sectors for contamination strategy evaluation. **Telegram structure: sRN treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | treatBlockedSectorsAsErrorSectors | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | **Example: sRN treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sRN{SPC}treatBlockedSectorsAsErrorSectors ``` ```text sRN treatBlockedSectorsAsErrorSectors ``` ```text 02 73 52 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 52 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 1B ``` ```text 73 52 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 ``` **Telegram structure: sRA treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | treatBlockedSectorsAsErrorSectors | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | | Value | State of Treat Blocked Sectors As Error Sectors (disabled/ enabled) | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sRA treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sRA{SPC}treatBlockedSectorsAsErrorSectors{SPC}0 ``` ```text 02 73 52 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 52 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 00 34 ```
### Send Contamination Indication Data Permanently [sEN ContaminationData] Subscribe to the contamination data. After `sEA ContaminationData 1`, the device sends `sSN ContaminationData` with the state of all sectors every time the contamination state of a sector changes. Send `sEN ContaminationData 0` to stop. **Telegram structure: sEN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sEN` | `73 45 4E` | | Command | Get the contamination indication data continuously | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationData** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationData{SPC}1 ``` ```text sEN ContaminationData 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 09 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 ``` **Example: sEA ContaminationData** **CoLa A (ASCII)** ```text sEA{SPC}ContaminationData{SPC}1 ``` ```text 02 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 06 ``` **Telegram structure: sSN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Get the contamination indication data continuously | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Number of sectors | Number of the following sector values | Uint_16 | 2 | Always 12 | `C` | `00 0C` | | Contamination data | Status of contamination of sector 1 … 12, one value per sector | Enum_8 | 1 | Deactivated:
Clean:
Warning:
Error: | `0
1
2
3` | `00
01
02
03` |
### Send Contamination Indication Result Permanently [sEN ContaminationResult] Subscribe to the contamination result. After `sEA ContaminationResult 1`, the device sends `sSN ContaminationResult` every time the warning or error state changes. Send `sEN ContaminationResult 0` to stop. **Telegram structure: sEN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationResult** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationResult{SPC}1 ``` ```text sEN ContaminationResult 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 10 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Example: sEA ContaminationResult** **CoLa A (ASCII)** ```text sEA{SPC}ContaminationResult{SPC}1 ``` ```text 02 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 45 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 1F ``` **Telegram structure: sSN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Warning | Contamination warning | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | | Error | Contamination error | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` |
### Read Contamination Active Sectors [sRN ContaminationActiveSectors] Read which sectors are included in the computation of the contamination result. **Telegram structure: sRN ContaminationActiveSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | Element i is true, if the sector result i is included in the computation of the contamination results and false otherwise. | String | 26 | | `ContaminationActiveSectors` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73` | **Example: sRN ContaminationActiveSectors** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationActiveSectors ``` ```text sRN ContaminationActiveSectors ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73 6C ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73 ``` **Telegram structure: sRA ContaminationActiveSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | Element i is true, if the sector result i is included in the computation of the contamination results and false otherwise. | String | 26 | | `ContaminationActiveSectors` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73` | | Number of sectors | Number of the following sector values | Uint_16 | 2 | Always 12 | `C` | `00 0C` | | Active sector | Sector 1 … 12 is included in the contamination result, one value per sector | Bool_1 | 1 | Not included:
Included: | `0
1` | `00
01` | **Example: sRA ContaminationActiveSectors** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationActiveSectors{SPC}C{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73 20 43 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 41 63 74 69 76 65 53 65 63 74 6F 72 73 20 00 0C 01 01 01 01 01 01 01 01 01 01 01 01 4F ```
## Ethernet
### Set IP Address [sWN EIIpAddr] Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with the network in which the scanner is used, else the device cannot be found anymore. **Telegram structure: sWN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | | IP address | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sWN EIIpAddr 192.168.0.2** **CoLa A (ASCII)** ```text sWN{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}0{SPC}2 ``` ```text sWN EIIpAddr C0 A8 0 2 ``` ```text 02 73 57 4E 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 06 ``` ```text 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 ``` **Telegram structure: sWA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | **Example: sWA EIIpAddr** **CoLa A (ASCII)** ```text sWA{SPC}EIIpAddr ``` ```text 02 73 57 41 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 41 20 45 49 49 70 41 64 64 72 20 63 ```
### Read IP Address [sRN EIIpAddr] Read the IP address of the device. **Telegram structure: sRN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | **Example: sRN EIIpAddr** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddr ``` ```text sRN EIIpAddr ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 45 49 49 70 41 64 64 72 49 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 ``` **Telegram structure: sRA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 70 41 64 64 72` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | **Example: sRA EIIpAddr** **CoLa A (ASCII)** ```text sRA{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}0{SPC}1 ``` ```text 02 73 52 41 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 45 49 49 70 41 64 64 72 20 C0 A8 00 01 0F ```
### Read IP Address Assigned by DHCP [sRN EIIpAddrDHCP] Read the IP address assigned by DHCP. The address assignment mode must be DHCP. **Telegram structure: sRN EIIpAddrDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address assigned by DHCP | String | 12 | | `EIIpAddrDHCP` | `45 49 49 70 41 64 64 72 44 48 43 50` | **Example: sRN EIIpAddrDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddrDHCP ``` ```text sRN EIIpAddrDHCP ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 56 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 ``` **Telegram structure: sRA EIIpAddrDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address assigned by DHCP | String | 12 | | `EIIpAddrDHCP` | `45 49 49 70 41 64 64 72 44 48 43 50` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 …FF)` | `00 … FF` | **Example: sRA EIIpAddrDHCP** **CoLa A (ASCII)** ```text sRA{SPC}EIIpAddrDHCP{SPC}C0{SPC}A8{SPC}0{SPC}1 ``` ```text 02 73 52 41 20 45 49 49 70 41 64 64 72 44 48 43 50 20 43 30 20 41 38 20 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 41 20 45 49 49 70 41 64 64 72 44 48 43 50 20 C0 A8 00 01 10 ```
### Set Mode for Ethernet Address Assignment [sWN EIAddrMode] Select a static IP address or DHCP. Required user level: Authorized client. **Telegram structure: sWN EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set mode for ethernet address assignment | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | | Ethernet address assignment | Static IP address /DHCP | Enum_8 | 1 | Static:
DHCP: | `0
1` | `00
01` | **Example: sWN EIAddrMode** **CoLa A (ASCII)** ```text sWN{SPC}EIAddrMode{SPC}0 ``` ```text sWN EIAddrMode 0 ``` ```text 02 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 00 76 ``` ```text 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 00 ``` **Telegram structure: sWA EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set mode for ethernet address assignment | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | **Example: sWA EIAddrMode** **CoLa A (ASCII)** ```text sWA{SPC}EIAddrMode ``` ```text 02 73 57 41 20 45 49 41 64 64 72 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 41 20 45 49 41 64 64 72 4D 6F 64 65 20 79 ```
### Set Fallback for DHCP [sWN EIDHCPFallback] Select what the device does if DHCP fails: use the static IP address or retry DHCP. Required user level: Authorized client. **Telegram structure: sWN EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set fallback for DHCP | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | | Fallback ethernet address assignment | Use Static IP address /Retry DHCP | Enum_8 | 1 | Static IP address:
DHCP retry: | `0
1` | `00
01` | **Example: sWN EIDHCPFallback - Retry DHCP** **CoLa A (ASCII)** ```text sWN{SPC}EIDHCPFallback{SPC}1 ``` ```text sWN EIDHCPFallback 1 ``` ```text 02 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 01 54 ``` ```text 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 01 ``` **Telegram structure: sWA EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set fallback for DHCP | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | **Example: sWA EIDHCPFallback** **CoLa A (ASCII)** ```text sWA{SPC}EIDHCPFallback ``` ```text 02 73 57 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 5A ```
### Set Ethernet Gateway [sWN EIgate] Set the Ethernet gateway. Save the parameters permanently; the change takes effect after a reboot. The setting must match the network, otherwise the device cannot be reached. Required user level: Authorized client. **Telegram structure: sWN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Set values | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EIgate** **CoLa A (ASCII)** ```text sWN{SPC}EIgate{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN EIgate 0 0 0 0 ``` ```text 02 73 57 4E 20 45 49 67 61 74 65 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 67 61 74 65 20 00 00 00 00 71 ``` ```text 73 57 4E 20 45 49 67 61 74 65 20 00 00 00 00 ``` **Telegram structure: sWA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sWA EIgate** **CoLa A (ASCII)** ```text sWA{SPC}EIgate ``` ```text 02 73 57 41 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 67 61 74 65 20 7E ```
### Read Ethernet Gateway [sRN EIgate] Read the Ethernet gateway (TCP/ IP). **Telegram structure: sRN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sRN EIgate** **CoLa A (ASCII)** ```text sRN{SPC}EIgate ``` ```text sRN EIgate ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 67 61 74 65 54 ``` ```text 73 52 4E 20 45 49 67 61 74 65 ``` **Telegram structure: sRA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway address | `0 …+255d (00 … FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00 … FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00 … FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sRA EIgate 192.168.0.1** **CoLa A (ASCII)** ```text sRA{SPC}EIgate{SPC}C0{SPC}A8{SPC}00{SPC}01 ``` ```text 02 73 52 41 20 45 49 67 61 74 65 20 43 30 20 41 38 20 30 30 20 30 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 45 49 67 61 74 65 20 C0 A8 00 01 12 ```
### Read Ethernet Gateway Assigned by DHCP [sRN EIgateDHCP] Read the Ethernet gateway assigned by DHCP. The address assignment mode must be DHCP. **Telegram structure: sRN EIgateDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read ethernet gateway IP address assigned by DHCP | String | 10 | | `EIgateDHCP` | `45 49 67 61 74 65 44 48 43 50` | **Example: sRN EIgateDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EIgateDHCP ``` ```text sRN EIgateDHCP ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 4B ``` ```text 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 ``` **Telegram structure: sRA EIgateDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read ethernet gateway IP address assigned by DHCP | String | 10 | | `EIgateDHCP` | `45 49 67 61 74 65 44 48 43 50` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIgateDHCP** **CoLa A (ASCII)** ```text sRA{SPC}EIgateDHCP{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 49 67 61 74 65 44 48 43 50 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 67 61 74 65 44 48 43 50 20 00 00 00 00 64 ```
### Set IP Mask [sWN EImask] Set the subnet mask. Save the parameters permanently; the change takes effect after a reboot. The setting must match the network, otherwise the device cannot be reached. Required user level: Authorized client. **Telegram structure: sWN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Set values | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EImask** **CoLa A (ASCII)** ```text sWN{SPC}EImask{SPC}FF{SPC}FF{SPC}FF{SPC}0 ``` ```text sWN EImask FF FF FF 0 ``` ```text 02 73 57 4E 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 46 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FF 00 8D ``` ```text 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FF 00 ``` **Telegram structure: sWA EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sWA EImask** **CoLa A (ASCII)** ```text sWA{SPC}EImask ``` ```text 02 73 57 41 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 6D 61 73 6B 20 7D ```
### Read IP Mask [sRN EImask] Read the subnet mask of the device. **Telegram structure: sRN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sRN EImask** **CoLa A (ASCII)** ```text sRN{SPC}EImask ``` ```text sRN EImask ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 6D 61 73 6B 57 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B ``` **Telegram structure: sRA EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00 … FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00 … FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00 … FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sRA EImask 255.255.254.0** **CoLa A (ASCII)** ```text sRA{SPC}EImask{SPC}FF{SPC}FF{SPC}FE{SPC}00 ``` ```text 02 73 52 41 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 45 20 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 45 49 6D 61 73 6B 20 FF FF FE 00 86 ```
### Read IP Mask Assigned by DHCP [sRN EImaskDHCP] Read the subnet mask assigned by DHCP. The address assignment mode must be DHCP. **Telegram structure: sRN EImaskDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask assigned by DHCP | String | 10 | | `EImaskDHCP` | `45 49 6D 61 73 6B 44 48 43 50` | **Example: sRN EImaskDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EImaskDHCP ``` ```text sRN EImaskDHCP ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 48 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 ``` **Telegram structure: sRA EImaskDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask assigned by DHCP | String | 10 | | `EImaskDHCP` | `45 49 6D 61 73 6B 44 48 43 50` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EImaskDHCP** **CoLa A (ASCII)** ```text sRA{SPC}EImaskDHCP{SPC}FF{SPC}FF{SPC}FF{SPC}0 ``` ```text 02 73 52 41 20 45 49 6D 61 73 6B 44 48 43 50 20 46 46 20 46 46 20 46 46 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 6D 61 73 6B 44 48 43 50 20 FF FF FF 00 98 ```
## Inputs and Outputs
### Read State of the Ports [sRN LIDportstate] Read the state and the change counter of all ports. The answer contains 8 internal (physical) ports and 8 external (virtual) ports. A tri-state port is neither input nor output; it is set inactive in the configuration. **Telegram structure: sRN LIDportstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 12 | | `LIDportstate` | `4C 49 44 70 6F 72 74 73 74 61 74 65` | **Example: sRN LIDportstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDportstate ``` ```text sRN LIDportstate ``` ```text 02 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 60 ``` ```text 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDportstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Port state | String | 12 | | `LIDportstate` | `4C 49 44 70 6F 72 74 73 74 61 74 65` | | Version | Version number | Uint_16 | 2 | | `0 … FFFF` | `00 00 … FF FF` | | System counter | Time in µs since power-up; restarts at 0 after about 71 min | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Internal port state | Port 1 … 8, one state and one counter per port | Enum_8 | 1 | Output voltage low (relay open):
Output voltage high (relay closed):
Tri-state (port inactive):
Input voltage high (level) or low to high (edge):
Input voltage low (level) or high to low (edge): | `0
1
2
3
4` | `00
01
02
03
04` | | Internal port counter | Number of state changes of the port | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | External port state | Virtual port 1 … 8, one state and one counter per port | Enum_8 | 1 | Output voltage low (relay open):
Output voltage high (relay closed):
Tri-state (port inactive):
Input voltage high (level) or low to high (edge):
Input voltage low (level) or high to low (edge): | `0
1
2
3
4` | `00
01
02
03
04` | | External port counter | Number of state changes of the port | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Time | Time data present | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Year | Time of the last change | Uint_16 | 2 | | `7B2 … 833` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `1 … C` | `01 … 0C` | | Day | | Uint_8 | 1 | | `1 … 1F` | `01 … 1F` | | Hour | | Uint_8 | 1 | | `0 … 17` | `00 … 17` | | Minute | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Second | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `0 … F423F` | `00 00 00 00 … 00 0F 42 3F` | **Example: sRA LIDportstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDportstate{SPC}0{SPC}9DBED0{SPC}0{SPC}1{SPC}1{SPC}1{SPC}4{SPC}0{SPC}4{SPC}0{SPC}4{SPC}0{SPC}4{SPC}0{SPC}1{SPC}1{SPC}1{SPC}1{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}0{SPC}A{SPC}52850 ``` ```text 02 73 52 41 20 4C 49 44 70 6F 72 74 73 74 61 74 65 20 30 20 39 44 42 45 44 30 20 30 20 31 20 31 20 31 20 34 20 30 20 34 20 30 20 34 20 30 20 34 20 30 20 31 20 31 20 31 20 31 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 37 42 32 20 31 20 31 20 30 20 30 20 41 20 35 32 38 35 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 74 73 52 41 20 4C 49 44 70 6F 72 74 73 74 61 74 65 20 00 00 00 9D BE D0 00 00 00 00 01 01 00 00 00 01 04 00 00 00 00 04 00 00 00 00 04 00 00 00 00 04 00 00 00 00 01 00 00 00 01 01 00 00 00 01 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 00 01 07 B2 01 01 00 00 0A 00 05 28 50 7E ```
### Read Port Configuration [sRN PortConfiguration] Read the configuration of the 8 digital inputs and outputs. The answer contains one record per port. **Telegram structure: sRN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN PortConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}PortConfiguration ``` ```text sRN PortConfiguration ``` ```text 02 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 26 ``` ```text 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Configuration of all I/Os | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Port type | Port 1 … 8, the following rows repeat for every port | Enum_8 | 1 | Input:
Output: | `0
1` | `00
01` | | Port name length | Number of characters of the port name | Uint_16 | 2 | | `0 … 20` | `00 00 … 00 20` | | Port name | Name of the port | String | Length | | `InOut1` | `49 6E 4F 75 74 31` | | Input logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Debouncing | Debouncing time in ms | Uint_16 | 2 | Maximum 10,000 ms | `0 … 2710` | `00 00 … 27 10` | | Reserved | - | Enum_8 | 1 | | `1` | `01` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Output logic | Logic of the output | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Output mode | PNP, NPN, or push-pull | Enum_8 | 1 | PNP:
NPN:
Push-pull: | `0
1
2` | `00
01
02` | | Restart type | Restart behavior of the output after an event | Enum_8 | 1 | Immediately:
Time:
Input: | `0
1
2` | `00
01
02` | | Restart time | Only with restart type Time, in ms | Uint_32 | 4 | 20 … 600,000 ms | `14 … 927C0` | `00 00 00 14 … 00 09 27 C0` | | Restart input | Only with restart type Input, input used for the restart | Uint_16 | 2 | | `1 … 8` | `00 01 … 00 08` | | Combination | Logic for combining several sources | Enum_8 | 1 | AND:
OR:
XOR: | `0
1
2` | `00
01
02` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Number of sources | Number of combined sources; 0 for inputs | Uint_16 | 2 | | `0 … FFFF` | `00 00 … FF FF` | | Source name | Repeats with the next two rows for every source | String | 4 | Device not ready:
Field evaluation xx:
SOPAS command xx:
Input xx: | `DRDY
FExx
SCxx
INxx` | `44 52 44 59
46 45 x x
53 43 x x
49 4E x x` | | Source inverted | Invert the source signal | Bool_1 | 1 | Not inverted:
Inverted: | `0
1` | `00
01` | | Reserved | - | Uint_8 | 1 | | `0` | `00` | | Reserved | - | Uint_8 | 1 | | `0` | `00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | **Example: sRA PortConfiguration** **CoLa A (ASCII)** ```text sRA{SPC}PortConfiguration{SPC}1{SPC}6{SPC}InOut1{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}FE01{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut2{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut3{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut4{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut5{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut6{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut7{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut8{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 36 20 49 6E 4F 75 74 31 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 46 45 30 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 32 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 33 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 34 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 35 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 36 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 37 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 38 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 01 7A 73 52 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 46 45 30 31 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 08 ```
### Set Port Configuration [sWN PortConfiguration] Write the configuration of the digital inputs and outputs, with one record per port. The record has the same structure as in the answer of `sRN PortConfiguration`; read the current configuration first and change only the values you need. **Telegram structure: sWN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Configuration of the given ports | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Port type | Port 1 … 8, the following rows repeat for every port | Enum_8 | 1 | Input:
Output: | `0
1` | `00
01` | | Port name length | Number of characters of the port name | Uint_16 | 2 | | `0 … 20` | `00 00 … 00 20` | | Port name | Name of the port | String | Length | | `InOut1` | `49 6E 4F 75 74 31` | | Input logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Debouncing | Debouncing time in ms | Uint_16 | 2 | Maximum 10,000 ms | `0 … 2710` | `00 00 … 27 10` | | Reserved | - | Enum_8 | 1 | | `1` | `01` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Output logic | Logic of the output | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Output mode | PNP, NPN, or push-pull | Enum_8 | 1 | PNP:
NPN:
Push-pull: | `0
1
2` | `00
01
02` | | Restart type | Restart behavior of the output after an event | Enum_8 | 1 | Immediately:
Time:
Input: | `0
1
2` | `00
01
02` | | Restart time | Only with restart type Time, in ms | Uint_32 | 4 | 20 … 600,000 ms | `14 … 927C0` | `00 00 00 14 … 00 09 27 C0` | | Restart input | Only with restart type Input, input used for the restart | Uint_16 | 2 | | `1 … 8` | `00 01 … 00 08` | | Combination | Logic for combining several sources | Enum_8 | 1 | AND:
OR:
XOR: | `0
1
2` | `00
01
02` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Number of sources | Number of combined sources; 0 for inputs | Uint_16 | 2 | | `0 … FFFF` | `00 00 … FF FF` | | Source name | Repeats with the next two rows for every source | String | 4 | Device not ready:
Field evaluation xx:
SOPAS command xx:
Input xx: | `DRDY
FExx
SCxx
INxx` | `44 52 44 59
46 45 x x
53 43 x x
49 4E x x` | | Source inverted | Invert the source signal | Bool_1 | 1 | Not inverted:
Inverted: | `0
1` | `00
01` | | Reserved | - | Uint_8 | 1 | | `0` | `00` | | Reserved | - | Uint_8 | 1 | | `0` | `00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | | Reserved | - | Uint_16 | 2 | | `0` | `00 00` | **Example: sWN PortConfiguration** **CoLa A (ASCII)** ```text sWN{SPC}PortConfiguration{SPC}1{SPC}6{SPC}InOut1{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}FE01{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut2{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut3{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut4{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut5{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut6{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut7{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut8{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN PortConfiguration 1 6 InOut1 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 FE01 0 0 0 0 0 0 0 1 6 InOut2 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 0 6 InOut3 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut4 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut5 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut6 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 1 6 InOut7 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut8 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 ``` ```text 02 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 36 20 49 6E 4F 75 74 31 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 46 45 30 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 32 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 33 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 34 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 35 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 36 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 37 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 38 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 01 7A 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 46 45 30 31 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 02 ``` ```text 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 46 45 30 31 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sWA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Configuration of the given ports | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sWA PortConfiguration** **CoLa A (ASCII)** ```text sWA{SPC}PortConfiguration ``` ```text 02 73 57 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 0C ```
### Read State of the Inputs [sRN LIDinputstate] Read the state of the inputs. **Telegram structure: sRN LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Input state | String | 13 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | **Example: sRN LIDinputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDinputstate ``` ```text sRN LIDinputstate ``` ```text 02 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 0F ``` ```text 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Output state | String | 13 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | | Version | Version number | Uint_16 | 2 | | `0 … FFFF` | `00 00 … FF FF` | | System counter | Time in µs since power-up; restarts at 0 after about 71 min | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Input state | Port 1 … 8, one value per port | Enum_8 | 1 | Not active:
Active:
Not used as input: | `0
1
2` | `00
01
02` | | Time | Time data present | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Year | Time of the last change | Uint_16 | 2 | | `7B2 … 833` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `1 … C` | `01 … 0C` | | Day | | Uint_8 | 1 | | `1 … 1F` | `01 … 1F` | | Hour | | Uint_8 | 1 | | `0 … 17` | `00 … 17` | | Minute | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Second | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `0 … F423F` | `00 00 00 00 … 00 0F 42 3F` | **Example: sRA LIDinputstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDinputstate{SPC}1{SPC}920AB8{SPC}2{SPC}2{SPC}0{SPC}0{SPC}0{SPC}0{SPC}2{SPC}2{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}0{SPC}9{SPC}8B678 ``` ```text 02 73 52 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 31 20 39 32 30 41 42 38 20 32 20 32 20 30 20 30 20 30 20 30 20 32 20 32 20 31 20 37 42 32 20 31 20 31 20 30 20 30 20 39 20 38 42 36 37 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 00 01 00 92 0A B8 02 02 00 00 00 00 02 02 00 01 07 B2 01 01 00 00 09 00 08 B6 78 7A ```
### Read State of the Outputs [sRN LIDoutputstate] Read the state of the outputs and how often each output was active. **Telegram structure: sRN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | **Example: sRN LIDoutputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text 02 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 66 ``` ```text 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Version | Version number | Uint_16 | 2 | | `0 … FFFF` | `00 00 … FF FF` | | System counter | Time in µs since power-up; restarts at 0 after about 71 min | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Output state | Port 1 … 8, one state and one counter per port | Enum_8 | 1 | Not active:
Active:
Not used as output: | `0
1
2` | `00
01
02` | | Output counter | Number of times the output was active | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Time | Time data present | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Year | Time of the last change | Uint_16 | 2 | | `7B2 … 833` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `1 … C` | `01 … 0C` | | Day | | Uint_8 | 1 | | `1 … 1F` | `01 … 1F` | | Hour | | Uint_8 | 1 | | `0 … 17` | `00 … 17` | | Minute | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Second | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `0 … F423F` | `00 00 00 00 … 00 0F 42 3F` | **Example: sRA LIDoutputstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDoutputstate{SPC}1{SPC}9DBAE8{SPC}0{SPC}1{SPC}1{SPC}1{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}0{SPC}A{SPC}52850 ``` ```text 02 73 52 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 20 39 44 42 41 45 38 20 30 20 31 20 31 20 31 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 31 20 31 20 31 20 31 20 37 42 32 20 31 20 31 20 30 20 30 20 41 20 35 32 38 35 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4E 73 52 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 00 01 00 9D BA E8 00 00 00 00 01 01 00 00 00 01 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 01 00 00 00 01 01 00 00 00 01 00 01 07 B2 01 01 00 00 0A 00 05 28 50 45 ```
### Receive Output State by Event [sEN LIDoutputstate] Subscribe to the output state. After `sEA LIDoutputstate 1`, the device sends `sSN LIDoutputstate` every time an output state changes, with the structure of `sRA LIDoutputstate`. Send `sEN LIDoutputstate 0` to stop. **Telegram structure: sEN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | | Start/stop | Enum_8 | 1 | Start:
Stop: | `1
0` | `01
00` | **Example: sEN LIDoutputstate** **CoLa A (ASCII)** ```text sEN{SPC}LIDoutputstate{SPC}1 ``` ```text sEN LIDoutputstate 1 ``` ```text 02 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 50 ``` ```text 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 ``` **Example: sEA LIDoutputstate** **CoLa A (ASCII)** ```text sEA{SPC}LIDoutputstate{SPC}1 ``` ```text 02 73 45 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 45 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 5F ``` **Telegram structure: sRA/sSN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA / sSN` | `73 52 41 / 73 53 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | Version | Version number | Uint_16 | 2 | | `0 … FFFF` | `00 00 … FF FF` | | System counter | Time in µs since power-up; restarts at 0 after about 71 min | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Output state | Port 1 … 8, one state and one counter per port | Enum_8 | 1 | Not active:
Active:
Not used as output: | `0
1
2` | `00
01
02` | | Output counter | Number of times the output was active | Uint_32 | 4 | | `0 … FFFFFFFF` | `00 00 00 00 … FF FF FF FF` | | Time | Time data present | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Year | Time of the last change | Uint_16 | 2 | | `7B2 … 833` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `1 … C` | `01 … 0C` | | Day | | Uint_8 | 1 | | `1 … 1F` | `01 … 1F` | | Hour | | Uint_8 | 1 | | `0 … 17` | `00 … 17` | | Minute | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Second | | Uint_8 | 1 | | `0 … 3B` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `0 … F423F` | `00 00 00 00 … 00 0F 42 3F` | **Example: sSN LIDoutputstate** **CoLa A (ASCII)** ```text sSN{SPC}LIDoutputstate{SPC}1{SPC}E1764E77{SPC}1{SPC}1{SPC}0{SPC}3{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}0{SPC}3{SPC}0{SPC}3{SPC}1{SPC}7EA{SPC}A{SPC}1{SPC}10{SPC}36{SPC}24{SPC}E57E0 ``` ```text 02 73 53 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 20 45 31 37 36 34 45 37 37 20 31 20 31 20 30 20 33 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 30 20 33 20 30 20 33 20 31 20 37 45 41 20 41 20 31 20 31 30 20 33 36 20 32 34 20 45 35 37 45 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4E 73 53 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 00 01 E1 76 4E 77 01 00 00 00 01 00 00 00 00 03 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 00 00 00 00 03 00 00 00 00 03 00 01 07 EA 0A 01 10 36 24 00 0E 57 E0 B7 ```
### Set Output State [sMN mDOSetOutput] Set an output to active or not active. The port must be configured as output, with the source **SOPAS command**. Otherwise, the device answers with status `0`. **Telegram structure: sMN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Output number | | Uint_8 | 1 | | `1 … 3` | `01 … 03` | | Output state | | Enum_8 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sMN mDOSetOutput - Set output 1 to not active** **CoLa A (ASCII)** ```text sMN{SPC}mDOSetOutput{SPC}1{SPC}0 ``` ```text sMN mDOSetOutput 1 0 ``` ```text 02 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 00 6A ``` ```text 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 00 ``` **Telegram structure: sAN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Status Code | Status code | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mDOSetOutput** **CoLa A (ASCII)** ```text sAN{SPC}mDOSetOutput{SPC}1 ``` ```text 02 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 66 ```
### Reset Output Counter [sMN LIDrstoutpcnt] Reset the counter which keeps track of how often an digital output has been active (and not active). Information from the counter is included in LIDoutputstate. Required user level: Authorized client. **Telegram structure: sMN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | **Example: sMN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sMN{SPC}LIDrstoutpcnt ``` ```text sMN LIDrstoutpcnt ``` ```text 02 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` ```text 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 ``` **Telegram structure: sAN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | | Status code | Code number | Bool_1 | 1 | Success:
Error: | `0
1` | `00
01` | **Example: sAN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sAN{SPC}LIDrstoutpcnt{SPC}0 ``` ```text 02 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 00 2F ```
### Read Device Temperature Alarm Status [sRN temperatureAlarmStatus] Read whether the device temperature alarm is active. The thresholds are set with `sWN temperatureAlarmConfiguration`. Required user level: Authorized client. **Telegram structure: sRN temperatureAlarmStatus** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Device temperature alarm status | String | 22 | | `temperatureAlarmStatus` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73` | **Example: sRN temperatureAlarmStatus** **CoLa A (ASCII)** ```text sRN{SPC}temperatureAlarmStatus ``` ```text sRN temperatureAlarmStatus ``` ```text 02 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 44 ``` ```text 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 ``` **Telegram structure: sRA temperatureAlarmStatus** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Device temperature alarm status | String | 22 | | `temperatureAlarmStatus` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73` | | Data | Alarm state | Bool_1 | 1 | Disabled:
Enabled: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sRA temperatureAlarmStatus** **CoLa A (ASCII)** ```text sRA{SPC}temperatureAlarmStatus{SPC}1 ``` ```text 02 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 20 01 6A ```
### Set Device Temperature Alarm Configuration [sWN temperatureAlarmConfiguration] Sets the upper and lower threshold for the temperature alarm status. Required user level: Authorized client. **Telegram structure: sWN temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Data 1 | Upper threshold [°C] | Int_8 | 1 | Default: 55 | `-128d ... +127d(80h ... 7Fh)` | `80 ... 7F` | | Data 2 | Lower threshold [°C] | Int_8 | 1 | Default: 50 | `-128d ... +127d(80h ... 7Fh)` | `80 ... 7F` | **Example: sWN temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sWN{SPC}temperatureAlarmConfiguration{SPC}37{SPC}32 ``` ```text sWN temperatureAlarmConfiguration 37 32 ``` ```text 02 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 33 37 20 33 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 00 ``` ```text 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 ``` **Telegram structure: sWA temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sWA temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sWA{SPC}temperatureAlarmConfiguration ``` ```text 02 73 57 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 22 73 57 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 0A ```
### Read Device Temperature Alarm Configuration [sRN temperatureAlarmConfiguration] Returns the upper and lower threshold for the temperature alarm status. Required user level: Authorized client. **Telegram structure: sRN temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}temperatureAlarmConfiguration ``` ```text sRN temperatureAlarmConfiguration ``` ```text 02 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 ``` ```text 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Data 1 | Upper threshold [°C] | Int_8 | 1 | Default: 55 | `-128d ... +127d(80h ... 7Fh)` | `80 ... 7F` | | Data 2 | Lower threshold [°C] | Int_8 | 1 | Default: 50 | `-128d ... +127d(80h ... 7Fh)` | `80 ... 7F` | **Example: sRA temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sRA{SPC}temperatureAlarmConfiguration{SPC}37{SPC}32 ``` ```text 02 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 33 37 20 33 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 0A ```
## Measurement Data Output
### Read IMU Data [sRN InertialMeasurementUnit] Read the latest IMU data. To receive the IMU data continuously as `sSN InertialMeasurementUnit` events, send `sEN InertialMeasurementUnit 1`; send `sEN InertialMeasurementUnit 0` to stop. For continuous IMU data at 100 Hz, prefer the Compact IMU output (telegram type 7). Required user level: Authorized client. **Telegram structure: sRN InertialMeasurementUnit** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IMU data | String | 23 | | `InertialMeasurementUnit` | `49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74` | **Example: sRN InertialMeasurementUnit** **CoLa A (ASCII)** ```text sRN{SPC}InertialMeasurementUnit ``` ```text sRN InertialMeasurementUnit ``` ```text 02 73 52 4E 20 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 4E 20 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 03 ``` ```text 73 52 4E 20 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 ``` **Telegram structure: sRA InertialMeasurementUnit** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IMU data | String | 23 | | `InertialMeasurementUnit` | `49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74` | | Acceleration X | Acceleration along the X axis, including gravity | Float_32 | 4 | m/s² | `IEEE 754 float, hex` | `4 bytes` | | Acceleration Y | Acceleration along the Y axis, including gravity | Float_32 | 4 | m/s² | `IEEE 754 float, hex` | `4 bytes` | | Acceleration Z | Acceleration along the Z axis, including gravity | Float_32 | 4 | m/s² | `IEEE 754 float, hex` | `4 bytes` | | Angular velocity X | Rotation rate around the X axis | Float_32 | 4 | rad/s | `IEEE 754 float, hex` | `4 bytes` | | Angular velocity Y | Rotation rate around the Y axis | Float_32 | 4 | rad/s | `IEEE 754 float, hex` | `4 bytes` | | Angular velocity Z | Rotation rate around the Z axis | Float_32 | 4 | rad/s | `IEEE 754 float, hex` | `4 bytes` | | Orientation W | Orientation as quaternion | Float_32 | 4 | | `IEEE 754 float, hex` | `4 bytes` | | Orientation X | Orientation as quaternion | Float_32 | 4 | | `IEEE 754 float, hex` | `4 bytes` | | Orientation Y | Orientation as quaternion | Float_32 | 4 | | `IEEE 754 float, hex` | `4 bytes` | | Orientation Z | Orientation as quaternion | Float_32 | 4 | | `IEEE 754 float, hex` | `4 bytes` | | Time stamp | Time of the measurement in µs since power-up | Uint_64 | 8 | µs | `0 … FFFFFFFFFFFFFFFF` | `8 bytes` | **Example: sRA InertialMeasurementUnit** **CoLa A (ASCII)** ```text sRA{SPC}InertialMeasurementUnit{SPC}3DCDF229{SPC}BDA6B7D8{SPC}411C2520{SPC}00000000{SPC}00000000{SPC}BA8BA16F{SPC}3F596000{SPC}B9000000{SPC}BC010000{SPC}3F072C00{SPC}7D6323159 ``` ```text 02 73 52 41 20 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 20 33 44 43 44 46 32 32 39 20 42 44 41 36 42 37 44 38 20 34 31 31 43 32 35 32 30 20 30 30 30 30 30 30 30 30 20 30 30 30 30 30 30 30 30 20 42 41 38 42 41 31 36 46 20 33 46 35 39 36 30 30 30 20 42 39 30 30 30 30 30 30 20 42 43 30 31 30 30 30 30 20 33 46 30 37 32 43 30 30 20 37 44 36 33 32 33 31 35 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 52 41 20 49 6E 65 72 74 69 61 6C 4D 65 61 73 75 72 65 6D 65 6E 74 55 6E 69 74 20 3D CD F2 29 BD A6 B7 D8 41 1C 25 20 00 00 00 00 00 00 00 00 BA 8B A1 6F 3F 59 60 00 B9 00 00 00 BC 01 00 00 3F 07 2C 00 00 00 00 07 D6 32 31 59 49 ```
### Set Data Output Mode [sWN dataOutputMode] Select the measurement data output. Firmware V1.1.0 supports Compact over TCP and Native ROS 2. Required user level: Authorized client. **Telegram structure: sWN dataOutputMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Data output mode | String | 14 | | `dataOutputMode` | `64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65` | | Value | Data output mode | Enum_8 | 1 | Disable:
TCP Compact:
Native ROS 2: | `0
1
3` | `00
01
03` | **Example: sWN dataOutputMode** **CoLa A (ASCII)** ```text sWN{SPC}dataOutputMode{SPC}1 ``` ```text sWN dataOutputMode 1 ``` ```text 02 73 57 4E 20 64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65 20 01 67 ``` ```text 73 57 4E 20 64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65 20 01 ``` **Telegram structure: sWA dataOutputMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 14 | | `dataOutputMode` | `64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65` | **Example: sWA dataOutputMode** **CoLa A (ASCII)** ```text sWA{SPC}dataOutputMode ``` ```text 02 73 57 41 20 64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 64 61 74 61 4F 75 74 70 75 74 4D 6F 64 65 20 69 ```
### Set Compact Telegram Type 6 Content [sWN compactTelegramType6Content] Define which data channels are serialized in Compact telegram type 6. See [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-6-scan-data-multiscan200). Required user level: Authorized client. **Telegram structure: sWN compactTelegramType6Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Defines which data channels are serialized in the compact output of the telegram type 6 (multiScan270 specific compact format). | String | 27 | | `compactTelegramType6Content` | `63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74` | | includeRssi | If true, RSSIs are serialized | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | includeProperties | If true, properties are serialized | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | includeAmbientLight | If true, ambient light is serialized | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | reserved | | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | **Example: sWN compactTelegramType6Content** **CoLa A (ASCII)** ```text sWN{SPC}compactTelegramType6Content{SPC}1{SPC}0{SPC}1{SPC}0 ``` ```text sWN compactTelegramType6Content 1 0 1 0 ``` ```text 02 73 57 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74 20 31 20 30 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 57 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74 20 01 00 01 00 6B ``` ```text 73 57 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74 20 01 00 01 00 ``` **Telegram structure: sWA compactTelegramType6Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 27 | | `compactTelegramType6Content` | `63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74` | **Example: sWA compactTelegramType6Content** **CoLa A (ASCII)** ```text sWA{SPC}compactTelegramType6Content ``` ```text 02 73 57 41 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 57 41 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 36 43 6F 6E 74 65 6E 74 20 64 ```
### Write ROS Parent Frame ID [sWN rosParentFrameId] Set the parent frame ID of the published Native ROS 2 topics. Required user level: Authorized client. **Telegram structure: sWN rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | | Parent frame ID length | Number of characters of parent frame id | Uint_16 | 2 | 0 … 64 | `5` | `00 05` | | Parent frame ID | Parent frame ID of the published topics | String | Length | Maximum 64 characters | `world` | `77 6F 72 6C 64` | **Example: sWN rosParentFrameId** **CoLa A (ASCII)** ```text sWN{SPC}rosParentFrameId{SPC}5{SPC}world ``` ```text sWN rosParentFrameId 5 world ``` ```text 02 73 57 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 35 20 77 6F 72 6C 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 00 05 77 6F 72 6C 64 2F ``` ```text 73 57 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 00 05 77 6F 72 6C 64 ``` **Telegram structure: sWA rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | **Example: sWA rosParentFrameId** **CoLa A (ASCII)** ```text sWA{SPC}rosParentFrameId ``` ```text 02 73 57 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 47 ```
### Read ROS Parent Frame ID [sRN rosParentFrameId] Read the parent frame ID of the published Native ROS 2 topics. Required user level: Authorized client. **Telegram structure: sRN rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | **Example: sRN rosParentFrameId** **CoLa A (ASCII)** ```text sRN{SPC}rosParentFrameId ``` ```text sRN rosParentFrameId ``` ```text 02 73 52 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 6D ``` ```text 73 52 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 ``` **Telegram structure: sRA rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | | Parent frame ID length | Number of characters of parent frame id | Uint_16 | 2 | 0 … 64 | `5` | `00 05` | | Parent frame ID | Parent frame ID of the published topics | String | Length | Maximum 64 characters | `world` | `77 6F 72 6C 64` | **Example: sRA rosParentFrameId** **CoLa A (ASCII)** ```text sRA{SPC}rosParentFrameId{SPC}5{SPC}world ``` ```text 02 73 52 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 35 20 77 6F 72 6C 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 00 05 77 6F 72 6C 64 25 ```
### Write ROS Frame ID [sWN rosFrameId] Set the frame ID of the published Native ROS 2 topics. Required user level: Authorized client. **Telegram structure: sWN rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `72 6F 73 46 72 61 6D 65 49 64` | | Frame ID length | Number of characters of frame id | Uint_16 | 2 | 0 … 64 | `B` | `00 0B` | | Frame ID | Frame ID of the published topics | String | Length | Maximum 64 characters | `front_lidar` | `66 72 6F 6E 74 5F 6C 69 64 61 72` | **Example: sWN rosFrameId - Frame ID is "front_lidar"** **CoLa A (ASCII)** ```text sWN{SPC}rosFrameId{SPC}B{SPC}front_lidar ``` ```text sWN rosFrameId B front_lidar ``` ```text 02 73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64 20 42 20 66 72 6F 6E 74 5F 6C 69 64 61 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64 20 00 0B 66 72 6F 6E 74 5F 6C 69 64 61 72 33 ``` ```text 73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64 20 00 0B 66 72 6F 6E 74 5F 6C 69 64 61 72 ``` **Telegram structure: sWA rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `72 6F 73 46 72 61 6D 65 49 64` | **Example: sWA rosFrameId** **CoLa A (ASCII)** ```text sWA{SPC}rosFrameId ``` ```text 02 73 57 41 20 72 6F 73 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 41 20 72 6F 73 46 72 61 6D 65 49 64 20 7B ```
### Read ROS Frame ID [sRN rosFrameId] Read the frame ID of the published Native ROS 2 topics. Required user level: Authorized client. **Telegram structure: sRN rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `72 6F 73 46 72 61 6D 65 49 64` | **Example: sRN rosFrameId** **CoLa A (ASCII)** ```text sRN{SPC}rosFrameId ``` ```text sRN rosFrameId ``` ```text 02 73 52 4E 20 72 6F 73 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 72 6F 73 46 72 61 6D 65 49 64 51 ``` ```text 73 52 4E 20 72 6F 73 46 72 61 6D 65 49 64 ``` **Telegram structure: sRA rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | ROS reference frame to use for data output | String | 14 | | `sWN rosFrameId` | `73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64` | | Frame ID length | Number of characters of frame id | Uint_16 | 2 | 0 … 64 | `B` | `00 0B` | | Frame ID | Frame ID of the published topics | String | Length | Maximum 64 characters | `front_lidar` | `66 72 6F 6E 74 5F 6C 69 64 61 72` | **Example: sRA rosFrameId** **CoLa A (ASCII)** ```text sRA{SPC}rosFrameId{SPC}15{SPC}multiScan2xx_26110162 ``` ```text 02 73 52 41 20 72 6F 73 46 72 61 6D 65 49 64 20 31 35 20 6D 75 6C 74 69 53 63 61 6E 32 78 78 5F 32 36 31 31 30 31 36 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 26 73 52 41 20 72 6F 73 46 72 61 6D 65 49 64 20 00 15 6D 75 6C 74 69 53 63 61 6E 32 78 78 5F 32 36 31 31 30 31 36 32 51 ```
### Write ROS Namespace [sWN rosNamespace] Set the namespace that is prepended to all Native ROS 2 topics. Send length `0` for no namespace. Required user level: Authorized client. **Telegram structure: sWN rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sets the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | | Namespace length | Number of characters of namespace | Uint_16 | 2 | 0 … 64 | `A` | `00 0A` | | Namespace | Namespace prepended to all topics; empty for no namespace | String | Length | Maximum 64 characters | `rear_lidar` | `72 65 61 72 5F 6C 69 64 61 72` | **Example: sWN rosNamespace - Namespace is "rear_lidar"** **CoLa A (ASCII)** ```text sWN{SPC}rosNamespace{SPC}A{SPC}rear_lidar ``` ```text sWN rosNamespace A rear_lidar ``` ```text 02 73 57 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 41 20 72 65 61 72 5F 6C 69 64 61 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 00 0A 72 65 61 72 5F 6C 69 64 61 72 64 ``` ```text 73 57 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 00 0A 72 65 61 72 5F 6C 69 64 61 72 ``` **Telegram structure: sWA rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sets the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | **Example: sWA rosNamespace** **CoLa A (ASCII)** ```text sWA{SPC}rosNamespace ``` ```text 02 73 57 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 48 ```
### Read ROS Namespace [sRN rosNamespace] Read the namespace that is prepended to all Native ROS 2 topics. Required user level: Authorized client. **Telegram structure: sRN rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Reads the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | **Example: sRN rosNamespace** **CoLa A (ASCII)** ```text sRN{SPC}rosNamespace ``` ```text sRN rosNamespace ``` ```text 02 73 52 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 62 ``` ```text 73 52 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 ``` **Telegram structure: sRA rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Reads the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | | Namespace length | Number of characters of namespace | Uint_16 | 2 | 0 … 64 | `A` | `00 0A` | | Namespace | Namespace prepended to all topics; empty for no namespace | String | Length | Maximum 64 characters | `rear_lidar` | `72 65 61 72 5F 6C 69 64 61 72` | **Example: sRA rosNamespace** **CoLa A (ASCII)** ```text sRA{SPC}rosNamespace{SPC}0 ``` ```text 02 73 52 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 00 00 4D ```
### Write ROS Domain ID [sWN rosDomainId] Set the ROS domain ID of Native ROS 2. Set the same `ROS_DOMAIN_ID` on the host. Required user level: Authorized client. **Telegram structure: sWN rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | rosDomainId | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | | Value | ROS domain ID | Uint_8 | 1 | | `0` | `00` | **Example: sWN rosDomainId** **CoLa A (ASCII)** ```text sWN{SPC}rosDomainId{SPC}0 ``` ```text sWN rosDomainId 0 ``` ```text 02 73 57 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 00 09 ``` ```text 73 57 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 00 ``` **Telegram structure: sWA rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | **Example: sWA rosDomainId** **CoLa A (ASCII)** ```text sWA{SPC}rosDomainId ``` ```text 02 73 57 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 06 ```
### Read ROS Domain ID [sRN rosDomainId] Read the ROS domain ID of Native ROS 2. **Telegram structure: sRN rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | rosDomainId | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | **Example: sRN rosDomainId** **CoLa A (ASCII)** ```text sRN{SPC}rosDomainId ``` ```text sRN rosDomainId ``` ```text 02 73 52 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 2C ``` ```text 73 52 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 ``` **Telegram structure: sRA rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | rosDomainId | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | | Value | ROS domain ID | Uint_8 | 1 | Max: 232 | `0` | `00` | **Example: sRA rosDomainId** **CoLa A (ASCII)** ```text sRA{SPC}rosDomainId{SPC}0 ``` ```text 02 73 52 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 00 03 ```
### Set Optional Channels of PointCloud2 Topics [sWN rosPointCloud2Content] Select the optional channels of the Native ROS 2 PointCloud2 topics (`rt/cloud`). Required user level: Authorized client. **Telegram structure: sWN rosPointCloud2Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Set the optional channels of PointCloud2 topics (rt/cloud) | String | 21 | | `rosPointCloud2Content` | `72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74` | | includeRssi | If true the RSSI data is included in the rt/cloud topics | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | includeProperties | If true the properties data is included in the rt/cloud topics | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | includeTimeOffset | If true the time offset data is included in the rt/cloud topics | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | includeRing | If true the ring (layer index) data is included in the rt/cloud topics | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | **Example: sWN rosPointCloud2Content - No optional channels** **CoLa A (ASCII)** ```text sWN{SPC}rosPointCloud2Content{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN rosPointCloud2Content 0 0 0 0 ``` ```text 02 73 57 4E 20 72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 57 4E 20 72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74 20 00 00 00 00 62 ``` ```text 73 57 4E 20 72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74 20 00 00 00 00 ``` **Telegram structure: sWA rosPointCloud2Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 21 | | `rosPointCloud2Content` | `72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74` | **Example: sWA rosPointCloud2Content** **CoLa A (ASCII)** ```text sWA{SPC}rosPointCloud2Content ``` ```text 02 73 57 41 20 72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 57 41 20 72 6F 73 50 6F 69 6E 74 43 6C 6F 75 64 32 43 6F 6E 74 65 6E 74 20 6D ```
## Data Reduction
### Set Interval Filter [sWN LFPintervalFilter] Enable and configure the interval filter, which outputs only every n-th scan. Required user level: Authorized client. **Telegram structure: sWN LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Reduce the scan output rate by a given factor | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | | Variable data 1 | Enables/Disables the filter. | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00
01` | | Variable Data 2 | Only every nth scan is output where n is given by the value of uiReductionFactor. | Uint_32 | 4 | | `1d…+50d(00 00 00 01h …00 00 00 32h)` | `00 00 00 01 … 00 00 00 32` | **Example: sWN LFPintervalFilter - Output every third scan** **CoLa A (ASCII)** ```text sWN{SPC}LFPintervalFilter{SPC}1{SPC}3 ``` ```text sWN LFPintervalFilter 1 3 ``` ```text 02 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 31 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 01 00 00 00 03 0D ``` ```text 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 01 00 00 00 03 ``` **Telegram structure: sWA LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Reduce the scan output rate by a given factor | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | **Example: sWA LFPintervalFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPintervalFilter ``` ```text 02 73 57 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 00 ```
### Set Angle Range Focus Filter [sWN angleRangeFocusFilter] Restricts streaming data output to a specified 3D field of view. The theta parameters define the azimuth range and the phi parameters define the elevation range. Beams outside these ranges are not transmitted. Within the selected range, subsampling can be applied to reduce data bandwidth. Additionally, a focus region can be defined where full resolution is preserved (no subsampling). This filter only affects raw data streaming and has no effect on object detection. Required user level: Authorized client. **Telegram structure: sWN angleRangeFocusFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | Restricts streaming data output to a specified 3D field of view. The theta parameters define the azimuth range and the phi parameters define the elevation range. Beams outside these ranges are not transmitted. Within the selected range, subsampling can be applied to reduce data bandwidth. Additionally, a focus region can be defined where full resolution is preserved (no subsampling). This filter only affects raw data streaming and has no effect on object detection. | String | 21 | | `angleRangeFocusFilter` | `61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72` | | enable | Enables/Disables the filter. | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | thetaStart | Lower boundary of the azimuth range. Columns outside this range are not transmitted. | Int_32 | 4 | | `-900000` | `FF F2 44 60` | | thetaStop | Upper boundary of the azimuth range. Columns outside this range are not transmitted. | Int_32 | 4 | | `+900000` | `00 0D BB A0` | | phiStart | Lower boundary of the elevation range. Layers outside this range are not transmitted. | Int_32 | 4 | | `-250000` | `FF FC 2F 70` | | phiStop | Upper boundary of the elevation range. Layers outside this range are not transmitted. | Int_32 | 4 | | `+250000` | `00 03 D0 90` | | thetaIndexIncrement | The 'thetaIndexIncrement' is used to sub-sample the slots within the selected theta angle range. With a 'thetaIndexIncrement' of n only every n'th slot from the selected angle range is serialized, i.e. the angle resolution is reduced by factor n. | Uint_16 | 2 | | `+1` | `00 01` | | phiIndexIncrement | The 'phiIndexIncrement' is used to sub-sample the layers within the selected phi angle range. With a 'phiIndex-Increment' of n only every n'th layer from the selected angle range is serialized, i.e. the angle resolution is reduced by factor n. | Uint_16 | 2 | | `+1` | `00 01` | | enable | Enables/Disables the focus region. In this region, the sub-sampling is not applied. | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | direction | Focus direction: selects whether the focus region spans the vertical or horizontal axis. | Enum_8 | 1 | | `0` | `00` | | thetaStart | Lower boundary of the azimuth focus range | Int_32 | 4 | | `-450000` | `FF F9 22 30` | | thetaStop | Upper boundary of the azimuth focus range | Int_32 | 4 | | `+450000` | `00 06 DD D0` | | phiStart | Lower boundary of the elevation focus range | Int_32 | 4 | | `-100000` | `FF FE 79 60` | | phiStop | Upper boundary of the elevation focus range | Int_32 | 4 | | `+100000` | `00 01 86 A0` | **Example: sWN angleRangeFocusFilter - −90° … +90° × −25° … +25°, focus −45° … +45° × −10° … +10°** **CoLa A (ASCII)** ```text sWN{SPC}angleRangeFocusFilter{SPC}0{SPC}-900000{SPC}+900000{SPC}-250000{SPC}+250000{SPC}+1{SPC}+1{SPC}0{SPC}0{SPC}-450000{SPC}+450000{SPC}-100000{SPC}+100000 ``` ```text sWN angleRangeFocusFilter 0 -900000 +900000 -250000 +250000 +1 +1 0 0 -450000 +450000 -100000 +100000 ``` ```text 02 73 57 4E 20 61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72 20 30 20 2D 39 30 30 30 30 30 20 2B 39 30 30 30 30 30 20 2D 32 35 30 30 30 30 20 2B 32 35 30 30 30 30 20 2B 31 20 2B 31 20 30 20 30 20 2D 34 35 30 30 30 30 20 2B 34 35 30 30 30 30 20 2D 31 30 30 30 30 30 20 2B 31 30 30 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 41 73 57 4E 20 61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72 20 00 FF F2 44 60 00 0D BB A0 FF FC 2F 70 00 03 D0 90 00 01 00 01 00 00 FF F9 22 30 00 06 DD D0 FF FE 79 60 00 01 86 A0 38 ``` ```text 73 57 4E 20 61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72 20 00 FF F2 44 60 00 0D BB A0 FF FC 2F 70 00 03 D0 90 00 01 00 01 00 00 FF F9 22 30 00 06 DD D0 FF FE 79 60 00 01 86 A0 ``` **Telegram structure: sWA angleRangeFocusFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 21 | | `angleRangeFocusFilter` | `61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72` | **Example: sWA angleRangeFocusFilter** **CoLa A (ASCII)** ```text sWA{SPC}angleRangeFocusFilter ``` ```text 02 73 57 41 20 61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 57 41 20 61 6E 67 6C 65 52 61 6E 67 65 46 6F 63 75 73 46 69 6C 74 65 72 20 37 ```
## Operating Data
### Read Temperature [sRN OPcurtmpdev] Read the internal temperature of the device. It does not indicate the ambient temperature. **Telegram structure: sRN OPcurtmpdev** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read temperature of the device | String | 11 | | `OPcurtmpdev` | `4F 50 63 75 72 74 6D 70 64 65 76` | **Example: sRN OPcurtmpdev** **CoLa A (ASCII)** ```text sRN{SPC}OPcurtmpdev ``` ```text sRN OPcurtmpdev ``` ```text 02 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 2A ``` ```text 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 ``` **Telegram structure: sRA OPcurtmpdev** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read temperature of the device | String | 11 | | `OPcurtmpdev` | `4F 50 63 75 72 74 6D 70 64 65 76` | | Temperature data | [°C] | Float_32 | 4 | (-50°C … +100°C) | `C2480000h …42C80000h` | `C2 48 00 00 … 42 C8 00 00` | **Example: sRA OPcurtmpdev** **CoLa A (ASCII)** ```text sRA{SPC}OPcurtmpdev{SPC}4265970A ``` ```text 02 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 34 32 36 35 39 37 30 41 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 42 65 97 0A BF ```
### Read Date of Last Permanent Save [sRN DIpara] This command reads the date at which the last permanent save was executed. **Telegram structure: sRN DIpara** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read date of last permanent save | String | 6 | | `DIpara` | `44 49 70 61 72 61` | **Example: sRN DIpara** **CoLa A (ASCII)** ```text sRN{SPC}DIpara ``` ```text sRN DIpara ``` ```text 02 73 52 4E 20 44 49 70 61 72 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 70 61 72 61 40 ``` ```text 73 52 4E 20 44 49 70 61 72 61 ``` **Telegram structure: sRA DIpara** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read date of last permanent save | String | 6 | | `DIpara` | `44 49 70 61 72 61` | | Date length | Number of characters of date | Uint_16 | 2 | 0 … 10 | `A` | `00 0A` | | Date | Date of the last permanent save, DD.MM.YYYY | String | Length | Maximum 10 characters | `29.09.2026` | `32 39 2E 30 39 2E 32 30 32 36` | **Example: sRA DIpara** **CoLa A (ASCII)** ```text sRA{SPC}DIpara{SPC}A{SPC}29.09.2026 ``` ```text 02 73 52 41 20 44 49 70 61 72 61 20 41 20 32 39 2E 30 39 2E 32 30 32 36 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 44 49 70 61 72 61 20 00 0A 32 39 2E 30 39 2E 32 30 32 36 61 ```
### Read Time of Last Permanent Save [sRN DIparatm] This command reads the time at which the last permanent save was executed. **Telegram structure: sRN DIparatm** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read time of last permanent save | String | 8 | | `DIparatm` | `44 49 70 61 72 61 74 6D` | **Example: sRN DIparatm** **CoLa A (ASCII)** ```text sRN{SPC}DIparatm ``` ```text sRN DIparatm ``` ```text 02 73 52 4E 20 44 49 70 61 72 61 74 6D 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 44 49 70 61 72 61 74 6D 59 ``` ```text 73 52 4E 20 44 49 70 61 72 61 74 6D ``` **Telegram structure: sRA DIparatm** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read time of last permanent save | String | 8 | | `DIparatm` | `44 49 70 61 72 61 74 6D` | | Time length | Number of characters of time | Uint_16 | 2 | 0 … 5 | `5` | `00 05` | | Time | Time of the last permanent save, HH:MM | String | Length | Maximum 5 characters | `13:55` | `31 33 3A 35 35` | **Example: sRA DIparatm** **CoLa A (ASCII)** ```text sRA{SPC}DIparatm{SPC}5{SPC}13:55 ``` ```text 02 73 52 41 20 44 49 70 61 72 61 74 6D 20 35 20 31 33 3A 35 35 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 44 49 70 61 72 61 74 6D 20 00 05 31 33 3A 35 35 4B ```
## Cybersecurity
### Set Device Search Mode [sWN EtherCoLaScanMode] Configure the device search by SICK engineering tools and whether the IP address can be changed through it. Restricting it reduces the number of open ports. Required user level: Authorized client. **Telegram structure: sWN EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | | CoLa Scan /AutoIP search settings | Choose setting | Uint_8 | 1 | IP address can be found/changed without login:
IP address can be found/changed with login:
Disable the Auto IP search/ IP change:
IP address can be found/changed for 1 min: | `0
1
2
3` | `00
01
02
03` | **Example: sWN EtherCoLaScanMode - Device search without IP address change** **CoLa A (ASCII)** ```text sWN{SPC}EtherCoLaScanMode{SPC}2 ``` ```text sWN EtherCoLaScanMode 2 ``` ```text 02 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 02 3B ``` ```text 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 02 ``` **Telegram structure: sWA EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | **Example: sWA EtherCoLaScanMode** **CoLa A (ASCII)** ```text sWA{SPC}EtherCoLaScanMode ``` ```text 02 73 57 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 36 ```
### Read Device Search Mode [sRN EtherCoLaScanMode] Read the device search mode. Required user level: Authorized client. **Telegram structure: sRN EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sRN` | `73 52 4E` | | Command | Read CoLa Scan /AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | **Example: sRN EtherCoLaScanMode** **CoLa A (ASCII)** ```text sRN{SPC}EtherCoLaScanMode ``` ```text sRN EtherCoLaScanMode ``` ```text 02 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 1C ``` ```text 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 ``` **Telegram structure: sRA EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read CoLa Scan /AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | | CoLa Scan /AutoIP search settings | Poll setting | Uint_8 | 1 | IP address can be found/changed without login:
IP address can be found/changed with login:
Auto IP search/ IP change is disabled:
IP address can be found/changed for 1 min: | `0
1
2
3` | `00
01
02
03` | **Example: sRA EtherCoLaScanMode** **CoLa A (ASCII)** ```text sRA{SPC}EtherCoLaScanMode{SPC}3 ``` ```text 02 73 52 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 03 30 ```
### Enable or Disable CoLa1 Interface [sWN EIAuxEnable] Enable or disable the CoLa1 interface (CoLa A on port 2111 and CoLa B on port 2112). It is disabled by default. Disabling it over CoLa1 ends the connection. Required user level: Authorized client. **Telegram structure: sWN EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set CoLa1 interface | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | | CoLa1 interface | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN EIAuxEnable** **CoLa A (ASCII)** ```text sWN{SPC}EIAuxEnable{SPC}1 ``` ```text sWN EIAuxEnable 1 ``` ```text 02 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 0A ``` ```text 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set CoLa1 interface | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | **Example: sWA EIAuxEnable** **CoLa A (ASCII)** ```text sWA{SPC}EIAuxEnable ``` ```text 02 73 57 41 20 45 49 41 75 78 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 45 49 41 75 78 45 6E 61 62 6C 65 20 04 ```
### Set Webserver State [sMN SetWebserverEnabled] Enable or disable the web server. When disabled, port 80 is not opened after a reboot. Required user level: Authorized client. **Telegram structure: sMN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sMN SetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}SetWebserverEnabled{SPC}1 ``` ```text sMN SetWebserverEnabled 1 ``` ```text 02 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 23 ``` ```text 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 ``` **Telegram structure: sAN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sAN SetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}SetWebserverEnabled ``` ```text 02 73 41 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 41 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 2E ```
### Read Webserver State [sMN GetWebserverEnabled] Read whether the web server is enabled. Required user level: Authorized client. **Telegram structure: sMN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sMN GetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}GetWebserverEnabled ``` ```text sMN GetWebserverEnabled ``` ```text 02 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 16 ``` ```text 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 ``` **Telegram structure: sAN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Status of the webserver | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sAN GetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}GetWebserverEnabled{SPC}1 ``` ```text 02 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 3B ```
## Field Evaluation
### Set Activation of Evaluation Group [sMN ActivateEvaluationGroup] The telegram is intended to activate or deactivate groups via telegram. The group activation needs to be changed from "always" to "telegram" in advance. **Telegram structure: sMN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of evaluation groups to activate/ deactivate | Each array element contains two parameters: evaluation group number, and deactivation/ activation of evaluation group | Uint_16 | 2 | | `1d … 48d (1 … 30h)` | `00 01 … 00 30` | | Evaluation group number | Evaluation group 1 | UInt_16 | 2 | | `1` | `00 01` | | Deactivation/ activation of evaluation group | Activate / deactivate evaluation group 1 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | Evaluation group number | Evaluation group 2 | UInt_16 | 2 | | `2` | `00 02` | | Deactivation/ activation of evaluation group | Activate / deactivate evaluation group 2 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | ... | ... | ... | ... | | | | | Evaluation group number | Evaluation group 48 | UInt_16 | 2 | | `48d (30h)` | `00 30` | | Deactivation/ activation of evaluation group | Activate / deactivate evaluation group 48 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | **Example 1: sMN ActivateEvaluationGroup - Deactivate evaluation group 1** **CoLa A (ASCII)** ```text sMN{SPC}ActivateEvaluationGroup{SPC}1{SPC}1{SPC}0 ``` ```text sMN ActivateEvaluationGroup 1 1 0 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 20 ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 00 01 00 ``` **Example 2: sMN ActivateEvaluationGroup - Deactivate evaluation group 1, activate evaluation group 2 and 3** **CoLa A (ASCII)** ```text sMN{SPC}ActivateEvaluationGroup{SPC}3{SPC}1{SPC}0{SPC}2{SPC}1{SPC}3{SPC}1 ``` ```text sMN ActivateEvaluationGroup 3 1 0 2 1 3 1 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 33 20 31 20 30 20 32 20 31 20 33 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 03 00 01 00 00 02 01 00 03 01 23 ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 03 00 01 00 00 02 01 00 03 01 ``` **Telegram structure: sAN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of activated/ deactivated evaluation groups | - | UInt_16 | 2 | | `1h ... 30h` | `00 01 … 00 30` | | State of activation / deactivation | One value per requested evaluation group, in request order | Bool_1 | 1 | Activation/ Deactivation failed:
Successfully activated/ deactivated: | `0
1` | `00
01` | **Example 1: sAN ActivateEvaluationGroup - Successfully deactivated evaluation group 1** **CoLa A (ASCII)** ```text sAN{SPC}ActivateEvaluationGroup{SPC}1{SPC}1 ``` ```text 02 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 01 2C ``` **Example 2: sAN ActivateEvaluationGroup - Successfully deactivated evaluation group 1, successfully activated evaluation group 2, failed activation of evaluation group 3** **CoLa A (ASCII)** ```text sAN{SPC}ActivateEvaluationGroup{SPC}3{SPC}1{SPC}1{SPC}0 ``` ```text 02 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 33 20 31 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 03 01 01 00 2F ```
### Read Evaluation Group Type [sRN EvaluationGroupType] Array with the type of each group, either perpendicular distance or field evaluation. **Telegram structure: sRN EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | EvaluationGroupType | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | **Example: sRN EvaluationGroupType** **CoLa A (ASCII)** ```text sRN{SPC}EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text 02 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 1E ``` ```text 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 ``` **Telegram structure: sRA EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | EvaluationGroupType | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | | Data group | Type of evaluation | Array Uint_8 | 48 | Field evaluation:
Perpendicular distance: | `0d (00h)
+1d (01h)` | `00
01` | **Example: sRA EvaluationGroupType - 3rd group is set as perpendicular distance** **CoLa A (ASCII)** ```text sRA{SPC}EvaluationGroupType{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0…(48 total) ``` ```text 02 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 20 30 20 30 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 48 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 20 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 ```
### Read Field Evaluation Group State [sRN FieldEvaluationGroupState] Read the activation state of all 48 evaluation groups: not configured, active, or inactive. **Telegram structure: sRN FieldEvaluationGroupState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | Contains the current activation state of all available groups (not configured, active or inactive) | String | 25 | | `FieldEvaluationGroupState` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65` | **Example: sRN FieldEvaluationGroupState** **CoLa A (ASCII)** ```text sRN{SPC}FieldEvaluationGroupState ``` ```text sRN FieldEvaluationGroupState ``` ```text 02 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 33 ``` ```text 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 ``` **Telegram structure: sRA FieldEvaluationGroupState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | Contains the current activation state of all available groups (not configured, active or inactive) | String | 25 | | `FieldEvaluationGroupState` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65` | | Value | Array of 48 × Enum8 elements | Array | 48 | Not configured = 0 Active = 1 Inactive = 2 | `0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0` | `00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | **Example: sRA FieldEvaluationGroupState** **CoLa A (ASCII)** ```text sRA{SPC}FieldEvaluationGroupState{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4E 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 53 74 61 74 65 20 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1D ```
### Set Field Evaluation Contour [sMN SetFieldEvaluationContour] This telegram describes how to change the polygon coordinates. A predefined polygon is required, setting up a polygon from scratch is not possible. **Telegram structure: sMN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `+1d ... +48d (1h ... 30h)` | `00 01 … 00 30` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Uint_16 | 2 | | `+3d ... +100d (3h ... 64h)` | `00 03 ... 00 64` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | ... | ... | ... | ... | | | | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | | `-100,000d ... +100,000d (FFFE7960h … 186A0h)` | `FF FE 79 60 … 00 01 86 A0` | **Example: sMN SetFieldEvaluationContour – Conversion of an evaluation into a 1 m³ cube** **CoLa A (ASCII)** ```text sMN{SPC}SetFieldEvaluationContour{SPC}1{SPC}4{SPC}+1000{SPC}+1000{SPC}-1000{SPC}+1000{SPC}-1000{SPC}-1000{SPC}+1000{SPC}-1000{SPC}-500{SPC}+500 ``` ```text sMN SetFieldEvaluationContour 1 4 +1000 +1000 -1000 +1000 -1000 -1000 +1000 -1000 -500 +500 ``` ```text 02 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 34 20 2B 31 30 30 30 20 2B 31 30 30 30 20 2D 31 30 30 30 20 2B 31 30 30 30 20 2D 31 30 30 30 20 2D 31 30 30 30 20 2B 31 30 30 30 20 2D 31 30 30 30 20 2D 35 30 30 20 2B 35 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4A 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 03 E8 00 00 03 E8 FF FF FC 18 00 00 03 E8 FF FF FC 18 FF FF FC 18 00 00 03 E8 FF FF FC 18 FF FF FE 0C 00 00 01 F4 1A ``` ```text 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 03 E8 00 00 03 E8 FF FF FC 18 00 00 03 E8 FF FF FC 18 FF FF FC 18 00 00 03 E8 FF FF FC 18 FF FF FE 0C 00 00 01 F4 ``` **Telegram structure: sAN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | State of evaluation conversion | - | Enum_8 | 1 | Conversion successful:
Invalid Evaluation:
Invalid Polygon:
Invalid Z limit: | `0
1
2
3` | `00
01
02
03` | **Example: sAN SetFieldEvaluationContour – Evaluation conversion successful** **CoLa A (ASCII)** ```text sAN{SPC}SetFieldEvaluationContour{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 14 ```
### Get Field Evaluation Contour [sMN GetFieldEvaluationContour] Read the polygon and the Z limits of a field evaluation. Required user level: Authorized client. **Telegram structure: sMN GetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Get the region of interest of an object detection evaluation | String | 25 | | `GetFieldEvaluationContour` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | Uint_16 | 2 | | `1` | `00 01` | **Example: sMN GetFieldEvaluationContour - Evaluation 1** **CoLa A (ASCII)** ```text sMN{SPC}GetFieldEvaluationContour{SPC}1 ``` ```text sMN GetFieldEvaluationContour 1 ``` ```text 02 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 0D ``` ```text 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 ``` **Telegram structure: sAN GetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Get the region of interest of an object detection evaluation | String | 25 | | `GetFieldEvaluationContour` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Contour count | Number of returned contours | Uint_16 | 2 | A value of 0 means no contour is configured for the requested ID. | `1` | `00 01` | | Evaluation ID | Specific ID of the evaluation that is to be changed | Uint_16 | 2 | Range: 1 ... 48 | `1` | `00 01` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Uint_16 | 2 | Range: 0 ... 100 | `4` | `00 04` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `58FCh` | `00 00 58 FC` | | | | Dint_32 | 4 | Y coordinate: | `1D6h` | `00 00 01 D6` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `3E62h` | `00 00 3E 62` | | | | Dint_32 | 4 | Y coordinate: | `FFFFDBC0h` | `FF FF DB C0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `7094h` | `00 00 70 94` | | | | Dint_32 | 4 | Y coordinate: | `FFFFEE12h` | `FF FF EE 12` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | | `0h` | `00 00 00 00` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | | `11D0h` | `00 00 11 D0` | **Example: sAN GetFieldEvaluationContour** **CoLa A (ASCII)** ```text sAN{SPC}GetFieldEvaluationContour{SPC}1{SPC}1{SPC}4{SPC}32A{SPC}112{SPC}FFFFF95C{SPC}FE{SPC}FFFFF92A{SPC}69E{SPC}2B2{SPC}6A8{SPC}0{SPC}3D0 ``` ```text 02 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 31 20 34 20 33 32 41 20 31 31 32 20 46 46 46 46 46 39 35 43 20 46 45 20 46 46 46 46 46 39 32 41 20 36 39 45 20 32 42 32 20 36 41 38 20 30 20 33 44 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 01 00 04 00 00 03 2A 00 00 01 12 FF FF F9 5C 00 00 00 FE FF FF F9 2A 00 00 06 9E 00 00 02 B2 00 00 06 A8 00 00 00 00 00 00 03 D0 E3 ```
### Set Field Evaluation Configuration [sMN SetFieldEvaluationConfiguration] Write the configuration of a field evaluation. Read the current configuration with `sMN GetFieldEvaluationConfiguration` first and change only the values you need. Required user level: Authorized client. **Telegram structure: sMN SetFieldEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | Set the configuration of an object detection evaluation | String | 31 | | `SetFieldEvaluationConfiguration` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | EvaluationId | ID of the evaluation | Uint_16 | 2 | Range: 1 ... 48 | `1` | `00 01` | | Name length | Length of Name | Uint_16 | 2 | Maximum: 20 | `C` | `00 0C` | | Name | Name of the evaluation | String | 12 | UTF-8/ASCII bytes following Name length | `Evaluation 1` | `45 76 61 6C 75 61 74 69 6F 6E 20 31` | | Version | Evaluation structure version | Uint_16 | 2 | | `2` | `00 02` | | Source | Evaluation source | Enum_8 | 1 | Standard: | `0` | `00` | | Legacy name length | Length of legacy evaluation name | Uint_16 | 2 | | `C` | `00 0C` | | Legacy name | Legacy evaluation name | String | 12 | | `Evaluation 1` | `45 76 61 6C 75 61 74 69 6F 6E 20 31` | | Legacy ID | Legacy Evaluation ID | Uint_16 | 2 | | `1` | `00 01` | | Maskbased parameter count | Number of mask-based parameter records | Uint_16 | 2 | | `1` | `00 01` | | InfringementThresholdFactor | Required infringed pixels [%] | Uint_32 | 4 | Range: 1 ... 100 | `50` | `00 00 00 50` | | Segmentation parameter count | Number of segmentation parameter records | Uint_16 | 2 | | `1` | `00 01` | | SampleParam1 | Segmentation parameter | Uint_32 | 4 | | `0` | `00 00 00 00` | | Common parameter count | Number of common parameter records | Uint_16 | 2 | | `1` | `00 01` | | MinimumObjectSizeHorizontal | Minimum horizontal object size [mm] | Uint_32 | 4 | Range: 0 ... 5000 | `C8` | `00 00 00 C8` | | MinimumObjectSizeVertical | Minimum vertical object size [mm] | Uint_32 | 4 | Range: 0 ... 5000 | `C8` | `00 00 00 C8` | | OcclusionHandling | Treat occluded volume as infringed | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | TreatMissingDataAsInfringed | Treat missing data as infringed | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | TimeForInfringedState | Time before reporting infringed [ms] | Uint_32 | 4 | Range: 1 ... 10000 | `32` | `00 00 00 32` | | TimeForFreeState | Time before reporting free [ms] | Uint_32 | 4 | Range: 1 ... 10000 | `32` | `00 00 00 32` | | Reserved3 | Reserved | Uint_32 | 4 | | `0` | `00 00 00 00` | | Reserved4 | Reserved | Uint_32 | 4 | | `0` | `00 00 00 00` | | Exit-size parameter count | Number of exit-size parameter records | Uint_16 | 2 | | `1` | `00 01` | | disableExitSize | Disable exit-size processing | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | exitSizeVertical | Vertical exit-size percentage [%] | Uint_16 | 2 | Range: 0 ... 100 | `46` | `00 46` | | exitSizeHorizontal | Horizontal exit-size percentage [%] | Uint_16 | 2 | Range: 1 ... 10000 | `64` | `00 64` | | Volume count | Number of referenced volumes | Uint_16 | 2 | | `1` | `00 01` | | Volume ID | Referenced volume ID | Uint_16 | 2 | Range: 1 ... 48 | `1` | `00 01` | **Example: sMN SetFieldEvaluationConfiguration** **CoLa A (ASCII)** ```text sMN{SPC}SetFieldEvaluationConfiguration{SPC}1{SPC}C{SPC}Evaluation{SPC}1{SPC}2{SPC}0{SPC}C{SPC}Evaluation{SPC}1{SPC}1{SPC}1{SPC}50{SPC}1{SPC}0{SPC}1{SPC}14{SPC}14{SPC}0{SPC}0{SPC}1E{SPC}32{SPC}0{SPC}0{SPC}1{SPC}0{SPC}46{SPC}64{SPC}1{SPC}1 ``` ```text sMN SetFieldEvaluationConfiguration 1 C Evaluation 1 2 0 C Evaluation 1 1 1 50 1 0 1 14 14 0 0 1E 32 0 0 1 0 46 64 1 1 ``` ```text 02 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 43 20 45 76 61 6C 75 61 74 69 6F 6E 20 31 20 32 20 30 20 43 20 45 76 61 6C 75 61 74 69 6F 6E 20 31 20 31 20 31 20 35 30 20 31 20 30 20 31 20 31 34 20 31 34 20 30 20 30 20 31 45 20 33 32 20 30 20 30 20 31 20 30 20 34 36 20 36 34 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 7A 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 02 00 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 01 00 01 00 00 00 50 00 01 00 00 00 00 00 01 00 00 00 14 00 00 00 14 00 00 00 00 00 1E 00 00 00 32 00 00 00 00 00 00 00 00 00 01 00 00 46 00 64 00 01 00 01 4A ``` ```text 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 02 00 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 01 00 01 00 00 00 50 00 01 00 00 00 00 00 01 00 00 00 14 00 00 00 14 00 00 00 00 00 1E 00 00 00 32 00 00 00 00 00 00 00 00 00 01 00 00 46 00 64 00 01 00 01 ``` **Telegram structure: sAN SetFieldEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 31 | | `SetFieldEvaluationConfiguration` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | ErrorCode | Result of setting the field evaluation configuration | Enum_8 | 1 | | `0` | `00` | **Example: sAN SetFieldEvaluationConfiguration** **CoLa A (ASCII)** ```text sAN{SPC}SetFieldEvaluationConfiguration{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 1A ```
### Get Field Evaluation Configuration [sMN GetFieldEvaluationConfiguration] Read the configuration of a field evaluation. Required user level: Authorized client. **Telegram structure: sMN GetFieldEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | Get the configuration of an object detection evaluation | String | 31 | | `GetFieldEvaluationConfiguration` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | EvaluationId | ID of the evaluation | Uint_16 | 2 | Range: 1 ... 48 | `1` | `00 01` | **Example: sMN GetFieldEvaluationConfiguration - Evaluation 1** **CoLa A (ASCII)** ```text sMN{SPC}GetFieldEvaluationConfiguration{SPC}1 ``` ```text sMN GetFieldEvaluationConfiguration 1 ``` ```text 02 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 26 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 03 ``` ```text 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 ``` **Telegram structure: sAN GetFieldEvaluationConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 31 | | `GetFieldEvaluationConfiguration` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Configuration count | Number of returned configurations | Uint_16 | 2 | A value of 0 means no configuration is present for the requested ID. | `1` | `00 01` | | EvaluationId | ID of the returned evaluation | Uint_16 | 2 | Repeated once for each configuration | `1` | `00 01` | | Name length | Length of `Name` | Uint_16 | 2 | String-length prefix in bytes | `C` | `00 0C` | | Name | Evaluation name | String | 12 | UTF-8/ASCII bytes following Name length | `Evaluation 1` | `45 76 61 6C 75 61 74 69 6F 6E 20 31` | | Version | Evaluation structure version | Uint_16 | 2 | | `2` | `00 02` | | Source | Evaluation source | Enum_8 | 1 | Standard: | `0` | `00` | | Deprecated name length | Length of deprecated `Evaluation t.Name` | Uint_16 | 2 | | `C` | `00 0C` | | Deprecated name | Deprecated `Evaluation t.Name` | String | 12 | | `Evaluation 1` | `45 76 61 6C 75 61 74 69 6F 6E 20 31` | | Deprecated ID | Deprecated `Evaluation t.ID` | Uint_16 | 2 | | `1` | `00 01` | | Maskbased parameter count | Number of mask-based parameter records | Uint_16 | 2 | | `1` | `00 01` | | InfringementThresholdFactor | Required infringed pixels [%] | Uint_32 | 4 | | `50` | `00 00 00 50` | | Segmentation parameter count | Number of segmentation parameter records | Uint_16 | 2 | | `1` | `00 01` | | SampleParam1 | Segmentation parameter | Uint_32 | 4 | | `0` | `00 00 00 00` | | Common parameter count | Number of common parameter records | Uint_16 | 2 | | `1` | `00 01` | | MinimumObjectSizeHorizontal | Minimum horizontal object size [mm] | Uint_32 | 4 | | `C8` | `00 00 00 C8` | | MinimumObjectSizeVertical | Minimum vertical object size [mm] | Uint_32 | 4 | | `C8` | `00 00 00 C8` | | OcclusionHandling | Treat occluded volume as infringed | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | TreatMissingDataAsInfringed | Treat missing data as infringed | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | TimeForInfringedState | Time before reporting infringed [ms] | Uint_32 | 4 | | `32` | `00 00 00 32` | | TimeForFreeState | Time before reporting free [ms] | Uint_32 | 4 | | `32` | `00 00 00 32` | | Reserved3 | Reserved | Uint_32 | 4 | | `0` | `00 00 00 00` | | Reserved4 | Reserved | Uint_32 | 4 | | `0` | `00 00 00 00` | | Exit-size parameter count | Number of exit-size parameter records | Uint_16 | 2 | | `1` | `00 01` | | disableExitSize | Disable exit-size processing | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | exitSizeVertical | Vertical exit-size percentage | Uint_16 | 2 | | `46` | `00 46` | | exitSizeHorizontal | Horizontal exit-size percentage | Uint_16 | 2 | | `64` | `00 64` | | Volume count | Number of referenced volumes | Uint_16 | 2 | | `1` | `00 01` | | Volume ID | Referenced volume ID | Uint_16 | 2 | | `1` | `00 01` | **Example: sAN GetFieldEvaluationConfiguration** **CoLa A (ASCII)** ```text sAN{SPC}GetFieldEvaluationConfiguration{SPC}1{SPC}1{SPC}C{SPC}Evaluation{SPC}1{SPC}2{SPC}0{SPC}C{SPC}Evaluation{SPC}1{SPC}1{SPC}1{SPC}50{SPC}1{SPC}0{SPC}1{SPC}14{SPC}14{SPC}0{SPC}0{SPC}1E{SPC}32{SPC}0{SPC}0{SPC}1{SPC}0{SPC}46{SPC}64{SPC}1{SPC}1 ``` ```text 02 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 31 20 43 20 45 76 61 6C 75 61 74 69 6F 6E 20 31 20 32 20 30 20 43 20 45 76 61 6C 75 61 74 69 6F 6E 20 31 20 31 20 31 20 35 30 20 31 20 30 20 31 20 31 34 20 31 34 20 30 20 30 20 31 45 20 33 32 20 30 20 30 20 31 20 30 20 34 36 20 36 34 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 7C 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 00 01 00 01 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 02 00 00 0C 45 76 61 6C 75 61 74 69 6F 6E 20 31 00 01 00 01 00 00 00 50 00 01 00 00 00 00 00 01 00 00 00 14 00 00 00 14 00 00 00 00 00 1E 00 00 00 32 00 00 00 00 00 00 00 00 00 01 00 00 46 00 64 00 01 00 01 53 ```
### Read Evaluation Configuration State [sRN EvaluationConfigState] The telegram is intended to read the current configuration state of the field evaluation. Depending on the device, computational limits can be reached. If so, the telegram returns an error or warning if the number of beams, the number of beams per evaluation, or the number of evaluations reaches the maximum defined threshold. **Telegram structure: sRN EvaluationConfigState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info on current configuration state | String | 21 | | `EvaluationConfigState` | `45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65` | **Example: sRN EvaluationConfigState** **CoLa A (ASCII)** ```text sRN{SPC}EvaluationConfigState ``` ```text sRN EvaluationConfigState ``` ```text 02 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 04 ``` ```text 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 ``` **Telegram structure: sRA EvaluationConfigState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info on current configuration state | String | 21 | | `EvaluationConfigState` | `45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65` | | Active beams limit | - | Enum_8 | 1 | OK:
Warning:
Error: | `0
1
2` | `00
01
02` | | Active evaluations limit | - | Enum_8 | 1 | OK:
Warning:
Error: | `0
1
2` | `00
01
02` | | Active beams per evaluation limit | - | Enum_8 | 1 | OK:
Warning:
Error: | `0
1
2` | `00
01
02` | | Number of intersecting beams | One value per evaluation, evaluation 1 to 48 | Array Uint_32 | 192 | | `0 ... FFFFFFFFh` | `00 00 00 00 ... FF FF FF FF` | | Input is output error list | Number of list entries. Normally 0 (empty list). | Uint_16 | 2 | | `0 ... +48d (0 ... 30h)` | `00 00 ... 00 30` | **Example: sRA EvaluationConfigState - one evaluation active, intersected by 172 beams, status of all limits is OK** **CoLa A (ASCII)** ```text sRA{SPC}EvaluationConfigState{SPC}0{SPC}0{SPC}0{SPC}AC{SPC}0{SPC}0…(48 beam counts){SPC}0 ``` ```text 02 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 20 30 20 30 20 30 20 41 43 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 DF 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 66 69 67 53 74 61 74 65 20 00 00 00 00 00 00 AC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 87 ```
### Read Field Evaluation Application State [sRN FieldEvaluationApplicationState] Read the state of the field evaluation application: deactivated (no evaluation set up), active, or configuring (for example, while the field geometries are recalculated). **Telegram structure: sRN FieldEvaluationApplicationState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info on current field evaluation application state | String | 31 | | `FieldEvaluationApplicationState` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65` | **Example: sRN FieldEvaluationApplicationState** **CoLa A (ASCII)** ```text sRN{SPC}FieldEvaluationApplicationState ``` ```text sRN FieldEvaluationApplicationState ``` ```text 02 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 23 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 36 ``` ```text 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 ``` **Telegram structure: sRA FieldEvaluationApplicationState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info on current field evaluation application state | String | 31 | | `FieldEvaluationApplicationState` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65` | | Field evaluation application state | - | Enum_8 | 1 | Deactivated:
Active:
Configuring:
Error: | `0
1
2
3` | `00
01
02
03` | **Example: sRA FieldEvaluationApplicationState** **CoLa A (ASCII)** ```text sRA{SPC}FieldEvaluationApplicationState{SPC}1 ``` ```text 02 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 41 70 70 6C 69 63 61 74 69 6F 6E 53 74 61 74 65 20 01 18 ```
### Read Field Evaluation Result [sRN FieldEvaluationResult] This telegram returns the status information of all evaluations. Possible status codes: - **Not configured** - This evaluation has not been configured. - **Inactive** - This evaluation has been configured but is currently not evaluated. - **Free** - The field is not infringed. - **Infringed** - The field is infringed. - **Detecting infringed** - An infringement has been detected in the field but the response time has not been reached yet. - **Detecting free** - The field is no longer infringed but the time for the free state has not been reached yet. **Telegram structure: sRN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN FieldEvaluationResult** **CoLa A (ASCII)** ```text sRN{SPC}FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text 02 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 12 ``` ```text 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the last change of an evaluation result. Time base is the sensor system time in microseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used; without time synchronization, the system time starts at January 1, 1970, 00:00 on power-up. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | ... | ... | ... | ... | | | | | Evaluation Result | Evaluation state of the last field (maximum amount of evaluations = 48). | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | **Example: sRA FieldEvaluationResult** **CoLa A (ASCII)** ```text sRA{SPC}FieldEvaluationResult{SPC}1{SPC}0{SPC}0…(48 results) ``` ```text 02 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 54 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3C ```
### Receive Field Evaluation Result by Event [sEN FieldEvaluationResult] This telegram returns the status information of all evaluations by subscribing to an event, using the same possible status codes as above. The device confirms the subscription with `sEA FieldEvaluationResult`. After that, it sends an `sSN FieldEvaluationResult` telegram each time an evaluation result changes, not cyclically. Send `sEN FieldEvaluationResult 0` to stop the event. **Telegram structure: sEN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Reporting | Start/ stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN FieldEvaluationResult** **CoLa A (ASCII)** ```text sEN{SPC}FieldEvaluationResult{SPC}1 ``` ```text sEN FieldEvaluationResult 1 ``` ```text 02 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 24 ``` ```text 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sEA FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sEA` | `73 45 41` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Reporting | Start/ stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEA FieldEvaluationResult** **CoLa A (ASCII)** ```text sEA{SPC}FieldEvaluationResult{SPC}1 ``` ```text 02 73 45 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 45 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 2B ``` **Telegram structure: sSN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the last change of an evaluation result. Time base is the sensor system time in microseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used; without time synchronization, the system time starts at January 1, 1970, 00:00 on power-up. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | ... | ... | ... | ... | | | | | Evaluation Result | Evaluation state of the last field (maximum amount of evaluations = 48). | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | **Example: sSN FieldEvaluationResult** **CoLa A (ASCII)** ```text sSN{SPC}FieldEvaluationResult{SPC}1{SPC}0{SPC}0…(48 results) ``` ```text 02 73 53 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 54 73 53 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 32 ```
## Error Codes [sFA] If the device cannot execute a telegram, it answers with `sFA` and an error code, for example `sFA 3` (CoLa A) or `73 46 41 00 03` (CoLa B payload) for an unknown variable name. | Error code | Description | Dec. | Hex. | | --- | --- | --- | --- | | `Sopas_Ok` | No error | 0 | 0 | | `Sopas_Error_METHODIN_ACCESSDENIED` | Wrong userlevel, access to method not allowed | 1 | 1 | | `Sopas_Error_METHODIN_UNKNOWNINDEX` | Trying to access a method with an unknown Sopas index | 2 | 2 | | `Sopas_Error_VARIABLE_UNKNOWNINDEX` | Trying to access a variable with an unknown Sopas index | 3 | 3 | | `Sopas_Error_LOCALCONDITIONFAILED` | Local condition violated, e.g. giving a value that exceeds the minimum or maximum allowed value for this variable | 4 | 4 | | `Sopas_Error_INVALID_DATA` | Invalid data given for variable, this errorcode is deprecated (is not used anymore). | 5 | 5 | | `Sopas_Error_UNKNOWN_ERROR` | An error with unknown reason occurred, this errorcode is deprecated. | 6 | 6 | | `Sopas_Error_BUFFER_OVERFLOW` | The communication buffer was too small for the amount of data that should be serialised. | 7 | 7 | | `Sopas_Error_BUFFER_UNDERFLOW` | More data was expected, the allocated buffer could not be filled. | 8 | 8 | | `Sopas_Error_ERROR_UNKNOWN_TYPE` | The variable that shall be serialised has an unknown type. This can only happen when there are variables in the firmware of the device that do not exist in the released description of the device. This should never happen. | 9 | 9 | | `Sopas_Error_VARIABLE_WRITE_ACCESSDENIED` | It is not allowed to write values to this variable. Probably the variable is defined as read-only. | 10 | A | | `Sopas_Error_UNKNOWN_CMD_FOR_NAMESERVER` | When using names instead of indices, a command was issued that the nameserver does not understand. | 11 | B | | `Sopas_Error_UNKNOWN_COLA_COMMAND` | The CoLa protocol specification does not define the given command, command is unknown. | 12 | C | | `Sopas_Error_METHODIN_SERVER_BUSY` | It is not possible to issue more than one command at a time to an SRT device. | 13 | D | | `Sopas_Error_FLEX_OUTOF_BOUNDS` | An array was accessed over its maximum length. | 14 | E | | `Sopas_Error_EVENTREG_UNKNOWNINDEX` | The event you wanted to register for does not exist, the index is unknown. | 15 | F | | `Sopas_Error_COLA_A_VALUE_OVERFLOW` | The value does not fit into the value field, it is too large. | 16 | 10 | | `Sopas_Error_COLA_A_INVALIDCHARACTER` | Character is unknown, probably not alphanumeric. | 17 | 11 | | `Sopas_Error_OSAI_NO_MESSAGE` | Only when using SRTOS in the firmware and distributed variables this error can occur. It is an indication that no operating system message could be created. This happens when trying to GET a variable. | 18 | 12 | | `Sopas_Error_OSAI_NO_ANSWER_MESSAGE` | This is the same as `Sopas_Error_OSAI_NO_MESSAGE` with the difference that it is thrown when trying to PUT a variable. | 19 | 13 | | `Sopas_Error_INTERNAL` | Internal error in the firmware, probably a pointer to a parameter was null. | 20 | 14 | | `Sopas_Error_HubAddressCorrupted` | The Sopas Hubaddress is either too short or too long. | 21 | 15 | | `Sopas_Error_HubAddressDecoding` | The Sopas Hubaddress is invalid, it can not be decoded (Syntax). | 22 | 16 | | `Sopas_Error_HubAddressAddressExceeded` | Too many hubs in the address | 23 | 17 | | `Sopas_Error_HubAddressBlankExpected` | When parsing a HubAddress an expected blank was not found. The HubAddress is not valid. | 24 | 18 | | - | An asynchronous method call was made although the device was built with “AsyncMethodsSuppressed”. This is an internal error that should never happen in a released device. | 25 | 19 | | - | Device was built with „ComplexArraysSuppressed“ because the compiler does not allow recursions. But now a complex array was found. This is an internal error that should never happen in a released device. | 26 | 1A | ## Related Articles - [CoLa Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/) --- # multiScan200 Electrical Connection and Pin Assignment > Wire a multiScan270 power, Gigabit Ethernet, and digital I/O system plug to a controller using the documented M12 pin assignments. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan200/electrical-connection/ # Electrical Connection Compatible with: multiScan200 To check whether the sensor still receives its minimum supply voltage at the end of a long cable, use the [Cable Dimensioning](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cable-dimensioning/) calculator. ## Power / 8 IOs System plug part numbers: 2155106, 2148845 The PWR and I/O connection uses a male, 12-pin, A-coded M12 connector. ![PWR and I/O connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/multiscan200-pwr.png)

PWR and I/O connector face with numbered pins.

**PWR / 8 IOs** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `IN1/OUT1` | Configurable digital input 1 or output 1 | | 2 | `GND` | Supply return, 0 V | | 3 | `IN2/OUT2` | Configurable digital input 2 or output 2 | | 4 | `IN7/OUT7` | Configurable digital input 7 or output 7 | | 5 | `IN8/OUT8` | Configurable digital input 8 or output 8 | | 6 | `IN3/OUT3` | Configurable digital input 3 or output 3 | | 7 | `IN4/OUT4` | Configurable digital input 4 or output 4 | | 8 | `IN6/OUT6` | Configurable digital input 6 or output 6 | | 9 | `Vs` | Supply, +9 V DC to +30 V DC | | 10 | `IN5/OUT5` | Configurable digital input 5 or output 5 | | 11 | `GND` | Supply return, 0 V | | 12 | `Vs` | Supply, +9 V DC to +30 V DC | **Always wire both supply pins 9 and 12 and both ground pins 2 and 11.** This is a requirement in the multiScan270 operating instructions, not an optional parallel connection. ## Ethernet The Ethernet connection uses a female, 8-pin, X-coded M12 connector. ![Ethernet connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/multiscan200-ethernet.png)

Ethernet connector face with numbered pins.

**Ethernet** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `TRD0_P` | Transmit/receive pair 0 + | | 2 | `TRD0_N` | Transmit/receive pair 0 − | | 3 | `TRD1_P` | Transmit/receive pair 1 + | | 4 | `TRD1_N` | Transmit/receive pair 1 − | | 5 | `TRD3_P` | Transmit/receive pair 3 + | | 6 | `TRD3_N` | Transmit/receive pair 3 − | | 7 | `TRD2_N` | Transmit/receive pair 2 − | | 8 | `TRD2_P` | Transmit/receive pair 2 + | The X-coded Gigabit Ethernet interface requires all four data pairs. A four-wire D-coded connection is unsuitable. --- # multiScan200 Firmware Release Notes > multiScan200 firmware release history, starting with the V1.1.0 initial release for the multiScan270. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan200/release-notes/ # Release Notes This page documents the multiScan200 firmware release history. Use it to assess update impact and decide whether a release is relevant to your installed firmware and application. ## Firmware V1.1.0 **Compatible with:** multiScan270; **Release type:** Initial release Initial firmware release for the multiScan200. --- # multiScan200 Web GUI (SOPASair): All Screens and Settings > Walkthrough of every multiScan200 SOPASair web interface screen, captured on a multiScan270: configuration, data output, contamination indication, and diagnostics. Source: https://sickag.github.io/sick_lidar_developer_guide/multiScan200/graphical-user-interface/ # SOPASair Walkthrough This page describes the multiScan200 web interface and the settings in each view. Use it to commission the sensor before you automate the configuration through the API. To try the interface without a device, open it in the [Virtual Sensor Lab](https://sickag.github.io/sick_lidar_developer_guide/simulation/virtual-sensor-lab/). ## Home The Home page gives you the current device status, network identity, firmware version, and an overview of the sensor's operating state. It is usually the first screen you see after logging in and is the quickest place to confirm that the unit is online and healthy before you start changing configuration or application settings. ![Home](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-home.png) *Home page overview on a live multiScan270 device.* The status bar at the top shows the LED indicator, the device connection status and the measurement status. The toolbar next to it holds **Save permanently**, the login panel, the language switch and the global help (**?**). The help includes a **Getting started** tour that walks through the most important commissioning steps. Changes take effect immediately but are held in volatile memory. Click **Save permanently** in the toolbar to store the parameter set in the device and in the cloning memory of the system plug. Unsaved changes are lost at the next power cycle. For a monitoring display without configuration access, open `http://192.168.0.1/#/?fullscreen=`.
![Status tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-home-status-tile.png) *Status tile, captured live from a multiScan270.*
![Device information tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-home-device-information-tile.png) *Device information tile, captured live from a multiScan270.*
![Status of inputs tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-home-status-of-inputs-tile.png) *Status of inputs tile, captured live from a multiScan270.*
![Status of outputs tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-home-status-of-outputs-tile.png) *Status of outputs tile, captured live from a multiScan270.*
![Detection history statistics tile (Home)](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-home-detection-history-tile.png) *Detection history statistics tile, captured live from a multiScan270.* The LED indicator mirrors the four status LEDs on the housing. LED1 and LED3 show the same colour, as do LED2 and LED4.

Status LED combinations and their meanings on the multiScan270.

| LED1/LED3 | LED2/LED4 | Meaning | | --- | --- | --- | | Red | Red | Booting, parameterising or firmware update | | – | – | Off | | Red, flashing fast | Red, flashing fast | Fatal error | | Red, flashing slowly | Red, flashing slowly | Recoverable error | | Green | Green | Ready, no object detected in configured fields | | – | Green | Ready, no fields configured | | Red | Yellow | Standby / power saving | | Green | Yellow, flashing | Warning | | Yellow | Green, flashing | Restart after time or digital input | | Green | Yellow, flashing | Contamination warning | | Red, flashing | Yellow, flashing | Contamination error | | Green, flashing | Red, flashing | Alignment mode | | Green, yellow, red | Green, yellow, red | Identify device (**Find device**) | | Red | Red and yellow, flashing | Teach-in environment | | Yellow | Green | Object detected |

illuminated · flashing · – off

The LEDs are only an additional visual aid. Switching them off in the web interface does not affect diagnostics over Ethernet or the digital I/Os. ## Configuration Choose the scan configuration and the core measurement behaviour. Resolution, frequency, and range trade off against each other. The live scan on the left updates as you change the configuration, which is the quickest way to judge a setting. ### Basic Settings Basic Settings controls the scan configuration used by the sensor. The settings are shown on the right; the live scan on the left shows the effect of the selected frequency, angular resolution, and other settings immediately. Use this view to check coverage and measurement behaviour while commissioning. ![Basic settings tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-basic-settings-tile.png) *Basic settings tile, captured live from a multiScan270.* The multiScan270 offers the following scan configurations. The vertical field of view is always 45° (about +22.5° to −22.5°). Configurations 10 to 12 reach their horizontal resolution in interlaced mode, where consecutive scans are offset in angle and combined. The ambient-light image is passively captured by the same receiver used for LiDAR, synchronized with the laser measurement, and has the same scan frequency and horizontal resolution as the configured laser measurement.

multiScan270 scan configurations, angular resolutions, layer counts, ambient-image dimensions, and scan frequencies.

| No. | Use case | FoV (H) | Resolution (H × V) | Layers | Ambient image (pixels, columns × rows) | Frequency | | --- | --------------------------- | ------- | ------------------ | ------ | -------------------------------------- | -------------------- | | 1 | Default | 276° | 0.47° × 0.47° | 96 | 592 × 96 | 20 Hz | | 2 | Less bandwidth, more range | 276° | 0.47° × 0.94° | 48 | 592 × 48 | 20 Hz | | 3 | Highest vertical resolution | 276° | 0.47° × 0.23° | 192 | 592 × 192 | 20 Hz | | 4 | Full 360° view | 360° | 0.47° × 0.47° | 96 | 773 × 96 | 10 Hz | | 10 | High horizontal resolution | 276° | 0.23° × 0.47° | 96 | 1184 × 96 | 20 Hz, 2× interlaced | | 11 | High H and V resolution | 276° | 0.23° × 0.23° | 192 | 1184 × 192 | 20 Hz, 2× interlaced | | 12 | Highest H and V resolution | 276° | 0.12° × 0.23° | 192 | 2369 × 192 | 20 Hz, 4× interlaced | | 20 | Up to +55 °C | 190° | 0.47° × 0.47° | 96 | 408 × 96 | 20 Hz | | 21 | Up to +60 °C | 120° | 0.47° × 0.47° | 96 | 285 × 96 | 20 Hz | - **Configurations 20 and 21** reduce the horizontal field of view so that the device can operate at higher ambient temperatures (up to +55 °C and +60 °C). - **Ambient image:** a passive, narrow-band image around 905 nm from the LiDAR receiver, not a camera image. Brightness can differ from what you see; for example, LED-lit areas may look dark. The table shows the image size that matches the point cloud. The maximum image size is 592 × 192 px (configurations 1 to 3), 773 × 192 (4), 1184 × 192 (10 and 11), 2369 × 192 (12), 408 × 192 (20), and 285 × 192 (21). - **Interlaced configurations (10 to 12):** 10 and 11 combine 2 scans (about 100 ms at 20 Hz), 12 combines 4 (about 200 ms). This is the acquisition span, not the output latency. Because the points of one frame are captured at different times, moving objects can appear offset; for moving scenes, validate the result or use a non-interlaced configuration. The mean filter has no effect, and the particle filter should be checked because it compares measurements at different angles. - **Small objects** must be hit repeatedly for reliable measurement. Objects below the minimum object size may need a stationary sensor and target. ![Date and system time tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-date-and-system-time-tile.png) *Date and system time tile, captured live from a multiScan270.* **Date and system time** The time base can be set using various methods: - Explicitly setting the time with date, time - Transferring the time from the computer used - Via an external NTP server (Network Time Protocol) that is accessible in the network. - Via an external PTP (Precision Time Protocol) master that is accessible in the network. NTP uses UDP port 123 and PTP uses UDP ports 319/320. Both are inactive by default. Use PTP when point clouds must be fused with other sensors, because it gives the tightest synchronisation. For background and setup, see [Time synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/). ### Filter Clean up the scan before it leaves the sensor by suppressing extra echoes, artefacts and airborne particles. ![Filter settings](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-filter-tile.png) *Example filter settings in the multiScan270 web interface. Select parameters according to the requirements of each application.* Filters can be combined freely. Active filters run one after another, each on the result of the previous one, in this order: echo filter, particle filter, interval filter, blooming filter, angle-range filter. Keep in mind: - Filters apply to both measurement data output and field evaluation. Filtered values cannot be converted back into the original measurements. - Each active filter adds processing time and therefore output latency. The particle filter adds a delay of one scan. - Field evaluation always uses a single echo. If the echo filter is set to **All echoes**, field evaluation uses the first echo. - In interlaced scan configurations (10 to 12), the precision mode has no effect, and the particle filter compares measurements from different angular positions. Check that it still works as intended in your application. The signal path through the filters: ```mermaid flowchart LR echo([Echo]) --> core[Measurement core] core --> echofilter[Echo filter] echofilter --> particle[Particle filter] particle --> interval[Interval filter] interval --> blooming[Blooming filter] blooming --> angle[Angle-range filter] angle --> output[Measurement data output] angle --> fieldeval[Field evaluation] ``` *Filter processing order for measurement data output and field evaluation.* The precision mode is the multiScan200 version of the mean filter. For detailed behavior and examples, see [Filter details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/). ### Inertial Measuring Unit (IMU) Use the IMU view to inspect the sensor's current orientation and acceleration. ![Mounting settings / IMU](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-mounting-settings.png) *Live capture from a multiScan270's web interface.* ![IMU tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-imu-tile.png) *Inertial measuring unit (IMU) tile, captured live from a multiScan270.* The IMU view displays the yaw, pitch, and roll angles in degrees, together with the measured acceleration on the X, Y, and Z axes in meters per second squared. The IMU samples at 100 Hz. It sits at X = −17 mm and Y = +23.5 mm relative to the optical origin, so apply this offset when you fuse IMU data with the point cloud. IMU data is streamed separately in Compact format on TCP port 2117, or as the `imu` topic over [Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2). Orientation follows DIN ISO 8855 with a right-handed coordinate system. X is the main viewing direction, and Z points to the top of the device. Measurement data is always output in the device coordinate system. Mounting settings describe the sensor pose in the world coordinate system; without them, both systems are identical. ### Contamination Indication Monitor the optics cover for dirt and get a warning before measurement quality drops. ![Contamination indication tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-contamination-indication-tile.png) *Contamination indication tile, captured live from a multiScan270.* A contamination warning makes LED2/LED4 flash yellow while LED1/LED3 stay green. A contamination error makes LED1/LED3 flash red and LED2/LED4 flash yellow. The contamination state is also available as secondary data, so a host can react before measurement quality drops. If the measurement data shows anomalies, clean the optics cover first: 1. If possible, disconnect the power supply. 2. Clean the optics cover with a clean, damp, lint-free cloth and a mild, antistatic plastic cleaner. Do not use pointed objects. 3. Remove dust from the housing with a soft brush. If the optics cover is scratched or damaged, take the device out of operation and have it repaired by SICK. ### Connection Options Give the sensor its permanent Ethernet identity so it fits your network. ![Ethernet tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-ethernet-tile.png) *Ethernet tile, captured live from a multiScan270.* The factory default IP address is `192.168.0.1`. The Ethernet link runs at 1 Gbit/s. Keep this in mind for high-resolution scan configurations. - After changing the static IP address, restart the device so that Native ROS 2 topics are published correctly. - The addressing mode, IP address, subnet mask, default gateway and device name are also cloned to the system plug when you save permanently. A replacement device on the same system plug starts with the same network identity. ### Inputs and Outputs Configure the multifunction I/O ports and map field-evaluation results and device states to physical outputs. ![Port configuration](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-port-config.png) *Live capture from a multiScan270's web interface.* ![System plug tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-configuration-port-config-system-plug-tile.png) *System plug tile on the port configuration page, captured live from a multiScan270.* The device has up to eight multifunction ports, depending on the mounted system plug. Each port can be configured as an input, with a debounce time, or as an output in push-pull, NPN, or PNP mode. For the electrical values, see the product page on [sick.com](https://www.sick.com). ## Application ### Data Output Decide what measurement data leaves the sensor and how it is streamed to your system. ![Measurement data output tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-application-data-output-measurement-data-output-tile.png) *Measurement data output tile, captured live from a multiScan270.* ![Data reduction tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-application-data-output-data-reduction-tile.png) *Data reduction tile, captured live from a multiScan270.* ![Angular range filter tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-application-data-output-angular-range-filter-tile.png) *Angular range filter tile, captured live from a multiScan270.* For detailed filter behavior, see [Filter details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/). ![Scan data structure with slots and layers](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/data-structure-slots-and-layers.png) *Scan data structure: at each horizontal angle step (slot M−1, M, M+1, …), the sensor measures one vertical column with layers 1 to N. The scan configuration sets the number of layers and the angle between slots.* The device streams measurement data in these ways:

Measurement and IMU data outputs, transports, and payloads on the multiScan270.

| Output | Transport | Content | | ------------ | ------------------------ | --------------------------------------------------------------- | | Compact | TCP 2115 (outgoing) | Distance and RSSI, optional ambient light (telegram type 6) | | Compact | TCP 2116 (outgoing) | Ambient light only (telegram type 3) | | Compact IMU | TCP 2117 (outgoing) | IMU data at 100 Hz (telegram type 7) | | Native ROS 2 | DDS over UDP 7400–65399 | `PointCloud2`, `LaserScan`, `ambient_light` and `imu` topics | All outputs are disabled by default. Compact uses TCP to avoid data loss. Measurement data output responds within 100 ms or less, plus network delay from cables and switches. For each echo, the device also outputs a relative signal strength indicator (RSSI). Its representation depends on the output format: Compact carries an unsigned 16-bit value, while Native ROS 2 `PointCloud2` intensity is normalized to 0.0–1.0 and identifies reflectors through the properties bit mask. Native ROS 2 `LaserScan` and `MultiEchoLaserScan` intensity uses 0.0–1.0 for natural targets and 1.05 for detected reflectors. Do not use intensity alone to determine whether a measurement is valid. See [RSSI values](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#rssi-values) and [Native ROS 2 topics](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#published-topics) for the format-specific details. For Native ROS 2, use CycloneDDS as the ROS middleware and subscribe only to the topics you need, because subscribed topics are published even when they contain no points. Parameterisation still runs over REST or CoLa. See [Compact format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) and [Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2). ### Field Evaluation Configure monitored volumes and let the sensor evaluate incoming 3D scan points on the device. ![Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-application-field-evaluation.png) *Live capture from a multiScan270's web interface.* ![Field evaluation tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-application-field-evaluation-field-evaluation-tile.png) *Field evaluation tile, captured live from a multiScan270.* Define a field's polygonal contour and its lower and upper Z limits to form a monitored volume in the sensor coordinate system. The sensor evaluates points inside that volume using the configured detection criteria. Evaluation groups organize the fields and control their activation; results can be combined with logic and mapped to outputs. - Up to 48 fields can be configured, and up to 20 can be active at the same time. - A group is activated by digital inputs, by telegram, or is always active. Each field in a group has its own evaluation settings. - The result can be linked to a switching output and combined with other signals using logic such as AND, OR and XOR. - Typical uses are collision protection, object protection and access monitoring. Evaluation runs after every scan cycle, and the field status is output within 175 ms or less. The latency also depends on where and when an object enters the field relative to the laser position, and on the number of active fields, the digital outputs, the filters and measurement data streaming. Only points that fall inside an active field add system load, but many active fields can still cause performance problems. If you need more fields at once, reduce the load by disabling the GUI live view, unused data outputs or filters. Test with your actual application. For programmatic access, see [Field evaluation and distance API](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/). ## Diagnostics ### Overview ![Operating information tile](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-diagnosis-overview-operating-information-tile.png) *Operating information tile, captured live from a multiScan270.* The device logs events continuously. Logging cannot be switched off; when the log memory is full, the oldest entries are overwritten. Download the diagnostic file from **Diagnostics** and attach it to any support request, together with the type code and serial number from the type label.

Common device and web-interface symptoms and recommended diagnostic actions.

| Symptom | Action | | -------------------------------- | ----------------------------------------------------------------------------------------- | | Both LEDs flash red | Device error. Read the error code in the web interface and fix the cause. | | All LEDs flash red | The device may not detect the system plug. Check that it is mounted, clean and dry. | | All LEDs stay red at start-up | Check the power supply; it may not deliver enough current or voltage for motor start. | | All LEDs are off | Check the power supply, and check whether the LEDs were switched off in the interface. | | The loading screen stays on | Reconnect. If that does not help, restart the device. | | The web interface does not open | Check the IP addresses of the device and network adapter, for example with device search. | | Measurement data shows anomalies | Clean the optics cover. | ### Cybersecurity ![Cybersecurity](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-diagnosis-cyber-security-measures.png) *Live capture from a multiScan270's web interface.* Enable and disable network services here. Disable every service you do not need.

Network services, device ports, and default activation states on the multiScan270.

| Service | Purpose | Protocol and port (device) | Default | | ----------------- | -------------------- | -------------------------- | -------- | | HTTP/REST | Configuration, data | TCP 80 | Enabled | | HTTPS | Configuration, data | TCP 443 | Enabled | | SOPAS (CoLa 2) | Configuration, data | TCP 2122 | Disabled | | SOPAS (CoLa A/B) | Configuration, data | TCP 2111/2112 | Disabled | | NTP | Time synchronisation | UDP 123 | Inactive | | PTP | Time synchronisation | UDP 319/320 | Inactive | | UDP device search | Device discovery | UDP 30718 | Enabled | | Compact | Measurement data | TCP 2115/2116 | Disabled | | Compact IMU | IMU data | TCP 2117 | Disabled | | Native ROS 2 | Measurement data | UDP 7400–65399 | Disabled | For the full multiScan270 network-services matrix, including interfaces, communication direction, and peer ports, see [Cybersecurity: multiScan270 network services](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/#multiscan270-network-services-and-ports). Change the default passwords at first commissioning. Only the **Service** user level is active on delivery; see [User levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). SICK provides firmware updates to fix known vulnerabilities, but the device has no automatic update. Check for updates regularly; see [Firmware update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) and [SICK PSIRT](https://www.sick.com/psirt) for security advisories. ### Detection History ![Detection history](https://sickag.github.io/sick_lidar_developer_guide/assets/multiScan200/img/sopasair-diagnosis-detection-history.png) *Live capture from a multiScan270's web interface.* --- # picoScan100 Overview > Developer guide for the SICK picoScan100 2D LiDAR family (picoScan120, picoScan150): web GUI, REST API, CoLa telegrams, licenses, and release notes. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/ # picoScan100 The picoScan100 is a compact 2D LiDAR sensor with one scan plane and a 276° scan range. It comes in two variants: the picoScan120 and the picoScan150. For a sensor and cable combination to get started, see the [Starter Kit](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/starter-kit/). [Specifications and data sheet on sick.com](https://www.sick.com/de/en/search?text=picoScan100)
picoScan150 with a blue beam sweeping its 276-degree scan plane and fading wall hit points *picoScan150: one 276° scan plane. Blue represents infrared; beam geometry, wall hits, and speed are schematic.*
[Search for picoScan100 on sick.com](https://www.sick.com/de/en/search?text=picoScan100) and open the *Downloads* tab of your device variant's product page for firmware, EPLAN and CAD data, and available NVIDIA Isaac Sim models and Milestone XProtect plug-ins. Select the files for your device variant; see [Licenses](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/licenses/) for feature availability and [Release Notes](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/release-notes/) for firmware changes.
**Input** - [CoLa A/B](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/) - [Digital inputs](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/electrical-connection/) - [Ethernet](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/electrical-connection/) - [HTTPS](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) - [NTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [PTP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) - [PWR and I/O connector](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/electrical-connection/) - [REST API](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) - [SOPASair](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/)
**Processing** - [3D scan recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/) - [2D scan profiles](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/) - [Contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Device discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/) - [Echo filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Field evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [Fog filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Interval filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Moving-average filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Particle filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Perpendicular distance](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) - [Radial-distance filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Region-of-interest filtering](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) - [Sensitivity modes](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#sensitivity-mode)
**Output** - [CoLa A/B telegrams](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/) - [Compact over UDP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) - [Contamination status](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) - [Digital outputs](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/electrical-connection/) - [Field-evaluation states](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/) - [IMU data](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) - [LMDscandata over TCP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/) - [MSGPACK over UDP](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/) - [Native ROS 2 topics](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/) - [Perpendicular-distance values](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) - [REST JSON responses](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) - [WebSocket JSON events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/)
*Inputs, onboard processing, and outputs of the **picoScan100**. Each column is an independent list.* Use the Product ID (PID) to find the exact product variant on [sick.com](https://www.sick.com/): enter the part number (P/N) and optional serial number (S/N), for example `1134610/25250710`. A complete [pid.sick.com](https://pid.sick.com/) URL is also accepted.
pid.sick.com/

--- # picoScan100 API | REST | OpenAPI > Download the picoScan120 and picoScan150 OpenAPI descriptions and search model-specific REST endpoints, request parameters, and response schemas. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/ # API | REST | OpenAPI
![OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/assets/openapi-logo.png) This page provides searchable REST references and downloadable OpenAPI descriptions for picoScan120 and picoScan150. For REST concepts, authentication, and request patterns, see [REST API / OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/).
[picoScan150_2.3.3.0R.yaml (Download)](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/openapi/picoScan150_2.3.3.0R.yaml) [picoScan120_2.3.3.0R.yaml (Download)](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/openapi/picoScan120_2.3.3.0R.yaml) Always match the file to your device model and actual firmware version. Function availability can vary by variant and installed software package. Use the reference for your model below; the two models do not share every endpoint. ## picoScan150 REST API ### 1 - General #### [POST /checkCredentials](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-checkcredentials) Returns authentication success. For more details see https://github.com/SICKAG/sick_scan_rest_client. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [PUT /update](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-put-update) Transfers a firmware file (.spk.signed) from the file location to the device. The maximum possible file size is 100 MB. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) for the firmware update workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `application/octet-stream`** `data` | `Type` | **Type:** string | | --- | --- | | `Binary` | **Type:** string | **Responses** **Status `200`** #### [GET /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-parameterbackup) Reads/transfers the backup file (json) from/to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/parameterbackup" ``` **Responses** **Status `200`** **Media type: `application/json`** | `version` | **Type:** string | | --- | --- | | `device identification` | **Type:** string | | `checksum` | **Type:** string | | `parameters` | **Type:** array **Items:** | `userlevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-e-user-level-type) | | `parameters` | **Type:** array **Items:** | `name` | **Type:** string | | `id` | **Type:** string | | `value` | **oneOf** **Type:** integer **Type:** boolean **Type:** string **Type:** object **Type:** number | | | #### [PUT /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-put-parameterbackup) Reads/transfers the backup file (json) from/to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `multipart/form-data`** `datei` **Type:** string · **Format:** binary Json-File **Responses** **Status `200`** #### [POST /SetPassword](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-setpassword) Sets the password for the CoLa A/B interface only. In this example the password for user level: Service (4) is set to - test - (integer value of the password hash - test -). For more details see https://github.com/SICKAG/sick_scan_rest_client. **Editable JSON template** ```json { "data": { "siUserLevel": "", "udiNewPassword": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `siUserLevel` | **Type:** integer · **Format:** int8 | | --- | --- | | `udiNewPassword` | **Type:** integer · **Format:** uint32 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `bSuccess` **Type:** boolean · **Default:** false | #### [POST /getChallenge](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-getchallenge) Returns a challenge for the challenge and response authentication method. For more details see https://github.com/SICKAG/sick_scan_rest_client **JSON example** ```json { "data": { "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `user` **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-e-user-level-type) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `challenge` | | `realm` | **Type:** string · **Default:** | | `nonce` | **Type:** string · **Default:** | | `opaque` | **Type:** string · **Default:** | | `salt` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** integer | | #### [POST /changePassword](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-changepassword) Sets the password for the REST interface. For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "encryptedMessage": [], "userLevel": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `encryptedMessage` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 96 **Items:** **Type:** integer · **Format:** uint8 | | --- | --- | | `userLevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-e-user-level-type) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED * 4 - PWD_NOT_CHANGABLE * 5 - TIMELOCK_ACTIVE | #### [POST /EnableUserLevel](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-enableuserlevel) Activates / deactivates a specific user level for the REST interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer · **Format:** uint8 | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED | #### [POST /WriteEeprom](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-writeeeprom) Saves all parameters permanently. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [POST /SoftReset](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-softreset) Reboots the device. All non-saved parameters are lost. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ProcessorNbr": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ProcessorNbr` **Type:** integer · **Format:** uint16 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /RebootDevice](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-rebootdevice) Reboots the device. All parameters are saved. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /LoadFactoryDefaults](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-loadfactorydefaults) Resets all parameters to default. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /LoadApplicationDefaults](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-loadapplicationdefaults) Resets only the user parametrization of the fields, evaluation cases, and parameters under the section "Application". Other parameters like interface settings, echo filter, etc. remain unchanged. This function requires the user level: Service. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /EnableLegacyUserLevel](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-enablelegacyuserlevel) Activates / deactivates a specific user level for the CoLa A/B interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer · **Format:** uint8 · **Minimum:** 0 · **Maximum:** 7 | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `result` **Type:** boolean · **Default:** false | #### [GET /laserType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lasertype) Returns the type of the sending unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/laserType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `laserType` **Type:** integer · **Format:** uint8 · **Default:** 0 | #### [GET /sipmType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-sipmtype) Returns the type of the receiving unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/sipmType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `sipmType` **Type:** integer · **Format:** uint8 · **Default:** 0 | #### [POST /RunFirmwareUpdate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-runfirmwareupdate) Starts the firmware update process. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /UpdateState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-updatestate) Returns the state of the update process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/UpdateState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `UpdateState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Initial * 1 - Started * 2 - Finished * 3 - Error | #### [GET /CreateParameterBackupResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-createparameterbackupresult) Returns the current status of the parameter backup process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CreateParameterBackupResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Status` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Pending * 1 - Finished | | `Result` | **Type:** boolean · **Default:** false | | #### [GET /RestoreParameterBackupResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-restoreparameterbackupresult) Returns the current status of the parameter restoration process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/RestoreParameterBackupResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Status` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Pending * 1 - Finished | | `RestoreResult` | **Fields:** [RestoreBackupResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-restorebackupresult) | | `ParametersFailedToRestore` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** **Type:** string · **Default:** · **Maximum length:** 256 | | #### [POST /CreateParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-createparameterbackup) Creates a parameter backup file on the device. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Passphrase": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `Passphrase` **Type:** string · **Default:** · **Maximum length:** 256 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [POST /RestoreParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-restoreparameterbackup) Restores the backup file on the device. The restored parameters will then be applied. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Passphrase": " ", "Filter": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | | `Passphrase` | **Type:** string · **Default:** · **Maximum length:** 256 | | `Filter` | **Type:** integer · **Format:** uint32 · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [GET /LFTchecksum](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lftchecksum) Returns a checksum over all software parts and configurations. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFTchecksum" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `MD5SumOK` | **Type:** boolean · **Default:** false | | `MD5LinuxRoot` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5App` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5Calibration` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5Parameters` | **Type:** string · **Default:** · **Maximum length:** 32 | | #### [POST /CreateSessionToken](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-createsessiontoken) A short-lived session token to pass to a HTTP request header. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `token` | **Fields:** [SessionToken](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-sessiontoken) | | `timeToLive` | **Type:** integer · **Format:** uint16 | | ### 2 - Status #### [GET /DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-devicestatus) Returns the device state (9 possible states). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `DeviceStatus` **Fields:** [DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-devicestatus) | #### [GET /SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scdevicestate) Returns the device state (busy, ready, or error). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SCdevicestate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `SCdevicestate` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Busy * 1 - Ready * 2 - Error | ### 3 - Device Information #### [GET /DeviceIdent](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-deviceident) Returns the device name and the firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceIdent" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Name` | **Type:** string · **Default:** picoScan · **Maximum length:** 8 | | `Version` | **Type:** string · **Default:** 2.3.3.0R · **Maximum length:** 8 | | #### [GET /LocationName](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-locationname) Returns/sets the device name. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LocationName" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | #### [POST /LocationName](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-locationname) Returns/sets the device name. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LocationName": "not defined" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /SerialNumber](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-serialnumber) Returns the serial number. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SerialNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `SerialNumber` **Type:** string · **Default:** 123456789 · **Maximum length:** 9 | #### [GET /FirmwareVersion](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-firmwareversion) Returns the current firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FirmwareVersion" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `FirmwareVersion` **Type:** string · **Default:** XXXXXXXXXX · **Maximum length:** 40 | #### [GET /OrderNumber](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ordernumber) Returns the order number (SICK part number). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OrderNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `OrderNumber` **Type:** string · **Default:** 1234567 · **Maximum length:** 32 | #### [GET /DeviceType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-devicetype) Returns the device type. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `DeviceType` **Type:** string · **Default:** picoScan1xx · **Maximum length:** 18 | #### [POST /FindMe](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-findme) Sets the device LEDs into blinking mode for better identification. **Editable JSON template** ```json { "data": { "uiDuration": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `uiDuration` **Type:** integer · **Format:** uint16 · **Minimum:** 1 **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 4 - Basic Settings #### [GET /LEDState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ledstate) Returns the LED status. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `LEDState` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [LedStateType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-ledstatetype) | #### [GET /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ledenable) Returns/sets the LED mode (on/off). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | #### [POST /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-ledenable) Returns/sets the LED mode (on/off). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LEDEnable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /mStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-mstartmeasure) Starts motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStandby](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-mstandby) Enables/disables the Laser (on/off). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStopMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-mstopmeasure) Stops motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/AutoStartMeasure" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | #### [POST /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "AutoStartMeasure": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /PerformanceProfileNumber](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-performanceprofilenumber) Returns/sets the scan configuration (scanning frequency and angular resolution). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PerformanceProfileNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `PerformanceProfileNumber` **Fields:** [PerformanceProfiles_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-performanceprofiles-t) | #### [POST /PerformanceProfileNumber](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-performanceprofilenumber) Returns/sets the scan configuration (scanning frequency and angular resolution). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "PerformanceProfileNumber": 2 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `PerformanceProfileNumber` **Fields:** [PerformanceProfiles_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-performanceprofiles-t) | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scanconfig) Returns the configuration of angular resolution, scanning frequency, start and stop angle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `udiScanFreq` | **Type:** integer · **Format:** uint32 · **Default:** 4000 · **Minimum:** 1500 · **Maximum:** 5000 | | `ScanRange` | | `uiLength` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 1 | | `aRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiAngleRes` | **Type:** integer · **Format:** uint32 · **Default:** 2500 · **Minimum:** 500 · **Maximum:** 10000 | | `diStartAngle` | **Type:** integer · **Format:** int32 · **Default:** -1380000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | `diStopAngle` | **Type:** integer · **Format:** int32 · **Default:** 1380000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | | | #### [GET /EnableLongRangeMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-enablelongrangemode) Enables/disables the maximum scanning range depending on the scan configuration. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EnableLongRangeMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EnableLongRangeMode` **Type:** boolean · **Default:** false | #### [POST /EnableLongRangeMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-enablelongrangemode) Enables/disables the maximum scanning range depending on the scan configuration. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EnableLongRangeMode": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EnableLongRangeMode` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /SensitivityMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-sensitivitymode) Returns/sets the sensitivity of the receiver unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensitivityMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `SensitivityMode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - MAXIMUM_ROBUSTNESS * 1 - STANDARD * 2 - MAXIMUM_DETECTIVITY | #### [POST /SensitivityMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-sensitivitymode) Returns/sets the sensitivity of the receiver unit. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "SensitivityMode": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `SensitivityMode` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - MAXIMUM_ROBUSTNESS * 1 - STANDARD * 2 - MAXIMUM_DETECTIVITY | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 5 - Date and System Time #### [GET /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-tscrole) Returns/sets the time synchronization role (none, NTP or PTP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCRole" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | #### [POST /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-tscrole) Returns/sets the time synchronization role (none, NTP or PTP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCRole": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-tsctcsrvaddr) Returns/sets the IP address of the time server. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCSrvAddr" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-tsctcsrvaddr) Returns/sets the IP address of the time server. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCSrvAddr": [ 192, 168, 0, 11 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-tsctctimezone) Returns/sets the time zone of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCtimezone" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | #### [POST /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-tsctctimezone) Returns/sets the time zone of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCtimezone": 36 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-tsctcupdatetime) Returns/sets the update time of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCupdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Format:** uint32 · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | #### [POST /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-tsctcupdatetime) Returns/sets the update time of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCupdatetime": 600 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Format:** uint32 · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /LSPdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lspdatetime) Returns the current time of the device (years, months, days, hours, minutes, seconds, microseconds). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LSPdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `LSPdatetime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-datetime-t) | #### [POST /LSPsetdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lspsetdatetime) Sets the time of the device (years, months, days, hours, minutes, seconds, microseconds). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DateTime": { "uiYear": 0, "usiMonth": 1, "usiDay": 1, "usiHour": 0, "usiMinute": 0, "usiSec": 0, "udiUSec": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-datetime-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 6 - Filter #### [GET /MCSenseLevel](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-mcsenselevel) Returns/sets the fog filter settings. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/MCSenseLevel" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `MCSenseLevel` **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 1 | #### [POST /MCSenseLevel](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-mcsenselevel) Returns/sets the fog filter settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "MCSenseLevel": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `MCSenseLevel` **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 1 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /LFPparticle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lfpparticle) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimal threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPparticle" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Format:** uint16 · **Default:** 500 · **Minimum:** 20 · **Maximum:** 5000 | | #### [POST /LFPparticle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lfpparticle) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimal threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPparticle": { "bEnable": false, "uiThreshold": 500 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LFPparticle` | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Format:** uint16 · **Default:** 500 · **Minimum:** 20 · **Maximum:** 5000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /LFPmovingAveragingFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lfpmovingaveragingfilter) Returns/sets the mean filter settings. This filter smooths the distance value by calculating the arithmetic mean from the configured number of scans (2..4 scans). Points with zero distance are treated as missing values and are not taken into account for averaging. If all distances considered for averaging have the value 0, the result will be 0 as well. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPmovingAveragingFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiAveragingDepth` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 2 · **Maximum:** 4 | | #### [POST /LFPmovingAveragingFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lfpmovingaveragingfilter) Returns/sets the mean filter settings. This filter smooths the distance value by calculating the arithmetic mean from the configured number of scans (2..4 scans). Points with zero distance are treated as missing values and are not taken into account for averaging. If all distances considered for averaging have the value 0, the result will be 0 as well. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPmovingAveragingFilter": { "bEnable": false, "uiAveragingDepth": 3 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LFPmovingAveragingFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiAveragingDepth` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 2 · **Maximum:** 4 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment the sensor receives several measurement points on the same angular step (multi-echo). The filter can filter out the first echo, the last echo or all echoes. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FREchoFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO | #### [POST /FREchoFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-frechofilter) Returns/sets the multi-echo filter settings. Depending on the environment the sensor receives several measurement points on the same angular step (multi-echo). The filter can filter out the first echo, the last echo or all echoes. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "FREchoFilter": 1 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `FREchoFilter` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - FIRST_ECHO * 1 - ALL_ECHOS * 2 - LAST_ECHO | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 7 - Contamination Indication #### [GET /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-contaminationconfig) Returns/sets the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 3 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 6, 255 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 6 - CM_COVER * 255 - CM_COVER_CUSTOM_SECTORS | | `CustomSectors` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** true | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | #### [POST /ContaminationConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-contaminationconfig) Returns/sets the contamination indication settings such as sensitivity, response time, threshold for warning, and active sectors. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ContaminationConfig": { "eStrategy": 0, "usiResponseTime": 3, "eThreshold": 0, "eCover": 0, "CustomSectors": [], "bEnableWarning": true, "bEnableError": true } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ContaminationConfig` | `eStrategy` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_STRATEGY_INACTIVE * 1 - CM_STRATEGY_HIGH_AVAILABLE * 2 - CM_STRATEGY_SENSITIVE | | `usiResponseTime` | **Type:** integer · **Format:** uint16 · **Default:** 3 · **Minimum:** 3 · **Maximum:** 60 | | `eThreshold` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_LOW * 1 - CM_MID * 2 - CM_HIGH | | `eCover` | **Allowed values:** ``` [ 0, 6, 255 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_COVER_NONE * 6 - CM_COVER * 255 - CM_COVER_CUSTOM_SECTORS | | `CustomSectors` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** true | | `bEnableWarning` | **Type:** boolean · **Default:** true | | `bEnableError` | **Type:** boolean · **Default:** true | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ContaminationActiveSectors](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-contaminationactivesectors) Returns the active contamination sectors. Starts by the first sector at -138 degree and continues counterclockwise. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationActiveSectors" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ContaminationActiveSectors` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Type:** boolean · **Default:** false | #### [GET /ContaminationData](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-contaminationdata) Returns the contamination state of all contamination sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationData" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ContaminationData` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 12 **Items:** **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - CM_DATA_NONE * 1 - CM_DATA_CLEAN * 2 - CM_DATA_WARN * 3 - CM_DATA_ERROR | #### [GET /ContaminationResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-contaminationresult) Returns the contamination indication state of the device. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ContaminationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bWarningActive` | **Type:** boolean · **Default:** false | | `bErrorActive` | **Type:** boolean · **Default:** false | | #### [GET /treatBlockedSectorsAsErrorSectors](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-treatblockedsectorsaserrorsectors) Returns/sets the state if blocked sectors are treated as blocked or contaminated sectors. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/treatBlockedSectorsAsErrorSectors" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `treatBlockedSectorsAsErrorSectors` **Type:** boolean · **Default:** false | #### [POST /treatBlockedSectorsAsErrorSectors](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-treatblockedsectorsaserrorsectors) Returns/sets the state if blocked sectors are treated as blocked or contaminated sectors. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "treatBlockedSectorsAsErrorSectors": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `treatBlockedSectorsAsErrorSectors` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 8 - Ethernet #### [GET /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheripaddress) Returns/sets the used static IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etheripaddress) Returns/sets the used static IP address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPAddress": [ 192, 168, 0, 1 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheripgateaddress) Returns/sets the default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etheripgateaddress) Returns/sets the default gateway address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPGateAddress": [ 0, 0, 0, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheripmask) Returns/sets the subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMask" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etheripmask) Returns/sets the subnet mask. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPMask": [ 255, 255, 255, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAddressingMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | #### [POST /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAddressingMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherDHCPFallback" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | #### [POST /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherDHCPFallback": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /EthernetUpdate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-ethernetupdate) Applies the ethernet settings. This needs to be executed to actually change the ethernet settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherIPAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheripaddressdhcp) Returns the assigned DHCP IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherIPAddressDHCP` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherIPGateAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheripgateaddressdhcp) Returns the assigned DHCP default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddressDHCP` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherIPMaskDHCP](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etheripmaskdhcp) Returns the assigned DHCP subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMaskDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherIPMaskDHCP` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherMACAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ethermacaddress) Returns the MAC address of the ethernet interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherMACAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherMACAddress` **Default:** ``` [ 0, 6, 119, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** **Type:** integer · **Format:** uint8 | ### 9 - Inputs and Outputs #### [GET /InputState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-inputstate) Returns the state of all inputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aDigitalIn` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** `IOState` **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-iostate-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-datetime-t) | | #### [GET /OutputState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-outputstate) Returns the state of all outputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OutputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aDigitalOut` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `IOState` | **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-iostate-t) | | `udiCounter` | **Type:** integer · **Format:** uint32 | | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-datetime-t) | | --- | --- | | #### [GET /PortState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-portstate) Returns the state of the ports. "PortState" is preferred over "OutputState". **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aInternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-portstateandcounter-t) | | `aExternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-portstateandcounter-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-datetime-t) | | #### [POST /mResetOutputCounter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-mresetoutputcounter) Resets the counter for the outputs. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /enableCloningPlug](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-enablecloningplug) Enables/disables the cloning functionality of the system plug. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/enableCloningPlug" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `enableCloningPlug` **Type:** boolean · **Default:** true | #### [POST /enableCloningPlug](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-enablecloningplug) Enables/disables the cloning functionality of the system plug. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "enableCloningPlug": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `enableCloningPlug` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-portconfiguration) Returns/sets the port configuration of all I/Os. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | **Example:** ``` { "PortConfiguration": [ { "InputSettings": { "Debounce": 1, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut1", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut2", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 2, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut3", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "FE01", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut4", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut5", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut6", "OutputSettings": { "Combination": 1, "Logic": 0, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [] }, "PortType": 0, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut7", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 }, { "InputSettings": { "Debounce": 10, "Logic": 0, "Reserved1": 0, "Reserved2": 0, "Sensitivity": 1 }, "Name": "InOut8", "OutputSettings": { "Combination": 1, "Logic": 1, "OutputMode": 0, "Reserved3": 0, "Reserved4": 0, "RestartInput": 1, "RestartTime": 200, "RestartType": 0, "Sources": [ { "Invert": false, "Name": "DRDY", "Reserved5": 0, "Reserved6": 0 } ] }, "PortType": 1, "Reserved10": 0, "Reserved7": 0, "Reserved8": 0, "Reserved9": 0 } ] } ``` `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-logic-t) | | `Debounce` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved2` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Format:** uint32 · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved4` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `Reserved6` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved9` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved10` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | #### [POST /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-portconfiguration) Returns/sets the port configuration of all I/Os. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "PortConfiguration": [ { "PortType": 0, "Name": "IOx", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 0, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "EncoderPortType": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-logic-t) | | `Debounce` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved2` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Format:** uint32 · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved4` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `Reserved6` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved9` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved10` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /SetOutput](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-setoutput) Sets the output state for an individual output. Precondition is to set the output source to "SOPAS command". **Editable JSON template** ```json { "data": { "Output": "", "Value": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `Output` | **Type:** integer · **Format:** uint8 | | --- | --- | | `Value` | **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | ### 10 - Measurement Data Output #### [GET /EtherHostIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etherhostipport) Returns/sets the port settings for the LMDscandata output (CoLa Binary TCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherHostIPPort" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherHostIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2112 · **Minimum:** 1024 | #### [POST /EtherHostIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etherhostipport) Returns/sets the port settings for the LMDscandata output (CoLa Binary TCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherHostIPPort": 2112 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherHostIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2112 · **Minimum:** 1024 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherAuxIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etherauxipport) Returns/sets the port settings for the LMDscandata output 2 (CoLa ASCII TCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxIPPort" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherAuxIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2111 · **Minimum:** 1024 | #### [POST /EtherAuxIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etherauxipport) Returns/sets the port settings for the LMDscandata output 2 (CoLa ASCII TCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAuxIPPort": 2111 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2111 · **Minimum:** 1024 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherSessionTimeout](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ethersessiontimeout) Returns/sets the session timeout for the LMDscandata output. Be careful with low values as they might cause unexpected disconnections. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherSessionTimeout" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherSessionTimeout` **Type:** integer · **Format:** uint32 · **Default:** 15000 | #### [POST /EtherSessionTimeout](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-ethersessiontimeout) Returns/sets the session timeout for the LMDscandata output. Be careful with low values as they might cause unexpected disconnections. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherSessionTimeout": 15000 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherSessionTimeout` **Type:** integer · **Format:** uint32 · **Default:** 15000 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scandataethsettings) Returns/sets the destination IP address settings for measurement data streaming (UDP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataEthSettings" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 2115 | | #### [POST /ScanDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scandataethsettings) Returns/sets the destination IP address settings for measurement data streaming (UDP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataEthSettings": { "Protocol": 1, "IPAddress": [ 192, 168, 0, 100 ], "Port": 2115 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataEthSettings` | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 2115 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scandataenable) Enables/disables the measurement data streaming. The measurement data itself is sent via a UDP-based SICK-specific format. A Python example can be found at https://github.com/SICKAG/ScanSegmentAPI. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ScanDataEnable` **Type:** boolean · **Default:** false | #### [POST /ScanDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scandataenable) Enables/disables the measurement data streaming. The measurement data itself is sent via a UDP-based SICK-specific format. A Python example can be found at https://github.com/SICKAG/ScanSegmentAPI. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scandataformat) Returns/sets the scan data format (e.g. Compact format). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataFormat" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 1 - MSGPACK * 2 - Compact * 3 - LMDscandata * 4 - NativeROS2 | #### [POST /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scandataformat) Returns/sets the scan data format (e.g. Compact format). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataFormat": 2 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 1 - MSGPACK * 2 - Compact * 3 - LMDscandata * 4 - NativeROS2 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /rosFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-rosframeid) Returns/sets the frame ID of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosFrameId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `rosFrameId` **Type:** string · **Default:** picoScan_ · **Maximum length:** 64 | #### [POST /rosFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-rosframeid) Returns/sets the frame ID of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosFrameId": "picoScan_" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `rosFrameId` **Type:** string · **Default:** picoScan_ · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /rosParentFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-rosparentframeid) Returns/sets the parent frame ID of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosParentFrameId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `rosParentFrameId` **Type:** string · **Default:** world · **Maximum length:** 64 | #### [POST /rosParentFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-rosparentframeid) Returns/sets the parent frame ID of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosParentFrameId": "world" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `rosParentFrameId` **Type:** string · **Default:** world · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /rosNamespace](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-rosnamespace) Returns/sets the namespace of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosNamespace" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `rosNamespace` **Type:** string · **Default:** · **Maximum length:** 64 | #### [POST /rosNamespace](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-rosnamespace) Returns/sets the namespace of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosNamespace": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `rosNamespace` **Type:** string · **Default:** · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanDataConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scandataconfig) Returns/sets the configuration of LMDscandata such as the content of the scan data (e.g. whether to include the RSSI values). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `reserved` | **Type:** integer · **Format:** uint16 | | `RemDataConfig` | | `bEnable` | **Type:** boolean · **Default:** true | | `reserved1` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `reserved2` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | `EnableEncoderBlock` | **Type:** boolean · **Default:** false | | --- | --- | | `reserved1` | **Type:** boolean · **Default:** false | | `bEnableDeviceName` | **Type:** boolean · **Default:** false | | `reserved2` | **Type:** boolean · **Default:** false | | `bEnableTimeBlock` | **Type:** boolean · **Default:** false | | `reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | #### [POST /ScanDataConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scandataconfig) Returns/sets the configuration of LMDscandata such as the content of the scan data (e.g. whether to include the RSSI values). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataConfig": { "reserved": "", "RemDataConfig": { "bEnable": true, "reserved1": 0, "reserved2": 0 }, "EnableEncoderBlock": false, "reserved1": false, "bEnableDeviceName": false, "reserved2": false, "bEnableTimeBlock": false, "reserved3": 1 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataConfig` | `reserved` | **Type:** integer · **Format:** uint16 | | `RemDataConfig` | | `bEnable` | **Type:** boolean · **Default:** true | | `reserved1` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `reserved2` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | `EnableEncoderBlock` | **Type:** boolean · **Default:** false | | --- | --- | | `reserved1` | **Type:** boolean · **Default:** false | | `bEnableDeviceName` | **Type:** boolean · **Default:** false | | `reserved2` | **Type:** boolean · **Default:** false | | `bEnableTimeBlock` | **Type:** boolean · **Default:** false | | `reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /rosDomainId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-rosdomainid) Returns/sets the ROS domain ID used for the ROS 2 communication. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosDomainId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `rosDomainId` **Type:** integer · **Format:** uint8 · **Default:** 0 · **Maximum:** 232 | #### [POST /rosDomainId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-rosdomainid) Returns/sets the ROS domain ID used for the ROS 2 communication. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosDomainId": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `rosDomainId` **Type:** integer · **Format:** uint8 · **Default:** 0 · **Maximum:** 232 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /compactTelegramType1Content](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-compacttelegramtype1content) Returns/sets the content of the Compact telegram type 1 (e.g. whether to include the RSSI values). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/compactTelegramType1Content" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `includeRssi` | **Type:** boolean · **Default:** true | | `includeProperties` | **Type:** boolean · **Default:** true | | #### [POST /compactTelegramType1Content](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-compacttelegramtype1content) Returns/sets the content of the Compact telegram type 1 (e.g. whether to include the RSSI values). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "compactTelegramType1Content": { "includeRssi": true, "includeProperties": true } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `compactTelegramType1Content` | `includeRssi` | **Type:** boolean · **Default:** true | | `includeProperties` | **Type:** boolean · **Default:** true | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-sensorposition) Returns/sets the mounting position in 1/10000 deg. This only affects the PointCloud2 format output by native ROS2. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensorPosition" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | #### [POST /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-sensorposition) Returns/sets the mounting position in 1/10000 deg. This only affects the PointCloud2 format output by native ROS2. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "SensorPosition": { "x": 0, "y": 0, "z": 0, "yaw": 0, "pitch": 0, "roll": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `SensorPosition` | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 11 - IMU Data Output #### [GET /ImuDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-imudataethsettings) Returns/sets the destination IP address settings for IMU data streaming (UDP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ImuDataEthSettings" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 7503 | | #### [POST /ImuDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-imudataethsettings) Returns/sets the destination IP address settings for IMU data streaming (UDP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ImuDataEthSettings": { "Protocol": 1, "IPAddress": [ 192, 168, 0, 100 ], "Port": 7503 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ImuDataEthSettings` | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 7503 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ImuDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-imudataenable) Enables/Disables IMU data streaming. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ImuDataEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ImuDataEnable` **Type:** boolean · **Default:** false | #### [POST /ImuDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-imudataenable) Enables/Disables IMU data streaming. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ImuDataEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ImuDataEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /InertialMeasurementUnit](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-inertialmeasurementunit) Returns the current IMU data (e.g. Acceleration, Orientation, ... ). The data is given in the following coordinate system which is based on the DIN70000 system. The x-axis lies on the 90-degree-beam of the 0-degree-layer. The y-axis is perpendicular to the x-axis and lies in the 0-degree-layer. The y-values are rising in the counterclockwise rotation direction (right-handed system). The z-axis is perpendicular to the x-y-plane and the scanner top points to rising z-values. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/InertialMeasurementUnit" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Acceleration` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 3 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `AngularVelocity` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 3 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `Orientation` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** number · **Format:** float · **Default:** 0.0 | | `TimeStamp` | **Type:** integer · **Format:** uint64 | | ### 12 - Encoder Data Output #### [GET /EncoderDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encoderdataethsettings) Returns/sets the destination IP address settings for encoder data streaming (UDP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncoderDataEthSettings" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 7504 | | #### [POST /EncoderDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encoderdataethsettings) Returns/sets the destination IP address settings for encoder data streaming (UDP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderDataEthSettings": { "Protocol": 1, "IPAddress": [ 192, 168, 0, 100 ], "Port": 7504 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncoderDataEthSettings` | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 7504 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EncoderDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encoderdataenable) Enables/disables the encoder data streaming. The encoder data itself is sent via a UDP-based SICK-specific format. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncoderDataEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EncoderDataEnable` **Type:** boolean · **Default:** false | #### [POST /EncoderDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encoderdataenable) Enables/disables the encoder data streaming. The encoder data itself is sent via a UDP-based SICK-specific format. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderDataEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncoderDataEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EncSetting](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encsetting) Returns/sets the encoder mode (e.g. phase mode). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncSetting" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EncSetting` **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_OFF * 1 - TX_INCREMENT1 * 2 - TX_DIR_PHASE12 * 3 - TX_DIR_LEVEL12 * 4 - TX_FIX_VELOCITY | #### [POST /EncSetting](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encsetting) Returns/sets the encoder mode (e.g. phase mode). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncSetting": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncSetting` **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_OFF * 1 - TX_INCREMENT1 * 2 - TX_DIR_PHASE12 * 3 - TX_DIR_LEVEL12 * 4 - TX_FIX_VELOCITY | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ActualEncPosition1Enable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-actualencposition1enable) Enables/disables the use of the 1st reference signal (port 3). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ActualEncPosition1Enable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ActualEncPosition1Enable` **Type:** boolean · **Default:** false | #### [POST /ActualEncPosition1Enable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-actualencposition1enable) Enables/disables the use of the 1st reference signal (port 3). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ActualEncPosition1Enable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ActualEncPosition1Enable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ActualEncPosition2Enable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-actualencposition2enable) Enables/disables the use of the 2nd reference signal (port 4). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ActualEncPosition2Enable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ActualEncPosition2Enable` **Type:** boolean · **Default:** false | #### [POST /ActualEncPosition2Enable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-actualencposition2enable) Enables/disables the use of the 2nd reference signal (port 4). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ActualEncPosition2Enable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ActualEncPosition2Enable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EncResolution](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encresolution) Enables/disables the use of the 2nd reference signal (Port4). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncResolution" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EncResolution` **Type:** number · **Format:** float · **Default:** 1.0 · **Minimum:** 0.001 · **Maximum:** 2000.0 | #### [POST /EncResolution](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encresolution) Enables/disables the use of the 2nd reference signal (Port4). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncResolution": 1.0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncResolution` **Type:** number · **Format:** float · **Default:** 1.0 · **Minimum:** 0.001 · **Maximum:** 2000.0 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /mResetEncoderIncrement](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-mresetencoderincrement) Resets the encoder tick value. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 13 - Data Reduction #### [GET /LFPangleRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lfpanglerangefilter) Returns/sets the angle range filter settings. The filter restricts the output scan to a specified angle range. Filtered measurement values are set to 0. If the content of a complete data segment is set to 0, this segment is not output anymore. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPangleRangeFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `fThetaStart` | **Type:** integer · **Format:** int32 · **Default:** -900000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | `fThetaStop` | **Type:** integer · **Format:** int32 · **Default:** 900000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | `fPhiStart` | **Type:** integer · **Format:** int32 · **Default:** -900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `fPhiStop` | **Type:** integer · **Format:** int32 · **Default:** 900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `uiBeamIncrement` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 20 | | #### [POST /LFPangleRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lfpanglerangefilter) Returns/sets the angle range filter settings. The filter restricts the output scan to a specified angle range. Filtered measurement values are set to 0. If the content of a complete data segment is set to 0, this segment is not output anymore. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPangleRangeFilter": { "bEnable": false, "fThetaStart": -900000, "fThetaStop": 900000, "fPhiStart": -900000, "fPhiStop": 900000, "uiBeamIncrement": 1 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LFPangleRangeFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `fThetaStart` | **Type:** integer · **Format:** int32 · **Default:** -900000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | `fThetaStop` | **Type:** integer · **Format:** int32 · **Default:** 900000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | `fPhiStart` | **Type:** integer · **Format:** int32 · **Default:** -900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `fPhiStop` | **Type:** integer · **Format:** int32 · **Default:** 900000 · **Minimum:** -900000 · **Maximum:** 900000 | | `uiBeamIncrement` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 20 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /LFPintervalFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lfpintervalfilter) Returns/sets the interval filter settings. The filter reduces the scan output rate by a given factor. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPintervalFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiReductionFactor` | **Type:** integer · **Format:** int32 · **Default:** 2 · **Minimum:** 2 · **Maximum:** 50 | | #### [POST /LFPintervalFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lfpintervalfilter) Returns/sets the interval filter settings. The filter reduces the scan output rate by a given factor. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPintervalFilter": { "bEnable": false, "uiReductionFactor": 2 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LFPintervalFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `uiReductionFactor` | **Type:** integer · **Format:** int32 · **Default:** 2 · **Minimum:** 2 · **Maximum:** 50 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 14 - Range Filter #### [GET /LFPradialDistanceRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lfpradialdistancerangefilter) Returns/sets the scanning range filter settings. Restriction of the distance measurements to a specified distance range. Measurement distances outside of the specified range are assigned the distance and RSSI value 0. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPradialDistanceRangeFilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `ulDistMin` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 200000 | | `ulDistMax` | **Type:** integer · **Format:** int32 · **Default:** 200000 · **Minimum:** 0 · **Maximum:** 200000 | | #### [POST /LFPradialDistanceRangeFilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lfpradialdistancerangefilter) Returns/sets the scanning range filter settings. Restriction of the distance measurements to a specified distance range. Measurement distances outside of the specified range are assigned the distance and RSSI value 0. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPradialDistanceRangeFilter": { "bEnable": false, "ulDistMin": 0, "ulDistMax": 200000 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LFPradialDistanceRangeFilter` | `bEnable` | **Type:** boolean · **Default:** false | | `ulDistMin` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 200000 | | `ulDistMax` | **Type:** integer · **Format:** int32 · **Default:** 200000 · **Minimum:** 0 · **Maximum:** 200000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /LFPcubicareafilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lfpcubicareafilter) Returns/sets the cuboid area filter settings. The cuboid area filter limits the measurement data to a box defined by its extension in the x- and y-axis. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPcubicareafilter" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `lXMin` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -200000 · **Maximum:** 200000 | | `lXMax` | **Type:** integer · **Format:** int32 · **Default:** 5000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMin` | **Type:** integer · **Format:** int32 · **Default:** -5000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMax` | **Type:** integer · **Format:** int32 · **Default:** 5000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMin` | **Type:** integer · **Format:** int32 · **Default:** -5 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMax` | **Type:** integer · **Format:** int32 · **Default:** 5 · **Minimum:** -200000 · **Maximum:** 200000 | | #### [POST /LFPcubicareafilter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-lfpcubicareafilter) Returns/sets the cuboid area filter settings. The cuboid area filter limits the measurement data to a box defined by its extension in the x- and y-axis. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPcubicareafilter": { "bEnable": false, "lXMin": 0, "lXMax": 5000, "lYMin": -5000, "lYMax": 5000, "lZMin": -5, "lZMax": 5 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `LFPcubicareafilter` | `bEnable` | **Type:** boolean · **Default:** false | | `lXMin` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -200000 · **Maximum:** 200000 | | `lXMax` | **Type:** integer · **Format:** int32 · **Default:** 5000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMin` | **Type:** integer · **Format:** int32 · **Default:** -5000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lYMax` | **Type:** integer · **Format:** int32 · **Default:** 5000 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMin` | **Type:** integer · **Format:** int32 · **Default:** -5 · **Minimum:** -200000 · **Maximum:** 200000 | | `lZMax` | **Type:** integer · **Format:** int32 · **Default:** 5 · **Minimum:** -200000 · **Maximum:** 200000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 15 - Field Evaluation #### [GET /FieldEvaluationResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-fieldevaluationresult) Returns the state of all possible fields. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationResult` **Fields:** [FieldEvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-fieldevaluationresult-t) | #### [POST /ActivateEvaluationGroup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-activateevaluationgroup) Sets the activation condition for all existing evaluation groups (not configured, active, or inactive). **JSON example** ```json { "data": { "List": [] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `List` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `GroupId` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 48 | | --- | --- | | `Activate` | **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Success` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** false | #### [POST /SetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-setfieldevaluationcontour) Sets the contour of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationId": "", "Points": [], "LowerZLimit": "", "UpperZLimit": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | | `EvaluationId` | **Type:** integer · **Format:** uint16 | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_INVALID_EVALUATION_ID * 2 - SOPAS_ERR_INVALID_POLYGON * 3 - SOPAS_ERR_INVALID_ZLIM | #### [POST /GetFieldEvaluationContour](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-getfieldevaluationcontour) Returns the contour of an existing field. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationId": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EvaluationId` **Type:** integer · **Format:** uint16 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Contour` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** | `EvaluationId` | **Type:** integer · **Format:** uint16 | | `Points` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 | | | `LowerZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | --- | --- | | `UpperZLimit` | **Type:** integer · **Format:** int32 · **Minimum:** -100000 · **Maximum:** 100000 | | #### [GET /EvaluationGroupType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-evaluationgrouptype) Returns the evaluation group type, whether it is a field evaluation or a perpendicular distance field. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationGroupType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EvaluationGroupType` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - FIELD_EVALUATION * 1 - PERPENDICULAR_DISTANCE | #### [GET /FieldEvaluationGroupState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-fieldevaluationgroupstate) Returns the activation condition for all existing evaluation groups (not configured, active, or inactive). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FieldEvaluationGroupState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `FieldEvaluationGroupState` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - ACTIVE * 2 - INACTIVE | #### [POST /StartTeachIn](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-startteachin) Starts the teach in process. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /StopTeachIn](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-stopteachin) Stops the teach in process. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### 16 - Perpendicular Distance #### [GET /perpendicularDistanceResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-perpendiculardistanceresult) Returns the perpendicular distance within a field. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/perpendicularDistanceResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `timestamp` | **Type:** integer · **Format:** uint64 | | `evaluations` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** | `evaluationId` | **Type:** integer · **Format:** uint16 | | `minimumDistance` | **Type:** integer · **Format:** int32 | | `maximumDistance` | **Type:** integer · **Format:** int32 | | `minimumDistancePosition` | **Fields:** [Point3d_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-point3d-t) | | `maximumDistancePosition` | **Fields:** [Point3d_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-point3d-t) | | | ### 17 - 3D scan recording #### [GET /ScanMergerEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scanmergerenabled) Enables/disables the 3D scan merger feature. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanMergerEnabled" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ScanMergerEnabled` **Type:** boolean · **Default:** false | #### [POST /ScanMergerEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scanmergerenabled) Enables/disables the 3D scan merger feature. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanMergerEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanMergerEnabled` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanMergerSource](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scanmergersource) Returns/sets the data source for angle information used during scan merging (IMU or ENCODER). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanMergerSource" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ScanMergerSource` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - IMU * 1 - ENCODER | #### [POST /ScanMergerSource](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scanmergersource) Returns/sets the data source for angle information used during scan merging (IMU or ENCODER). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanMergerSource": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanMergerSource` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - IMU * 1 - ENCODER | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /ScanMergeTrigger](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-scanmergetrigger) Returns/sets how the scan merge is triggered (e.g. via method call). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanMergeTrigger" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `ScanMergeTrigger` **Allowed values:** ``` [ 0 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - METHOD | #### [POST /ScanMergeTrigger](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-scanmergetrigger) Returns/sets how the scan merge is triggered (e.g. via method call). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanMergeTrigger": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `ScanMergeTrigger` **Allowed values:** ``` [ 0 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - METHOD | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /RotationOffset](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-rotationoffset) Returns/sets the rotation center offset (x, y, z in mm) relative to the scanner. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/RotationOffset" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | #### [POST /RotationOffset](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-rotationoffset) Returns/sets the rotation center offset (x, y, z in mm) relative to the scanner. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "RotationOffset": { "x": 0, "y": 0, "z": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `RotationOffset` | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EncoderTransformationType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encodertransformationtype) Returns/sets the encoder transformation type (ROTATION or DISPLACEMENT). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncoderTransformationType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EncoderTransformationType` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ROTATION * 1 - TRANSLATION | #### [POST /EncoderTransformationType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encodertransformationtype) Returns/sets the encoder transformation type (ROTATION or DISPLACEMENT). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderTransformationType": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncoderTransformationType` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ROTATION * 1 - TRANSLATION | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EncoderRotation](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encoderrotation) Returns/sets the rotation center of the encoder in mm. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncoderRotation" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `yaw` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -360 · **Maximum:** 360 | | `pitch` | **Type:** number · **Format:** float · **Default:** 0.1 · **Minimum:** -360 · **Maximum:** 360 | | `roll` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -360 · **Maximum:** 360 | | #### [POST /EncoderRotation](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encoderrotation) Returns/sets the rotation center of the encoder in mm. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderRotation": { "yaw": 0, "pitch": 0.1, "roll": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncoderRotation` | `yaw` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -360 · **Maximum:** 360 | | `pitch` | **Type:** number · **Format:** float · **Default:** 0.1 · **Minimum:** -360 · **Maximum:** 360 | | `roll` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -360 · **Maximum:** 360 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EncoderTranslation](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-encodertranslation) Returns/sets the translation of the encoder in mm. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EncoderTranslation" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** number · **Format:** float · **Default:** 1 · **Minimum:** -100000 · **Maximum:** 100000 | | #### [POST /EncoderTranslation](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-encodertranslation) Returns/sets the translation of the encoder in mm. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EncoderTranslation": { "x": 0, "y": 0, "z": 1 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EncoderTranslation` | `x` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** number · **Format:** float · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** number · **Format:** float · **Default:** 1 · **Minimum:** -100000 · **Maximum:** 100000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /StartScanMerge](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-startscanmerge) Starts the 3D scan merge recording. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /StopScanMerge](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-stopscanmerge) Stops the 3D scan merge recording. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /ResetScanMergeView](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-resetscanmergeview) Deletes the currently displayed point clouds. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /MergeSaving](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-mergesaving) Returns/sets the status for saving the merged scans. As soon as a scan merge is completed, the point cloud is available for download on port 80 (192.168.0.1/cloud.pcd). Curl: http:///cloud.pcd -o cloud.pcd. Only the most recently created point cloud is available for download. The point cloud is ready for download when MergeSaving changes from 1 (Saving in progress) to 0 (Saving not active). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/MergeSaving" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `MergeSaving` **Type:** boolean · **Default:** false | ### 18 - Operating Data #### [GET /LastParaDate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lastparadate) Returns the last date (e.g. 12.11.2024) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaDate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `LastParaDate` **Type:** string · **Default:** DD.MM.YYYY · **Maximum length:** 10 | #### [GET /LastParaTime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-lastparatime) Returns the last time (e.g. 13:24) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `LastParaTime` **Type:** string · **Default:** HH:MM · **Maximum length:** 5 | #### [GET /PowerOnCnt](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-poweroncnt) Returns the number of power on cycles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PowerOnCnt" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `PowerOnCnt` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /DailyOpHours](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-dailyophours) Returns the runtime duration since the last power on (non-persistent). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DailyOpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `DailyOpHours` **Type:** number · **Format:** float · **Default:** 0.0 | #### [GET /OpHours](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ophours) Returns the total number of operating hours during the lifetime of the device. The resolution is a 1/10 hour. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `OpHours` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /CurrentTempDev](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-currenttempdev) Returns the current device temperature. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CurrentTempDev" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `CurrentTempDev` **Type:** number · **Format:** float · **Default:** 20.0 | ### 19 - Diagnostics #### [GET /crown/file](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-crown-file) Download files (e.g. OpenAPI description or diagnostic files) if one exists. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/crown/file?filePath=diagnosisDump.zip" ``` **Parameters** **`filePath`** **Location:** query **Required:** true path **Type:** string · **Example:** diagnosisDump.zip **Responses** **Status `200`** **Media type: `application/zip`** **Type:** string · **Format:** binary **Status `400`** bad operation **Status `404`** file not found **Status `500`** Server not found #### [POST /DoDiagnosisDump](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-dodiagnosisdump) Creates a diagnostic file (zip file) for further analysis. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DoRunlevelLoop": false, "Output": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | | `DoRunlevelLoop` | **Type:** boolean · **Default:** false | | `Output` | **Type:** string · **Default:** · **Maximum length:** 64 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `Successful` **Type:** boolean · **Default:** false | #### [POST /GetDiagnosisDumpInfo](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-getdiagnosisdumpinfo) Returns additional meta-information about the diagnostic file. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `DiagDumpExists` | **Type:** boolean · **Default:** false | | `DiagDumpTimestamp` | **Type:** integer · **Format:** uint32 | | ### 20 - Cybersecurity #### [GET /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled CoLa A uses port 2111 and CoLa B uses 2112. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxEnabled" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | #### [POST /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled CoLa A uses port 2111 and CoLa B uses 2112. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAuxEnabled": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherCoLaScanMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | #### [POST /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherCoLaScanMode": 3 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /httpsStatus](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-httpsstatus) Returns the status of the HTTPS interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/httpsStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `enabled` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-httpserror-t) | | #### [GET /certificateBundleInfo](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-certificatebundleinfo) Returns information about the uploaded certificate bundle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/certificateBundleInfo" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `uuidBundle` | **Type:** string · **Default:** · **Maximum length:** 100 | | `certificates` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** | `names` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** `entry` **Type:** string · **Default:** · **Maximum length:** 1000 | | `issuer` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `subject` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `serialNumber` | **Type:** string · **Default:** · **Maximum length:** 119 | | `fingerprint` | **Type:** string · **Default:** · **Maximum length:** 119 | | `validNotBefore` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | `validNotAfter` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-httpserror-t) | | --- | --- | | #### [POST /removeCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-removecertificatebundle) Removes the uploaded certificate bundle. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-httpserror-t) | | #### [POST /setCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-setcertificatebundle) Uploads a certificate bundle in the PEM format via JSON. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "contentCertificateBundle": " ", "contentPrivateKey": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | | `contentCertificateBundle` | **Type:** string · **Default:** · **Maximum length:** 10000 | | `contentPrivateKey` | **Type:** string · **Default:** · **Maximum length:** 4000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-httpserror-t) | | #### [POST /SetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-setwebserverenabled) Sets availability of the webserver (reboot required). If disabled, the webserver-based GUI and the REST interface cannot be used anymore. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Enable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `Enable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /GetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-getwebserverenabled) Returns the availability of the web server. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `IsEnabled` **Type:** boolean · **Default:** true | ### 21 - Detection History #### [GET /EnableDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-enabledetectionhistory) Enables/disables the detection history. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EnableDetectionHistory" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EnableDetectionHistory` **Type:** boolean · **Default:** true | #### [POST /EnableDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-enabledetectionhistory) Enables/disables the detection history. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EnableDetectionHistory": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EnableDetectionHistory` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [GET /EvaluationsToLog](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-get-evaluationstolog) Returns/sets the evaluations which are logged (if they are in use). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EvaluationsToLog" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) | | --- | --- | | `data` | `EvaluationsToLog` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** true | #### [POST /EvaluationsToLog](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-evaluationstolog) Returns/sets the evaluations which are logged (if they are in use). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EvaluationsToLog": [ true ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) | | --- | --- | | `data` | `EvaluationsToLog` **Type:** array · **Minimum items:** 48 · **Maximum items:** 48 **Items:** **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) #### [POST /ResetDetectionHistory](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-post-resetdetectionhistory) Resets the detection history logs. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-responseheader) ### Shared request and response fields #### ResponseHeader | `status` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - Ok * 1 - Parsing Failed * 2 - Invalid Data * 3 - Internal Server Error * 4 - Access Denied * 5 - Not Found * 6 - Out Of Range * 7 - Out Of Bounds * 8 - Read Only * 9 - Illegal Value * 10 - Invalid Challenge * 11 - Out Of Connections | | --- | --- | | `message` | **Type:** string · **Default:** Ok | #### PostBodyHeader | `nonce` | **Type:** string · **Default:** | | --- | --- | | `opaque` | **Type:** string · **Default:** | | `realm` | **Type:** string · **Default:** SICK Sensor | | `response` | **Type:** string · **Default:** | | `user` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-e-user-level-type) | #### E_USER_LEVEL_TYPE **Allowed values:** ``` [ "Run", "Operator", "Maintenance", "AuthorizedClient", "Service" ] ``` **Type:** string · **Default:** Run #### DeviceStatus **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - DS_UnknownState * 1 - DS_Startup * 2 - DS_ServiceMode * 3 - DS_NormalOperation * 4 - DS_SuspendedOperation * 5 - DS_ServiceRecommended * 6 - DS_ServiceRequired * 7 - DS_RecoverableError * 8 - DS_FatalError #### DateTime_t | `uiYear` | **Type:** integer · **Format:** uint16 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 2105 | | --- | --- | | `usiMonth` | **Type:** integer · **Format:** uint8 · **Default:** 1 · **Minimum:** 0 · **Maximum:** 12 | | `usiDay` | **Type:** integer · **Format:** uint8 · **Default:** 1 · **Minimum:** 0 · **Maximum:** 31 | | `usiHour` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 23 | | `usiMinute` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `usiSec` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `udiUSec` | **Type:** integer · **Format:** uint32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 999999 | #### httpsError_t `error` **Type:** string · **Default:** · **Maximum length:** 100 #### RestoreBackupResult **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Ok * 1 - ChecksumError * 2 - ParseError * 3 - DeviceIdentificationError * 4 - UpdateRepositoryError * 5 - UpdateSourceError * 6 - DecryptionError * 7 - DecryptionHeaderError * 8 - DecryptionLengthError * 9 - IoError * 10 - VersionConversionError * 50 - ComponentRegistryError #### Logic_t **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ACTIVE_HIGH * 1 - ACTIVE_LOW #### IOState_t `eIOState` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - IOS_LOW * 1 - IOS_HIGH * 2 - IOS_TRISTATE #### PortStateAndCounter_t | `ePortState` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - OUTPUT_NOT_ACTIVE * 1 - OUTPUT_ACTIVE * 2 - TRISTATE * 3 - INPUT_ACTIVE * 4 - INPUT_NOT_ACTIVE | | --- | --- | | `PortCounter` | **Type:** integer · **Format:** uint32 | #### LedStateType | `Color` | **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - GREEN * 1 - YELLOW * 2 - RED * 3 - WHITE | | --- | --- | | `Function` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ON * 1 - OFF * 2 - BLINKING * 3 - BLINKING_FAST * 4 - BLINKING_DELAYED * 5 - BLINKING_COLOR * 6 - BLINKING_YELLOW_RED | | `Id` | **Type:** string · **Default:** · **Maximum length:** 8 | #### Point2d_t | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 | | --- | --- | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 | #### EvaluationResult_t | `State` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - NOT_CONFIGURED * 1 - INACTIVE * 2 - FREE * 3 - DETECTING_INFRINGED * 4 - INFRINGED * 5 - DETECTING_FREE | | --- | --- | | `Positions` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [Point2d_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-point2d-t) | #### FieldEvaluationResult_t | `Version` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | --- | --- | | `Timestamp` | **Type:** integer · **Format:** uint64 | | `EvaluationResultList` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 48 **Items:** **Fields:** [EvaluationResult_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-schema-evaluationresult-t) | #### Point3d_t | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | | --- | --- | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -500000 · **Maximum:** 500000 | #### PerformanceProfiles_t **Allowed values:** ``` [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 1 - MODE_1 * 2 - MODE_2 * 3 - MODE_3 * 4 - MODE_4 * 5 - MODE_5 * 6 - MODE_6 * 7 - MODE_7 * 8 - MODE_8 * 9 - MODE_9 * 10 - MODE_10 * 11 - MODE_11 #### SessionToken **Type:** string · **Default:** · **Maximum length:** 36 ## picoScan120 REST API ### 1 - General #### [POST /checkCredentials](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-checkcredentials) Returns authentication success. For more details see https://github.com/SICKAG/sick_scan_rest_client. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [PUT /update](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-put-update) Transfers a firmware file (.spk.signed) from the file location to the device. The maximum possible file size is 100 MB. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/) for the firmware update workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `application/octet-stream`** `data` | `Type` | **Type:** string | | --- | --- | | `Binary` | **Type:** string | **Responses** **Status `200`** #### [GET /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-parameterbackup) Reads/transfers the backup file (JSON) from/to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/parameterbackup" ``` **Responses** **Status `200`** **Media type: `application/json`** | `version` | **Type:** string | | --- | --- | | `device identification` | **Type:** string | | `checksum` | **Type:** string | | `parameters` | **Type:** array **Items:** | `userlevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-e-user-level-type) | | `parameters` | **Type:** array **Items:** | `name` | **Type:** string | | `id` | **Type:** string | | `value` | **oneOf** **Type:** integer **Type:** boolean **Type:** string **Type:** object **Type:** number | | | #### [PUT /parameterbackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-put-parameterbackup) Reads/transfers the backup file (JSON) from/to the device. See [Configuration Backup and Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) for the parameter backup workflow. This operation uploads a file or uses a non-JSON body. Use the request media type and upload fields below. **Request body** **Media type: `multipart/form-data`** `datei` **Type:** string · **Format:** binary Json-File **Responses** **Status `200`** #### [POST /SetPassword](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-setpassword) Sets the password for the CoLa A/B interface only. In this example the password for user level: Service (4) is set to - test - (integer value of the password hash - test -). For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "siUserLevel": 4, "udiNewPassword": 3410122659 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "siUserLevel": 4, "udiNewPassword": 3410122659 } ``` | `siUserLevel` | **Type:** integer · **Format:** int8 | | --- | --- | | `udiNewPassword` | **Type:** integer · **Format:** uint32 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `bSuccess` **Type:** boolean · **Default:** false | #### [POST /getChallenge](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-getchallenge) Returns a challenge for the challenge and response authentication method. For more details see https://github.com/SICKAG/sick_scan_rest_client **JSON example** ```json { "data": { "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` `user` **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-e-user-level-type) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `challenge` | | `realm` | **Type:** string · **Default:** | | `nonce` | **Type:** string · **Default:** | | `opaque` | **Type:** string · **Default:** | | `salt` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 16 **Items:** **Type:** integer | | #### [POST /changePassword](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-changepassword) Sets the password for the REST interface. For more details see https://github.com/SICKAG/sick_scan_rest_client. **JSON example** ```json { "data": { "encryptedMessage": [], "userLevel": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `encryptedMessage` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 96 **Items:** **Type:** integer · **Format:** uint8 | | --- | --- | | `userLevel` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-e-user-level-type) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2, 4, 5 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED * 4 - PWD_NOT_CHANGABLE * 5 - TIMELOCK_ACTIVE | #### [POST /EnableUserLevel](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-enableuserlevel) Activates / deactivates a specific user level for the REST interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer · **Format:** uint8 | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `result` **Allowed values:** ``` [ 0, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SUCCESS * 2 - NOT_ACCEPTED | #### [POST /WriteEeprom](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-writeeeprom) Saves all parameters permanently. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | #### [POST /SoftReset](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-softreset) Reboots the device. All non-saved parameters are lost. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ProcessorNbr": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `ProcessorNbr` **Type:** integer · **Format:** uint16 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /RebootDevice](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-rebootdevice) Reboots the device. All parameters are saved. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /LoadFactoryDefaults](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-loadfactorydefaults) Resets all parameters to default. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /LoadApplicationDefaults](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-loadapplicationdefaults) Resets only the user parametrization of the fields, evaluation cases, and parameters under the section "Application". Other parameters like interface settings, echo filter, etc. remain unchanged. This function requires the user level: Service. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /EnableLegacyUserLevel](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-enablelegacyuserlevel) Activates / deactivates a specific user level for the CoLa A/B interface. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "userLevel": "", "isEnabled": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | | `userLevel` | **Type:** integer · **Format:** uint8 · **Minimum:** 0 · **Maximum:** 7 | | `isEnabled` | **Type:** boolean · **Default:** false | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `result` **Type:** boolean · **Default:** false | #### [GET /laserType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-lasertype) Returns the type of the sending unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/laserType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `laserType` **Type:** integer · **Format:** uint8 · **Default:** 0 | #### [GET /sipmType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-sipmtype) Returns the type of the receiving unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/sipmType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `sipmType` **Type:** integer · **Format:** uint8 · **Default:** 0 | #### [POST /RunFirmwareUpdate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-runfirmwareupdate) Starts the firmware update process. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /UpdateState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-updatestate) Returns the state of the update process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/UpdateState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `UpdateState` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Initial * 1 - Started * 2 - Finished * 3 - Error | #### [GET /CreateParameterBackupResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-createparameterbackupresult) Returns the current status of the parameter backup process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CreateParameterBackupResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `Status` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Pending * 1 - Finished | | `Result` | **Type:** boolean · **Default:** false | | #### [GET /RestoreParameterBackupResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-restoreparameterbackupresult) Returns the current status of the parameter restoration process. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/RestoreParameterBackupResult" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `Status` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Pending * 1 - Finished | | `RestoreResult` | **Fields:** [RestoreBackupResult](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-restorebackupresult) | | `ParametersFailedToRestore` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 100 **Items:** **Type:** string · **Default:** · **Maximum length:** 256 | | #### [POST /CreateParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-createparameterbackup) Creates a parameter backup file on the device. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Passphrase": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `Passphrase` **Type:** string · **Default:** · **Maximum length:** 256 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [POST /RestoreParameterBackup](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-restoreparameterbackup) Restores the backup file on the device. The restored parameters will then be applied. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Passphrase": " ", "Filter": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | | `Passphrase` | **Type:** string · **Default:** · **Maximum length:** 256 | | `Filter` | **Type:** integer · **Format:** uint32 · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `Result` **Type:** boolean · **Default:** false | #### [GET /LFTchecksum](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-lftchecksum) Returns a checksum over all software parts and configurations. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFTchecksum" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `MD5SumOK` | **Type:** boolean · **Default:** false | | `MD5LinuxRoot` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5App` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5Calibration` | **Type:** string · **Default:** · **Maximum length:** 32 | | `MD5Parameters` | **Type:** string · **Default:** · **Maximum length:** 32 | | #### [POST /CreateSessionToken](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-createsessiontoken) A short-lived session token to pass to a HTTP request header. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `token` | **Fields:** [SessionToken](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-sessiontoken) | | `timeToLive` | **Type:** integer · **Format:** uint16 | | ### 2 - Status #### [GET /DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-devicestatus) Returns the device state (9 possible states). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `DeviceStatus` **Fields:** [DeviceStatus](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-devicestatus) | #### [GET /SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-scdevicestate) Returns the device state (busy, ready, or error). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SCdevicestate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `SCdevicestate` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Busy * 1 - Ready * 2 - Error | ### 3 - Device Information #### [GET /DeviceIdent](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-deviceident) Returns the device name and the firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceIdent" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `Name` | **Type:** string · **Default:** picoScan120 · **Maximum length:** 11 | | `Version` | **Type:** string · **Default:** 2.3.3.0R · **Maximum length:** 8 | | #### [GET /LocationName](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-locationname) Returns/sets the device name. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LocationName" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | #### [POST /LocationName](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-locationname) Returns/sets the device name. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LocationName": "not defined" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `LocationName` **Type:** string · **Default:** not defined · **Maximum length:** 32 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /SerialNumber](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-serialnumber) Returns the serial number. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SerialNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `SerialNumber` **Type:** string · **Default:** 123456789 · **Maximum length:** 9 | #### [GET /FirmwareVersion](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-firmwareversion) Returns the current firmware version. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/FirmwareVersion" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `FirmwareVersion` **Type:** string · **Default:** XXXXXXXXXX · **Maximum length:** 40 | #### [GET /OrderNumber](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ordernumber) Returns the order number (SICK part number). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OrderNumber" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `OrderNumber` **Type:** string · **Default:** 1234567 · **Maximum length:** 32 | #### [GET /DeviceType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-devicetype) Returns the device type. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DeviceType" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `DeviceType` **Type:** string · **Default:** picoScan1xx · **Maximum length:** 18 | #### [POST /FindMe](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-findme) Sets the device LEDs into blinking mode for better identification. **JSON example** ```json { "data": { "uiDuration": 100 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` **Example:** ``` { "uiDuration": 100 } ``` `uiDuration` **Type:** integer · **Format:** uint16 · **Minimum:** 1 **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) ### 4 - Basic Settings #### [GET /LEDState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ledstate) Returns the LED status. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `LEDState` **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [LedStateType](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-ledstatetype) | #### [GET /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ledenable) Returns/sets the LED mode (on/off). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LEDEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | #### [POST /LEDEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-ledenable) Returns/sets the LED mode (on/off). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LEDEnable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `LEDEnable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /mStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-mstartmeasure) Starts motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStandby](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-mstandby) Enables/disables the laser (on/off). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [POST /mStopMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-mstopmeasure) Stops motor and measurement. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/AutoStartMeasure" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | #### [POST /AutoStartMeasure](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-autostartmeasure) Returns/sets the mode for automatic start of measurement after boot-up. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "AutoStartMeasure": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `AutoStartMeasure` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /ScanConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-scanconfig) Configuration of angular resolution, scanning frequency, start and stop angle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `udiScanFreq` | **Type:** integer · **Format:** uint32 · **Default:** 2000 · **Minimum:** 1500 · **Maximum:** 5000 | | `ScanRange` | | `uiLength` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 1 | | `aRange` | **Type:** array · **Minimum items:** 1 · **Maximum items:** 1 **Items:** | `udiAngleRes` | **Type:** integer · **Format:** uint32 · **Default:** 1000 · **Minimum:** 500 · **Maximum:** 10000 | | `diStartAngle` | **Type:** integer · **Format:** int32 · **Default:** -1380000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | `diStopAngle` | **Type:** integer · **Format:** int32 · **Default:** 1380000 · **Minimum:** -1380000 · **Maximum:** 1380000 | | | | #### [GET /operatingMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-operatingmode) Returns/sets the operating mode of the receiver unit. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/operatingMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `operatingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - STANDARD * 1 - REFLECTOR_OPTIMIZATION_MODE | #### [POST /operatingMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-operatingmode) Returns/sets the operating mode of the receiver unit. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "operatingMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `operatingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - STANDARD * 1 - REFLECTOR_OPTIMIZATION_MODE | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) ### 5 - Date and System Time #### [GET /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-tscrole) Returns/sets the time synchronization role (none, NTP, or PTP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCRole" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | #### [POST /TSCRole](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-tscrole) Returns/sets the time synchronization role (none, NTP, or PTP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCRole": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `TSCRole` **Allowed values:** ``` [ 0, 1, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_NONE * 1 - TX_CLIENT * 3 - TX_PTP_SLAVE | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-tsctcsrvaddr) Returns/sets the IP address of the time server. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCSrvAddr" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /TSCTCSrvAddr](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-tsctcsrvaddr) Returns/sets the IP address of the time server. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCSrvAddr": [ 192, 168, 0, 11 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `TSCTCSrvAddr` **Default:** ``` [ 192, 168, 0, 11 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-tsctctimezone) Returns/sets the time zone of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCtimezone" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | #### [POST /TSCTCtimezone](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-tsctctimezone) Returns/sets the time zone of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCtimezone": 36 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `TSCTCtimezone` **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 36 Mapping: * 0 - DATE_LINE_STANDARD * 1 - COORD_WORLD_TIME_11 * 2 - HAWAII * 3 - ALASKA * 4 - CALIFORNIA * 5 - USA_CANADA * 6 - ARIZONA * 7 - LA_PAZ * 8 - MOUNTAIN_TIME_USA * 9 - CENTRAL_TIME_USA * 10 - MEXICO_CITY * 11 - MIDDLE_AMERICA * 12 - SASKATCHEWAN * 13 - BOGOTA_LIMA * 14 - EASTERN_TIME_USA * 15 - INDIANA * 16 - CARACAS * 17 - ASUNCION * 18 - ATLANTIC_KANADA * 19 - CUIABA * 20 - LAPAZ_SANJUAN * 21 - SANTIAGO * 22 - NEUFUNDLAND * 23 - BRASILIA * 24 - BUENOS_AIRES * 25 - CAYENNE_FORTALEZA * 26 - GROENLAND * 27 - MONTEVIDEO * 28 - SALVADOR * 29 - COORD_WORLD_TIME_02 * 30 - AZOREN * 31 - KAP_VERDE * 32 - CASABLANCA * 33 - DUBLIN_LISSABON_LONDON * 34 - COORD_WORLD_TIME * 35 - MONROVIA_REYKJAVIK * 36 - AMSTERDAM_BERLIN_ROM * 37 - BELGRAD_BUDAPEST_PRAG * 38 - BRUESSEL_MADRID_PARIS * 39 - SARAJEVO_WARSCHAU * 40 - WEST_CENTRAL_AFRICA * 41 - WINDHUK * 42 - JOHANNESBURG * 43 - AMMAN * 44 - ATHEN_BUKAREST * 45 - BEIRUT * 46 - DAMASCUS * 47 - HARARE_PRETORIA * 48 - HELSINKI_KIEW_RIGA * 49 - ISTANBUL * 50 - JERUSALEM * 51 - KAIRO * 52 - KALININGRAD * 53 - TRIPOLIS * 54 - BAGDAD * 55 - KUWAIT_RIAD * 56 - MINSK * 57 - MOSKAU_PETERSBURG * 58 - NAIROBI * 59 - TEHERAN * 60 - ABU_DHABI * 61 - BAKU * 62 - ERIWAN * 63 - ISCHEWSK_SAMARA * 64 - PORT_LOUIS * 65 - TIFLIS * 66 - KABUL * 67 - ASCHGABET_TASCHKENT * 68 - ISLAMABAD_KARATSCHI * 69 - JEKATERINBURG * 70 - MUMBAI_NEUDELHI * 71 - SRI_JAYAWARDENEPURA * 72 - KATMANDU * 73 - ASTANA * 74 - DAKKA * 75 - NOWOSIBIRSK * 76 - YANGON * 77 - BANGKOK_HANOI_JAKARTA * 78 - KRASNOJARSK * 79 - IRKUTSK * 80 - KUALA_LUMPUR_SINGAPUR * 81 - PEKING_HONGKONG * 82 - PERTH * 83 - TAIPEH * 84 - ULAN_BATOR * 85 - JAKUTSK * 86 - OSAKA_TOKIO * 87 - SEOUL * 88 - ADELAIDE * 89 - DARWIN * 90 - BRISBANE * 91 - CANBERRA_SYDNEY * 92 - GUAM_PORT_MORESBY * 93 - HOBART * 94 - MAGADAN * 95 - WLADIWOSTOK * 96 - SALOMONEN_KALEDONIEN * 97 - TSCHOKURDACH * 98 - ANADYR * 99 - AUCKLAND_WELLINGTON * 100 - FIDSCHI * 101 - COORD_WORLD_TIME_12 * 102 - NAKUALOFA * 103 - SAMOA * 104 - KIRITIMATI | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-tsctcupdatetime) Returns/sets the update time of the client. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/TSCTCupdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Format:** uint32 · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | #### [POST /TSCTCupdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-tsctcupdatetime) Returns/sets the update time of the client. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "TSCTCupdatetime": 600 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `TSCTCupdatetime` **Type:** integer · **Format:** uint32 · **Default:** 600 · **Minimum:** 1 · **Maximum:** 3600 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /LSPdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-lspdatetime) Returns the current time of the device (years, months, days, hours, minutes, seconds, microseconds). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LSPdatetime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `LSPdatetime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-datetime-t) | #### [POST /LSPsetdatetime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-lspsetdatetime) Sets the time of the device (years, months, days, hours, minutes, seconds, microseconds). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DateTime": { "uiYear": 0, "usiMonth": 1, "usiDay": 1, "usiHour": 0, "usiMinute": 0, "usiSec": 0, "udiUSec": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `DateTime` **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-datetime-t) | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | ### 6 - Filter #### [GET /LFPparticle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-lfpparticle) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimal threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LFPparticle" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Format:** uint16 · **Default:** 500 · **Minimum:** 20 · **Maximum:** 5000 | | #### [POST /LFPparticle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-lfpparticle) Returns/sets the particle filter settings. Filters out disturbances in the measurement data caused by particles such as dust, snowflakes, or similar. Configure the minimal threshold of the required distance step (mm) between the echo to be filtered and the echoes of surrounding beam angles. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "LFPparticle": { "bEnable": false, "uiThreshold": 500 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `LFPparticle` | `bEnable` | **Type:** boolean · **Default:** false | | `uiThreshold` | **Type:** integer · **Format:** uint16 · **Default:** 500 · **Minimum:** 20 · **Maximum:** 5000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) ### 7 - Ethernet #### [GET /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheripaddress) Returns/sets the used static IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etheripaddress) Returns/sets the used static IP address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPAddress": [ 192, 168, 0, 1 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherIPAddress` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheripgateaddress) Returns/sets the default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPGateAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etheripgateaddress) Returns/sets the default gateway address. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPGateAddress": [ 0, 0, 0, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherIPGateAddress` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheripmask) Returns/sets the subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMask" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [POST /EtherIPMask](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etheripmask) Returns/sets the subnet mask. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherIPMask": [ 255, 255, 255, 0 ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherIPMask` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAddressingMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | #### [POST /EtherAddressingMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etheraddressingmode) Returns/sets the mode for the IP address assignment (static or DHCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAddressingMode": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherAddressingMode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_IP_STATIC * 1 - TX_IP_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherDHCPFallback" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | #### [POST /EtherDHCPFallback](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etherdhcpfallback) Returns/sets the mode for the DHCP fallback (retry or static). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherDHCPFallback": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherDHCPFallback` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - TX_USE_STATIC_IP * 1 - TX_RETRY_DHCP | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /EthernetUpdate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-ethernetupdate) Applies the Ethernet settings. This needs to be executed to actually change the Ethernet settings. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherIPAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheripaddressdhcp) Returns the assigned DHCP IP address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherIPAddressDHCP` **Default:** ``` [ 192, 168, 0, 1 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherIPGateAddressDHCP](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheripgateaddressdhcp) Returns the assigned DHCP default gateway address. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPGateAddressDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherIPGateAddressDHCP` **Default:** ``` [ 0, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherIPMaskDHCP](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etheripmaskdhcp) Returns the assigned DHCP subnet mask. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherIPMaskDHCP" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherIPMaskDHCP` **Default:** ``` [ 255, 255, 255, 0 ] ``` **Type:** array · **Minimum items:** 4 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | #### [GET /EtherMACAddress](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ethermacaddress) Returns the MAC address of the Ethernet interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherMACAddress" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherMACAddress` **Default:** ``` [ 0, 6, 119, 0, 0, 0 ] ``` **Type:** array · **Minimum items:** 6 · **Maximum items:** 6 **Items:** **Type:** integer · **Format:** uint8 | ### 8 - Inputs And Outputs #### [GET /OutputState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-outputstate) Returns the state of all outputs. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OutputState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aDigitalOut` | **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `IOState` | **Fields:** [IOState_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-iostate-t) | | `udiCounter` | **Type:** integer · **Format:** uint32 | | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-datetime-t) | | --- | --- | | #### [GET /PortState](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-portstate) Returns the state of the ports. "PortState" is preferred over "OutputState". **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortState" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `uiVersionNumber` | **Type:** integer · **Format:** uint16 | | `udiSystCount` | **Type:** integer · **Format:** uint32 | | `aInternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-portstateandcounter-t) | | `aExternalPorts` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 8 **Items:** **Fields:** [PortStateAndCounter_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-portstateandcounter-t) | | `aTimeBlock` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 1 **Items:** **Fields:** [DateTime_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-datetime-t) | | #### [POST /mResetOutputCounter](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-mresetoutputcounter) Resets the counter for the outputs. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ErrorCode` **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - SOPAS_ERR_NO_ERR * 1 - SOPAS_ERR_STATE_CHANGE_NOT_PERMITTED | #### [GET /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-portconfiguration) Returns/sets the port configuration of all I/Os. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PortConfiguration" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-logic-t) | | `Debounce` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved2` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Format:** uint32 · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved4` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `Reserved6` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved9` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved10` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | #### [POST /PortConfiguration](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-portconfiguration) Returns/sets the port configuration of all I/Os. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "PortConfiguration": [ { "PortType": 0, "Name": "IOx", "InputSettings": { "Logic": 0, "Debounce": 10, "Sensitivity": 0, "Reserved1": 0, "Reserved2": 0 }, "OutputSettings": { "Logic": 0, "OutputMode": 0, "RestartType": 0, "RestartTime": 200, "RestartInput": 1, "Combination": 1, "Reserved3": 0, "Reserved4": 0, "Sources": [] }, "EncoderPortType": 0, "Reserved8": 0, "Reserved9": 0, "Reserved10": 0 } ] } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `PortConfiguration` **Type:** array · **Minimum items:** 8 · **Maximum items:** 8 **Items:** | `PortType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - INPUT * 1 - OUTPUT * 2 - ENCODER | | `Name` | **Type:** string · **Default:** IOx · **Maximum length:** 20 | | `InputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-logic-t) | | `Debounce` | **Type:** integer · **Format:** uint16 · **Default:** 10 · **Minimum:** 1 · **Maximum:** 1000 | | `Sensitivity` | **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - EDGE * 1 - LEVEL | | `Reserved1` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved2` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | | `OutputSettings` | | `Logic` | **Fields:** [Logic_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-logic-t) | | `OutputMode` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - PNP * 1 - NPN * 2 - PUSH_PULL | | `RestartType` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - RESTART_IMMEDATE * 1 - RESTART_TIME * 2 - RESTART_INPUT | | `RestartTime` | **Type:** integer · **Format:** uint32 · **Default:** 200 · **Minimum:** 20 · **Maximum:** 600000 | | `RestartInput` | **Type:** integer · **Format:** uint16 · **Default:** 1 · **Minimum:** 1 · **Maximum:** 8 | | `Combination` | **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 0 - AND * 1 - OR * 2 - XOR | | `Reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved4` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Sources` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 128 **Items:** | `Name` | **Type:** string · **Default:** · **Minimum length:** 4 · **Maximum length:** 4 | | `Invert` | **Type:** boolean · **Default:** false | | `Reserved5` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `Reserved6` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | | `EncoderPortType` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - NONE * 1 - ENCODER_A * 2 - ENCODER_B * 3 - AUX1 * 4 - AUX2 | | --- | --- | | `Reserved8` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved9` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | `Reserved10` | **Type:** integer · **Format:** uint16 · **Default:** 0 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /SetOutput](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-setoutput) Sets the output state for an individual output. Precondition is to set the output source to "SOPAS command". **Editable JSON template** ```json { "data": { "Output": "", "Value": "" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `data` | `Output` | **Type:** integer · **Format:** uint8 | | --- | --- | | `Value` | **Type:** integer · **Format:** uint8 | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `Success` **Type:** boolean · **Default:** false | ### 9 - Measurement Data Output #### [GET /EtherHostIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etherhostipport) Returns/sets the port settings for the LMDscandata output (CoLa Binary TCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherHostIPPort" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherHostIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2112 · **Minimum:** 1024 | #### [POST /EtherHostIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etherhostipport) Returns/sets the port settings for the LMDscandata output (CoLa Binary TCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherHostIPPort": 2112 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherHostIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2112 · **Minimum:** 1024 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherAuxIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etherauxipport) Returns/sets the port settings for the LMDscandata output 2 (CoLa ASCII TCP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxIPPort" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherAuxIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2111 · **Minimum:** 1024 | #### [POST /EtherAuxIPPort](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etherauxipport) Returns/sets the port settings for the LMDscandata output 2 (CoLa ASCII TCP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAuxIPPort": 2111 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxIPPort` **Type:** integer · **Format:** uint16 · **Default:** 2111 · **Minimum:** 1024 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherSessionTimeout](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ethersessiontimeout) Returns/sets the session timeout for the LMDscandata output. Be careful with low values as they might cause unexpected disconnections. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherSessionTimeout" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherSessionTimeout` **Type:** integer · **Format:** uint32 · **Default:** 15000 | #### [POST /EtherSessionTimeout](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-ethersessiontimeout) Returns/sets the session timeout for the LMDscandata output. Be careful with low values as they might cause unexpected disconnections. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherSessionTimeout": 15000 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherSessionTimeout` **Type:** integer · **Format:** uint32 · **Default:** 15000 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /ScanDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-scandataethsettings) Returns/sets the destination IP address settings for measurement data streaming (UDP). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataEthSettings" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 2115 | | #### [POST /ScanDataEthSettings](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-scandataethsettings) Returns/sets the destination IP address settings for measurement data streaming (UDP). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataEthSettings": { "Protocol": 1, "IPAddress": [ 192, 168, 0, 100 ], "Port": 2115 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataEthSettings` | `Protocol` | **Allowed values:** ``` [ 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 1 Mapping: * 1 - UDP * 2 - TCP | | `IPAddress` | **Default:** ``` [ 192, 168, 0, 100 ] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** **Type:** integer · **Format:** uint8 | | `Port` | **Type:** integer · **Format:** uint16 · **Default:** 2115 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /ScanDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-scandataenable) Enables/disables the measurement data streaming. The measurement data itself is sent via a UDP-based SICK-specific format. A Python example can be found at https://github.com/SICKAG/ScanSegmentAPI. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataEnable" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ScanDataEnable` **Type:** boolean · **Default:** false | #### [POST /ScanDataEnable](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-scandataenable) Enables/disables the measurement data streaming. The measurement data itself is sent via a UDP-based SICK-specific format. A Python example can be found at https://github.com/SICKAG/ScanSegmentAPI. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataEnable": false } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataEnable` **Type:** boolean · **Default:** false | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-scandataformat) Returns/sets the scan data format (e.g., Compact format). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataFormat" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 1 - MSGPACK * 2 - Compact * 3 - LMDscandata * 4 - NativeROS2 | #### [POST /ScanDataFormat](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-scandataformat) Returns/sets the scan data format (e.g., Compact format). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataFormat": 2 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataFormat` **Allowed values:** ``` [ 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 1 - MSGPACK * 2 - Compact * 3 - LMDscandata * 4 - NativeROS2 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /rosFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-rosframeid) Returns/sets the frame ID of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosFrameId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `rosFrameId` **Type:** string · **Default:** picoScan_ · **Maximum length:** 64 | #### [POST /rosFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-rosframeid) Returns/sets the frame ID of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosFrameId": "picoScan_" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `rosFrameId` **Type:** string · **Default:** picoScan_ · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /rosParentFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-rosparentframeid) Returns/sets the parent frame ID of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosParentFrameId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `rosParentFrameId` **Type:** string · **Default:** world · **Maximum length:** 64 | #### [POST /rosParentFrameId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-rosparentframeid) Returns/sets the parent frame ID of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosParentFrameId": "world" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `rosParentFrameId` **Type:** string · **Default:** world · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /rosNamespace](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-rosnamespace) Returns/sets the namespace of the published topics. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosNamespace" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `rosNamespace` **Type:** string · **Default:** · **Maximum length:** 64 | #### [POST /rosNamespace](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-rosnamespace) Returns/sets the namespace of the published topics. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosNamespace": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `rosNamespace` **Type:** string · **Default:** · **Maximum length:** 64 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /ScanDataConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-scandataconfig) Returns/sets the configuration of LMDscandata such as the content of the scan data (e.g., whether to include the RSSI values). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/ScanDataConfig" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `reserved` | **Type:** integer · **Format:** uint16 | | `RemDataConfig` | | `bEnable` | **Type:** boolean · **Default:** true | | `reserved1` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `reserved2` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | `EnableEncoderBlock` | **Type:** boolean · **Default:** false | | --- | --- | | `reserved1` | **Type:** boolean · **Default:** false | | `bEnableDeviceName` | **Type:** boolean · **Default:** false | | `reserved2` | **Type:** boolean · **Default:** false | | `bEnableTimeBlock` | **Type:** boolean · **Default:** false | | `reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | #### [POST /ScanDataConfig](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-scandataconfig) Returns/sets the configuration of LMDscandata such as the content of the scan data (e.g., whether to include the RSSI values). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "ScanDataConfig": { "reserved": "", "RemDataConfig": { "bEnable": true, "reserved1": 0, "reserved2": 0 }, "EnableEncoderBlock": false, "reserved1": false, "bEnableDeviceName": false, "reserved2": false, "bEnableTimeBlock": false, "reserved3": 1 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `ScanDataConfig` | `reserved` | **Type:** integer · **Format:** uint16 | | `RemDataConfig` | | `bEnable` | **Type:** boolean · **Default:** true | | `reserved1` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | `reserved2` | **Type:** integer · **Format:** uint8 · **Default:** 0 | | | `EnableEncoderBlock` | **Type:** boolean · **Default:** false | | --- | --- | | `reserved1` | **Type:** boolean · **Default:** false | | `bEnableDeviceName` | **Type:** boolean · **Default:** false | | `reserved2` | **Type:** boolean · **Default:** false | | `bEnableTimeBlock` | **Type:** boolean · **Default:** false | | `reserved3` | **Type:** integer · **Format:** uint16 · **Default:** 1 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /rosDomainId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-rosdomainid) Returns/sets the ROS domain ID used for the ROS 2 communication. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/rosDomainId" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `rosDomainId` **Type:** integer · **Format:** uint8 · **Default:** 0 · **Maximum:** 232 | #### [POST /rosDomainId](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-rosdomainid) Returns/sets the ROS domain ID used for the ROS 2 communication. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "rosDomainId": 0 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `rosDomainId` **Type:** integer · **Format:** uint8 · **Default:** 0 · **Maximum:** 232 | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /compactTelegramType1Content](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-compacttelegramtype1content) Returns/sets the content of the Compact telegram type 1 (e.g. whether to include the RSSI values). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/compactTelegramType1Content" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `includeRssi` | **Type:** boolean · **Default:** true | | `includeProperties` | **Type:** boolean · **Default:** true | | #### [POST /compactTelegramType1Content](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-compacttelegramtype1content) Returns/sets the content of the Compact telegram type 1 (e.g. whether to include the RSSI values). This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "compactTelegramType1Content": { "includeRssi": true, "includeProperties": true } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `compactTelegramType1Content` | `includeRssi` | **Type:** boolean · **Default:** true | | `includeProperties` | **Type:** boolean · **Default:** true | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-sensorposition) Returns/sets the mounting position in 1/10000 deg. This only affects the PointCloud2 format output by native ROS2. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/SensorPosition" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | #### [POST /SensorPosition](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-sensorposition) Returns/sets the mounting position in 1/10000 deg. This only affects the PointCloud2 format output by native ROS2. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "SensorPosition": { "x": 0, "y": 0, "z": 0, "yaw": 0, "pitch": 0, "roll": 0 } } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `SensorPosition` | `x` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `y` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `z` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -100000 · **Maximum:** 100000 | | `yaw` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `pitch` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | `roll` | **Type:** integer · **Format:** int32 · **Default:** 0 · **Minimum:** -3600000 · **Maximum:** 3600000 | | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) ### 10 - Operating Data #### [GET /LastParaDate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-lastparadate) Returns the last date (e.g., 12.11.2024) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaDate" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `LastParaDate` **Type:** string · **Default:** DD.MM.YYYY · **Maximum length:** 10 | #### [GET /LastParaTime](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-lastparatime) Returns the last time (e.g., 13:24) when a permanent parameter save was executed. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/LastParaTime" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `LastParaTime` **Type:** string · **Default:** HH:MM · **Maximum length:** 5 | #### [GET /PowerOnCnt](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-poweroncnt) Returns the number of power-on cycles. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/PowerOnCnt" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `PowerOnCnt` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /DailyOpHours](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-dailyophours) Returns the runtime duration since the last power-on (non-persistent). **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/DailyOpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `DailyOpHours` **Type:** number · **Format:** float · **Default:** 0.0 | #### [GET /OpHours](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ophours) Returns the total number of operating hours during the lifetime of the device. The resolution is 1/10 hour. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/OpHours" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `OpHours` **Type:** integer · **Format:** uint32 · **Default:** 0 | #### [GET /CurrentTempDev](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-currenttempdev) Returns the current device temperature. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/CurrentTempDev" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `CurrentTempDev` **Type:** number · **Format:** float · **Default:** 20.0 | ### 11 - Diagnostics #### [POST /DoDiagnosisDump](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-dodiagnosisdump) Creates a diagnostic file (zip file) for further analysis. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "DoRunlevelLoop": true, "Output": "file" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | **Example:** ``` { "DoRunlevelLoop": true, "Output": "file" } ``` | `DoRunlevelLoop` | **Type:** boolean · **Default:** false | | `Output` | **Type:** string · **Default:** · **Maximum length:** 64 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `Successful` **Type:** boolean · **Default:** false | #### [POST /GetDiagnosisDumpInfo](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-getdiagnosisdumpinfo) Returns additional meta-information about the diagnostic file. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `DiagDumpExists` | **Type:** boolean · **Default:** false | | `DiagDumpTimestamp` | **Type:** integer · **Format:** uint32 | | ### 12 - Cybersecurity #### [GET /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled, CoLa A uses port 2111 and CoLa B uses 2112. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherAuxEnabled" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | #### [POST /EtherAuxEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-etherauxenabled) Enables/disables the legacy interface CoLa A/B. If enabled, CoLa A uses port 2111 and CoLa B uses 2112. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherAuxEnabled": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherAuxEnabled` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/EtherCoLaScanMode" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | #### [POST /EtherCoLaScanMode](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-ethercolascanmode) Configures the device search by SICK tools. If disabled, finding the device via device search and changing the IP address via SICK tools is not possible. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "EtherCoLaScanMode": 3 } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `EtherCoLaScanMode` **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 3 Mapping: * 0 - ENABLED * 1 - IP_CONFIG_DISABLED * 2 - DISABLED * 3 - IP_CONFIG_TIME_LIMIT | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [GET /httpsStatus](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-httpsstatus) Returns the status of the HTTPS interface. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/httpsStatus" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `enabled` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-httpserror-t) | | #### [GET /certificateBundleInfo](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-certificatebundleinfo) Returns information about the uploaded certificate bundle. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/certificateBundleInfo" ``` **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `uuidBundle` | **Type:** string · **Default:** · **Maximum length:** 100 | | `certificates` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 4 **Items:** | `names` | **Default:** ``` [] ``` **Type:** array · **Minimum items:** 0 · **Maximum items:** 20 **Items:** `entry` **Type:** string · **Default:** · **Maximum length:** 1000 | | `issuer` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `subject` | **Type:** string · **Default:** · **Maximum length:** 1000 | | `serialNumber` | **Type:** string · **Default:** · **Maximum length:** 119 | | `fingerprint` | **Type:** string · **Default:** · **Maximum length:** 119 | | `validNotBefore` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | `validNotAfter` | **Type:** string · **Default:** · **Minimum length:** 24 · **Maximum length:** 24 | | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-httpserror-t) | | --- | --- | | #### [POST /removeCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-removecertificatebundle) Removes the uploaded certificate bundle. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** `header` **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-httpserror-t) | | #### [POST /setCertificateBundle](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-setcertificatebundle) Uploads a certificate bundle in the PEM format via JSON. This function requires at least user level: Service. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "contentCertificateBundle": " ", "contentPrivateKey": " " } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | | `contentCertificateBundle` | **Type:** string · **Default:** · **Maximum length:** 10000 | | `contentPrivateKey` | **Type:** string · **Default:** · **Maximum length:** 4000 | | **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | | `success` | **Type:** boolean · **Default:** false | | `errorCode` | **Fields:** [httpsError_t](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-httpserror-t) | | #### [POST /SetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-setwebserverenabled) Sets the availability of the web server (reboot required). If disabled, the web server-based GUI and the REST interface cannot be used anymore. This function requires at least user level: Authorized Client. **Editable JSON template** ```json { "header": { "nonce": "", "opaque": "", "realm": "SICK Sensor", "response": "", "user": "Run" }, "data": { "Enable": true } } ``` **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** | `header` | **Fields:** [PostBodyHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-postbodyheader) | | --- | --- | | `data` | `Enable` **Type:** boolean · **Default:** true | **Responses** **Status `200`** **Media type: `application/json`** `header` **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) #### [POST /GetWebserverEnabled](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-post-getwebserverenabled) Returns the availability of the web server. Build the JSON body from the request schema below. **Try the request** Protected requests need challenge-response authentication, so `curl` alone cannot send them; use the [Python script on the REST Interface page](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). **Request body** **Required:** true **Media type: `application/json`** **Type:** object · **Nullable:** true **Responses** **Status `200`** **Media type: `application/json`** | `header` | **Fields:** [ResponseHeader](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-responseheader) | | --- | --- | | `data` | `IsEnabled` **Type:** boolean · **Default:** true | ### 19 - Diagnostics #### [GET /crown/file](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-rest-get-crown-file) Download files (e.g. OpenAPI description or diagnostic files) if one exists. **Try the request** Copy this command into a terminal. In Windows PowerShell, use `curl.exe` instead of `curl`. ```bash curl --request GET "http://192.168.0.1/api/crown/file?filePath=diagnosisDump.zip" ``` **Parameters** **`filePath`** **Location:** query **Required:** true path **Type:** string · **Example:** diagnosisDump.zip **Responses** **Status `200`** **Media type: `application/zip`** **Type:** string · **Format:** binary **Status `400`** bad operation **Status `404`** file not found **Status `500`** Server not found ### Shared request and response fields #### ResponseHeader | `status` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] ``` **Type:** integer · **Format:** uint16 · **Default:** 0 Mapping: * 0 - Ok * 1 - Parsing Failed * 2 - Invalid Data * 3 - Internal Server Error * 4 - Access Denied * 5 - Not Found * 6 - Out Of Range * 7 - Out Of Bounds * 8 - Read Only * 9 - Illegal Value * 10 - Invalid Challenge * 11 - Out Of Connections | | --- | --- | | `message` | **Type:** string · **Default:** Ok | #### PostBodyHeader | `nonce` | **Type:** string · **Default:** | | --- | --- | | `opaque` | **Type:** string · **Default:** | | `realm` | **Type:** string · **Default:** SICK Sensor | | `response` | **Type:** string · **Default:** | | `user` | **Fields:** [E_USER_LEVEL_TYPE](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan120-schema-e-user-level-type) | #### E_USER_LEVEL_TYPE **Allowed values:** ``` [ "Run", "Operator", "Maintenance", "AuthorizedClient", "Service" ] ``` **Type:** string · **Default:** Run #### DeviceStatus **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - DS_UnknownState * 1 - DS_Startup * 2 - DS_ServiceMode * 3 - DS_NormalOperation * 4 - DS_SuspendedOperation * 5 - DS_ServiceRecommended * 6 - DS_ServiceRequired * 7 - DS_RecoverableError * 8 - DS_FatalError #### DateTime_t | `uiYear` | **Type:** integer · **Format:** uint16 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 2105 | | --- | --- | | `usiMonth` | **Type:** integer · **Format:** uint8 · **Default:** 1 · **Minimum:** 0 · **Maximum:** 12 | | `usiDay` | **Type:** integer · **Format:** uint8 · **Default:** 1 · **Minimum:** 0 · **Maximum:** 31 | | `usiHour` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 23 | | `usiMinute` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `usiSec` | **Type:** integer · **Format:** uint8 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 59 | | `udiUSec` | **Type:** integer · **Format:** uint32 · **Default:** 0 · **Minimum:** 0 · **Maximum:** 999999 | #### httpsError_t `error` **Type:** string · **Default:** · **Maximum length:** 100 #### RestoreBackupResult **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - Ok * 1 - ChecksumError * 2 - ParseError * 3 - DeviceIdentificationError * 4 - UpdateRepositoryError * 5 - UpdateSourceError * 6 - DecryptionError * 7 - DecryptionHeaderError * 8 - DecryptionLengthError * 9 - IoError * 10 - VersionConversionError * 50 - ComponentRegistryError #### Logic_t **Allowed values:** ``` [ 0, 1 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ACTIVE_HIGH * 1 - ACTIVE_LOW #### IOState_t `eIOState` **Allowed values:** ``` [ 0, 1, 2 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - IOS_LOW * 1 - IOS_HIGH * 2 - IOS_TRISTATE #### PortStateAndCounter_t | `ePortState` | **Allowed values:** ``` [ 0, 1, 2, 3, 4 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 2 Mapping: * 0 - OUTPUT_NOT_ACTIVE * 1 - OUTPUT_ACTIVE * 2 - TRISTATE * 3 - INPUT_ACTIVE * 4 - INPUT_NOT_ACTIVE | | --- | --- | | `PortCounter` | **Type:** integer · **Format:** uint32 | #### LedStateType | `Color` | **Allowed values:** ``` [ 0, 1, 2, 3 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - GREEN * 1 - YELLOW * 2 - RED * 3 - WHITE | | --- | --- | | `Function` | **Allowed values:** ``` [ 0, 1, 2, 3, 4, 5, 6 ] ``` **Type:** integer · **Format:** uint8 · **Default:** 0 Mapping: * 0 - ON * 1 - OFF * 2 - BLINKING * 3 - BLINKING_FAST * 4 - BLINKING_DELAYED * 5 - BLINKING_COLOR * 6 - BLINKING_YELLOW_RED | | `Id` | **Type:** string · **Default:** · **Maximum length:** 8 | #### SessionToken **Type:** string · **Default:** · **Maximum length:** 36 --- # picoScan100 API | CoLa Telegrams (CoLa A and CoLa B) > Complete picoScan100 CoLa telegram reference with sRN, sWN, sMN, and sEN commands, parameter structures, and CoLa A and CoLa B examples. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/ # API | CoLa Telegrams This reference lists the CoLa telegrams supported by the picoScan100. Use the command details to build or troubleshoot PLC and other low-level integrations without guessing the telegram structure. Examples are grouped by protocol, with each telegram representation in a separate code block and its own copy button. Categories follow the [picoScan150 REST API reference](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/#picoscan150-rest-api) where corresponding CoLa telegrams are available. Select a telegram to expand its structure and examples. A direct link to a telegram opens it automatically. The categories organize the reference; they do not imply that every telegram is supported by every picoScan variant.
## General
### Log In [sMN SetAccessMode] The password hashes of the default passwords are documented in the operating instructions (PDF) of your device. Do not pass them on, and change the passwords during commissioning. A log in to the device is necessary to change parameters. In most cases, the user level 'Authorized client' is needed. Changed parameters will be reset to the previous state via a reboot unless they are saved. To save parameter changes the command "sMN mEEwriteall" must be sent before log out. **Telegram structure: sMN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | User level | Select user level | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value for the selected user level | Uint_32 | 4 | Maintenance:
Authorized client:
Service: | `` | `` | **Example: sMN SetAccessMode - Log in as “Authorized client”** **CoLa A (ASCII)** ```text sMN{SPC}SetAccessMode{SPC}3{SPC} ``` ```text sMN SetAccessMode 3 ``` ```text sMN SetAccessMode 3 ``` **Telegram structure: sAN SetAccessMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | User level | String | 13 | | `SetAccessMode` | `53 65 74 41 63 63 65 73 73 4D 6F 64 65` | | Change user level | Changed level | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN SetAccessMode** **CoLa A (ASCII)** ```text sAN{SPC}SetAccessMode{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 01 38 ```
### Enable/ Disable CoLa User Levels [sMN EnableLegacyUserLevel] This command enables and disables a specific CoLa user level (Maintenance, Authorized Client). **Telegram structure: sMN EnableLegacyUserLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Enable/ disable CoLa user level | String | 21 | | `EnableLegacyUserLevel` | `45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C` | | User level | - | Uint_8 | 1 | Maintenance:
Authorized Client: | `2
3` | `02
03` | | Status | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sMN EnableLegacyUserLevel - Enable User Level Authorized Client** **CoLa A (ASCII)** ```text sMN{SPC}EnableLegacyUserLevel{SPC}3{SPC}1 ``` ```text sMN EnableLegacyUserLevel 3 1 ``` ```text sMN EnableLegacyUserLevel 3 1 ``` ```text 02 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 33 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 03 20 01 21 ``` ```text 73 4D 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 03 20 01 ``` **Telegram structure: sAN EnableLegacyUserLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Enable/ disable CoLa user level | String | 21 | | `EnableLegacyUserLevel` | `45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C` | | Status code | Confirmation | Bool_1 | 1 | unsuccessful:
successful: | `0
1` | `00
01` | **Example: sAN EnableLegacyUserLevel - Enabling/ disabling of the CoLa User Level was successful** **CoLa A (ASCII)** ```text sAN{SPC}EnableLegacyUserLevel{SPC}1 ``` ```text 02 73 41 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 41 4E 20 45 6E 61 62 6C 65 4C 65 67 61 63 79 55 73 65 72 4C 65 76 65 6C 20 01 0E ```
### Load Factory Defaults [sMN mSCloadfacdef] The Factory-Reset (Load factory defaults) deletes the entire parametrization of the device. All parameters, settings and system applications will be set to default. **Telegram structure: sMN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` | **Example: sMN mSCloadfacdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadfacdef ``` ```text sMN mSCloadfacdef ``` ```text sMN mSCloadfacdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 28 ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 ``` **Telegram structure: sAN mSCloadfacdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load factory defaults | String | 13 | | `mSCloadfacdef` | `6D 53 43 6C 6F 61 64 66 61 63 64 65 66` | **Example: sAN mSCloadfacdef** **CoLa A (ASCII)** ```text sAN{SPC}mSCloadfacdef ``` ```text 02 73 41 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 53 43 6C 6F 61 64 66 61 63 64 65 66 20 04 ```
### Load Application Defaults [sMN mSCloadappdef] The Application-Reset (Load application defaults) deletes only the user parametrization of the Fields, Evaluation cases (EVC) and parameters under the header “Application”. Other parameters like Interface settings, Echo Filter, etc. remain unaffected. **Telegram structure: sMN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sMN mSCloadappdef** **CoLa A (ASCII)** ```text sMN{SPC}mSCloadappdef ``` ```text sMN mSCloadappdef ``` ```text sMN mSCloadappdef ``` ```text 02 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 2D ``` ```text 73 4D 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 ``` **Telegram structure: sAN mSCloadappdef** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Load application defaults | String | 13 | | `mSCloadappdef` | `6D 53 43 6C 6F 61 64 61 70 70 64 65 66` | **Example: sAN mSCloadappdef** **CoLa A (ASCII)** ```text sAN{SPC}mSCloadappdef ``` ```text 02 73 41 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 53 43 6C 6F 61 64 61 70 70 64 65 66 20 01 ```
### Read Checksum [sRN LFTchecksum] This command includes the MD5 checksum of multiple software parts to verify their integrity. The checksums help to ensure files have not been corrupted or altered. They are also important for cybersecurity because they detect unauthorized modifications. **Telegram structure: sRN LFTchecksum** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | MD5 checksum | String | 11 | | `LFTchecksum` | `4C 46 54 63 68 65 63 6B 73 75 6D` | **Example: sRN LFTchecksum** **CoLa A (ASCII)** ```text sRN{SPC}LFTchecksum ``` ```text sRN LFTchecksum ``` ```text sRN LFTchecksum ``` ```text 02 73 52 4E 20 4C 46 54 63 68 65 63 6B 73 75 6D 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4C 46 54 63 68 65 63 6B 73 75 6D 1C ``` ```text 73 52 4E 20 4C 46 54 63 68 65 63 6B 73 75 6D ``` **Telegram structure: sRA LFTchecksum** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | MD5 checksum | String | 11 | | `LFTchecksum` | `4C 46 54 63 68 65 63 6B 73 75 6D` | | Variable Data 1 | Checksum validity | Bool_1 | 1 | False:
True: | `0
1` | `00
01` | | Variable Data 2 | Length | Uint_16 | 2 | | `20` | `32 20` | | Variable Data 2 | Checksum Linux part | FlexString | | | `` | `` | | Variable Data 3 | Length | Uint_16 | 2 | | `20` | `32 20` | | Variable Data 3 | Checksum app part | FlexString | | | `` | `` | | Variable Data 4 | Length | Uint_16 | 2 | | `20` | `32 20` | | Variable Data 4 | Checksum calibration part | FlexString | | | `` | `` | | Variable Data 5 | Length | Uint_16 | 2 | | `20` | `32 20` | | Variable Data 5 | Checksum parameters part | FlexString | | | `` | `` | **Example: sRA LFTchecksum** **CoLa A (ASCII)** ```text sRA{SPC}LFTchecksum{SPC}1{SPC}20{SPC}92b7b9720c40e8b99268229283617dd5{SPC}20{SPC}e002a1c8022b30589ce0e357c87f5a1c{SPC}20{SPC}901736df3fbc807121c46f9eaed8ff28{SPC}20{SPC}588e8386c7cd011d1a8369c4377e2a4c ``` ```text 02 73 52 41 20 4C 46 54 63 68 65 63 6B 73 75 6D 20 31 20 32 30 20 39 32 62 37 62 39 37 32 30 63 34 30 65 38 62 39 39 32 36 38 32 32 39 32 38 33 36 31 37 64 64 35 20 32 30 20 65 30 30 32 61 31 63 38 30 32 32 62 33 30 35 38 39 63 65 30 65 33 35 37 63 38 37 66 35 61 31 63 20 32 30 20 39 30 31 37 33 36 64 66 33 66 62 63 38 30 37 31 32 31 63 34 36 66 39 65 61 65 64 38 66 66 32 38 20 32 30 20 35 38 38 65 38 33 38 36 63 37 63 64 30 31 31 64 31 61 38 33 36 39 63 34 33 37 37 65 32 61 34 63 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 99 73 52 41 20 4C 46 54 63 68 65 63 6B 73 75 6D 20 01 00 20 39 32 62 37 62 39 37 32 30 63 34 30 65 38 62 39 39 32 36 38 32 32 39 32 38 33 36 31 37 64 64 35 00 20 65 30 30 32 61 31 63 38 30 32 32 62 33 30 35 38 39 63 65 30 65 33 35 37 63 38 37 66 35 61 31 63 00 20 39 30 31 37 33 36 64 66 33 66 62 63 38 30 37 31 32 31 63 34 36 66 39 65 61 65 64 38 66 66 32 38 00 20 35 38 38 65 38 33 38 36 63 37 63 64 30 31 31 64 31 61 38 33 36 39 63 34 33 37 37 65 32 61 34 63 6F ```
### Change Password [sMN SetPassword] Changing the log in password for a specific user level. If logged in with a higher user level you may set the password for lower user levels as well. **Telegram structure: sMN SetPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set password request | String | 13 | | `SetPassword` | `53 65 74 50 61 73 73 77 6F 72 64` | | User level | User level that the password will be applied to | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value of the new password | Uint_32 | 4 | | `` | | Set password for 'Authorized client' to “testtest” (hash value = 1920E4C9). **Example: sMN SetPassword** **CoLa A (ASCII)** ```text sMN{SPC}SetPassword{SPC}3{SPC}1920E4C9 ``` ```text sMN SetPassword 3 1920E4C9 ``` ```text sMN SetPassword 3 1920E4C9 ``` ```text 02 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 33 20 31 39 32 30 45 34 43 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 1A ``` ```text 73 4D 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 ``` Calculating the hash value of the password **Telegram structure: sAN SetPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set password requested | String | 13 | | `SetPassword` | `53 65 74 50 61 73 73 77 6F 72 64` | | Success | Confirmation | Int_8 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN SetPassword** **CoLa A (ASCII)** ```text sAN{SPC}SetPassword{SPC}1 ``` ```text 02 73 41 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 53 65 74 50 61 73 73 77 6F 72 64 20 01 00 ```
### Check Password [sMN CheckPassword] Check the password for a specific user level, e.g. to verify if it has been changed correctly. **Telegram structure: sMN CheckPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Check password request | String | 13 | | `CheckPassword` | `43 68 65 63 6B 50 61 73 73 77 6F 72 64` | | User level | User level to check the password for | Int_8 | 1 | Maintenance:
Authorized client:
Service: | `2
3
4` | `02
03
04` | | Password | Hash value of the password to be checked | Uint_32 | 4 | | `` | | Check password “testtest” for 'Authorized client'. **Example: sMN CheckPassword** **CoLa A (ASCII)** ```text sMN{SPC}CheckPassword{SPC}3{SPC}1920E4C9 ``` ```text sMN CheckPassword 3 1920E4C9 ``` ```text sMN CheckPassword 3 1920E4C9 ``` ```text 02 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 33 20 31 39 32 30 45 34 43 39 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 1E ``` ```text 73 4D 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 03 19 20 E4 C9 ``` **Telegram structure: sAN CheckPassword** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Check password request | String | 13 | | `CheckPassword` | `43 68 65 63 6B 50 61 73 73 77 6F 72 64` | | Success | Confirmation | Int_8 | 1 | Failed:
Success: | `0
1` | `00
01` | **Example: sAN CheckPassword** **CoLa A (ASCII)** ```text sAN{SPC}CheckPassword{SPC}1 ``` ```text 02 73 41 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 43 68 65 63 6B 50 61 73 73 77 6F 72 64 20 01 04 ```
### Save Parameters Permanently [sMN mEEwriteall] Save all parameter changes of the device. Must be sent before logging off and/ or hardware rebooting of the device. Else all changes will be lost. **Telegram structure: sMN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | **Example: sMN mEEwriteall** **CoLa A (ASCII)** ```text sMN{SPC}mEEwriteall ``` ```text sMN mEEwriteall ``` ```text sMN mEEwriteall ``` ```text 02 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 21 ``` ```text 73 4D 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C ``` **Telegram structure: sAN mEEwriteall** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Store parameters permanently | String | 11 | | `mEEwriteall` | `6D 45 45 77 72 69 74 65 61 6C 6C` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mEEwriteall** **CoLa A (ASCII)** ```text sAN{SPC}mEEwriteall{SPC}1 ``` ```text 02 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 6D 45 45 77 72 69 74 65 61 6C 6C 20 01 0C ```
### Set to Run [sMN Run] Log out from device and activate all parameter changes. **Telegram structure: sMN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | **Example: sMN Run** **CoLa A (ASCII)** ```text sMN{SPC}Run ``` ```text sMN Run ``` ```text sMN Run ``` ```text 02 73 4D 4E 20 52 75 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 07 73 4D 4E 20 52 75 6E 19 ``` ```text 73 4D 4E 20 52 75 6E ``` **Telegram structure: sAN Run** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start the device | String | 3 | | `Run` | `52 75 6E` | | Status code | Accepted when value is 1 | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN Run** **CoLa A (ASCII)** ```text sAN{SPC}Run{SPC}1 ``` ```text 02 73 41 4E 20 52 75 6E 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 09 73 41 4E 20 52 75 6E 20 01 34 ```
### Reboot Device [sMN mSCreboot] This command includes saving all parameters. **Telegram structure: sMN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sMN mSCreboot** **CoLa A (ASCII)** ```text sMN{SPC}mSCreboot ``` ```text sMN mSCreboot ``` ```text sMN mSCreboot ``` ```text 02 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 2C ``` ```text 73 4D 4E 20 6D 53 43 72 65 62 6F 6F 74 ``` **Telegram structure: sAN mSCreboot** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reboot device | String | 9 | | `mSCreboot` | `6D 53 43 72 65 62 6F 6F 74` | **Example: sAN mSCreboot** **CoLa A (ASCII)** ```text sAN{SPC}mSCreboot ``` ```text 02 73 41 4E 20 6D 53 43 72 65 62 6F 6F 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 41 4E 20 6D 53 43 72 65 62 6F 6F 74 20 00 ```
## Status
### Read the Device State [sRN DevSta] This telegram reads the device state. **Telegram structure: sRN DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the current device state | String | 13 | | `DevSta` | `44 65 76 53 74 61` | **Example: sRN DevSta** **CoLa A (ASCII)** ```text sRN{SPC}DevSta ``` ```text sRN DevSta ``` ```text sRN DevSta ``` ```text 02 73 52 4E 20 44 65 76 53 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 65 76 53 74 61 5E ``` ```text 73 52 4E 20 44 65 76 53 74 61 ``` **Telegram structure: sRA DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the current device state | String | 13 | | `DevSta` | `44 65 76 53 74 61` | | Status code | Code number | Enum_8 | 1 | Reserved:
Startup:
Service mode:
Normal operation:
Suspended operation:
Service recommended:
Service required:
Recoverable error:
Fatal error: | `0
1
2
3
4
5
6
7
8` | `00
01
02
03
04
05
06
07
08` | **Example: sRA DevSta** **CoLa A (ASCII)** ```text sRA{SPC}DevSta{SPC}3 ``` ```text 02 73 52 41 20 44 65 76 53 74 61 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 41 20 44 65 76 53 74 61 20 03 72 ```
### Receive the Device State by Event [sEN DevSta] This telegram reads the device state. **Telegram structure: sEN DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Read the current device state | String | 13 | | `DevSta` | `44 65 76 53 74 61` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN DevSta** **CoLa A (ASCII)** ```text sEN{SPC}DevSta{SPC}1 ``` ```text sEN DevSta 1 ``` ```text sEN DevSta 1 ``` ```text 02 73 45 4E 20 44 65 76 53 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 45 4E 20 44 65 76 53 74 61 20 01 68 ``` ```text 73 45 4E 20 44 65 76 53 74 61 20 01 ``` **Telegram structure: sSN DevSta** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Read the current device state | String | 13 | | `DevSta` | `44 65 76 53 74 61` | | Status code | Code number | Enum_8 | 1 | Reserved:
Startup:
Service mode:
Normal operation:
Suspended operation:
Service recommended:
Service required:
Recoverable error:
Fatal error: | `0
1
2
3
4
5
6
7
8` | `00
01
02
03
04
05
06
07
08` | **Example: sSN DevSta** **CoLa A (ASCII)** ```text sSN{SPC}DevSta{SPC}3 ``` ```text 02 73 53 4E 20 44 65 76 53 74 61 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 53 4E 20 44 65 76 53 74 61 20 03 7C ```
### Read the Device State [sRN SCdevicestate] This telegram reads the general device state. **Telegram structure: sRN SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | **Example: sRN SCdevicestate** **CoLa A (ASCII)** ```text sRN{SPC}SCdevicestate ``` ```text sRN SCdevicestate ``` ```text sRN SCdevicestate ``` ```text 02 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 30 ``` ```text 73 52 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 ``` **Telegram structure: sRA SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | | Status code | Code number | Enum_8 | 1 | Busy / logged-in:
Ready:
Error: | `0
1
2` | `00
01
02` | **Example: sRA SCdevicestate** **CoLa A (ASCII)** ```text sRA{SPC}SCdevicestate{SPC}1 ``` ```text 02 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 1E ```
### Receive the Device State by Event [sEN SCdevicestate] This telegram reads the general device state continuously. **Telegram structure: sEN SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN SCdevicestate** **CoLa A (ASCII)** ```text sEN{SPC}SCdevicestate{SPC}1 ``` ```text sEN SCdevicestate 1 ``` ```text sEN SCdevicestate 1 ``` ```text 02 73 45 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 45 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 06 ``` ```text 73 45 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 ``` **Telegram structure: sRA SCdevicestate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Read the device state | String | 13 | | `SCdevicestate` | `53 43 64 65 76 69 63 65 73 74 61 74 65` | | Status code | Code number | Enum_8 | 1 | Busy / logged-in:
Ready:
Error: | `0
1
2` | `00
01
02` | **Example: sSN SCdevicestate** **CoLa A (ASCII)** ```text sSN{SPC}SCdevicestate{SPC}1 ``` ```text 02 73 53 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 53 4E 20 53 43 64 65 76 69 63 65 73 74 61 74 65 20 01 10 ```
## Device Information
### Read Firmware Version [sRN DeviceIdent] **Telegram structure: sRN DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read firmware version | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | **Example: sRN DeviceIdent** **CoLa A (ASCII)** ```text sRN{SPC}DeviceIdent ``` ```text sRN DeviceIdent ``` ```text sRN DeviceIdent ``` ```text 02 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 25 ``` ```text 73 52 4E 20 44 65 76 69 63 65 49 64 65 6E 74 ``` **Telegram structure: sRA DeviceIdent** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 11 | | `DeviceIdent` | `44 65 76 69 63 65 49 64 65 6E 74` | | Value | Length of firmware designation | Enum_16 | 2 | | `0 ... 22h` | `0 ... 22h` | | Value | Firmware designation for device family | String | | | `(See example)` | `(See example)` | | Value | Length of firmware version | Enum_16 | 2 | | `0 ... 22h` | `0 ... 22h` | | Value | Firmware version | String | | | `(See example)` | `(See example)` | **Example: sRA DeviceIdent** **CoLa A (ASCII)** ```text sRA{SPC}DeviceIdent{SPC}8{SPC}picoScan{SPC}8{SPC}1.2.0.0B ``` ```text 02 73 52 41 20 44 65 76 69 63 65 49 64 65 6E 74 20 38 20 70 69 63 6F 53 63 61 6E 20 38 20 31 2E 32 2E 30 2E 30 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 41 20 44 65 76 69 63 65 49 64 65 6E 74 20 00 08 70 69 63 6F 53 63 61 6E 00 08 31 2E 32 2E 30 2E 30 42 4F ```
### Read Version of the Application Software [sRN FirmwareVersion] **Telegram structure: sRN FirmwareVersion** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read version of the application software | String | 15 | | `FirmwareVersion` | `46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E` | **Example: sRN FirmwareVersion** **CoLa A (ASCII)** ```text sRN{SPC}FirmwareVersion ``` ```text sRN FirmwareVersion ``` ```text sRN FirmwareVersion ``` ```text 02 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 24 ``` ```text 73 52 4E 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E ``` **Telegram structure: sRA FirmwareVersion** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read version of the application software | String | 15 | | `FirmwareVersion` | `46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E` | | Value | Length of version | Uint_16 | 2 | | `0 ... 28h` | `0 ... 28h` | | Value | Version | String | 16 | | `(See example)` | `(See example)` | **Example: sRA FirmwareVersion** **CoLa A (ASCII)** ```text sRA{SPC}FirmwareVersion{SPC}14{SPC}1.2.0-b.0+1225.523ef ``` ```text 02 73 52 41 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 20 31 34 20 31 2E 32 2E 30 2D 62 2E 30 2B 31 32 32 35 2E 35 32 33 65 66 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2A 73 52 41 20 46 69 72 6D 77 61 72 65 56 65 72 73 69 6F 6E 20 00 14 31 2E 32 2E 30 2D 62 2E 30 2B 31 32 32 35 2E 35 32 33 65 66 4B ```
### Read Device Order Number [sRN OrdNum] This telegram reads the device order number which corresponds to the SICK part number of the device. **Telegram structure: sRN OrdNum** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read device order number | String | 6 | | `OrdNum` | `4F 72 64 4E 75 6D` | **Example: sRN OrdNum** **CoLa A (ASCII)** ```text sRN{SPC}OrdNum ``` ```text sRN OrdNum ``` ```text sRN OrdNum ``` ```text 02 73 52 4E 20 4F 72 64 4E 75 6D 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 72 64 4E 75 6D 40 ``` ```text 73 52 4E 20 4F 72 64 4E 75 6D ``` **Telegram structure: sRA OrdNum** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read device order number | String | 6 | | `OrdNum` | `4F 72 64 4E 75 6D` | | Length | Number of characters of the following order number | Uint_16 | 2 | | `0h ... 20h` | `00 00 ... 00 20` | | Order number | Order number in 7 digits | String | 7 | | `0000000 … 9999999` | `00 00 00 00 00 00 00 … FF FF FF FF FF FF FF` | Example: sRA OrdNum 1134610 (Order Number for picoScan150 Pro-1) **Example for picoScan150 Pro-1: sRA OrdNum** **CoLa A (ASCII)** ```text sRA{SPC}OrdNum{SPC}7{SPC}1134610 ``` ```text 02 73 52 41 20 4F 72 64 4E 75 6D 20 37 20 31 31 33 34 36 31 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 4F 72 64 4E 75 6D 20 00 07 31 31 33 34 36 31 30 58 ```
### Read Serial Number [sRN SerialNumber] Read the serial number of the device. **Telegram structure: sRN SerialNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read serial number of the device | String | 12 | | `SerialNumber` | `53 65 72 69 61 6C 4E 75 6D 62 65 72` | **Example: sRN SerialNumber** **CoLa A (ASCII)** ```text sRN{SPC}SerialNumber ``` ```text sRN SerialNumber ``` ```text sRN SerialNumber ``` ```text 02 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 4C ``` ```text 73 52 4E 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 ``` **Telegram structure: sRA SerialNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read serial number of the device | String | 12 | | `SerialNumber` | `53 65 72 69 61 6C 4E 75 6D 62 65 72` | | Length of serial number | Number of characters of the serial number | Uint_16 | 2 | | `0 ... 8h` | `00 00 ... 00 08h` | | Serial number | Production period (year, calendar week, number): YYWWxxxx | String | 8 | | `(See example)` | `(See example)` | **Example: sRA SerialNumber** **CoLa A (ASCII)** ```text sRA{SPC}SerialNumber{SPC}8{SPC}23360024 ``` ```text 02 73 52 41 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 20 38 20 32 33 33 36 30 30 32 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 52 41 20 53 65 72 69 61 6C 4E 75 6D 62 65 72 20 00 08 32 33 33 36 30 30 32 34 69 ```
### Read Device Type [sRN DItype] This telegram asks for the device type of the product family. **Telegram structure: sRN DItype** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask state | String | 6 | | `DItype` | `44 49 74 79 70 65` | **Example: sRN DItype** **CoLa A (ASCII)** ```text sRN{SPC}DItype ``` ```text sRN DItype ``` ```text sRN DItype ``` ```text 02 73 52 4E 20 44 49 74 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 74 79 70 65 5A ``` ```text 73 52 4E 20 44 49 74 79 70 65 ``` **Telegram structure: sRA DItype** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Ask state | String | 6 | | `DItype` | `44 49 74 79 70 65` | | Length of type key | Number of characters of the following type code | Uint_16 | 2 | | `0d … 65535d (0h … FFFFh)` | `00 00 … FF FF` | | Device type | Type code of the device | String | (var.) | | `(Device type)` | `(Device type)` | **Example: sRA DItype (picoScan150)** **CoLa A (ASCII)** ```text sRA{SPC}DItype{SPC}B{SPC}picoScan150 ``` ```text 02 73 52 41 20 44 49 74 79 70 65 20 42 20 70 69 63 6F 53 63 61 6E 31 35 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 52 41 20 44 49 74 79 70 65 20 00 0B 70 69 63 6F 53 63 61 6E 31 35 30 60 ```
### Set Device Name [sWN LocationName] Give the device a specific description name such as its location. **Telegram structure: sWN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | | Value | Number of characters of the following device name | Uint_16 | 2 | | `0d … +16d (0h … 10h )` | `00 00 … 00 10` | | Value | Device name | String | 32 | | `[Device name]` | `[Device name]` | **Example: sWN LocationName +9 LongRange** **CoLa A (ASCII)** ```text sWN{SPC}LocationName{SPC}+9{SPC}LongRange ``` ```text sWN LocationName +9 LongRange ``` ```text sWN LocationName +9 LongRange ``` ```text 02 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 39 20 4C 6F 6E 67 52 61 6E 67 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 09 4C 6F 6E 67 52 61 6E 67 65 0C ``` ```text 73 57 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 00 09 4C 6F 6E 67 52 61 6E 67 65 ``` **Telegram structure: sWA LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sWA LocationName** **CoLa A (ASCII)** ```text sWA{SPC}LocationName ``` ```text 02 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 20 7F ```
### Read Device Name [sRN LocationName] Read the given name of the device (Default is the serial number of the device). **Telegram structure: sRN LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read device name | String | 12 | | `LocationName` | `4C 6F 63 61 74 69 6F 6E 4E 61 6D 65` | **Example: sRN LocationName** **CoLa A (ASCII)** ```text sRN{SPC}LocationName ``` ```text sRN LocationName ``` ```text sRN LocationName ``` ```text 02 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 55 ``` ```text 73 52 4E 20 4C 6F 63 61 74 69 6F 6E 4E 61 6D 65 ``` **Telegram structure: sRA LocationName** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Find complete telegram structure of the answer in | | | | | | |
### Initiate an Acoustic or Visual Signal for a Defined Period of Time [sMN FindMe] This command can be used to make the device easier to find. **Telegram structure: sMN FindMe** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Initiate an acoustic or visual signal | String | 11 | | `FindMe` | `46 69 6E 64 4D 65` | | Period of time | Duration in seconds | Uint_16 | 2 | | `0d … 65535d (0h .. FF FF)` | `00 ... FF FF` | **Example: sMN FindMe** **CoLa A (ASCII)** ```text sMN{SPC}FindMe{SPC}1 ``` ```text sMN FindMe 1 ``` ```text sMN FindMe 1 ``` ```text 02 73 4D 4E 20 46 69 6E 64 4D 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 4D 4E 20 46 69 6E 64 4D 65 20 00 01 7C ``` ```text 73 4D 4E 20 46 69 6E 64 4D 65 20 00 01 ``` **Telegram structure: sAN FindMe** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Initiate an acoustic or visual signal | String | 11 | | `FindMe` | `46 69 6E 64 4D 65` | **Example: sAN FindMe** **CoLa A (ASCII)** ```text sAN{SPC}FindMe ``` ```text 02 73 41 4E 20 46 69 6E 64 4D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 41 4E 20 46 69 6E 64 4D 65 20 71 ```
## Basic Settings
### Read for Frequency and Angular Resolution [sRN LMPscancfg] Read the scanning frequency, angular resolution and aperture angle of the device. Values show the information of the values before any filters are applied. Therefore aperture angle is always showing the maximum, scanning frequency and angular resolution may also be static depending on device family. **Telegram structure: sRN LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | **Example: sRN LMPscancfg** **CoLa A (ASCII)** ```text sRN{SPC}LMPscancfg ``` ```text sRN LMPscancfg ``` ```text sRN LMPscancfg ``` ```text 02 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 63 ``` ```text 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 ``` **Telegram structure: sRA LMPscancfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info of scan frequency and angular resolution | String | 10 | | `LMPscancfg` | `4C 4D 50 73 63 61 6E 63 66 67` | | Scan frequency | [1/100 Hz] | Uint_32 | 4 | 15 Hz ... 50 Hz:
(depends on Dynamic Sensing Profile ) | `5DCh ... 1388h` | `05 DC ... 13 88` | | Reserved | - | Int_16 | 2 | Always: | `1` | `00 01` | | Angular resolution | [1/10000°] | Uint_32 | 4 | 0.1° ... 1°:
(depends on Dynamic Sensing Profile ) | `3E8h … 2710h` | `03 E8 ... 27 10` | | Start angle | [1/10000°] | Int_32 | 4 | -48° ... 228° | `FFF8AD00h … 22CA40h` | `FF F8 AD 00h … 00 22 CA 40h` | | Stop angle | [1/10000°] | Int_32 | 4 | -48° ... 228° | `FFF8AD00h … 22CA40h` | `FF F8 AD 00h … 00 22 CA 40h` | **Example: sRA LMPscancfg - 30 Hz scan frequency, 0.1° angular resolution, -138° start angle, +138° stop angle** **CoLa A (ASCII)** ```text sRA{SPC}LMPscancfg{SPC}BB8{SPC}1{SPC}3E8{SPC}FFEAF160{SPC}150EA0 ``` ```text 02 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 42 42 38 20 31 20 33 45 38 20 46 46 45 41 46 31 36 30 20 31 35 30 45 41 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 00 00 0B B8 00 01 00 00 03 E8 FF EA F1 60 00 15 0E A0 2A ```
### Activate Standby Mode [sMN LMCstandby] Shut off the laser in order to extend the lifetime of laser diode and reduce motor speed to 25 Hz. **Telegram structure: sMN LMCstandby** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set device to standby | String | 10 | | `LMCstandby` | `4C 4D 43 73 74 61 6E 64 62 79` | **Example: sMN LMCstandby** **CoLa A (ASCII)** ```text sMN{SPC}LMCstandby ``` ```text sMN LMCstandby ``` ```text sMN LMCstandby ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 65 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 6E 64 62 79 ``` **Telegram structure: sAN LMCstandby** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set device to standby | String | 10 | | `LMCstandby` | `4C 4D 43 73 74 61 6E 64 62 79` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstandby** **CoLa A (ASCII)** ```text sAN{SPC}LMCstandby{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 6E 64 62 79 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 41 4E 20 4C 4D 43 73 74 61 6E 64 62 79 20 00 49 ```
### Start Measurement [sMN LMCstartmeas] Start the laser and (unless in Standby mode) the motor of the device **Telegram structure: sMN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | **Example: sMN LMCstartmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstartmeas ``` ```text sMN LMCstartmeas ``` ```text sMN LMCstartmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 68 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 ``` **Telegram structure: sAN LMCstartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Start measurement | String | 12 | | `LMCstartmeas` | `4C 4D 43 73 74 61 72 74 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | Success:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstartmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstartmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 4C 4D 43 73 74 61 72 74 6D 65 61 73 20 00 44 ```
### Stop Measurement [sMN LMCstopmeas] Shut off the laser and the motor is running at the set up frequency. **Telegram structure: sMN LMCstopmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Stop measurement | String | 11 | | `LMCstopmeas` | `4C 4D 43 73 74 6F 70 6D 65 61 73` | **Example: sMN LMCstopmeas** **CoLa A (ASCII)** ```text sMN{SPC}LMCstopmeas ``` ```text sMN LMCstopmeas ``` ```text sMN LMCstopmeas ``` ```text 02 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 10 ``` ```text 73 4D 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 ``` **Telegram structure: sAN LMCstopmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Stop measurement | String | 11 | | `LMCstopmeas` | `4C 4D 43 73 74 6F 70 6D 65 61 73` | | Status code | Accepted when value is 0 | Enum_8 | 1 | No error:
Not allowed: | `0
1` | `00
01` | **Example: sAN LMCstopmeas** **CoLa A (ASCII)** ```text sAN{SPC}LMCstopmeas{SPC}0 ``` ```text 02 73 41 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 4C 4D 43 73 74 6F 70 6D 65 61 73 20 00 3C ```
### Autostart Measurement [sWN LMPautostartmeas] This parameter defines whether the scanner will start to rotate directly and measure when powering up or remain in idle mode. The changed setting (saved with the command sMN mEEWriteall, ) will be then be active with the next power-up cycle. In case autostart is deactivated, the sensor will remain in idle mode with the laser switched off and a motor speed depending on the Dynamic Sensing Profile . **Telegram structure: sWN LMPautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | | Status code | Activate / Deactivate Autostart | Bool_1 | 1 | Autostart off:
Autostart on: | `0
1` | `00
01` | **Example: sWN LMPautostartmeas 1** **CoLa A (ASCII)** ```text sWN{SPC}LMPautostartmeas{SPC}1 ``` ```text sWN LMPautostartmeas 1 ``` ```text sWN LMPautostartmeas 1 ``` ```text 02 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 4F ``` ```text 73 57 4E 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 01 ``` **Telegram structure: sWA LMDautostartmeas** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Autostart measurement | String | 16 | | `LMPautostartmeas` | `4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73` | **Example: sWA LMPautostartmeas** **CoLa A (ASCII)** ```text sWA{SPC}LMPautostartmeas ``` ```text 02 73 57 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 4C 4D 50 61 75 74 6F 73 74 61 72 74 6D 65 61 73 20 41 ```
### Set Sensitivity Mode [sWN SensitivityMode] Define a sensitivity mode for the detection of reflectors . **Telegram structure: sWN SensitivityMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sensitivity Mode | String | 15 | | `SensitivityMode` | `53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65` | | Sensitivity | Choose Sensitivity Mode | Enum_8 | 1 | Maximum robustness:
Standard (recommended):
Maximum detectivity: | `0
1
2` | `00
01
02` | **Example: sWN SensitivityMode** **CoLa A (ASCII)** ```text sWN{SPC}SensitivityMode{SPC}1 ``` ```text sWN SensitivityMode 1 ``` ```text sWN SensitivityMode 1 ``` ```text 02 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 01 05 ``` ```text 73 57 4E 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 01 ``` **Telegram structure: sWA SensitivityMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sensitivity Mode | String | 15 | | `SensitivityMode` | `53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65` | **Example: sWA SensitivityMode** **CoLa A (ASCII)** ```text sWA{SPC}SensitivityMode ``` ```text 02 73 57 41 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 53 65 6E 73 69 74 69 76 69 74 79 4D 6F 64 65 20 0B ```
### Set Performance Profile [sWN PerformanceProfileNumber] Define which Dynamic Sensing Profile shall be used, . **Telegram structure: sWN PerformanceProfileNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set Dynamic Sensing Profile | String | 24 | | `PerformanceProfileNumber` | `50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72` | | Performance Profile | Selection of Dynamic Sensing Profile | Enum_8 | 1 | Profile 1:
Profile 2:
Profile 3:
Profile 4:
Profile 5:
Profile 6:
Profile 7:
Profile 8:
Profile 9:
Profile 10:
Profile 11: | `1
2
3
4
5
6
7
8
9
10
11` | `01
02
03
04
05
06
07
08
09
0A
0B` | **Example: sWN PerformanceProfileNumber** **CoLa A (ASCII)** ```text sWN{SPC}PerformanceProfileNumber{SPC}2 ``` ```text sWN PerformanceProfileNumber 2 ``` ```text sWN PerformanceProfileNumber 2 ``` ```text 02 73 57 4E 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 57 4E 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 02 58 ``` ```text 73 57 4E 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 02 ``` **Telegram structure: sWA PerformanceProfileNumber** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set Performance Profile | String | 24 | | `PerformanceProfileNumber` | `50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72` | **Example: sWA PerformanceProfileNumber** **CoLa A (ASCII)** ```text sWA{SPC}PerformanceProfileNumber ``` ```text 02 73 57 41 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 41 20 50 65 72 66 6F 72 6D 61 6E 63 65 50 72 6F 66 69 6C 65 4E 75 6D 62 65 72 20 55 ```
### Activate Extended Range Mode [sWN EnableLongRangeMode] Extends the maximum scanning distance . **Telegram structure: sWN EnableLongRangeMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Enable extended range mode | String | 19 | | `EnableLongRangeMode` | `45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65` | | Status code | Activate / deactivate extended range mode | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | **Example: sWN EnableLongRangeMode 1** **CoLa A (ASCII)** ```text sWN{SPC}EnableLongRangeMode{SPC}1 ``` ```text sWN EnableLongRangeMode 1 ``` ```text sWN EnableLongRangeMode 1 ``` ```text 02 73 57 4E 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 57 4E 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 20 01 1C ``` ```text 73 57 4E 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 20 01 ``` **Telegram structure: sWA EnableLongeRangeModer** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Enable extended range mode | String | 19 | | `EnableLongRangeMode` | `45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65` | **Example: sWA EnableLongeRangeMode** **CoLa A (ASCII)** ```text sWA{SPC}EnableLongRangeMode ``` ```text 02 73 57 41 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 20 12 ```
### Read Status of Extended Range Mode [sRN EnableLongRangeMode] Read if the extended range mode is currently active. **Telegram structure: sRN EnableLongRangeMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read status of extended range mode | String | 19 | | `EnableLongRangeMode` | `45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65` | **Example: sRN EnableLongRangeMode** **CoLa A (ASCII)** ```text sRN{SPC}EnableLongRangeMode ``` ```text sRN EnableLongRangeMode ``` ```text sRN EnableLongRangeMode ``` ```text 02 73 52 4E 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 38 ``` ```text 73 52 4E 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 ``` **Telegram structure: sRA EnableLongRangeMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read status of extended range mode | String | 19 | | `EnableLongRangeMode` | `45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65` | | Status code | Status of extended range mode | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | **Example: sRA EnableLongRangeMode** **CoLa A (ASCII)** ```text sRA{SPC}EnableLongRangeMode{SPC}1 ``` ```text 02 73 52 41 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 41 20 45 6E 61 62 6C 65 4C 6F 6E 67 52 61 6E 67 65 4D 6F 64 65 20 01 16 ```
### Enable/ Disable LEDs [sWN LEDEnable] This command enables/ disables the LEDs of the device. **Telegram structure: sWN LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sWN` | `73 57 4E` | | Command | Set LEDs | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | | Status | Enable/ disable | Bool_1 | 1 | Off:
On: | `0
1` | `00
01` | **Example: sWN LEDEnable** **CoLa A (ASCII)** ```text sWN{SPC}LEDEnable{SPC}1 ``` ```text sWN LEDEnable 1 ``` ```text sWN LEDEnable 1 ``` ```text 02 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 01 07 ``` ```text 73 57 4E 20 4C 45 44 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA LEDEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set LEDs | String | 9 | | `LEDEnable` | `4C 45 44 45 6E 61 62 6C 65` | **Example: sWA LEDEnable** **CoLa A (ASCII)** ```text sWA{SPC}LEDEnable ``` ```text 02 73 57 41 20 4C 45 44 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 45 44 45 6E 61 62 6C 65 20 09 ```
### Read State of LEDs [sRN LEDState] Read the current state of the LEDs. **Telegram structure: sRN LEDState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sRN` | `73 52 4E` | | Command | Read state of LEDs | String | 8 | | `LEDState` | `4C 45 44 53 74 61 74 65` | **Example: sRN LEDState** **CoLa A (ASCII)** ```text sRN{SPC}LEDState ``` ```text sRN LEDState ``` ```text sRN LEDState ``` ```text 02 73 52 4E 20 4C 45 44 53 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 4C 45 44 53 74 61 74 65 55 ``` ```text 73 52 4E 20 4C 45 44 53 74 61 74 65 ``` **Telegram structure: sRA LEDState** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | State of LEDs | String | 8 | | `LEDState` | `4C 45 44 53 74 61 74 65` | | LED Color | - | Enum_8 | 1 | Green:
Yellow:
Red: | `0
1
2` | `00
01
02` | | LED behavior | - | Enum_8 | 1 | On:
Off:
Blinking:
Blinking fast:
Blinking delayed:
Find me active: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | LED ID | Name of the LED | String | 8 | | `LED1
LED2` | `4C 45 44 31
4C 45 44 32` | **Example: sRA LEDState** **CoLa A (ASCII)** ```text sRA{SPC}LEDState{SPC}2{SPC}0{SPC}0{SPC}LED2{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}0{SPC}LED1{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 4C 45 44 53 74 61 74 65 20 32 20 30 20 30 20 4C 45 44 32 00 00 00 00 20 31 20 30 20 4C 45 44 31 00 00 00 00 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 23 73 52 41 20 4C 45 44 53 74 61 74 65 20 00 02 00 00 4C 45 44 32 00 00 00 00 01 00 4C 45 44 31 00 00 00 00 7A ```
## Date and System Time
### Set Time Synchronization [sWN TSCRole] Set the device synchronization mode. **Telegram structure: sWN TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | | Status | Timestamp role | Uint_8 | 1 | Off:
NTP:
PTP: | `0
1
3` | `00
01
03` | **Example: sWN TSCRole** **CoLa A (ASCII)** ```text sWN{SPC}TSCRole{SPC}1 ``` ```text sWN TSCRole 1 ``` ```text sWN TSCRole 1 ``` ```text 02 73 57 4E 20 54 53 43 52 6F 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 1B ``` ```text 73 57 4E 20 54 53 43 52 6F 6C 65 20 01 ``` **Telegram structure: sWA TSCRole** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set timestamp role | String | 7 | | `TSCRole` | `54 53 43 52 6F 6C 65` | **Example: sWA TSCRole** **CoLa A (ASCII)** ```text sWA{SPC}TSCRole ``` ```text 02 73 57 41 20 54 53 43 52 6F 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 57 41 20 54 53 43 52 6F 6C 65 20 15 ```
### Set Time Stamp [sMN LSPsetdatetime] The data format in the telegram is: +2009{SPC}+7{SPC}+22{SPC}+12{SPC}+0{SPC}+0{SPC}+0.The numbers represent year, month, day, hour, minute, second, microsecond. If plus is used up-front the data it is interpreted as an integer decimal number, without the plus it's the scanner reads the data as hex format. The answer is always in ASCII format. Does only work if NTP- respectively PTP-Client is not active. There is no real time clock inside the device. When the scanner is switched off and after a reboot, the time has to be set again. Therefore, it is recommended to use a NTP or a PTP setting. **Telegram structure: sMN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Year | | Uint_16 | 2 | | `+1970d … +2099d (07B2h … 0833h)` | `07 B2 … 08 33` | | Month | | Uint_8 | 1 | | `+1d … +12d(01h … 0Ch)` | `01 … 0C` | | Day | | Uint_8 | 1 | | `+1d … +31d(01h … 1Fh)` | `00 … 1F` | | Hour | | Uint_8 | 1 | | `+0d … +23d(00h … 17h)` | `00 … 17` | | Minute | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Second | | Uint_8 | 1 | | `+0d … +59d(00h … 3Bh)` | `00 … 3B` | | Microsecond | | Uint_32 | 4 | | `+0d … +999999d(00000000h … 000F423Fh)` | `00 00 00 00 … 00 0F 42 3F` | **Example 1: sMN LSPsetdatetime Date: 17.02.2009; Time: 16:34** **CoLa A (ASCII)** ```text sMN{SPC}LSPsetdatetime{SPC}7D9{SPC}2{SPC}11{SPC}10{SPC}22{SPC}0{SPC}0 ``` ```text sMN LSPsetdatetime 7D9 2 11 10 22 0 0 ``` ```text sMN LSPsetdatetime 7D9 2 11 10 22 0 0 ``` ```text 02 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 37 44 39 20 32 20 31 31 20 31 30 20 32 32 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 D9 02 11 10 22 00 00 00 00 00 A3 ``` ```text 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 D9 02 11 10 22 00 00 00 00 00 ``` **Example 2: sMN LSPsetdatetime Date: 26.01.2010; Time: 10:35** **CoLa A (ASCII)** ```text sMN{SPC}LSPsetdatetime{SPC}+2010{SPC}+01{SPC}+26{SPC}+10{SPC}+35{SPC}0{SPC}0 ``` ```text sMN LSPsetdatetime +2010 +01 +26 +10 +35 0 0 ``` ```text sMN LSPsetdatetime +2010 +01 +26 +10 +35 0 0 ``` ```text 02 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 2B 32 30 31 30 20 2B 30 31 20 2B 32 36 20 2B 31 30 20 2B 33 35 20 2B 30 30 20 2B 30 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 DA 01 1A 0A 23 00 00 00 00 00 B3 ``` ```text 73 4D 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 07 DA 01 1A 0A 23 00 00 00 00 00 ``` **Telegram structure: sAN LSPsetdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set time stamp | String | 14 | | `LSPsetdatetime` | `4C 53 50 73 65 74 64 61 74 65 74 69 6D 65` | | Status code | Code number | Enum_8 | 1 | Success: | `0` | `00` | **Example 1, 2: sAN LSPsetdatetime** **CoLa A (ASCII)** ```text sAN{SPC}LSPsetdatetime{SPC}0 ``` ```text 02 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 41 4E 20 4C 53 50 73 65 74 64 61 74 65 74 69 6D 65 20 00 50 ``` Activate time stamp in the output string format or on SOPAS page “data processing”. **Set NTP (Network Time Protocol) Parameters**
### Set Time Server IP Address [sWN TSCTCSrvAddr] Define the IP address from which the device will receive the time synchronization. **Telegram structure: sWN TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | | IP address data | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00…FF)` | `00 … FF` | | IP address data | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sWN TSCTCSrvAddr 192.168.0.11** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCSrvAddr{SPC}C0{SPC}A8{SPC}00{SPC}0B ``` ```text sWN TSCTCSrvAddr C0 A8 00 0B ``` ```text sWN TSCTCSrvAddr C0 A8 00 0B ``` ```text 02 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 43 30 20 41 38 20 30 30 20 30 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B 3E ``` ```text 73 57 4E 20 54 53 43 54 43 53 72 76 41 64 64 72 20 C0 A8 00 0B ``` **Telegram structure: sWA TSCTCSrvAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time server IP address | String | 12 | | `TSCTCSrvAddr` | `54 53 43 54 43 53 72 76 41 64 64 72` | **Example: sWA TSCTCSrvAddr** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCSrvAddr ``` ```text 02 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 54 53 43 54 43 53 72 76 41 64 64 72 20 52 ```
### Set Time Zone [sWN TSCTCtimezone] **Telegram structure: sWN TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | | Time zone data | Select the time zone of the client | Enum_8 | 1 | List of time zones | `+0d … +104d (00h … 68h)` | `00 … 68` | **Time zone data Values CoLa (ASCII)** | Value | Time zone | Value | Time zone | Value | Time zone | | --- | --- | --- | --- | --- | --- | | 0 | DATE_LINE_STANDARD | 35 | MONROVIA_REYKJAVIK | 70 | MUMBAI_NEUDELHI | | 1 | COORD_WORLD_TIME_11 | 36 | AMSTERDAM_BERLIN_ROM | 71 | SRI_JAYAWARDENEPURA | | 2 | HAWAII | 37 | BELGRAD_BUDAPEST_PRAG | 72 | KATMANDU | | 3 | ALASKA | 38 | BRUESSEL_MADRID_PARIS | 73 | ASTANA | | 4 | CALIFORNIA | 39 | SARAJEVO_WARSCHAU | 74 | DAKKA | | 5 | USA_CANADA | 40 | WEST_CENTRAL_AFRICA | 75 | NOWOSIBIRSK | | 6 | ARIZONA | 41 | WINDHUK | 76 | YANGON | | 7 | LA_PAZ | 42 | AMMAN | 77 | BANGKOK_HANOI_JAKARTA | | 8 | MOUNTAIN_TIME_USA | 43 | ATHEN_BUKAREST | 78 | KRASNOJARSK | | 9 | CENTRAL_TIME_USA | 44 | BEIRUT | 79 | IRKUTSK | | 10 | MEXICO_CITY | 45 | DAMASCUS | 80 | KUALA_LUMPUR_SINGAPUR | | 11 | MIDDLE_AMERICA | 46 | HARARE_PRETORIA | 81 | PEKING_HONGKONG | | 12 | SASKATCHEWAN | 47 | HELSINKI_KIEW_RIGA | 82 | PERTH | | 13 | BOGOTA_LIMA | 48 | ISTANBUL | 83 | TAIPEH | | 14 | EASTERN_TIME_USA | 49 | JERUSALEM | 84 | ULAN_BATOR | | 15 | INDIANA | 50 | KAIRO | 85 | JAKUTSK | | 16 | CARACAS | 51 | KALININGRAD | 86 | OSAKA_TOKIO | | 17 | ASUNCION | 52 | EASTERN_EUROPE | 87 | SEOUL | | 18 | ATLANTIC_KANADA | 53 | TRIPOLIS | 88 | ADELAIDE | | 19 | CUIABA | 54 | BAGDAD | 89 | DARWIN | | 20 | LAPAZ_SANJUAN | 55 | KUWAIT_RIAD | 90 | BRISBANE | | 21 | SANTIAGO | 56 | MINSK | 91 | CANBERRA_SYDNEY | | 22 | NEUFUNDLAND | 57 | MOSKAU_PETERSBURG | 92 | GUAM_PORT_MORESBY | | 23 | BRASILIA | 58 | NAIROBI | 93 | HOBART | | 24 | BUENOS_AIRES | 59 | TEHERAN | 94 | MAGADAN | | 25 | CAYENNE_FORTALEZA | 60 | ABU_DHABI | 95 | WLADIWOSTOK | | 26 | GROENLAND | 61 | BAKU | 96 | SALOMONEN_KALEDONIEN | | 27 | MONTEVIDEO | 62 | ERIWAN | 97 | TSCHOKURDACH | | 28 | SALVADOR | 63 | ISCHEWSK_SAMARA | 98 | ANADYR | | 29 | COORD_WORLD_TIME_02 | 64 | PORT_LOUIS | 99 | AUCKLAND_WELLINGTON | | 30 | AZOREN | 65 | TIFLIS | 100 | FIDSCHI | | 31 | KAP_VERDE | 66 | KABUL | 101 | COORD_WORLD_TIME_12 | | 32 | CASABLANCA | 67 | ASCHGABET_TASCHKENT | 102 | NAKUALOFA | | 33 | DUBLIN_LISSABON_LONDON | 68 | ISLAMABAD_KARATSCHI | 103 | SAMOA | | 34 | COORD_WORLD_TIME | 69 | JEKATERINBURG | 104 | KIRITIMATI | **Example: sWN TSCTCtimezone Amsterdam, Berlin, Rom** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCtimezone{SPC}+36 ``` ```text sWN TSCTCtimezone +36 ``` ```text sWN TSCTCtimezone +36 ``` ```text 02 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 2B 33 36 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 16 ``` ```text 73 57 4E 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 24 ``` **Telegram structure: sWA TSCTCtimezone** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set time zone | String | 13 | | `TSCTCtimezone` | `54 53 43 54 43 74 69 6D 65 7A 6F 6E 65` | **Example: sWA TSCTCtimezone** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCtimezone ``` ```text 02 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 54 53 43 54 43 74 69 6D 65 7A 6F 6E 65 20 3D ```
### Set Update Time [sWN TSCTCupdatetime] Define the time period after which the sensor will attempt to get the current system time for the TSC server. **Telegram structure: sWN TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | | Update time of synchronization | Set values in seconds | Uint_32 | 4 | | `+1d … +3600d(01h … 0E10h)` | `00 00 00 00 … 00 00 0E 10` | **Example: sWN TSCTCupdatetime 600 s** **CoLa A (ASCII)** ```text sWN{SPC}TSCTCupdatetime{SPC}+600 ``` ```text sWN TSCTCupdatetime +600 ``` ```text sWN TSCTCupdatetime +600 ``` ```text 02 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 2B 36 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 67 ``` ```text 73 57 4E 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 00 00 02 58 ``` **Telegram structure: sWA TSCTCupdatetime** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set update time of synchronization | String | 15 | | `TSCTCupdatetime` | `54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65` | **Example: sWA TSCTCupdatetime** **CoLa A (ASCII)** ```text sWA{SPC}TSCTCupdatetime ``` ```text 02 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 41 20 54 53 43 54 43 75 70 64 61 74 65 74 69 6D 65 20 32 ```
## Filter
### Set Particle Filter [sWN LFPparticle] Filter out disturbances in the meausurement data caused by particles such as dust, snow flakes or similar . **Telegram structure: sWN LFPparticle** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set particle filter | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | | Status code | Code number | Bool_1 | 1 | Inactive:
Active: | `0
1` | `00
01` | | Threshold1) | Particle threshold in mm | Uint_16 | 2 | (must be taken) | `+500d (1F4h)` | `01 F4` | Never change the threshold here, it is taken by the device to handle the particles. **Example: sWN LFPparticle** **CoLa A (ASCII)** ```text sWN{SPC}LFPparticle{SPC}1{SPC}+500 ``` ```text sWN LFPparticle 1 +500 ``` ```text sWN LFPparticle 1 +500 ``` ```text 02 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 31 20 2B 35 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 01 01 F4 D0 ``` ```text 73 57 4E 20 4C 46 50 70 61 72 74 69 63 6C 65 20 01 01 F4 ``` **Telegram structure: sWA LFPparticle** | Telegram part | Description | Variable | Length | Sensor | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set particle filter | String | 11 | | `LFPparticle` | `4C 46 50 70 61 72 74 69 63 6C 65` | **Example: sWA LFPparticle** **CoLa A (ASCII)** ```text sWA{SPC}LFPparticle ``` ```text 02 73 57 41 20 4C 46 50 70 61 72 74 69 63 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 4C 46 50 70 61 72 74 69 63 6C 65 20 2B ```
### Set Echo Filter [sWN FREchoFilter] Only available with firmware versions > V1.10. Select which measurement value(s) shall be sent via LMDscandata if the measurement of one angular position returns several distance values **Telegram structure: sWN FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | | Status code | Code number | Enum_8 | 1 | First echo:
All echos:
Last echo: | `0
1
2` | `00
01
02` | **Example: sWN FREchoFilter** **CoLa A (ASCII)** ```text sWN{SPC}FREchoFilter{SPC}1 ``` ```text sWN FREchoFilter 1 ``` ```text sWN FREchoFilter 1 ``` ```text 02 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 7E ``` ```text 73 57 4E 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 01 ``` **Telegram structure: sWA FREchoFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set echo filter | String | 12 | | `FREchoFilter` | `46 52 45 63 68 6F 46 69 6C 74 65 72` | **Example: sWa FREchoFilter** **CoLa A (ASCII)** ```text sWA{SPC}FREchoFilter ``` ```text 02 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 46 52 45 63 68 6F 46 69 6C 74 65 72 20 70 ```
### Set Sensitivity Fog Filter [sWN MCSenseLevel] Filter out disturbances in the meausurement data caused by fog or steam. **Telegram structure: sWN MCSenseLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sense level | String | 12 | | `MCSenseLevel` | `4D 43 53 65 6E 73 65 4C 65 76 65 6C` | | Sensitivity level | Enable or disable fog filter and Sense Level | Uint_8 | 1 | Fog Filter off
Fog Filter on | `0
1` | `00
01` | **Example: sWN MCSenseLevel** **CoLa A (ASCII)** ```text sWN{SPC}MCSenseLevel{SPC}1 ``` ```text sWN MCSenseLevel 1 ``` ```text sWN MCSenseLevel 1 ``` ```text 02 73 57 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 01 7D ``` ```text 73 57 4E 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 01 ``` **Telegram structure: sWA MCSenseLevel** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sense level | String | 12 | | `MCSenseLevel` | `4D 43 53 65 6E 73 65 4C 65 76 65 6C` | **Example: sWA MCSenseLevel** **CoLa A (ASCII)** ```text sWA{SPC}MCSenseLevel ``` ```text 02 73 57 41 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 4D 43 53 65 6E 73 65 4C 65 76 65 6C 20 73 ```
### Set Moving Averaging Filter [sWN LFPmovingAveragingFilter] Enables the moving average filter **Telegram structure: sWN LFPmovingAveragingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | String | String | 24 | | `LFPmovingAveragingFilter` | `4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72` | | Variable Data 1 | Moving averaging is enabled | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00
01` | | Variable Data 2 | averaging depth | UInt | 2 | Minimum:
Maximum: | `+2d (02h)
+4d (0Ah)` | `00 02
00 04` | Disable the moving average filter and set averaging depth to 3 **Example: sWN LFPmovingAveragingFilter +0 +3** **CoLa A (ASCII)** ```text sWN{SPC}LFPmovingAveragingFilter{SPC}+0{SPC}+3 ``` ```text sWN LFPmovingAveragingFilter +0 +3 ``` ```text sWN LFPmovingAveragingFilter +0 +3 ``` ```text 02 73 57 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 2B 30 20 2B 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 57 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 00 00 03 41 ``` ```text 73 57 4E 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 00 00 03 ``` **Telegram structure: sWA LFPmovingAveragingFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | String | String | 24 | | `LFPmovingAveragingFilter` | `4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72` | **Example: sWA LFPmovingAveragingFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPmovingAveragingFilter ``` ```text 02 73 57 41 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 41 20 4C 46 50 6D 6F 76 69 6E 67 41 76 65 72 61 67 69 6E 67 46 69 6C 74 65 72 20 4D ```
## Contamination Indication
### Set Contamination Indication Settings [sWN ContaminationConfig] Define how and under which conditions the device shall indicate a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sWN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | No output:
All sectors contaminated:
One sector contaminated: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | Value range 3 ... 60
Default: 3 | `+3d … +60d (03h … 3Ch)` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | High:
Medium:
Low: | `0
1
2` | `00
01
02` | | Sector preselection | Selection of either custom sectors or used weather protection hood | Enum_8 | 1 | All sectors:
Weather protection hood:
Custom sectors: | `0
6
255d (FFh)` | `00
06
FF` | | Length | | UInt_16 | 2 | Always: | `7` | `00 07` | | Custom sectors | Enable/ disable individual sectors when custom sectors got selected in Sector preselection | Array | 7 | Active: 1
Inactive: 0
Default value of all sectors is active | `0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1` | `00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01` | | Enable Warning | Warning monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | | Enable Error | Error monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | **Example: sWN ContaminationConfig One sector contaminated, response time 60 seconds, sensitivity low, weather protection hood, enable warning, enable error** **CoLa A (ASCII)** ```text sWN{SPC}ContaminationConfig{SPC}2{SPC}3C{SPC}2{SPC}6{SPC}7{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text sWN ContaminationConfig 2 3C 2 6 7 1 1 1 1 1 1 1 1 1 ``` ```text sWN ContaminationConfig 2 3C 2 6 7 1 1 1 1 1 1 1 1 1 ``` ```text 02 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 32 20 33 43 20 32 20 36 20 37 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 28 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 02 00 3C 02 06 00 07 01 01 01 01 01 01 01 01 01 3C ``` ```text 73 57 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 02 00 3C 02 06 00 07 01 01 01 01 01 01 01 01 01 ``` **Telegram structure: sWA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Example: sWA ContaminationConfig** **CoLa A (ASCII)** ```text sWA{SPC}ContaminationConfig ``` ```text 02 73 57 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 0F ```
### Read Contamination Indication Settings [sRN ContaminationConfig] Reads the current contamination settings that define how and under which conditions the device indicates a potential contamination of the optics cover to enable preventive cleaning. **Telegram structure: sRN ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | **Example: sRN ContaminationConfig** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationConfig ``` ```text sRN ContaminationConfig ``` ```text sRN ContaminationConfig ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 25 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 ``` **Telegram structure: sRA ContaminationConfig** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationConfig` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67` | | Strategy | Strategy code | Enum_8 | 1 | No output:
All sectors contaminated:
One sector contaminated: | `0
1
2` | `00
01
02` | | Response time | How fast (in seconds) the sensor reacts after a contamination | Uint_16 | 2 | Value range 3 ... 60
Default: 3 | `03h … 3Ch` | `00 03 … 00 3C` | | Threshold warning | Sensitivity | Enum_8 | 1 | High:
Medium:
Low: | `0
1
2` | `00
01
02` | | Sector preselection | Selection of either custom sectors or used weather protection hood | Enum_8 | 1 | All sectors:
Weather protection hood:
Custom sectors: | `0
6
FF` | `00
06
FF` | | Length | | UInt_16 | 2 | Always: | `7` | `00 07` | | Custom sectors | Enable/ disable individual sectors when custom sectors got selected in Sector preselection | Array | 7 | Active: 1
Inactive: 0
Default value of all sectors is active | `0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1
0 ... 1` | `00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01
00 ... 01` | | Enable Warning | Warning monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | | Enable Error | Error monitoring | Bool_1 | 1 | Off (False):
On (True): | `0
1` | `00
01` | **Example: sRA ContaminationConfig No output, response time 3 sec, All sectors active, warning enabled, error enabled** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationConfig{SPC}0{SPC}3{SPC}0{SPC}0{SPC}7{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 30 20 33 20 30 20 30 20 37 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 28 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 43 6F 6E 66 69 67 20 00 00 03 00 00 00 07 01 01 01 01 01 01 01 01 01 0F ```
### Read Contamination Indication Data [sRN ContaminationData] Get the current contamination indication data. **Telegram structure: sRN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Reading status of all contamination sectors | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | **Example: sRN ContaminationData** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationData ``` ```text sRN ContaminationData ``` ```text sRN ContaminationData ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 3F ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 ``` **Telegram structure: sRA ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Reading status of all contamination sectors | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Number of contamination sectors | | Uint_16 | 2 | Always: | `7` | `00 07` | | Contamination data | Status of contamination of each sector | Array of Enum_8 | 7 | Blocked:
Clean:
Warning:
Error: | `0
1
2
3` | `00
01
02
03` | **Example: sRA ContaminationData** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationData{SPC}7{SPC}2{SPC}1{SPC}2{SPC}3{SPC}2{SPC}1{SPC}2 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 37 20 32 20 31 20 32 20 33 20 32 20 31 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 00 07 02 01 02 03 02 01 02 14 ```
### Send Contamination Indication Data Permanently [sEN ContaminationData] Provides continuous contamination indication data for the individual sectors of the optical cover. When a change in contamination is detected in any sector, the current contamination status of all sectors will be transmitted **Telegram structure: sEN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sEN` | `73 45 4E` | | Command | Get the contamination indication data continuously | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationData** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationData{SPC}1 ``` ```text sEN ContaminationData 1 ``` ```text sEN ContaminationData 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 09 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 01 ``` **Telegram structure: sSN ContaminationData** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Get the contamination indication data continuously | String | 17 | | `ContaminationData` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61` | | Number of contamination sectors | | Uint_16 | 2 | Always: | `7` | `00 07` | | Contamination data | Status of contamination of each sector | Array of Enum_8 | 7 | Blocked:
Clean:
Warning:
Error: | `0
1
2
3` | `00
01
02
03` | **Example: sSN ContaminationData** **CoLa A (ASCII)** ```text sSN{SPC}ContaminationData{SPC}7{SPC}0{SPC}0{SPC}0{SPC}2{SPC}2{SPC}1{SPC}1 ``` ```text 02 73 53 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 37 20 30 20 30 20 30 20 32 20 32 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 53 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 44 61 74 61 20 00 07 00 00 00 02 02 01 01 19 ```
### Read Contamination Indication Result [sRN ContaminationResult] This telegram is intended to read the contamination result. The telegram returns two Boolean. One for warning and one for error. Depending on the strategy of the contamination indication the state changes if one or all sectors are in the specific status (warning or error). **Telegram structure: sRN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN ContaminationResult** **CoLa A (ASCII)** ```text sRN{SPC}ContaminationResult ``` ```text sRN ContaminationResult ``` ```text sRN ContaminationResult ``` ```text 02 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 26 ``` ```text 73 52 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Contamination Result | Warning | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | | Contamination Result | Error | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sRA ContaminationResult warning inactive error inactive** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 00 09 ```
### Send Contamination Indication Result Permanently [sEN ContaminationResult] This telegram is intended to activate the event for read the contamination result permanently. The telegram returns two Boolean. One for warning and one for error. Depending on the strategy of the contamination indication the state changes if one or all sectors are in the specific status (warning or error). **Telegram structure: sEN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sEN` | `73 52 4E` | | Command | | String | 19 | | `ContaminationResult` | `43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74` | | Data | Start/ Stop | Bool_1 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN ContaminationResult** **CoLa A (ASCII)** ```text sEN{SPC}ContaminationResult{SPC}1 ``` ```text sEN ContaminationResult 1 ``` ```text sEN ContaminationResult 1 ``` ```text 02 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 10 ``` ```text 73 45 4E 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sSN ContaminationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Contamination Result | Warning | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | | Contamination Result | Error | Bool_1 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sSN ContaminationResult warning active error inactive** **CoLa A (ASCII)** ```text sRA{SPC}ContaminationResult{SPC}1{SPC}0 ``` ```text 02 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 43 6F 6E 74 61 6D 69 6E 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 00 08 ```
### Set Treat Blocked Sectors as Error Sectors [sWN treatBlockedSectorsAsErrorSectors] If enabled, blocked sectors get interpreted as error sectors for contamination strategy evaluation. **Telegram structure: sWN treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | treatBlockedSectorsAsErrorSectors | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | | Value | Enable/ disable Treat Blocked Sectors As Error Sectors | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sWN{SPC}treatBlockedSectorsAsErrorSectors{SPC}1 ``` ```text sWN treatBlockedSectorsAsErrorSectors 1 ``` ```text sWN treatBlockedSectorsAsErrorSectors 1 ``` ```text 02 73 57 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 57 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 01 3F ``` ```text 73 57 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 01 ``` **Telegram structure: sWA treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | **Example: sWA treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sWA{SPC}treatBlockedSectorsAsErrorSectors ``` ```text 02 73 57 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 57 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 11 ```
### Read Treat Blocked Sectors as Error Sectors [sRN treatBlockedSectorsAsErrorSectors] Returns the state if blocked sectors are treated as error sectors for contamination strategy evaluation. **Telegram structure: sRN treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | treatBlockedSectorsAsErrorSectors | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | **Example: sRN treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sRN{SPC}treatBlockedSectorsAsErrorSectors ``` ```text sRN treatBlockedSectorsAsErrorSectors ``` ```text sRN treatBlockedSectorsAsErrorSectors ``` ```text 02 73 52 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 25 73 52 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 1B ``` ```text 73 52 4E 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 ``` **Telegram structure: sRA treatBlockedSectorsAsErrorSectors** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | treatBlockedSectorsAsErrorSectors | String | 33 | | `treatBlockedSectorsAsErrorSectors` | `74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73` | | Value | State of Treat Blocked Sectors As Error Sectors (disabled/ enabled) | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sRA treatBlockedSectorsAsErrorSectors** **CoLa A (ASCII)** ```text sRA{SPC}treatBlockedSectorsAsErrorSectors{SPC}1 ``` ```text 02 73 52 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 27 73 52 41 20 74 72 65 61 74 42 6C 6F 63 6B 65 64 53 65 63 74 6F 72 73 41 73 45 72 72 6F 72 53 65 63 74 6F 72 73 20 01 35 ```
## Ethernet
### Set IP Address [sWN EIIpAddr] Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | | IP address | Set values | Uint_8 | 1 | First part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | | IP address | Set values | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 ... FF)` | `00 … FF` | **Example: sWN EIIpAddr 192.168.0.2** **CoLa A (ASCII)** ```text sWN{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}0{SPC}2 ``` ```text sWN EIIpAddr C0 A8 0 2 ``` ```text sWN EIIpAddr C0 A8 0 2 ``` ```text 02 73 57 4E 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 06 ``` ```text 73 57 4E 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 ``` **Telegram structure: sWA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | **Example: sWA EIIpAddr** **CoLa A (ASCII)** ```text sWA{SPC}EIIpAddr ``` ```text 02 73 57 41 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 41 20 45 49 49 70 41 64 64 72 20 63 ```
### Read IP Address [sRN EIIpAddr] Read the IP address of the device. **Telegram structure: sRN EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | **Example: sRN EIIpAddr** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddr ``` ```text sRN EIIpAddr ``` ```text sRN EIIpAddr ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 45 49 49 70 41 64 64 72 49 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 ``` **Telegram structure: sRA EIIpAddr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address | String | 8 | | `EIIpAddr` | `45 49 49 50 41 64 64 72` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sRA EIIpAddr 192.168.0.2** **CoLa A (ASCII)** ```text sRA{SPC}EIIpAddr{SPC}C0{SPC}A8{SPC}00{SPC}02 ``` ```text 02 73 52 41 20 45 49 49 70 41 64 64 72 20 43 30 20 41 38 20 30 30 20 30 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 45 49 49 70 41 64 64 72 20 C0 A8 00 02 0C ```
### Read IP Address Assigned by DHCP [sRN EIIpAddrDHCP] DHCP needs to be set as mode for ethernet assignment. **Telegram structure: sRN EIIpAddrDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP address assigned by DHCP | String | 12 | | `EIIpAddrDHCP` | `45 49 49 70 41 64 64 72 44 48 43 50` | **Example: sRN EIIpAddrDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EIIpAddrDHCP ``` ```text sRN EIIpAddrDHCP ``` ```text sRN EIIpAddrDHCP ``` ```text 02 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 56 ``` ```text 73 52 4E 20 45 49 49 70 41 64 64 72 44 48 43 50 ``` **Telegram structure: sRA EIIpAddrDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP address assigned by DHCP | String | 12 | | `EIIpAddrDHCP` | `45 49 49 70 41 64 64 72 44 48 43 50` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | First part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Second part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Third part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | | IP address | Default: 192.168.0.1 | Uint_8 | 1 | Fourth part of IP address | `0 …+255d (00 … FF)` | `00 … FF` | **Example: sRA EIIpAddrDHCP 192.168.0.1** **CoLa A (ASCII)** ```text sRA{SPC}EIIpAddrDHCP{SPC}C0{SPC}A8{SPC}0{SPC}1 ``` ```text 02 73 52 41 20 45 49 49 70 41 64 64 72 44 48 43 50 20 43 30 20 41 38 20 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 41 20 45 49 49 70 41 64 64 72 44 48 43 50 20 C0 A8 00 01 10 ```
### Set Mode for Ethernet Address Assignment [sWN EIAddrMode] This Command determines the mode for the ethernet address assignment. **Telegram structure: sWN EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set mode for ethernet address assignment | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | | Ethernet address assignment | Static IP address / DHCP | Enum_8 | 1 | Static:
DHCP: | `0
1` | `00
01` | **Example: sWN EIAddrMode** **CoLa A (ASCII)** ```text sWN{SPC}EIAddrMode{SPC}1 ``` ```text sWN EIAddrMode 1 ``` ```text sWN EIAddrMode 1 ``` ```text 02 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 01 77 ``` ```text 73 57 4E 20 45 49 41 64 64 72 4D 6F 64 65 20 01 ``` **Telegram structure: sWA EIAddrMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set mode for ethernet address assignment | String | 10 | | `EIAddrMode` | `45 49 41 64 64 72 4D 6F 64 65` | **Example: sWA EIAddrMode** **CoLa A (ASCII)** ```text sWA{SPC}EIAddrMode ``` ```text 02 73 57 41 20 45 49 41 64 64 72 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 41 20 45 49 41 64 64 72 4D 6F 64 65 20 79 ```
### Set Fallback for DHCP [sWN EIDHCPFallback] This Command determines the fallback when DHCP is not successful. **Telegram structure: sWN EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set fallback for DHCP | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | | Fallback ethernet address assignment | Use Static IP address / Retry DHCP | Enum_8 | 1 | Static IP address:
DHCP retry: | `0
1` | `00
01` | **Example: sWN EIDHCPFallback** **CoLa A (ASCII)** ```text sWN{SPC}EIDHCPFallback{SPC}1 ``` ```text sWN EIDHCPFallback 1 ``` ```text sWN EIDHCPFallback 1 ``` ```text 02 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 01 54 ``` ```text 73 57 4E 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 01 ``` **Telegram structure: sWA EIDHCPFallback** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set fallback for DHCP | String | 14 | | `EIDHCPFallback` | `45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B` | **Example: sWA EIDHCPFallback** **CoLa A (ASCII)** ```text sWA{SPC}EIDHCPFallback ``` ```text 02 73 57 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 45 49 44 48 43 50 46 61 6C 6C 62 61 63 6B 20 5A ```
### Set Ethernet Gateway [sWN EIgate] Change Ethernet gateway IP address (TCP/IP) Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Set values | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | | Gateway address | Set values | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EIgate 192.168.0.1** **CoLa A (ASCII)** ```text sWN{SPC}EIgate{SPC}C0{SPC}A8{SPC}00{SPC}01 ``` ```text sWN EIgate C0 A8 00 01 ``` ```text sWN EIgate C0 A8 00 01 ``` ```text 02 73 57 4E 20 45 49 67 61 74 65 20 43 30 20 41 38 20 30 30 20 30 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 67 61 74 65 20 C0 A8 00 01 18 ``` ```text 73 57 4E 20 45 49 67 61 74 65 20 C0 A8 00 01 ``` **Telegram structure: sWA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sWA EIgate** **CoLa A (ASCII)** ```text sWA{SPC}EIgate ``` ```text 02 73 57 41 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 67 61 74 65 20 7E ```
### Read Ethernet Gateway [sRN EIgate] Read for the Ethernet gateway (TCP/IP) **Telegram structure: sRN EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | **Example: sRN EIgate** **CoLa A (ASCII)** ```text sRN{SPC}EIgate ``` ```text sRN EIgate ``` ```text sRN EIgate ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 67 61 74 65 54 ``` ```text 73 52 4E 20 45 49 67 61 74 65 ``` **Telegram structure: sRA EIgate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read gateway address | String | 6 | | `EIgate` | `45 49 67 61 74 65` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIgate 192.168.0.1** **CoLa A (ASCII)** ```text sRA{SPC}EIgate{SPC}C0{SPC}A8{SPC}00{SPC}01 ``` ```text 02 73 52 41 20 45 49 67 61 74 65 20 43 30 20 41 38 20 30 30 20 30 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 45 49 67 61 74 65 20 C0 A8 00 01 12 ```
### Read Ethernet Gateway IP Address Assigned by DHCP [sRN EIgateDHCP] DHCP needs to be set as mode for ethernet assignment. Read for the ethernet gateway IP address which was assigned by DHCP. **Telegram structure: sRN EIgateDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read ethernet gateway IP address assigned by DHCP | String | 6 | | `EIgateDHCP` | `45 49 67 61 74 65 44 48 43 50` | **Example: sRN EIgateDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EIgateDHCP ``` ```text sRN EIgateDHCP ``` ```text sRN EIgateDHCP ``` ```text 02 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 4B ``` ```text 73 52 4E 20 45 49 67 61 74 65 44 48 43 50 ``` **Telegram structure: sRA EIgateDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read ethernet gateway IP address assigned by DHCP | String | 6 | | `EIgateDHCP` | `45 49 67 61 74 65 44 48 43 50` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | First part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Second part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Third part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | | Gateway IP address | Default: 0.0.0.0 | Uint_8 | 1 | Fourth part of gateway IP address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIgateDHCP 0.0.0.0** **CoLa A (ASCII)** ```text sRA{SPC}EIgateDHCP{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 49 67 61 74 65 44 48 43 50 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 67 61 74 65 44 48 43 50 20 00 00 00 00 64 ```
### Set IP Mask [sWN EImask] Define the subnet mask of the device. Save permanently to set values. Changes will be active after rebooting the device. Settings must correspond with network in which scanner is used. Else device cannot be found any more. **Telegram structure: sWN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Set values | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | | IP mask | Set values | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 …FF` | **Example: sWN EImask 255.255.254.0** **CoLa A (ASCII)** ```text sWN{SPC}EImask{SPC}FF{SPC}FF{SPC}FE{SPC}00 ``` ```text sWN EImask FF FF FE 00 ``` ```text sWN EImask FF FF FE 00 ``` ```text 02 73 57 4E 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 45 20 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FE 00 8C ``` ```text 73 57 4E 20 45 49 6D 61 73 6B 20 FF FF FE 00 ``` **Telegram structure: sWA EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sWA EImask** **CoLa A (ASCII)** ```text sWA{SPC}EImask ``` ```text 02 73 57 41 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0B 73 57 41 20 45 49 6D 61 73 6B 20 7D ```
### Read IP Mask [sRN EImask] Read the subnet mask of the device. **Telegram structure: sRN EImask** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | **Example: sRN EImask** **CoLa A (ASCII)** ```text sRN{SPC}EImask ``` ```text sRN EImask ``` ```text sRN EImask ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 45 49 6D 61 73 6B 57 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B ``` **Telegram structure: sRA EImask** | Telegram part | Description | Variable | Length | Sensor | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask | String | 6 | | `EImask` | `45 49 6D 61 73 6B` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EImask 255.255.254.0** **CoLa A (ASCII)** ```text sRA{SPC}EImask{SPC}FF{SPC}FF{SPC}FE{SPC}00 ``` ```text 02 73 52 41 20 45 49 6D 61 73 6B 20 46 46 20 46 46 20 46 45 20 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 45 49 6D 61 73 6B 20 FF FF FE 00 86 ```
### Read IP Mask Assigned by DHCP [sRN EImaskDHCP] DHCP needs to be set as mode for ethernet assignment. Read for the IP mask which was assigned by DHCP. **Telegram structure: sRN EImaskDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read IP mask assigned by DHCP | String | 10 | | `EImaskDHCP` | `45 49 6D 61 73 6B 44 48 43 50` | **Example: sRN EImaskDHCP** **CoLa A (ASCII)** ```text sRN{SPC}EImaskDHCP ``` ```text sRN EImaskDHCP ``` ```text sRN EImaskDHCP ``` ```text 02 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 48 ``` ```text 73 52 4E 20 45 49 6D 61 73 6B 44 48 43 50 ``` **Telegram structure: sRA EImaskDHCP** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read IP mask assigned by DHCP | String | 10 | | `EImaskDHCP` | `45 49 6D 61 73 6B 44 48 43 50` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | First part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Second part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Third part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | | IP mask | Default: 255.255.255.0 | Uint_8 | 1 | Fourth part of IP mask | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EImaskDHCP 255.255.255.0** **CoLa A (ASCII)** ```text sRA{SPC}EImaskDHCP{SPC}FF{SPC}FF{SPC}FF{SPC}0 ``` ```text 02 73 52 41 20 45 49 6D 61 73 6B 44 48 43 50 20 46 46 20 46 46 20 46 46 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 6D 61 73 6B 44 48 43 50 20 FF FF FF 00 98 ```
### Read MAC Address [sRN EIMacAdr] Read the MAC address of the device. **Telegram structure: sRN EIMacAdr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read MAC address of the device | String | 8 | | `EIMacAdr` | `45 49 4D 61 63 41 64 72` | **Example: sRN EIMacAdr** **CoLa A (ASCII)** ```text sRN{SPC}EIMacAdr ``` ```text sRN EIMacAdr ``` ```text sRN EIMacAdr ``` ```text 02 73 52 4E 20 45 49 4D 61 63 41 64 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 45 49 4D 61 63 41 64 72 5B ``` ```text 73 52 4E 20 45 49 4D 61 63 41 64 72 ``` **Telegram structure: sRA EIMacAdr** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read MAC address of the device | String | 8 | | `EIMacAdr` | `45 49 4D 61 63 41 64 72` | | MAC address | Values | Uint_8 | 1 | First part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Second part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Third part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Fourth part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Fifth part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | | MAC address | Values | Uint_8 | 1 | Sixth part of MAC address | `0 …+255d (00…FF)` | `00 … FF` | **Example: sRA EIMacAdr 00:06:77:22:40:EA** **CoLa A (ASCII)** ```text sRA{SPC}EIMacAdr{SPC}0{SPC}6{SPC}77{SPC}22{SPC}40{SPC}EA ``` ```text 02 73 52 41 20 45 49 4D 61 63 41 64 72 20 30 20 36 20 37 37 20 32 32 20 34 30 20 45 41 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 45 49 4D 61 63 41 64 72 20 00 06 77 22 40 EA 8D ```
### Apply Configured Ethernet Settings [sMN mEthUpdt] Apply the configured ethernet settings. **Telegram structure: sMN mEthUpdt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Apply ethernet settings | String | 8 | | `mEthUpdt` | `6D 45 74 68 55 70 64 74` | **Example: sMN mEthUpdt** **CoLa A (ASCII)** ```text sMN{SPC}mEthUpdt ``` ```text sMN mEthUpdt ``` ```text sMN mEthUpdt ``` ```text 02 73 4D 4E 20 6D 45 74 68 55 70 64 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 4D 4E 20 6D 45 74 68 55 70 64 74 51 ``` ```text 73 4D 4E 20 6D 45 74 68 55 70 64 74 ``` **Telegram structure: sAN mEthUpdt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Apply ethernet settings | String | 8 | | `mEthUpdt` | `6D 45 74 68 55 70 64 74` | **Example: sAN mEthUpdt** **CoLa A (ASCII)** ```text sAN{SPC}mEthUpdt ``` ```text 02 73 41 4E 20 6D 45 74 68 55 70 64 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 41 4E 20 6D 45 74 68 55 70 64 74 20 7D ```
## Inputs and Outputs
### Read State of the Ports [sRN LIDportstate] LIDportstate has to be available additionally or as successor of the LIDoutputstate telegram. Valid for all sensors with Ethernet and ports (inputs / outputs). **Telegram structure: sRN LIDportstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 12 | | `LIDportstate` | `4C 49 44 70 6F 72 74 73 74 61 74 65` | **Example: sRN LIDportstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDportstate ``` ```text sRN LIDportstate ``` ```text sRN LIDportstate ``` ```text 02 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 60 ``` ```text 73 52 4E 20 4C 49 44 70 6F 72 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDportstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Port state | String | 12 | | `LIDportstate` | `4C 49 44 70 6F 72 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | Current version: | `0 … FFFFh
0` | `00 01 … FF FF` | | Status code | System counter (time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0 … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | ARRAY which defines the number of internal ports* | 0...n | Uint_16 | 2 | Hex:
Not available:
Number of ports: | `0000 - FFFF
00
01 ... n` | `00 00 - FF FF` | | State of the ports and count value in hex | Internal port state | Enum_8 | 1 | Output voltage low:(Relays open)
Output voltage high:(Relays closed)
Tri-state:
Input voltage high (level):Input voltage from low to high (edge)
Input voltage low (level):Input voltage high to low (edge) | `00
01
02
03
04` | `00
01
02
03
04` | | State of the ports and count value in hex | Internal port counter | Uint_32 | 4 | | `0 … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | | ….. | | | | | | | ARRAY which defines the number of external or virtual ports* | 0...n | Uint_16 | 1 | Hex:
Not available:
Number of ports: | `00 00 - FF FF
00
01 ... n` | `00 00 - FF FF` | | State of the ports and count value in hex | External port state | Enum_8 | 1 | Output voltage low:(Relays open)
Output voltage high:(Relays closed)
Tri-state:
Input voltage high (level):Input voltage from low to high (edge)
Input voltage low (level):Input voltage high to low (edge) | `00
01
02
03
04` | `00
01
02
03
04` | | State of the ports and count value in hex | External port counter | Uint_32 | 4 | | `0 … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time | States code | Enum_16 | 1 | No time data:
Time data: | `00 00
00 01` | `00 00
00 01` | | Time Block (sensor time from the last change of min. one of the outputs) | Year | Array | 2 | E.g. | `1970` | `07 B2` | | Time Block (sensor time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block (sensor time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block (sensor time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block (sensor time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block (sensor time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block (sensor time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` | Inputs/outputs: If the device has separate inputs and outputs (instead of general purpose ports) the ARRAY shall start with inputs followed by the outputs. Virtual ports are ports that can be used to expand the number of ports but are not physically available. They just show up in the corresponding ethernet telegrams (like LIDportstate). Tri-State: Port is neither input nor output; the port is set inactive in SOPAS **Example: sRA LIDportstate** **CoLa A (ASCII)** ```text sRA{SPC}LIDportstate{SPC}0{SPC}3340BBDA{SPC}1{SPC}0{SPC}1{SPC}0{SPC}4{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}2{SPC}25{SPC}1D{SPC}C6F98 ``` ```text 02 73 52 41 20 4C 49 44 70 6F 72 74 73 74 61 74 65 20 30 20 33 33 34 30 42 42 44 41 20 31 20 30 20 31 20 30 20 34 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 37 42 32 20 31 20 31 20 32 20 32 35 20 31 44 20 43 36 46 39 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 74 73 52 41 20 4C 49 44 70 6F 72 74 73 74 61 74 65 20 00 00 33 40 BB DA 01 00 00 00 00 01 00 00 00 00 04 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 00 01 07 B2 01 01 02 25 1D 00 0C 6F 98 2E ```
### Read Port Configuration of All I/Os [sRN PortConfiguration] Read the configuration of the digital inputs and outputs. **Telegram structure: sRN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Ask for port configuration | String | 12 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN PortConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}PortConfiguration ``` ```text sRN PortConfiguration ``` ```text sRN PortConfiguration ``` ```text 02 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 26 ``` ```text 73 52 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Configuration of all I/Os | String | 12 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Start of loop, number of loops = amount of all current and future Inputs and Outputs of device family | | | | | | | | Port Type | Input or Output | Enum_8 | 1 | Input:
Output: | `0
1` | `00
01` | | Port Name | Amount of characters of the following port name | Uint_16 | 2 | | `0h … 20h` | `00 00 … 00 20` | | Port Name | Port name | String | 16
(depending on string length) | | `[Port name]` | `[Port name]` | | Input Settings | | | | | | | | Logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Debouncing | Select debouncing time in ms | Uint_16 | 2 | (max. 10,000ms) | `0h … 2710h` | `00 00 … 27 10` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Reserved | Reserved value 1 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 2 | Uint_16 | 2 | | `0` | `00 00` | | Output Settings | | | | | | | | Logic | Logic of the input | Bool_1 | 1 | Active high:
Active low: | `0
1` | `00
01` | | Output Mode | PNP, NPN or Push-Pull | Enum_8 | 1 | PNP:
NPN:
Push-Pull: | `0
1
2` | `00
01
02` | | Restart type | Restart behavior of output after event: immediately or after specific time | Enum_8 | 1 | Immediately:
Time:
Input: | `0
1
2` | `00
01
02` | | Restart time | [Only with restart type = Time], time in ms | Uint_32 | 4 | (20 ms … 600,000 ms) | `14h … 927C0h` | `00 00 00 14 … 00 09 27 C0` | | Restart input | [Only with restart type = Input], input for restart | Uint_16 | 2 | | `1 ... 8` | `00 01 ... 00 08` | | Combination | Combining multiple Events and/or Inputs | Enum_8 | 1 | AND:
OR:
XOR: | `0
1
2` | `00
01
02` | | Reserved | Reserved value 3 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 4 | Uint_16 | 2 | | `0` | `00 00` | | Sources | Amount (n) of combined sources | Uint_16 | 2 | | `0h ... FFFFh` | `00 00 ... FF FF` | | Sources | Start of source loop, number of loops = amount of combined sources | | | | | | | Sources | Source name | String | 4 | Device Ready:
Sopas Command:(xx = Number of output port)
Indexsignal:
SyncOutByClock:
Input = Port Name:(INxx = Number of input port) | `[Source]
DRDY
SCxx
SROT
SCLK
INxx` | `[Source]` | | Sources | Source Inverted or not | Bool_1 | 1 | Not inverted:
Inverted: | `0
1` | `00
01` | | Sources | Reserved value 5 | Uint_8 | 1 | | `0` | `00` | | Sources | Reserved value 6 | Uint_8 | 1 | | `0` | `00` | | Sources | Stop of source loop | | | | | | | Reserved | Reserved value 7 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 8 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 9 | Uint_16 | 2 | | `0` | `00 00` | | Reserved | Reserved value 10 | Uint_16 | 2 | | `0` | `00 00` | | Stop of loop | | | | | | | **Example: sRA PortConfiguration** **CoLa A (ASCII)** ```text sRA{SPC}PortConfiguration{SPC}1{SPC}6{SPC}InOut1{SPC}0{SPC}A{SPC}0{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut2{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut3{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut4{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut5{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut6{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut7{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut8{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sRA PortConfiguration 1 6 InOut1 0 A 0 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut2 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 0 6 InOut3 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut4 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut5 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut6 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 1 6 InOut7 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut8 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 ``` ```text sRA PortConfiguration 1 6 InOut1 0 A 0 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut2 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 0 6 InOut3 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut4 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut5 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut6 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 1 6 InOut7 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut8 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 01 7A 73 52 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 00 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 ``` ```text 73 52 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 00 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 ```
### Set Port Configuration [sWN PortConfiguration] Configuration of the given ports. Telegram structure represents the configuration of 1 port. If the device has multiple ports, use the same structure. **Telegram structure: sWN PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Configuration of the given ports | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Port Type | Input or Output | Enum_8 | 1 | Input:
Output: | `+0d (0h)
+1d (1h)` | `00
01` | | Name | Name of the port | FlexString | 9
(0..32) | Default: | `InOut1` | `00 06 49 6E 4F 75 74 31 00` | | Input Settings | | | | | | | | Logic | Logic of the input | Enum_8 | 1 | Active high:
Active low: | `+0d (0h)
+1d (1h)` | `00
01` | | Debounce | Select debouncing time in ms | Uint_8 | 1 | | `+0d ... +255d (0h … FFh)` | `00 … FF` | | Reserved | - | Enum_8 | 1 | Always: | `+0d (0h)` | `00` | | Reserved1 | | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved2 | | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Output Settings | | | | | | | | Logic | Definition of the output logic | Enum_8 | 1 | Active high:
Active low: | `+0d (0h)
+1d (1h)` | `00
01` | | Output Mode | Set kind of mode for output pin | Enum_8 | 1 | PNP:
NPN:
Push-Pull: | `0
1
2` | `00
01
02` | | Restart Type | Defines type of restart to be used | Enum_8 | 1 | Immediately:
Time: | `+0d (0h)
+1d (1h)` | `00
01` | | Restart Time | [Only with restart type = Time], time in ms | Uint_32 | 4 | (20 ms … 600,000 ms) | `+20d … +600000d (C8h ... 927C0h)` | `00 00 00 00 … 00 09 27 C0` | | Restart Input | [Only with restart type = Input], input for restart | Uint_16 | 2 | | `+1d ... +8d (1h ... 8h)` | `00 00 … 00 08` | | Combination | Combining multiple Events and/or Inputs | Enum_8 | 1 | AND:
OR:
XOR: | `+0d (0h)
+1d (1h)
+2d (2h)` | | | Reserved | Reserved value 3 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 4 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | | Source | | | | | | | Source | The source parameter are only existing if the port is set to OUTPUT! | | 2 | | `+1d (1h)` | `00 01` | | Source Name | Name of the source option | String | 4 | DeviceNotReady:
Input1:
Input2:
SopasCommand: | `DRDY
IN01
IN02
SC01` | `44 52 44 59
49 4E 30 31
49 4E 30 32
53 43 30 31` | | Invert | Invert the source signal | Bool_1 | 1 | Not inverted:
Inverted: | `+0d (0h)
+1d (1h)` | `00
01` | | Reserved | Reserved value 5 | Uint_8 | 1 | | `+0d (0h)` | `00` | | Reserved | Reserved value 6 | Uint_8 | 1 | | `+0d (0h)` | `00` | | Reserved | | | | | | | | Reserved | Reserved value 7 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 8 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 9 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | | Reserved | Reserved value 10 | Uint_16 | 2 | | `+0d (0h)` | `00 00` | **Example: sWN PortConfiguration** **CoLa A (ASCII)** ```text sWN{SPC}PortConfiguration{SPC}1{SPC}6{SPC}InOut1{SPC}0{SPC}A{SPC}0{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut2{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut3{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut4{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut5{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}6{SPC}InOut6{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut7{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}1{SPC}6{SPC}InOut8{SPC}0{SPC}A{SPC}1{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}C8{SPC}1{SPC}1{SPC}0{SPC}0{SPC}1{SPC}DRDY{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text sWN PortConfiguration 1 6 InOut1 0 A 0 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut2 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 0 6 InOut3 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut4 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut5 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut6 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 1 6 InOut7 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut8 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 ``` ```text sWN PortConfiguration 1 6 InOut1 0 A 0 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut2 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 0 6 InOut3 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut4 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut5 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 0 6 InOut6 0 A 1 0 0 0 0 0 C8 1 1 0 0 0 0 0 0 0 1 6 InOut7 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 1 6 InOut8 0 A 1 0 0 1 0 0 C8 1 1 0 0 1 DRDY 0 0 0 0 0 0 0 ``` ```text 02 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20 36 20 49 6E 4F 75 74 31 20 30 20 41 20 30 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 32 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 33 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 34 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 35 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 36 20 49 6E 4F 75 74 36 20 30 20 41 20 31 20 30 20 30 20 30 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 37 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 31 20 36 20 49 6E 4F 75 74 38 20 30 20 41 20 31 20 30 20 30 20 31 20 30 20 30 20 43 38 20 31 20 31 20 30 20 30 20 31 20 44 52 44 59 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 01 7A 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 00 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 0A ``` ```text 73 57 4E 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 01 00 06 49 6E 4F 75 74 31 00 00 0A 00 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 32 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 33 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 34 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 35 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 49 6E 4F 75 74 36 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 37 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 01 00 06 49 6E 4F 75 74 38 00 00 0A 01 00 00 00 00 01 00 00 00 00 00 C8 00 01 01 00 00 00 00 00 01 44 52 44 59 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sWA PortConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Configuration of the given ports | String | 17 | | `PortConfiguration` | `50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sWA PortConfiguration** **CoLa A (ASCII)** ```text sWA{SPC}PortConfiguration ``` ```text 02 73 57 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 50 6F 72 74 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 0C ```
### Read State of the Inputs [sRN LIDinputstate] Use sEN LIDinputstate 1 to receive a telegram each time an input signal (e.g. by trigger) changes. **Telegram structure: sRN LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Input state | String | 14 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | **Example: sRN LIDinputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDinputstate ``` ```text sRN LIDinputstate ``` ```text sRN LIDinputstate ``` ```text 02 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 0F ``` ```text 73 52 4E 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDinputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Output state | String | 14 | | `LIDinputstate` | `4C 49 44 69 6E 70 75 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Status code | System counter
(time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0 h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | State of the inputs 1 … n | Amount of inputs (n) depending of device family | Enum_8 | 1 | Not active:
Active:
Input not used: | `0
1
2` | `00
01
02` | | Time | States code | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Year | Array | 2 | E. g. | `1970` | `07 B2` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` | **Example: sRA LIDinputstate In1 not used, In2 inactive, In3 inactive, In4 not used, In5 not used, In6 not used, In7 not used, In8 not used, time: 1970-01-01 0:13 58.443 sec** **CoLa A (ASCII)** ```text sRA{SPC}LIDinputstate{SPC}1{SPC}31F99C10{SPC}2{SPC}0{SPC}0{SPC}2{SPC}2{SPC}2{SPC}2{SPC}2{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}D{SPC}3A{SPC}6C278 ``` ```text 02 73 52 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 31 20 33 31 46 39 39 43 31 30 20 32 20 30 20 30 20 32 20 32 20 32 20 32 20 32 20 31 20 37 42 32 20 31 20 31 20 30 20 44 20 33 41 20 36 43 32 37 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2D 73 52 41 20 4C 49 44 69 6E 70 75 74 73 74 61 74 65 20 00 01 31 F9 9C 10 02 00 00 02 02 02 02 02 00 01 07 B2 01 01 00 0D 3A 00 06 C2 78 5A ```
### Read State of the Outputs [sRN LIDoutputstate] Status of all outputs **Telegram structure: sRN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | **Example: sRN LIDoutputstate** **CoLa A (ASCII)** ```text sRN{SPC}LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text sRN LIDoutputstate ``` ```text 02 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 66 ``` ```text 73 52 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 ``` **Telegram structure: sRA LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Complete telegram structure of the answer . | | | | | | |
### Receive Outputstate by Event [sEN LIDoutputstate] Output telegram is sent every time an output state changes. **Telegram structure: sEN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | | Start/stop | Enum_8 | 1 | Start:
Stop: | `1
0` | `01
00` | **Example: sEN LIDoutputstate** **CoLa A (ASCII)** ```text sEN{SPC}LIDoutputstate{SPC}1 ``` ```text sEN LIDoutputstate 1 ``` ```text sEN LIDoutputstate 1 ``` ```text 02 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 50 ``` ```text 73 45 4E 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 01 ``` **Telegram structure: sRA/sSN LIDoutputstate** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA / sSN` | `73 52 41 / 73 53 4E` | | Command | Output state | String | 14 | | `LIDoutputstate` | `4C 49 44 6F 75 74 70 75 74 73 74 61 74 65` | | Status code | Version number | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Status code | System counter
(time in µs since power up max. 71min then starting from 0 again) | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | State of the outputs 1 ... n and count value in hex. (values of an example)
Amount of outputs (n) depending of device family | Output 1 ... n state | Enum_8 | 1 | Not active:
Active:
Output not used: | `0
1
2` | `00
01
02` | | State of the outputs 1 ... n and count value in hex. (values of an example)
Amount of outputs (n) depending of device family | Output 1 ... n count | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time | States code | Uint_16 | 2 | No time data:
Time data: | `0
1` | `00 00
00 01` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Year | Array | 2 | E. g. | `1970` | `07 B2` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Month | Array | 1 | | `1 … 12` | `01 … 0C` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Day | Array | 1 | | `1 … 31` | `01 … 1F` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Hour | Array | 1 | | `0 … 23` | `00 … 17` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Minute | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Second | Array | 1 | | `0 … 59` | `00 … 3B` | | Time Block
(sensor-time from the last change of min. one of the outputs) | Microsecond | Array | 4 | | `0 … 999999` | `00 00 00 00 … 00 0F 42 3F` | **Example: sRA LIDoutputstate Out1 active Count 0, Out2 active Count 0, all other Outputs not used, time: 1970-01-01 0:31 38.191 sec** **CoLa A (ASCII)** ```text sRA{SPC}LIDoutputstate{SPC}1{SPC}712414B0{SPC}1{SPC}0{SPC}1{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}2{SPC}0{SPC}1{SPC}7B2{SPC}1{SPC}1{SPC}0{SPC}1F{SPC}26{SPC}2EA18 ``` ```text 02 73 52 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 31 20 37 31 32 34 31 34 42 30 20 31 20 30 20 31 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 32 20 30 20 31 20 37 42 32 20 31 20 31 20 30 20 31 46 20 32 36 20 32 45 41 31 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4E 73 52 41 20 4C 49 44 6F 75 74 70 75 74 73 74 61 74 65 20 00 01 71 24 14 B0 01 00 00 00 00 01 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 02 00 00 00 00 00 01 07 B2 01 01 00 1F 26 00 02 EA 18 C4 ```
### Set Output State [sMN mDOSetOutput] Set a specific output to high or low via software command. Output source needs to be set to "SOPAS command" and the port configured as Output (in case of I/O). **Telegram structure: sMN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Output number | | Uint_8 | 1 | Depends on system plug: | `1 … 3
1 … 6` | `01 … 03
01 … 06` | | Output state | | Enum_8 | 1 | Not active:
Active: | `0
1` | `00
01` | **Example: sMN mDOSetOutput** **CoLa A (ASCII)** ```text sMN{SPC}mDOSetOutput{SPC}1{SPC}1 ``` ```text sMN mDOSetOutput 1 1 ``` ```text sMN mDOSetOutput 1 1 ``` ```text 02 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 01 6B ``` ```text 73 4D 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 01 ``` **Telegram structure: sAN mDOSetOutput** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set output state | String | 12 | | `mDOSetOutput` | `6D 44 4F 53 65 74 4F 75 74 70 75 74` | | Status Code | Status code | Bool_1 | 1 | Error:
Success: | `0
1` | `00
01` | **Example: sAN mDOSetOutput** **CoLa A (ASCII)** ```text sAN{SPC}mDOSetOutput{SPC}1 ``` ```text 02 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 41 4E 20 6D 44 4F 53 65 74 4F 75 74 70 75 74 20 01 66 ```
### Reset Output Counter [sMN LIDrstoutpcnt] Reset the counter which keeps track of how often an digital output has been active (and not active). Information from the counter is included in LIDoutputstate. **Telegram structure: sMN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | **Example: sMN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sMN{SPC}LIDrstoutpcnt ``` ```text sMN LIDrstoutpcnt ``` ```text sMN LIDrstoutpcnt ``` ```text 02 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 03 ``` ```text 73 4D 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 ``` **Telegram structure: sAN LIDrstoutpcnt** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reset output counter | String | 13 | | `LIDrstoutpcnt` | `4C 49 44 72 73 74 6F 75 74 70 63 6E 74` | | Status code | Code number | Bool_1 | 1 | Success:
Error: | `0
1` | `00
01` | **Example: sAN LIDrstoutpcnt** **CoLa A (ASCII)** ```text sAN{SPC}LIDrstoutpcnt{SPC}0 ``` ```text 02 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 41 4E 20 4C 49 44 72 73 74 6F 75 74 70 63 6E 74 20 00 2F ```
### Enable Cloning Plug Functionality [sWN enableCloningPlug] Enables or disables the cloning plug functionality. **Telegram structure: sWN enableCloningPlug** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | enableCloningPlug | String | 17 | | `enableCloningPlug` | `65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67` | | Value | Enable/ disable cloning plug functionality | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN enableCloningPlug** **CoLa A (ASCII)** ```text sWN{SPC}enableCloningPlug{SPC}1 ``` ```text sWN enableCloningPlug 1 ``` ```text sWN enableCloningPlug 1 ``` ```text 02 73 57 4E 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 20 01 0A ``` ```text 73 57 4E 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 20 01 ``` **Telegram structure: sWA enableCloningPlug** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 17 | | `enableCloningPlug` | `65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67` | **Example: sWA enableCloningPlug** **CoLa A (ASCII)** ```text sWA{SPC}enableCloningPlug ``` ```text 02 73 57 41 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 24 ```
### Read Cloning Plug Functionality [sRN enableCloningPlug] Check if the cloning plug functionality is enabled. **Telegram structure: sRN enableCloningPlug** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | enableCloningPlug | String | 17 | | `enableCloningPlug` | `65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67` | **Example: sRN enableCloningPlug** **CoLa A (ASCII)** ```text sRN{SPC}enableCloningPlug ``` ```text sRN enableCloningPlug ``` ```text sRN enableCloningPlug ``` ```text 02 73 52 4E 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 2E ``` ```text 73 52 4E 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 ``` **Telegram structure: sRA enableCloningPlug** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | enableCloningPlug | String | 17 | | `enableCloningPlug` | `65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67` | | Value | Cloning plug functionality disabled / enabled | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sRA enableCloningPlug** **CoLa A (ASCII)** ```text sRA{SPC}enableCloningPlug{SPC}1 ``` ```text 02 73 52 41 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 65 6E 61 62 6C 65 43 6C 6F 6E 69 6E 67 50 6C 75 67 20 01 00 ```
## Measurement Data Output
### Configure the Data Content for the Scan [sWN LMDscandatacfg] Configuration of the channels (e.g. distance) and information that will be send by the device as measurement data (output data format). **Telegram structure: sWN LMDscandatacfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Configure scandata | String | 14 | | `LMDscandatacfg` | `4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67` | | Reserved | - | Uint_8 | 2 | Always: | `0 0` | `00 00` | | RSSI | Enable or disable the output of RSSI values | Uint_8 | 1 | RSSI disabled:
RSSI enabled: | `0
1` | `00
01` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Encoder | Encoder data | Uint_8 | 2 | No encoder:
Channel 1: | `0 0
1 0` | `00 00
01 00` | | Reserved | - | Bool_1 | 1 | Always: | `0` | `00` | | Device name | Sends the device name | Bool_1 | 1 | No:
Yes: | `0
1` | `00
01` | | Reserved | - | Bool_1 | 1 | Always: | `0` | `00` | | Time | Sends time stamp information | Bool_1 | 1 | No:
Yes: | `0
1` | `00
01` | | Reserved | - | Uint_16 | 2 | Always: | `+1d (1h)` | `00 01` | Example: RSSI enabled **Example: sWN LMDscandatacfg** **CoLa A (ASCII)** ```text sWN{SPC}LMDscandatacfg{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}+1 ``` ```text sWN LMDscandatacfg 0 0 1 0 0 0 0 0 0 0 0 +1 ``` ```text sWN LMDscandatacfg 0 0 1 0 0 0 0 0 0 0 0 +1 ``` ```text 02 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 30 20 30 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 2B 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 00 00 01 00 00 00 00 00 00 00 00 00 01 42 ``` ```text 73 57 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 00 00 01 00 00 00 00 00 00 00 00 00 01 ``` **Telegram structure: sWA LMDscandatacfg** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Configure scandata | String | 14 | | `LMDscandatacfg` | `4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67` | **Example: sWA LMDscandatacfg** **CoLa A (ASCII)** ```text sWA{SPC}LMDscandatacfg ``` ```text 02 73 57 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 63 66 67 20 4D ```
### Poll One Telegram [sRN LMDscandata] Asking the device for the measurement values of the last valid scan. The device will respond, even if currently no measurement data is created (e.g. due to standby or log in). Data is transmitted only via LMDscandata when LMDscandata is selected as data output format. During the boot-up phase of the device, there will be no data telegram or answer from the device. **Telegram structure: sRN LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Only one telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | **Example: sRN LMDscandata** **CoLa A (ASCII)** ```text sRN{SPC}LMDscandata ``` ```text sRN LMDscandata ``` ```text sRN LMDscandata ``` ```text 02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 05 ``` ```text 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 ``` **Telegram structure: sRA LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Find complete telegram structure of the answer in . | | | | | | |
### Send Data Permanently [sEN LMDscandata] Start/ stop continuous retrievement of measurement data from device. Data will be transmitted as configured as soon as measurement data is generated by the device. No data is generated when there is an active log in, the laser is shut off (e.g. in Standby mode), the motor is stopped or in case of certain error modes (e.g. Device not ready). Data is transmitted only via LMDscandata when LMDscandata is selected as data output format. During the boot-up phase of the device, there will be no data telegram or answer from the device. **Telegram structure: sEN LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Data telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | | Measurement | Start/stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN LMDscandata** **CoLa A (ASCII)** ```text sEN{SPC}LMDscandata{SPC}1 ``` ```text sEN LMDscandata 1 ``` ```text sEN LMDscandata 1 ``` ```text 02 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 33 ``` ```text 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 ``` **Telegram structure: sEA LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sEA` | `73 45 41` | | Command | Data telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | | Measurement | Start/stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: Confirmation of sEA LMDscandata** **CoLa A (ASCII)** ```text sEA{SPC}LMDscandata{SPC}1 ``` ```text 02 73 45 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 45 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 3C ``` The answer to the telegram will be followed by the scandata: **Telegram structure: Datastream of sRA LMDscandata/sSN LMDscandata** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | Answer to sRN LMDscandata:
Answer to sEN LMDscandata: | `sRA
sSN` | `73 52 41
73 53 4E` | | Command | Data telegram | String | 11 | | `LMDscandata` | `4C 4D 44 73 63 61 6E 64 61 74 61` | | Version number | For detecting format changes by the version. | Uint_16 | 2 | | `1h … FFFFh` | `00 01 … FF FF` | | Device | | | | | | | | Device number | Defined with SOPAS | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Serial number | Production period (year, calendar week, number): YYWWxxxx | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Device status | (See values column) | Uint_8 | 2 x 1 | Ok:
Error: | `0 0
1 0` | `00 00
01 00` | | Status info | | | | | | | | Telegram counter | Number of measurement telegrams finished in the scanner and given to the interface. Does not count how many telegrams were really given out; is relevant if not all scans are delivered from the scan core. | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Scan counter | Number of scans which were created in the device; counts how many scans were really done. | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Time since start up in µs | In the output telegram this is the time at the zero index before the measurement itself starts. Time base is the boot-up time in µs since power up, max. 71 min then starting from 0 again. | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Time of transmission in µs | In the output telegram this is the time when the complete scan is transmitted to the buffer for data output. Time base is the boot-up time in µs since power up, max. 71 min then starting from 0 again. | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 … FF FF FF FF` | | Status of digital inputs | Low byte represents input 1. | Uint_8 | 2 x 1 | All inputs low:
Input 1 high:
Input 2 high:
Input 1+2 high:
All inputs high:
(Depends on system plug and port configuration) | `0 0
1 0
2 0
3 0
3 F` | `00 00
01 00
02 00
03 00
03 0F` | | Status of digital outputs | Low byte represents output 1. | Uint_8 | 2 x 1 | All outputs low:
All outputs high: | `0 0
3 F` | `00 00
03 0F` | | Reserved | - | Uint_16 | 2 | Always: | `0` | `00 00 00 00` | | Frequencies | | | | | | | | Scan frequency | [1/100 Hz] | Uint_32 | 4 | 15 Hz ... 50 Hz:
(depends on Dynamic Sensing Profile ) | `5DCh ... 1388h` | `05 DC ... 13 88` | | Reserved | - | Uint_32 | 4 | Always: | `0` | `00 00 00 00` | | Encoder | | | | | | | | Amount of encoder | If 0, then next two telegram parts are missing. | Enum_16 | 2 | External encoder | `0
1` | `00 00
00 01` | | Encoder position | Info in ticks | Uint_32 | 4 | Only filled if parameter is activated | `0h … FFFFFFFFh` | `00 00 00 00 ... FF FF FF FF` | | Encoder speed | mm/sec
or
milligrad/sec | Uint_16 | 2 | Only filled if parameter is activated | `0h ... FFFFh` | `00 00 ... FF FF` | | 16 bit output channel (Distance) | | | | | | | | Amount of 16 bit channels | Number of 16 bit channels that provide measured data | Enum_16 | 2 | Output channels | `1 or 3` | `01 or 03` | | Content | Defines the content of the output channel | String | 5 | Distance values:
Distance values:
Distance values: | `DIST1
DIST2
DIST3` | `44 49 53 54 31
44 49 53 54 32
44 49 53 54 33` | | Scale factor | Scale factor or factor of the measurement values | Real as float according to IEEE754 | 4 | Factor x 1:
Factor x 2:
Factor x 1 (REFL1) (alternative): | `3F800000h
40000000h` | `3F 80 00 00
40 00 00 00` | | Reserved | - | Real as float according to IEEE754 | 4 | Always: | `00000000` | `00 00 00 00` | | Start angle | [1/10000°] | Int_32 | 4 | -48° ... 228°
(depends on Dynamic Sensing Profile ) | `FFF8AD00h … 22CA40h` | `FF F8 AD 00h … 00 22 CA 40h` | | Size of single angular step | Output format in degree: 1/10000° | Uint_16 | 2 | 0.1° ... 1°:
(depends on angular resolution of Dynamic Sensing Profile ) | `3E8h ... 2710h` | `03 E8 ... 27 10` | | Amount of data | Number of transmitted measurement points | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Data_1
Data_n | Data stream starting Data_1 to Data_n | Uint_16 | 2 | | `0h … 61A8h` | `00 00 00 00 … 00 00 61 A8` | | 8 bit output channel (RSSI) | | | | | | | | Amount of 8 bit channels | Number of 8 bit channels that provide measured data | Enum_16 | 2 | Output channels: | `1 or 3` | `01 or 03` | | Content | Defines the content of the output channel (RSSI) | String | 5 | | `RSSI1
RSSI2
RSSI3` | `52 53 53 49 31
52 53 53 49 32
52 53 53 49 33` | | Scale factor | Scale factor of the RSSI values | Real as float according to IEEE754 | 4 | Factor x 1:
Factor x 2: | `3F800000h
40000000h` | `3F 80 00 00
40 00 00 00` | | Reserved | - | Real as float according to IEEE754 | 4 | Always: | `00000000h` | `00 00 00 00` | | Start angle | Output format: [1/10000°] | Uint_32 | 4 | -48° ... 228°
(depends on Dynamic Sensing Profile ) | `FFF8AD00h … 22CA40h` | `FF F8 AD 00h … 00 22 CA 40h` | | Size of single angular step | Output format: 1/10000° | Uint_16 | 2 | 0.1° ... 1°:
(depends on Dynamic Sensing Profile ) | `3E8h ... 2710h` | `03 E8 ... 27 10` | | Amount of data | Number of transmitted measurement points | Uint_16 | 2 | | `0h … FFFFh` | `00 00 … FF FF` | | Data_1
Data_n | Data stream starting Data_1 to Data_n | Uint_8 | 1 | | `00h ... FFh` | `00 ... FF` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Enum_16 | 2 | Always: | `0` | `00 00` | | Reserved | | | | | | | | Reserved | - | Uint_16 | 2 | Always: | `0` | `00 00` | LMDscandata - reserved values Valid distance measurement values are values starting from 16d upwards; everything below has the following meaning: | DIST | RSSI | Description | | --- | --- | --- | | 0d | 0d | Invalid measurement value; caused by very low remission (extremely dark object), object distance not within measurement range (too close or too far away) or selected filter settings at device | | 1d - 15d | 0d | Reserved, currently not in use | | ≥16d | >0h | Valid measurement values | | ≥16d | 254d | Reflector detected | | ≥16d | 255d | Reserved | Higher measurement values will be given out with a zero, that means no measurement value detected.
### Set Scan Data Enable [sWN ScanDataEnable] Enables/ Disables streaming data output **Telegram structure: sWN ScanDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 E4` | | Command | Enables/ Disables streaming data output. | String | 14 | | `ScanDataEnable` | `53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65` | | Data | | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sWN ScanDataEnable 0 - Disable the streaming data output** **CoLa A (ASCII)** ```text sWN{SPC}ScanDataEnable{SPC}0 ``` ```text sWN ScanDataEnable 0 ``` ```text sWN ScanDataEnable 0 ``` ```text 02 73 57 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 00 44 ``` ```text 73 57 4E 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 00 ``` **Telegram structure: sWA ScanDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Enables/ Disables streaming data output. | String | 14 | | `ScanDataEnable` | `53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65` | **Example: sWA ScanDataEnable** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataEnable ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 53 63 61 6E 44 61 74 61 45 6E 61 62 6C 65 20 4B ```
### Set Streaming Ethernet Settings [sWN ScanDataEthSettings] Ethernet settings for the scan data streaming functionality of the device **Telegram structure: sWN ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming data | Enum_8 | 1 | UDP (fix): | `+1d (01h)` | `01` | | IPAddress | IP address of the destination for data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the data reseiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Example: sWN ScanDataEthSettings +1 +192 +168 +0 +100 +2115 Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (2115) **Example: sWN ScanDataEthSettings** **CoLa A (ASCII)** ```text sWN{SPC}ScanDataEthSettings{SPC}+1{SPC}+192{SPC}+168{SPC}+0{SPC}+100{SPC}+2115 ``` ```text sWN ScanDataEthSettings +1 +192 +168 +0 +100 +2115 ``` ```text sWN ScanDataEthSettings +1 +192 +168 +0 +100 +2115 ``` ```text 02 73 57 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 38 34 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 08 43 5F ``` ```text 73 57 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 08 43 ``` **Telegram structure: sWA ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sWA ScanDataEthSettings** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataEthSettings ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 16 ```
### Read Streaming Ethernet Settings [sRN ScanDataEthSettings] Read ethernet settings for the scan data streaming functionality of the device. **Telegram structure: sRN ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sRN ScanDataEthSettings** **CoLa A (ASCII)** ```text sRN{SPC}ScanDataEthSettings ``` ```text sRN ScanDataEthSettings ``` ```text sRN ScanDataEthSettings ``` ```text 02 73 52 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 3C ``` ```text 73 52 4E 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 ``` **Telegram structure: sRA ScanDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | String | String | 19 | | `ScanDataEthSettings` | `53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming data | Enum_8 | 1 | UDP:
TCP: | `+1d (01h)
+2d (02h)` | `01
02` | | IPAddress | IP address of the destination for data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the data receiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Example: sRA ScanDataEthSettings +1 +192 +168 +0 +100 +2115 Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (2115) **Example: sRA ScanDataEthSettings** **CoLa A (ASCII)** ```text sRA{SPC}ScanDataEthSettings{SPC}1{SPC}C0{SPC}A8{SPC}0{SPC}64{SPC}843 ``` ```text 02 73 52 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 38 34 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 41 20 53 63 61 6E 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 08 43 55 ```
### Read Scan Data Format [sRN ScanDataFormat] Return of the scan data format **Telegram structure: sRN ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | Example: sRN ScanDataFormat Read of the data serialization format **Example: sRN ScanDataFormat** **CoLa A (ASCII)** ```text sRN{SPC}ScanDataFormat ``` ```text sRN ScanDataFormat ``` ```text sRN ScanDataFormat ``` ```text 02 73 52 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 63 ``` ```text 73 52 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 ``` **Telegram structure: sRA ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | | Data | | Enum_8 | 1 | MSGPACK:
Compact:
LMDscandata:
Native ROS2: | `1h
2h
3h
4h` | `01
02
03
04` | Example: sRA ScanDataFormat Scan data format is set to Compact = 2 **Example: sRA ScanDataFormat** **CoLa A (ASCII)** ```text sRA{SPC}ScanDataFormat{SPC}2 ``` ```text 02 73 52 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 02 4E ```
### Set Scan Data Format [sWN ScanDataFormat] Set the data serialization format **Telegram structure: sWN ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | | Variable Data | Data | Enum_8 | 1 | MSGPACK:
Compact (recommended):
LMDscandata:
Native ROS2: | `+1d (1h)
+2d (2h)
+3d (3h)
+4d (4h)` | `01
02
03
04` | Example: sWN ScanDataFormat Scan data format set to Compact format **Example: sWN ScanDataFormat** **CoLa A (ASCII)** ```text sWN{SPC}ScanDataFormat{SPC}2 ``` ```text sWN ScanDataFormat 2 ``` ```text sWN ScanDataFormat 2 ``` ```text 02 73 57 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 57 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 02 44 ``` ```text 73 57 4E 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 02 ``` **Telegram structure: sWA ScanDataFormat** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Data serialization format | String | 14 | | `ScanDataFormat` | `53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74` | **Example: sWA ScanDataFormat** **CoLa A (ASCII)** ```text sWA{SPC}ScanDataFormat ``` ```text 02 73 57 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 41 20 53 63 61 6E 44 61 74 61 46 6F 72 6D 61 74 20 49 ```
### Set the Session Timeout for TCP/IP Communication [sWN EtherSessionTimeout] Set the session timeout for TCP/IP communication (e.g. LMDscandata communication). Be careful with low values as they might cause unexpected disconnections. Write access requires user level: Service. **Telegram structure: sWN EtherSessionTimeout** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | EtherSessionTimeout | String | 19 | | `EtherSessionTimeout` | `45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74` | | Value | Session timeout in ms | UInt_32 | 4 | | `+15000` | `00 00 3A 98` | **Example: sWN EtherSessionTimeout** **CoLa A (ASCII)** ```text sWN{SPC}EtherSessionTimeout{SPC}+15000 ``` ```text sWN EtherSessionTimeout +15000 ``` ```text sWN EtherSessionTimeout +15000 ``` ```text 02 73 57 4E 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 20 2B 31 35 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 20 00 00 3A 98 83 ``` ```text 73 57 4E 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 20 00 00 3A 98 ``` **Telegram structure: sWA EtherSessionTimeout** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 19 | | `EtherSessionTimeout` | `45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74` | **Example: sWA EtherSessionTimeout** **CoLa A (ASCII)** ```text sWA{SPC}EtherSessionTimeout ``` ```text 02 73 57 41 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 41 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 0E ```
### Read the Session Timeout for TCP/IP Communication [sRN EtherSessionTimeout] Returns the session timeout for TCP/IP communication (e.g. LMDscandata communication). Be careful with low values as they might cause unexpected disconnections. **Telegram structure: sRN EtherSessionTimeout** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | EtherSessionTimeout | String | 19 | | `EtherSessionTimeout` | `45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74` | **Example: sRN EtherSessionTimeout** **CoLa A (ASCII)** ```text sRN{SPC}EtherSessionTimeout ``` ```text sRN EtherSessionTimeout ``` ```text sRN EtherSessionTimeout ``` ```text 02 73 52 4E 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 04 ``` ```text 73 52 4E 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 ``` **Telegram structure: sRA EtherSessionTimeout** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | EtherSessionTimeout | String | 19 | | `EtherSessionTimeout` | `45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74` | | Value | Session timeout in ms | UInt_32 | 4 | | `+15000` | `00 00 3A 98` | **Example: sRA EtherSessionTimeout** **CoLa A (ASCII)** ```text sRA{SPC}EtherSessionTimeout{SPC}3A98 ``` ```text 02 73 52 41 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 20 33 41 39 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 45 74 68 65 72 53 65 73 73 69 6F 6E 54 69 6D 65 6F 75 74 20 00 00 3A 98 89 ```
### Set the Content of the Compact Format Telegram Type 1 [sWN compactTelegramType1Content] Sets the content of the Compact format telegram type 1 (e.g. whether to include the RSSI values). **Telegram structure: sWN compactTelegramType1Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | compactTelegramType1Content | String | 27 | | `compactTelegramType1Content` | `63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74` | | includeRssi | If true, RSSIs are serialized | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | | includeProperties | If true, properties are serialized | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN compactTelegramType1Content** **CoLa A (ASCII)** ```text sWN{SPC}compactTelegramType1Content{SPC}1{SPC}1 ``` ```text sWN compactTelegramType1Content 1 1 ``` ```text sWN compactTelegramType1Content 1 1 ``` ```text 02 73 57 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 22 73 57 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 20 01 01 6C ``` ```text 73 57 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 20 01 01 ``` **Telegram structure: sWA compactTelegramType1Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 27 | | `compactTelegramType1Content` | `63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74` | **Example: sWA compactTelegramType1Content** **CoLa A (ASCII)** ```text sWA{SPC}compactTelegramType1Content ``` ```text 02 73 57 41 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 57 41 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 43 ```
### Read compactTelegramType1Content [sRN compactTelegramType1Content] Returns the content of the Compact format telegram type 1 (e.g. whether to include the RSSI values). **Telegram structure: sRN compactTelegramType1Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | compactTelegramType1Content | String | 27 | | `compactTelegramType1Content` | `63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74` | **Example: sRN compactTelegramType1Content** **CoLa A (ASCII)** ```text sRN{SPC}compactTelegramType1Content ``` ```text sRN compactTelegramType1Content ``` ```text sRN compactTelegramType1Content ``` ```text 02 73 52 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 49 ``` ```text 73 52 4E 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 ``` **Telegram structure: sRA compactTelegramType1Content** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | compactTelegramType1Content | String | 27 | | `compactTelegramType1Content` | `63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74` | | includeRssi | If true, RSSIs are serialized | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | | includeProperties | If true, properties are serialized | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sRA compactTelegramType1Content** **CoLa A (ASCII)** ```text sRA{SPC}compactTelegramType1Content{SPC}1{SPC}1 ``` ```text 02 73 52 41 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 22 73 52 41 20 63 6F 6D 70 61 63 74 54 65 6C 65 67 72 61 6D 54 79 70 65 31 43 6F 6E 74 65 6E 74 20 01 01 66 ```
### Write ROS Parent Frame ID [sWN rosParentFrameId] Set the parent frame ID of the published topics. **Telegram structure: sWN rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | | Value | Number of characters of the parent frame id | Uint_16 | 1 | | `0d ... +16d (0h ... 10h` | `00 00 ... 00 10` | | Value | Configured parent frame ID | FlexString | 64 | | `[Parent frame ID]` | `[Parent frame ID]` | **Example: sWN rosParentFrameId** **CoLa A (ASCII)** ```text sWN{SPC}rosParentFrameId{SPC}5{SPC}world ``` ```text sWN rosParentFrameId 5 world ``` ```text sWN rosParentFrameId 5 world ``` ```text 02 73 57 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 2B 35 20 77 6F 72 6C 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 00 05 77 6F 72 6C 64 2F ``` ```text 73 57 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 00 05 77 6F 72 6C 64 ``` **Telegram structure: sWA rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | **Example: sWA rosParentFrameId** **CoLa A (ASCII)** ```text sWA{SPC}rosParentFrameId ``` ```text 02 73 57 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 47 ```
### Read ROS Parent Frame ID [sRN rosParentFrameId] Returns the parent frame ID of the published topics. **Telegram structure: sRN rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | **Example: sRN rosParentFrameId** **CoLa A (ASCII)** ```text sRN{SPC}rosParentFrameId ``` ```text sRN rosParentFrameId ``` ```text sRN rosParentFrameId ``` ```text 02 73 52 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 6D ``` ```text 73 52 4E 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 ``` **Telegram structure: sRA rosParentFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read parent frame ID of the published topics | String | 16 | | `rosParentFrameId` | `72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64` | | Value | Number of characters of the parent frame id | Uint_16 | 2 | | `0d ... +16d (0h ... 10h` | `00 00 ... 00 10` | | Value | Configured parent frame ID | FlexString | 64 | | `[Parent frame ID]` | `[Parent frame ID]` | **Example: sRA rosParentFrameId** **CoLa A (ASCII)** ```text sRA{SPC}rosParentFrameId{SPC}5{SPC}world ``` ```text 02 73 52 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 35 20 77 6F 72 6C 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 72 6F 73 50 61 72 65 6E 74 46 72 61 6D 65 49 64 20 00 05 77 6F 72 6C 64 25 ```
### Write ROS Frame ID [sWN rosFrameId] Set the frame ID of the published topics. **Telegram structure: sWN rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `72 6F 73 46 72 61 6D 65 49 64` | | Value | Number of characters of the frame id | Uint_16 | 1 | | `0d ... +16d (0h ... 10h` | `00 00 ... 00 10` | | Value | Configured Frame ID of the device | FlexString | 64 | | `[Frame ID]` | `[Frame ID]` | **Example: sWN rosFrameId** **CoLa A (ASCII)** ```text sWN{SPC}rosFrameId{SPC}4{SPC}test ``` ```text sWN rosFrameId 4 test ``` ```text sWN rosFrameId 4 test ``` ```text 02 73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64 20 34 20 74 65 73 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64 20 00 04 74 65 73 74 66 ``` ```text 73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64 20 00 04 74 65 73 74 ``` **Telegram structure: sWA rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `72 6F 73 46 72 61 6D 65 49 64` | **Example: sWA rosFrameId** **CoLa A (ASCII)** ```text sWA{SPC}rosFrameId ``` ```text 02 73 57 41 20 72 6F 73 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 41 20 72 6F 73 46 72 61 6D 65 49 64 20 7B ```
### Read ROS Frame ID [sRN rosFrameId] Returns the frame ID of the published topics. **Telegram structure: sRN rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `72 6F 73 46 72 61 6D 65 49 64` | **Example: sRN rosFrameId** **CoLa A (ASCII)** ```text sRN{SPC}rosFrameId ``` ```text sRN rosFrameId ``` ```text sRN rosFrameId ``` ```text 02 73 52 4E 20 72 6F 73 46 72 61 6D 65 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 52 4E 20 72 6F 73 46 72 61 6D 65 49 64 51 ``` ```text 73 52 4E 20 72 6F 73 46 72 61 6D 65 49 64 ``` **Telegram structure: sRA rosFrameId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | ROS reference frame to use for data output | String | 10 | | `rosFrameId` | `73 57 4E 20 72 6F 73 46 72 61 6D 65 49 64` | | Value | Number of characters of the frame id | Uint_16 | 1 | | `0d ... +16d (0h ... 10h` | `00 00 ... 00 10` | | Value | Configured Frame ID of the device | FlexString | 64 | | `[Frame ID]` | `[Frame ID]` | **Example: sRA rosFrameId - Frame ID is "picoScan_"** **CoLa A (ASCII)** ```text sRA{SPC}rosFrameId{SPC}9{SPC}picoScan_ ``` ```text 02 73 52 41 20 72 6F 73 46 72 61 6D 65 49 64 20 39 20 70 69 63 6F 53 63 61 6E 5F 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 41 20 72 6F 73 46 72 61 6D 65 49 64 20 00 09 70 69 63 6F 53 63 61 6E 5F 02 ```
### Write ROS Namespace [sWN rosNamespace] Adds a prefix to all ROS entities (topics, services, parameters). **Telegram structure: sWN rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Sets the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | | Value | Number of characters of the frame id | Uint_16 | 2 | | `0d ... +16d (0h ... 10h)` | `00 00 ... 00 10` | | Value | Name | FlexString | 64 | | `[Namespace]` | `[Namespace]` | **Example: sWN rosNamespace - Namespace is "rear_lidar"** **CoLa A (ASCII)** ```text sWN{SPC}rosNamespace{SPC}A{SPC}rear_lidar ``` ```text sWN rosNamespace A rear_lidar ``` ```text sWN rosNamespace A rear_lidar ``` ```text 02 73 57 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 41 20 72 65 61 72 5F 6C 69 64 61 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 57 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 00 0A 72 65 61 72 5F 6C 69 64 61 72 64 ``` ```text 73 57 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 00 0A 72 65 61 72 5F 6C 69 64 61 72 ``` **Telegram structure: sWA rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Sets the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | **Example: sWA rosNamespace** **CoLa A (ASCII)** ```text sWA{SPC}rosNamespace ``` ```text 02 73 57 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 48 ```
### Read ROS Namespace [sRN rosNamespace] Returns the namespace of the published topics. **Telegram structure: sRN rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Reads the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | **Example: sRN rosNamespace** **CoLa A (ASCII)** ```text sRN{SPC}rosNamespace ``` ```text sRN rosNamespace ``` ```text sRN rosNamespace ``` ```text 02 73 52 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 62 ``` ```text 73 52 4E 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 ``` **Telegram structure: sRA rosNamespace** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Reads the namespace of the published topics | String | 12 | | `rosNamespace` | `72 6F 73 4E 61 6D 65 73 70 61 63 65` | | Value | Number of characters of the frame id | Uint_16 | 2 | | `0d ... +16d (0h ... 10h)` | `00 00 ... 00 10` | | Value | Name | FlexString | 64 | | `[Namespace]` | `[Namespace]` | **Example: sRA rosNamespace - Namespace is "rear_lidar"** **CoLa A (ASCII)** ```text sRA{SPC}rosNamespace{SPC}A{SPC}rear_lidar ``` ```text 02 73 52 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 41 20 72 65 61 72 5F 6C 69 64 61 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1D 73 52 41 20 72 6F 73 4E 61 6D 65 73 70 61 63 65 20 00 0A 72 65 61 72 5F 6C 69 64 61 72 6E ```
### Configure the ROS Domain ID for Native ROS 2 [sWN rosDomainId] Configure the ROS domain ID for Native ROS 2. **Telegram structure: sWN rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | rosDomainId | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | | Value | ROS domain ID | UInt_8 | 1 | | `0` | `00` | **Example: sWN rosDomainId** **CoLa A (ASCII)** ```text sWN{SPC}rosDomainId{SPC}0 ``` ```text sWN rosDomainId 0 ``` ```text sWN rosDomainId 0 ``` ```text 02 73 57 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 00 09 ``` ```text 73 57 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 00 ``` **Telegram structure: sWA rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | **Example: sWA rosDomainId** **CoLa A (ASCII)** ```text sWA{SPC}rosDomainId ``` ```text 02 73 57 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 26 ```
### Read the Configured ROS Domain ID Set for Native ROS 2 [sRN rosDomainId] Returns the configured ROS domain ID set for Native ROS 2. **Telegram structure: sRN rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | rosDomainId | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | **Example: sRN rosDomainId** **CoLa A (ASCII)** ```text sRN{SPC}rosDomainId ``` ```text sRN rosDomainId ``` ```text sRN rosDomainId ``` ```text 02 73 52 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 2C ``` ```text 73 52 4E 20 72 6F 73 44 6F 6D 61 69 6E 49 64 ``` **Telegram structure: sRA rosDomainId** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | rosDomainId | String | 11 | | `rosDomainId` | `72 6F 73 44 6F 6D 61 69 6E 49 64` | | Value | ROS domain ID | UInt_8 | 1 | | `0` | `00` | **Example: sRA rosDomainId** **CoLa A (ASCII)** ```text sRA{SPC}rosDomainId{SPC}0 ``` ```text 02 73 52 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 41 20 72 6F 73 44 6F 6D 61 69 6E 49 64 20 00 03 ```
### Set the Port Number for CoLa ASCII TCP/IP [sWN EIAuxPort] Set the port number for CoLa ASCII TCP/IP (e.g. LMDscandata). **Telegram structure: sWN EIAuxPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | EIAuxPort | String | 9 | | `EIAuxPort` | `45 49 41 75 78 50 6F 72 74` | | Value | TCP port for CoLa ASCII communication | UInt_16 | 2 | | `+2111` | `08 3F` | **Example: sWN EIAuxPort** **CoLa A (ASCII)** ```text sWN{SPC}EIAuxPort{SPC}+2111 ``` ```text sWN EIAuxPort +2111 ``` ```text sWN EIAuxPort +2111 ``` ```text 02 73 57 4E 20 45 49 41 75 78 50 6F 72 74 20 2B 32 31 31 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 4E 20 45 49 41 75 78 50 6F 72 74 20 08 3F 24 ``` ```text 73 57 4E 20 45 49 41 75 78 50 6F 72 74 20 08 3F ``` **Telegram structure: sWA EIAuxPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 9 | | `EIAuxPort` | `45 49 41 75 78 50 6F 72 74` | **Example: sWA EIAuxPort** **CoLa A (ASCII)** ```text sWA{SPC}EIAuxPort ``` ```text 02 73 57 41 20 45 49 41 75 78 50 6F 72 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 41 20 45 49 41 75 78 50 6F 72 74 3C ```
### Read the Port Number for CoLa ASCII TCP/IP [sRN EIAuxPort] Returns the port number for CoLa ASCII TCP/IP (e.g. LMDscandata). **Telegram structure: sRN EIAuxPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | EIAuxPort | String | 9 | | `EIAuxPort` | `45 49 41 75 78 50 6F 72 74` | **Example: sRN EIAuxPort** **CoLa A (ASCII)** ```text sRN{SPC}EIAuxPort ``` ```text sRN EIAuxPort ``` ```text sRN EIAuxPort ``` ```text 02 73 52 4E 20 45 49 41 75 78 50 6F 72 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 52 4E 20 45 49 41 75 78 50 6F 72 74 36 ``` ```text 73 52 4E 20 45 49 41 75 78 50 6F 72 74 ``` **Telegram structure: sRA EIAuxPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | EIAuxPort | String | 9 | | `EIAuxPort` | `45 49 41 75 78 50 6F 72 74` | | Value | TCP port for CoLa ASCII communication | UInt_16 | 2 | | `+2111` | `08 3F` | **Example: sRA EIAuxPort** **CoLa A (ASCII)** ```text sRA{SPC}EIAuxPort{SPC}83F ``` ```text 02 73 52 41 20 45 49 41 75 78 50 6F 72 74 20 38 33 46 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 41 20 45 49 41 75 78 50 6F 72 74 20 08 3F 2E ```
### Set the Port Number for CoLa Binary TCP/IP [sWN EIHstPort] Set the port number for CoLa Binary TCP/IP (e.g. LMDscandata). **Telegram structure: sWN EIHstPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write request | String | 3 | | `sWN` | `73 57 4E` | | Variable name | EIHstPort | String | 9 | | `EIHstPort` | `45 49 48 73 74 50 6F 72 74` | | Value | TCP port for CoLa Binary communication | UInt_16 | 2 | | `+2112` | `08 40` | **Example: sWN EIHstPort** **CoLa A (ASCII)** ```text sWN{SPC}EIHstPort{SPC}+2112 ``` ```text sWN EIHstPort +2112 ``` ```text sWN EIHstPort +2112 ``` ```text 02 73 57 4E 20 45 49 48 73 74 50 6F 72 74 20 2B 32 31 31 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 4E 20 45 49 48 73 74 50 6F 72 74 20 08 40 58 ``` ```text 73 57 4E 20 45 49 48 73 74 50 6F 72 74 20 08 40 ``` **Telegram structure: sWA EIHstPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write answer | String | 3 | | `sWA` | `73 57 41` | | Variable name | Echo of variable name | String | 9 | | `EIHstPort` | `45 49 48 73 74 50 6F 72 74` | **Example: sWA EIHstPort** **CoLa A (ASCII)** ```text sWA{SPC}EIHstPort ``` ```text 02 73 57 41 20 45 49 48 73 74 50 6F 72 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 57 41 20 45 49 48 73 74 50 6F 72 74 3F ```
### Read the Port Number for CoLa Binary TCP/IP [sRN EIHstPort] Returns the port number for CoLa Binary TCP/IP (e.g. LMDscandata). **Telegram structure: sRN EIHstPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read request | String | 3 | | `sRN` | `73 52 4E` | | Variable name | EIHstPort | String | 9 | | `EIHstPort` | `45 49 48 73 74 50 6F 72 74` | **Example: sRN EIHstPort** **CoLa A (ASCII)** ```text sRN{SPC}EIHstPort ``` ```text sRN EIHstPort ``` ```text sRN EIHstPort ``` ```text 02 73 52 4E 20 45 49 48 73 74 50 6F 72 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 52 4E 20 45 49 48 73 74 50 6F 72 74 35 ``` ```text 73 52 4E 20 45 49 48 73 74 50 6F 72 74 ``` **Telegram structure: sRA EIHstPort** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read answer | String | 3 | | `sRA` | `73 52 41` | | Variable name | EIHstPort | String | 9 | | `EIHstPort` | `45 49 48 73 74 50 6F 72 74` | | Value | TCP port for CoLa Binary communication | UInt_16 | 2 | | `+2112` | `08 40` | **Example: sRA EIHstPort** **CoLa A (ASCII)** ```text sRA{SPC}EIHstPort{SPC}840 ``` ```text 02 73 52 41 20 45 49 48 73 74 50 6F 72 74 20 38 34 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 52 41 20 45 49 48 73 74 50 6F 72 74 20 08 40 52 ```
## IMU Data Output
### Set IMU Data Enable [sWN ImuDataEnable] Enables/ Disables streaming IMU data output. **Telegram structure: sWN ImuDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set streaming IMU data output. | String | 13 | | `ImuDataEnable` | `49 6D 75 44 61 74 61 45 6E 61 62 6C 65` | | IMU data stream | Enable/ disable | Bool | 1 | Disable:
Enable: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sWN ImuDataEnable 0 - Disable the streaming IMU data output** **CoLa A (ASCII)** ```text sWN{SPC}ImuDataEnable{SPC}0 ``` ```text sWN ImuDataEnable 0 ``` ```text sWN ImuDataEnable 0 ``` ```text 02 73 57 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 00 2A ``` ```text 73 57 4E 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 00 ``` **Telegram structure: sWA ImuDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set streaming IMU data output. | String | 13 | | `ImuDataEnable` | `49 6D 75 44 61 74 61 45 6E 61 62 6C 65` | **Example: sWA ImuDataEnable** **CoLa A (ASCII)** ```text sWA{SPC}ImuDataEnable ``` ```text 02 73 57 41 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 49 6D 75 44 61 74 61 45 6E 61 62 6C 65 20 25 ```
### Set IMU Data Streaming Ethernet Settings [sWN ImuDataEthSettings] Ethernet settings for the IMU data streaming functionality of the device **Telegram structure: sWN ImuDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set IMU data streaming ethernet settings | String | 18 | | `ImuDataEthSettings` | `49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming IMU data | Enum_8 | 1 | UDP: | `+1d (01h)` | `01` | | IP address | IP address of the destination for IMU data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the IMU data reseiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Example: sWN ImuDataEthSettings +1 +192 +168 +0 +100 +7503 Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (7503) **Example: sWN ImuDataEthSettings** **CoLa A (ASCII)** ```text sWN{SPC}ImuDataEthSettings{SPC}+1{SPC}+192{SPC}+168{SPC}+0{SPC}+100{SPC}+7503 ``` ```text sWN ImuDataEthSettings +1 +192 +168 +0 +100 +7503 ``` ```text sWN ImuDataEthSettings +1 +192 +168 +0 +100 +7503 ``` ```text 02 73 57 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 31 44 34 46 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1E 73 57 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F 28 ``` ```text 73 57 4E 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F ``` **Telegram structure: sWA ImuDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set IMU data streaming ethernet settings | String | 18 | | `ImuDataEthSettings` | `49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sWA ImuDataEthSettings** **CoLa A (ASCII)** ```text sWA{SPC}ImuDataEthSettings ``` ```text 02 73 57 41 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 41 20 49 6D 75 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 78 ```
## Encoder Data Output
### Set Encoder Data Enable [sWN EncoderDataEnable] Enables/ Disables streaming Encoder data output. **Telegram structure: sWN EncoderDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set streaming Encoder data output. | String | 17 | | `EncoderDataEnable` | `45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65` | | Encoder data stream | Enable/ disable | Bool | 1 | Disable:
Enable: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sWN EncoderDataEnable 0 - Disable the streaming Encoder data output** **CoLa A (ASCII)** ```text sWN{SPC}EncoderDataEnable{SPC}0 ``` ```text sWN EncoderDataEnable 0 ``` ```text sWN EncoderDataEnable 0 ``` ```text 02 73 57 4E 20 45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65 20 00 2F ``` ```text 73 57 4E 20 45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65 20 00 ``` **Telegram structure: sWA EncoderDataEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set streaming Encoder data output. | String | 17 | | `EncoderDataEnable` | `45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65` | **Example: sWA EncoderDataEnable** **CoLa A (ASCII)** ```text sWA{SPC}EncoderDataEnable ``` ```text 02 73 57 41 20 45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 45 6E 63 6F 64 65 72 44 61 74 61 45 6E 61 62 6C 65 20 20 ```
### Set Encoder Data Streaming Ethernet Settings [sWN EncoderDataEthSettings] Ethernet settings for the encoder data streaming functionality of the device **Telegram structure: sWN EncoderDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set Encoder data streaming ethernet settings | String | 22 | | `EncoderDataEthSettings` | `45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | | Protocol | Transport protocol for streaming IMU data | Enum_8 | 1 | UDP: | `+1d (01h)` | `01` | | IP address | IP address of the destination for IMU data receiver | Array | 4 | | `0 …+255d (00…FF)
0 …+255d (00..FF)
0 …+255d (00…FF)
0 …+255d (00…FF)` | `00 … FF
00 … FF
00 … FF
00 … FF` | | Port | Port destination of the Encoder data reseiver | Uint_16 | 2 | | `0 .. +65535d(00 00…FF FF)` | `00 00 … FF FF` | Example: sWN EncoderDataEthSettings +1 +192 +168 +0 +100 +7503 Protocol is set to UDP (1), IPAddress (192.168.0.100), Port (7503) **Example: sWN EncoderDataEthSettings** **CoLa A (ASCII)** ```text sWN{SPC}EncoderDataEthSettings{SPC}+1{SPC}+192{SPC}+168{SPC}+0{SPC}+100{SPC}+7503 ``` ```text sWN EncoderDataEthSettings +1 +192 +168 +0 +100 +7503 ``` ```text sWN EncoderDataEthSettings +1 +192 +168 +0 +100 +7503 ``` ```text 02 73 57 4E 20 45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 31 20 43 30 20 41 38 20 30 20 36 34 20 31 44 34 46 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 22 73 57 4E 20 45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F 2D ``` ```text 73 57 4E 20 45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 01 C0 A8 00 64 1D 4F ``` **Telegram structure: sWA EncoderDataEthSettings** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set Encoder data streaming ethernet settings | String | 22 | | `EncoderDataEthSettings` | `45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73` | **Example: sWA EncoderDataEthSettings** **CoLa A (ASCII)** ```text sWA{SPC}EncoderDataEthSettings ``` ```text 02 73 57 41 20 45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 57 41 20 45 6E 63 6F 64 65 72 44 61 74 61 45 74 68 53 65 74 74 69 6E 67 73 20 7D ```
### Set Encoder Settings [sWN LICencset] Define if and which type of encoder is connected to the device so that input signals are processed correctly. **Telegram structure: sWN LICencset** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Encoder settings | String | 9 | | `LICencset` | `4C 49 43 65 6E 63 73 65 74` | | Encoder setting | | Enum_8 | 1 | Off:
Single increment/INC1:
Direction recognition (phase):
Direction recognition (level):
Fixed speed: | `0
1
2
3
4` | `00
01
02
03
04` | **Example: sWN LICencset** **CoLa A (ASCII)** ```text sWN{SPC}LICencset{SPC}0 ``` ```text sWN LICencset 0 ``` ```text sWN LICencset 0 ``` ```text 02 73 57 4E 20 4C 49 43 65 6E 63 73 65 74 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 57 4E 20 4C 49 43 65 6E 63 73 65 74 20 00 26 ``` ```text 73 57 4E 20 4C 49 43 65 6E 63 73 65 74 20 00 ``` **Telegram structure: sWA LICencset** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Encoder settings | String | 9 | | `LICencset` | `4C 49 43 65 6E 63 73 65 74` | **Example: sWA LICencset** **CoLa A (ASCII)** ```text sWA{SPC}LICencset ``` ```text 02 73 57 41 20 4C 49 43 65 6E 63 73 65 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 49 43 65 6E 63 73 65 74 20 29 ```
### Set Encoder Resolution [sWN LICencres] Determine the encoder resolution in mm/increment. **Telegram structure: sWN LICencres** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set encoder resolution | String | 9 | | `LICencres` | `4C 49 43 65 6E 63 72 65 73` | | Encoder resolution | Resolution value in mm/Inc as float according to IEEE754 | Real | 4 | | `+0.001d … +2000d` | `3A 83 12 6F … 44 FA 00 00
(see IEEE 754)` | **Example: sWN LICencres** **CoLa A (ASCII)** ```text sWN{SPC}LICencres{SPC}+1000 ``` ```text sWN LICencres +1000 ``` ```text sWN LICencres +1000 ``` ```text 02 73 57 4E 20 4C 49 43 65 6E 63 72 65 73 20 2B 31 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 4E 20 4C 49 43 65 6E 63 72 65 73 20 44 7A 00 00 1E ``` ```text 73 57 4E 20 4C 49 43 65 6E 63 72 65 73 20 44 7A 00 00 ``` **Telegram structure: sWA LICencres** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set encoder resolution | String | 9 | | `LICencres` | `4C 49 43 65 6E 63 72 65 73` | **Example: sWA LICencres** **CoLa A (ASCII)** ```text sWA{SPC}LICencres ``` ```text 02 73 57 41 20 4C 49 43 65 6E 63 72 65 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0E 73 57 41 20 4C 49 43 65 6E 63 72 65 73 20 2F ```
### Reset Encoder Values [sMN LIDrstencoderinc] Reset current encoder tick value to 0. **Telegram structure: sMN LIDrstencoderinc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Reset Encoder values | String | 16 | | `LIDrstencoderinc` | `4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63` | **Example: sMN LIDrstencoderinc** **CoLa A (ASCII)** ```text sMN{SPC}LIDrstencoderinc ``` ```text sMN LIDrstencoderinc ``` ```text sMN LIDrstencoderinc ``` ```text 02 73 4D 4E 20 4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 4D 4E 20 4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63 74 ``` ```text 73 4D 4E 20 4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63 ``` **Telegram structure: sAN LIDrstencoderinc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Reset Encoder values | String | 16 | | `LIDrstencoderinc` | `4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63` | | Reset status | | Bool_1 | 1 | Successful
Failure/ Insufficient user level | `0
1` | `00
01` | **Example: sAN LIDrstencoderinc** **CoLa A (ASCII)** ```text sAN{SPC}LIDrstencoderinc{SPC}0 ``` ```text 02 73 41 4E 20 4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 41 4E 20 4C 49 44 72 73 74 65 6E 63 6F 64 65 72 69 6E 63 20 00 58 ```
### Enable Encoder Reference Input 1 Signal [sWN LICpos1enable] This command enables the encoder reference input signal. **Telegram structure: sWN LICpos1enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos1enable` | `4C 49 43 70 6F 73 31 65 6E 61 62 6C 65` | | Variable Data | Disable/ enable | Bool_1 | 1 | Disable:
Enable: | `0d (00h)
+1d (01h)` | `00
01` | **Example: sWN LICpos1enable - Enable reference input signal** **CoLa A (ASCII)** ```text sWN{SPC}LICpos1enable{SPC}1 ``` ```text sWN LICpos1enable 1 ``` ```text sWN LICpos1enable 1 ``` ```text 02 73 57 4E 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 20 01 71 ``` ```text 73 57 4E 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA LICpos1enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos1enable` | `4C 49 43 70 6F 73 31 65 6E 61 62 6C 65` | **Example: sWA LICpos1enable** **CoLa A (ASCII)** ```text sWA{SPC}LICpos1enable ``` ```text 02 73 57 41 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 20 7F ```
### Read Encoder Reference Input 1 Signal [sRN LICpos1enable] This command reads the state (enabled/ disabled) of the encoder reference input signal. **Telegram structure: sRN LICpos1enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos1enable` | `4C 49 43 70 6F 73 31 65 6E 61 62 6C 65` | **Example: sRN LICpos1enable** **CoLa A (ASCII)** ```text sRN{SPC}LICpos1enable ``` ```text sRN LICpos1enable ``` ```text sRN LICpos1enable ``` ```text 02 73 52 4E 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 55 ``` ```text 73 52 4E 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 ``` **Telegram structure: sRA LICpos1enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos1enable` | `4C 49 43 70 6F 73 31 65 6E 61 62 6C 65` | | Variable Data | Disabled/ enabled | Bool_1 | 1 | Disabled:
Enabled: | `0d (00h)
+1d (01h)` | `00
01` | **Example: sRA LICpos1enable - Encoder reference input signal is enabled** **CoLa A (ASCII)** ```text sRA{SPC}LICpos1enable{SPC}1 ``` ```text 02 73 52 41 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 4C 49 43 70 6F 73 31 65 6E 61 62 6C 65 20 01 7B ```
### Enable Encoder Reference Input 2 Signal [sWN LICpos2enable] This command enables the encoder reference input signal. **Telegram structure: sWN LICpos2enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos2enable` | `4C 49 43 70 6F 73 32 65 6E 61 62 6C 65` | | Variable Data | Disable/ enable | Bool_1 | 1 | Disable:
Enable: | `0d (00h)
+1d (01h)` | `00
01` | **Example: sWN LICpos2enable - Enable reference input signal** **CoLa A (ASCII)** ```text sWN{SPC}LICpos2enable{SPC}1 ``` ```text sWN LICpos2enable 1 ``` ```text sWN LICpos2enable 1 ``` ```text 02 73 57 4E 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 57 4E 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 20 01 72 ``` ```text 73 57 4E 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA LICpos2enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos2enable` | `4C 49 43 70 6F 73 32 65 6E 61 62 6C 65` | **Example: sWA LICpos2enable** **CoLa A (ASCII)** ```text sWA{SPC}LICpos2enable ``` ```text 02 73 57 41 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 57 41 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 20 7C ```
### Read Encoder Reference Input 2 Signal [sRN LICpos2enable] This command reads the state (enabled/ disabled) of the encoder reference input signal. **Telegram structure: sRN LICpos2enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos2enable` | `4C 49 43 70 6F 73 32 65 6E 61 62 6C 65` | **Example: sRN LICpos2enable** **CoLa A (ASCII)** ```text sRN{SPC}LICpos2enable ``` ```text sRN LICpos2enable ``` ```text sRN LICpos2enable ``` ```text 02 73 52 4E 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 52 4E 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 56 ``` ```text 73 52 4E 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 ``` **Telegram structure: sRA LICpos2enable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Enable encoder reference input signal | String | 13 | | `LICpos2enable` | `4C 49 43 70 6F 73 32 65 6E 61 62 6C 65` | | Variable Data | Disabled/ enabled | Bool_1 | 1 | Disabled:
Enabled: | `0d (00h)
+1d (01h)` | `00
01` | **Example: sRA LICpos2enable - Encoder reference input signal is enabled** **CoLa A (ASCII)** ```text sRA{SPC}LICpos2enable{SPC}1 ``` ```text 02 73 52 41 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 13 73 52 41 20 4C 49 43 70 6F 73 32 65 6E 61 62 6C 65 20 01 78 ```
## Data Reduction
### Set Angle Range Filter [sWN LFPangleRangeFilter] The angle range filter set up the horizontal (theta) and vertical (phi) start- and stop angle in rad. BeamIncrement = the 'beamIncrement' which is used to subsample the beams within the selected angle range. With a 'beamIncrement' of n only every nth beam from the selected angle range is copied to the output scan, i.e. the angle resolution is reduced by factor n. If the beamIncrement is zero it is set to one. **Telegram structure: sWN LFPangleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | filter set up the horizontal (theta) and vertical (phi) start- and stop angle in rad | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter | Bool_1 | 1 | Off:
On: | `+0d
+1d` | `00
01` | | Variable Data 2 | ThetaStart | Real | 4 | No impact on sensor setting but needs to be filled (see example) | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 3 | ThetaStop | Real | 4 | No impact on sensor setting but needs to be filled (see example) | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 4 | PhiStart | Real | 4 | No impact on sensor setting but needs to be filled (see example) | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 5 | PhiStop | Real | 4 | No impact on sensor setting but needs to be filled (see example) | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 6 | BeamIncrement | UInt_16 | 2 | No impact on sensor setting but needs to be filled (see example) | `1d…+20d` | `00 01 … 00 14` | Explanation: Enable the angle range filter and set up theta (horizontal) start -90°, theta stop +90°, phi (vertical) start -90°, phi stop +90°, beam increment 1 **Example: sWN LFPangleRangeFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPangleRangeFilter{SPC}1{SPC}-900000{SPC}+900000{SPC}-900000{SPC}+900000{SPC}1 ``` ```text sWN LFPangleRangeFilter 1 -900000 +900000 -900000 +900000 1 ``` ```text sWN LFPangleRangeFilter 1 -900000 +900000 -900000 +900000 1 ``` ```text 02 73 57 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 31 20 2D 39 30 30 30 30 30 20 2B 39 30 30 30 30 30 20 2D 39 30 30 30 30 30 20 2B 39 30 30 30 30 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2B 73 57 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 01 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 2E ``` ```text 73 57 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 01 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 ``` **Telegram structure: sWA LFP AngleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | filter set up the horizontal (theta) and vertical (phi) start- and stop angle in rad | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sWA LFPangleRangeFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPangleRangeFilter ``` ```text 02 73 57 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 57 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 21 ```
### Read Angle Range Filter [sRN LFPangleRangeFilter] The angle range filter set up the horizontal (theta) and vertical (phi) start- and stop angle in rad. BeamIncrement = the 'beamIncrement' which is used to subsample the beams within the selected angle range. With a 'beamIncrement' of n only every nth beam from the selected angle range is copied to the output scan, i.e. the angle resolution is reduced by factor n. If the beamIncrement is zero it is set to one. **Telegram structure: sRN LFPangleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | filter set up the horizontal (theta) and vertical (phi) start- and stop angle in rad | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sRN LFPangleRangeFilter** **CoLa A (ASCII)** ```text sRN{SPC}LFPangleRangeFilter ``` ```text 02 73 52 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 0B ``` **Telegram structure: sRA LFP AngleRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | filter set up the horizontal (theta) and vertical (phi) start- and stop angle in rad | String | 19 | | `LFPangleRangeFilter` | `4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter | Bool_1 | 1 | Off:
On: | `+0d
+1d` | `00
01` | | Variable Data 2 | ThetaStart | Real | 4 | No impact on sensor setting | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 3 | ThetaStop | Real | 4 | No impact on sensor setting | `-1,800,000d ... +1,800,000d (FFE488C0 ... 001B7740h)` | `FF E4 88 C0 … 00 1B 77 40` | | Variable Data 4 | PhiStart | Real | 4 | No impact on sensor setting | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 5 | PhiStop | Real | 4 | No impact on sensor setting | `-900,000d ... +900,000d (FFF24460 ... 000DBBA0h)` | `FF F2 44 60 … 00 0D BB A0` | | Variable Data 6 | BeamIncrement | UInt_16 | 2 | No impact on sensor setting | `1d…+20d` | `00 01 … 00 14` | Explanation: Angle range filter enabled and set up theta (horizontal) start -90°, theta stop +90°, phi (vertical) start -90°, phi stop +90°, beam increment 1 **Example: sRA LFPangleRangeFilter** **CoLa A (ASCII)** ```text sRA{SPC}LFPangleRangeFilter{SPC}1{SPC}FFF24460{SPC}DBBA0{SPC}FFF24460{SPC}DBBA0{SPC}1 ``` ```text sRA LFPangleRangeFilter 1 FFF24460 DBBA0 FFF24460 DBBA0 1 ``` ```text sRA LFPangleRangeFilter 1 FFF24460 DBBA0 FFF24460 DBBA0 1 ``` ```text 02 73 52 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 31 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 20 46 46 46 32 34 34 36 30 20 44 42 42 41 30 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2B 73 52 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 01 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 24 ``` ```text 73 52 41 20 4C 46 50 61 6E 67 6C 65 52 61 6E 67 65 46 69 6C 74 65 72 20 01 FF F2 44 60 00 0D BB A0 FF F2 44 60 00 0D BB A0 00 01 ```
### Set Interval Filter [sWN LFPintervalFilter] Enables and set up the interval filter. The interval filter reduce the scan output rate by a given factor. **Telegram structure: sWN LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Reduce the scan output rate by a given factor | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | | Variable data 1 | Enables/Disables the filter. | Bool | 1 | Off:
On: | `0d (00h)
+1d (01h)` | `00
01` | | Variable Data 2 | Only every nth scan is output where n is given by
the value of uiReductionFactor. | Uint_32 | 4 | | `1d…+50d
(00 00 00 01h … 00 00 00 32h)` | `00 00 00 01 … 00 00 00 32` | Enables the interval filter an set up to the 3rd scan **Example: sWN LFPintervalFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPintervalFilter{SPC}1{SPC}3 ``` ```text sWN LFPintervalFilter 1 3 ``` ```text sWN LFPintervalFilter 1 3 ``` ```text 02 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 31 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 01 00 00 00 03 0D ``` ```text 73 57 4E 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 01 00 00 00 03 ``` **Telegram structure: sWA LFPintervalFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Reduce the scan output rate by a given factor | String | 17 | | `LFPintervalFilter` | `4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72` | **Example: sWA LFPintervalFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPintervalFilter ``` ```text 02 73 57 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 4C 46 50 69 6E 74 65 72 76 61 6C 46 69 6C 74 65 72 20 00 ```
## Range Filter
### Set Rectangular Filter [sWN LFPcubicareafilter] **Telegram structure: sWN LFPcubicareafilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | CubicAreaFilter limits a polar scan to a axisparallel cube | String | 18 | | `LFPcubicareafilter` | `4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72` | | Variable data 1 | Enables/Disables the filter. | Bool | 1 | Off:
On: | `0d
1d` | `00
01` | | Variable Data 2 | X min
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 3 | X max
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 4 | Y min
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 5 | Y max
1/10 mm | Int_32 | 4 | | `-200000d…+200000d` | `FF FF B1 E0 … 00 00 4E 20` | | Variable Data 6 | Z min
1/10 mm | Int_32 | 4 | Other values than 0 will be ignored | `0` | `00 00 00 00` | | Variable Data 7 | Z max
1/10 mm | Int_32 | 4 | Other values than 0 will be ignored | `0` | `00 00 00 00` | **Example: sWN LFPcubicAreafilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPcubicareafilter{SPC}0{SPC}FFFFB1E0{SPC}4E20{SPC}FFFFB1E0{SPC}4E20{SPC}FFFFB1E0{SPC}4E20 ``` ```text sWN LFPcubicareafilter 0 FFFFB1E0 4E20 FFFFB1E0 4E20 FFFFB1E0 4E20 ``` ```text sWN LFPcubicareafilter 0 FFFFB1E0 4E20 FFFFB1E0 4E20 FFFFB1E0 4E20 ``` ```text 02 73 57 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 20 46 46 46 46 42 31 45 30 20 34 45 32 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 30 73 57 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 00 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 66 ``` ```text 73 57 4E 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 00 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 FF FF B1 E0 00 00 4E 20 ``` **Telegram structure: sWA LFPcubicareafilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | CubicAreaFilter limits a polar scan to a axisparallel cube | String | 18 | | `LFPcubicareafilter` | `4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72` | **Example: sWA LFPcubicareafilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPcubicareafilter ``` ```text 02 73 57 41 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 41 20 4C 46 50 63 75 62 69 63 61 72 65 61 66 69 6C 74 65 72 20 56 ```
### Set Radial Distance Range Filter [sWN LFPradialDistanceRangeFilter] Restriction of the scan(s) to a specified distance range. **Telegram structure: sWN LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Restriction of the scan(s) to a specified distance range. | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | | Variable Data 1 | Enables/Disables the filter. | Bool_1 | 1 | Off:
On: | `0d (0h)
1d (1h)` | `00
01` | | DistMin | Lower boundary of the distance range. | Int_32 | 4 | Minimum:
Maximum: | `+0d (0h)
+200000d (30D40h)` | `00 00 00 00
00 03 0D 40` | | DistMax | Upper boundary of the distance range. | Int_32 | 4 | Minimum:
Maximum: | `+0d (0h)
+200000d (30D40h)` | `00 00 00 00
00 03 0D 40` | Disable the radial distance range filter and set up the boundaries to min 0mm and max 200000mm. **Example: sWN LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sWN{SPC}LFPradialDistanceRangeFilter{SPC}0{SPC}0{SPC}30D40 ``` ```text sWN LFPradialDistanceRangeFilter 0 0 30D40 ``` ```text sWN LFPradialDistanceRangeFilter 0 0 30D40 ``` ```text 02 73 57 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 30 20 30 20 33 30 44 34 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2A 73 57 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 00 00 00 00 00 03 0D 40 31 ``` ```text 73 57 4E 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 00 00 00 00 00 00 03 0D 40 ``` **Telegram structure: sWA LFPradialDistanceRangeFilter** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Restriction of the scan(s) to a specified distance range. | String | 28 | | `LFPradialDistanceRangeFilter` | `4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72` | **Example: sWA LFPradialDistanceRangeFilter** **CoLa A (ASCII)** ```text sWA{SPC}LFPradialDistanceRangeFilter ``` ```text 02 73 57 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 57 41 20 4C 46 50 72 61 64 69 61 6C 44 69 73 74 61 6E 63 65 52 61 6E 67 65 46 69 6C 74 65 72 20 70 ```
## Field Evaluation
### Set Activation of Evaluation Group [sMN ActivateEvaluationGroup] The telegram is intended to activate or deactivate groups via telegram. The group activation needs to be changed from always to telegram in advance. **Telegram structure: sMN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of evaluation groups to activate/ deactivate | Array | Uint_16 | 2 | Each array element contains two parameters:Evaluation group numberDeactivation / activation of evaluation group | `1d ... 48d (1 ... 30h)` | `00 01 … 00 30` | | Evaluation group number | Evaluation group 1 | UInt_16 | 2 | | `1` | `00 01` | | Deactivation / activation of evaluation group | Activate / deactivate evaluation group 1 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | Evaluation group number | Evaluation group 2 | UInt_16 | 2 | | `2` | `00 02` | | Activate/ deactivate evaluation group | Activate / deactivate evaluation group 2 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | | ... | | | | | | | | Evaluation group number | Evaluation group 48 | UInt_16 | 2 | | `48d (30h)` | `00 30` | | Activate/ deactivate evaluation group | Activate / deactivate evaluation group 48 | Bool_1 | 1 | Deactivate:
Activate: | `0
1` | `00
01` | **Example1: sMN ActivateEvaluationGroup - Deactivate evaluation group 1 and 10** **CoLa A (ASCII)** ```text sMN{SPC}ActivateEvaluationGroup{SPC}2{SPC}1{SPC}0{SPC}+10{SPC}0 ``` ```text sMN ActivateEvaluationGroup 2 1 0 +10 0 ``` ```text sMN ActivateEvaluationGroup 2 1 0 +10 0 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 32 20 31 20 30 20 2B 31 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 02 00 01 00 00 0A 00 29 ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 02 00 01 00 00 0A 00 ``` **Example2: sMN ActivateEvaluationGroup - Deactivate evaluation group 1 and 10, activate evaluation group 2 and 3** **CoLa A (ASCII)** ```text sMN{SPC}ActivateEvaluationGroup{SPC}4{SPC}1{SPC}0{SPC}+10{SPC}0{SPC}2{SPC}1{SPC}3{SPC}1 ``` ```text sMN ActivateEvaluationGroup 4 1 0 +10 0 2 1 3 1 ``` ```text sMN ActivateEvaluationGroup 4 1 0 +10 0 2 1 3 1 ``` ```text 02 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 34 20 31 20 30 20 2B 31 30 20 30 20 32 20 31 20 33 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 2A 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 04 00 01 00 00 0A 00 00 02 01 00 03 01 2E ``` ```text 73 4D 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 04 00 01 00 00 0A 00 00 02 01 00 03 01 ``` **Telegram structure: sAN ActivateEvaluationGroup** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 52 41` | | Command | Activate / deactivate evaluation group | String | 23 | | `ActivateEvaluationGroup` | `41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70` | | Amount of activated/deactivated evaluation groups | - | UInt_16 | 2 | | `1h... 30h` | `00 01 … 00 30` | | State of activation / deactivation | - | Bool_1 | 1 | Activation/Deactivation failed:
Successfully activated/deactivated: | `0
1` | `00
01` | **Example 1: sAN ActivateEvaluationGroup - Successfully deactivated evaluation group 1** **CoLa A (ASCII)** ```text sAN{SPC}ActivateEvaluationGroup{SPC}1{SPC}1 ``` ```text 02 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 31 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 01 01 2C ``` **Example 2: sAN ActivateEvaluationGroup - Successfully deactivated evaluation group 1, successfully activated evaluation group 2, failed activation of evaluation group 3** **CoLa A (ASCII)** ```text sAN{SPC}ActivateEvaluationGroup{SPC}3{SPC}1{SPC}1{SPC}0 ``` ```text 02 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 33 20 31 20 31 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 41 4E 20 41 63 74 69 76 61 74 65 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 20 00 03 01 01 00 2F ```
### Read Evaluation Group Type [sRN EvaluationGroupType] Array with the type of each group, either perpendicular distance or field evaluation. **Telegram structure: sRN EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | **Example: sRN EvaluationGroupType** **CoLa A (ASCII)** ```text sRN{SPC}EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text sRN EvaluationGroupType ``` ```text 02 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 1E ``` ```text 73 52 4E 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 ``` **Telegram structure: sRA EvaluationGroupType** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | | String | 19 | | `EvaluationGroupType` | `45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65` | | Data | Type of evaluation group | Array | 48 | Field evaluation:
Perpendicular distance: | `0d (00h)
+1d (01h)` | `00
01` | **Example: sRA EvaluationGroupType - 3rd group is set as perpendicular distance** **CoLa A (ASCII)** ```text sRA{SPC}EvaluationGroupType{SPC}0{SPC}0{SPC}1{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 20 30 20 30 20 31 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 48 73 52 41 20 45 76 61 6C 75 61 74 69 6F 6E 47 72 6F 75 70 54 79 70 65 20 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 ```
### Set Field Evaluation Contour [sMN SetFieldEvaluationContour] This telegram can be used to change or reshape the contour/ polygon of an already defined field. It´s possible to add additional points. **Telegram structure: sMN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `+1d ... +48d (1h ... 30h)` | `00 01 … 00 30` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Array | 3 ... 100 | | `+3d ... +800d (3h ... 320h)` | `00 03... 03 20` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | ... | | | | | | | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `-120,000d ... +120,000d (FFFE2B40h … 1D4C0h)` | `FF FE 2B 40 … 00 01 D4 C0` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | Must be:
(Other values than 0 will lead to an error) | `0` | `00 00 00 00` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | Must be:
(Other values than 0 will lead to an error) | `0` | `00 00 00 00` | **Example: sMN SetFieldEvaluationContour** **CoLa A (ASCII)** ```text sMN{SPC}SetFieldEvaluationContour{SPC}1{SPC}4{SPC}+2000{SPC}+1000{SPC}+0{SPC}+1000{SPC}+0{SPC}+0{SPC}+2000{SPC}+0{SPC}+0{SPC}+0 ``` ```text sMN SetFieldEvaluationContour 1 4 +2000 +1000 +0 +1000 +0 +0 +2000 +0 +0 +0 ``` ```text sMN SetFieldEvaluationContour 1 4 +2000 +1000 +0 +1000 +0 +0 +2000 +0 +0 +0 ``` ```text 02 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 34 20 2B 32 30 30 30 20 2B 31 30 30 30 20 2B 30 20 2B 31 30 30 30 20 2B 30 20 2B 30 20 2B 32 30 30 30 20 2B 30 20 2B 30 20 2B 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4A 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 1D ``` ```text 73 4D 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 ``` **Telegram structure: sAN SetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 52 41` | | Command | Set the region of interest of an object detection evaluation | String | 25 | | `SetFieldEvaluationContour` | `53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | State of evaluation conversion | - | Enum_8 | 1 | Conversion successful:
Invalid Evaluation:
Invalid Polygon:
Invalid Z limit: | `0
1
2
3` | `00
01
02
03` | **Example: sAN SetFieldEvaluationContour - Evaluation conversion successful** **CoLa A (ASCII)** ```text sAN{SPC}SetFieldEvaluationContour{SPC}0 ``` ```text 02 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 41 4E 20 53 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 14 ```
### Get Field Evaluation Contour [sMN GetFieldEvaluationContour] This telegram can be used to read the contour/ polygon of an already defined field. **Telegram structure: sMN GetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Get the region of interest of an object detection evaluation | String | 25 | | `GetFieldEvaluationContour` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `+1d ... +48d (1h ... 30h)` | `00 01 … 00 30` | **Example: sMN GetFieldEvaluationContour** **CoLa A (ASCII)** ```text sMN{SPC}GetFieldEvaluationContour{SPC}1 ``` ```text sMN GetFieldEvaluationContour 1 ``` ```text sMN GetFieldEvaluationContour 1 ``` ```text 02 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 20 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 0D ``` ```text 73 4D 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 ``` **Telegram structure: sAN GetFieldEvaluationContour** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 52 41` | | Command | Get the region of interest of an object detection evaluation | String | 25 | | `GetFieldEvaluationContour` | `47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72` | | Length of array | | Uint_8 | 1 | Always: | `1` | `00 01` | | Evaluation ID | Specific ID of the evaluation that is to be changed | UInt_16 | 2 | | `1h ... 30h` | `00 01 … 00 30` | | Amount of polygon vertices | E. g. triangle = 3, square = 4 | Array | 3 ... 100 | | `3h ... 320h` | `00 03... 03 20` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | X coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of first polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | X coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of second polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | ... | | | | | | | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | X coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Polygon vertex | Coordinates of last polygon vertex in mm | Dint_32 | 4 | Y coordinate: | `FFFE2B40h ... 1D4C0h` | `FF FE 2B 40 … 00 01 D4 C0` | | Lower Z limit | Lower bound of extrusion in Z direction | Dint_32 | 4 | Always: | `0` | `00 00 00 00` | | Upper Z limit | Upper bound of extrusion in Z direction | Dint_32 | 4 | Always: | `0` | `00 00 00 00` | **Example: sAN GetFieldEvaluationContour** **CoLa A (ASCII)** ```text sAN{SPC}GetFieldEvaluationContour{SPC}1{SPC}1{SPC}4{SPC}7D0{SPC}3E8{SPC}0{SPC}3E8{SPC}0{SPC}0{SPC}7D0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 31 20 31 20 34 20 37 44 30 20 33 45 38 20 30 20 33 45 38 20 30 20 30 20 37 44 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 41 4E 20 47 65 74 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 43 6F 6E 74 6F 75 72 20 00 01 00 01 00 04 00 00 07 D0 00 00 03 E8 00 00 00 00 00 00 03 E8 00 00 00 00 00 00 00 00 00 00 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 04 ```
### Read Field Evaluation Result [sRN FieldEvaluationResult] This telegram returns the status information of all evaluations. **Telegram structure: sRN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | **Example: sRN FieldEvaluationResult** **CoLa A (ASCII)** ```text sRN{SPC}FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text sRN FieldEvaluationResult ``` ```text 02 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 12 ``` ```text 73 52 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 ``` **Telegram structure: sRA FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the last field infringement. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | ... | | | | | | | | Evaluation Result | Evaluation state of the last field. (maximum amount of evaluations = 48) | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | **Example: sRA FieldEvaluationResult - field 1 is infringed, field 2 is free** **CoLa A (ASCII)** ```text sRA{SPC}FieldEvaluationResult{SPC}1{SPC}1D869664{SPC}4{SPC}0{SPC}2{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 31 44 38 36 39 36 36 34 20 34 20 30 20 32 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 B4 73 52 41 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 1D 86 96 64 04 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 ```
### Receive Field Evaluation Result by Event [sEN FieldEvaluationResult] This telegram returns the status information of all evaluations. **Telegram structure: sEN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Reporting | Start/ stop | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN FieldEvaluationResult** **CoLa A (ASCII)** ```text sEN{SPC}FieldEvaluationResult{SPC}1 ``` ```text sEN FieldEvaluationResult 1 ``` ```text sEN FieldEvaluationResult 1 ``` ```text 02 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 24 ``` ```text 73 45 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sSN FieldEvaluationResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Info on field evaluation result | String | 21 | | `FieldEvaluationResult` | `46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74` | | Version | Version number | Uint_16 | 2 | | `0 ... FFFFh` | `00 ... FF FF` | | Timestamp | Time of the latest field infringement. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | ULInt_64 | 8 | | `0 ... FFFFFFFFFFFFFFFFh` | `00 00 00 00 00 00 00 00 ... FF FF FF FF FF FF FF FF` | | Evaluation Result | Evaluation state of the first field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | Evaluation Result | Evaluation state of the second field. | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | | ... | | | | | | | | Evaluation Result | Evaluation state of the last field.
(maximum amount of evaluations = 48) | Enum_8 | 1 | Not configured:
Inactive:
Free:
Detecting infringed:
Infringed:
Detecting free: | `0
1
2
3
4
5` | `00
01
02
03
04
05` | | Reserved | - | Enum_8 | 1 | Always: | `0` | `00` | **Example: sSN FieldEvaluationResult - field 1 is infringed, field 2 is free** **CoLa A (ASCII)** ```text sSN{SPC}FieldEvaluationResult{SPC}1{SPC}1D869664{SPC}4{SPC}0{SPC}2{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0{SPC}0 ``` ```text 02 73 53 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 31 20 31 44 38 36 39 36 36 34 20 34 20 30 20 32 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 B4 73 53 4E 20 46 69 65 6C 64 45 76 61 6C 75 61 74 69 6F 6E 52 65 73 75 6C 74 20 00 01 00 00 00 00 1D 86 96 64 04 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5D ```
### Start Teach-In [sMN StartTeachIn] Start teach-in of the environment. **Telegram structure: sMN StartTeachIn** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | StartTeachIn | String | 12 | | `StartTeachIn` | `53 74 61 72 74 54 65 61 63 68 49 6E` | **Example: sMN StartTeachIn** **CoLa A (ASCII)** ```text sMN{SPC}StartTeachIn ``` ```text sMN StartTeachIn ``` ```text sMN StartTeachIn ``` ```text 02 73 4D 4E 20 53 74 61 72 74 54 65 61 63 68 49 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 4D 4E 20 53 74 61 72 74 54 65 61 63 68 49 6E 6C ``` ```text 73 4D 4E 20 53 74 61 72 74 54 65 61 63 68 49 6E ``` **Telegram structure: sAN StartTeachIn** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 12 | | `StartTeachIn` | `53 74 61 72 74 54 65 61 63 68 49 6E` | **Example: sAN StartTeachIn** **CoLa A (ASCII)** ```text sAN{SPC}StartTeachIn ``` ```text 02 73 41 4E 20 53 74 61 72 74 54 65 61 63 68 49 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 41 4E 20 53 74 61 72 74 54 65 61 63 68 49 6E 20 40 ```
### Stop Teach-In [sMN StopTeachIn] Stop teach-in of the environment. **Telegram structure: sMN StopTeachIn** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | StopTeachIn | String | 11 | | `StopTeachIn` | `53 74 6F 70 54 65 61 63 68 49 6E` | **Example: sMN StopTeachIn** **CoLa A (ASCII)** ```text sMN{SPC}StopTeachIn ``` ```text sMN StopTeachIn ``` ```text sMN StopTeachIn ``` ```text 02 73 4D 4E 20 53 74 6F 70 54 65 61 63 68 49 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 4D 4E 20 53 74 6F 70 54 65 61 63 68 49 6E 14 ``` ```text 73 4D 4E 20 53 74 6F 70 54 65 61 63 68 49 6E ``` **Telegram structure: sAN StopTeachIn** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 11 | | `StopTeachIn` | `53 74 6F 70 54 65 61 63 68 49 6E` | **Example: sAN StopTeachIn** **CoLa A (ASCII)** ```text sAN{SPC}StopTeachIn ``` ```text 02 73 41 4E 20 53 74 6F 70 54 65 61 63 68 49 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 41 4E 20 53 74 6F 70 54 65 61 63 68 49 6E 20 38 ```
## Perpendicular Distance
### Request Perpendicular Distance Once [sRN perpendicularDistanceResult] This telegram can be used to request the perpendicular distance. The shortest and furthest measuring point in a range to a reference plane will be transmitted. A field and a reference plane must be defined in the user interface under Application > Perpendicular distance measurement. **Telegram structure: sRN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | **Example: sRN perpendicularDistanceResult** **CoLa A (ASCII)** ```text sRN{SPC}perpendicularDistanceResult ``` ```text sRN perpendicularDistanceResult ``` ```text sRN perpendicularDistanceResult ``` ```text 02 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1F 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 3D ``` ```text 73 52 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 ``` **Telegram structure: sRA perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Timestamp | Time of the latest object detection in the defined fields. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_32 | 8 | | `0 ... FFFFFFFFh` | `00 00 00 00 00 00 00 00... FF FF FF FF FF FF FF FF` | | Amount of channels | Amount of perpendicular distance evaluation channels/fields | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | ID of perpendicular distance field | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | Minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | X minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID X | X maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID ... | ... | ... | ... | ... | `...` | `...` | **Example: sRA perpendicularDistanceResult - 1 configured field** **CoLa A (ASCII)** ```text sRA{SPC}perpendicularDistanceResult{SPC}138D305E8{SPC}1{SPC}1{SPC}9D{SPC}7EA{SPC}9D{SPC}FFFFFC67{SPC}0{SPC}7EA{SPC}FFFFFD70{SPC}0 ``` ```text 02 73 52 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 31 33 38 44 33 30 35 45 38 20 31 20 31 20 39 44 20 37 45 41 20 39 44 20 46 46 46 46 46 43 36 37 20 30 20 37 45 41 20 46 46 46 46 46 44 37 30 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 52 41 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 00 00 00 01 31 80 92 88 00 01 00 01 00 00 00 9F 00 00 07 EB 00 00 00 9F FF FF FC 8C 00 00 00 00 00 00 07 EB FF FF FD 70 00 00 00 00 45 ```
### Request Perpendicular Distance Continuously on Event [sEN perpendicularDistanceResult] This telegram can be used to request the perpendicular distance continuously on event. The shortest and furthest measuring point in a range to a reference plane will be transmitted. A field and a reference plane must be defined in the user interface under Application > Perpendicular distance measurement. **Telegram structure: sEN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Event | String | 3 | | `sEN` | `73 45 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Start/ Stop | - | Enum_8 | 1 | Stop:
Start: | `0
1` | `00
01` | **Example: sEN perpendicularDistanceResult** **CoLa A (ASCII)** ```text sEN{SPC}perpendicularDistanceResult{SPC}1 ``` ```text sEN perpendicularDistanceResult 1 ``` ```text sEN perpendicularDistanceResult 1 ``` ```text 02 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 0B ``` ```text 73 45 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 01 ``` **Telegram structure: sSN perpendicularDistanceResult** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sSN` | `73 53 4E` | | Command | Perpendicular distance values | String | 27 | | `perpendicularDistanceResult` | `70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74` | | Timestamp | Time of the latest object detection in the defined fields. Time base is the sensor system time in milliseconds since January 1, 1970, 00:00 (UTC). If a time server is being used, the configured system time is used. | Uint_32 | 8 | | `0 ... FFFFFFFFh` | `00 00 00 00 00 00 00 00... FF FF FF FF FF FF FF FF` | | Amount of channels | Amount of perpendicular distance evaluation channels/fields | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | ID of perpendicular distance field | Enum_8 | 2 | | `1 ... 20d (1 ... 14h)` | `00 01 ... 00 14` | | Evaluation ID X | Minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | X minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y minimum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID X | X maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Y maximum distance [mm] | Int_32 | 4 | | `-120000d … +120000d (FFFE2B3F … 1D4C0h)` | `FF FE 2B 3F … 00 01 D4 C0` | | Evaluation ID X | Reserved | Int_32 | 4 | Always: | `0` | `00 00 00 00` | | Evaluation ID ... | ... | ... | ... | ... | `...` | `...` | **Example: sSN perpendicularDistanceResult - 1 configured field** **CoLa A (ASCII)** ```text sSN{SPC}perpendicularDistanceResult{SPC}D5BD2DA8{SPC}1{SPC}1{SPC}174{SPC}7CE{SPC}174{SPC}FFFFFFFC{SPC}0{SPC}7CE{SPC}FFFFFD13{SPC}0 ``` ```text 02 73 53 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 44 35 42 44 32 44 41 38 20 31 20 31 20 31 37 34 20 37 43 45 20 31 37 34 20 46 46 46 46 46 46 46 43 20 30 20 37 43 45 20 46 46 46 46 46 44 31 33 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 4C 73 53 4E 20 70 65 72 70 65 6E 64 69 63 75 6C 61 72 44 69 73 74 61 6E 63 65 52 65 73 75 6C 74 20 00 00 00 00 F9 B6 D5 88 00 01 00 01 00 00 00 9D 00 00 07 D0 00 00 00 9D FF FF FC D0 00 00 00 00 00 00 07 D0 FF FF FD 1F 00 00 00 00 C0 ```
## Operating Data
### Read Operating Hours [sRN ODoprh] Views the total number of operating hours during the lifetime of the device. **Telegram structure: sRN ODoprh** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read operating hours | String | 6 | | `ODoprh` | `4F 44 6F 70 72 68` | **Example: sRN ODoprh** **CoLa A (ASCII)** ```text sRN{SPC}ODoprh ``` ```text sRN ODoprh ``` ```text sRN ODoprh ``` ```text 02 73 52 4E 20 4F 44 6F 70 72 68 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 44 6F 70 72 68 41 ``` ```text 73 52 4E 20 4F 44 6F 70 72 68 ``` **Telegram structure: sRA ODoprh** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read operating hours | String | 6 | | `ODoprh` | `4F 44 6F 70 72 68` | | Value | Operating hours in 1/10 h | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODoprh** **CoLa A (ASCII)** ```text sRA{SPC}ODoprh{SPC}1B50B ``` ```text 02 73 52 41 20 4F 44 6F 70 72 68 20 31 42 35 30 42 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4F 44 6F 70 72 68 20 00 01 B5 0B D1 ``` Calculation of the value: 1B50B (hex) 111883 (dez) × 1/10 h = 11188.3 h
### Read Operating Hours Since Last Power On [sRN ODopdaily] Shows the runtime duration since the last power on of the device. **Telegram structure: sRN ODopdaily** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read operating hours | String | 9 | | `ODopdaily` | `4F 44 6F 70 64 61 69 6C 79` | **Example: sRN ODopdaily** **CoLa A (ASCII)** ```text sRN{SPC}ODopdaily ``` ```text sRN ODopdaily ``` ```text sRN ODopdaily ``` ```text 02 73 52 4E 20 4F 44 6F 70 64 61 69 6C 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0D 73 52 4E 20 4F 44 6F 70 64 61 69 6C 79 22 ``` ```text 73 52 4E 20 4F 44 6F 70 64 61 69 6C 79 ``` **Telegram structure: sRA ODopdaily** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read operating hours since last power on | String | 9 | | `ODopdaily` | `4F 44 6F 70 64 61 69 6C 79` | | Value | Operating hours in 1/10 h | Real as float according to IEEE754 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODopdaily** **CoLa A (ASCII)** ```text sRA{SPC}ODopdaily{SPC}424772B8 ``` ```text 02 73 52 41 20 4F 44 6F 70 64 61 69 6C 79 20 34 32 34 37 37 32 42 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 12 73 52 41 20 4F 44 6F 70 64 61 69 6C 79 20 42 47 72 B8 C2 ```
### Read Power on Counter [sRN ODpwrc] Shows the number of power on cycles. **Telegram structure: sRN ODpwrc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read power on counter | String | 6 | | `ODpwrc` | `4F 44 70 77 72 63` | **Example: sRN ODpwrc** **CoLa A (ASCII)** ```text sRN{SPC}ODpwrc ``` ```text sRN ODpwrc ``` ```text sRN ODpwrc ``` ```text 02 73 52 4E 20 4F 44 70 77 72 63 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 4F 44 70 77 72 63 52 ``` ```text 73 52 4E 20 4F 44 70 77 72 63 ``` **Telegram structure: sRA ODpwrc** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read power on counter | String | 6 | | `ODpwrc` | `4F 44 70 77 72 63` | | Value | Power on counter | Uint_32 | 4 | | `0h … FFFFFFFFh` | `00 00 00 00 …FF FF FF FF` | **Example: sRA ODpwrc** **CoLa A (ASCII)** ```text sRA{SPC}ODpwrc{SPC}9A ``` ```text 02 73 52 41 20 4F 44 70 77 72 63 20 39 41 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 41 20 4F 44 70 77 72 63 20 00 00 00 9A E7 ```
### Read Temperature [sRN OPcurtmpdev] With this command the internal temperature of the device can be identified. Please note that it does not give an indication of the current ambient temperature. **Telegram structure: sRN OPcurtmpdev** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read temperature of the device | String | 11 | | `OPcurtmpdev` | `4F 50 63 75 72 74 6D 70 64 65 76` | **Example: sRN OPcurtmpdev** **CoLa A (ASCII)** ```text sRN{SPC}OPcurtmpdev ``` ```text sRN OPcurtmpdev ``` ```text sRN OPcurtmpdev ``` ```text 02 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0F 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 2A ``` ```text 73 52 4E 20 4F 50 63 75 72 74 6D 70 64 65 76 ``` **Telegram structure: sRA OPcurtmpdev** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read temperature of the device | String | 11 | | `OPcurtmpdev` | `4F 50 63 75 72 74 6D 70 64 65 76` | | Temperature data | [°C] | Real as float according to IEEE754 | 4 | (-50°C … +100°C) | `C2480000h … 42C80000h` | `C2 48 00 00 … 42 C8 00 00` | Example: sRA OPcurtmpdev (35°C) **Example: sRA OPcurtmpdev** **CoLa A (ASCII)** ```text sRA{SPC}OPcurtmpdev{SPC}420C0000 ``` ```text 02 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 34 32 30 43 30 30 30 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 4F 50 63 75 72 74 6D 70 64 65 76 20 42 0C 00 00 4B ```
### Read Date of Last Permanent Save [sRN DIpara] This command reads the date at which the last permanent save was executed. **Telegram structure: sRN DIpara** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read date of last permanent save | String | 6 | | `DIpara` | `44 49 70 61 72 61` | **Example: sRN DIpara** **CoLa A (ASCII)** ```text sRN{SPC}DIpara ``` ```text sRN DIpara ``` ```text sRN DIpara ``` ```text 02 73 52 4E 20 44 49 70 61 72 61 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0A 73 52 4E 20 44 49 70 61 72 61 40 ``` ```text 73 52 4E 20 44 49 70 61 72 61 ``` **Telegram structure: sRA DIpara** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read date of last permanent save | String | 6 | | `DIpara` | `44 49 70 61 72 61` | | Reserved | - | Uint_8 | 1 | Always: | `Ah` | `0A` | | Date of last permanent save | DD.MM.YYYY | FlexString | 10 | | `(see example)` | `(see example)` | **Example: sRA DIpara** **CoLa A (ASCII)** ```text sRA{SPC}DIpara{SPC}A{SPC}09.01.2024 ``` ```text 02 73 52 41 20 44 49 70 61 72 61 20 41 20 30 39 2E 30 31 2E 32 30 32 34 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 44 49 70 61 72 61 20 00 0A 30 39 2E 30 31 2E 32 30 32 34 69 ```
### Read Time of Last Permanent Save [sRN DIparatm] This command reads the time at which the last permanent save was executed. **Telegram structure: sRN DIparatm** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Read time of last permanent save | String | 8 | | `DIparatm` | `44 49 70 61 72 61 74 6D` | **Example: sRN DIparatm** **CoLa A (ASCII)** ```text sRN{SPC}DIparatm ``` ```text sRN DIparatm ``` ```text sRN DIparatm ``` ```text 02 73 52 4E 20 44 49 70 61 72 61 74 6D 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 0C 73 52 4E 20 44 49 70 61 72 61 74 6D 59 ``` ```text 73 52 4E 20 44 49 70 61 72 61 74 6D ``` **Telegram structure: sRA DIparatm** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read time of last permanent save | String | 8 | | `DIparatm` | `44 49 70 61 72 61 74 6D` | | Reserved | - | Uint_16 | 2 | Always: | `5h` | `00 05` | | Time of last permanent save | HH:MM | String | 5 | | `(see example)` | `(see example)` | **Example: sRA DIparatm** **CoLa A (ASCII)** ```text sRA{SPC}DIparatm{SPC}5{SPC}12:28 ``` ```text 02 73 52 41 20 44 49 70 61 72 61 74 6D 20 35 20 31 32 3A 32 38 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 14 73 52 41 20 44 49 70 61 72 61 74 6D 20 00 05 31 32 3A 32 38 40 ```
### Read the Current Device Temperature Alarm Status [sRN temperatureAlarmStatus] Current device temperature alarm status. If true, the configured temperature alarm is active. **Telegram structure: sRN temperatureAlarmStatus** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Device temperature alarm status | String | 22 | | `temperatureAlarmStatus` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73` | **Example: sRN temperatureAlarmStatus** **CoLa A (ASCII)** ```text sRN{SPC}temperatureAlarmStatus ``` ```text sRN temperatureAlarmStatus ``` ```text sRN temperatureAlarmStatus ``` ```text 02 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 44 ``` ```text 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 ``` **Telegram structure: sRA temperatureAlarmStatus** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Device temperature alarm status | String | 22 | | `temperatureAlarmStatus` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73` | | Data | Alarm state | Bool_1 | 1 | Disabled:
Enabled: | `0d (00h)
+1d (01h)` | `00 ... 01` | **Example: sRA temperatureAlarmStatus - Temperature alarm status is off. The device runs in the defined temperature range** **CoLa A (ASCII)** ```text sRA{SPC}temperatureAlarmStatus{SPC}0 ``` ```text 02 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 20 30 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 53 74 61 74 75 73 20 00 6B ```
### Set Device Temperature Alarm Configuration [sWN temperatureAlarmConfiguration] Sets the upper and lower threshold for the temperature alarm status. **Telegram structure: sWN temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Data 1 | Upper threshold [°C] | Int_8 | 1 | Default: 55 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | | Data 2 | Lower threshold [°C] | Int_8 | 1 | Default: 50 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | **Example: sWN temperatureAlarmConfiguration - Set the upper threshold to 55 °C and the lower threshold to 50 °C** **CoLa A (ASCII)** ```text sWN{SPC}temperatureAlarmConfiguration{SPC}37{SPC}32 ``` ```text sWN temperatureAlarmConfiguration 37 32 ``` ```text sWN temperatureAlarmConfiguration 37 32 ``` ```text 02 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 33 37 20 33 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 00 ``` ```text 73 57 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 ``` **Telegram structure: sWA temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sWA temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sWA{SPC}temperatureAlarmConfiguration ``` ```text 02 73 57 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 22 73 57 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 0A ```
### Read Device Temperature Alarm Configuration [sRN temperatureAlarmConfiguration] Returns the upper and lower threshold for the temperature alarm status. **Telegram structure: sRN temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Read | String | 3 | | `sRN` | `73 52 4E` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | **Example: sRN temperatureAlarmConfiguration** **CoLa A (ASCII)** ```text sRN{SPC}temperatureAlarmConfiguration ``` ```text sRN temperatureAlarmConfiguration ``` ```text sRN temperatureAlarmConfiguration ``` ```text 02 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 21 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 ``` ```text 73 52 4E 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E ``` **Telegram structure: sRA temperatureAlarmConfiguration** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Device temperature alarm configuration | String | 29 | | `temperatureAlarmConfiguration` | `74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E` | | Data 1 | Upper threshold [°C] | Int_8 | 1 | Default: 55 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | | Data 2 | Lower threshold [°C] | Int_8 | 1 | Default: 50 | `-128d ... +127d (80h ... 7Fh)` | `80 ... 7F` | **Example: sRA temperatureAlarmConfiguration - 55 °C upper threshold and 50 °C lower threshold** **CoLa A (ASCII)** ```text sRA{SPC}temperatureAlarmConfiguration{SPC}37{SPC}32 ``` ```text 02 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 33 37 20 33 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 24 73 52 41 20 74 65 6D 70 65 72 61 74 75 72 65 41 6C 61 72 6D 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 37 32 0A ```
## Cybersecurity
### Set Device Search Mode [sWN EtherCoLaScanMode] This command configures the Auto IP functionalities (Device search by SICK Enginnering Tools) and the changeability of the IP address. The functionality can reduces the number of open ports to a minimum. **Telegram structure: sWN EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | | CoLa Scan / AutoIP search settings | Choose setting | Uint_8 | 1 | IP address can be found/changed without login:
IP address can be found/ changed with login:
Disable the Auto IP search/ IP change:
IP address can be found/changed for 1 min: | `0
1
2
3` | `00
01
02
03` | **Example: sWN EtherCoLaScanMode 2 - Disable the Auto IP search/ IP change** **CoLa A (ASCII)** ```text sWN{SPC}EtherCoLaScanMode{SPC}2 ``` ```text sWN EtherCoLaScanMode 2 ``` ```text sWN EtherCoLaScanMode 2 ``` ```text 02 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 32 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 02 3B ``` ```text 73 57 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 02 ``` **Telegram structure: sWA EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | **Example: sWA EtherCoLaScanMode** **CoLa A (ASCII)** ```text sWA{SPC}EtherCoLaScanMode ``` ```text 02 73 57 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 16 73 57 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 36 ```
### Read Device Search Mode [sRN EtherCoLaScanMode] This command polls the Auto IP functionalities (Device search by SICK Enginnering Tools) and the IP address changeability settings. **Telegram structure: sRN EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sRN` | `73 52 4E` | | Command | Read CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | **Example: sRN EtherCoLaScanMode** **CoLa A (ASCII)** ```text sRN{SPC}EtherCoLaScanMode ``` ```text sRN EtherCoLaScanMode ``` ```text sRN EtherCoLaScanMode ``` ```text 02 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 15 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 1C ``` ```text 73 52 4E 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 ``` **Telegram structure: sRA EtherCoLaScanMode** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | Read CoLa Scan / AutoIP search settings | String | 17 | | `EtherCoLaScanMode` | `45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65` | | CoLa Scan / AutoIP search settings | Poll setting | Uint_8 | 1 | IP address can be found/changed without login:
IP address can be found/ changed with login:
Auto IP search/ IP change is disabled:
IP address can be found/changed for 1 min: | `0
1
2
3` | `00
01
02
03` | **Example: sRA EtherCoLaScanMode 3 - IP address can be found/changed for 1 min** **CoLa A (ASCII)** ```text sRA{SPC}EtherCoLaScanMode{SPC}3 ``` ```text 02 73 52 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 33 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 52 41 20 45 74 68 65 72 43 6F 4C 61 53 63 61 6E 4D 6F 64 65 20 03 30 ```
### Enable/ Disable CoLa1 Interface [sWN EIAuxEnable] After enabling the CoLa1 interface, use port 2111 for CoLa A and port 2112 for CoLa B. **Telegram structure: sWN EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Write | String | 3 | | `sWN` | `73 57 4E` | | Command | Set CoLa1 interface | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | | CoLa1 interface | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN EIAuxEnable** **CoLa A (ASCII)** ```text sWN{SPC}EIAuxEnable{SPC}1 ``` ```text sWN EIAuxEnable 1 ``` ```text sWN EIAuxEnable 1 ``` ```text 02 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 11 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 0A ``` ```text 73 57 4E 20 45 49 41 75 78 45 6E 61 62 6C 65 20 01 ``` **Telegram structure: sWA EIAuxEnable** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | Set CoLa1 interface | String | 11 | | `EIAuxEnable` | `45 49 41 75 78 45 6E 61 62 6C 65` | **Example: sWA EIAuxEnable** **CoLa A (ASCII)** ```text sWA{SPC}EIAuxEnable ``` ```text 02 73 57 41 20 45 49 41 75 78 45 6E 61 62 6C 65 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 10 73 57 41 20 45 49 41 75 78 45 6E 61 62 6C 65 20 04 ```
### Set Webserver State [sMN SetWebserverEnabled] This command enables/ disables the Webserver. Port 80 will not be opened after a reboot. **Telegram structure: sMN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Enable/ disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sMN SetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}SetWebserverEnabled{SPC}1 ``` ```text sMN SetWebserverEnabled 1 ``` ```text sMN SetWebserverEnabled 1 ``` ```text 02 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 23 ``` ```text 73 4D 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 ``` **Telegram structure: sAN SetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Set Webserver state | String | 19 | | `SetWebserverEnabled` | `53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sAN SetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}SetWebserverEnabled ``` ```text 02 73 41 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 18 73 41 4E 20 53 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 2E ```
### Read Webserver State [sMN GetWebserverEnabled] Returns state if Webserver is enabled. **Telegram structure: sMN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method | String | 3 | | `sMN` | `73 4D 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | **Example: sMN GetWebserverEnabled** **CoLa A (ASCII)** ```text sMN{SPC}GetWebserverEnabled ``` ```text sMN GetWebserverEnabled ``` ```text sMN GetWebserverEnabled ``` ```text 02 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 17 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 16 ``` ```text 73 4D 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 ``` **Telegram structure: sAN GetWebserverEnabled** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sAN` | `73 41 4E` | | Command | Webserver state | String | 19 | | `GetWebserverEnabled` | `47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64` | | State | Status of the webserver | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sAN GetWebserverEnabled** **CoLa A (ASCII)** ```text sAN{SPC}GetWebserverEnabled{SPC}1 ``` ```text 02 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 41 4E 20 47 65 74 57 65 62 73 65 72 76 65 72 45 6E 61 62 6C 65 64 20 01 3B ```
## Detection History
### Enable Detection History Logging [sWN EnableDetectionHistory] Enables or disables the detection history logging. **Telegram structure: sWN EnableDetectionHistory** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | | String | 3 | | `sWN` | `73 57 4E` | | Command | EnableDetectionHistory | String | 22 | | `EnableDetectionHistory` | `45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79` | | Detection history logging | Enable/ Disable | Bool_1 | 1 | Disable:
Enable: | `0
1` | `00
01` | **Example: sWN EnableDetectionHistory** **CoLa A (ASCII)** ```text sWN{SPC}EnableDetectionHistory{SPC}1 ``` ```text sWN EnableDetectionHistory 1 ``` ```text sWN EnableDetectionHistory 1 ``` ```text 02 73 57 4E 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 57 4E 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 20 01 47 ``` ```text 73 57 4E 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 20 01 ``` **Telegram structure: sWA EnableDetectionHistory** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sWA` | `73 57 41` | | Command | EnableDetectionHistory | String | 22 | | `EnableDetectionHistory` | `45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79` | **Example: sWA EnableDetectionHistory** **CoLa A (ASCII)** ```text sWA{SPC}EnableDetectionHistory ``` ```text 02 73 57 41 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1B 73 57 41 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 20 49 ```
### Read Detection History Logging State [sRN EnableDetectionHistory] Reads whether the detection history logging is enabled or disabled. **Telegram structure: sRN EnableDetectionHistory** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | | String | 3 | | `sRN` | `73 52 4E` | | Command | EnableDetectionHistory | String | 22 | | `EnableDetectionHistory` | `45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79` | **Example: sRN EnableDetectionHistory** **CoLa A (ASCII)** ```text sRN{SPC}EnableDetectionHistory ``` ```text sRN EnableDetectionHistory ``` ```text sRN EnableDetectionHistory ``` ```text 02 73 52 4E 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1A 73 52 4E 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 63 ``` ```text 73 52 4E 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 ``` **Telegram structure: sRA EnableDetectionHistory** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Answer | String | 3 | | `sRA` | `73 52 41` | | Command | EnableDetectionHistory | String | 22 | | `EnableDetectionHistory` | `45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79` | | Detection history logging | Enabled/ Disabled | Bool_1 | 1 | Disabled:
Enabled: | `0
1` | `00
01` | **Example: sRA EnableDetectionHistory** **CoLa A (ASCII)** ```text sRA{SPC}EnableDetectionHistory{SPC}1 ``` ```text 02 73 52 41 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 20 31 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 1C 73 52 41 20 45 6E 61 62 6C 65 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 20 01 4D ```
### Reset Detection History Logging [sMN ResetDetectionHistory] Deletes all entries in the field evaluation logging list. **Telegram structure: sMN ResetDetectionHistory** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method invocation | String | 3 | | `sMN` | `73 4D 4E` | | Method name | ResetDetectionHistory | String | 21 | | `ResetDetectionHistory` | `52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79` | **Example: sMN ResetDetectionHistory** **CoLa A (ASCII)** ```text sMN{SPC}ResetDetectionHistory ``` ```text sMN ResetDetectionHistory ``` ```text sMN ResetDetectionHistory ``` ```text 02 73 4D 4E 20 52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 4D 4E 20 52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 08 ``` ```text 73 4D 4E 20 52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 ``` **Telegram structure: sAN ResetDetectionHistory** | Telegram part | Description | Variable | Length | Additional details | Values CoLa A (ASCII) | Values CoLa B (Binary) | | --- | --- | --- | --- | --- | --- | --- | | Command type | Method answer | String | 3 | | `sAN` | `73 41 4E` | | Method name | Echo of method name | String | 21 | | `ResetDetectionHistory` | `52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79` | **Example: sAN ResetDetectionHistory** **CoLa A (ASCII)** ```text sAN{SPC}ResetDetectionHistory ``` ```text 02 73 41 4E 20 52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 03 ``` **CoLa B (binary)** ```text 02 02 02 02 00 00 00 19 73 41 4E 20 52 65 73 65 74 44 65 74 65 63 74 69 6F 6E 48 69 73 74 6F 72 79 04 ```
--- # picoScan100 Electrical Connection and Pin Assignment > Wire a picoScan150 power, Ethernet, and digital I/O system plug to a controller using the documented M12 pin assignments. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/electrical-connection/ # Electrical Connection Compatible with: picoScan100 To check whether the sensor still receives its minimum supply voltage at the end of a long cable, use the [Cable Dimensioning](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cable-dimensioning/) calculator. ## Power / 3 IOs System plug part number: 2116047 ![System plug 2116047 with Ethernet and 5-pin power connectors](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical/system-plug-2116047.png){ width="320" } *System plug 2116047 for power and three configurable digital I/Os.* This system plug uses a male, 5-pin, A-coded M12 connector. ![5-pin PWR connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/picoscan100-pwr-5.png)

5-pin PWR connector face with numbered pins.

**PWR / 3 IOs** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `Vs` | Supply, +9 V DC to +30 V DC | | 2 | `IN2/OUT2` | Configurable digital input 2 or output 2 | | 3 | `GND` | Supply return, 0 V | | 4 | `IN1/OUT1` | Configurable digital input 1 or output 1 | | 5 | `IN3/OUT3` | Configurable digital input 3 or output 3 | ## Power / 6 IOs System plug part number: 2130754 ![System plug 2130754 with Ethernet and 12-pin power and I/O connectors](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical/system-plug-12-pin.png){ width="320" } *System plug 2130754 with a 12-pin power and I/O connector.* This system plug uses a male, 12-pin, A-coded M12 connector. ![12-pin PWR and I/O connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/picoscan100-pwr-12.png)

12-pin PWR and I/O connector face with numbered pins.

**PWR / 6 IOs** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `IN1/OUT1` | Configurable digital input 1 or output 1 | | 2 | `GND` | Supply return, 0 V | | 3 | `IN2/OUT2` | Configurable digital input 2 or output 2 | | 4 | — | Reserved; do not connect | | 5 | — | Reserved; do not connect | | 6 | `IN3/OUT3` | Configurable digital input 3 or output 3 | | 7 | `IN4/OUT4` | Configurable digital input 4 or output 4 | | 8 | `IN6/OUT6` | Configurable digital input 6 or output 6 | | 9 | `Vs` | Supply, +9 V DC to +30 V DC | | 10 | `IN5/OUT5` | Configurable digital input 5 or output 5 | | 11 | — | Reserved; do not connect | | 12 | — | Reserved; do not connect | ## Power / 6 IOs (TiM-Compatible) System plug part number: 2130871 ![TiM-compatible system plug 2130871 with Ethernet and 12-pin power and I/O connectors](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical/system-plug-12-pin.png){ width="320" } *System plug 2130871 uses the same housing as 2130754, with a TiM-compatible pin assignment.* This system plug also uses a male, 12-pin connector, but its assignment differs from system plug 2130754. It uses a TiM-compatible pin assignment. ![12-pin PWR and I/O connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/picoscan100-pwr-12.png)

12-pin PWR and I/O connector face with numbered pins.

**PWR / 6 IOs (TiM-Compatible)** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `GND` | Supply return, 0 V | | 2 | `Vs` | Supply, +9 V DC to +30 V DC | | 3 | `IN1/OUT1` | Configurable digital input 1 or output 1 | | 4 | `IN2/OUT2` | Configurable digital input 2 or output 2 | | 5 | `IN3/OUT3` | Configurable digital input 3 or output 3 | | 6 | `IN4/OUT4` | Configurable digital input 4 or output 4 | | 7 | `IN5/OUT5` | Configurable digital input 5 or output 5 | | 8 | `IN6/OUT6` | Configurable digital input 6 or output 6 | | 9–12 | — | Reserved; do not connect | ## Ethernet The Ethernet connection uses a female, 4-pin, D-coded M12 connector. ![Ethernet connector face with numbered pins](https://sickag.github.io/sick_lidar_developer_guide/assets/electrical-symbols/picoscan100-ethernet.png)

Ethernet connector face with numbered pins.

**Ethernet** connector pin assignments and signal functions.

| Pin | Signal | Function | | --- | --- | --- | | 1 | `TX+` | Transmit + | | 2 | `RX+` | Receive + | | 3 | `TX-` | Transmit − | | 4 | `RX-` | Receive − | --- # picoScan100 Licenses and Part Numbers > picoScan100 software licenses: streaming, field evaluation, teach-in, perpendicular distance, native ROS 2, and more, with part numbers and firmware availability. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/licenses/ # Licenses The picoScan software packages below enable optional device functions. Activate a purchased license through the sensor's license-management workflow. The picoScan150 PRO variants (part numbers 1134610, used in the [Starter Kit](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/starter-kit/), and 1142273) are delivered with the native ROS 2 license (PICOSCAN ROSCONNECT) pre-installed; check the other licenses of your variant with its Product ID on sick.com. ## Measurement Data and Object Detection

**Measurement Data and Object Detection:** package, license, part number, and availability.

| Package | License | Part number | Availability | | --- | --- | --- | --- | | Measurement-data output | PICOSCAN STREAMING | 1134356 | Since product launch | | 2D Object Detection | PICOSCAN 2D FIELD EVALUATION | 1134371 | Since firmware V1.3.0; S/N 2418 | | 2D Object Detection | PICOSCAN FIELD INFRINGEMENT LOGGING | 1134370 | Since firmware V1.3.0; S/N 2418 | | 2D Object Detection Advanced | PICOSCAN TEACH-IN | 1146090 | Since firmware V1.5.0; S/N 2445 | | 2D Object Detection Advanced | PICOSCAN PERPENDICULAR DISTANCE | 1146093 | Since firmware V2.1.0; S/N 2517 | 2D Object Detection provides configurable fields, including island fields, and Ethernet control of field configurations. The Advanced functions require the 2D Object Detection package and add teach-in, reference-contour monitoring, and perpendicular distance measurement. ## Dynamic Sensing Profiles Dynamic sensing profiles switch between preset scan configurations without restarting the sensor. They support application-specific operating modes, such as close-range positioning, wide-area navigation, and fast collision avoidance. These licenses are available only for Prime and Pro variants.

**Dynamic Sensing Profiles:** profile, license, part number, and availability.

| Profile | License | Part number | Availability | | --- | --- | --- | --- | | 1: 15 Hz, 0.5° | PICOSCAN DYNAMIC SENSING PROFILE 1 | 1134357 | Since product launch | | 2: 15 Hz, 0.33° | PICOSCAN DYNAMIC SENSING PROFILE 2 | - | Since product launch | | 3: 20 Hz, 0.1° | PICOSCAN DYNAMIC SENSING PROFILE 3 | 1134359 | Since product launch | | 4: 20 Hz, 0.25° | PICOSCAN DYNAMIC SENSING PROFILE 4 | 1134360 | Since product launch | | 5: 25 Hz, 0.25° | PICOSCAN DYNAMIC SENSING PROFILE 5 | 1134361 | Since product launch | | 6: 30 Hz, 0.1° | PICOSCAN DYNAMIC SENSING PROFILE 6 | 1134362 | Since product launch | | 7: 40 Hz, 0.25° | PICOSCAN DYNAMIC SENSING PROFILE 7 | 1134363 | Since product launch | | 8: 50 Hz, 0.25° | PICOSCAN DYNAMIC SENSING PROFILE 8 | 1134364 | Since product launch | | 9: 15 Hz, 0.05° | PICOSCAN DYNAMIC SENSING PROFILE 9 | 1134365 | Since product launch | | 10: 40 Hz, 0.125° | PICOSCAN DYNAMIC SENSING PROFILE 10 | 1134366 | Since product launch | | 11: 15 Hz, 1° | PICOSCAN DYNAMIC SENSING PROFILE 11 | - | Since firmware V1.3.0; S/N 2418 | ## Data Preparation and Reliability

**Data Preparation and Reliability:** package, license, part number, and availability.

| Package | License | Part number | Availability | | --- | --- | --- | --- | | Data Reduction & Data Preparation | PICOSCAN RADIAL DISTANCE FILTER | 1134373 | Since product launch | | Data Reduction & Data Preparation | PICOSCAN HORIZONTAL FOV FILTER | 1134375 | Since product launch | | Data Reduction & Data Preparation | PICOSCAN INTERVAL FILTER | 1134376 | Since product launch | | Data Reduction & Data Preparation | PICOSCAN AVERAGING FILTER (SPATIAL) | 1134378 | Since product launch | | Data Reduction & Data Preparation | PICOSCAN MOVING AVERAGE FILTER | 1134379 | Since product launch | | Reliability | PICOSCAN PARTICLE FILTER | 1134377 | Since product launch | | Reliability | PICOSCAN CONTAMINATION DETECTION | 1134383 | Since product launch | | Reliability | PICOSCAN FOG FILTER | 1134385 | Since product launch | ## Additional Functions

**Additional Functions:** function, license, part number, and availability.

| Function | License | Part number | Availability | | --- | --- | --- | --- | | Multi-echo technology | PICOSCAN MULTI ECHO | 1134382 | Since product launch | | IMU | PICOSCAN INERTIAL MEASUREMENT UNIT | 1134384 | Since product launch | | Reflector detection | PICOSCAN REFLECTOR RECOGNITION | 1134386 | Since product launch | | PTP | PICOSCAN TIME SYNC PTP | 1134388 | Since product launch | | LMDscandata | PICOSCAN LMD SCANDATA | 1135217 | Since product launch | | Native ROS 2 | PICOSCAN ROSCONNECT | 1141364 | Since firmware V1.2.0; S/N 2410 | | Encoders | PICOSCAN ENCODER | 1153071 | Since firmware V2.2.1; S/N 2612 | --- # picoScan100 Firmware Release Notes > picoScan100 firmware release history from V1.0.2 to V2.3.3: new features, fixes, new CoLa telegrams and REST endpoints, and update instructions. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/release-notes/ # Release Notes This page records picoScan100 firmware changes, fixes, and compatibility notes across releases. Use it to assess update impact and find the release information relevant to your installed firmware. ## General Information V1.x.x/V2.x.x is standard firmware for all picoScan100 variants. Downgrades are not possible. A firmware update typically does not affect active parameter settings or purchased features / licenses for picoScan100 variants. Restart the device after activating or deactivating licenses. ## Update Instructions **Recommended update path to V2.3.3.**

**Update Instructions:** current firmware, target firmware, recommended update tool / procedure, and firmware update file.

| Current firmware | Target firmware | Recommended update tool / procedure | Firmware update file | | ---------------- | --------------- | ----------------------------------- | ------------------------------- | | V2.3.1 | V2.3.3 | SOPASair, web browser, or REST API | `picoScan100_V2.3.3.spk.signed` | | V2.2.1 | V2.3.3 | SOPASair, web browser, or REST API | `picoScan100_V2.3.3.spk.signed` | | V2.1.0 | V2.3.3 | SOPASair, web browser, or REST API | `picoScan100_V2.3.3.spk` | | V2.0.0 | V2.3.3 | SOPAS ET | `picoScan100_V2.3.3.spk` | | V1.x.x | V2.3.3 | SOPAS ET | `picoScan100_V2.3.3.spk` | After selecting a `.spk.signed` file, the upload process may take several seconds. Once the upload is complete, the **Install now** button becomes active and allows the update to begin. After a successful update, the device indicates completion by showing a green LED again. If the dialog becomes unresponsive, refresh the browser. **Firmware update via SOPASair.** Recommended for firmware versions `>= V2.1.0`. SOPASair offers the possibility of a firmware update via web browser. **Headless firmware update via HTTP / REST.** Possible with firmware versions `>= V1.4.0`. Follow [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/#headless-via-the-rest-api) for the complete sequence with authentication. The OpenAPI description is available in the product download section. **Firmware update via SOPAS ET.** Recommended for firmware versions `<= V2.0.0`. Follow the [SOPAS ET steps](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/#sopas-et); the update can take up to 2 minutes. ## Firmware V2.3.3 **Compatible with:** picoScan120 and picoScan150; **Release date:** cw 31/2026; **Effective from:** S/N 2632xxxx > Important note: Devices with serial numbers `>= 2632xxxx` can only be operated with firmware version V2.3.3 or later. Earlier firmware versions are not supported. **Improvements and fixes.** - Motor control has been improved for picoScan150 and picoScan120. **Known issues.** - Contamination indication segments show **clean** if the measurement is stopped or the device is in stand-by mode. After a device reboot, the contamination indication output may initialize with an incorrect logical state when assigned to a digital output with inversion enabled. The output status is corrected once a new contamination event is detected. - A file error can occur during system diagnosis under high load. This happens when the system diagnosis is called on a device where Particle filter, Moving average filter, and Streaming are active. Deactivate those filters before executing the system diagnosis. - In very rare cases, device availability after startup is slightly delayed. In this case, the device is fully operational within 20 seconds. - When changing input and output settings or importing configuration files, an occasional parameterization message can appear in the diagnostics overview: **Too many functions are active at the same time. Deactivate functions that are not required.** This message can be safely ignored because the error becomes inactive immediately. - Native ROS 2 provides the ROS standard message type `MultiEchoLaserScan`. For this message type, scan profiles 1, 2, 4, and 11 are recommended. ## Firmware V2.3.1 **Compatible with:** picoScan120 and picoScan150; **Release date:** cw 22/2026; **Effective from:** S/N 2625xxxx **New features.** **Data output format LMDscandata configurable.** The graphical user interface allows users to configure the content of the LMDscandata output format, for example disabling RSSI values to reduce network bandwidth. **Data output format Compact configurable.** The graphical user interface allows users to configure the content of the Compact output format, for example disabling RSSI values to reduce network bandwidth. **3D point cloud capture and data export.** For demonstration purposes, it is possible to swivel or move the scanner in a linear direction to capture a 3D point cloud of the surrounding environment using the encoder input or the integrated IMU of the picoScan150. The captured 3D point cloud is visualized in the Scan View GUI and can be exported as a `.pcd` file. **Support for PoE system plug.** This firmware version is required to operate the picoScan150 in combination with the newly developed PoE system plug variant. **Support for new frontend.** With this firmware version, picoScan150 and picoScan120 are prepared for compatibility with a new laser frontend as hardware change. The hardware change is planned for implementation in production at a later point in time. Firmware V2.3.1 or later is required to operate devices with the new hardware. Earlier firmware versions are not compatible with the new hardware. **WebSocket events.** Added WebSocket-based event subscription support, enabling real-time push notifications over a persistent `/apievents` connection. A single WebSocket link handles multiple event registrations, e.g. contamination, device status, field evaluation, temperature and other events. **UDP multicast for IMU and encoder data.** Added support for UDP multicast for both IMU and encoder data streams. The UDP destination address can now be configured as a multicast address. **CoLa A/B port configurable.** The CoLa A and CoLa B communication ports, default 2111 and 2112, can now be configured individually. This is useful for compatibility with other SICK LiDAR devices that support the LMDscandata output format. **Support of Virtual Sensor Lab.** The [Virtual Sensor Lab](https://devices.cloud.sick.com/) enables users to explore the graphical user interface without requiring a physical device. It also allows the creation of offline configuration files (`.json`) which can be exported and later imported into another device. Configuration files from physical devices can be loaded and viewed in the Virtual Sensor Lab. The web-based tool can set the system plug type, 5-pin or 12-pin. Import and export of `.sopas` files is not supported. **Cybersecurity improvements.** System plug variants can clone network parameters, and this firmware allows network parameter cloning to be disabled. The GUI Cyber Security page displays the encoder setup and can enable or disable encoder data streaming. Internal device dependencies were updated to address security vulnerabilities and align with cyber secure software development. **Improvements and fixes.** - The **Optimized for Robustness** sensitivity mode improves measurements on retroreflectors. It suppresses and filters blooming effects associated with these targets, making the measurement results more stable and robust. - Reflector tagging is corrected for the 20 m to 30 m distance range. Previously, tags were inconsistent and some measurement points on retroreflectors were not marked as reflector returns. These points are now tagged reliably within the affected range. - Environment teach-in results survive a device reboot and are included when a parameter file is downloaded from the device. This allows the recorded environment to be reused and simplifies configuration. - Encoder processing no longer produces implausible values from incorrectly interpolated encoder data. The interpolation error that occurred in some cases has been corrected. - The sectors selected for contamination indication are now retained reliably after a reboot. Previously, some sector selections were not saved correctly. - The Native ROS 2 descriptions for **child frame** and **parent frame** are corrected; they were previously interchanged. - Native ROS 2 now operates reliably with DHCP IP address servers. **API changes and publications.** For a complete reference, consult the OpenAPI description in the product download section on [sick.com](https://www.sick.com/). Session-token-based authentication now secures parameter-file upload, download, and import. A short-lived `X-Session-Token`, obtained at service level, creates, downloads, re-uploads, and restores a JSON parameter file. New full-screen URLs are `http:///#/?fullscreen=` and `http:///#/?fullscreen_mode=`. `http:///#/?scanview_fullscreen=` has been disabled. The OpenAPI files are available for [picoScan120](https://www.sick.com/de/en/downloads/media/swp684461) and [picoScan150](https://www.sick.com/de/en/downloads/media/swp678507). **Introduced telegrams / REST endpoints.**

**Firmware V2.3.1:** description, CoLa A/B, and REST.

| Description | CoLa A/B | REST | | ----------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------- | | Returns the type of the sending unit | `sRN laserType` | `GET /api/laserType` | | Returns the type of the receiving unit | `sRN sipmType` | `GET /api/sipmType` | | Returns/sets whether blocked sectors are treated as blocked or contaminated sectors | `sRN/sWN treatBlockedSectorsAsErrorSectors` | `GET/POST /api/treatBlockedSectorsAsErrorSectors` | | Enables/disables system plug cloning | `sRN/sWN enableCloningPlug` | `GET/POST /api/enableCloningPlug` | | Returns/sets Compact telegram type 1 content | `sRN/sWN compactTelegramType1Content` | `GET/POST /api/compactTelegramType1Content` | | Returns/sets LMDscandata configuration | `sRN/sWN LMDscandatacfg` | `GET/POST /api/ScanDataConfig` | | Returns/sets LMDscandata CoLa ASCII TCP port settings | `sRN/sWN EIAuxPort` | `GET/POST /api/EtherAuxIPPort` | | Returns/sets LMDscandata CoLa Binary TCP port settings | `sRN/sWN EIHstPort` | `GET/POST /api/EtherHostIPPort` | | Returns/sets session timeout for LMDscandata output | `sRN/sWN EtherSessionTimeout` | `GET/POST /api/EtherSessionTimeout` | | Returns/sets ROS domain ID | `sRN/sWN rosDomainId` | `GET/POST /api/rosDomainId` | | Enables/disables 3D scan recorder | `sRN/sWN ScanMergerEnabled` | `GET/POST /api/ScanMergerEnabled` | | Returns/sets data source for scan merging | `sRN/sWN ScanMergerSource` | `GET/POST /api/ScanMergerSource` | | Returns/sets encoder transformation type | `sRN/sWN EncoderTransformationType` | `GET/POST /api/EncoderTransformationType` | | Returns/sets encoder rotation center in mm | `sRN/sWN EncoderRotation` | `GET/POST /api/EncoderRotation` | | Returns/sets encoder translation in mm | `sRN/sWN EncoderTranslation` | `GET/POST /api/EncoderTranslation` | | Returns/sets rotation center offset | `sRN/sWN RotationOffset` | `GET/POST /api/RotationOffset` | | Returns/sets scan merge trigger | `sRN/sWN ScanMergeTrigger` | `GET/POST /api/ScanMergeTrigger` | | Starts 3D scan recording | `sMN StartScanMerge` | `POST /api/StartScanMerge` | | Stops 3D scan recording | `sMN StopScanMerge` | `POST /api/StopScanMerge` | | Deletes currently displayed point clouds | `sMN ResetScanMergeView` | `POST /api/ResetScanMergeView` | | Returns saving status for merged scans | `sRN MergeSaving` | `GET /api/MergeSaving` | As soon as a scan merge is completed, the point cloud is available for download at `http:///cloud.pcd`. **Known issues.** - Contamination indication segments show **clean** when measurement is stopped or the device is in stand-by mode. - A file error can occur during system diagnosis under high load when Particle filter, Moving average filter, and Streaming are active; deactivate those filters before running the diagnosis. - Device availability may very rarely be delayed but becomes fully operational within 20 seconds. - The occasional parameterization message **Too many functions are active at the same time. Deactivate functions that are not required.** can be ignored when it becomes inactive immediately. - Native ROS 2 provides `MultiEchoLaserScan`, for which scan profiles 1, 2, 4, and 11 are recommended. ## Firmware V2.2.1 **Compatible with:** picoScan120 and picoScan150; **Release date:** cw 11/2026; **Effective from:** S/N 2612xxxx for picoScan150 and S/N 2613xxxx for picoScan120 **Improvements and fixes.** This release includes minor GUI improvements and bug fixes. **Known issues.** - Contamination indication segments show **clean** when measurement is stopped or the device is in stand-by mode. - A file error can occur during system diagnosis under high load when Particle filter, Moving average filter, and Streaming are active; deactivate those filters before running the diagnosis. - Device availability may very rarely be delayed but becomes fully operational within 20 seconds. - The occasional parameterization message **Too many functions are active at the same time. Deactivate functions that are not required.** can be ignored when it becomes inactive immediately. - Native ROS 2 does not provide measurement data after DHCP fallback, so ensure that the DHCP server is available after boot. - The Native ROS 2 GUI parameter descriptions for **child frame** and **parent frame** are interchanged. ## Firmware V2.2.0 **Compatible with:** picoScan120 and picoScan150; **Release date:** cw 03/2026; **Effective from:** not released for production **New features.** **Encoder input support.** The device has a digital encoder input for recording incremental encoder signals. Configuration can be done via the user interface or telegram using the communication interface. The encoder input supports single-channel encoders (A) and dual-channel encoders (A/B) for direction determination. Recorded pulses are provided with a high-resolution timestamp using NTP / PTP and output either as a separate UDP stream or as part of LMDscandata. External reference signals can also be fed in, for example encoder Z signal or limit switch signals. **Download and import of parameter files via SOPASair.** The parameter set can be manually saved as a project file (`*.json`) on the computer via **Download / Import configuration file**. This is the generally recommended procedure. The project file can be transferred to another product and optionally password-protected. SOPAS ET is obsolete for transferring project files. **Temperature alarm via digital output.** The device can set a temperature alarm via digital output. The internal temperature is continuously monitored. If the set temperature is exceeded, a digital output is switched. Threshold settings can be applied via the communication interface. **Checksum for device validation.** The sensor can compute a checksum to verify critical device information, including device type, system plug, parameter setting, point of time of last save, calibration data, operating system and active licenses. **Full screen mode button.** The three-dot menu includes a full screen mode. When activated, it hides the main menu control bar. Press ESC to exit full screen. **Improvements and fixes.** - The GUI now offers **Native ROS 2** as a selectable data format. Communication uses DDS (Data Distribution Service) to transmit measurement data directly in ROS 2-compatible formats, without additional drivers and with minimal delay. - Motor-controller settings have been optimized for device startup. - The angle range filter can again be disabled for LMDscandata output. Previously, disabling the filter did not work. **Cybersecurity improvements.** **Signed firmware update support.** This firmware forms the basis for signed firmware updates. Future firmware packages in `.spk.signed` format will be validated by the sensor before installation to help ensure that only authentic and tamper-proof software is installed. **Behavioral changes.** - The GUI provides an undo function for the last parameter change and includes minor visual improvements. - Opening the device window in SOPAS ET now displays a generic start page with a link to the browser. - The contamination-indication setting **Evaluation for blocked sectors** lets users choose whether blocked sectors are evaluated as heavy contamination. A sector can be blocked when the device is installed close to a wall or an object covers the optical hood. The setting is also available via CoLa A/B and REST. - An IMU plausibility check detects missing or frozen data and creates an error-log entry when the data is implausible. - **Reset and maintain communication interfaces** now preserves HTTPS certificates because they are part of the communication interface. **API changes and publications.** The OpenAPI files are available for [picoScan120](https://www.sick.com/de/en/downloads/media/swp684461) and [picoScan150](https://www.sick.com/de/en/downloads/media/swp678507).

**Firmware V2.2.0:** description, CoLa A/B, and REST.

| Description | CoLa A/B | REST | | ------------------------------------------------- | --------------------------------------- | --------------------------------------------- | | Create configuration file on device | - | `POST /api/CreateParameterBackup` | | Download/import configuration file from/to device | - | `POST /api/parameterbackup` | | Restore configuration file on device | - | `POST /api/RestoreParameterBackup` | | Returns checksum over software and configurations | `sRN LFTchecksum` | `GET /api/LFTchecksum` | | Returns/sets temperature alarm thresholds | `sRN/sWN temperatureAlarmConfiguration` | `GET/POST /api/temperatureAlarmConfiguration` | | Returns current temperature alarm status | `sRN temperatureAlarmStatus` | `GET /api/temperatureAlarmStatus` | | Returns/sets ROS frame ID | `sRN/sWN rosFrameId` | `GET/POST /api/rosFrameId` | | Returns/sets ROS parent frame ID | `sRN/sWN rosParentFrameId` | `GET/POST /api/rosParentFrameId` | | Returns/sets ROS namespace | `sRN/sWN rosNamespace` | `GET/POST /api/rosNamespace` | | Returns/sets mounting position in 1/10000 deg | `sRN/sWN SensorPosition` | `GET/POST /api/SensorPosition` | | Returns/sets encoder mode | `sRN/sWN LICencset` | `GET/POST /api/EncSetting` | | Returns/sets encoder resolution | `sRN/sWN LICencres` | `GET/POST /api/EncResolution` | | Enables/disables 1st reference signal | `sRN/sWN LICpos1enable` | `GET/POST /api/ActualEncPosition1Enable` | | Enables/disables 2nd reference signal | `sRN/sWN LICpos2enable` | `GET/POST /api/ActualEncPosition2Enable` | | Resets encoder tick value | `sMN LIDrstencoderinc` | `POST /api/mResetEncoderIncrement` | | Returns/sets encoder UDP destination settings | `sRN/sWN EncoderDataEthSettings` | `GET/POST /api/EncoderDataEthSettings` | | Enables/disables encoder data streaming | `sRN/sWN EncoderDataEnable` | `GET/POST /api/EncoderDataEnable` | | Returns evaluation group type | `sRN EvaluationGroupType` | `GET /api/EvaluationGroupType` | **Known issues.** - Contamination indication segments show **clean** when measurement is stopped or the device is in stand-by mode. - A file error can occur during system diagnosis under high load with Particle filter, Moving average filter, and Streaming active. - Device availability may very rarely be delayed but becomes fully operational within 20 seconds. - The occasional parameterization message can be safely ignored when it becomes inactive immediately. - Native ROS 2 does not provide measurement data after DHCP fallback, so the DHCP server must be available after boot. - The Native ROS 2 GUI parameter descriptions for **child frame** and **parent frame** are interchanged. ## Firmware V2.1.0 **Compatible with:** picoScan120 and picoScan150; **Release date:** cw 16/2025; **Effective from:** S/N 2517xxxx for picoScan120 and picoScan150 **New features.** **Perpendicular distance evaluation.** Perpendicular Distance evaluation is part of the 2D Object Detection Advanced license package. It allows fields to be drawn and evaluates the minimum and maximum perpendicular distance between objects entering the field and a reference line. A new device can be configured through the sales configurator with the 2D Object Detection Advanced package. On an existing device, activate license `1146093 PICOSCAN PERPENDICULAR DISTANCE` through License Manager. **Reflector detection improvements.** The reflector-detection algorithm has been improved, particularly for false positives in ambient light. Devices with serial numbers `> 2422xxxx`, which were more sensitive to false-positive reflector detection, benefit from this improvement. LMDscandata provides reflector information using RSSI value 254, and a reflector-detection filter handles double echoes from reflector targets. On picoScan120, the **optimized for reflector** mode improves measurement performance on reflector targets but can overlook very small, transparent, or mirroring objects. **HTTPS.** picoScan100 supports HTTPS, enabling secure and encrypted communication. **Firmware update via SOPASair.** SOPASair now offers firmware update capability. SOPAS ET is no longer needed for a firmware update for supported versions. **Full screen scan view URL.** For full-screen visualization of measurement data or 2D Object Detection: ```text /#/?scanview_fullscreen= ``` Example: ```text http://192.168.0.1/#/?scanview_fullscreen= ``` **Measurement data recording.** Measurement and IMU data can be recorded and played back when used with additional recorder software. Use the [Recorder software](https://www.sick.com/de/en/downloads/media/swp681956). **Improvements and fixes.** - The 2D Object Detection history table has improved visualization. Configuration no longer becomes inconsistent when evaluations are deleted, renamed, or recreated with the same names. - The GUI measurement tool can now measure the distance to the device center. - SOPASair scan view provides separate show/hide controls for reflector and non-reflector scan points. - The contamination-indication GUI element has been reworked to improve usability and fix bugs. - LMDscandata now includes I/O states for better compatibility with products such as TiM and LMS1. - The diagnostics overview identifies message categories with icons for Info, Warning, Error, and Fatal Error. It also displays message numbers and indicates whether a warning is active or inactive. - Output counters no longer increment when an output is HIGH and a configuration change leaves its actual state unchanged. Resetting a counter now displays `-`, meaning zero, rather than incorrectly setting the value to `2`. - `.sopas` files can now be imported regardless of the earlier firmware version for which they were created. A warning is displayed if information in the file does not match the target device's setup. - Error handling has been optimized so that the message **Too many functions are active at the same time** appears less often during operation. - The low-device-temperature warning is intended for temperatures of -5 °C or below, when motor startup may be delayed. The issue that occasionally caused this warning at higher temperatures has been fixed. - The CoLa A/B user levels **Maintenance** and **Authorized Client** are disabled by default, matching the HTTP/REST interface behavior. They can be enabled in the GUI after logging in as **Service**. Updating from firmware earlier than V2.1.0 preserves previously enabled user levels; a factory reset restores the defaults, with **Maintenance** and **Authorized Client** disabled and **Service** enabled. - Enabling the LMDscandata scan-range filter no longer causes the first output beam to have an incorrect distance value of `0`. - The Teach-In setting **Start/Stop by Input Signal** is now saved permanently. Previously, rebooting or cycling power reset it to its default value. **Behavioral changes.** - Activating more than 20 fields exceeds the supported maximum and stops 2D Object Detection. From V2.1.0, the device status also changes to **device not ready**. - During the **waiting for restart** output state, LED 1 is continuously yellow and LED 2 flashes green. This indicates that a restart is pending after a configured time or digital input. - Devices shipped with firmware V2.1.0 use **Static IP** instead of **Repeat DHCP** as the DHCP fallback default. This change does not apply to devices updated in the field from V1.5.0 or lower. **API changes and publications.** The OpenAPI files are available for [picoScan120](https://www.sick.com/de/en/downloads/media/swp684461) and [picoScan150](https://www.sick.com/de/en/downloads/media/swp678507). Selected changes include `perpendicularDistanceResult`, which returns the perpendicular-distance feature's minimum distance, maximum distance, and timestamp, and `EtherCoLaScanMode`, which replaces `EnableColaScan` with the Enabled, Time-Limited, Restricted, and Disabled modes. Send `EthernetUpdate` after updating IP configuration to trigger reconfiguration. `changePassword` sets the REST interface password, `SetPassword` sets the CoLa A/B interface password, `EnableUserLevel` activates or deactivates the REST user level, and `EnableLegacyUserLevel` activates or deactivates the CoLa A/B user level. `EnableDetectionHistory` returns or sets detection history, `EvaluationsToLog` returns or sets the evaluations that are logged, and `ResetDetectionHistory` resets detection-history logs. `httpsStatus` returns HTTPS interface status, `certificateBundleInfo` returns information about the uploaded certificate bundle, `setCertificateBundleInfo` uploads a certificate bundle in PEM format through JSON, and `removeCertificateBundleInfo` removes the uploaded certificate bundle. **Known issues.** - Contamination indication segments show **clean** when measurement is stopped or the device is in stand-by mode. - A file error can occur during system diagnosis under high load, and an error-log message can occur during a factory reset; both can be ignored as applicable. - Device availability may very rarely be delayed but becomes fully operational within 20 seconds. - There is a minimal chance of a fatal error after a firmware update; if it occurs, repeat the update. The update was successful if the device operates stably with a green LED for more than 10 minutes. - The angle range filter cannot be disabled for LMDscandata; use start angle `-138°` and stop angle `138°`, or perform a factory reset, to output the full field of view. - In SOPAS ET, 2D object-detection parameters can influence one another, so SOPASair is strongly recommended for parameterization. - An invalid measurement point can appear at 0° in GUI Application > Data output, but this does not affect Compact or LMDscandata output. - Some SOPASair notifications during and after a factory reset, firmware update, or reboot can be ignored. ## Firmware V2.0.0 **Compatible with:** picoScan120 only; **Release date:** cw 45/2024; **Effective from:** S/N 2442xxxx **Features.** This is the initial firmware for picoScan120 and provides headless firmware updates through REST. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/#headless-via-the-rest-api). **Known issues.** - A file error can occur during system diagnosis under high load. - CoLa A/B remains active after `EtherAuxEnabled` is set to false, so a power cycle is required. - The output counter does not show the correct number and must not be used to count **Device Not Ready** signals. - Queue overflows can occur when Ethernet settings change but do not affect picoScan120 use. - SOPAS ET can show several error messages and is not recommended; use SOPASair instead. - The angle range filter cannot be disabled for LMDscandata; use start angle `-138°` and stop angle `138°`, or perform a factory reset. ## Firmware V1.5.0 **Compatible with:** picoScan150 only; **Release date:** cw 45/2024; **Effective from:** S/N 2445xxxx **New features.** **2D Object Detection Advanced feature update.** License activation is required. New 2D Object Detection features include background teach-in, which teaches the current environment to monitor the free field of view, and Contour as reference, which monitors the presence of a reference contour. Configure a new device through the sales configurator with the 2D Object Detection Advanced package, or activate license `1146090 PICOSCAN TEACH-IN` through License Manager on an existing device. **Improvements and fixes.** - The field-evaluation live view now visualizes events. - Statistics and event tables refresh automatically, and detection history is enabled by default. - Handling of configuration changes and the statistics overview have been improved. - Motor-frequency tolerance has been optimized to increase sensor availability. - Output configuration now allows more than 20 evaluations to be assigned to a single output. - Scan segments are now visible in the GUI. **API changes and publications.** The OpenAPI files are available for [picoScan120](https://www.sick.com/de/en/downloads/media/swp684461) and [picoScan150](https://www.sick.com/de/en/downloads/media/swp678507). The new telegrams are REST `POST /api/GetFieldEvaluationContour`, CoLa `sMN GetFieldEvaluationContour`, REST `POST /api/changePassword`, and REST `POST /api/SetPassword`. **Known issues.** - Detection history can become inconsistent when evaluations are deleted, renamed, or recreated with the same names. - The **Start/Stop by Input Signal** Teach-In setting is not permanently saved. - Contamination indication segments show **clean** when measurement is stopped or the device is in stand-by mode. - The sector dropdown has no effect when Accessories is set to **None** or **Weather protection hood**. - A file error can occur during system diagnosis under high load. - The LMDscandata angle range filter can output a first beam with distance `0` and cannot be disabled. - A factory reset can create an error-log entry that can be ignored. ## Firmware V1.4.1 **Compatible with:** picoScan150 only; **Release date:** cw 34/2024; **Effective from:** S/N 2435xxxx **Improvements and fixes.** - Minor adaptations maintain compatibility with browsers based on Chromium version 128 or higher. **Known issues.** - For object detection, changing field-evaluation output properties assigns the selected output correctly, but deleting the field does not reset the previous output. - The detection-history refresh button works only once, and the current configuration can become inconsistent when evaluations are deleted, renamed, or recreated with the same names. - The online help for **ignore missing echo** incorrectly describes behavior when the function is deactivated. - Contamination indication segments show **clean** when measurement is stopped or the device is in stand-by mode. - The sector dropdown has no effect when Accessories is **None** or **Weather protection hood**. - A file error can occur during system diagnosis under high load. - The LMDscandata angle range filter can output a first beam with distance `0` and cannot be disabled. - A factory reset can trigger **IMU Queue Overflow**, which can be ignored. ## Firmware V1.4.0 **Compatible with:** picoScan150 only; **Release date:** cw 31/2024; **Effective from:** S/N 2432xxxx **New features.** **Firmware update via HTTP / REST.** A firmware update can be performed without graphical user interface via REST/HTTP. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/#headless-via-the-rest-api). **Improvements and fixes.** - The 2D Object Detection function works again on devices where it was inactive with firmware V1.3.0. - The GUI no longer shows the PTP feature on devices whose feature scope does not include it. **API changes and publications.** The OpenAPI files are available for [picoScan120](https://www.sick.com/de/en/downloads/media/swp684461) and [picoScan150](https://www.sick.com/de/en/downloads/media/swp678507). The 2D Object Detection application state information `/FieldEvaluationApplicationState` is removed from the API. This information can still be monitored via `/DeviceStatus`. **Known issues.** - The main known issues are the same as in V1.4.1: - Object-detection output-reset behavior - Detection-history refresh and consistency - Incorrect online help for **ignore missing echo** - Contamination-indication segment state in stopped / stand-by mode - Sector dropdown with no effect for **None** or **Weather protection hood** - Possible file error during system diagnosis under high load - LMDscandata angle-range filter's first-beam value and inability to be disabled - Ignorable error-log entry during a factory reset ## Firmware V1.3.0 **Compatible with:** picoScan150 only; **Release date:** cw 18/2024; **Effective from:** S/N 2418xxxx **New features.** **2D Object Detection.** The new **Field Evaluation** application allows definition of up to 48 individual fields / evaluations. Fields can be merged into groups, which can be activated by telegram or input signal. Telegrams and output signals can monitor field and application status. Maximum blanking size and detection time are individually configurable. Distance-dependent mode combines measuring points inside a field according to distance, while manipulation prevention triggers object detection if monitoring from the device to the field boundary is insufficient. **Ignore missing echo** treats a missing echo as a measuring point in the field. In Blanking mode, field evaluation reacts to all measurement points; in Reflector mode, it reacts only to points marked as reflectors. Detection history can store up to 200 entries, deleting the oldest entry when a new detection occurs. **Contamination indication.** The contamination indication evaluates 7 sectors regarding contamination levels. Results can be monitored in the GUI, via digital outputs or via telegram. Response time can be adjusted. **New scan configuration.** New scan configuration with 15 Hz scanning frequency and 1° angular resolution, profile number 11. This configuration can be used to retrofit, for example, TiM351 or TiM551. **Improvements and fixes.** - The 40 Hz / 0.125° scan configuration, profile 10, now provides all available echoes. Previously, it supported only one echo. - The start and stop timestamps of each scan segment in Compact and MSGPACK output now match system time. - The IMU streaming issue that occasionally paused data output for approximately 1 second has been fixed. - The scan-range filter now limits LMDscandata output to the selected range instead of transmitting zero values outside it. - LMDscandata now includes device-status and scanning-frequency information. - The interval filter's default and minimum values have changed from 1 to 2. - The `mResetCounter` telegram no longer resets an I/O port to its default state. - GUI notifications have been added to improve the user experience. - LED indication for the **RecoverableError** device state has been corrected. **Known issues.** - Object-detection output-reset behavior, detection-history refresh and consistency, and incorrect online help for **ignore missing echo**. - Contamination indication segments show **clean** when measurement is stopped or in stand-by mode. - The sector dropdown has no effect for **None** or **Weather protection hood**. - A file error can occur during system diagnosis under high load. - The LMDscandata angle range filter can output a first beam with distance `0` and cannot be disabled. - An error-log entry during a factory reset can be ignored. ## Firmware V1.2.0 **Compatible with:** picoScan150 only; **Release date:** cw 09/2024; **Effective from:** S/N 2410xxxx **New features.** **Precision Time Protocol support.** PTP is a synchronization mechanism for precise coordination of data acquisition across multiple LiDAR units or other clients in a network. By synchronizing internal clocks, PTP enables accurate timestamping of measurements, supporting spatial mapping and object detection. It minimizes latency and supports reliable data fusion in applications such as autonomous vehicles or industrial automation. **Native ROS 2.** Native ROS 2 is a digital add-on with license. The device offers native ROS 2 support using DDS to enable real-time communication and optimize interoperability with ROS 2 standards. To enable it: Install the corresponding license through License Manager, disable MSGPACK, Compact, or LMDscandata data output, and enable Native ROS 2 with telegram `RosConnectEnable`. **License Manager support.** License Manager is integrated and available via: ```text http://192.168.0.1/#/license ``` **Improvements and fixes.** - Boot time has been optimized. The device is typically ready after 9.5 seconds, with the green LED on and data output available. - All digital outputs now show the same electrical levels during device startup. - Reflector detection has been improved for edge hits involving a second target. Retroreflectors can produce a measurement point at twice the actual distance; previously, this could cause the first target to be incorrectly classified as a reflector. - The maximum input debounce time has increased to 1000 ms. - The Compact-format scaling factor is now set correctly in the rare range-extension conditions that previously caused incorrect distance data. - IMU data now uses the system timestamp and updates when system time is set by the user, an NTP server, or PTP. - The picoScan sensor model in scan view has been updated. - GUI refresh time after a reboot has been reduced to 10 seconds. - The login dropdown now shows only enabled user levels, and the displayed angular resolution is no longer rounded. - Visual and wording issues have been corrected, including the incorrect appearance of the distance-measuring tool. - The redundant `SaveParameters` method has been removed. Use `mEEwriteall` to save parameters permanently. **Known issues.** - A file error can occur during system diagnosis under high load. - In rare cases, IMU data streaming can pause for about 1 second before continuing with the latest data. - A factory reset can trigger **IMU Queue Overflow**, which can be ignored. ## Firmware V1.1.0 **Compatible with:** picoScan150 only; **Release date:** cw 50/2023; **Effective from:** S/N 2350xxxx **New features.** **IMU support.** IMU data is enabled with this release and available in Compact format. IMU type: [BOSCH BHI160B](https://www.bosch-sensortec.com/products/smart-sensor-systems/bhi160b/). **Cloning of communication parameters.** Every system plug has cloning memory on board. Communication parameters such as IP address, subnet mask and gateway are stored automatically to the system plug when parameters are saved permanently. Parameters are loaded on boot up. This enables faster device exchange if the system plug remains in the application. **Improvements and fixes.** - Reflector detection at close range has improved. Typical detection ranges are `0.3 m <= x <= 25 m` for Core, `0.3 m <= x <= 60 m` for Prime, and `0.3 m <= x <= 120 m` for Pro. - False-positive reflector flags no longer occur at target edges on devices calibrated in the production line. This improvement applies only to those calibrated devices. - Measurement-core lockups in complex scenarios have been fixed. Previously, scenarios with many dynamic targets could occasionally cause a temporary device error. - The angular error that depended on the selected dynamic sensing profile has been improved. This change applies only to devices calibrated in the production line. - Boot-up time has been optimized to typically 11 seconds. - Scan segments are no longer occasionally transmitted with a delay of one segment. - The device now sends a response before executing a reboot or factory-defaults command. Previously, it rebooted immediately without answering the command. - Ethernet-configuration input validation now prevents invalid configurations from being set. - The static DHCP fallback IP address now works as expected. - General GUI improvements include a better user experience in Microsoft Edge and Firefox. **Known issues.** - Incorrect distance data is possible in range-extension mode when using picoScan150 Pro-1 with Compact output, active range extension, scan profile 1, 2, 4, 5, or 7, and a highly reflective target at a distance greater than 65 m. - In SOPASair, a browser tab can consume memory over time and produce an Out of memory error; restart the browser to recover. - A file error can occur during system diagnosis under high load. - In rare cases, IMU data streaming can time out for about 1 second. - The IMU data-stream timestamp begins at boot and does not update with user-set time or an NTP server. ## Firmware V1.0.2 **Compatible with:** picoScan150 only; **Release date:** cw 36/2023; **Effective from:** S/N 2336xxxx **Features.** This is the initial firmware for picoScan150. **Known issues.** - In SOPASair, a browser tab can consume memory over time and produce an Out of memory error; restart the browser to recover. - A file error can occur during system diagnosis under high load. - In rare cases, IMU data streaming can time out for about 1 second. - The IMU data-stream timestamp begins at boot and does not update with user-set time or an NTP server. --- # picoScan100 Web GUI (SOPASair): All Screens and Settings > Walkthrough of every picoScan100 SOPASair screen: basic settings, mounting, I/O, data output, field evaluation, contamination, and diagnostics. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/ # SOPASair Walkthrough This page describes the picoScan100 web interface and the settings in each view. Use it to commission the sensor before you automate the configuration through the API. To try the interface without a device, open it in the [Virtual Sensor Lab](https://sickag.github.io/sick_lidar_developer_guide/simulation/virtual-sensor-lab/). ## Home The Home page summarizes the sensor's state: device, connection, measurement, field evaluation, and data-output status, device information with the firmware version, the live scan, and the I/O states. Use it to confirm that the sensor is online and healthy before you change settings. ![SOPASair Home page of a picoScan100](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-home.png) *Live capture of the picoScan100 SOPASair Home page.* ## Configuration Choose the scan configuration and the core measurement behavior. Resolution, frequency, and range trade off against each other. *Live capture from a picoScan100's web interface.* The live scan on the left updates as you change the configuration, which is the quickest way to judge a setting. ### Basic Settings Basic Settings controls the scan configuration used by the sensor. The settings are shown on the right; the live scan on the left shows the effect of the selected frequency, angular resolution, and other settings immediately. Use this view to check coverage and measurement behavior while commissioning. **Coordinate System** The device coordinate system uses one point as the origin and reference for all laser beams and distance measurements. With no translation into a world coordinate system, this point is also the world origin. The horizontal beam angle is **theta** (`θ`). A beam at `θ = 0°` points along the middle of the sensor's main viewing direction, making the scan symmetric around the X axis. The vertical elevation angle is **phi** (`φ`) and is measured from the X/Y plane. For a single-plane picoScan, `φ = 0°` when the sensor is ideally mounted.
Device coordinate system: theta *Horizontal beam angle theta.*
Device coordinate system: phi *Vertical beam angle phi.*
Measurement data is always output in the device coordinate system. Transform it into a world or application frame on the receiving system after accounting for the sensor's mounting position and orientation. See [3D point clouds with 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/) for an example coordinate transform. **Date and system time** The time base can be set using various methods: - Explicitly setting the date and time - Transferring the time from the computer used - Via an external NTP server (Network Time Protocol) that is accessible in the network. The technology uses UDP on port 123. This setting is recommended to ensure a correct time stamp in the detection history or error entries. - Via an external PTP (Precision Time Protocol) master that is accessible in the network. The technology uses UDP on ports 319 and 320. This setting is recommended for precise synchronization requirements (e.g. between several devices). **Dynamic Sensing Profiles** LiDAR applications often need different sensor characteristics at different times. An AMR may need the shortest response time in busy areas, a large scanning range and good angular resolution in a warehouse, and the highest close-range angular resolution while docking. Higher angular resolution requires a lower scanning frequency, so choose the priority for each application. Dynamic Sensing Profiles allow the scan's core parameters to be changed during operation without restarting the sensor. The Scan Data Configuration function allows fast switching between profiles:

**Basic Settings:** profile, frequency, angular resolution, and typical use.

| Profile | Frequency | Angular resolution | Typical use | | ---: | ---: | ---: | --- | | 1 | 15 Hz | 0.5° | Object detection with large scanning ranges | | 2 | 15 Hz | 0.33° | TiM series retrofit | | 3 | 20 Hz | 0.1° | Fine positioning or environment maps | | 4 | 20 Hz | 0.25° | Low-noise measurements; recommended for LiDAR-LOC | | 5 | 25 Hz | 0.25° | LMS100 series retrofit | | 6 | 30 Hz | 0.1° | Fine positioning or environment maps | | 7 | 40 Hz | 0.25° | Fast object detection at a large scanning range | | 8 | 50 Hz | 0.25° | Very fast object detection | | 9 | 15 Hz | 0.05° | Highest angular resolution for static measurements | | 10 | 40 Hz | 0.125° | High angular resolution and high scan rate | | 11 | 15 Hz | 1° | TiM series retrofit | Available profiles depend on the device variant and license; see [Licenses](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/licenses/). *How to change the device name.* *How to change scanning frequency and angular resolution.* ### Filter Clean up the scan before it leaves the sensor by suppressing extra echoes, artifacts and airborne particles. ![Filter settings](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-configuration-filter-tile.png) *Example filter settings in the picoScan100 web interface. Select parameters according to the requirements of each application.* If present, the filters are applied in the following order: 1. Fog filter 2. Echo filter 3. Particle filter 4. Moving average filter 5. Filters for data reduction and the region of interest filter For detailed behavior and examples, see [Filter details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/). ### Inertial Measuring Unit (IMU) Use the IMU view to inspect the sensor's current orientation and acceleration. *Live capture from a picoScan100's web interface.* The IMU view displays the yaw, pitch, and roll angles in degrees, together with the measured acceleration on the X, Y, and Z axes in meters per second squared. The orientation indicator provides a visual representation of the current sensor position. Use these values as a guide when checking the sensor installation or interpreting the scan coordinate system. ### Contamination Indication Monitor the optics cover for dirt and get a warning before measurement quality drops. *Live capture from a picoScan100's web interface.* The contamination status provides a live reading of Clean, Minor, Heavy, or Blocked. The segment wheel identifies where contamination is accumulating around the optics cover. Configure whether contamination triggers a warning, an error, or both, and adjust the sensitivity and outputs for the environment. *How to receive contamination indication through event-driven CoLa.* ### Connection Options Give the sensor its permanent Ethernet identity so it fits your network. *Live capture from a picoScan100's web interface.* Choose static addressing to enter a fixed IP address, or DHCP to have a server assign the address automatically, according to your application and network requirements. The IP address must be unique on your network. The subnet mask defines which addresses are local, for example `255.255.255.0`, and the default gateway provides access to other subnets. The MAC address and calculated speed are read-only values for reference and firewall rules. 1. Set the addressing mode to Static. 2. Enter the IP, subnet mask, and gateway for your network. 3. Press Apply. 4. Reconnect the browser at the new address. Pressing Apply drops your current browser connection. ### Inputs and Outputs Configure the multifunction I/O ports and map field-evaluation results and device states to physical outputs. *Live capture from a picoScan100's web interface.* Set each port as an input or an output and give it a name. Bind an output to a source, such as a field-evaluation result or a device state. Configure the logic (HIGH or LOW active), inversion, restart behavior, and status log. The right panel shows the live status and counters for every port. I/O is a simple way to connect a PLC when you do not want to parse the data stream. *How to switch digital outputs by API.* ## Application ### Data Output Decide what measurement data leaves the sensor and how it is streamed to your system. *Live capture from a picoScan100's web interface.* For data output, select Compact, MSGPACK, LMDscandata, or Native ROS 2 according to your application. For Compact or MSGPACK, configure serialization to include only the RSSI and properties layers your application needs. Reduce bandwidth at the source with an angular-range filter that retains one sector or an interval filter that reduces the number of scans sent per second. ![Compact measurement data output](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-compact.png) *Compact outputs measurement data over UDP and provides separate controls for RSSI and properties serialization.* ![MSGPACK measurement data output](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-msgpack.png) *MSGPACK outputs measurement data over UDP to the configured destination address and port.* ![LMDscandata measurement data output](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-lmdscandata.png) *LMDscandata provides CoLa ASCII and CoLa Binary TCP ports. Restart the sensor after changing a port.* ![Native ROS 2 measurement data output](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-native-ros2.png) *Native ROS 2 configures the sensor and reference coordinate frames, namespace, and DDS domain ID.* ![IMU data output settings](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-imu.png) *The IMU data output panel enables IMU streaming and configures the destination port and IP address.* ![Encoder data output settings](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-encoder.png) *The Encoder data output panel enables encoder-data streaming and configures the destination port and IP address.* ![Data reduction settings](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-reduction.png) *The Data reduction panel reduces the transmitted data with an interval filter and an angular range filter.* For detailed filter behavior, see [Filter details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/). For the Compact format, a segment that lies entirely outside the selected range is omitted. A segment that is only partly within the range remains in the output and its outside values are filled with `0`. ![Range filter settings](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-range-filter.png) *The Range filter panel limits data by rectangular X/Y coordinates or by minimum and maximum distance.* ![Region of interest in the scan view](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-data-output-region-of-interest.png) *The scan view shows the selected region of interest and the points detected within it.* ### Field Evaluation Draw 2D fields in the sensor's scan plane. The sensor detects points inside them without an external computer. *Live capture from a picoScan100's web interface.* Each field belongs to an evaluation group that combines field geometry, logic, and output. A field state can drive a physical output (see [Inputs and outputs](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/#inputs-and-outputs)) or appear in the detection list for your software. A group can remain active continuously or be switched by an input, for example to monitor a zone only while a machine is moving. Pan and zoom the scan view to check field coverage across the full aperture angle. *Live capture of creating a detection field on a picoScan100.* 1. On the Field evaluation panel, click **Add group** to create an evaluation group. 2. The group opens an evaluation chain: Field → Evaluation → Output. 3. Click the Field node to define the field geometry: draw a contour, or use Teach-in to capture the current environment as the field. 4. Set the evaluation logic and wire the result to an output; the field then appears live in the 2D view. 5. Click the floppy-disk icon in the toolbar to save the configuration permanently (until you do, changes live in RAM and are lost on restart). The [REST API](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) can also create, change, and activate evaluation groups; see [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#configure-over-the-api). - [How to draw fields and detect objects](https://support.sick.com/sick-knowledgebase/article?id=b3822c6c-a151-f011-877b-7c1e52272c21) - [How to use a taught background for field evaluation](https://support.sick.com/sick-knowledgebase/article?id=cf43c5fc-4350-f011-b4cc-7c1e52272c21) *How to configure a field for retro-reflectors only.* *How to use a contour as a reference.* *How to activate fields through HTTP.* *How to read field evaluation state through HTTP.* *How to receive field evaluation state via event-driven CoLa.* *How to use the REST API client.* ### Perpendicular Distance Measurement Each evaluation group measures the perpendicular distance from the sensor's scan line to the nearest object inside a zone. Like [field evaluation](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/#field-evaluation), it runs on the sensor, but returns a distance rather than a field-clear/field-infringed state; no raw-scan processing on a host is needed. *Perpendicular distance measurement in SOPASair.* The Max. blanking size setting ignores gaps smaller than the set width, and the Detection time setting sets how long an object must be present (in scans) before it counts. 1. On the Perpendicular distance measurement panel, click **Add group**. 2. Draw the zone the measurement applies to, the same way you draw a field. 3. Set Max. blanking size and Detection time under Object detection to match your target and required responsiveness. 4. Read the distance in the Result list for distance measurement, or wire it into your software over the [REST API](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) or [WebSocket events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/). 5. Click the floppy-disk icon to save the configuration permanently (until you do, changes live in RAM and are lost on restart). ![Result list for distance measurement](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-application-perpendicular-distance-result-list.png) *The Result list shows the minimum and maximum distance and the coordinates of the measuring points for each evaluation.* ## Diagnostics The health dashboard shows device, connection, measurement, and data-output status; the power-on counter, operating hours, temperature, and most recent parameterization; and a filterable event log with message severity, ID, time, and description. You can create and download a diagnostic file for SICK service; creating a new file overwrites the previous one. ![Diagnostics overview screen](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-diagnosis-overview.png) *Live capture from a picoScan100's web interface.* *How to read internal device temperature.* ### Status LEDs The two status LEDs on the housing show the device state at a glance.

**Status LEDs:** LED1, LED2, and meaning.

| LED1 | LED2 | Meaning | | --- | --- | --- | | Red | Red | Booting, parameterizing or firmware update | | – | – | Off | | Red, flashing fast | Red, flashing fast | Fatal error | | Red, flashing slowly | Red, flashing slowly | Recoverable error | | Green | Green | Ready, no object detected in configured fields | | – | Green | Ready, no fields configured | | Green | Yellow, flashing | Warning | | Yellow | Green, flashing | Restart after time or digital input | | Green | Yellow, flashing | Contamination warning | | Red, flashing | Yellow, flashing | Contamination error | | Green, yellow, red | Green, yellow, red | Identify device | | Red | Red and yellow, flashing | Teach-in environment | | Yellow | Green | Object detected |

illuminated · flashing · – off

You can switch the LEDs off in the web interface or with `sWN LEDEnable`, and read their state with `sRN LEDState`. ### Cybersecurity Harden the sensor by managing certificates and switching network services on or off. *Live capture from a picoScan100's web interface.* Use this page to create an HTTPS certificate for encrypted access and enable only the required services and protocols, such as CoLa, device search, the web server, HTTPS, or SSH. Each row shows its purpose and physical and logical port to support firewall planning. Disable legacy protocols and developer access in production. For the picoScan150 ports and the documented factory defaults, see the [Cybersecurity network-services matrix](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/#picoscan100-picoscan150). ### Detection History Record and review how often each field evaluation triggered. *Live capture from a picoScan100's web interface.* Start or stop recording detections across all evaluation groups. Choose which groups and fields to include. The statistics section shows the detection count per evaluation as live bars. A link jumps to the field evaluation to adjust fields. *How to use the object history feature.* *How to visualize detection-history bounding boxes.* --- # picoScan100 Starter Kit > Three SICK products for a picoScan150 PRO-1 starter kit, with product photos, direct product links, and a link to getting started. Source: https://sickag.github.io/sick_lidar_developer_guide/picoScan100/starter-kit/ This compact starter kit brings together a picoScan150 PRO-1 and the cables needed to connect it to a development computer.
1
2
3
Together, these products are a good combination to get started with the picoScan150. Continue with [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/) to connect the sensor and open its web interface. --- # LiDAR Shared Features Overview > Find SICK LiDAR discovery, addressing, status, firmware, licensing, time synchronization, transport, and access-management workflows. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/ # Shared Features Find cross-device setup and maintenance workflows here. Supported parameters and procedures vary by family; check the compatibility labels on each page. * [Asset Administration Shell](https://sickag.github.io/sick_lidar_developer_guide/shared-features/asset-administration-shell/): access structured product data. * [Checksums](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/): compare firmware, calibration, and persisted-parameter digests. * [Device State](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-state/): inspect availability through LEDs, outputs, or device interfaces. * [Device Discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/): find sensors on the local network. * [Factory Reset](https://sickag.github.io/sick_lidar_developer_guide/shared-features/factory-reset/): compare factory and application reset scopes and recovery steps. * [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/): install matching firmware through supported tools or APIs. * [IP Address Assignment](https://sickag.github.io/sick_lidar_developer_guide/shared-features/ip-address-assignment/): change network addresses and review IP change policies. * [LiDAR License Activation](https://sickag.github.io/sick_lidar_developer_guide/shared-features/license-activation/): activate, inspect, or deactivate feature licenses. * [Time Synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/): align sensor clocks using NTP or PTP. * [UDP Unicast / Multicast](https://sickag.github.io/sick_lidar_developer_guide/shared-features/udp-unicast-multicast/): choose and configure a measurement-data transport. * [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/): manage authentication, access levels, and password recovery. --- # Asset Administration Shell (AAS) for SICK LiDAR Sensors > Overview of the SICK Asset Administration Shell for LiDAR product part numbers and the product data it provides. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/asset-administration-shell/ # Asset Administration Shell Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The Asset Administration Shell (AAS) is the standardized digital twin of Industry 4.0. SICK publishes an AAS for each product part number at [aas.sick.com](https://aas.sick.com). Access requires a SICK ID login. The AAS describes the product type in a machine-readable format, which makes it useful for engineering tools and asset management systems. ## What to Expect - **Nameplate:** manufacturer, product designation, order code, and markings such as CE and UKCA - **Technical data:** product classification (ECLASS, ETIM) and key technical properties - **Documents:** data sheet, operating instructions, dimensional drawing, and certificates - **CAD data:** 3D models such as STEP files and the EPLAN macro - **Contact information:** SICK sales and service contacts The AAS describes the part number, not an individual device. Serial number, firmware version, configuration, status, and measurement data come from the device itself through the [REST API](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/), the [CoLa interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/), and the data streams. ## Link a Device to Its AAS Each device is identified by its product ID [`pid.sick.com/{P/N}/{S/N}`](https://pid.sick.com/), made of the part number and the serial number from the type label. Both values can also be read from the device over the REST API. The part number connects the device to its AAS. --- # Verify LiDAR Firmware and Parameters with LFTchecksum (MD5) > Use the LFTchecksum REST resource to verify firmware, calibration, and persisted parameters with MD5 digests, and understand RAM versus EEPROM state. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/ # Checksums Compatible with: multiScan200 picoScan100 The `LFTchecksum` is a read-only REST resource that returns MD5 digests over four independent software and configuration areas of the device. It lets you verify at any time that nothing has changed since a known-good reference: detect unintended parameter changes, confirm a configuration file applied correctly, or check that a firmware update touched only the areas it should. See the [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) REST API reference for the endpoint definition. ## Reading It No authentication required: ```http GET /api/LFTchecksum ``` ```json { "header": { "status": 0, "message": "Ok" }, "data": { "LFTchecksum": { "MD5SumOK": true, "MD5LinuxRoot": "8439a3f5bb209f3d51557d509169ec60", "MD5App": "304f9a18302e2b635da2c2c220463119", "MD5Calibration": "bc5e5d5df638dc45c85937c8c67b59d7", "MD5Parameters": "07f18c8032e24ac65ca0ed7c04be6a62" } } } ``` ## The Four Sub-Checksums

**The Four Sub-Checksums:** field, covers, and changes when….

| Field | Covers | Changes when… | | ---------------- | --------------------------------- | -------------------------------------------------------------------------------------- | | `MD5LinuxRoot` | Linux root filesystem (OS layer) | A firmware update modifies the OS partition | | `MD5App` | Application binary and libraries | A firmware update installs a new application version | | `MD5Calibration` | Factory calibration data | Calibration is recalculated/overwritten (factory service only) | | `MD5Parameters` | Persistent parameter set (EEPROM) | Parameters are persisted via `WriteEeprom`, or a config file is imported and persisted | | `MD5SumOK` | Overall integrity flag | `false` if any of the four fails its internal verification | ## RAM vs. Persistent Storage The device keeps two parameter states at once:

**RAM vs. Persistent Storage:** parameter state, storage location, persistence after reboot, and effect on `MD5Parameters`.

| State | Where | Survives reboot? | Reflected in `MD5Parameters`? | | -------------- | -------------- | ----------------------------------------------------------------------------------- | ----------------------------------------- | | Working copy | RAM | No (a `RebootDevice` flushes RAM to EEPROM first, so it survives a software reboot) | No, until `WriteEeprom` or `RebootDevice` | | Persisted copy | EEPROM / flash | Yes | Yes | **An unchanged `MD5Parameters` does not mean RAM is unchanged:** REST writes modify the working copy. Unlike `RebootDevice`, which persists RAM first, `SoftReset` and a hard power-cycle discard unsaved changes. ## When Does Each Sub-Checksum Change? The following table shows the behavior of a picoScan150 (● = changed, - = unchanged):

**When Does Each Sub-Checksum Change?** Scenario and resulting change of the LinuxRoot, app, calibration, and parameters checksums.

| Scenario | LinuxRoot | App | Calibration | Parameters | | --- | --- | --- | --- | --- | | Two consecutive reads, no operation | - | - | - | - | | Change a parameter in RAM only (no `WriteEeprom`) | - | - | - | - | | Change in RAM, then `SoftReset` | - | - | - | - | | Change in RAM, then `RebootDevice` (persists first) | - | - | - | ● | | Change + `WriteEeprom` | - | - | - | ● | | `CreateParameterBackup` → `RestoreParameterBackup`, same file, no content change | - | - | - | - | | `LoadApplicationDefaults` (destructive) | - | - | - | ● | | Firmware upgrade | ● | ● | - | - | | Firmware downgrade | ● | ● | - | - | `MD5Calibration` does not change through normal end-user operations. A change there indicates a factory calibration update or an unexpected write to the calibration partition, so treat it as a red flag. ## A Practical Integrity Workflow 1. Record all four hashes from a known-good device (the reference). 2. After any change (a config push, a [restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/), a [firmware update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/)), read `LFTchecksum` again. 3. Compare field by field: a firmware update should move `MD5LinuxRoot` + `MD5App` only; a persisted config change should move `MD5Parameters` only; `MD5Calibration` should never move. 4. Anything else is unexpected: investigate before putting the device back into service. Compact and MSGPACK telegrams carry a CRC32 per packet (see [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#frame-layout)); CoLa B telegrams carry a 1-byte XOR checksum. The `LFTchecksum` covers the stored software and configuration, which complements these on-the-wire checks. --- # Device State and Availability > Check sensor availability with its status LEDs, a configurable digital output, or the REST and CoLa device-state interfaces. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-state/ # Device State Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The sensors provide several ways to check whether they are available and ready to measure. Choose the local indication that suits the installation, or read the state through REST or CoLa from a host application. ## Status LEDs Status LEDs indicate the device state. On devices where the LEDs can be switched off, they do not indicate anything while disabled. See the device operating instructions for the meanings of the individual LED states. ## Digital Output: Device Not Ready Use a digital output when an external controller or PLC needs a hardware signal for device availability: 1. Open the sensor web interface and log in as **Service**. 2. Open **Inputs and Outputs**. 3. Select **Device not ready** as the source for the output that should signal the status. 4. Configure the restart time, switching logic, and electrical connection logic for the installation. If contamination is expected and should be signaled separately, select **Contamination indication** as an output source. See [Contamination Indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) for its configuration and behavior. ## Read State over REST or CoLa Two state values are available. `SCdevicestate` gives a simple readiness result; `DeviceStatus` (REST) / `DevSta` (CoLa A/B) provides more detail:

**Simple readiness (`SCdevicestate`):** value and meaning.

| Value | Meaning | | --- | --- | | `0` | Busy or logged in | | `1` | Ready | | `2` | Error |

**Detailed state (`DeviceStatus` / `DevSta`):** value and meaning.

| Value | State | Meaning | | --- | --- | --- | | `0` | Reserved | Reserved value. | | `1` | Startup | The device is starting. | | `2` | Service mode | A service action is in progress, such as a software update or comprehensive parameter exchange. This state does not indicate whether the device can operate normally. | | `3` | Normal operation | Startup is complete and no errors or warnings have occurred. | | `4` | Suspended operation | An internal or environmental condition prevents adequate measurement. | | `5` | Service recommended | Measurement is operating as specified, but a service technician may need to address an issue. | | `6` | Service required | Measured values are still available, but the issue may affect them; service is required. | | `7` | Recoverable error | The device has a malfunction and measurement service is likely disrupted; service may be able to resolve it. | | `8` | Fatal error | A fatal error has occurred; reset and reboot the device. | For exact request and response formats, see the REST API references and the CoLa listing sections:

**References:** device, REST, `DevSta`, and `SCdevicestate`.

| Device | REST | `DevSta` | `SCdevicestate` | | --- | --- | --- | --- | | LRS4000 | [OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) | – | [sRN SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/#read-the-device-state-srn-scdevicestate) | | multiScan100 | [OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) | [sRN DevSta](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#read-the-device-state-srn-devsta) | [sRN SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#read-the-device-state-srn-scdevicestate) | | multiScan200 | [OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) | [sRN DevSta](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#read-device-state-srn-devsta) | [sRN SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#read-device-ready-state-srn-scdevicestate) | | picoScan100 | [OpenAPI](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) | [sRN DevSta](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#read-the-device-state-srn-devsta), [sEN DevSta](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#receive-the-device-state-by-event-sen-devsta) | [sRN SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#read-the-device-state-srn-scdevicestate), [sEN SCdevicestate](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#receive-the-device-state-by-event-sen-scdevicestate) | --- # Find SICK LiDAR Sensors on the Network (Device Discovery) > Find a SICK LiDAR sensor: default IP 192.168.0.1, SOPAS ET search, ARP, and the UDP broadcast discovery protocol on port 30718 with telegram layout. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/ # Device Discovery Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 There are three ways to find a sensor: 1. [Use the default IP](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/#default-ip) for a direct first connection. 2. [Use SOPAS ET network search](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/#sopas-et-network-search) when the sensor is already connected to a local network. 3. [Implement discovery yourself](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/#your-own-implementation) when discovery must be part of an application or provisioning workflow. ## Default IP For a direct first connection, connect the sensor to the computer with Ethernet and use the factory default IP address:

**Default IP:** parameter and value.

| Parameter | Value | | --- | --- | | Sensor IP address | `192.168.0.1` | | Subnet mask | `255.255.255.0` | Set the computer's Ethernet adapter to a different address in the same subnet, for example `192.168.0.100`, then open `http://192.168.0.1/` in a browser. See [Getting started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/) for the Windows procedure. ## SOPAS ET Network Search SOPAS ET provides a graphical network search for SICK devices. Connect the sensor to the same Ethernet segment as the computer and start the search. The result lists responsive devices with their IP address, MAC address, and device identity. ![SOPAS ET device search](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/sopas-et-device-search.png) *SOPAS ET network search showing a discovered picoScan device.* Use this approach when the sensor is already connected to a switch or when its configured address is unknown. The search uses the same local broadcast principle as the protocol described below; it does not cross routers. Whether the search finds the sensor and can change its IP address depends on the [IP change policy](https://sickag.github.io/sick_lidar_developer_guide/shared-features/ip-address-assignment/). ## Your Own Implementation SICK devices answer a UDP broadcast discovery telegram, so a host on the same segment can locate every device without knowing its address in advance. This requires no authentication and no REST call: send one broadcast datagram to `255.255.255.255:30718`; every responsive device replies by unicast with its full network configuration. This is a limited broadcast: it travels only within the local segment and is discarded at every router boundary. If the device is on a different subnet, connect a host to the same segment and set the address explicitly. *picoScan100 example: Discover devices on the network with Python before implementing the broadcast telegram workflow below. The sensor's SICK discovery service must be enabled.* ### Request Telegram (24 Bytes) Each field is at a fixed position:

**Request Telegram (24 Bytes):** bytes, field, value / source, and description.

| Bytes | Field | Value / source | Description | | ----- | ------------ | ------------------- | -------------------------------------------------------------------------- | | 0 | CMD | `0x10` | Command identifier for a scan (discovery) request | | 1 | isBC | `0x00` | Unicast/broadcast origin flag, set `0x00` even when broadcasting | | 2-3 | Length | `0x00 0x08` | Payload length, big-endian; always 8 for discovery | | 4-9 | Host MAC | `FF:FF:FF:FF:FF:FF` | Sender MAC; all-ones for a broadcast request | | 10-13 | Request ID | random 4 bytes | Fresh random per telegram; devices echo it so you can match replies | | 14 | Scan flag | `0x01` | Marks a scan request; the device ignores the telegram if this isn't `0x01` | | 15 | Reserved | `0x00` | Must be zero | | 16-19 | Interface IP | host address | Host interface IPv4, one byte per octet (big-endian) | | 20-23 | Subnet mask | host mask | Host subnet mask, one byte per octet (big-endian) | ### Python Example This script sends the request telegram from the table above and prints every device that replies within 5 seconds. Set `INTERFACE_IP` and `SUBNET_MASK` to the adapter on the sensor subnet. ```python import os import socket INTERFACE_IP = "192.168.0.100" SUBNET_MASK = "255.255.255.0" TAGS = {b"EIPa": ("IP", 4), b"ENMa": ("Mask", 4), b"EDGa": ("Gateway", 4), b"EDhc": ("DHCP", 1), b"EMAC": ("MAC", 6)} def field(data, tag, size): index = data.find(tag) # value starts after the 4-byte tag and a 2-byte header return None if index < 0 else data[index + 6 : index + 6 + size] def show(value): if len(value) == 4: return socket.inet_ntoa(value) return value.hex(":") if len(value) == 6 else ("DHCP" if value[0] else "static") telegram = (bytes([0x10, 0x00, 0x00, 0x08]) + b"\xff" * 6 + os.urandom(4) + bytes([0x01, 0x00]) + socket.inet_aton(INTERFACE_IP) + socket.inet_aton(SUBNET_MASK)) with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock: sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) sock.settimeout(5) sock.bind((INTERFACE_IP, 0)) sock.sendto(telegram, ("255.255.255.255", 30718)) seen = set() while True: # collect every reply until the timeout try: data, sender = sock.recvfrom(1024) except socket.timeout: break values = {name: field(data, tag, size) for tag, (name, size) in TAGS.items()} identity = (sender[0], values.get("MAC")) if identity in seen: continue seen.add(identity) print(sender[0], {name: show(v) for name, v in values.items() if v}) ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. ### Reply Fields Each reply is a variable-length packet whose configuration fields are tagged: a 4-byte ASCII tag, a 2-byte internal header, then the field bytes. If a tag isn't found, that field isn't present in the response.

**Parsing the Replies:** tag, field, size, and encoding.

| Tag | Field | Size | Encoding | | ------ | ----------------- | ---- | ------------------------------ | | `EIPa` | Device IP address | 4 | IPv4 big-endian | | `ENMa` | Subnet mask | 4 | IPv4 big-endian | | `EDGa` | Default gateway | 4 | IPv4 big-endian | | `EDhc` | DHCP flag | 1 | `0x01` = DHCP, `0x00` = static | | `EMAC` | MAC address | 6 | hex bytes, MSB-first | If a tag isn't found, that field isn't present in the response. ### Platform Notes Set `SO_BROADCAST` before sending, or the send fails. On a multi-homed host, bind the socket to the IP of the adapter on the device subnet so the broadcast leaves the correct network interface card. On Windows, set the sensor network profile to Private; a Public profile blocks the inbound unicast replies. See [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/#connect-the-sensor). SICK's discovery tools perform the same broadcast with a GUI. Use them for a quick look; use the raw telegram above when you need discovery built into your own application or a headless provisioning script. ## Alternative When SICK Discovery Is Disabled: ARP On picoScan100, SICK's UDP discovery can be disabled for cybersecurity reasons. In that case, the sensor does not respond to the usual SOPAS ET or AppManager search. It can still announce its IP address using Gratuitous ARP, which lets you identify it without the SICK discovery broadcast. This approach finds devices visible on the local network; it does not replace the SICK protocol for discovering and retrieving full network configuration. ### Identify the Sensor in Wireshark 1. Connect the sensor directly to the computer or to a local network switch. 2. Capture traffic on the Ethernet adapter connected to that network. 3. Apply the display filter `arp`. 4. Look for a SICK MAC address beginning with `00:06:77`. 5. Read the sensor IP address from the ARP packet details, then connect to that address. ### Windows Open an elevated Command Prompt and run: ```text arp -a ``` Find an entry whose MAC address begins with `00-06-77`; the associated address is the sensor's IP. This only works when the sensor IP is within the computer's current subnet. To look beyond the default subnet, configure the network adapter with a wider subnet mask, such as `255.0.0.0`. ### Linux Connect the sensor over Ethernet and run: ```text arp -n ``` Find a MAC address beginning with `00:06:77` and use its associated IP address. As on Windows, this only works when the sensor address is within the current subnet. A wider mask such as `255.0.0.0` can be used to reach devices outside the default subnet; `0.0.0.0` is not a valid subnet mask. --- # Factory Reset and Application Reset > Compare factory reset and application reset on SICK LiDAR sensors, including their parameter scope, REST and CoLa methods, and recovery precautions. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/factory-reset/ # Factory Reset Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Use a factory reset to restore default device parameters, or an application reset to restore application settings while keeping communication settings. The key difference is whether the communication interfaces are reset. ## Choose the Reset Scope

**Reset options:** effect on settings and the corresponding SOPASair menu entries.

| Action | Effect | SOPASair menu entry | | --- | --- | --- | | Factory reset | Restores default parameters, including communication settings. The current connection can be lost. | **Reset to factory settings** | | Application reset | Resets application settings while retaining communication settings, such as the IP configuration. | **Reset and maintain communication interfaces** | After a factory reset, the sensor IP address is **`192.168.0.1`** for LRS4000, multiScan100, multiScan200, and picoScan100. An application reset keeps the current IP configuration. ## Before You Reset 1. Download a [configuration backup](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) and keep any required passphrase safe. 2. Record the current IP configuration and check the device's default address so that you can reconnect after a factory reset. 3. Ensure that resetting the configuration will not disrupt production or a safety-related process. ## Perform a Reset ### Device Web Interface Log in at the **Service** user level. Open the three-dot menu, select **Device**, choose the required reset option, and confirm it. Menu labels and availability can vary with firmware. ![SOPASair Device submenu showing reset options with and without retaining communication interfaces](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/factory-reset-sopasair-menu.png) *SOPASair Device menu: application reset retains communication interfaces; factory reset also restores their defaults.* ### REST API or CoLa A/B

**Reset methods:** authenticated REST calls and CoLa method telegrams.

| Action | REST method | CoLa A/B method | | --- | --- | --- | | Factory reset | `POST /api/LoadFactoryDefaults` | `sMN mSCloadfacdef` | | Application reset | `POST /api/LoadApplicationDefaults` | `sMN mSCloadappdef` | Choose one method, not both in sequence. Follow the [REST authentication guide](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) and the device's REST reference for [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), or [picoScan120/150](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/). For CoLa access levels and framing, see the [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/), or [picoScan120/150](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/) telegram listings. A reset changes parameters, not firmware. **Reboot device** (`SoftReset`) or a power cycle restarts the device without restoring factory defaults; unsaved changes can be lost. --- # Firmware Update for SICK LiDAR Sensors via GUI or REST API > Update SICK LiDAR firmware through a supported web interface, SOPAS ET, Sentio Creator, or the REST API, depending on the product family. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/ # Firmware Update Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Update the firmware to get fixes and new functions. The available methods depend on the device: - LRS4000: Sentio Creator or SOPAS ET. - multiScan100, multiScan200, and picoScan100: SOPASair, Sentio Creator, SOPAS ET, or the REST API. ## Where to Get the Package Download the package that matches your device and target version from its product page under *Downloads* / *Software*: [picoScan100](https://www.sick.com/de/en/search?text=picoScan100), [multiScan100](https://www.sick.com/de/en/search?text=multiScan100), [multiScan200](https://www.sick.com/de/en/search?text=multiScan200), or [LRS4000](https://www.sick.com/de/en/search?text=LRS4000). [Sentio Creator](https://sickag.github.io/sick_lidar_developer_guide/visualization/sentio-creator/) can also provide firmware packages. Read the release notes for your device before you update: [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/release-notes/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/release-notes/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/release-notes/), or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/release-notes/). ## Web GUI Open the device's firmware page in SOPASair and follow the update workflow. ![Firmware update in the Web GUI](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/firmware-update-webgui.png) *Firmware update in the Web GUI.* ## SOPAS ET 1. Unpack the firmware package (`.spk`). Connect the sensor over Ethernet and keep the power supply stable during the update. 2. Find the sensor in SOPAS ET, add it to the project, and save the parameter file (`.sopas`) as a precaution. 3. Open the device settings, choose **Download firmware**, select the `.spk` package, and log in at the **Service** user level when prompted. 4. Wait until the device has rebooted and its LED is green. Check the firmware version; reinstall the device driver if SOPAS ET asks for it. 5. Check that the device works as expected. If its state is unclear, load the factory defaults at the Service user level and then load the saved parameter file. ## Sentio Creator Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Use Sentio Creator to discover the device, select the firmware version, and install the update. ![Firmware update in Sentio Creator](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/firmware-update-sentio-creator.png) *Firmware update in Sentio Creator.* ## Headless via the REST API Compatible with: multiScan100 multiScan200 picoScan100 Device-specific endpoints: [multiScan100 REST API](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200 REST API](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100 REST API](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/). Automate the update with the five steps below. Run them in order; skipping or reordering steps can leave the device in an inconsistent state. After flashing, the device reboots automatically and is unreachable for a few minutes. The update is successful only when the device is back online with the expected version. ### Get a Session Token multiScan200 and picoScan100 use `POST /api/CreateSessionToken` at Service level with [challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). This endpoint also accepts HTTP Basic authentication, which is convenient in scripts: ```http POST /api/CreateSessionToken Authorization: Basic )> Content-Type: application/json {} ``` Basic authentication sends the password only Base64-encoded. Use it only over HTTPS or on an isolated network. The response contains the session token: ```json { "header": { "status": 0 }, "data": { "token": "eyJhbGci..." } } ``` The multiScan100 REST interface documents `/update`, `RunFirmwareUpdate`, and `UpdateState`, but not `CreateSessionToken`. Use the authentication flow from the release notes or the OpenAPI file for the installed firmware. ### Upload the Package `PUT /api/update` with the firmware file as the binary body. On multiScan200 and picoScan100, the `X-Session-Token` header authorizes this transfer, so Basic Auth is not required here. ```http PUT /api/update X-Session-Token: Content-Type: application/octet-stream ``` A `200 OK` confirms the package was received. ### Start the Update `POST /api/RunFirmwareUpdate` accepts only [challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) for `POST:RunFirmwareUpdate`, not Basic Auth or the session token: ```json { "header": { "nonce": "...", "opaque": "...", "realm": "...", "user": "Service", "response": "" } } ``` ### Poll the Update State `GET /api/UpdateState` every ~5 s until it reaches Finished (2) or the device becomes unreachable (reboot started). Stop on Error (3) and investigate before retrying. ```http GET /api/UpdateState ``` Example response: ```json { "data": { "UpdateState": 1 } } ``` ### Verify the New Version After the device is back online, read the identity and compare against the expected version: ```http GET /api/DeviceIdent ``` Example response: ```json { "data": { "DeviceIdent": { "Name": "picoScan", "Version": "2.3.3.0R" } } } ``` `DeviceIdent.Version` and `GET /api/FirmwareVersion` may format the same firmware version slightly differently, so normalize them before comparing. ## UpdateState Values

**UpdateState Values:** value, state, and meaning.

| Value | State | Meaning | | ----- | -------- | -------------------------------------------------------------------------------------- | | 0 | Initial | No update in progress. Package may be uploaded but flashing hasn't started. | | 1 | Started | Flashing in progress. Do not power-cycle the device. | | 2 | Finished | Flash complete; the device reboots automatically. | | 3 | Error | Update failed. Check package compatibility and retry. Do not power-cycle immediately. | ## Error Handling - `PUT /api/update` returns 403: Missing or expired session token. Create a fresh token and add `X-Session-Token`. - `RunFirmwareUpdate` returns `header.status` 4 (Access Denied) or 10 (Invalid Challenge): Basic Auth or the session token was used instead of challenge-response, or the challenge was invalidated. Use a new [challenge](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication) for `POST:RunFirmwareUpdate`. - `UpdateState` = 3 (Error): Wrong package or an unsigned package on firmware V2.2.0 or later. Download the correct `.spk.signed` and retry. - Device never returns: Normal reboot takes 2-5 minutes. Wait and keep UDP sockets open across the reboot. While `UpdateState` is Started (1), never power-cycle the device. Allow 2-5 minutes total for the flash and reboot. Keep measurement sockets open across the reboot, so the OS doesn't buffer an ICMP port-unreachable message that would break the first `recv()` call afterwards (on Windows, apply `SIO_UDP_CONNRESET`). On multiScan200 and picoScan100, subscribe to the [`UpdateState` WebSocket event](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/) instead of polling to get progress pushes during the flash. On multiScan200 and picoScan100, verify integrity after the update with the [`LFTchecksum`](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/): a firmware change updates `MD5LinuxRoot` and `MD5App` but leaves `MD5Parameters` and `MD5Calibration` untouched. ## Related Articles *How to perform a firmware update via HTTP.* *How to perform a firmware update with SOPASair.* *How to perform a firmware update with SOPAS ET.* --- # IP Address Assignment and IP Change Policy > Change the sensor IP address with SOPAS ET device search and configure the IP change policy that controls when this is possible without login. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/ip-address-assignment/ # IP Address Assignment Compatible with: multiScan100 multiScan200 picoScan100 Changing the IP address through the SOPAS ET device search without login is restricted by an **IP change policy**. With the default policy, an IP change without login is only possible within the first **60 seconds** after boot. After that, a user role with the required rights is needed, or the policy blocks the change entirely. ## Background Since firmware V2.1.0, the picoScan100 stores an IP change policy on the device instead of allowing unauthenticated IP changes; see the [picoScan100 release notes](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/release-notes/). ## Policy Options

**IP change policy:** web UI option, behavior, and CoLa `EtherCoLaScanMode` value.

| Option | Behavior | CoLa value | | --- | --- | --- | | Off | The device cannot be found with the SOPAS ET broadcast search, and the IP address cannot be changed through it. | `2` | | Change IP address without logging in | IP change allowed without login. No time window. | `0` | | Change IP address only when logged in | Device visible in scans. IP change only with login. | `1` | | Change IP address up to 1 min after start without logging in | IP change allowed without login only in the first 60 s after boot. After that, login is required. Default setting on picoScan100. | `3` | The default can differ between device families and firmware versions; for example, device search is enabled by default on multiScan200. Read the active setting from the device before relying on it. ## Change the Policy (via Web UI) 1. Power on the device. 2. Open the device IP address in a browser and log in. 3. Go to **Diagnostics > Cybersecurity > Services and protocols**. 4. Select one of the four options. 5. Save and restart. The policy is also available through `EtherCoLaScanMode` in the CoLa interface. See Set/Read Device Search Mode for [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/#set-device-search-mode-swn-ethercolascanmode), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#set-device-search-mode-swn-ethercolascanmode), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#set-device-search-mode-swn-ethercolascanmode), and the `EtherCoLaScanMode` variable in the REST API references for [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/). The IP address itself is set with `EIIpAddr`, for example [picoScan100 Set IP Address](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#set-ip-address-swn-eiipaddr). For a visual example of changing the address itself rather than the search policy, watch the [picoScan100 example video in Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/#change-the-ip-address). ## Troubleshooting - **60 s window expired:** Reboot the device, or log in with credentials. - **Device not in search:** The policy **Off** may be active. Connect to the known IP address, or find it as described in [Device Discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/#alternative-when-sick-discovery-is-disabled-arp). ## FAQ - **Can I extend the 60 s window?** No. After 60 s, a login is required. - **Which user level is required?** No login is required within the 60 s window. Outside it, see [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). - **Should I downgrade the firmware?** Not recommended. It reduces security. --- # LiDAR License Management > General instructions for activating, reviewing, and deactivating licenses on SICK LiDAR devices. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/license-activation/ # LiDAR License Management Compatible with: multiScan100 multiScan200 picoScan100 Some device functions require a license. Use the device's license manager to transfer an issued license code to the device. The exact screens and available options can vary by device and firmware. ## Before You Begin - Obtain a valid license code for the device. The code is formatted as five groups separated by hyphens. - Connect to the device and open its web interface. ## Activate a License 1. In a browser, connect to the device at `http:///`. On the device overview, choose **View licenses**. ![Device overview with the View licenses link highlighted.](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/license-manager-device-overview.png) *Open the license overview from the device home page.* 2. In the license overview, choose **Activate license**. ![License overview showing available licenses and the Activate license and Deactivate license actions.](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/license-manager-license-list.png) *The license overview also provides the action to deactivate returnable licenses.* 3. Select whether the device has an internet connection for the transfer, then choose **Next**. ![License Manager asks whether an internet connection is available for license activation.](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/license-manager-transfer-connection.png) *Choose the transfer route that matches the device's network access.* 4. Enter or copy the license code. If the license ticket contains several entries, select the license entries to transfer, then continue. ![License ticket selection screen with selectable entries and group licenses option.](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/license-manager-select-licenses.png) *Select the entries that should be transferred to the device.* 5. When the transfer succeeds, close the confirmation and check the updated license overview. 6. Reboot the device. ## Deactivate or Return a License In the license overview, choose **Deactivate license**. During license selection, enter the license code for the license to deactivate, choose a license marked as returnable, then continue and confirm. --- # Time Synchronization with NTP and PTP on SICK LiDAR Sensors > Synchronize SICK LiDAR clocks with NTP or IEEE 1588 PTPv2: offline NTP server setup, REST parameters, and PTP grandmaster settings. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/ # Time Synchronization Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Synchronize sensor clocks with NTP or PTP to align measurements from multiple sensors and correlate scans with logs and external system events. ## NTP Time Synchronization NTP uses a network time server; the sensor acts as a client. *picoScan100 example: Locate and configure the device-time settings before following the NTP setup below. Menu labels may differ with firmware.* ### Offline NTP Server for picoScan100 The following describes configuring an Ubuntu host as a local NTP server and a picoScan100 as its client. This is useful when there is no Internet connection: the controller and sensor use a shared local time source. Requirements: - An Ubuntu host connected to the sensor network. Ubuntu 24.04 no longer ships the `ntp` package; use `chrony` or `ntpsec`. - A picoScan100 with current firmware. - Access to the sensor web interface. Both examples serve the host's local clock to the sensor subnet. Replace `192.168.0.0/24` with your sensor subnet. === "chrony" ```bash sudo apt update sudo apt install chrony ``` Add these lines to `/etc/chrony/chrony.conf`: ```ini # Serve the local system clock when no upstream server is reachable local stratum 10 # Allow queries from the sensor subnet allow 192.168.0.0/24 ``` ```bash sudo systemctl restart chrony ``` === "ntpsec" ```bash sudo apt update sudo apt install ntpsec ``` Add these lines to `/etc/ntpsec/ntp.conf`: ```ini # Serve the local system clock when no upstream server is reachable tos orphan 10 # Allow queries from the sensor subnet restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap ``` ```bash sudo systemctl restart ntpsec ``` On the picoScan100, open the sensor web interface (for example, `http://192.168.0.1/`) and navigate to **Configuration → Basic Settings → Time Synchronization (NTP)**. Choose the time zone and update rate, enter the Ubuntu server's IP address (for example, `192.168.0.11`), and save. Initial synchronization depends on the selected update rate; check its status in the sensor web interface. ![Date and system time configuration tile](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-configuration-date-and-system-time-tile.png) *Date and system time tile in SOPASair.* ### Verify and Troubleshoot NTP Check the server service and its clock, query it locally, inspect NTP traffic, and allow UDP port 123 through UFW if that firewall is enabled: === "chrony" ```bash systemctl status chrony chronyc tracking sudo chronyc clients ``` === "ntpsec" ```bash systemctl status ntpsec ntpq -p ``` For both servers, watch the NTP traffic and open UDP port 123 in UFW if needed: ```bash sudo tcpdump -i any udp port 123 -v sudo ufw allow 123/udp ``` The sensor cannot act as an NTP server. ### Configure NTP Through REST or CoLa Through REST, set `TSCRole` to `1` for NTP client mode and `TSCTCSrvAddr` to the server address. `TSCRole` accepts `0` (no time synchronization), `1` (NTP client), and `3` (PTP slave); other values are rejected with `header.status` 9 (Illegal Value). `LSPdatetime` reads the current sensor time and `LSPsetdatetime` sets it manually. Ensure that the sensor can reach the selected NTP server through the configured network and firewall. For device-specific parameters and telegrams, see the [LRS4000 REST](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/) / [CoLa](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-cola-telegrams/), [multiScan100 REST](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/) / [CoLa](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/), [multiScan200 REST](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/) / [CoLa](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/), and [picoScan100 REST](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) / [CoLa](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/) references. ## PTP Time Synchronization Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 For high-precision synchronization on a local network, use the Precision Time Protocol (PTP) with the sensor and grandmaster settings below. ![Date and system time settings with PTP selected](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/ptp-date-and-system-time.png) *Date and system time settings with PTP selected.* ### Sensor Settings The sensor uses the following fixed IEEE 1588 PTPv2 settings, which cannot be changed:

**Sensor Settings:** parameter, fixed value, and description.

| Parameter | Value | Description | | --- | --- | --- | | PTP profile | IEEE 1588 PTPv2 E2E | End-to-End delay mechanism | | Step mode | Auto-detected | Software PTP: one-step; hardware PTP: two-step | | Clock mode | Ordinary clock | Receives time synchronization from a master clock | | `clockClass` | `255` | Slave-only operation | ### Master Configuration Configure the PTP grandmaster with settings compatible with the sensor:

**Master Configuration:** parameter, required value, and description.

| Parameter | Required value | Description | | --- | --- | --- | | PTP profile | IEEE 1588 PTPv2 E2E | End-to-End delay mechanism | | Transport protocol | UDPv4 | UDP over IPv4 | | `logAnnounceInterval` | `1` (2 seconds) | Interval between announce messages | | `logSyncInterval` | `0` (1 second) | Interval between synchronization messages | | `announceReceiptTimeout` | `3` | Timeout after three missing announce intervals | | `logMinDelayReqInterval` | `0` (1 second) | Minimum interval between Delay_Req messages | | Domain number | `0` | Must match the LiDAR's domain | Enable PTP in the sensor time-synchronization settings, or set `TSCRole` to `3` through the REST API, then connect it to this compatible PTP grandmaster. All participating devices must use the same domain, and network infrastructure must forward PTP traffic correctly. With native ROS 2 on multiScan200 and picoScan100, the device publishes its hardware PTP timestamp in each message header. See [Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2) for the available topics. *picoScan100 example: Enable PTP on the sensor after configuring a compatible grandmaster as described above. Menu labels may differ with firmware.* --- # UDP Unicast, UDP Multicast, and TCP > Compare UDP unicast, UDP multicast, and TCP for measurement data output and configure the sensor for each transport. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/udp-unicast-multicast/ # UDP Unicast / Multicast Compatible with: multiScan100 picoScan100 Measurement data can be sent over UDP unicast, UDP multicast, or TCP. UDP output is available on multiScan100 and picoScan100. multiScan200 and LRS4000 send Compact data over TCP. ## Summary

**Transport comparison:** transport, communication, connection, delivery, and overhead.

| Transport | Communication | Connection | Delivery guarantee | Overhead | Best for | | ------------- | ------------- | ------------------- | -------------------------------- | ------------------------------------- | ------------------------------ | | UDP unicast | One-to-one | Connectionless | None | Low | Low-latency data to one host | | UDP multicast | One-to-many | Connectionless | None | Low; efficient for multiple receivers | The same data to several hosts | | TCP | One-to-one | Connection-oriented | Reliable, ordered, error-checked | Higher | Data integrity; PLCs | For the formats and ports per device, see [Compact Format: Transport](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#transport). ## UDP/IP Unicast (Single Cast) In the data output settings, select **Compact** as the **Format** and set **Measurement data output IP address** to the receiver's IP address. ## UDP/IP Multicast In the data output settings, select **Compact** as the **Format** and set **Measurement data output IP address** to a multicast address in the range `224.0.0.0` to `239.255.255.255`. The sensor sends each packet once for the whole group, reducing network load. Every receiver joins the multicast group and listens on the configured UDP port. Make sure that switches and routers forward multicast traffic, and use IGMP snooping when several receivers are connected. *picoScan100 example: Receive Compact measurement data over UDP multicast after selecting a multicast destination and preparing the receiving hosts.* ## TCP/IP Use TCP when data integrity and order take priority over latency. The TCP formats and ports per device are listed in [Compact Format: Transport](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#transport); on the picoScan100, TCP output uses [LMDscandata](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/). --- # User Levels and Passwords on SICK LiDAR Sensors > Service, Maintenance, and Authorized Client user levels on SICK LiDAR sensors: authentication, level management, and password reset. Source: https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/ # User Levels Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 User levels control who can change the sensor configuration. Reading live data and status does not require a login, but configuration changes, methods, and protected API requests do.

**User Levels:** user level and factory state for all supported devices.

| User level | Factory state | | --- | --- | | Service | Enabled | | Maintenance | Disabled | | Authorized Client | Disabled | Only Service is enabled in the factory state on all supported devices. A Service-level user must enable the other levels before they can be selected. Activate only the levels required by the deployment, then assign and protect their passwords before handing the system over. ## Log In Select an enabled user level in SOPASair and authenticate with its configured password. For the first connection and commissioning sequence, see [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/#log-in). *picoScan100 example: Log in to SOPASair before enabling or changing user levels. Use your deployment credentials; do not retain default passwords.* ## Enabling a User Level Log in to SOPASair with the Service user level, open the user-level management settings, enable the required level, and set its password. Save the configuration permanently with Write EEPROM so the setting persists after a power cycle. ![User levels and access data tile](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-diagnosis-cyber-security-access-data-tile.png) *Access this tile in SOPASair via **Diagnostic → Cybersecurity**.* *picoScan100 example: Enable the user levels needed for protected interfaces, then save the configuration and set secure passwords as described above.* REST API clients enable or disable REST user levels with `EnableUserLevel`. In the challenge-response `header.user` field, write the levels as `Service`, `Maintenance`, and `AuthorizedClient`. CoLa A/B clients use `EnableLegacyUserLevel` for their respective user levels. Authenticate these changes as Service with [challenge-response](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#challenge-response-authentication). For device-specific commands, see the [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) REST API references; CoLa user-level telegrams are listed for [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-cola-telegrams/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/). ### picoScan100 CoLa A/B Access On picoScan100, **Maintenance** and **Authorized Client** are disabled by default to enforce authorization. A Service-level user can enable them in the GUI or over CoLa A/B. In the GUI, log in as **Service** and enable the required levels in the user-level settings. Over CoLa, first log in as **Service**, then use `EnableLegacyUserLevel` with level `2` for Maintenance or `3` for Authorized Client and value `1` to enable it. See the [picoScan100 CoLa telegram listing](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/#enable-disable-cola-user-levels-smn-enablelegacyuserlevel) for the command structure. After enabling the required levels, run `sMN Run` to apply the change. The default passwords are documented in the operating instructions of your device. Do not pass them on, and change them during commissioning. When upgrading from firmware earlier than V2.1.0 to V2.1.0, previously enabled user levels remain enabled. A factory reset restores the defaults: Service enabled, Maintenance and Authorized Client disabled. A driver configured to log in as a disabled Maintenance or Authorized Client user may receive `SetAccessMode 0` (login rejected); a subsequent protected write may return `sFA A` (write not permitted, for example because login is missing). Enable the user level in the device or configure the client to use Service. For example, `sick_scan_xd` supports selecting the user level with its `user_level` parameter from version V3.7 (`3` for Client or `4` for Service); consult its [picoScan launch configuration](https://github.com/SICKAG/sick_scan_xd/blob/673d7d8cc117a706cb2b244849364aa438cc7749/launch/sick_picoscan.launch#L79) for the supported settings. ## Resetting the Password 1. Open the device's web interface and select **Log In → Password forgotten?**. 2. Email the device key, serial number, and part number to your [SICK sales company or service partner](https://www.sick.com/worldwide) to obtain a one-time reset code. 3. Click **Next** to open the code-entry window. You may close it with **x** and reopen it later via **Settings → Password forgotten?** without interrupting the reset. Selecting **Cancel** or repeatedly entering an incorrect code terminates the process and invalidates the code; restart the reset process. 4. Enter the code and click **Reset**. The password returns to its default; device parameters remain unchanged. --- # LiDAR Integration Notes Overview > Find SICK LiDAR integration guidance for power cables, security, SDKs, Compact parsers, ROS, MATLAB, PLCs, and camera systems. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ # Integration Notes Connect sensor data and configuration to your application using the tools and interfaces that fit your system. * [3D With 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/): combine planar scans and motion information into point clouds. * [Cable Dimensioning](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cable-dimensioning/): estimate supply-cable voltage drop. * [Coding Tools & Examples](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/coding-tools-and-examples/): find SDKs, clients, scan receivers, and parser definitions. * [Cybersecurity](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/): review network access, passwords, HTTPS, and data integrity. * [Kaitai Struct Parsers](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/): generate Compact parsers from format definitions. * [MATLAB Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/matlab-integration/): receive native ROS 2 point clouds with ROS Toolbox. * [Milestones Camera Plugin](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/milestones-camera/): integrate cameras with Milestone XProtect and align timing. * [Model Context](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/model-context/): give coding assistants context from local documentation repositories. * [PLC Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/plc-integration/): exchange CoLa B telegrams with PLCs over TCP. * [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/): choose native ROS 2 or the host-side driver. --- # Create 3D Point Clouds with a 2D LiDAR and an Encoder > Build 3D point clouds with an LRS4000 or picoScan100 on a moving axis: host-side transform with encoder data, or the on-device scan merger. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/ # 3D with 2D LiDARs Compatible with: LRS4000 picoScan100 The LRS4000 and the picoScan100 measure distance and intensity in a single plane. Mounting the sensor on a motorized axis (tilt, rotation, or a linear stage) sweeps that plane through 3D space. If an incremental encoder is attached to the axis, the rotation angle at the moment of each scan is known precisely. This means every 2D point can be rotated into a common 3D frame, and a full sweep becomes a dense 3D point cloud. Both approaches work on both devices. The ports below are examples; use the ports configured on your sensor. The LRS4000 sends Compact over TCP instead of UDP; see [Compact Format: Transport](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#transport). Two approaches exist. Choose based on where you want the geometry code to run.

**3D with 2D LiDARs:** comparison criterion, Approach A (host-side), and Approach B (on-device).

| | Approach A (host-side) | Approach B (on-device) | | ------------ | ----------------------------------------------------------- | -------------------------------------------------- | | Angle source | Encoder wired to the sensor | Encoder wired to the sensor, or the built-in IMU | | Processing | Host receives the scan frames and applies the 3D transform | Device accumulates and saves a PCD file internally | | Result | One host-generated `.pcd` per sweep | Single `.pcd` file stored on the device | | Best for | Custom transforms, real-time streaming, maximum flexibility | Simple integration, no host-side geometry code | For every scan frame, the sensor sends an encoder telegram (Compact type 4) with the same `frame_number` and the encoder tick count. This gives frame-accurate synchronization without timing jitter between the scan and position streams. Encoder input is available on the LRS4000 and the picoScan150. ## Hardware and Ports A typical example is a sensor on a motorized tilt axis with a SICK DFS60-series incremental encoder wired to the sensor's encoder input. The same idea applies to rotation or linear stages: what matters is that an encoder on the moving axis feeds the sensor so each scan frame carries a position value.

**Hardware and Ports:** stream, protocol, port, and content.

| Stream | Protocol | Port | Content | | ------------ | ----------- | ---- | ------------------------------------------------------------- | | Scan data | Compact UDP | 2115 | 2D distance + intensity per segment, with `frame_number` | | Encoder data | Compact UDP | 7504 | `tick_count`, reference ticks, speed, `frame_number` | Enable encoder data output (`EncoderDataEnable`, destination in `EncoderDataEthSettings`, default port 7504) and reset the encoder counter at the reference position before you collect data. The [Configuration backup & restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) flow is a convenient way to apply a validated encoder configuration. ## Approach A: Host-Side Transform ### Synchronize by Frame Number Both UDP streams carry a `frame_number`. Build a lookup table from that number to the encoder tick, so you can retrieve the exact axis angle for any scan frame even when the two streams arrive slightly out of order: ```txt on encoder packet: encoder_map[packet.frame_number] = packet.tick_count on scan frame: tick = encoder_map.lookup(frame.frame_number) # or most-recent tick ``` Keep the table bounded in size to avoid unbounded memory growth over long acquisitions. ### Coordinate Transform Convert each encoder tick to an angle, then rotate the 2D scan point around the axis. For a tilt axis along the world Y-axis with the scan plane horizontal at the reference: ```txt theta = (tick / ticks_per_revolution) * 2 * PI # radians x_world = x_scan * cos(theta) y_world = y_scan # lateral axis unchanged z_world = x_scan * sin(theta) ``` Set ticks-per-revolution correctly. This value is specific to your encoder model. A mismatch produces a distorted point cloud. Reset the encoder counter at the reference position so tick 0 is your angular origin, and adapt the transform for a different axis orientation or a linear stage. ### End-to-End Pseudocode Reset the encoder counter to establish tick 0: ```http POST /api/mResetEncoderIncrement ``` Process the two UDP streams and transform each scan frame. The `udp_listen`, `run_until_interrupted`, and `save_pcd` calls are placeholders for your UDP receiver, Compact parser, and PCD writer: ```python import math TICKS_PER_REV = 10000 # set to your encoder's ticks per revolution encoder_map = {} # frame_number -> tick last_tick = 0 cloud_pts = [] def on_encoder_packet(pkt): global last_tick encoder_map[pkt.frame_number] = pkt.tick_count last_tick = pkt.tick_count def on_scan_frame(frame, points_2d): tick = encoder_map.pop(frame.frame_number, last_tick) theta = (tick / TICKS_PER_REV) * 2 * math.pi for x, y, intensity in points_2d: cloud_pts.append({ "x": x * math.cos(theta), "y": y, "z": x * math.sin(theta), "intensity": intensity, }) udp_listen(port=2115, callback=on_scan_frame) # placeholder udp_listen(port=7504, callback=on_encoder_packet) # placeholder run_until_interrupted() # placeholder save_pcd(cloud_pts, "cloud.pcd") # placeholder ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. The [sick_perception_sdk](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/coding-tools-and-examples/) (C++17) is a good starting point for a host-side implementation. ## Approach B: On-Device Scan Merger The device combines the 2D scans with the IMU or encoder angle itself and stores one `.pcd` file. See [3D Scan Recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/) for the configuration and workflow. --- # SICK LiDAR Cable Dimensioning: Avoid Undervoltage > Calculate the voltage drop on the supply cable of a SICK LiDAR sensor and check that the sensor still receives its minimum supply voltage. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cable-dimensioning/ # Cable Dimensioning Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Select a device to prefill its power consumption, minimum sensor voltage, and number of supply wires. Choose a load condition to check typical, maximum, or startup consumption where specified in the operating instructions. **Custom Values** lets you adjust the device-specific inputs, for example to add digital output loads or combine sensors. Supply voltage and cable specifications remain editable for every device. Select the question-mark icon beside an input for guidance.

Input

?

Typical or maximum power consumption from the technical data in the operating instructions. Include digital output loads and add all sensors sharing the cable.

?

Lower limit of the supply voltage range in the technical data of the operating instructions.

?

Output voltage of the power supply under load, minus its tolerance. Typically 24 V.

?

One-way length from the power supply to the sensor connector, including extension cables.

?

Conductor cross-section from the cable data sheet, often given as AWG.

?

Number of wires connected in parallel for supply and for ground. See the pin assignment of the sensor connector.

?

Highest expected temperature of the cable in operation. Warmer copper has a higher resistance.

Result

Voltage at the sensor–
Minimum supply voltage–
Margin–
Voltage drop ΔU–
Current I–
Loop resistance R–
Maximum cable length–

*The curve shows the sensor voltage; dashed lines mark the voltage and length limits.* General remarks: * Measure the voltage at the sensor connector under load to verify the installation. * Check the startup load as well as normal operation: the starting current can cause a voltage drop that prevents the sensor from starting. * Take the supply voltage range and power consumption of your variant from its operating instructions on [sick.com](https://www.sick.com), and include digital output loads in the entered power. * To reduce voltage drop, shorten the cable, increase its cross-section, use two parallel wires per path (halves the resistance), or use a higher permitted supply voltage. * This estimate does not check cable ampacity, connector ratings, fusing, or electrical safety. Device-specific remarks: * Device presets default to maximum operating consumption, not startup consumption. Select the startup load where available, or use **Custom Values** with the startup data from the operating instructions. * **LRS4000** presets exclude digital output loads; select **Custom Values** to add them. * The **multiScan100** presets cover **multiScan136**, **multiScan165**, and **multiScan166**; **multiScan200** uses **multiScan270** data; **picoScan100** uses **picoScan150** data. Verify the operating instructions for your exact variant. * **multiScan270** requires both supply and ground pin pairs: see [Electrical Connection](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/electrical-connection/). Both supply and return wires contribute to voltage drop: ![Power supply, cable with the resistance of the supply wire and the return wire, and sensor](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/voltage-drop.svg){ width="70%" } *Cable resistance reduces the voltage at the sensor by ΔU.* --- # SICK LiDAR Coding Tools and Examples: C++, Python, and C# > Find SICK LiDAR SDKs, REST clients, scan receivers, and Kaitai Struct definitions to generate Compact parsers in your preferred language. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/coding-tools-and-examples/ # Coding Tools & Examples Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Ready-made code for integrating SICK LiDAR sensors, published on GitHub (`SICKAG`). Use it as a starting point for receiving measurement data and controlling the sensor from your application. Check that a project supports your sensor firmware version (shown on the SOPASair Home page) before you start. Recommended starting points: for C++, [sick_perception_sdk](https://github.com/SICKAG/sick_perception_sdk); for Python, [ScanSegmentAPI](https://github.com/SICKAG/ScanSegmentAPI) to receive data and [sick_scan_rest_client](https://github.com/SICKAG/sick_scan_rest_client) to configure the sensor; for ROS, see [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/).

**Coding Tools & Examples:** language, project, use it for, technologies used, and compatible with.

| Language | Project | Use it for | Technologies used | Compatible with | | ------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------ | | C++ | [sick_perception_sdk](https://github.com/SICKAG/sick_perception_sdk) | C++17 SDK: connect, configure, run diagnostics, and receive the Compact stream; includes [worked examples](https://github.com/SICKAG/sick_perception_sdk/blob/main/examples/shared_learning_examples.md). A strong starting point for custom applications. | REST, Compact (UDP/TCP), IMU and encoder, PCD export | LRS4000, multiScan100, multiScan200, picoScan100 | | C++ | [sick_scan_xd](https://github.com/SICKAG/sick_scan_xd) | Generic C/C++ API of the sick_scan_xd driver: receive point clouds without ROS on Linux and Windows. | CoLa, Compact, MSGPACK, LMDscandata | LRS4000, multiScan100, picoScan100 | | Python | [sick_scan_rest_client](https://github.com/SICKAG/sick_scan_rest_client) | Scripted REST configuration with challenge-response handled for you. | REST, challenge-response, password change | LRS4000, multiScan100, multiScan200, picoScan100 | | Python | [sick_scan_xd](https://github.com/SICKAG/sick_scan_xd) | Python API of the sick_scan_xd driver: receive point clouds without ROS on Linux and Windows. | CoLa, Compact, MSGPACK, LMDscandata | LRS4000, multiScan100, picoScan100 | | Python | [ScanSegmentAPI](https://github.com/SICKAG/ScanSegmentAPI) | Receive and analyze segmented scan data, for example plot it with matplotlib or record it to JSON. | Compact, MSGPACK, UDP/TCP, JSON export | LRS4000, multiScan100, picoScan100 | | Python | [ScanSegmentDecoding](https://github.com/SICKAG/ScanSegmentDecoding) | Receive and decode MSGPACK scan segments without the full API. | MSGPACK, UDP | multiScan100, picoScan100 | | C# | [ScanSegmentAPICSharp](https://github.com/SICKAG/ScanSegmentAPICSharp) | Compact-format deserializer for .NET, with a worked example for receiving segmented scan data. | Compact, UDP, .NET | multiScan100, picoScan100 | | Multiple languages | [KaitaiStructDescriptions](https://github.com/SICKAG/KaitaiStructDescriptions) | Generate your own Compact parser in Python, C++, C#, Java, Go, and other supported languages. See [Kaitai Struct Parsers](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/) for the steps. | Compact, Kaitai Struct `.ksy` | LRS4000, multiScan100, multiScan200, picoScan100 | For MATLAB, see [MATLAB Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/matlab-integration/). For the REST API, start with the shared [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) guide. The complete, device-specific endpoint definitions are available in the [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) OpenAPI references. --- # Cybersecurity for SICK LiDAR Sensors > Cybersecurity recommendations for LRS4000, multiScan100, multiScan200, and picoScan100 sensors: network access, passwords, HTTPS, and data integrity. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/ # Cybersecurity Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Download the product-specific Cybersecurity Hardening Guide from **Downloads** on the individual product page at [sick.com](https://www.sick.com/): [LRS4000](https://www.sick.com/de/en/search?text=LRS4000), [multiScan100](https://www.sick.com/de/en/search?text=multiScan100), [multiScan200](https://www.sick.com/de/en/search?text=multiScan200), or [picoScan100](https://www.sick.com/de/en/search?text=picoScan100). Cybersecurity covers the entire product life cycle. Increasing digitalization and network complexity in production plants increases the risk of cyberattacks from inside or outside the production network. A comprehensive cybersecurity strategy is therefore essential. The asset owner is responsible for installing and maintaining security measures. Securing SICK devices in a network requires the active participation of the asset owner. The recommendations below apply to the LRS4000, multiScan100, multiScan200, and picoScan100. Menus, default states, available services, and authentication requirements vary by family, variant, and firmware. Sections with device-specific values name the products they cover. Confirm settings in the product-specific hardening guide and the device interface before applying them. This page covers: - Communication security and access management - Application and field-evaluation aspects - User levels - Device interfaces - Ethernet-related settings ## Further Cybersecurity Information For a cybersecurity overview, see [SICK PSIRT](https://www.sick.com/psirt). Current security advisories are listed on the [SICK PSIRT Security Advisories](https://www.sick.com/de/de/product-security-incident-response-team-psirt/security-advisories/s/psirt-advisories) page. Report security issues to the SICK Product Security Incident Response Team (SICK PSIRT). Read SICK's Information Handling Policies before sending security details. Product-specific settings and telegram details are available from the device documentation. The product page is available through the SICK Product ID: [`pid.sick.com/{P/N}/{S/N}`](https://pid.sick.com/), where `{P/N}` is the part number and `{S/N}` is the serial number shown on the type label. The same part number links the device to its [Asset Administration Shell](https://sickag.github.io/sick_lidar_developer_guide/shared-features/asset-administration-shell/), which holds the data sheet, operating instructions, certificates, and CAD data of the product type. The examples and recommended settings on this page are general guidance, not customer-specific solutions or a replacement for specialist technical advice. ## General Recommendations ### Intended Use These are non-contact LiDAR sensors for indoor or outdoor, mobile or stationary use in stand-alone operation. LRS4000 and picoScan100 are 2D LiDAR families; multiScan100 and multiScan200 are multi-layer 3D LiDAR families. Depending on the device, configuration, and application software, typical applications include: - Continuous output of measurement data - Monitoring freely defined fields, with object detection signaled through digital outputs or telegrams - Stationary field protection, area monitoring, and access control - Navigation and anti-collision for mobile platforms - Profile detection, collision protection, object protection, and access monitoring - 3D mapping, environment perception, and volume monitoring (multiScan200) Use the device only in industrial environments (EN 61000-6-4). Incorrect use, improper modification, or tampering invalidates any warranty and may result in damage for which SICK AG accepts no responsibility. ### Environmental Influences For outdoor variants, fog, steam, dust, rain, and snow can affect the detection range. The effect can only be quantified through a verification test at the intended site. ### Restrict Physical Access Operate the device in a protected area where only instructed and approved personnel have access. ### Limit Exposure to Public Networks Do not use the devices in public networks. Use an isolated network wherever possible to reduce exposure and risk. ### Establish an Update Strategy Keep the device firmware up to date: 1. Search for the product at [sick.com](https://www.sick.com). 2. Check **Downloads** for the latest firmware version and release notes. 3. Check for updates regularly and apply them as they become available. 4. Test updates in the specific installation before deploying them at larger scale. Perform firmware updates only in a trusted environment. Release notes contain information about included security patches. ### Configuration Backup and Restore Keep a protected backup of a known-working configuration so that the device can be returned to a secure state. The [Backup & restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/) workflow supports multiScan100, multiScan200, and picoScan100. A passphrase can encrypt the backup. File-transfer authentication differs by firmware; follow the instructions for the matching OpenAPI file. ### Data Integrity Verify downloaded `.spk` and `.sdd` files with the instructions at [sick.com/verify-downloads](https://www.sick.com/verify-downloads). The [`LFTchecksum` workflow](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/) is available on multiScan200 and picoScan100. ### Brute-Force Protection After five consecutive unsuccessful login attempts, the picoScan100 enters a 30-second time lock. Other families can use a different threshold or lockout duration. ### Periodic Security Tests Regularly verify that the security system works as intended and document the results. ### Device Identification Verify that the correct device type and system plug are connected. The product ID uniquely identifies the device and consists of its part number and serial number. Find the product ID on the device and system-plug labels, or read it through the user interface. The device information also shows the currently installed firmware version, which follows semantic versioning. The device part number can also be read through the API: ```http GET http://192.168.0.1/api/OrderNumber ``` Read the serial number with `GET http://192.168.0.1/api/SerialNumber`. Together they form the product ID [`pid.sick.com/{P/N}/{S/N}`](https://pid.sick.com/). See [Link A Device To Its AAS](https://sickag.github.io/sick_lidar_developer_guide/shared-features/asset-administration-shell/#link-a-device-to-its-aas) to connect this ID with the product type data. For telegram-based access, refer to the [CoLa / LMDscandata](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/) documentation and the [Compact format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/). ### Use the Device-Not-Ready Status The Device-Not-Ready status signals that the device is not operating correctly. Monitor it through communication or a digital output. A change to this state while device parameters are being changed can be used as a manipulation warning. ## Protection Levels Each protection level assumes that the recommendations from the previous level are followed.

**Protection Levels:** protection level, intended use, and procedures.

| Protection level | Use for | Procedures | | --- | --- | --- | | No protection | Demonstrations or test scenarios | Set factory defaults | | Basic protection | Recommended minimum for daily operation in an uncritical environment | Check firmware and release notes; change all passwords; configure network settings; disconnect unused interfaces; close unused ports and services | | Advanced protection | Exposed or critical systems with advanced security requirements | Apply basic protection and limit network access by IP range | ### No Protection In this state there are no access restrictions: passwords remain at their defaults and interfaces are active. Do not use this state for daily operation. Use it only for demonstrations or tests, or when physical access is restricted and the device is isolated from the network or protected by a firewall. #### Set Factory Defaults To start from a known state: 1. Log in to the device with user level **Service**. 2. Verify the user level. 3. Set the device to factory defaults. The device resets default passwords and reboots with the standard IP address `192.168.0.1`. If a different IP address was previously used, either open the default address in a web browser or search for and reconnect to the device in SOPAS ET. ### Basic Protection Basic protection is the minimum recommended level for daily operation in an uncritical environment. #### Check Firmware and Release Notes Critical vulnerabilities can be discovered during the device life cycle. Updating firmware is therefore an important cybersecurity measure. Before commissioning, install the latest firmware and review its release notes for security patches. Update only in a trusted environment. #### Change Passwords Enable only the user levels required by the deployment and assign each a unique, secret password. Factory user-level states vary by family and firmware. Follow the [User levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/) guide for the current activation and password workflow. Use passwords containing uppercase letters, lowercase letters, special characters, and numbers. Change passwords over a confidential connection, preferably a point-to-point connection during initial commissioning. #### Reset the Service Password (picoScan100)
On picoScan100, only the Service password can be reset to its default through the password-reset process: 1. Select **Password forgotten**. 2. Send the generated email to the responsible SICK sales company or service partner listed at [sick.com/worldwide](https://www.sick.com/worldwide). 3. Paste the received code and select **Reset**. Selecting **Cancel** aborts the process. Request a new reset code from the manufacturer if necessary. To regain access to another user level, first reset the Service password, back up the configuration, and then reset the device to factory defaults.
#### Configure Network Settings The documented factory network defaults for the device families covered here are:

**Configure Network Settings:** setting and default.

| Setting | Default | | --- | --- | | IP address | `192.168.0.1` | | Subnet mask | `255.255.255.0` | | Default gateway | `0.0.0.0` |
The following factory defaults are documented for the **multiScan270** (Operating Instructions 8031195/0000, issue 2026-09-30) and **picoScan150** (Hardening Guide 8029481/1S7Z, 2025-04). They do not describe all service ports or data-output settings. Confirm the defaults for other variants and firmware versions on the device.

**Factory network-service defaults:** service and port, multiScan270 state, and picoScan150 state.

| Service | Port | multiScan270 | picoScan150 | | --- | --- | --- | --- | | HTTP (web server, REST) | TCP `80` | Enabled | Enabled | | CoLa A / CoLa B | TCP `2111` / `2112` | Disabled | Enabled | | CoLa2 | TCP `2122` | Disabled | Always enabled | | Device search | UDP `30718` | Enabled | Time-limited |
Ports and service availability vary by device and firmware. The entries below identify the exact device variant documented; they are not family-wide defaults. Check the target device's **Diagnostics > Cybersecurity** view before configuring firewall rules. Measurement-data output ports can also be configured separately from the device's management services.
#### LRS4000 (LRS4581) The LRS4581 SOPASair data-output view lists the CoLa transports and their ports below. Its Operating Instructions (8026337/1VNC, 2026-04-30) specify CoLa A/B and REST communication and state that HTTP is active by default; the device UI shows which services are currently enabled.

**LRS4581 network services and data output:** service or output, transport and port, and purpose.

| Service or output | Transport and port | Purpose | | --- | --- | --- | | HTTP/REST | TCP `80` | Web interface and configuration API | | HTTPS | TCP `443` | Encrypted web interface and REST API | | CoLa A | TCP `2111` | Configuration and status telegrams | | CoLa B | TCP `2112` | Configuration and status telegrams | | CoLa B measurement data | UDP `2213` | Measurement-data output | | CoLa 2 | TCP `2122` | SOPAS communication | | Compact measurement data | TCP `2115` | Measurement-data output | | NTP | UDP `123` | Time synchronization | | PTP | UDP `319` / `320` | Time synchronization | The SOPASair walkthrough shows the [data-output ports](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/#data-output) and [Cybersecurity view](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/graphical-user-interface/#cybersecurity). These ports are those shown for the LRS4581; verify the actual device and firmware before applying them to another LRS4000 variant.
#### multiScan100 (multiScan165) The ports below are shown in the multiScan165 SOPASair **Diagnostics > Cybersecurity** service list. The walkthrough capture shows the selected state at capture time, not factory defaults. Check the live service list on multiScan136 and multiScan166 rather than assuming their availability or activation state matches this example.

**multiScan165 network services:** service, transport and port, and purpose.

| Service | Transport and port | Purpose | | --- | --- | --- | | Web server (HTTP) | TCP `80` | Browser interface and REST API | | HTTPS | TCP `443` | Encrypted browser interface and REST API | | CoLa A / CoLa B | TCP `2111` / `2112` | Legacy configuration and status telegrams | | CoLa 2 | TCP `2122` | SOPAS ET and firmware-update communication | | Device search | UDP `30718` | SOPAS ET discovery and Ethernet parameter changes | | SSH server | TCP `22` | Developer access to the operating system | | Developer firmware | TCP `80` / `443` | Developer firmware installation; enable only when needed | | Scan and IMU data output | UDP, destination port configured in SOPASair | Measurement and secondary-sensor data | | NTP | UDP `123` | Time synchronization | | PTP | UDP `319` / `320` | Time synchronization | See the multiScan100 [SOPASair Cybersecurity walkthrough](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/#cybersecurity) and [Data Output walkthrough](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/graphical-user-interface/#data-output) for the service list and configurable output ports.
#### multiScan270 Network Services and Ports The following matrix applies specifically to the **multiScan270**, as documented in Operating Instructions 8031195/0000, issue 2026-09-30. Ports, service availability, and factory states can differ on other multiScan200 variants or firmware versions. Verify the settings on the target device before configuring network or firewall rules.

**multiScan270 Network Services and Ports:** service, purpose and direction, interface, transport and device port, peer port, and factory state.

| Service or protocol | Purpose and direction | Interface | Transport and device port | Peer port | Factory state | | --- | --- | --- | --- | --- | --- | | HTTP/REST | Configuration and measurement data; bidirectional | ETH1 | TCP `80` | Random | Enabled | | HTTPS | Configuration and measurement data; bidirectional | ETH1 | TCP `443` | Random | Enabled | | SOPAS (CoLa 2) | Configuration and measurement data; bidirectional | ETH1 | TCP `2122` | Random | Disabled | | SOPAS (CoLa A/B) | Configuration and measurement data; bidirectional | ETH1, ETH2 | TCP `2111` / `2112` | Random | Disabled | | NTP | Time synchronization; bidirectional | ETH1 | UDP `123` | Random | Inactive | | PTP | Time synchronization; bidirectional | ETH1 | UDP `319` / `320` | Random | Inactive | | UDP device search | Device discovery; bidirectional | ETH1 | UDP `30718` | Random | Enabled | | Compact scan data | Measurement data; outgoing | ETH1 | TCP `2115` / `2116` | — | Disabled | | ROS 2 | Measurement data; bidirectional | ETH1 | UDP `7400`–`65399` | Random | Disabled | | Compact IMU data | IMU measurement data; outgoing | ETH1 | TCP `2117` | — | Disabled |
#### picoScan100 (picoScan150) The ports below are shown in the picoScan150 SOPASair **Diagnostics > Cybersecurity** service list. The visible on/off state is the state in the walkthrough capture, not a guarantee of the current device state. The default states documented for HTTP, CoLa1, CoLa2, and device search are listed in the factory-default table above; verify those settings on the installed firmware.

**picoScan150 network services:** service, transport and port, and purpose.

| Service | Transport and port | Purpose | | --- | --- | --- | | Web server (HTTP) | TCP `80` | Browser interface and REST API | | HTTPS | TCP `443` | Encrypted browser interface and REST API | | CoLa A / CoLa B | TCP `2111` / `2112` | Legacy configuration and status telegrams | | CoLa 2 | TCP `2122` | SOPAS communication | | Device search | UDP `30718` | SOPAS ET discovery and Ethernet parameter changes | | Compact / MSGPACK scan output | UDP, destination port configurable; Compact factory destination port `2115` | Measurement-data output | | LMDscandata output | TCP `2111` / `2112` (CoLa A/B) | Scan telegrams | | IMU and encoder output | UDP, destination port configured in SOPASair | Secondary-sensor data | | Native ROS 2 | DDS over UDP; port range depends on middleware and domain ID | ROS 2 data output | | NTP | UDP `123` | Time synchronization | | PTP | UDP `319` / `320` | Time synchronization | See the picoScan100 [SOPASair Cybersecurity walkthrough](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/#cybersecurity) and [Data Output walkthrough](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/graphical-user-interface/#data-output) for the service list and configurable output ports. The picoScan150 Operating Instructions do not give a fixed Native ROS 2 port range; use the configured Cyclone DDS domain and host network settings rather than assuming the multiScan270 range.
#### Disconnect Unused Interfaces If a communication interface is not used by the application, disconnect its communication cable. For example, an application using only digital I/O does not need a permanently connected communication interface used only for parameterization. #### Close Unused Ports and Services Disable every protocol that is not required for operation. This reduces the device's attack surface. ##### Legacy Protocols (CoLa) CoLa1 (CoLa ASCII/Binary) is a legacy interface for configuration and status requests. Disable it when the application does not need it. On multiScan200 and picoScan100, manage this service under **Diagnostics > Cybersecurity**; CoLa1 is disabled by default on multiScan200 and enabled by default on picoScan100. On LRS4000 and multiScan100, inspect the service state and available controls on the device before changing it. ##### SOPAS ET Device Search Limit device visibility through broadcast scanning. On picoScan100, the device search setting offers four modes:

**SOPAS ET Device Search:** mode and behavior.

| Mode | Behavior | | --- | --- | | Enabled | The device can be discovered and its IP address can be changed without authentication. | | Time-Limited | The device can be discovered and its IP address can be changed without authentication for 60 seconds after boot. | | Restricted | The device can be discovered, but its IP address cannot be edited without authentication. | | Disabled | The device cannot be discovered. **Recommended where applicable.** | Device search uses UDP port `30718`. It is **Time-Limited** by default on the picoScan100.
On the multiScan200, device search is enabled by default; disable it in **Diagnostics > Cybersecurity** when it is not required.
On LRS4000 and multiScan100, check the device's cybersecurity service list for the device-search service and its current state. The picoScan100 modes and default values above do not necessarily apply to those families. ##### Web Server
On multiScan200 and picoScan100, the web server uses TCP port `80` and is enabled by default. It provides browser-based visualization and parameterization; when disabled, the sensor remains reachable through SOPAS ET. For LRS4000 and multiScan100, inspect the cybersecurity service list before disabling web access.
##### CoLa2
CoLa2 uses TCP port `2122`. On picoScan100 it cannot be disabled. On multiScan200 it is disabled by default; enable it in **Diagnostics > Cybersecurity** only when required. Check the product-specific service list for CoLa2 availability on other families.
##### Measurement Data Output Enable measurement data output only when required: 1. Log in as **Authorized client**. 2. Open **Application > Data output > Measurement data output**. 3. Enable UDP streaming. Enabling measurement data output opens a device-side UDP port. Disabling it closes that port again. ##### IMU Data Output Where supported by the device variant and licenses, configure IMU output under **Application > Data output > IMU data output** as **Authorized client**. Enable UDP streaming only when required. It opens a device-side UDP port; disabling the stream closes the port. ##### Digital I/O Configure digital signals for device-specific application signals, such as DeviceNotReady or field evaluations, under **Configuration > Inputs and outputs**. Log in as **Authorized client**. ##### Date and System Time Configure synchronized time under **Basic settings > Date and system time** as **Authorized client**, where this setting is available. NTP uses network time-server traffic. All four families support PTP over UDP ports `319` and `320`. Check the device's service list and [time-synchronization guide](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/) for supported methods and current state. ##### User Levels
On all devices, only **Service** is enabled in the factory state; it cannot be deactivated. See [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/).
#### Use Encrypted Communication Use HTTPS to encrypt web-interface and REST communication. Measurement data sent over UDP or TCP is not encrypted by HTTPS. Follow the [HTTPS & certificates](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/) guide to upload a valid certificate bundle and verify the enabled state. ### Advanced Protection Advanced settings are applied in addition to the basic settings. #### Limit Network Access by IP Range Change the default IP address to a non-default value and limit the subnet mask to the smallest subnet that meets the application's needs. Subnetting reduces broadcast traffic and makes it easier to isolate network problems. Configure this under **Configuration > Connection options > Ethernet** as **Service**. ## Application-Related Recommendations ### Primary Sensor Data The supported data formats vary by family. Use the [Data Streaming overview](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/) to choose a format available on the device and review its security implications. Measurement data sent over UDP or TCP is not encrypted by HTTPS. The notes below on telegram fields are limited to the named formats and families. #### Compact Format (Recommended) Compact packets contain user data and a CRC32 checksum. Telegram headers and fields differ by format and family.
Type 1 scan telegrams are used by LRS4000, multiScan100, and picoScan100.
multiScan200 uses type 6 scan telegrams.
Consult the [Compact format guide](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) for the device-specific fields used to check data identity, ordering, timing, and integrity. #### MSGPACK Format (multiScan100 and picoScan100)
MSGPACK is available on multiScan100 and picoScan100. The following packet fields and segment details describe the documented picoScan100 structure; check the matching product documentation before relying on them for another family.

**MSGPACK Format (multiScan100 and picoScan100):** field and purpose.

| Field | Purpose | | --- | --- | | Telegram counter | Counts measurement-data telegrams since power-up, starting at `1`; detects lost data. | | Transmit timestamp | Sensor system time in microseconds since 1970-01-01 00:00 UTC; detects delays. Synchronize the sensor with a time server where required. | | Segment counter | Identifies segments. A 276° frame is split into 10 segments of 30° or 5 segments of 60°, depending on the scanning frequency. | | Frame number | Counts frames since device startup; detects lost data. | | Sender ID | Contains the device serial number; identifies the sending sensor. | | CRC32 checksum | Follows the user data and is calculated over the MSGPACK buffer only, without the STX bytes and the size field. |
#### LMDscandata Format (LRS4000 and picoScan100)
LMDscandata is available on LRS4000 and picoScan100. The following field details describe the documented picoScan100 structure; check the product-specific telegram listing for another family:

**LMDscandata Format (LRS4000 and picoScan100):** field and purpose.

| Field | Purpose | | --- | --- | | Serial number | Identifies the sending device. | | Telegram counter | Counts telegrams created since power-up, starting at `1`; detects lost data. | | Version number | Identifies the serialization version and helps trace structure changes. | | Scan counter | Counts scans actually created by the device. | | Time since startup | Counts microseconds since power-up, starting at `0`. | | Device time | Sensor system time since 1970-01-01 00:00 UTC in microseconds; detects delays. | | XOR checksum | Verifies transfer integrity. CoLa B only: one byte, the XOR of all data bytes. |
### Secondary Sensor Data multiScan100 and picoScan100 use Compact type `2` for IMU data. multiScan200 uses type `7`, with its standard header. The LRS4000 provides IMU data through CoLa events or the REST API instead of Compact. Use the [Compact format guide](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-2-imu) for device-specific IMU fields: - Telegram version: the described telegram structure uses version `1`. - IMU sensor timestamp: sensor system time in µs since 1970-01-01 00:00 UTC; detects delays in the data stream. - CRC32 checksum: CRC32 of all words except the checksum. ### Device State Monitor device state to detect changes in parameterization: - CoLa `sRN SCdevicestate` transmits the general device state. - REST `GET /api/DeviceStatus` reads the device status. ### Recommended Security Measures #### Last Modified Information Protect and monitor the information about when device parameters were changed and stored. Find it under **Diagnosis > Overview > Operating information**. #### Messages Regularly review the diagnostic overview under **Diagnosis > Overview > Messages**. If the sensor is not working as intended, use the troubleshooting information to correct the problem or determine how to proceed. #### Diagnostic File The device provides a diagnostic file for in-depth analysis. Only SICK can read this file. Use NTP synchronization so that device information can be assigned correctly: 1. Log in as **Service**. 2. Open **Basic settings > Date and system time** and configure NTP or PTP. 3. Open **Diagnostics > Overview > Diagnostic file**. 4. Select **Create file**, then download the file. #### Changing Parameters Prevent unauthorized operators from changing parameters because parameter changes can alter application results. Limit access to device parameters to the minimum number of people required by the need-to-know principle. --- # SICK LiDAR: Generate Parsers with Kaitai Struct > Generate Compact data parsers for SICK LiDAR sensors using Kaitai Struct, with a browser-based workflow or the command-line compiler. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/ # Kaitai Struct Parsers Compatible with: LRS4000 multiScan100 multiScan200 picoScan100
![Kaitai Struct](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/kaitai-struct-logo.png) [Kaitai Struct](https://kaitai.io/) generates parsing code from a binary-format description. Use SICK's [KaitaiStructDescriptions](https://github.com/SICKAG/KaitaiStructDescriptions) to build a [Compact](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) parser in Python, C++, C#, Java, Go, or another supported language instead of implementing the byte layout yourself.
## What Is Kaitai Struct? A `.ksy` file describes a binary format in YAML: field names, data types, byte order, repeated structures, and conditions. The compiler turns that description into parser classes for your chosen language. The same description can therefore serve applications written in different languages without maintaining separate byte-offset logic. The Web IDE combines a hex view with a parsed field tree. Load a captured telegram to explore the structure before adding the generated code to your application. ## Compact Frame and Payloads The definitions are in the repository's `formats` directory. Start with `compact_frame.ksy`: it reads the outer frame and selects the payload definition using `telegram_type`. Keep the other `.ksy` files alongside it because the frame imports them. The definitions cover scan, IMU, ambient-light, and encoder telegrams; availability depends on the sensor. All telegrams have the following outer frame. Multi-byte numbers are little-endian.

**Compact Frame:** fields in transmission order, size, and purpose.

| Field | Size | Purpose | | ---------------- | -------- | ------------------------------------------------------- | | `start_of_frame` | 4 bytes | Start marker: `02 02 02 02` | | `telegram_type` | 4 bytes | Selects the payload definition | | `payload` | Variable | Scan, IMU, ambient-light, or encoder data | | `checksum` | 4 bytes | CRC32 over the start marker, telegram type, and payload | The [frame definition](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/compact_frame.ksy) imports these payload definitions:

**Payload Definitions:** telegram type, content, and supported devices.

| Type | Definition | Devices | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | | 1 | [Scan data, spherical coordinates](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_1_primary_data_spherical_coordinates.ksy) | LRS4000, multiScan100, picoScan100 | | 2 | [IMU](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_2_imu.ksy) | multiScan100, picoScan100 | | 3 | [Ambient light](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_3_ambient_light.ksy) | multiScan200 | | 4 | [Encoder](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_4_encoder.ksy) | picoScan150 | | 6 | [multiScan200 scan data](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_6_primary_data_multiscan200.ksy) | multiScan200 | | 7 | [IMU with standard header](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_7_imu_standard_header.ksy) | multiScan200 | Types 3, 4, 6, and 7 use the shared [standard header](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/compact_header.ksy). Types 1 and 2 have their own layouts. Use the linked definitions for the complete field layout and the operating instructions for device-specific output settings. ## Generate in the Web IDE 1. Download the repository using **Code > Download ZIP** and extract it. 2. Open the [Kaitai Web IDE](https://ide.kaitai.io/). 3. Import the `.ksy` files from `formats`, including `compact_frame.ksy` and its dependencies. 4. Right-click `compact_frame.ksy` in the file tree, select **Generate Parser**, and choose your target language. 5. Save the generated modules and add them to your application together with the matching [Kaitai Struct runtime library](https://kaitai.io/#download). To inspect a capture, load a `.bin` file containing one complete Compact telegram into the hex view. Use only the application payload, including the Compact start marker and checksum, not a complete Ethernet packet or a PCAP file. ## Generate from the Command Line Install the [Kaitai Struct compiler](https://kaitai.io/#download), including its Java prerequisite, and add `kaitai-struct-compiler` to your `PATH`. Clone the definitions and generate a Python parser: ```powershell git clone https://github.com/SICKAG/KaitaiStructDescriptions.git Set-Location KaitaiStructDescriptions kaitai-struct-compiler -t python --outdir generated formats\compact_frame.ksy ``` The compiler writes `compact_frame.py` and the imported payload modules to `generated`. Keep those modules together. For another language, change the `-t` value; run `kaitai-struct-compiler --help` to list the supported targets. For example, generate C# or C++/STL code with: ```powershell kaitai-struct-compiler -t csharp --outdir generated-csharp formats\compact_frame.ksy kaitai-struct-compiler -t cpp_stl --outdir generated-cpp formats\compact_frame.ksy ``` For Python, install the runtime in your application's environment: ```powershell python -m pip install kaitaistruct ``` The runtime reads the binary data; the compiler is needed only when generating or updating the parser. Other target languages need their corresponding runtime library. Warnings suggesting `num_*` names for count fields are style warnings, not parsing errors. ## Use the Generated Parser Pass one complete Compact telegram to the generated `CompactFrame` parser. Read `telegram_type` first, then access the corresponding `payload` fields. See [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/) for the telegram types, field conventions, and conversion to Cartesian coordinates. ### Scan Data For type 1, `payload.header` contains the telegram version and counter. `payload.module` holds the modules; each module has metadata and beam data. The metadata describes the number of beams, layers, and echoes, the acquisition times, and the elevation and azimuth angles. This Python example reads one complete Compact telegram from `telegram.bin`, for example a UDP payload saved with **File > Export Packet Bytes** in Wireshark, and prints every echo: ```python import sys sys.path.insert(0, "generated") # folder written by kaitai-struct-compiler from compact_frame import CompactFrame with open("telegram.bin", "rb") as file: # one complete Compact telegram frame = CompactFrame.from_bytes(file.read()) if frame.telegram_type == 1: for module in frame.payload.module: meta = module.metadata print("frame", meta.frame_number, "beams", meta.number_of_beams_per_scan) for beam in module.beams: for line in beam.lines: for echo in line.echos: distance = echo.distance if meta.data_content_echos.distance else None rssi = echo.rssi if meta.data_content_echos.rssi else None print(distance, rssi) ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. The generated `distance` property applies the version-4 scaling factor and returns millimeters. `distance_raw` is the unscaled value. Check the content flags before accessing optional fields. Combine distance with the layer elevation and beam azimuth for point-cloud reconstruction; see [Type 1: Scan Data](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-1-scan-data). ### IMU Data Type 2 has a fixed-size payload without repeated scan modules. Its fields are available directly under `frame.payload`. Which measurements are usable depends on the sensor.

**IMU Fields:** generated payload fields and their meaning.

| Field | Meaning | | --------------------------------- | -------------------------------- | | `acceleration.x`, `.y`, `.z` | Acceleration in m/s² | | `angular_velocity.x`, `.y`, `.z` | Angular velocity in rad/s | | `orientation.w`, `.x`, `.y`, `.z` | Orientation quaternion | | `timestamp` | Sensor timestamp in microseconds | For multiScan200, select type 7 instead. It has the standard header before the IMU measurements. ### Encoder Data Type 4 links an external encoder reading to the scan through `frame_number`. The common header is under `frame.payload.header`; encoder values are directly under `frame.payload`.

**Encoder Fields:** generated payload fields and their meaning.

| Field | Meaning | | ---------------------------------------------------------------------- | ------------------------------------------------------------ | | `frame_number` | Identifies the corresponding scan frame | | `tick_count` | Current encoder count | | `tick_count_at_reference_signal_1`, `tick_count_at_reference_signal_2` | Counts captured at reference signals | | `speed` | Speed in units/s according to the configured conversion rate | | `tick_count_timestamp` | Time of the last count change | | `timestamp_of_reference_signal_1`, `timestamp_of_reference_signal_2` | Times of the reference-signal events | For an application example, see [3D With 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/). *picoScan100 example: Receive Compact data in C# with Kaitai Struct after reviewing the generated parser. Your application still needs the reception and validation handling described below.* ## Reception and Validation The parser does not receive data from the sensor. Your application must handle the connection and telegram boundaries: * For UDP, receive the complete datagram payload. IP fragments must be reassembled before parsing. * For TCP, collect bytes until a complete Compact telegram is available. A single socket read can contain part of a telegram or several telegrams. * Validate the CRC32 separately. The frame definition reads the checksum but does not verify it. * Handle truncated or unsupported telegrams explicitly. Check the sensor's operating instructions and firmware compatibility before using decoded values. To compare your decoded values with a capture, use the [Compact Wireshark dissector](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#wireshark-dissector). If you prefer a library that also handles reception, see [Coding Tools & Examples](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/coding-tools-and-examples/). --- # Use SICK LiDAR Data in MATLAB via ROS 2 > Subscribe to picoScan100 PointCloud2 data in MATLAB with the ROS Toolbox over native ROS 2 (DDS), without a SICK driver. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/matlab-integration/ # MATLAB Integration Compatible with: multiScan200 picoScan100
![MATLAB](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/matlab-logo.png) MATLAB ROS Toolbox can subscribe directly to native ROS 2 data from multiScan200 or picoScan100 through DDS. No SICK ROS driver or bridge is required. The example below uses picoScan100 point-cloud data on `/cloud/all_points` as `sensor_msgs/PointCloud2` with the default ROS domain ID `0`.
## Validated Setup

**Validated Setup:** component and version or setting.

| Component | Version / setting | | --- | --- | | Operating system | Windows 11 | | MATLAB | R2025b with ROS Toolbox | | ROS 2 / DDS | Kilted with CycloneDDS | | ROS domain ID | `0` (device default) | All DDS participants must use the same domain ID as the sensor. Ensure that the sensor's native ROS 2 interface is enabled and that the computer firewall allows DDS traffic. See [Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2) for sensor-side setup. ## Receive PointCloud2 Data The following script creates a MATLAB ROS 2 node, lists visible topics, and prints the number of points received on `/cloud/all_points`. ```matlab node = ros2node("/matlab_cloud_counter"); disp("Available ROS 2 topics:"); disp(ros2("topic", "list")); % Keep the subscriber handle alive until after message reception. sub = ros2subscriber( ... node, ... "/cloud/all_points", ... "sensor_msgs/PointCloud2", ... @onPointCloud); %#ok disp("Subscribed to /cloud/all_points"); t0 = tic; while toc(t0) < 10 pause(0.1); end clear sub node disp("Finished."); function onPointCloud(msg) pointCount = double(msg.width) * double(msg.height); fprintf("PointCloud received: %d points\n", pointCount); end ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. ## Visualize Live Data Open **Apps** > **ROS 2 Data Analyzer**, choose **Open** > **Live Network Data**, select **Live ROS 2 network data**, and set the ROS domain ID to `0`. Create a PointCloud Visualizer, choose `/cloud/all_points`, then select **Start**. ## Verify Connectivity Use the ROS 2 CLI independently of MATLAB to verify that DDS data is present: ```sh ros2 topic echo /cloud/all_points ``` If no data is visible, confirm the native ROS 2 interface configuration, firewall rules, DDS compatibility, and ROS domain ID. On multiScan200 and on picoScan100 from firmware V2.3.1, the sensor domain ID is configurable (`rosDomainId`); make sure MATLAB uses the same value. --- # Set Up a SICK Camera Plugin in Milestone XProtect > Install a SICK camera integration package, add the camera in Milestone XProtect, and align camera and LiDAR timing. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/milestones-camera/ # Milestone XProtect Camera Plugin Compatible with: LRS4000 multiScan100 picoScan100 Use Milestone XProtect to display camera video beside LiDAR events. Obtain the camera-specific SICK/Milestone package from the applicable download page: [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/#downloads), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/#downloads), or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/#downloads). Look under software or integration downloads. If no package is listed, contact SICK support. Confirm that the package supports your XProtect release. [Milestone MIP SDK documentation](https://doc.developer.milestonesys.com/mipsdk/) explains the underlying plug-in deployment model. --- # Model Context for SICK LiDAR Projects > Use a local clone of the SICK LiDAR Developer Guide and related repositories to give coding assistants more context about a project. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/model-context/ # Model Context Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 When developing an application for a SICK LiDAR sensor, you can clone the relevant documentation or code repository into your project workspace. A local copy gives your coding assistant access to the repository's examples, configuration files, API usage, and implementation details while you work. Clone the [SICK LiDAR Developer Guide](https://github.com/SICKAG/sick_lidar_developer_guide) repository alongside your application: ```sh git clone https://github.com/SICKAG/sick_lidar_developer_guide.git ``` Keep the clone up-to-date when you need the latest context: ```sh git -C sick_lidar_developer_guide pull ``` This repository-based approach provides source context for your development tools. It is **not an MCP server** and does not expose an MCP tool or service. --- # PLC Integration of SICK LiDAR Sensors via CoLa B over TCP > Connect SICK LiDAR sensors to Siemens, Beckhoff, Mitsubishi, or Rockwell PLCs using CoLa B over TCP port 2112: framing, polling, telegrams, and troubleshooting. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/plc-integration/ # PLC Integration Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Use the CoLa command protocol over a TCP/IP socket to receive measurement, field-evaluation, and I/O data from SICK LiDAR sensors on Siemens, Beckhoff, Mitsubishi, or Rockwell PLCs. SICK does not provide maintained PLC function blocks for the product families on this page; implement a small length-prefixed receive routine using the controller's native TCP socket API. ## Interface and Approach For PLC applications, use CoLa B on TCP port `2112`. Its length-prefixed telegrams are easier to process than CoLa A on port `2111`. Open one bidirectional TCP connection from the PLC to the sensor, keep it open, and poll the required values by sending an `sRN` request and reading the matching `sRA` response on that same connection.

**Interface and Approach:** interface, transport, and suitable use.

| Interface | Transport | Suitable use | | --- | --- | --- | | CoLa A / B | TCP 2111 / 2112 | PLC commands and telegram access | | Compact / MSGPACK | UDP | High-rate scan streams to a computer or edge device | | REST API | HTTP(S) 80 / 443 | Configuration, diagnostics, and firmware updates | Configure the sensor once through SOPASair: use a fixed IP address reachable from the PLC, configure scan profiles, field-evaluation groups, and I/O, then export a parameter backup. Do not repeatedly configure the sensor from cyclic PLC logic. Enable LMDscandata only when the PLC requires distance data. ## Polling and CoLa B Framing The PLC is the client and connects to `:2112`. Send a request, receive one complete telegram, parse it, and reconnect after an error or timeout. ```text connect(device_ip, 2112) loop: send(frame("sRN LMDscandata")) reply = receive_one_telegram() parse(reply) ``` Every CoLa B telegram has this layout:

**Polling and CoLa B Framing:** field, size, and value.

| Field | Size | Value | | --- | --- | --- | | Start | 4 bytes | `02 02 02 02` | | Length | 4 bytes | Big-endian payload length | | Payload | N bytes | Command type, name, and data | | Checksum | 1 byte | XOR of all payload bytes | TCP is a byte stream: a receive operation can return a partial telegram or several telegrams. Buffer incoming bytes; after at least eight bytes are available, validate the start sequence, read the big-endian length, then wait for exactly `8 + length + 1` bytes. Validate the XOR checksum, consume one telegram, and retain any remaining bytes for the next call. To validate this logic on a PC before porting it to the PLC, use this Python function on the received bytes: ```python def next_telegram(buffer: bytearray) -> bytes | None: header = b"\x02\x02\x02\x02" if len(buffer) < len(header): return None if buffer[:4] != header: start = buffer.find(header) if start < 0: del buffer[:-3] # preserve a possible partial header return None del buffer[:start] if len(buffer) < 8: return None length = int.from_bytes(buffer[4:8], "big") if len(buffer) < 8 + length + 1: return None # wait for more bytes payload, checksum = bytes(buffer[8:8 + length]), buffer[8 + length] del buffer[:8 + length + 1] # keep the remaining bytes for the next call xor = 0 for byte in payload: xor ^= byte return payload if xor == checksum else None ``` Example code: [MIT License](https://opensource.org/license/mit), © 2026 SICK AG. Provided as is, without warranty. Test it before you use it with a machine or in production. ## Common Telegrams

**Common Telegrams:** telegram, purpose, and PLC consideration.

| Telegram | Purpose | PLC consideration | | --- | --- | --- | | `SCdevicestate` | Device health | Poll slowly and invalidate dependent values when not ready. | | `LMDscandata` | Distance and optional RSSI data | Reduce it below the network MTU where possible. | | `perpendicularDistanceResult` | Minimum and maximum distance to a field boundary where the device supports perpendicular distance | Its value can remain unchanged after the field is clear; gate it with field state. | | `FieldEvaluationResult` | Free/occupied result for each evaluation group | Map each group index to the configured physical zone. | | `LIDinputstate` / `LIDoutputstate` | Digital I/O states | Use to mirror sensor I/O in the PLC process image. | Request each with `sRN ` and parse the `sRA ...` response. Confirm the exact payload layout, byte offsets, and data types against the Telegram Listing for the installed firmware. To keep `LMDscandata` manageable, use only the required echo, disable RSSI when not needed, restrict the scan angle, and select the coarsest acceptable angular resolution. A small telegram reduces PLC processing load and TCP segmentation. ## Controller Notes

**Controller Notes:** controller and TCP mechanism.

| Controller | TCP mechanism | | --- | --- | | Siemens S7-1500 / S7-1200 | Open User Communication: `TCON_IP_v4`, `TSEND_C`, and `TRCV_C`; use variable-length receives. | | Siemens S7-300 / S7-400 | CP module with `AG_SEND` / `AG_RECV` and FB54 TCP. | | Beckhoff TwinCAT 3 | Tc2_TcpIp: `FB_SocketConnect`, `FB_SocketSend`, and `FB_SocketReceive`. | | Mitsubishi GX Works2 / iQ | Ethernet socket services: `SP_SOCOPEN`, `SP_SOCSND`, `SP_SOCRCV`, and `SP_SOCCLOSE`. | | Rockwell / Allen-Bradley | Raw TCP socket object with MSG instructions for connect, write, read, and close. | The transport API differs, but the CoLa B framing and receive-buffer logic are identical for every PLC. ## Troubleshooting

**Troubleshooting:** symptom, cause, and action.

| Symptom | Cause | Action | | --- | --- | --- | | Connection refused on `2112` | Incorrect network settings or CoLa B disabled | Verify the sensor IP/subnet and CoLa B configuration. | | No response | Malformed request or wrong telegram name | Validate start bytes, length, XOR checksum, and case-sensitive command name. | | `sFA` error response | Unsupported or unavailable variable | Check the [CoLa error codes](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/#cola-error-codes), Telegram Listing, and firmware version. | | Receive never completes | Fixed-size receive or TCP fragmentation | Buffer data and use the length field to determine the complete frame. | | Misaligned data | Concatenated frames or unconsumed bytes | Consume exactly one frame and retain the buffer remainder. | | Frozen values | Repeated scan or stale perpendicular-distance result | Verify scan counter/timestamp and use `FieldEvaluationResult` to validate the distance. | --- # SICK LiDAR ROS 2 Integration: Native ROS 2 and sick_scan_xd > Get SICK LiDAR data into ROS 2 with native ROS 2 on selected families or the sick_scan_xd host driver, with setup, topics, limitations, and CPU notes. Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/ # ROS Integration Compatible with: LRS4000 multiScan100 multiScan200 picoScan100
![ROS 2](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/ros2-logo.png) There are two ways to get LiDAR data into ROS 2: the sensor publishes ROS 2 messages itself (native ROS 2), or a driver on the host receives sensor data and publishes the messages (`sick_scan_xd`). Both deliver standard ROS 2 messages to your nodes. The difference is which product families they cover and where decoding and publishing run.

**ROS Integration:** integration path and compatible devices.

| Integration path | Compatible with | | --- | --- | | Native ROS 2 | multiScan200, picoScan100 | | `sick_scan_xd` | LRS4000, multiScan100, picoScan100 |
The LRS4000 and multiScan100 do not support native ROS 2. Use `sick_scan_xd` for these families.
ROS 2 with sick_scan_xd
The sensor sends data to the sick_scan_xd driver on the host, which publishes to customer ROS nodes 1 to N over DDS. LiDAR sensor Streaming App ROS 2 sick_scan_xd host driver Customer ROS Node 1 Customer ROS Node 2 Customer ROS Node N
Native ROS 2
The native ROS 2 publisher on the sensor sends data over DDS directly to customer ROS nodes 1 to N, without a driver. Uses CycloneDDS as the ROS middleware. LiDAR sensor Streaming App ROS 2 Native ROS 2* Customer ROS Node 1 Customer ROS Node 2 Customer ROS Node N
Protocol: driver-supported sensor data Protocol: DDS (Data Distribution Service) via UDP/IP * Native ROS 2 uses CycloneDDS as its ROS middleware (RMW).

**ROS Integration:** option, what it is, advantages, trade-offs, and best fit.

| Option | What it is | Advantages | Trade-offs | Best fit | | --- | --- | --- | --- | --- | | [Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2) | The sensor firmware assembles the scan segments and publishes ROS 2 messages over DDS. | No driver on the host; lower host CPU load; hardware timestamps; any number of subscribers and other DDS clients can receive the data directly. | Cyclone DDS is the specified middleware; uses more network bandwidth than Compact; no IMU or diagnostics topics; configuration stays outside ROS 2; the picoScan150 needs a license. | ROS 2 systems where host CPU matters, for example navigation or SLAM on embedded computers. | | [sick_scan_xd](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#sick_scan_xd) | A ROS 2 driver on the host receives data through the driver-supported sensor protocol, assembles the scans, and publishes the messages. | Publishes `PointCloud2`, `LaserScan`, and IMU messages where supported; decoding is under host-side control; supports recording to rosbag files. | Decoding and publishing use host CPU; the driver must be installed and maintained on the host. | Applications that need IMU topics, LRS4000 or multiScan100 integration, or host-side control over decoding. | ## Native ROS 2 Compatible with: multiScan200 picoScan100 The product supports native ROS 2 communication via the DDS (Data Distribution Service) protocol. This enables efficient real-time transmission of measured data without additional drivers and with minimum delay time. The data is output directly in ROS 2-compatible formats. - Filter settings in the product have a direct effect on the published data. - Subscribed topics are published even if no measurement points are available. It is therefore recommended that you only subscribe to required topics. - If the static IP address is changed, a restart of the device is required to output the topics correctly. ### Quick Start 1. Verify the ROS 2 with middleware Cyclone DDS is installed. Install the Eclipse Cyclone DDS middleware using the [Cyclone DDS installation instructions](https://docs.ros.org/en/kilted/Installation/DDS-Implementations/Working-with-Eclipse-CycloneDDS.html). 2. Enable **Native ROS 2 (DDS)** in the device web interface, open **Application → Data output** and set **Measurement data output format** to **Native ROS 2 (DDS)**. 3. Create a Cyclone DDS configuration file and set `NetworkInterfaceAddress` to the IP address of the host interface connected to the sensor, here `192.168.0.100`. See the [Cyclone DDS configuration reference](https://cyclonedds.io/docs/cyclonedds/latest/config/index.html) for additional options. ```xml 192.168.0.100 ``` 4. Start `rviz2` and add one of the published topics. The picoScan150 requires firmware V2.2.1 or later and an activated native ROS 2 license (`PICOSCAN RosConnect`). picoScan150 PRO versions (part numbers 1134610 and 1142273) are delivered with this license pre-installed. If the license is missing, contact SICK. See [LiDAR License Activation](https://sickag.github.io/sick_lidar_developer_guide/shared-features/license-activation/) for the official activation instructions. The picoScan120 requires firmware V2.2.1 or later. The latest firmware and update instructions for both devices are available from the [SICK firmware download](https://www.sick.com/de/en/downloads/media/swp680096). ![picoScan150 native ROS 2 license](https://support.sick.com/api/data/v9.2/msdyn_knowledgearticleimages(e84df29d-3542-f111-88b4-00224880a9a4)/msdyn_blobfile/$value?w=1800px) *picoScan150 native ROS 2 license.* On Windows, DDS discovery requires the sensor adapter to use the Private network profile; see [Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/#connect-the-sensor). The ROS 2 domain ID on the host (`ROS_DOMAIN_ID`) must match the device. The default is `0`; it can be changed with `rosDomainId` (0-232) or in SOPASair (multiScan200; picoScan100 from firmware V2.3.1). DDS/RTPS discovery must be able to reach the sensor interface. Native ROS 2 publishes data only; configure the sensor through the REST API, CoLa, or the web interface. ### Visualize the Point Cloud Start `rviz2` with the configuration file from Quick Start step 3: === "Linux" Source ROS 2, select Cyclone DDS, set the configuration file, and start `rviz2`: ```bash . /opt/ros//setup.bash # for example kilted export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp export CYCLONEDDS_URI="file://$HOME/CycloneDDS/my-config.xml" rviz2 ``` In `rviz2`, add `/cloud/all_points` or a scan topic. Set **Fixed Frame** to `world`, or to the frame configured on the device. === "Windows" In a Windows command prompt, source ROS 2, select Cyclone DDS, set the configuration file, and start `rviz2`: ```bat call C:\dev\ros2_\local_setup.bat set RMW_IMPLEMENTATION=rmw_cyclonedds_cpp set CYCLONEDDS_URI=file://%USERPROFILE%/cyclonedds.xml rviz2 ``` In `rviz2`, add `/cloud/all_points` or a scan topic. Set **Fixed Frame** to `world`, or to the frame configured on the device. ### Limitations and Trade-Offs Native ROS 2 is a sensor-to-host data publisher, not a complete ROS 2 control interface: - **No ROS diagnostics topic:** Device health and diagnosis are not exposed as a diagnostics topic in the ROS 2 graph. Use the device web interface for diagnosis and troubleshooting. See the [SOPASair overview](https://sickag.github.io/sick_lidar_developer_guide/visualization/sopasair/). - **Configuration stays outside ROS 2:** The interface does not expose sensor parameters, services, or actions. Configure scan profiles, field of view, filters, and other device settings through the web interface, REST API, or CoLa; they cannot be set as ROS parameters or from a ROS 2 launch file. - **Use CycloneDDS:** Native ROS 2 is specified for CycloneDDS as the ROS middleware (RMW) on the host. Other RMW implementations and custom DDS environments are not validated. If you use one, test discovery and communication with your device firmware and ROS distribution. - **Account for network load:** Native ROS 2 uses more network bandwidth than Compact over UDP. The device publishes its available ROS topics concurrently, and topics can continue to be published when a scan contains no measurement points. Subscribe only to topics the application needs, monitor network utilization at the selected scan configuration, and consider Compact if bandwidth is constrained. - **Publisher changes follow firmware releases:** The DDS publisher runs in the sensor firmware, rather than a host-side driver. Publisher fixes and feature changes therefore depend on a firmware release. ### Published Topics The native publisher exposes these topics simultaneously. All messages carry the hardware PTP timestamp in `header.stamp`. The `rt` prefix is the DDS-level name: in ROS 2 tools, `rt/cloud/all_points` appears as `/cloud/all_points`, for example `/cloud/all_points`. The multiScan200 and picoScan100 publish the same PointCloud2 and LaserScan topics. The multiScan200 also publishes the `ambient_light` and `imu` topics, and a PointCloud2 topic per segment and echo. **PointCloud2 topics**

**Published Topics:** PointCloud2 topic, contents ¹⁾, output frequency, and description.

| PointCloud2 topic | Contents ¹⁾ | Output frequency | Description | | --- | --- | --- | --- | | `rt/cloud/all_points` | x,y,z,i,p | Scan rate | Valid scan points of all segments and all echoes | | `rt/cloud/all_points_echo0` | x,y,z,i,p | Scan rate | Valid scan points of echo 0 | | `rt/cloud/all_points_echo1` | x,y,z,i,p | Scan rate | Valid scan points of echo 1 (only available if multi-echo is configured) | | `rt/cloud/all_points_echo2` | x,y,z,i,p | Scan rate | Valid scan points of echo 2 (only available if multi-echo is configured) | | `rt/cloud/reflector_points` | x,y,z,i,p | Scan rate | Valid scan points that were recognized as reflectors | | `rt/cloud/segment[s]` | x,y,z,i,p | Segment frequency | Valid scan points of a selected segment s (only available for segments that are available after application of the angle range filter) | | `rt/cloud/segment[s]_echo[e]` | x,y,z,i,p | Segment frequency | multiScan200 only: valid scan points of echo e in segment s (only available for segments that are available after application of the angle range filter and depending on the configuration of the echo filter) | ¹⁾ intensity (i): RSSI with value range: 0.0 ... 1.0; properties (p): Bit mask 0b00000001 indicates whether this measurement point was recognized as a reflection. On the multiScan200, `sWN rosPointCloud2Content` selects the optional channels RSSI, properties, time offset, and ring (layer index); see the [multiScan200 CoLa Telegram Listing](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#set-optional-channels-of-pointcloud2-topics-swn-rospointcloud2content). **Additional topics (multiScan200)**

**Published Topics:** topic and content.

| Topic | Content | | --- | --- | | `ambient_light` | Passive ambient light image, synchronized with the point cloud | | `imu` | IMU data: acceleration, angular velocity, and orientation | **LaserScan / MultiEchoLaserScan topics**

**Published Topics:** LaserScan / MultiEchoLaserScan topic, data format, contents ¹⁾, output frequency, and description.

| LaserScan / MultiEchoLaserScan topic | Data format | Contents ¹⁾ | Output frequency | Description | | --- | --- | --- | --- | --- | | `rt/scan/all_points` | MultiEchoLaserScan | x,y,z,i | Scan rate | Valid scan points of all segments and all echoes | | `rt/scan/all_points_echo0` | LaserScan | x,y,z,i | Scan rate | Valid scan points of echo 0 | | `rt/scan/all_points_echo1` | LaserScan | x,y,z,i | Scan rate | Valid scan points of echo 1 (only available if multi-echo is configured) | | `rt/scan/all_points_echo2` | LaserScan | x,y,z,i | Scan rate | Valid scan points of echo 2 (only available if multi-echo is configured) | | `rt/scan/segment[s]` | MultiEchoLaserScan | x,y,z,i | Segment frequency | Only for available segment s (only available for segments that are available after application of the angle range filter) | | `rt/scan/segment[s]_echo[e]` | LaserScan | x,y,z,i | Segment frequency | Only for available segments and echo e (only available for segments that are available after application of the angle range filter and depending on the configuration of the echo filter) | ¹⁾ intensity (i): Value range 0.0-1.0 for natural targets, 1.05 for detected reflector ### Frame and Position Parameters Set the frames and the mounting position on the device; Native ROS 2 has no ROS parameters. Use the CoLa telegrams below, the REST endpoint of the same name, or the web interface.

**Frame and Position Parameters:** parameter, CoLa telegram, and effect.

| Parameter | CoLa telegram | Effect | | --- | --- | --- | | Frame ID | `sWN rosFrameId` | `header.frame_id` of the published messages | | Parent frame ID | `sWN rosParentFrameId` | Parent frame of the sensor transform, for example `world` | | Namespace | `sWN rosNamespace` | Prepended to all topic names; empty for no namespace | | Sensor position | `sWN SensorPosition` | Mounting position (x, y, z in mm) and orientation (yaw, pitch, roll in 1/10000°), published as a transform on `/tf` | | Domain ID | `sWN rosDomainId` | ROS 2 domain ID (0-232); must match `ROS_DOMAIN_ID` on the host |
For the telegram structures and examples, see the CoLa Telegram Listings of the [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-cola-telegrams/#measurement-output-telegram) and the [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-cola-telegrams/). After changing the static IP address, restart the device so that the topics are published correctly. ### DDS Capabilities Native ROS 2 uses Cyclone DDS and is tested with the `rmw_cyclonedds_cpp` ROS middleware (RMW) implementation. Other RMW implementations can cause incompatibilities, even when they also use DDS. Use Cyclone DDS for the tested setup; validate interoperability before using a different middleware. Because the device runs a DDS participant in its firmware, it joins the ROS 2 network as a first-class peer: - **Interoperability:** Compatible ROS 2 nodes, MathWorks ROS Toolbox, and custom DDS clients can subscribe directly, subject to middleware compatibility. - **Multiple subscribers:** The sensor publishes once per scan; adding subscribers does not add another device-side publishing step. - **Per-subscriber QoS:** Subscribers can negotiate policies independently, such as `BEST_EFFORT` for control and `RELIABLE` for recording. - **Automatic discovery:** RTPS discovery finds subscribers without a broker or static IP table. - **Hardware timestamps:** `header.stamp` is set at the hardware scan trigger. With PTP synchronization, it aligns with other sensors. ### Video Tutorials *How to use native ROS 2 (DDS) on Linux.* *How to use native ROS 2 (DDS) on Windows.* ## sick_scan_xd Compatible with: LRS4000 multiScan100 picoScan100 The `sick_scan_xd` driver runs as a ROS 1 or ROS 2 node on the host. It receives sensor data, assembles complete scans, and publishes ROS messages. Choose this approach when you need host-side decoding control, IMU data on ROS topics where supported, or integration with a device that has no native publisher. It also supports recording and playback with rosbag `.db3` files. To install it, follow [Building the driver: ROS 2 on Linux](https://github.com/SICKAG/sick_scan_xd/blob/develop/README.md#ros-2-on-linux) or [ROS 2 on Windows](https://github.com/SICKAG/sick_scan_xd/blob/develop/README.md#ros-2-on-windows-jazzy-kilted--lyrical) in the README. Then start the launch file for your device as described in [Running the driver](https://github.com/SICKAG/sick_scan_xd/blob/develop/README.md#running-the-driver). ## CPU Load Comparison Measurements across 11 picoScan150 profiles used 15-50 Hz scan rates, 0.05-1.0° angular resolutions, 100 scans per method, and IEEE 1588 PTP synchronization. Single-echo `sensor_msgs/LaserScan` data was used for a direct comparison.

**CPU Load Comparison:** parameter and value.

| Parameter | Value | | --- | --- | | Host | Raspberry Pi 4, ARM Cortex-A72, 4 cores, Ubuntu 22.04 | | Network | Direct Gigabit Ethernet | | Latency definition | `Δt = treceive_on_host − header.stamp` | Average system CPU load was **8.5%** for native ROS 2 and **21.5%** for `sick_scan_xd`, expressed as the percentage of one Raspberry Pi 4 CPU core. --- # Beginner Projects > Try LiDAR building security, bulk scanning, height measurement, 3D capture, ROS 2 localization, reversing aids, or a picoScan IMU-controlled game. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/ # Beginner Projects These examples outline how to turn a LiDAR use case into an application. Each starts with a goal, a sensor-to-application data path, and practical steps for prototyping and validation. Level 1 projects introduce guided sensor applications, Level 2 adds 3D evaluation, point-cloud tools, native ROS 2 SLAM, or an IMU-controlled game, and Level 3 combines SDK wrappers, asynchronous field status, runtime field selection, and image visualization.

**Beginner Projects:** level, example, compatible device family, and goal. Model names in parentheses identify the model used in the example.

| Level | Example | Compatible device family | Goal | | --- | --- | --- | --- | | 1 | [Building Security](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/building-security/) | LRS4000, picoScan family | Monitor an area (e.g. a room floor) very precisely. | | 1 | [Bulk Scan](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/bulk-scan/) | LRS4000, picoScan family | Measure the material height on a conveyor belt as a starting point for bulk-material profiles. | | 2 | [3D Height Measurement](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/height-measurement/) | multiScan100 family | Measure body height with a multiScan100 using perpendicular distance above a floor reference. | | 2 | [House in 3D](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/house-3d-capture/) | LRS4000, picoScan family (picoScan150) | Record picoScan 3D point clouds around a house and inspect the exported PCD files. | | 2 | [Reversing Assistant](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/reversing-assistant/) | picoScan family (picoScan150) | Detect the closest obstacle behind a vehicle and flash the warning LEDs faster as it gets closer. | | 2 | [Native ROS 2 SLAM](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/native-ros2-slam/) | picoScan family (picoScan150) | Build a map and localize a vehicle within it using native ROS 2 and SLAM Toolbox. | | 2 | [picoScan150 Jump & Run](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/imu-jump-and-run/) | picoScan family (picoScan150) | Use picoScan IMU data, a generated Kaitai Python parser, and a browser game to turn sensor movement into player movement. | | 2 | [Smart Shelf](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/smart-shelf/) | picoScan family (picoScan150) | Detect which shelf compartment a pen reaches into using picoScan perpendicular distance and WebSocket events in a browser. | | 3 | [ROS 2 Reversing Assistant with an Ambient-Light Image](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/ros2-reversing-assistant-camera/) | multiScan200 family (multiScan270) | Wrap multiScan270 SDK data for ROS 2 over Zenoh, display an ambient image, receive field events, and switch near/wide groups. | --- # Building Security Example with LiDAR > Explore a building-monitoring example with LiDAR field evaluation and a video demonstration of teach-in. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/building-security/ # Building Security Example Compatible with: LRS4000 picoScan100 Security access gates form a transition between secure and non-secure areas of an airport. An object-detection check can help identify items left in the gate area before access is granted. ![Security access gate with a red detection area and an inset showing the mounted LiDAR sensor](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/security-door-detection-area.png) *Example security-door installation. The red overlay illustrates the detection area; the inset shows the LiDAR sensor mounting position.* A compact 2D LiDAR sensor can monitor a configured detection zone and report objects that interrupt the scan or differ from a taught reference contour. This can support a security workflow concerned with prohibited items, such as weapons, but LiDAR object detection alone does not identify an object's type or determine whether it is prohibited. Validate detection coverage and performance for the installation and combine it with the required security checks. ## Suggested Data Path Configure the detection zone with [teach-in](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#teach-in): 1. In SOPASair, open the **Object Detection** application and select **Teach-in** in the field configuration. 2. Set the distances in front of and behind the object and the minimum teach-in time, then click **Start**. 3. Keep the gate area empty and stable, stop the teach-in, and save the field evaluation configuration. 4. Check the result: with the gate area empty, the field is free; place a test object in it and confirm that the field is infringed. ## Example Solution The following video demonstrates teach-in for a building-security example. *Teach-in demonstration for the building-security example.* --- # Bulk Scan with LiDAR: Material Height on a Conveyor > Measure the height of woodchips or other bulk material on a conveyor belt with on-device perpendicular distance measurement. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/bulk-scan/ # Bulk Scan Compatible with: LRS4000 picoScan100 This project measures the height of woodchips or other bulk material on a conveyor belt. Mounted above the belt, the sensor scans the material surface and reports its distance to the empty belt. It is a height measurement, not a calibrated volume measurement; a volume estimate needs your own processing. ![LiDAR mounted above a conveyor belt carrying woodchips, with the scan area highlighted in purple](https://sickag.github.io/sick_lidar_developer_guide/assets/shared-features/woodchip-volume-conveyor.png) *Example woodchip conveyor installation. The highlighted scan area covers the material profile across the belt.* Use [Perpendicular Distance Measurement](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) as a starting point for measuring material height: 1. In SOPASair, open **Application > Perpendicular distance measurement** and add an evaluation group. 2. Draw the zone across the belt and set the reference line to the empty belt surface. 3. Save the configuration and read the minimum and maximum distances from the result list or `GET /api/perpendicularDistanceResult`. 4. Check the result: with an empty belt, no distance is reported; with a test object of known height on the belt, the maximum distance matches that height. To estimate volume throughput, your application can calculate the cross-sectional area from the scan profile and multiply it by the belt speed. *Perpendicular-distance measurement demonstration for the woodchip example.* --- # 3D Height Measurement with LiDAR > Measure body height with a multiScan100 by evaluating the maximum perpendicular distance above a floor reference inside a 3D field. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/height-measurement/ # 3D Height Measurement Compatible with: multiScan100 A multiScan100 can measure the body height of a person in a defined area. The sensor scans the area in 3D, while perpendicular-distance evaluation measures the detected points relative to the floor. The maximum distance inside the evaluation field represents the person's height. ![People passing through a LiDAR height-measurement area](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/height-measurement-application.png) *A 3D LiDAR measures people as they pass through a defined detection area.* ## Suggested Data Path 1. Mount the multiScan100 so its field of view covers the measuring area and the top of the person's head remains within the scan range. 2. Create an evaluation group in **Application > Perpendicular distance measurement** and draw a field around the measuring area. 3. Use the floor as the reference plane. Keep walls, door frames, and other fixed objects outside the field so they cannot become the maximum value. 4. Configure the object-detection settings for stable measurements. 5. Read the minimum and maximum perpendicular distances from the evaluation result. Use the maximum distance as the measured body height. For configuration and result-access details, see [Perpendicular Distance Measurement](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/). ## Example Solution The following screenshot shows the evaluation in SOPASair. The 3D field covers the person above the floor, and the result list reports the minimum and maximum distances for the evaluation. ![SOPASair perpendicular-distance evaluation with a 3D measuring field around a person and a maximum distance of 1766 mm](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/height-measurement-perpendicular-distance.png) *Height-measurement example using perpendicular distance. The maximum distance of 1766 mm represents the measured body height.* Validate the setup with people of known height and verify that the reported maximum remains stable as a person moves through the measuring area. --- # House in 3D with picoScan > Use picoScan 3D scan recording to create PCD point clouds from selected viewpoints around a house, then inspect the captures in CloudCompare. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/house-3d-capture/ # House in 3D Compatible with: LRS4000 picoScan100 This example shows how to use a picoScan150 3D scan recording as a starting point for documenting a building. The sensor combines its 2D scan profiles with rotation information from its internal IMU or an external encoder and exports the result as a `.pcd` point-cloud file. ## Suggested Data Path The on-device scan merger records one point cloud at a time. Mount and orient the sensor so its scan plane sweeps the area of interest as it rotates. Configure an IMU or encoder rotation source and the sensor offset in **Application → 3D scan recording**; see [3D Scan Recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/). Clear the previous recording, capture the sweep, stop recording, and wait for saving to finish. Download `/cloud.pcd` before starting the next capture; the device keeps only the most recent point cloud. ## Example Solution The video demonstrates capturing the house as a 3D point cloud with picoScan150: *picoScan150 3D scan recording of the house in SOPASair.* Open each `.pcd` capture in [CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/) to inspect coverage, identify missing areas, and compare the separate viewpoints. --- # Reversing Assistant > Build a picoScan warning aid that finds the nearest obstacle and flashes the sensor LEDs faster as the obstacle gets closer. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/reversing-assistant/ # Reversing Assistant Compatible with: picoScan100 When reversing a vehicle, objects behind it can be difficult to see and the available stopping distance decreases quickly. A LiDAR sensor can monitor this area and provide an immediate warning: the closer the nearest obstacle is, the faster the sensor LEDs flash. ![Forklift with a LiDAR sensor monitoring the reversing area and detecting a pallet](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/reverse-camera-application.png) *The LiDAR monitors the reversing area. A shorter distance to the nearest obstacle produces a faster warning flash.* ## Before You Start - Connect the picoScan150 and the development computer to the same network. - Mount the sensor so its field of view covers the monitored reversing area. - Build and install [sick_perception_sdk](https://github.com/SICKAG/sick_perception_sdk) with the `picoScan100` examples. - Change `receiverAddress` if the computer does not use `192.168.0.100`. - Set the environment variable `SICK_PASSWORD` to the Service password. The default passwords are documented in the operating instructions of your device. Do not pass them on, and change them during commissioning. ## Minimal Example This example is based on the SDK's UDP streaming example. The point-cloud callback only calculates the flash period; the main loop performs the REST writes so scan reception is not blocked by an HTTP request. The warning uses the radial range supplied by the scanner in the Compact scan data. Every point in the received frame is considered. This example is adapted from the [sick_perception_sdk UDP streaming example](https://github.com/SICKAG/sick_perception_sdk/blob/main/examples/shared/data_streaming_udp.cpp) and is licensed under the MIT License. The upstream copyright and permission notice applies to copies or substantial portions of this example:
MIT license notice ```text Copyright (c) 2026 SICK AG Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ```
Expand to view the complete C++ example ```cpp #include #include #include #include #include #include #include #include #include #include #include #include #include // The signal handler changes this flag when the user presses Ctrl+C. std::atomic running {true}; int main() { // Change these addresses if the sensor or computer uses another subnet. constexpr char sensorAddress[] = "192.168.0.1"; sick::IpV4Address receiverAddress {"192.168.0.100"}; constexpr std::uint16_t scanPort = 2115; // Read the Service password from the environment instead of the source code. char const* password = std::getenv("SICK_PASSWORD"); if (password == nullptr) { return 1; } auto const httpClient = std::make_shared(sensorAddress, 80); sick::picoScan150::v2_3_3::Configurator configurator( httpClient, sick::UserLevel::Service, password); configurator.enableScanDataStreamingCompactUdp(receiverAddress, scanPort); // The scan callback writes these values while the main loop reads them. std::atomic flashPeriodMs {0}; std::atomic lastFrame { std::chrono::steady_clock::time_point {}}; // Request the scanner-provided radial range for every point. sick::point_cloud::PointCloudConfiguration pointCloudConfig; pointCloudConfig.fields.enableSpherical = true; sick::picoScan100::Driver driver; driver.scanDataReceiver() .setup(scanPort) .setOnNewFrameCallback( [&](sick::point_cloud::UnorganizedPointCloud const& cloud) { // Find the closest valid radial range in the complete scan frame. float nearest = std::numeric_limits::infinity(); for (std::size_t i = 0; i < cloud.numberOfPoints(); ++i) { nearest = std::min(nearest, cloud.getRange(i)); } // Store one full LED on/off period for the selected warning level. flashPeriodMs = nearest <= 0.5F ? 333 : nearest <= 2.0F ? 500 : nearest < std::numeric_limits::infinity() ? 2000 : 0; lastFrame = std::chrono::steady_clock::now(); }, pointCloudConfig); driver.run(); std::signal(SIGINT, [](int) { running = false; }); bool ledOn = false; while (running) { // Treat missing scan data as "no obstacle" after 500 ms. bool const scanIsCurrent = std::chrono::steady_clock::now() - lastFrame.load() <= std::chrono::milliseconds(500); int const period = scanIsCurrent ? flashPeriodMs.load() : 0; if (period == 0) { if (ledOn) { configurator.setLEDEnable(false); ledOn = false; } std::this_thread::sleep_for(std::chrono::milliseconds(50)); continue; } // Toggling after half a period produces the requested flash frequency. ledOn = !ledOn; configurator.setLEDEnable(ledOn); std::this_thread::sleep_for(std::chrono::milliseconds(period / 2)); } configurator.setLEDEnable(true); } ```
Add the source as another picoScan100 example target and link it with `sick_perception_sdk::drivers` and `sick_perception_sdk::sensor_configuration`, like the SDK's `data_streaming_udp` example. Stop it with **Ctrl+C**; the final call enables the LEDs again, which is their default state. ## Expected Behavior If no scan frame arrives for 500 ms, the scan is treated as stale and the LEDs are switched off.

**Expected Behavior:** nearest point, flash frequency, and result.

| Nearest point | Flash frequency | Result | | ---: | ---: | --- | | No obstacle or stale scan | Off | LEDs stay off | | 0 m to 0.5 m | 3 Hz | Fast warning | | More than 0.5 m to 2 m | 2 Hz | Medium warning | | More than 2 m | 0.5 Hz | Slow warning | Move a test object through the sensor's field of view and check that the reported behavior changes monotonically: every smaller distance must produce the same or a shorter period. Test only in a controlled area; this example is a warning aid, not a safety function. ## Optional Digital Output The same `ledOn` value can be sent to `POST /api/SetOutput` at the same cadence. First configure that output's source as **SOPAS command**, then call the SDK's `setOutput()` method with the output number and value. Do not use `OutputState` for this: that endpoint only reads the current output states. --- # Native ROS 2 SLAM with picoScan150 > Explore driverless-vehicle localization with LiDAR, with a beginner introduction to ROS 2 and saved-map localization using SLAM Toolbox. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/native-ros2-slam/ # Native ROS 2 SLAM Compatible with: picoScan100
![ROS 2](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/ros2-logo.png) Reliable localization is essential for autonomous driving, driverless-vehicle navigation, and a smooth material flow. High-resolution LiDAR measurements help map the surroundings. Localization software compares measurements with the map to estimate the vehicle's position and orientation, also called its **pose**. Accuracy depends on the environment, sensor setup, and software configuration.
![Warehouse scene showing a mobile robot, LiDAR scan lines, occupancy map, and localization status display](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/slam-localization-example.png) *Illustration of LiDAR mapping and localization with a mobile robot, occupancy map, and pose estimate.* ## What You'll Learn - How the native ROS 2 `LaserScan` topic of a picoScan150 feeds SLAM Toolbox. - The difference between mapping and localization, and why scan-matching odometry replaces wheel encoders here. - How to check the TF tree and the map-relative pose in RViz. ## ROS 2 for Beginners For the simplest setup, run this example on an Ubuntu system supported by your ROS 2 distribution. ROS 2, SLAM Toolbox, and RViz are readily available as packages on supported Ubuntu releases. Match the Ubuntu version to the ROS 2 distribution's installation requirements. ROS 2 is a software framework for connecting robot components. It is not a complete robot application: you combine programs called **nodes** to handle tasks such as receiving sensor data, estimating position, and driving motors. Nodes exchange messages over named **topics**. For this example, a LiDAR integration publishes scan measurements. Mapping or localization software consumes those measurements together with robot motion information. Coordinate transforms (**TF**) describe how the sensor, robot, and map are positioned relative to one another. ## Mapping, Localization, and Navigation

**Mapping, Localization, and Navigation:** task and what it does.

| Task | What it does | | --- | --- | | SLAM | Simultaneous localization and mapping: builds a map while estimating the robot's pose. | | Localization | Estimates the robot's pose within an existing map. | | Navigation | Uses the pose and a destination to plan and follow a route while considering obstacles. | This example only builds a map and estimates the vehicle's pose within it. Use **SLAM Toolbox** for both stages: first run mapping, then load the saved pose graph in localization mode. A navigation stack, route planner, and motion controller are not required for this example. ## Suggested Data Path The typical data path is: **LiDAR LaserScan → scan-matching odometry + TF → SLAM Toolbox → map-relative pose in RViz** This example uses LiDAR scan matching to estimate movement, without wheel encoders. Run a separate scan-matching odometry node alongside SLAM Toolbox; excluding encoders does not remove SLAM Toolbox's odometry requirement. Provide a suitable `LaserScan` topic to both nodes. ## Example Solution *LiDAR mapping and localization example with ROS 2 and SLAM Toolbox.* ## Check the Result - `ros2 topic list` shows the scan topic of the sensor. - In RViz, the map grows while you move the sensor slowly, and walls stay sharp instead of doubling. - In localization mode with the saved pose graph, the pose follows the sensor and the map does not shift. ## Project Prompt
Expand to view the project prompt ```text Help me with a beginner-friendly ROS 2 handheld mapping project, primarily on Linux, with Windows supported where feasible. Ask for my OS/version and ROS distribution first. A reference implementation was tested on Kilted, but do not require migration from a compatible working installation. Assume I am starting from scratch without an existing repository, configuration, dependency patches or helper scripts. Prefer compatible ROS binary packages on Linux; build from source only when necessary. Record dependency versions or pinned commits and preserve any required patches. Keep the architecture OS-neutral and clearly label platform-specific install, build and activation commands. Create any required launch files, configuration, tests and helper scripts, and explain where to put them. A SICK picoScan150 publishes native ROS 2 (DDS) LaserScan directly; do not add a host-side SICK driver. I move the scanner by hand without wheel odometry. Use RF2O scan odometry, SLAM Toolbox mapping and RViz to show live scans, a growing occupancy map and the moving sensor pose. Use https://sickag.github.io/sick_lidar_developer_guide/ for integration facts. Verify firmware and license, Cyclone DDS, network interface, discovery/domain, actual full single-echo LaserScan topic, QoS, frame, angular geometry and acquisition timestamps. Discover values rather than inventing settings or reusing another sensor's topic/frame blindly. Preserve native scan timestamps. For standalone handheld mapping, publish acquisition time on /handheld/clock, remap /clock and use_sim_time consistently in RF2O, SLAM and RViz. Isolate motion TF on /handheld/tf and /handheld/tf_static; exclude the sensor's identity world transform. Use the observed laser frame as the handheld base, without an invented mounting TF. RF2O owns handheld_odom -> laser; SLAM owns map -> handheld_odom. This dedicated clock does not synchronize hardware clocks: do not connect robot odometry, other sensors or Nav2 without verifying real clock alignment. Verify RF2O handles asymmetric angular coverage, a valid initial quaternion, invalid ranges, identical stationary scans, stable startup geometry and strictly increasing timestamps. Reject incompatible geometry and report failed matches instead of publishing stale poses. Verify SLAM accepts translation OR in-place rotation with correct angle units. On Windows, verify binary-mode pose-graph serialization and required native build fixes. Check the installed versions before applying patches; do not duplicate fixes already present upstream. Deliver working launch/configuration and reproducible setup, not only proposed commands. Automate SLAM lifecycle activation, prevent duplicate mapping sessions and shut down if a critical process exits. Explain environment activation, startup, Ctrl+C shutdown, fresh-map restart, graph save and reload. Preserve both .posegraph and .data; distinguish saved-pose-graph SLAM Toolbox localization from occupancy-grid AMCL. Do not assume archive compatibility across versions or platforms. ```
--- # picoScan150 Jump & Run: IMU-Controlled Browser Game > Turn a picoScan into a game controller: decode the IMU stream with a Kaitai Python parser and steer a browser jump-and-run game by moving the sensor. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/imu-jump-and-run/ # picoScan150 Jump & Run Compatible with: picoScan100 Build **picoScan150 Jump & Run** and use the built-in IMU of a picoScan as a game controller. Move the sensor left or right and the player runs with it; a quick upward hop makes it jump. Points grow with time, and the game gets faster every 15 seconds. No scan data is used. *picoScan150 Jump & Run: moving the sensor steers the player.* ## What You'll Learn - How to enable the IMU stream over REST and receive it as Compact type 2 over UDP. - How to check the CRC32 and decode the telegrams with a generated Kaitai parser. - How to turn acceleration into robust movement events. ## Before You Start - A picoScan with IMU streaming, for example picoScan150, on the same network as your computer ([Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/)). - Python, a browser, the [Kaitai Struct compiler and runtime](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/#generate-from-the-command-line), and [sick_scan_rest_client](https://github.com/SICKAG/sick_scan_rest_client). - Hold the sensor firmly with slack in the cables. Short moves of 10 to 20 cm are enough. - Set the environment variable `SICK_PASSWORD` to the Service password. The default passwords are documented in the operating instructions of your device. Do not pass them on, and change them during commissioning. ## Data Path **picoScan IMU → UDP → CRC32 check → Kaitai Python parser → motion controller → local web server → browser game** Python receives the UDP datagrams and serves the Canvas game on `127.0.0.1`. Generate the parser from the official [Compact frame](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/compact_frame.ksy) and [type-2 IMU](https://github.com/SICKAG/KaitaiStructDescriptions/blob/public/formats/type_2_imu.ksy) definitions. The parser does not verify the checksum; check the CRC32 first ([Reception and Validation](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/#reception-and-validation)). ## Configure IMU Output The game sets up the stream through the [REST interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) at start and disables it on exit: ```python import os from sick_scan_rest_client.client import RESTClient client = RESTClient("192.168.0.1") # sensor IP address client.setUserLevel("Service", os.environ["SICK_PASSWORD"]) client.writeVariable("ImuDataEthSettings", {"Protocol": 1, "IPAddress": [192, 168, 0, 100], "Port": 7503}) client.writeVariable("ImuDataEnable", True) ``` *Send the IMU stream by UDP (Protocol 1) to the computer at 192.168.0.100, port 7503. The change is RAM-only.* Keep both IP addresses and the port configurable. If the sensor streams but nothing arrives, the computer's firewall is the usual cause; allow the port or pick one that is permitted. ## How Movement Works The game uses gravity-corrected acceleration, not tilt. To calibrate, hold the sensor still, then push it right once.
↑ Quick hop to jump ← Move left SICK picoScan sensor *Move the sensor sideways to steer; lift it for a quick hop to jump.* Move right →

Game controls.

| Control | Response | | ------------------------- | ------------------------------------------- | | Move sensor left or right | Player runs left or right. | | Quick upward hop | One jump. | | Start, Pause, Stop | Run, freeze, or end the game. | | Calibrate | Hold still, then push right once. | | Settings | Sensor IP, computer IP, port, sensitivity. | | Arrow keys and Space | Play without a sensor. | Jump over blocks, dodge falling rocks from level 2, and collect coins. You score 10 points per second and 50 per coin. The game pauses if IMU data stops for 500 ms. ## Check the Result - Without a sensor, play with the keyboard; the high score survives a restart. - With the sensor, the status shows about 100 valid packets per second. - Holding still or tilting slowly does not move the player; a short move right does, then stops. - A quick hop gives exactly one jump; a sideways push gives none. - Quitting the program switches the IMU stream off. ## Project Prompt Paste this prompt into your coding assistant in a new workspace. It asks for the receiver, the game, tests, and a Windows executable.
Expand to view the complete project prompt ```text Build a beginner-friendly level-two project called "picoScan150 Jump & Run": a SICK picoScan150 IMU is the game controller for a basic browser jump-and-run game. The player moves left and right when I move the sensor left and right (use the measured acceleration, not tilt), and jumps when I lift the sensor with a quick upward hop. Deliver working files, not a plan. Work in a new folder outside the developer guide. Use Python 3.12, the Kaitai Struct Python runtime, requests, sick_scan_rest_client (https://github.com/SICKAG/sick_scan_rest_client) and plain HTML, CSS and JavaScript with Canvas. Use only the Python standard library for the web server. No ROS, SICK SDK, scan data, point clouds, frontend framework or external game assets. Keep the code easy to follow. Draw the player as a small picoScan: grey housing with a blue SICK badge, black optics dome with a moving red scan point, short legs, and a faint scan fan in the running direction. 1. Configuration Read config.json next to the program (create it with defaults on first start) and allow command-line overrides: sensor IP (default 192.168.0.1), PC IP on the sensor network (default 192.168.0.100), UDP port (default 7503), local HTTP port (default 8765), --no-configure and --no-browser. Validate IPv4 addresses and ports. Offer the same settings in a Settings dialog in the game, list the PC's local IPv4 addresses as suggestions, save changes back to config.json and reconnect without restarting the program. 2. Sensor setup with REST At start, in a background thread, use sick_scan_rest_client: RESTClient(ip), setUserLevel("Service", password from config), then writeVariable "ImuDataEthSettings" = {"Protocol": 1, "IPAddress": [PC IP octets], "Port": udp port} and "ImuDataEnable" = true. Check reachability with a short TCP connect to port 80 first, because the client sets no timeouts. Bypass any system HTTP proxy for the sensor IP. writeVariable returns (ok, data); check ok. Both variables need the Service level. Use UDP: TCP output (Protocol 2) was refused in tests, and polling the IMU over REST only updates at about 4 Hz, which is too slow for a game. These are RAM-only changes; do not call WriteEeprom. Show the result in the UI. On exit set ImuDataEnable = false. On Windows, atexit does not run when the console window is closed, so also register a console control handler (SetConsoleCtrlHandler) for close and Ctrl+Break. Keep scan settings untouched. 3. Receive and decode with the real Kaitai parser Generate Python from SICKAG/KaitaiStructDescriptions (public branch), formats/compact_frame.ksy with all imported formats, using kaitai-struct-compiler -t python --outdir formats/*.ksy. Keep the generated modules unmodified and record the command. They import each other as top-level modules, so add their folder to sys.path, and use the kaitaistruct runtime 0.11 or newer. Do not replace Kaitai with a hand-written struct parser. Bind a UDP socket to the PC IP and port, accept datagrams only from the sensor IP, check the start bytes 02 02 02 02, verify CRC32 (zlib.crc32 over all bytes except the trailing 4-byte little-endian checksum), then parse with CompactFrame and accept only telegram_type == 2. Count good and rejected frames, compute the packet rate (about 100 Hz on picoScan150) and keep the receiver alive on bad packets. Report bind errors clearly (for example, the PC IP is not on this computer). Record a few hundred real frames to a file for the tests. 4. Turn acceleration into controls Rotate the acceleration into the world frame with the orientation quaternion (w, x, y, z) and subtract a gravity/bias vector, so tilting the sensor does not look like sideways motion. On picoScan150 the quaternion is gravity-referenced: R(q) * acc is about (0, 0, 9.8) at rest. Without the rotation, a 20 degree tilt leaks about 3.4 m/s^2 into the sideways axis and the velocity drifts. Yaw has no magnetometer reference and can drift slowly, so offer recalibration. Estimate that vector automatically from the first 1.5 s, and track it slowly while the sensor is quiet. Calibrate button: 1.5 s still (reject if the per-axis standard deviation is above 0.35 m/s^2), then "move the sensor quickly to the RIGHT once": the horizontal direction of the strongest push sample (above 2 m/s^2) becomes the right axis. Without calibration, use the sensor y axis projected into the horizontal plane. Add an invert option. Sideways input: dead zone 0.35 m/s^2, then integrate into a velocity with a leak (time constant 0.8 s while moving, 0.12 s after 0.15 s of quiet), so it returns to zero when the sensor stops. The leak recovers only about half of the real movement, so scale the velocity in the game (about 2600 px per m/s at sensitivity 1). Do not double-integrate to an absolute position; it drifts within seconds. Jump: vertical linear acceleration above 3.5 m/s^2, re-arm below 1.0 m/s^2, cooldown 0.6 s; count jumps with a sequence number so the browser consumes each jump once. Use sensor timestamps for dt. 5. Game Serve the game on 127.0.0.1 only. Push velocity, accelerations, jump counter, calibration state, packet statistics and sensor status to the browser with Server-Sent Events at about 50 Hz. Accept POST requests only with Content-Type application/json. Give each calibration request an id and let the dialog react only to status messages with that id, so a stale "ready" message does not close it early. If the HTTP port is busy, try the next ones and open the browser on the port actually used. Canvas 960x540, scaled to the window without horizontal scrolling. The world scrolls left; the player moves with sensor velocity times a sensitivity setting, clamped to the screen; arrow keys and Space also work. Ground blocks to jump over, from level 2 falling rocks with a shadow warning to dodge sideways, coins for +50. Score 10 points per second of active play, level up every 15 s with faster scrolling and more obstacles, capped so jumps stay possible. Collision ends the run. Buttons: Start, Pause/Resume, Stop, Calibrate, Settings. Show score, level, high score (saved in highscore.json next to the program), sensor status with packet rate, a sideways acceleration and velocity meter, and a jump light. If data is older than 500 ms while playing in sensor mode, pause and require Resume. If no packets arrive 3 s after a successful configuration, show a hint to check the PC IP and the firewall, or choose another UDP port. Corporate Windows firewalls often block inbound UDP and ignore local rules, or allow it only while the Ethernet network is classified as Private; then use a port the policy allows (for example 30719 in our tests). 6. Tests and delivery Unit-test the receiver with recorded real frames (good CRC, corrupted byte, wrong start bytes) and the controller with synthetic samples: still sensor, noise below the dead zone, push right/left, calibration learning a different axis, invert, a tilted sensor that must not drift, a push while tilted, an upward hop giving one jump, a sideways push giving no jump, and a shaky calibration being rejected. Provide a PowerShell build script that runs the tests and builds one console .exe with PyInstaller (--onefile, add the static folder as data, pass the Kaitai folder with --paths and the generated modules as hidden imports, name it picoScan150JumpAndRun). Include a README with run, settings, calibration and firewall notes. Test with the real sensor and state clearly what was verified with hardware. ```
--- # Smart Shelf with picoScan > Detect which shelf compartment a hand reaches into. Use on-sensor perpendicular distance, WebSocket events and a browser shelf with pick-to-light checks. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/smart-shelf/ # Smart Shelf Compatible with: picoScan100 Smart shelves record which compartment goods are taken from or put into. A 2D LiDAR scans a light curtain in front of the rack. The sensor evaluates the data itself and reports where the curtain is crossed. Software turns this position into a compartment and checks if the pick was correct. ![Shelf with a LiDAR light curtain in front of the compartments](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/smart-shelf-application.png) *Smart shelf: the scan plane in front of the rack shows where a hand reaches in.* In this project, a picoScan stands in front of a desktop monitor. The browser draws a shelf on the screen. Touch a compartment with a pen and it lights up. ## What You'll Learn - How on-device perpendicular distance turns the scan plane into a light curtain. - How a browser receives sensor events directly over WebSocket. - How a three-point teach-in maps sensor coordinates to screen positions. ## Before You Start - A picoScan, for example picoScan150, on the same network as your computer ([Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/)). - A browser. No server, Python or SICK SDK is needed. - Place the picoScan on the desk at the lower-left edge of the monitor so the scan plane runs just in front of the screen. ## Solution Path **Perpendicular distance on the sensor → WebSocket event → pen position → compartment → dwell time → pick check** 1. Set up [Perpendicular Distance Measurement](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/) with a field that covers the screen. Use a small minimum object size, for example 10 mm, so a pen is detected. 2. The browser subscribes to `perpendicularDistanceResult` on `ws://192.168.0.1/apievents` ([WebSocket Events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/)). 3. The middle of the minimum and maximum distance positions is the pen position in millimeters. 4. A three-point teach-in maps sensor millimeters to screen pixels. 5. The pen must stay in one compartment for 150 ms to count as a pick. ![Sketch of the picoScan on the desk at the lower-left edge of the monitor, scanning just in front of the screen](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/smart-shelf-setup.svg) *Setup: the picoScan stands at the lower-left screen edge and scans just in front of the screen. The laser beam measures in polar coordinates; the sensor reports the perpendicular distance d to a horizontal reference line.* ![SOPASair perpendicular distance field in front of the monitor](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/smart-shelf-perpendicular-distance.png) *Perpendicular distance field in SOPASair. The field covers the screen in front of the sensor.* The browser connects to the sensor directly. It registers once and then gets an event each time the result changes: ```json {"type": "register", "event": "perpendicularDistanceResult", "clientId": 1} ``` *Register message for the perpendicular distance result.* Each event carries one entry per evaluation. Distances and positions are in millimeters: ```json { "type": "event", "event": "perpendicularDistanceResult", "clientId": 1, "status": 0, "data": { "perpendicularDistanceResult": { "timestamp": 4773260000, "evaluations": [ { "evaluationId": 1, "minimumDistance": 176, "maximumDistance": 184, "minimumDistancePosition": {"x": 318, "y": -176, "z": 0}, "maximumDistancePosition": {"x": 322, "y": -184, "z": 0} } ] } } } ``` *Example event with a pen in the field. The pen position is the middle of both positions: x 320 mm, y −180 mm.* - `minimumDistance` and `maximumDistance` are the smallest and largest perpendicular distances to the reference line inside the field. - `minimumDistancePosition` and `maximumDistancePosition` are the scan points with these distances, in sensor coordinates. - The register reply has the same `data` and already holds the current result. An empty field reports all distances and positions as zero. The app treats this as "no object". ![Browser shelf with pick-to-light target and live pen position](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/smart-shelf-browser.png) *Smart shelf in the browser: the blue compartment is the pick target, the yellow dot is the pen.* ## Check the Result - Without a sensor, a mouse drag over a compartment lights it up. - With the sensor, the status shows "Connected" and the pen position updates when you touch the screen. - After the teach-in, the yellow dot sits under the pen tip. - A quick pass through a compartment does not count; holding the pen in one does. - In pick-to-light mode, the target flashes green and other compartments flash red. ## Project Prompt Paste this prompt into your coding assistant in a new workspace. It asks for the browser app, tests and a README.
Expand to view the complete project prompt ```text Build a beginner-friendly level-two project called "picoScan Smart Shelf". A SICK picoScan100 stands at the lower edge of my desktop monitor. Its perpendicular distance evaluation is already configured on the sensor and covers the screen. The browser draws a shelf on the screen. When I touch a compartment with a pen, the compartment lights up. Deliver working files, not a plan. Work in a new folder outside the developer guide. Use plain HTML, CSS and JavaScript with Canvas. No build step, framework, server, Python or SICK SDK. Opening index.html must be enough. Keep the code easy to follow. Sensor data: - Connect the browser directly to ws:///apievents. Default IP 192.168.0.1. WebSockets need no CORS, so this works from file://. - Send {"type":"register","event":"perpendicularDistanceResult", "clientId":1}. The register reply already contains the current result; handle it like an event. Reconnect after 2 s when the socket closes. - Events only arrive when the result changes. Run dwell timing on a timer or animation frame, not only on incoming messages. - Read data.perpendicularDistanceResult.evaluations and pick the entry with the configured evaluationId (default 1). Use the middle of minimumDistancePosition and maximumDistancePosition (x, y in mm) as the pen position. If both positions are 0,0, the field is empty. - Do not call the REST API from the browser. It sends no CORS headers. Shelf: - Draw a shelf with uprights, boards and labeled bins (A1, A2 ... with row A at the top). Default 3 rows x 4 columns, filling the canvas. - Default mapping: the field rectangle x -100..600 mm, y -400..0 mm fills the canvas; screen up is negative y. - Add a teach-in: show three crosshair targets near the top-left, top-right and bottom-left corners. I hold the pen on each target. Accept a point when it stays within 15 mm for 700 ms and average the samples. I must lift the pen before the next target. Esc cancels. Solve an affine transform from the three points so any rotation or mirroring works. After teach-in, ignore sensor input until the pen is lifted. - A pick is one visit to a compartment that lasts at least the dwell time (default 150 ms). A quick pass through a compartment is not a pick. - Show the live pen as a yellow dot and outline its compartment. Count picks per compartment. - Toolbar: connection status, pen position and compartment, score, and buttons for start picking, teach corners, settings and full screen. - Settings dialog: sensor IP, evaluation ID, rows, columns, dwell time and the field rectangle. Store settings and the teach-in in localStorage. Warn if the window size changed since the teach-in. Put parsing, the affine transform, the compartment lookup and the pick detector in one pure module and test it with node:test. Include a README with setup, teach-in and test commands. If you add a Python test client, disable WebSocket keepalive pings; the sensor does not answer them. Test with the real sensor and state clearly what was verified with hardware. ```
--- # ROS 2 Reversing Assistant with an Ambient-Light Image > Level 3 multiScan270 project: publish SDK point clouds and ambient-light images over ROS 2 with Zenoh, receive field events, and select monitoring groups. Source: https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/ros2-reversing-assistant-camera/ # ROS 2 Reversing Assistant with an Ambient-Light Image Compatible with: multiScan200
![ROS 2](https://sickag.github.io/sick_lidar_developer_guide/assets/integration-notes/ros2-logo.png) This Level 3 project combines a multiScan270, an SDK-based ROS 2 wrapper, asynchronous field status, and an ambient-light view in RViz or another ROS-connected display.
## What You'll Learn - How to wrap sick_perception_sdk data as ROS 2 topics over Zenoh. - How to combine WebSocket field events with REST field-group selection. - How to show the ambient-light image next to the point cloud in RViz. ## Application Background A reversing assistant should show the area behind a vehicle and indicate whether the selected monitoring field is occupied. The operator switches between a close-range field for confined spaces and a wider monitoring field. The display must show the **confirmed** group, not just the requested mode. ![Forklift reversing toward stacked material with an illustrative monitoring area and driver display](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/multiscan270-reversing-camera-application.png) *Application illustration: an obstacle warning and a view of the reversing area help the driver assess the situation.* The multiScan270 provides a grayscale ambient-light image, not an RGB camera stream. Publish it as a ROS image so a display can show it alongside the point cloud and field status. ![Example grayscale multiScan ambient-light image showing railway tracks, trees, hills and overhead line poles](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/multiscan270-ambient-light-example.png) *Ambient-light image example supplied for this project. The same type of image can be streamed through a ROS Image topic to RViz or a vehicle display; this picture is illustrative, not a capture from the current live session.* This prototype is a warning aid, not a safety function. Do not connect it to braking, steering, or motion authorization. Missing data, inactive fields, and disconnected communication must appear unavailable, never as a clear reversing area. ## Before You Start - Use a supported ROS 2 installation with compatible `rmw_zenoh_cpp`, RViz, colcon, and C++17 build tools. The architecture does not require a particular ROS distribution; match compiler, Python, and runtime libraries to your installation. - Use SDK 2.0.0 or a compatible newer release with the multiScan200 driver. Keep SDK build and dependency setup separate from the ROS workspace. - Configure the two existing fields in **different TELEGRAM-controlled groups**. Follow [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#activate-and-monitor-a-group) rather than recreating the configuration procedure here. Record evaluation IDs, group IDs, and result-list positions separately; confirm which volume is near/wide. - Enable ambient data in Compact type 6 without overwriting other output options. Check `compactTelegramType6Content` in the [multiScan200 REST reference](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/). - Use the [WebSocket Events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/) registration pattern for `FieldEvaluationResult`; verify support on the target device. Offer compression, but do not require it when the server does not negotiate it. ![multiScan270 configuration view showing a point cloud and two monitoring volumes](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/multiscan270-reversing-fields.png){ width="50%" } *Configuration example: retain the existing field geometry and assign each monitoring volume to its own selectable group.* ![Field-group activation settings showing the designation Close Range, activation Telegram, and Initially active enabled](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/multiscan270-field-group-activation.png){ width="50%" } *Field-group example: name the group Close Range and select Telegram activation so the application can control it. Initially active defines its startup state; the screenshot shows it enabled. Configure the wide-range field in a separate group and verify both groups' startup states before selecting a mode.* ## Suggested Data Path Unlike [native ROS 2 integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2), this approach receives Compact data through the host SDK and publishes ROS messages itself. Zenoh transports those messages; it does not replace the device's TCP, WebSocket, or REST interfaces. ```mermaid flowchart TD sensor["multiScan270"] sdk["SDK scan/image node"] events["Field status/control node"] ros["ROS 2 over Zenoh"] display["RViz or vehicle display"] sensor -->|"Compact TCP"| sdk sensor -->|"WebSocket events"| events events -->|"REST group selection"| sensor sensor -->|"REST contour read"| events sdk -->|"Point cloud + ambient image"| ros events -->|"Field status + colored contour markers"| ros ros --> display ``` *Reversing-assistant data path: the SDK publishes point clouds and ambient-light images, while a separate node handles field events and REST control. ROS 2 over Zenoh carries the data to RViz or a vehicle display.* The wrapper publishes `points` (`PointCloud2`), `ambient_light` (`Image`), `field_states` (both evaluations with validity/activity), `field_markers` (`MarkerArray` volumes colored by live state), and `diagnostics` under `/sick_multiscan200_node`. A `select_field_group` service selects `near` or `wide`, verifies REST success and group readback, then waits for a fresh event snapshot before declaring field results current. ## Check the Result - RViz shows the point cloud and the ambient-light image. - The field volumes are green while free and turn red when an object enters. - Calling `select_field_group` switches between `near` and `wide`, and the group readback matches the selection. ## Example Solution ![RViz point cloud with the actual near field outlined in green and labeled FREE, and the farther field outlined in red and labeled INFRINGED](https://sickag.github.io/sick_lidar_developer_guide/assets/beginner-projects/multiscan270-rviz-field-states.png) *RViz example: field volumes read through REST are overlaid on the SDK point cloud. Live field events color evaluation 1 green (FREE) and evaluation 2 red (INFRINGED); colors change with the reported state.* Use the following **single prompt** to build the wrapper in your own workspace. Its phases also separate the reusable scan/image wrapper from field control.
Expand the complete project prompt ```markdown # Build an SDK-Based ROS 2 Reversing Assistant Create an OS-neutral multiScan270 warning prototype. Use sick_perception_sdk 2.0.0 or a compatible newer release, not the sensor's native ROS publisher. Use the installed ROS 2 distribution with matching rmw_zenoh_cpp and RViz; do not require migration to a named distribution. Inspect the actual SDK headers and device OpenAPI instead of guessing APIs or firmware capabilities. ## Phase 1: Workspace and Interfaces Create a C++17 ament_cmake package sick_multiscan200_node for SDK reception and custom ROS interfaces. Use a separate Python rclpy package sick_multiscan200_events with an asyncio WebSocket/REST client so network control never blocks scan callbacks. Deliver launch, YAML and RViz files. Keep the SDK and ROS sources unchanged. Parameters: sensor_address, scan_port (default 2115), frame_id (lidar), mirror_image, publish_identity_tf (false), mapping_verified (false), and separate near/wide evaluation IDs, group IDs and zero-based result indexes. Validate all values. Require verified mapping before trusting field status or enabling switching; do not infer group IDs from evaluation IDs. Publish under /sick_multiscan200_node: - points: sensor_msgs/PointCloud2 - ambient_light: sensor_msgs/Image - field_states: custom FieldStateArray - field_markers: visualization_msgs/MarkerArray - diagnostics: diagnostic_msgs/DiagnosticArray - select_field_group: custom service, string mode -> success/message/group ID Each FieldState includes evaluation_id, group_id, raw_state, valid, active, and reason. Use reliable KeepLast(5) for scan/image and reliable transient-local KeepLast(1) for status. Report scan/image/event health separately. ## Phase 2: SDK Point Cloud Use sick::multiScan200::Driver and scanDataReceiver().setup(scan_port). Attach an explicitly typed UnorganizedPointCloud callback plus a raw MultiScan200Data callback; the SDK multiplexes them. Enable Cartesian coordinates, intensity, time offsets, ring, layer and echo indexes. Map SDK fields/offsets/types to PointCloud2, preserve meter scaling and sensor acquisition time, and validate sizes, byte counts and endian order. ROS PointField has no Int64/Uint64: reject them or numerically repack; never relabel integer bytes as FLOAT64. Handle timestamp overflow explicitly. ## Phase 3: Ambient Image and RViz Read type-6 ambientLightData and its actual metadata dimensions. Convert column-major samples to row-major mono16, with step=width*2 and explicit little-endian bytes. Mirror horizontally only when mirror_image is enabled. Preserve sensor time and raw pixel values. Reject malformed/partial frames; skip missing image data with a diagnostic, never synthesize an image. Configure RViz PointCloud2 and Image displays, reliable QoS and fixed frame lidar. Normalize only the displayed image. Do not use Camera without CameraInfo or invent calibration. Leave map-to-sensor identity TF disabled; moving vehicles require real mounting/localization transforms and clock sync. ## Phase 4: Field Events and Group Selection Register FieldEvaluationResult at ws:///apievents using the documented event envelope. Handle both initial registration data and subsequent events. Offer permessage-deflate, accept an uncompressed session, and explicitly report unsupported registration or malformed data. Preserve raw device states. Only a current FREE result for a confirmed active group is clear; inactive, unknown, disconnected or pending is not. Keep transition states as warnings. Reconnect with bounded backoff, resubscribe and invalidate old results until a fresh snapshot arrives. A quiet healthy subscription is not automatically stale. The near/wide service touches only the two configured groups. Serialize requests, mark status pending, check HTTP and device response headers and every activation result, then verify target active/other inactive by readback. Do not assume switching is atomic. Discard old in-flight results and obtain a fresh subscription snapshot after switching. Monitor external group changes even while field events continue arriving. Read each evaluation's contour and configuration through the REST API, using the documented authentication without storing credentials in the workspace. Convert polygon coordinates and lower/upper Z limits from millimeters to meters in the sensor frame. Publish the actual field volumes as RViz markers, with green for FREE, red for INFRINGED, amber for transition states, gray for inactive and a distinct unknown indication on invalid or disconnected data. Show evaluation IDs and state labels. Never invent geometry when access is denied; report the error and request authentication. ## Phase 5: Build and Run Provide Windows and Linux build/environment instructions, a combined launch file, YAML configuration and RViz layout. Match SDK/ROS compiler runtimes (including /MD on Windows) and stop/join workers cleanly on shutdown. Start a Zenoh router and use the same middleware/domain in all terminals. Do not create/delete fields, write EEPROM or change network settings. Keep verification scripts, captures and test reports local, outside the guide. Explain clock synchronization, field-mapping and scene-orientation checks. ```
## Run and Display After building the generated packages, activate ROS and your workspace in every terminal. Select the same middleware and domain for all processes: === "Windows PowerShell" ```powershell $env:RMW_IMPLEMENTATION = "rmw_zenoh_cpp" $env:ROS_DOMAIN_ID = "187" ros2 run rmw_zenoh_cpp rmw_zenohd ``` === "Linux" ```bash export RMW_IMPLEMENTATION="rmw_zenoh_cpp" export ROS_DOMAIN_ID="187" ros2 run rmw_zenoh_cpp rmw_zenohd ``` Use an available router endpoint and a domain appropriate for your system. In another activated terminal, launch with your edited YAML path; the launch file must load it for both nodes. In a third, open the generated RViz layout. These relative paths assume the generated workspace is the working directory: ```bash ros2 launch sick_multiscan200_node multiscan200.launch.py \ config:="$PWD/src/sick_multiscan200_node/config/reversing_assistant.yaml" rviz2 -d src/sick_multiscan200_node/rviz/reversing_assistant.rviz ``` On PowerShell, use native paths and its continuation syntax instead: ```powershell ros2 launch sick_multiscan200_node multiscan200.launch.py ` "config:=$PWD\src\sick_multiscan200_node\config\reversing_assistant.yaml" rviz2 -d .\src\sick_multiscan200_node\rviz\reversing_assistant.rviz ``` The **Image** display subscribes to `/sick_multiscan200_node/ambient_light`. A custom vehicle display can subscribe to that same topic. Keep **Fixed Frame** at `lidar` for the stationary example; the ambient view is not a calibrated overlay on the point cloud. Inspect status and request a group using the generated interfaces: ```bash ros2 topic echo --once /sick_multiscan200_node/field_states ros2 service call /sick_multiscan200_node/select_field_group \ sick_multiscan200_node/srv/SelectFieldGroup "{mode: near}" ``` ```powershell ros2 service call /sick_multiscan200_node/select_field_group ` sick_multiscan200_node/srv/SelectFieldGroup "{mode: wide}" ``` Confirm the returned group and current field status. Before vehicle use, check actual near/wide geometry, sensor clock synchronization and image orientation with an asymmetric scene. Do not change a working installation or persistent sensor settings merely to follow the example. --- # Troubleshooting SICK LiDAR Sensors > Fix common SICK LiDAR issues, look up error codes, and create a diagnostic file for SICK support. Source: https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/ # Troubleshooting Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Start here when a sensor does not connect, does not send data, or reports an error. * [Common Issues](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/common-issues/): symptom and check tables for connection, configuration, and measurement data. * [Diagnostics](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/diagnostics/): create a diagnostic file on the device and send it to SICK for analysis. * [Error Codes](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/error-codes/): interpret reported errors and recommended actions. ## Get Support Create a diagnostic file in SOPASair (**Diagnostics → Overview → Diagnostic file**) and send it to SICK with a description of the problem. See [Diagnostics](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/diagnostics/) and [Contact](https://sickag.github.io/sick_lidar_developer_guide/contact/). --- # Common SICK LiDAR Issues and Quick Fixes > Symptom and check tables for SICK LiDAR connection, configuration, REST access, and measurement-data problems. Source: https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/common-issues/ # Common Issues Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Quick fixes for the problems you are most likely to encounter during commissioning and integration. Each row links to the page with the details. Available settings, protocols, and menu paths vary by device family and firmware. Use the relevant device guide and release notes to confirm support. ## Connection

**Connection:** symptom and check.

| Symptom | Check | | --- | --- | | Sensor not reachable / ping fails | Computer and sensor in the same subnet; power and Ethernet connected ([Getting Started](https://sickag.github.io/sick_lidar_developer_guide/getting-started/)) | | IP address unknown | [Device Discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/): SOPAS ET search, or ARP when device search is disabled | | Lost connection after an IP change | Move the computer to the new subnet, or use device search to find the sensor | | IP change through device search is rejected | The default IP change policy allows it only within 60 s after boot; reboot or log in ([IP Address Assignment](https://sickag.github.io/sick_lidar_developer_guide/shared-features/ip-address-assignment/#troubleshooting)) | | Web UI does not load | Open `http:///` in Chrome, Edge, or Firefox; clear the cache; check that the web server is not disabled ([Cybersecurity](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/cybersecurity/#web-server)) | | HTTPS refuses connections after a certificate upload | Read `httpsStatus` over HTTP on port 80, fix the certificate, and upload it again ([HTTPS & Certificates](https://sickag.github.io/sick_lidar_developer_guide/configuration/https-and-certificates/#remove-the-bundle)) | ## Configuration

**Configuration:** symptom and check.

| Symptom | Check | | --- | --- | | Cannot change settings in the web UI | Log in with an enabled [user level](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/); without login, the UI is read-only | | REST response has `header.status` 4 (Access Denied) | The HTTP status is always `200`; check `header.status`. Fetch a new challenge for every `POST`, check the password and that the user level is enabled, and wait 30 s after five failed logins ([REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#status-codes-and-errors)) | | REST file transfer returns 403 | Send a valid `X-Session-Token` header ([Backup & Restore](https://sickag.github.io/sick_lidar_developer_guide/configuration/configuration-backup-and-restore/)) | | Settings lost after power cycle | Persist with `WriteEeprom` or **Save permanently** ([REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/#reading-vs-writing)) | | CoLa `sFA` error response | Look up the [CoLa error code](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/#cola-error-codes) | | Web UI shows an error ID | Look up the ID in the [Error Codes](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/error-codes/) list | | Need to restore factory settings | [How to perform a factory reset](https://support.sick.com/sick-knowledgebase/article?id=e1f49414-a351-f011-877b-7c1e52263b55) | | Firmware update stuck or fails | Do not power-cycle while `UpdateState` is `1`; allow 2-5 minutes for flash and reboot; on `3` (Error), check for the correct `.spk.signed` package ([Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/#error-handling)) | ## Measurement Data

**Measurement Data:** symptom and check.

| Symptom | Check | | --- | --- | | No UDP data arrives | Data output enabled and destination IP/port set to your computer; Windows network profile set to Private; firewall allows the UDP port ([Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#transport)) | | No TCP data on LRS4000 or multiScan200 | The sensor sends Compact over TCP only while a client is connected; connect to port `2115` ([Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#transport)) | | LMDscandata returns only zeros | The output format is not set to LMDscandata; `sRN LMDscandata` then answers without an error ([LMDscandata Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/#receive-lmdscandata)) | | Scan view empty | Measurement is active and data output is enabled in the device's web interface | | CRC errors in your parser | Compact: CRC32 over the whole frame; MSGPACK: CRC32 over the MSGPACK buffer only ([MSGPACK Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/#framing)) | | Fewer points than expected | [Filters](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/) and scan range reduce or zero out points | | No ROS 2 topics visible on a device with Native ROS 2 support | Cyclone DDS configured with the host interface IP; matching domain ID ([Native ROS 2](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2)) | | WebSocket closes with error 1002 on a device with WebSocket support | Check the negotiated extensions and firmware; use a client compatible with the negotiated mode ([WebSocket Events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/#troubleshooting)) | | Reduced range or warnings | Check [contamination indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/) and clean the optics cover | If the problem persists, create a [diagnostic file](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/diagnostics/) and contact SICK. --- # Diagnostic File for SICK LiDAR Sensors > Create a diagnostic file on a SICK LiDAR sensor in SOPASair and send it to your local SICK contact for analysis. Source: https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/diagnostics/ # Diagnostics Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 If you cannot solve a problem with the [Troubleshooting](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/) tables or the [Error Codes](https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/error-codes/), create a diagnostic file on the device. The file collects diagnostic data of the device in one ZIP archive. SICK uses it to analyze the problem. ## SOPASair Diagnostics Open the web interface of the device and go to **Diagnostics → Overview**. The page shows the current device status, the message log, and the **Diagnostic file** tile. ![SOPASair Diagnostics overview with the Diagnostic file tile](https://sickag.github.io/sick_lidar_developer_guide/assets/picoScan100/img/sopasair-diagnosis-overview.png) *SOPASair **Diagnostics → Overview** on a picoScan100: status, messages, and the **Diagnostic file** tile with **Create file** and **Download**.* ## Create and Send a Diagnostic File 1. Reproduce the problem, or create the file soon after it occurs. 2. Log in with the Service [user level](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/) or higher. 3. In the **Diagnostic file** tile, click **Create file**. A new file overwrites the previous one, and the previous file can no longer be downloaded. 4. Click **Download** and save the ZIP file on your computer. 5. Send the file to SICK through your local SICK contact for analysis. Add a short description of the problem, the part number, the serial number, and the firmware version. See [Contact](https://sickag.github.io/sick_lidar_developer_guide/contact/) for the contact options. You can also create the file over the REST API with `DoDiagnosisDump`. See the REST API | OpenAPI page of your device for the available diagnostic endpoints. The diagnostic file may contain information about your installation. Do not post it in public forums. ## More Information The operating instructions of your device describe the diagnostic functions, the status LEDs, and the messages in more detail. Download them from the *Downloads* tab of the product page on [sick.com](https://www.sick.com/), or open the downloads section of your device guide: [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/#downloads), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/#downloads), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/#downloads), or [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/#downloads). --- # Error Codes for SICK LiDAR Sensors > General list of SICK customer error IDs with their meaning and the recommended action for SICK LiDAR sensors. Source: https://sickag.github.io/sick_lidar_developer_guide/troubleshooting/error-codes/ # Error Codes Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 The device reports problems with a customer error ID. The web interface shows the ID together with a short description and a recommended action. The list below omits codes for functions that these devices do not have, such as CAN, cameras, and SensorApps. Not every remaining code applies to every device.

**Error Codes:** error ID, description, and action.

| Error ID | Description and action | | --- | --- | | 110 | The device is defective. Return the device after consulting your SICK contact. | | 120 | Switch off the device and restart it after 20 seconds. If the error occurs repeatedly, contact your SICK contact. | | 130 | The firmware update failed. Install the firmware again after 2 minutes. If that does not work, install the last working firmware. | | 140 | The system plug is defective. Replace the system plug. | | 205 | The firmware update failed. The device uses the last active firmware. Restart the firmware update after 2 minutes. | | 210 | The device is not ready for operation. Wait, and restart the device if the error persists. | | 211 | Object evaluation is not active in interlaced mode. Deactivate interlaced mode to use object evaluation. | | 215 | Measurement data is missing. | | 220 | The device temperature is not OK. Check the ambient operating temperature. If necessary, use a heater or ensure sufficient cooling. | | 223 | The device temperature is too low. Check the ambient operating temperature. If necessary, use a heater. | | 225 | The device temperature is too high. Check the ambient operating temperature. If necessary, ensure sufficient cooling. | | 227 | The motor speed is not OK. Check the device for external mechanical influences. | | 228 | Shock or vibration exceeds the specification. | | 229 | Dazzling detected. | | 230 | The device is contaminated and not ready for operation. Clean the optics cover. | | 235 | The device is not ready for operation. Wait. If the error persists, contact your SICK contact. | | 237 | The device is not ready for operation. A parameterization problem was detected. Restart the device. If that does not help, contact your SICK contact. | | 239 | Internal communication error detected. Switch off the device and restart it after 20 seconds. | | 240 | The device and the system plug are not connected correctly. Check the connection and clean it if necessary. If the error occurs repeatedly, contact your SICK contact. | | 241 | New system plug detected. The available inputs and outputs may have changed. Check the input and output configuration and all functions that use inputs and outputs. | | 250 | The inertial measurement unit (IMU) is faulty. Restart the device. If that does not help, return the device after consulting your SICK contact. | | 505 | Fallback mode is active. Disconnect the device from the power supply for about 20 seconds and restart it. | | 510 | The device is temporarily not receiving measurement data. | | 511 | The rotation speed deviates from the target value but is within the tolerated range: (f ≥ 15 Hz and f < 19 Hz) or (f > 21 Hz and f ≤ 25 Hz). Measurement data is still output. | | 520 | The heater cannot be switched on. Check the power supply and the cable length and cross-section. | | 523 | The temperature is close to the lower temperature limit. | | 525 | The temperature is close to the upper temperature limit. | | 530 | The device is contaminated and has limited functionality. Clean the optics cover. | | 540 | Check the communication connection and settings. | | 543 | A data packet could not be sent because a previous packet was not transmitted completely. Possible causes are a slow network connection or delayed data processing on the receiver side. Receive the data in a separate thread and use sufficiently large buffers. | | 545 | Communication with the external time server (PTP, NTP) is not possible. Check the network settings. | | 547 | The synchronization signal is missing. Check the wiring and the settings of the sync primary. | | 550 | No connection to the internal additional sensors. Wait, and restart the device if necessary. | | 551 | Measurement data of the inertial measurement unit (IMU) is missing. | | 560 | I/O problem detected. Check the wiring and the configuration of the inputs and outputs. | | 562 | The system plug memory could not be read. The system plug is defective or contains no data. Save the parameter set permanently on the system plug. If the error persists, check how the system plug is mounted on the device and replace the system plug if necessary. | | 563 | The system plug memory could not be written. Check how the system plug is mounted on the device. | | 564 | The input voltage is too high. Check whether the device is damaged. | | 565 | The input voltage is too low. Inputs and outputs no longer work. | | 570 | Parameterization problem detected. Check the configured parameters. | | 580 | The HTTPS settings are faulty. Check the certificate on the Cybersecurity page. | | 581 | Error while processing the certificate. Restart the device. If that does not help, return the device after consulting your SICK contact. | | 610 | Too many fields are active at the same time. Reduce the number of simultaneously active fields or adjust the field size. | | 709 | System plug without Gigabit Ethernet detected. This can cause loss of measurement data. Use a Gigabit Ethernet system plug. | | 710 | Customer-specific setting. | | 715 | The laser is switched off automatically by a customer-specific setting. | | 720 | The device parameters differ from those on the cloning plug. The parameters from the cloning plug are applied. | | 810 | Service mode. | | 905 | The application is not loaded or not activated. Check the firmware. | | 907 | The operation could not be completed because licenses are missing. Activate the required licenses and repeat the operation. | | 910 | Too many functions are active at the same time. Deactivate functions that are not needed. | | 911 | Object tracking is overloaded, for example because the device is moving. Switch off the object tracking function. | | 916 | The output data is invalid. Restart the device. | | 918 | Application error: See Diagnostics in the user interface of the application or the product documentation. | | 935 | One of the inputs used is not available or is used more than once. Check the functions that use ports as inputs. | | 940 | The device is not ready for operation. Restart the device. If the error still occurs, reset the device to factory settings or change the parameterization. | | 990 | Application error: The parameters are invalid. Check the configured parameters. If necessary, reset to factory settings. | | 992 | The configuration was not applied because of an internal error. The device uses the last saved configuration. Configure the device again. If that does not work, restart the device. | --- # Glossary: SICK LiDAR, CoLa, REST, and ROS Terms > Definitions of the terms, abbreviations, and SICK-specific names used in this developer guide. Source: https://sickag.github.io/sick_lidar_developer_guide/glossary/ # Glossary This glossary explains the terms, abbreviations, and SICK-specific names used in this guide. Where a term has its own page, the entry links to it. Glossary terms on other pages link to their entry here.
## A | Term | Meaning | | --- | --- | | AAS (Asset Administration Shell) | Standardized digital twin of a product with its data sheet, operating instructions, certificates, and CAD data. See [Asset Administration Shell](https://sickag.github.io/sick_lidar_developer_guide/shared-features/asset-administration-shell/). | | Activation type | Setting of an evaluation group that defines when the group is evaluated: always, controlled by digital inputs, or controlled by a telegram. See [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#activate-and-monitor-a-group). | | Ambient light image | Passive image captured through a LiDAR receiver. | | AMR (autonomous mobile robot) | Mobile robot that navigates without fixed guidance. A typical application for LiDAR sensors. | | Angle range filter | Filter that limits the output to a horizontal and vertical angle range. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#angle-range-filter). | | API (application programming interface) | Interface through which programs access the sensor, for example REST or CoLa. | | Authorized Client | User level for configuring the sensor in daily operation. See [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). | | AutoIP | Method in which the sensor assigns itself an IP address when no DHCP server answers. | | Azimuth | Horizontal angle of a beam (theta). | ## B | Term | Meaning | | --- | --- | | Beam | One measurement direction of the sensor. Each beam can return one or more echoes. | | Blanking | Detection mode of field evaluation: the field is infringed when an object at least as large as the minimum object size is inside the field. Smaller objects are ignored ("blanked"). | | Blooming | False points that appear near highly reflective objects such as retroreflectors. | ## C | Term | Meaning | | --- | --- | | Challenge-response authentication | Login method of the REST API. The client requests a one-time challenge and answers with a hash that includes the password; the password itself is not transmitted. See [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/). | | Checksum | Value calculated over data to detect transmission errors or changes. CoLa B uses an XOR checksum, the Compact format CRC32, and the device reports MD5 checksums of its software and parameters. See [Checksums](https://sickag.github.io/sick_lidar_developer_guide/shared-features/checksums/). | | CloudCompare | Open source software for viewing and processing 3D point clouds. See [CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/). | | CoLa (Command Language) | SICK protocol for monitoring, maintaining, and using sensors, including configuration and data requests. CoLa A uses ASCII text on TCP port 2111, CoLa B binary data on TCP port 2112, and CoLa 2 uses TCP port 2122. See [CoLa Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/cola-interface/). | | CoLa1 | Collective name for CoLa A and CoLa B. | | Compact format | SICK binary format for measurement data over UDP or TCP, described by Kaitai Struct definitions. See [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/). | | Contamination indication | Function that detects dirt on the optics cover and reports warnings or errors. See [Contamination Indication](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/contamination-indication/). | | Contour mode | Detection mode of field evaluation that compares the scan with a taught-in reference contour. | | CRC32 | 32-bit cyclic redundancy check. Protects each Compact and MSGPACK telegram. | | Cyclone DDS | DDS implementation specified as the ROS 2 middleware for native ROS 2. | ## D | Term | Meaning | | --- | --- | | Data output | Application in SOPASair that configures which measurement data the sensor sends and in which format. | | DDS (Data Distribution Service) | Publish-subscribe middleware used by ROS 2. Native ROS 2 runs a DDS participant on the sensor. | | Device Not Ready | Device state that signals that the sensor does not work correctly. Can be output on a digital output (`DRDY`). | | Device search | Discovery of sensors in the network through UDP broadcasts on port 30718. See [Device Discovery](https://sickag.github.io/sick_lidar_developer_guide/shared-features/device-discovery/). | | DHCP (Dynamic Host Configuration Protocol) | Protocol with which a network server assigns IP addresses automatically. | | Diagnostic file | File with log entries for in-depth analysis by SICK. Created in SOPASair under Diagnostics. | | DIN 70000 | German standard for vehicle coordinate systems (x forward, y left, z up). The IMU coordinate system of the Compact format is based on it. See [Compact Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/compact-format/#type-2-imu). | | Distance-dependent | Field evaluation parameter that decides, based on their axial separation, whether two objects are evaluated separately or merged. See [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#distance-dependent). | ## E | Term | Meaning | | --- | --- | | Echo | Reflection of one laser pulse. One beam can return several echoes, for example from a raindrop and a wall behind it. | | Echo filter | Filter that selects which echoes are output, for example the first, the last, or all echoes. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#echo-filter). | | EEPROM | Non-volatile memory of the sensor. Changes are stored permanently only after `WriteEeprom` (REST) or `mEEwriteall` (CoLa). | | Elevation | Vertical angle of a beam (phi). | | Encoder | Sensor that measures the rotation or position of a moving axis. Encoder data can be combined with 2D LiDAR scans to build 3D point clouds. See [3D With 2D LiDARs](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/3d-with-2d-lidars/). | | EPLAN | Electrical engineering software for designing schematics. SICK provides EPLAN macros as product data. See [Asset Administration Shell](https://sickag.github.io/sick_lidar_developer_guide/shared-features/asset-administration-shell/). | | Evaluation | One detection field with its parameters. Up to 48 evaluations can be configured. | | Evaluation group | Set of evaluations that is activated and deactivated together. | ## F | Term | Meaning | | --- | --- | | Field evaluation | On-sensor application that checks whether objects are inside a defined field and reports `FREE` or `INFRINGED`. See [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/). | | Firmware | Software that runs on the sensor. See [Firmware Update](https://sickag.github.io/sick_lidar_developer_guide/shared-features/firmware-update/). | | Fog filter | Filter that suppresses echoes caused by fog, particularly at close range. | | Frame | One complete scan. A frame is split into segments for output. | ## H | Term | Meaning | | --- | --- | | HDDM+ (High Definition Distance Measurement Plus) | SICK time-of-flight technology that combines returns from many laser pulses to calculate a distance value. See [LiDAR Basics](https://sickag.github.io/sick_lidar_developer_guide/lidar-basics/#measuring-distance-with-light). | ## I | Term | Meaning | | --- | --- | | IGMP (Internet Group Management Protocol) | Protocol with which hosts join a multicast group. Switches with IGMP snooping forward multicast traffic only to ports with receivers. See [UDP Unicast / Multicast](https://sickag.github.io/sick_lidar_developer_guide/shared-features/udp-unicast-multicast/). | | IMU (inertial measurement unit) | Built-in sensor that measures acceleration, angular velocity, and orientation. | | Interlaced mode | Scan mode that combines several scans shifted relative to one another to increase angular resolution. | | Interval filter | Filter that outputs only every n-th scan. | ## K | Term | Meaning | | --- | --- | | Kaitai Struct | Language for describing binary formats. SICK publishes the Compact format as Kaitai Struct definitions (`.ksy`). | ## L | Term | Meaning | | --- | --- | | Layer | One horizontal scan line at a fixed elevation angle. A multi-layer sensor provides several layers; a single-layer sensor provides one. | | LiDAR (light detection and ranging) | Measurement principle that determines distances from the time-of-flight of laser pulses. | | LMDscandata | CoLa telegram with measurement data. See [LMDscandata Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/lmdscandata-format/). | ## M | Term | Meaning | | --- | --- | | Maintenance | User level for maintenance tasks. See [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). | | Mean filter | Filter that averages the distance of each point over several scans, also called moving average filter. Some devices refer to this as high precision mode. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#moving-average-filter). | | Minimum object size | Smallest object that infringes a field in blanking mode. | | MIP (Milestone Integration Platform) | Platform for integrating applications and devices with Milestone XProtect video management software. Its software development kit (SDK) supports protocols, components, and plug-ins. See [Milestone XProtect Camera Plugin](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/milestones-camera/). | | MessagePack (MSGPACK) | Compact binary serialization format for exchanging data between programming languages. See [MSGPACK Format](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/msgpack-format/). | | Multi-echo | Ability of the sensor to measure several echoes per beam. | | Multicast | Transmission of one data stream to a group of receivers. | ## N | Term | Meaning | | --- | --- | | Native ROS 2 | Function with which the sensor publishes ROS 2 messages itself over DDS, without a host driver. See [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#native-ros-2). | | NTP (Network Time Protocol) | Protocol for synchronizing the sensor clock with a time server. See [Time Synchronization](https://sickag.github.io/sick_lidar_developer_guide/shared-features/time-synchronization/). | ## O | Term | Meaning | | --- | --- | | OpenAPI | Machine-readable description of a REST API. SICK publishes OpenAPI files for its REST APIs. | ## P | Term | Meaning | | --- | --- | | Particle filter | Filter that removes isolated points caused by dust, rain, or snow. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#particle-filter). | | pcap | File format for recorded network traffic, created for example with Wireshark. See [Wireshark](https://sickag.github.io/sick_lidar_developer_guide/recording/wireshark-pcap/). | | PCD (Point Cloud Data) | File format of the Point Cloud Library for 3D point clouds. Viewers such as CloudCompare open it. See [CloudCompare](https://sickag.github.io/sick_lidar_developer_guide/visualization/cloudcompare/). | | Performance profile | See scan configuration. | | Perpendicular distance measurement | On-device application that measures the distance of objects to a reference line. See [Perpendicular Distance Measurement](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/perpendicular-distance-measurement/). | | PLC (programmable logic controller) | Industrial controller. See [PLC Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/plc-integration/). | | Point cloud | Set of 3D points calculated from the measured distances and angles. | | PointCloud2 | ROS message type for point clouds. | | Product ID | Globally unique identifier for SICK products that provides access to product-related information. It contains the part number (P/N) and, if available, the serial number (S/N). See [`pid.sick.com/{P/N}/{S/N}`](https://pid.sick.com/). | | PSIRT (Product Security Incident Response Team) | SICK team that handles reports of security vulnerabilities. | | PTP (Precision Time Protocol, IEEE 1588) | Protocol for precise time synchronization over Ethernet. | | PWR (power) | Connector label for a sensor's power supply connection; some variants combine power and digital I/O. | ## Q | Term | Meaning | | --- | --- | | Quaternion | Four values (w, x, y, z) that describe an orientation in 3D. The IMU reports its orientation as a quaternion. | ## R | Term | Meaning | | --- | --- | | Reflector | Highly reflective target, such as a retroreflector. The sensor can mark points on reflectors. | | Region of interest | Selected range of measured values used for further evaluation. In this guide, it limits an evaluation or a filter; for teach-in, a polygon bounds where the contour is learned. | | Remission factor | Measure of the light reflected by a surface relative to a defined white reference surface, expressed as a percentage. A value of 100 % means the same return as the reference, not that all incident light is reflected. Retroreflectors can exceed 100 %. Sensor ranges are specified for a given remission factor, for example 10 %. | | REST (Representational State Transfer) | HTTP-based interface of the sensor for reading and writing variables and calling methods. See [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/). | | RMW (ROS middleware) | Layer that connects ROS 2 to a DDS implementation. | | ROS (Robot Operating System) | Open source framework for robot software. See [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/). | | ROS bag | Recording of ROS messages in a file (`.bag` in ROS 1, `.db3` or `.mcap` in ROS 2). See [ROS Bag](https://sickag.github.io/sick_lidar_developer_guide/recording/ros-bag-db3/). | | RSSI (received signal strength indicator) | Measure of the strength of an echo. | ## S | Term | Meaning | | --- | --- | | Scan configuration | Predefined combination of aperture angle, scanning frequency, and angular resolution, identified by a number. | | Scan merger | On-device function that combines the 2D scans of a rotating sensor into one 3D point cloud. See [3D Scan Recording](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/3d-scan-recording/). | | Scan range | Angle range covered by the sensor. | | ScanSegmentAPI | SICK Python and C# libraries for receiving segmented scan data. Supported devices and features depend on the library version. | | Segment | Part of a scan restricted to an azimuth (horizontal) and/or elevation (vertical) angle range. In the segmented output described in this guide, parts of a frame are sent as separate telegrams so they can be processed immediately. | | Sensitivity mode | Receiver setting that trades scanning range against robustness to ambient light and noise. See [Filter Details](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/filter-details/#sensitivity-mode). | | Service | Highest user level. See [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). | | Session token | Token that authorizes binary file transfers, for example firmware updates and configuration backups. | | sick_perception_sdk | SICK C++ SDK for configuring compatible sensors and receiving Compact data. See [Coding Tools & Examples](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/coding-tools-and-examples/). | | sick_scan_xd | SICK driver for ROS 1, ROS 2, and applications without ROS. See [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/#sick_scan_xd). | | SLAM (simultaneous localization and mapping) | Method in which a robot builds or updates a map of an unknown environment while tracking its own position in that map. See [Native ROS 2 SLAM](https://sickag.github.io/sick_lidar_developer_guide/beginner-projects/native-ros2-slam/). | | Slot | One column of measurements at a horizontal angle step. | | SOPAS ET | SOPAS Engineering Tool for parameterization, configuration, diagnostics, and monitoring of SICK sensors and systems. The Windows application can discover devices and save, export, and import parameter sets. See [SOPAS ET](https://sickag.github.io/sick_lidar_developer_guide/visualization/sopas-et/). | | SOPASair | Application for parameterization, configuration, diagnostics, and monitoring of SICK sensors. In this guide, it is the sensor's web interface, opened in a browser. See [SOPASair](https://sickag.github.io/sick_lidar_developer_guide/visualization/sopasair/). | | STX / ETX | Start of text (`0x02`) and end of text (`0x03`), the control characters that frame a CoLa A telegram. | | Swagger UI | Interactive viewer for OpenAPI files. | | System plug | Customer-replaceable component required for device operation that provides device functions and may store communication parameters or other configuration, depending on the device. | ## T | Term | Meaning | | --- | --- | | Teach-in | Learning process during configuration that collects data for later analysis during operation. In field evaluation, it learns the current environment as the reference contour of a field. See [Field Evaluation](https://sickag.github.io/sick_lidar_developer_guide/on-device-applications/field-evaluation/#teach-in). | | Telegram | One message exchanged with the sensor, for example a CoLa command or a Compact data packet. | | Telegram type | Number in a Compact telegram that identifies its content, for example scan data or IMU data. | ## U | Term | Meaning | | --- | --- | | Unicast | Transmission of a data stream to one receiver. | | User level | Access level that defines which settings a user can change: Maintenance, Authorized Client, or Service. See [User Levels](https://sickag.github.io/sick_lidar_developer_guide/shared-features/user-levels/). | ## V | Term | Meaning | | --- | --- | | Virtual Sensor Lab | Browser-based simulation of SICK sensors. See [Virtual Sensor Lab](https://sickag.github.io/sick_lidar_developer_guide/simulation/virtual-sensor-lab/). | ## W | Term | Meaning | | --- | --- | | WebSocket | Protocol for a persistent connection over which the sensor pushes events. See [WebSocket Events](https://sickag.github.io/sick_lidar_developer_guide/data-streaming/websocket-events/). | | Wireshark | Network analysis tool. SICK provides a Wireshark dissector for the Compact format. | ## X | Term | Meaning | | --- | --- | | XOR checksum | Checksum of CoLa B telegrams: the exclusive OR of all payload bytes. |
--- # Contact SICK > Contact local SICK sales, open a technical support case, or discuss LiDAR integration questions with the community. Source: https://sickag.github.io/sick_lidar_developer_guide/contact/ # Contact Compatible with: LRS4000 multiScan100 multiScan200 picoScan100 Choose the contact option that best fits your question. ## Local Sales Contact your local SICK sales representative for product selection, application advice, pricing, and availability. Visit [sick.com](https://www.sick.com/) and select your country or region to find the local sales contact. ## Support Portal Case For technical troubleshooting, open a support case at [support.sick.com](https://support.sick.com/). Describe the issue, your setup, and the steps needed to reproduce it. Include the part number and serial number from the device's type label, together with the firmware version. If your device provides a diagnostic-file export, create the file through its configuration interface and attach it to the case. Diagnostic information helps SICK investigate the issue; the available export options depend on the device and firmware. ## Public Discussion For general integration questions and sharing experience with other users, join the [GitHub Discussions space](https://github.com/SICKAG/sick_lidar_developer_guide/discussions) or [start a new discussion](https://github.com/SICKAG/sick_lidar_developer_guide/discussions/new/choose). Discussions are public. Do not post credentials, confidential project data, or diagnostic files containing sensitive information; use a Support Portal case for information that should not be shared publicly.