finds.dev← search

// the find

zhaopeiym/IoTClient

★ 1,642 · C# · MIT · updated May 2026

This is an IoT device communication protocol implementation client, which will include common industrial communication protocols such as mainstream PLC communication reading, ModBus protocol, and Bacnet protocol. This component is open source and free for life, using the most relaxed MIT open source agreement, you can modify and commercial use at will (commercial use please evaluate and test). 这是一个物联网设备通讯协议实现客户端,将会包括主流PLC通信读取、ModBus协议、Bacnet协议等常用工业通讯协议。本组件终身开源免费,采用最宽松的MIT开源协议,您可以随意修改和商业使用(商业使用请做好评估和测试)。

A C# library for talking to industrial PLCs and devices over Modbus (TCP/RTU/ASCII), Siemens S7, Mitsubishi MC, Omron FINS, Allen-Bradley CIP, and BACnet. Targets .NET Standard 2.0, so it runs on Windows, Linux, and Raspberry Pi. The audience is .NET developers building SCADA, energy monitoring, or factory automation software who don't want to implement these wire protocols from scratch.

The API is genuinely consistent across protocols — the same Read/Write/BatchRead pattern works whether you're talking to a Modbus slave or a Siemens S7-1500, which saves a lot of adapter code. The Result<T> return type (with IsSucceed, Err, Requst, Response fields) is the right call for hardware that can silently fail or time out — you don't have to catch exceptions for normal failure modes. The SiemensClient thread-safety design is documented and intentional, which matters when multiple threads are polling the same PLC over a shared connection. There's an actual server-side implementation (IoTServer) for writing test harnesses without physical hardware.

The library is synchronous throughout — no async/await anywhere visible in the public API, which blocks threads on every read/write call and makes it painful to scale to many devices in a modern .NET app. Last serious commit activity was 2021-era based on the screenshots; the repo has coasted since. BACnet support appears minimal and is mostly delegated to an extension adapter with thin wrappers, not a real implementation. Documentation is primarily Chinese with machine-translated English, so edge cases and protocol quirks (e.g., Siemens PDU size limits, Modbus exception codes) are underdocumented for non-Chinese users.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →