Net tools

This adapter cyclic polls configured IPs, can send wake-on-lan packages and scan for open ports.

Current Release
1.3.0
Developer
Jey Cee
License
CC-BY-NC-4.0

net-tools adapter for ioBroker

This adapter cyclic polls configured IPs, can send wake-on-lan packages and scan for open ports.

This discovery feature is provided by discovery adapter, which means discovery will be installed if is not and it has to run. Remark: This feature is limited to the subnet of the ioBroker host.

Important: You have to buy a license to use this adapter. You can buy one here -> https://www.all-smart.net/produkt/iobroker-net-tools-v1-lizenz/

Wichtig: Für die Nutzung dieses Adapters müssen Sie eine Lizenz erwerben. Sie können eine hier kaufen -> https://www.all-smart.net/produkt/iobroker-net-tools-v1-lizenz/

Auto discovery

There is automatic search feature to find devices. It is also possible to execute it scheduled. Note: If you are using ioBroker within a docker container this feature will not work depending on your network configuration.

Pings configured IP addresses

Pings specified IP addresses in defined interval and monitors the results. (alive, rps, time) The ping interval can be specified on device level.

Latency and packet loss

Each ping sends several packets (setting "Packets per ping" of the device, default 4, maximum 20). From the answers net-tools calculates:

StateMeaning
pingRound trip time of the last answer (ms)
pingMin / pingMax / pingAvgMinimum / maximum / average round trip time of the ping (ms)
packetLossLost packets of the ping in percent

Without any answer the times are null and packetLoss is 100. Each ping takes about one second per packet.

Extended detection (smartphones)

Smartphones like iPhones often do not answer pings while sleeping and would be shown as offline. Enable "Extended detection (smartphones)" in the settings of the device (device manager). If the device does not answer the ping, net-tools sends a UDP packet to port 5353 and tries a TCP connection to port 62078, which wakes up the WLAN of the device, and then checks whether the device answers ARP with its MAC address. No root rights and no additional tools (like hping3) are needed.

  • Works only for devices in the subnet of the ioBroker host (ARP does not pass routers).
  • On Linux the state of the ARP entry is checked (ip neigh), so outdated entries are not counted. On other systems the ARP table is used, which may show a device as present for some time after it left.
  • iPhone: set "Private Wi-Fi Address" for your home network to "Fixed" or "Off". With "Rotating" the MAC address changes and the device can no longer be detected.

Service monitoring (TCP ping)

In the settings of a device (device manager) you can add services in the table "Services (TCP ports)". Each entry has its own settings:

ColumnMeaning
PortTCP port of the service, e.g. 80, 443, 1883
Interval (s)How often the port is checked. Empty = ping interval of the device, minimum 5 s
Tolerance (failures)Number of failed checks in a row that are ignored before the service is shown as not reachable. 0 = immediately

net-tools tries to establish a TCP connection to the port (timeout 2 s), independent of the ping result. The state net-tools.X.<device>.services.port_<port> is true if the connection was established and false after more than "Tolerance" failed checks in a row. States of ports that are removed from the table are deleted. Changes take effect immediately.

Wake-on-LAN

Set the wol object to true and 3 WOL packages are sent, with a pause of 750ms, to your device.

Port scan

You can enter a list of ports or an range in config that should be scanned by default. If this field is empty the range 0-65535 will be taken as default. It is also possible to specify a list or range for every device which will be used for a single scan.

Enter a list or range of ports in object portList, if you want. This overwrites the setting in config. Set scan to true, this will scan for all open ports in the range of 0-65535 or what is defined in portList. This process takes a while. The result will be written to object ports.


iPhone

iPhones try to protect users against tracking while changing the mac address. Read more about it and how to disable for private networks: https://support.apple.com/en-us/102509


For Developers

Get mac for specific device

