WISPMapbeta

Docs / Adding devices

Import from a spreadsheet

Add or update hundreds of sites and devices at once from CSV files: the columns, an example, and how errors are handled.

Updated 10 November 2026

Sites and devices can be imported from CSV files on the Admin → Sites and Admin → Devices pages. Import the sites first: every device names its site.

How it works

  • Check only reads the whole file and tells you what it would add and update, without saving anything.
  • Import saves it, all or nothing: if any row has a problem, nothing is saved, and you get a list of the rows to fix (by line number and column).
  • Existing rows are updated, new ones added: sites are matched on their code, devices on their mgmt_host. Running the same file twice changes nothing.
  • Up to 5 000 rows per file. From Excel, save as CSV UTF-8; older "CSV (comma delimited)" files work too.
  • Column names aren't case-sensitive, and their order doesn't matter.

Sites

Required: code, name, lat, lon.

Column What it is
code A short, unique code, e.g. TWR-NORTH.
name The site's name.
lat, lon Its position in decimal degrees, e.g. -25.86 and 28.19. In South Africa the latitude is negative.
kind tower (default), pop, datacenter, office, relay or customer.
power_type grid, grid_battery, solar_battery, generator, hybrid or unknown (default).
battery_nominal_v 12, 24 or 48, for a site with a battery.
structure_height_m The mast's height in metres.
ground_elevation_m The ground's height above sea level.
address, contact_name, contact_phone For your technicians.
tags Your own labels, separated by ;.
code,name,lat,lon,kind,power_type,battery_nominal_v
POP,Head office POP,-25.8601,28.1902,pop,grid_battery,48
TWR-NORTH,Rietfontein tower,-25.7412,28.2208,tower,grid_battery,24
TWR-EAST,Bronkhorstspruit tower,-25.8095,28.7418,tower,solar_battery,24

Devices

Required: site_code, name, mgmt_host.

Column What it is
site_code The code of an existing site.
name The device's name.
mgmt_host Its management address.
kind routeros (default), snmp or ping_only.
role core_router, router, backhaul, ap, switch, cpe or other (default).
criticality critical, high, normal (default) or low.
api_port Leave it empty for the usual port (8728 for RouterOS, 161 for SNMP).
credential_profile Empty = default.
collector A collector's name. Empty = your only collector, if you have one.
notes Anything for your team.
site_code,name,mgmt_host,kind,role
POP,POP-CORE,10.0.0.1,routeros,core_router
TWR-NORTH,TWR-NORTH-RTR,10.0.1.1,routeros,router
TWR-NORTH,TWR-NORTH-SEC1,10.0.1.11,snmp,ap
TWR-NORTH,TWR-NORTH-UPS,10.0.1.20,snmp,other
TWR-EAST,TWR-EAST-CAM,10.0.2.30,ping_only,other

What each field does is in device settings. Your plan's device limit applies to imports too: a row that would go over it is reported as an error.

Then

Open the map to check the positions, then accept the link suggestions in Links. Battery monitoring needs one more setting per site, its power device (how).