Smart Water Grid

Smart Water Grid detects leaks more quickly

Leaks in the drinking water grid lead to water losses and financial expense. Using a Smart Water Grid, water leaks can be detected — and fixed — more quickly.

Traditionally, detecting a water leak requires a whole lot of work. The drinking water grid is divided into zones containing between 200 and 1,000 customers each. The volume of water going to each of these zones is carefully measured. This gives us a clear idea of the consumption profile for each zone, which enables us to detect potential leaks: if night-time consumption shoots up in a certain zone, for example, there is likely to be a problem.

introductie foto Smart Water Grid detects leaks more quickly

More effective

However, searching for a leak across an entire zone remains a challenging task. “A Smart Water Grid can detect leaks more effectively on the basis of data analysis”, Research and Development programme manager Nele Philips states. “Within this type of grid, we can combine the consumption data for each zone with data from wireless pressure sensors and feedback from technicians and customers. We are developing a digital twin that uses GIS data and machine learning, among other things. Using these tools, we can detect and fix leaks more quickly and effectively.” Smart Water Grid is a subsidised Imec:ICON project, with Hydroscan, Aloxy and Itineris as industrial partners and with financial support from Flanders Innovation & Entrepreneurship.

function swipedetect(el, callback){ var touchsurface = el, swipedir, startX, startY, distX, distY, threshold = 200, //required min distance traveled to be considered swipe restraint = 100, // maximum distance allowed at the same time in perpendicular direction allowedTime = 300, // maximum time allowed to travel that distance elapsedTime, startTime, handleswipe = callback || function(swipedir){} touchsurface.addEventListener('touchstart', function(e){ var touchobj = e.changedTouches[0] swipedir = 'none' dist = 0 startX = touchobj.pageX startY = touchobj.pageY startTime = new Date().getTime() // record time when finger first makes contact with surface e.preventDefault() }, false) touchsurface.addEventListener('touchmove', function(e){ e.preventDefault() // prevent scrolling when inside DIV }, false) touchsurface.addEventListener('touchend', function(e){ var touchobj = e.changedTouches[0] distX = touchobj.pageX - startX // get horizontal dist traveled by finger while in contact with surface distY = touchobj.pageY - startY // get vertical dist traveled by finger while in contact with surface elapsedTime = new Date().getTime() - startTime // get time elapsed if (elapsedTime <= allowedTime){ // first condition for awipe met if (Math.abs(distX) >= threshold && Math.abs(distY) <= restraint){ // 2nd condition for horizontal swipe met swipedir = (distX < 0)? 'left' : 'right' // if dist traveled is negative, it indicates left swipe } else if (Math.abs(distY) >= threshold && Math.abs(distX) <= restraint){ // 2nd condition for vertical swipe met swipedir = (distY < 0)? 'up' : 'down' // if dist traveled is negative, it indicates up swipe } } handleswipe(swipedir) e.preventDefault() }, false) } window.addEventListener('load', function(){ var el = document.getElementById('prevnextbar') var nextpage = document.getElementById('nextpage') var prevpage = document.getElementById('prevpage') swipedetect(el, function(swipedir){ if (swipedir != 'right'){ prevpage.click() } if (swipedir != 'left'){ nextpage.click() } }) }, false)