sendToAsync('net-tools.X, 'getMac', 'IP ADDRESS')

Remark: This feature is limited to the subnet of the ioBroker host.

Ping specific IP address

sendToAsync('net-tools.X, 'ping', 'IP ADDRESS')

Wake-on-LAN

sendToAsync('net-tools.x', 'wake', 'MAC ADDRESS')

The command 'wol' works as well. Returns true if the packets were sent.

Port scan

sendToAsync('net-tools.x', 'portScan', { ip: 'IP ADDRESS', ports: '22,80,443' })

ports is optional, without it the port list from the adapter settings is used. Returns { host, ports: [open ports], error? }.

Blockly

The adapter provides Blockly blocks in the "SendTo" category of the JavaScript adapter:

  • Ping (net-tools) – pings an IP address or host name
  • Port scan (net-tools) – scans the ports of an IP address or host name
  • Wake-on-LAN (net-tools) – sends Wake-on-LAN packets to a MAC address
  • net-tools device – selects a device found by net-tools and returns its IP or MAC address. Can be plugged into the IP/MAC inputs of the blocks above. The IP is read when the script runs, so IP changes are taken into account.
  • net-tools result – returns reachable, response time, open ports, host or error of the surrounding ping or port scan block. Use it only inside "then" of these blocks.

Changelog

1.3.0 (2026-10-11)

  • (ioBroker-Bot) Adapter requires js-controller >= 6.0.11 now.
  • (copilot) Adapter requires node.js >= 22 now
  • (iobroker-bot) Adapter requires node.js >= 20 now.
  • (Jey Cee) Migrate from oui to oui-data
  • (Jey Cee) Add port scan action to device management
  • (Jey Cee) Show IP address and open ports in device details
  • (Jey Cee) Create quicklinks for web ports found by port scan
  • (Jey Cee) Call ping.exe directly on Windows instead of using process.env (compact mode)
  • (Jey Cee) Update @all-smart/all-smart-tools to 1.0.16
  • (Jey Cee) Fix adapter crash when port scan runs on an offline device (#63)
  • (Jey Cee) Use default port list if port list in configuration is missing or empty
  • (Jey Cee) Fix sendTo commands (wake/wol, ping, getMac, addDevice, deleteDevice, updateDevice) being ignored (#71)
  • (Jey Cee) Fix "Wake-on-LAN with IP" sending packets to localhost (#71)
  • (Jey Cee) Wake-on-LAN: also send to the broadcast address of the device subnet, log sent packets, no endless retries on errors
  • (Jey Cee) Add sendTo command portScan
  • (Jey Cee) Add Blockly blocks for ping, port scan and Wake-on-LAN
  • (Jey Cee) Add Blockly block to select a device found by net-tools
  • (Jey Cee) Add extended detection for devices that do not answer pings while sleeping (e.g. iPhone)
  • (Jey Cee) Fix changed device settings (Wake-on-LAN with IP) not being applied until restart
  • (Jey Cee) Add service monitoring via TCP ping for multiple ports per device, with interval and tolerance per port
  • (Jey Cee) Device settings dialog uses the available width (multi-column layout)
  • (Jey Cee) Add latency (ping, min, max, avg) and packet loss per device, with configurable packets per ping

1.2.3 (2025-11-09)

  • Change link to license

1.2.2 (2025-11-09)

  • Fix ip and mac check while add manual new device

1.2.1 (2025-11-09)

  • Refactor port scan

1.2.0 (2025-06-11)

  • Added network interface information for localhost to device manager

License

Attribution-NonCommercial 4.0 (CC BY-NC 4.0)

Copyright (c) 2025-2026 Jey Cee iobroker@all-smart.net

http://creativecommons.org/licenses/by-nc/4.0/

The complete license text can be found in the LICENSE file.

Short content: Licensees may copy, distribute, display and perform the work and make derivative works based on it only if they give the author or licensor the credits in the manner specified by these. Licensees may copy, distribute, display, and perform the work and make derivative works based on it only for noncommercial purposes. (Free for non-commercial use).