CINXE.COM

Torus Unveils Integrated Energy Storage and AI-Driven Cybersecurity Solutions | Utility Dive

<!DOCTYPE html> <html class="no-js" dir="ltr" lang="en-US" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="robots" content="nofollow"> <title>Torus Unveils Integrated Energy Storage and AI-Driven Cybersecurity Solutions | Utility Dive</title> <meta name="description" content="Utility industry news and analysis for energy professionals."/> <meta property="fb:pages" content="511735792306612"> <script data-cfasync="false"> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('consent','default',{ 'ad_storage':'denied', 'analytics_storage':'denied', 'ad_user_data':'denied', 'ad_personalization':'denied', 'personalization_storage':'denied', 'functionality_storage':'granted', 'security_storage':'granted', 'wait_for_update': 500 }); gtag("set", "ads_data_redaction", true); </script> <script data-cfasync="false" src="https://cmp.osano.com/AzqdtLT8Mqkut2TZ/bdeb2f70-056f-4937-961a-e9db412e4c7a/osano.js"></script> <style> .osano-cm-widget{display: none;} </style> <script data-cfasync="false"> window.Osano.cm.addEventListener("osano-cm-script-blocked", function (item) { console.log("Script blocked: " + item); }); window.Osano.cm.addEventListener("osano-cm-cookie-blocked", function (item) { console.log("Cookie blocked: " + item); }); </script> <script> window.dive_location = "NonEU"; window.dive_limit_data_processing = false; </script> <!-- ====== FAVICONS ======= --> <link rel="icon" type="image/x-icon" sizes="any" href="/favicon.ico?v=2" /> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=2"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=2"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=2"> <link rel="manifest" href="/site.webmanifest?v=2"> <link rel="mask-icon" href="/safari-pinned-tab.svg?v=2" color="#5bbad5"> <meta name="msapplication-TileImage" content="/mstile-150x150.png?v=2"> <meta name="msapplication-TileColor" content="#603cba"> <meta name="theme-color" content="#ffffff"> <link rel="alternate" type="application/rss+xml" title="Utility Dive - Latest News Feed" href="https://www.utilitydive.com/feeds/news/"/> <meta property="og:site_name" content="Utility Dive" /> <meta property="og:title" content="Torus Unveils Integrated Energy Storage and AI-Driven Cybersecurity Solutions | Utility Dive"/> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/" /> <meta property="og:image" content="http://res.cloudinary.com/dmgi9movl/image/upload/v1729771836/press_release/assets/header_images/1718997098-torus_fess-bess_olnenh.png" /> <link rel="stylesheet" href="/static/css/dive_app.css?330116211124"> <script> // Initialize dataLayer empty array for GTM events window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'site': 'Utility Dive', }); // wrapper function to push GTM events to dataLayer pushGTMEvent = (eventObject) => { // if window.datalayer is not defined, then set to an empty array window.dataLayer.push(eventObject); }; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-55G8WRR');</script> <!-- End Google Tag Manager --> <script> let eventParams = {}; const gtmEventObject = { event: 'page.content', 'page.content': { v:11, // seer version ...eventParams } }; window.pushGTMEvent(gtmEventObject); </script> <script type="module" src="/static/js/dist/lyticsHelper.bundle.js?520216211124" ></script> <script type="text/javascript" src="/static/js/ad_blocker_recovery.js?160016291122"></script> <!-- These are the 2 necessary scripts for the ad recovery message to work --> <script async src="https://fundingchoicesmessages.google.com/i/pub-8553262192892817?ers=1" nonce="RORABhIXgMhQdZXbks8fZQ"></script> <script nonce="RORABhIXgMhQdZXbks8fZQ">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script> <!-- If the ad recovery message is blocked, this script shows a backup error message asking users to allow ads --> <script>(function(){/* Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ 'use strict';var aa=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}},ba="function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b},k;if("function"==typeof Object.setPrototypeOf)k=Object.setPrototypeOf;else{var m;a:{var ca={a:!0},n={};try{n.__proto__=ca;m=n.a;break a}catch(a){}m=!1}k=m?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null} var p=k,q=function(a,b){a.prototype=ba(b.prototype);a.prototype.constructor=a;if(p)p(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.v=b.prototype},r=this||self,da=function(){},t=function(a){return a};var u;var w=function(a,b){this.g=b===v?a:""};w.prototype.toString=function(){return this.g+""};var v={},x=function(a){if(void 0===u){var b=null;var c=r.trustedTypes;if(c&&c.createPolicy){try{b=c.createPolicy("goog#html",{createHTML:t,createScript:t,createScriptURL:t})}catch(d){r.console&&r.console.error(d.message)}u=b}else u=b}a=(b=u)?b.createScriptURL(a):a;return new w(a,v)};var A=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)};var B={},C=null;var D="function"===typeof Uint8Array;function E(a,b,c){return"object"===typeof a?D&&!Array.isArray(a)&&a instanceof Uint8Array?c(a):F(a,b,c):b(a)}function F(a,b,c){if(Array.isArray(a)){for(var d=Array(a.length),e=0;e<a.length;e++){var f=a[e];null!=f&&(d[e]=E(f,b,c))}Array.isArray(a)&&a.s&&G(d);return d}d={};for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(f=a[e],null!=f&&(d[e]=E(f,b,c)));return d} function ea(a){return F(a,function(b){return"number"===typeof b?isFinite(b)?b:String(b):b},function(b){var c;void 0===c&&(c=0);if(!C){C={};for(var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),e=["+/=","+/","-_=","-_.","-_"],f=0;5>f;f++){var h=d.concat(e[f].split(""));B[f]=h;for(var g=0;g<h.length;g++){var l=h[g];void 0===C[l]&&(C[l]=g)}}}c=B[c];d=Array(Math.floor(b.length/3));e=c[64]||"";for(f=h=0;h<b.length-2;h+=3){var y=b[h],z=b[h+1];l=b[h+2];g=c[y>>2];y=c[(y&3)<< 4|z>>4];z=c[(z&15)<<2|l>>6];l=c[l&63];d[f++]=""+g+y+z+l}g=0;l=e;switch(b.length-h){case 2:g=b[h+1],l=c[(g&15)<<2]||e;case 1:b=b[h],d[f]=""+c[b>>2]+c[(b&3)<<4|g>>4]+l+e}return d.join("")})}var fa={s:{value:!0,configurable:!0}},G=function(a){Array.isArray(a)&&!Object.isFrozen(a)&&Object.defineProperties(a,fa);return a};var H;var J=function(a,b,c){var d=H;H=null;a||(a=d);d=this.constructor.u;a||(a=d?[d]:[]);this.j=d?0:-1;this.h=null;this.g=a;a:{d=this.g.length;a=d-1;if(d&&(d=this.g[a],!(null===d||"object"!=typeof d||Array.isArray(d)||D&&d instanceof Uint8Array))){this.l=a-this.j;this.i=d;break a}void 0!==b&&-1<b?(this.l=Math.max(b,a+1-this.j),this.i=null):this.l=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)a=c[b],a<this.l?(a+=this.j,(d=this.g[a])?G(d):this.g[a]=I):(d=this.l+this.j,this.g[d]||(this.i=this.g[d]={}),(d=this.i[a])? G(d):this.i[a]=I)},I=Object.freeze(G([])),K=function(a,b){if(-1===b)return null;if(b<a.l){b+=a.j;var c=a.g[b];return c!==I?c:a.g[b]=G([])}if(a.i)return c=a.i[b],c!==I?c:a.i[b]=G([])},M=function(a,b){var c=L;if(-1===b)return null;a.h||(a.h={});if(!a.h[b]){var d=K(a,b);d&&(a.h[b]=new c(d))}return a.h[b]};J.prototype.toJSON=function(){var a=N(this,!1);return ea(a)}; var N=function(a,b){if(a.h)for(var c in a.h)if(Object.prototype.hasOwnProperty.call(a.h,c)){var d=a.h[c];if(Array.isArray(d))for(var e=0;e<d.length;e++)d[e]&&N(d[e],b);else d&&N(d,b)}return a.g},O=function(a,b){H=b=b?JSON.parse(b):null;a=new a(b);H=null;return a};J.prototype.toString=function(){return N(this,!1).toString()};var P=function(a){J.call(this,a)};q(P,J);function ha(a){var b,c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document,d=null===(b=c.querySelector)||void 0===b?void 0:b.call(c,"script[nonce]");(b=d?d.nonce||d.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",b)};var Q=function(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)},R=function(a){this.g=a||r.document||document};R.prototype.appendChild=function(a,b){a.appendChild(b)};var S=function(a,b,c,d,e,f){try{var h=a.g,g=Q(a.g,"SCRIPT");g.async=!0;g.src=b instanceof w&&b.constructor===w?b.g:"type_error:TrustedResourceUrl";ha(g);h.head.appendChild(g);g.addEventListener("load",function(){e();d&&h.head.removeChild(g)});g.addEventListener("error",function(){0<c?S(a,b,c-1,d,e,f):(d&&h.head.removeChild(g),f())})}catch(l){f()}};var ia=r.atob("aHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS8xeC93YXJuaW5nX2FtYmVyXzI0ZHAucG5n"),ja=r.atob("WW91IGFyZSBzZWVpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2UgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlIGlzIGludGVyZmVyaW5nIHdpdGggdGhpcyBwYWdlLg=="),ka=r.atob("RGlzYWJsZSBhbnkgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlLCB0aGVuIHJlbG9hZCB0aGlzIHBhZ2Uu"),la=function(a,b,c){this.h=a;this.j=new R(this.h);this.g=null;this.i=[];this.l=!1;this.o=b;this.m=c},V=function(a){if(a.h.body&&!a.l){var b= function(){T(a);r.setTimeout(function(){return U(a,3)},50)};S(a.j,a.o,2,!0,function(){r[a.m]||b()},b);a.l=!0}},T=function(a){for(var b=W(1,5),c=0;c<b;c++){var d=X(a);a.h.body.appendChild(d);a.i.push(d)}b=X(a);b.style.bottom="0";b.style.left="0";b.style.position="fixed";b.style.width=W(100,110).toString()+"%";b.style.zIndex=W(2147483544,2147483644).toString();b.style["background-color"]=ma(249,259,242,252,219,229);b.style["box-shadow"]="0 0 12px #888";b.style.color=ma(0,10,0,10,0,10);b.style.display= "flex";b.style["justify-content"]="center";b.style["font-family"]="Roboto, Arial";c=X(a);c.style.width=W(80,85).toString()+"%";c.style.maxWidth=W(750,775).toString()+"px";c.style.margin="24px";c.style.display="flex";c.style["align-items"]="flex-start";c.style["justify-content"]="center";d=Q(a.j.g,"IMG");d.className=A();d.src=ia;d.style.height="24px";d.style.width="24px";d.style["padding-right"]="16px";var e=X(a),f=X(a);f.style["font-weight"]="bold";f.textContent=ja;var h=X(a);h.textContent=ka;Y(a, e,f);Y(a,e,h);Y(a,c,d);Y(a,c,e);Y(a,b,c);a.g=b;a.h.body.appendChild(a.g);b=W(1,5);for(c=0;c<b;c++)d=X(a),a.h.body.appendChild(d),a.i.push(d)},Y=function(a,b,c){for(var d=W(1,5),e=0;e<d;e++){var f=X(a);b.appendChild(f)}b.appendChild(c);c=W(1,5);for(d=0;d<c;d++)e=X(a),b.appendChild(e)},W=function(a,b){return Math.floor(a+Math.random()*(b-a))},ma=function(a,b,c,d,e,f){return"rgb("+W(Math.max(a,0),Math.min(b,255)).toString()+","+W(Math.max(c,0),Math.min(d,255)).toString()+","+W(Math.max(e,0),Math.min(f, 255)).toString()+")"},X=function(a){a=Q(a.j.g,"DIV");a.className=A();return a},U=function(a,b){0>=b||null!=a.g&&0!=a.g.offsetHeight&&0!=a.g.offsetWidth||(na(a),T(a),r.setTimeout(function(){return U(a,b-1)},50))},na=function(a){var b=a.i;var c="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];b=c?c.call(b):{next:aa(b)};for(c=b.next();!c.done;c=b.next())(c=c.value)&&c.parentNode&&c.parentNode.removeChild(c);a.i=[];(b=a.g)&&b.parentNode&&b.parentNode.removeChild(b);a.g=null};var pa=function(a,b,c,d,e){var f=oa(c),h=function(l){l.appendChild(f);r.setTimeout(function(){f?(0!==f.offsetHeight&&0!==f.offsetWidth?b():a(),f.parentNode&&f.parentNode.removeChild(f)):a()},d)},g=function(l){document.body?h(document.body):0<l?r.setTimeout(function(){g(l-1)},e):b()};g(3)},oa=function(a){var b=document.createElement("div");b.className=a;b.style.width="1px";b.style.height="1px";b.style.position="absolute";b.style.left="-10000px";b.style.top="-10000px";b.style.zIndex="-10000";return b};var L=function(a){J.call(this,a)};q(L,J);var qa=function(a){J.call(this,a)};q(qa,J);var ra=function(a,b){this.l=a;this.m=new R(a.document);this.g=b;this.i=K(this.g,1);b=M(this.g,2);this.o=x(K(b,4)||"");this.h=!1;b=M(this.g,13);b=x(K(b,4)||"");this.j=new la(a.document,b,K(this.g,12))};ra.prototype.start=function(){sa(this)}; var sa=function(a){ta(a);S(a.m,a.o,3,!1,function(){a:{var b=a.i;var c=r.btoa(b);if(c=r[c]){try{var d=O(P,r.atob(c))}catch(e){b=!1;break a}b=b===K(d,1)}else b=!1}b?Z(a,K(a.g,14)):(Z(a,K(a.g,8)),V(a.j))},function(){pa(function(){Z(a,K(a.g,7));V(a.j)},function(){return Z(a,K(a.g,6))},K(a.g,9),K(a.g,10),K(a.g,11))})},Z=function(a,b){a.h||(a.h=!0,a=new a.l.XMLHttpRequest,a.open("GET",b,!0),a.send())},ta=function(a){var b=r.btoa(a.i);a.l[b]&&Z(a,K(a.g,5))};(function(a,b){r[a]=function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];r[a]=da;b.apply(null,d)}})("__h82AlnkH6D91__",function(a){"function"===typeof window.atob&&(new ra(window,O(qa,window.atob(a)))).start()});}).call(this); window.__h82AlnkH6D91__("WyJwdWItODU1MzI2MjE5Mjg5MjgxNyIsW251bGwsbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9iL3B1Yi04NTUzMjYyMTkyODkyODE3Il0sbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9lbC9BR1NLV3hVc0lBMXlKVmRQQWNGaXJQX1lGUTdENkpIZVNZUGV6bWNOM216TmJmYWhldlNobXpBVHkzVzlPLU5LV3MyNkx5cWVXRUx3YnRhZzN1MnZEWHVkZnFFSkVRXHUwMDNkXHUwMDNkP3RlXHUwMDNkVE9LRU5fRVhQT1NFRCIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFVoRGZtbFAtR2RTZUhBa1lVY2VmWTFQYXh1cDNFdmhndlJDNVM4bms3S2t1TElaUXBFQ05VZTIySUNjcGx4eF9oeVlveHJTdy1iU3FjUkhKZWwyWU1NalFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QxXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFgzMm02dWJvVVVwaXJ1b1VQMmhkY2R1S2U5S0pzaDlGRDloMDlWOTlYTkpyZkVTRW5HNzh4Vm0yUDZXdjBDNmkwMXZ4Ui11V25ZVVdlWEI3dmNCd1c5cFFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QyXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFh0cXRhOEVpaV9LUVI4VHNLaDFVUGJ5TFlnNU1ocDFqdVNFemltQVFFeDFjRDJxalJhTjNDM21hSkt1VkVqdGZ5bTZjSXg5emVaLU5IazZMbTE5QjB1ZGdcdTAwM2RcdTAwM2Q/c2JmXHUwMDNkMiIsImRpdi1ncHQtYWQiLDIwLDEwMCwiY0hWaUxUZzFOVE15TmpJeE9USTRPVEk0TVRjXHUwMDNkIixbbnVsbCxudWxsLG51bGwsImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tLzBlbW4vZi9wL3B1Yi04NTUzMjYyMTkyODkyODE3LmpzP3VzcXBcdTAwM2RDQUUiXSwiaHR0cHM6Ly9mdW5kaW5nY2hvaWNlc21lc3NhZ2VzLmdvb2dsZS5jb20vZWwvQUdTS1d4V0QtdnVGQVVZRE9STnItSmY2SnJGSGhYYU1QNlo5NG1CTjFyQ2g5M1FvdVNLSmtJcFBlLW1Uc2NpdHNWOEZ0aUdIdzBFZ1QtOEMzbHpFblJMczduZ0pQQVx1MDAzZFx1MDAzZCJd"); </script> <script src="/static/js/jquery_360.min.js?543516150322"></script> <script> // waitForTriggerHandler() is library for queuing up javascript to be stored and then executed when a trigger // function is called. You can push() any number of functions which will be stored unless and until trigger() // is called. Once trigger() is called any future functions that you push() in will be executed immediately. // It is safe to call .trigger() multiple times. Any arguments passed to .trigger() will also be passed along // to the associated function function waitForTriggerHandler() { var function_queue = []; var trigger_arguments = []; this._triggered = false; this.push = function(fn) { if (this._triggered) { // just run it immediately if handler has already been triggered fn.apply(null, trigger_arguments); } else { // otherwise add to the queue to run later function_queue.push(fn); } }; this.trigger = function() { // any arguments passed to trigger(foo, bar, baz) will also be passed along to functions in the queue // first convert any arguments to an array trigger_arguments = Array.prototype.slice.call(arguments); while (function_queue.length){ // for each function in the queue, pop it off and then execute it while passing in any // args that may have been passed to trigger(). function_queue.pop().apply(null, trigger_arguments); // The "null" above is for the value of "this". // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#Parameters } this._triggered = true; } } // set up waitToLoadAds handler window.waitToLoadAds = new waitForTriggerHandler(); // We set up the triggers for this below, they depend on whether we're loading lytics on the page </script> <script type="text/javascript"> // This token is here for test_lytics_snippet.py test: lytics-is-enabled window.googletag = window.googletag || {}; googletag.cmd = googletag.cmd || []; // initialize callback (source: https://learn.lytics.com/product-docs/lytics-javascript-tag/receiving-data-from-lytics) !function(){"use strict";var o=window.jstag||(window.jstag={}),r=[];function n(e){o[e]=function(){for(var n=arguments.length,t=new Array(n),i=0;i<n;i++)t[i]=arguments[i];r.push([e,t])}}n("send"),n("mock"),n("identify"),n("pageView"),n("unblock"),n("getid"),n("setid"),n("loadEntity"),n("getEntity"),n("on"),n("once"),n("call"),o.loadScript=function(n,t,i){var e=document.createElement("script");e.async=!0,e.src=n,e.onload=t,e.onerror=i;var o=document.getElementsByTagName("script")[0],r=o&&o.parentNode||document.head||document.body,c=o||r.lastChild;return null!=c?r.insertBefore(e,c):r.appendChild(e),this},o.init=function n(t){return this.config=t,this.loadScript(t.src,function(){if(o.init===n)throw new Error("Load error!");o.init(o.config),function(){for(var n=0;n<r.length;n++){var t=r[n][0],i=r[n][1];o[t].apply(o,i)}r=void 0}()}),this}}(); // custom init + lytics default install tag from https://activate.getlytics.com/connect?aid=2751 // see https://learn.lytics.com/understanding/product-docs/lytics-javascript-tag/configuration#configuration-options var lyticsCid = '44fda7674f94228540d8fba6786f9770'; console.log('You are using the Lytics Prod account'); jstag.init({ src: `https://c.lytics.io/api/tag/${lyticsCid}/latest.min.js`, pageAnalysis: { dataLayerPull: { disabled: true } } }); jstag.pageView(); (function(){ var sailthru_cookie, sailthru_user_id; function read_cookie(cookieName) { var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)'); var sMatch = (' '+document.cookie).match(re); if (cookieName && sMatch) return unescape(sMatch[1]); return ''; } sailthru_cookie = read_cookie('sailthru_hid'); if (sailthru_cookie.length > 56) { sailthru_user_id = sailthru_cookie.slice(32,56); jstag.send({ st_profile_id: sailthru_user_id }); } })(); jstag.call('entityReady', waitToLoadAds.trigger); setTimeout(waitToLoadAds.trigger, 1000); // also trigger lytics if it's taking too long waitToLoadAds.push(function (lytics_data) { // lytics_data won't be defined if lytics failed to load correctly. In that case // we don't need to set any segments. if (lytics_data && lytics_data.segments) { googletag.cmd.push(function() { googletag.pubads().setTargeting("LyticsSegments", lytics_data.segments); }); } }); function getUID(id) { window.dataLayer.push({'user_id': id}); }; jstag.getid(getUID); </script> <script type="text/javascript" src="/static/js/mailcheck.min.js?192616240919"></script> <script type="text/javascript" src="/static/js/dive_mailcheck.js?192616240919"></script> <script src="/static/js/app.js?040116120224"></script> <script type="text/javascript"> var divecounter_settings = {}; </script> <script type="text/javascript" src="/static/js/divecounter.js?261616040423"></script> <script type="text/javascript"> // Special unbounce signup thing for google traffic. Test with ?test_unbounce in the URL // Note: divecounter must already be loaded. Only enabled on pages that would normally have signup ads // Note: showSignupAd is always off if prestitial is enabled! if ((typeof divecounter !== "undefined") && ($(window).width() > 640)) { var test_unbounce = (window.location.href.indexOf("?test_unbounce")>=0); var force_unbounce = (window.location.href.indexOf("signupbounce=1")>=0) || (window.location.href.indexOf("utm_campaign=Linked-HR")>=0) || (window.location.href.indexOf("utm_source=outbrain")>=0); if (test_unbounce || force_unbounce || (document.referrer.match(/^https?:\/\/(www\.google\.|news\.google\.|t\.co|twitter\.com|www\.facebook\.com)/i) && divecounter.getOption('showSignupAd') && divecounter.canShow(1,1)) ) { // dyanmically load ouibounce.js only on pages where its needed $.getScript("/static/js/ouibounce.min.js?102717100918", function(){ // Once ouibounce.js loads, call the script // We're reusing divecounter's modal instead of OuiBounce's modal code (that's why we pass it 'false') var _ouibounce = ouibounce(false, { aggressive: test_unbounce, // ignore cookie in test mode cookieName: '_viewedOuiBounce', // underscored cookies should be ignored by Varnish callback: function() { divecounter_open_ad(); } }); }); } // end should show unbounce } // end divecounter defined </script> <script type="text/javascript"> // Load analytics.js (universal analytics) first (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); // set all the variables that are per-session or per-visit ga( 'create', 'UA-19684343-16', 'auto', {'name': 'orig'}, {'siteSpeedSampleRate': 2} ); // Set the same variables for aggregate data profile ga( 'create', 'UA-19684343-45', 'auto', {'name': 'agg'}, {'siteSpeedSampleRate': 2} ); //GA.js for tracking outbound links function trackOutboundLink(link, category, action, redirect) { try{ ga('orig.send', 'event', category, action); } catch(err) {} try{ ga('agg.send', 'event', category, action); } catch(err) {} //Timer to prevent redirect before processing data - not necessary if opening tab in new window if(redirect){ setTimeout(function(){ document.location.href = link.href; }, 100); } } $(document).ready(function() { $(".outboundlink").click(function() { trackOutboundLink(this, 'outboundlink', this.link, this.target != '_blank'); }); }); var diveSendPageviewEvent = true; if (diveSendPageviewEvent === true) { ga('orig.send', 'pageview'); ga('agg.send', 'pageview'); console.log('Queued sending of the pageview event to Google Analytics.'); } else { console.log('Sending the Google Analytics pageview event is disabled for this page.'); } // Actually track outbound links // Not sure if this is being used? var trackOutboundRegisterLink = function (url) { ga('agg.send', 'event', 'event_register', url, 'Registered for event', {'hitCallback': function () { document.location = url; } }); }; // Not sure if this is being used? var trackOutboundWebsiteLink = function (url) { // No need to manually change document.location; website opens in new tab ga('agg.send', 'event', 'event_website', url, 'Visited event site'); }; </script> <script type="module" src="/static/js/dist/googleAnalyticsHelper.bundle.js?520216211124" ></script> <script type="text/javascript"> function read_cookie(cookieName) { var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)'); var sMatch = (' '+document.cookie).match(re); if (cookieName && sMatch) return unescape(sMatch[1]); return ''; } var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; script.addEventListener('load', function(e) { // we only pass the template this context variable on newsposts let informaData = false; if (window.IIRISTracker) { var sailthru_id = read_cookie('sailthru_hid'); if (sailthru_id.length > 56) { sailthru_id = sailthru_id.slice(32,56); } var notProduction = 'False' === 'True'; var domain = 'www.utilitydive.com'.split('.')[1]; // on non-prod environment, there is specific collector domain to send the data to. var cDomain = notProduction ? 'com-informa-prod1.mini.snplow.net' : 'c.' + domain + '.com' // removed .com previous line var cfg = { config: { td: {}, snowplow: { context: {} } } }; cfg.config.idsource = 'sailthruid'; cfg.config.snowplow.appId = domain; cfg.config.snowplow.cDomain = cDomain; cfg.config.td.lob = 'it'; cfg.config.td.domain = domain; cfg.config.snowplow.contentTagEnabled = !!informaData cfg.config.snowplow.context = informaData window.IIRISTracker.initConfig(cfg); window.IIRISTracker.setTrackingUID(sailthru_id); var irisEvt = new Event('trackerLoaded'); window.dispatchEvent(irisEvt); } else { window.addEventListener('trackerLoaded', function(evt) { if(window.IIRISTracker) { window.IIRISTracker.setTrackingUID(sailthru_id); } }); } }); script.src = 'https://static.iris.informa.com/widgets/v3.0/iris-t.js'; document.getElementsByTagName('head')[0].appendChild(script); </script> <script type="text/javascript"> jQuery.browser = {}; (function () { jQuery.browser.msie = false; jQuery.browser.version = 0; if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) { jQuery.browser.msie = true; jQuery.browser.version = RegExp.$1; } })(); </script> <!-- for modal signup form --> <script type="text/javascript" src="/static/js/jquery.simplemodal.divefork.min.js?093716120922"></script> <style> /* dynamic style overrides based on DB go here*/ </style> <link rel="canonical" href="https://www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/" /> <link rel="preload" href="/static/css/dive_pressrelease_app.css?330116211124" as="style" onload="this.onload=null; this.rel='stylesheet';"> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script src="/static/js/dist/signupDataGam.bundle.js?520216211124"></script> <script type="text/javascript" src="/static/js/dist/adTemplates.bundle.js?520216211124"></script> <script> var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Build the site_logos object to be later referenced in house ads const site_logos = {}; site_logos['diveapi'] = { domain: 'diveapi', site_name: "API Site", alt_text: "API Site logo", is_current_site: false, white: { png: "None", svg: "None", }, black: { png: "None", svg: "None", } }; site_logos['agriculturedive'] = { domain: 'agriculturedive', site_name: "Agriculture Dive", alt_text: "Agriculture Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/agriculture_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/agriculture_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/agriculture_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/agriculture_black.svg", } }; site_logos['automotivedive'] = { domain: 'automotivedive', site_name: "Automotive Dive", alt_text: "Automotive Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/automotive_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/automotive_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/automotive_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/automotive_black.svg", } }; site_logos['bankingdive'] = { domain: 'bankingdive', site_name: "Banking Dive", alt_text: "Banking Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/banking_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/banking_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/banking_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/banking_black.svg", } }; site_logos['biopharmadive'] = { domain: 'biopharmadive', site_name: "BioPharma Dive", alt_text: "BioPharma Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/biopharma_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/biopharma_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/biopharma_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/biopharma_black.svg", } }; site_logos['cfo'] = { domain: 'cfo', site_name: "CFO.com", alt_text: "CFO.com logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfodotcom_white.svg", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfodotcom_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfodotcom_black.svg", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfodotcom_black.svg", } }; site_logos['cfodive'] = { domain: 'cfodive', site_name: "CFO Dive", alt_text: "CFO Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfo_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfo_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfo_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cfo_black.svg", } }; site_logos['ciodive'] = { domain: 'ciodive', site_name: "CIO Dive", alt_text: "CIO Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cio_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cio_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cio_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cio_black.svg", } }; site_logos['constructiondive'] = { domain: 'constructiondive', site_name: "Construction Dive", alt_text: "Construction Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/construction_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/construction_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/construction_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/construction_black.svg", } }; site_logos['cstoredive'] = { domain: 'cstoredive', site_name: "C-Store Dive", alt_text: "C-Store Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cstore_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cstore_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cstore_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cstore_black.svg", } }; site_logos['customerexperiencedive'] = { domain: 'customerexperiencedive', site_name: "CX Dive", alt_text: "CX Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cx_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cx_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cx_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cx_black.svg", } }; site_logos['cybersecuritydive'] = { domain: 'cybersecuritydive', site_name: "Cybersecurity Dive", alt_text: "Cybersecurity Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cybersecurity_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cybersecurity_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cybersecurity_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/cybersecurity_black.svg", } }; site_logos['educationdive'] = { domain: 'educationdive', site_name: "Education Dive", alt_text: "Education Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/education_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/education_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/education_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/education_black.svg", } }; site_logos['esgdive'] = { domain: 'esgdive', site_name: "ESG Dive", alt_text: "ESG Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/esg_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/esg_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/esg_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/esg_black.svg", } }; site_logos['facilitiesdive'] = { domain: 'facilitiesdive', site_name: "Facilities Dive", alt_text: "Facilities Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/facilities_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/facilities_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/facilities_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/facilities_black.svg", } }; site_logos['fashiondive'] = { domain: 'fashiondive', site_name: "Fashion Dive", alt_text: "Fashion Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/fashion_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/fashion_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/fashion_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/fashion_black.svg", } }; site_logos['fooddive'] = { domain: 'fooddive', site_name: "Food Dive", alt_text: "Food Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/food_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/food_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/food_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/food_black.svg", } }; site_logos['grocerydive'] = { domain: 'grocerydive', site_name: "Grocery Dive", alt_text: "Grocery Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/grocery_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/grocery_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/grocery_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/grocery_black.svg", } }; site_logos['healthcaredive'] = { domain: 'healthcaredive', site_name: "Healthcare Dive", alt_text: "Healthcare Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/healthcare_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/healthcare_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/healthcare_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/healthcare_black.svg", } }; site_logos['highereddive'] = { domain: 'highereddive', site_name: "Higher Ed Dive", alt_text: "Higher Ed Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/highered_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/highered_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/highered_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/highered_black.svg", } }; site_logos['hoteldive'] = { domain: 'hoteldive', site_name: "Hotel Dive", alt_text: "Hotel Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hotel_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hotel_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hotel_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hotel_black.svg", } }; site_logos['hrdive'] = { domain: 'hrdive', site_name: "HR Dive", alt_text: "HR Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hr_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hr_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hr_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/hr_black.svg", } }; site_logos['k12dive'] = { domain: 'k12dive', site_name: "K-12 Dive", alt_text: "K-12 Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/k12_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/k12_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/k12_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/k12_black.svg", } }; site_logos['legaldive'] = { domain: 'legaldive', site_name: "Legal Dive", alt_text: "Legal Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/legal_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/legal_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/legal_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/legal_black.svg", } }; site_logos['manufacturingdive'] = { domain: 'manufacturingdive', site_name: "Manufacturing Dive", alt_text: "Manufacturing Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/manufacturing_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/manufacturing_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/manufacturing_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/manufacturing_black.svg", } }; site_logos['marketingdive'] = { domain: 'marketingdive', site_name: "Marketing Dive", alt_text: "Marketing Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/marketing_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/marketing_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/marketing_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/marketing_black.svg", } }; site_logos['medtechdive'] = { domain: 'medtechdive', site_name: "MedTech Dive", alt_text: "MedTech Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/medtech_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/medtech_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/medtech_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/medtech_black.svg", } }; site_logos['mobilemarketer'] = { domain: 'mobilemarketer', site_name: "Mobile Marketer", alt_text: "Mobile Marketer logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/mobilemarketer_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/mobilemarketer_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/mobilemarketer_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/mobilemarketer_black.svg", } }; site_logos['multifamilydive'] = { domain: 'multifamilydive', site_name: "Multifamily Dive", alt_text: "Multifamily Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/multifamily_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/multifamily_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/multifamily_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/multifamily_black.svg", } }; site_logos['packagingdive'] = { domain: 'packagingdive', site_name: "Packaging Dive", alt_text: "Packaging Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/packaging_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/packaging_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/packaging_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/packaging_black.svg", } }; site_logos['paymentsdive'] = { domain: 'paymentsdive', site_name: "Payments Dive", alt_text: "Payments Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/payments_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/payments_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/payments_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/payments_black.svg", } }; site_logos['pharmavoice'] = { domain: 'pharmavoice', site_name: "PharmaVoice", alt_text: "PharmaVoice logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/pharmavoice_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/pharmavoice_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/pharmavoice_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/pharmavoice_black.svg", } }; site_logos['proformative'] = { domain: 'proformative', site_name: "Proformative", alt_text: "Proformative logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/proformative_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/proformative_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/proformative_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/proformative_black.svg", } }; site_logos['restaurantdive'] = { domain: 'restaurantdive', site_name: "Restaurant Dive", alt_text: "Restaurant Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/restaurant_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/restaurant_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/restaurant_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/restaurant_black.svg", } }; site_logos['retaildive'] = { domain: 'retaildive', site_name: "Retail Dive", alt_text: "Retail Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/retail_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/retail_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/retail_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/retail_black.svg", } }; site_logos['smartcitiesdive'] = { domain: 'smartcitiesdive', site_name: "Smart Cities Dive", alt_text: "Smart Cities Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smartcities_black.svg", } }; site_logos['socialmediatoday'] = { domain: 'socialmediatoday', site_name: "Social Media Today", alt_text: "Social Media Today logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smt_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smt_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smt_color.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/smt_color.svg", } }; site_logos['supplychaindive'] = { domain: 'supplychaindive', site_name: "Supply Chain Dive", alt_text: "Supply Chain Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/supplychain_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/supplychain_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/supplychain_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/supplychain_black.svg", } }; site_logos['truckingdive'] = { domain: 'truckingdive', site_name: "Trucking Dive", alt_text: "Trucking Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/trucking_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/trucking_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/trucking_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/trucking_black.svg", } }; site_logos['utilitydive'] = { domain: 'utilitydive', site_name: "Utility Dive", alt_text: "Utility Dive logo", is_current_site: true, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/utility_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/utility_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/utility_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/utility_black.svg", } }; site_logos['wastedive'] = { domain: 'wastedive', site_name: "Waste Dive", alt_text: "Waste Dive logo", is_current_site: false, white: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/waste_white.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/waste_white.svg", }, black: { png: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/waste_black.png", svg: "https://d12v9rtnomnebu.cloudfront.net/logo/publications/waste_black.svg", } }; // Get the dive domain and return the dive logo object, or null if it doesn't exist in site_logos function getDivesiteLogoObject(link_url, alt_domain='') { let dive_domain; // Split link URL on 'adurl=' and take what comes after as the ad url const ad_url = decodeURIComponent(link_url.split('adurl=')[1]); // Split on . to get an array of hostname segments const dive_domain_array = new URL(ad_url).hostname.split('.'); // Retrieve the second to last element of the hostname array, which should always be the domain dive_domain = dive_domain_array[dive_domain_array.length - 2] if (alt_domain) { // If alt_domain has been specified, normalize it. i.e. "HR Dive", "http://hrdive.com", etc. => "hrdive" // This will override the link url's domain. dive_domain = alt_domain.replace(/\s+/g, '').replace(/^(https?:\/\/)?(www\.)?|\.com.*|\?.*|#.*/gi, '').toLowerCase(); } // Return the site logos object for this domain if it exists, or null if it does not if (site_logos[dive_domain]) { return site_logos[dive_domain]; } else { // Fallback logo const url_prefix = "https://d12v9rtnomnebu.cloudfront.net/divesite/responsive_ad_assets/small_logos/"; return { domain: 'industrydive', site_name: 'Industry Dive', alt_text: 'Industry Dive logo', white: { svg: url_prefix + 'industrydive-small-white.svg', png: url_prefix + 'industrydive-small-white.png', }, black: { svg: url_prefix + 'industrydive-small-black.svg', png: url_prefix + 'industrydive-small-black.png', } } } } eventer(messageEvent, function (e) { var key = e.message ? "message" : "data"; var data = e[key]; var eventName = data.message || 'ignore'; if (eventName == 'adContentAvailable') { var $ad_element; $ad_element = $('div').filter('[data-container-ad-unit-id="' + data.adUnit + '-' + window.dfp_visibility + '"]'); $ad_element.hide() var nativeAdEditorialSelector = '.sidebar .hybrid-ad-wrapper .native-ad-editorial'; var nativeAdEditorialExists = $(nativeAdEditorialSelector).length > 0; if ( nativeAdEditorialExists ) { $(nativeAdEditorialSelector).closest('.hybrid-ad-wrapper').addClass('native-ad-editorial-sidebar-border'); } // Inline homepage ad $('.feed-item-ad .hybrid-ad-wrapper a').each(function (index, element) { window.updateGamAdUrl(element, 'inline'); }); // Editorial native ad sidebar // NOTE: must go before inline native ad to ensure correct location added $('.sidebar .native-ad.editorial a').each(function (index, element) { window.updateGamAdUrl(element, 'sidebar'); }); // Editorial native ad inline $('.native-ad.editorial a').each(function (index, element) { window.updateGamAdUrl(element, 'inline'); }); // Sidebar ad $('.sidebar .hybrid-ad-wrapper a').each(function (index, element) { window.updateGamAdUrl(element, 'sidebar'); }); } }, false); var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; googletag.cmd.push(function () { var desktopWidth = 1024; if (window.innerWidth >= desktopWidth) { window.dfp_visibility = 'desktop'; } else { window.dfp_visibility = 'mobile'; } var dfpDisplayConfiguration = { "prestitialEnabled": false, "leaderboardEnabled": true, "sidebarAdsEnabled": true, "visibility": window.dfp_visibility }; if (window.dfp_visibility == 'desktop') { if (typeof prestitialAds == 'object' && prestitialAds.pageIsPrestitialEligible()) { googletag.defineSlot('/21662595662/utilitydive/utilitydiveprestitial', [[500, 300], [640, 480]], 'paychekgoeshere').addService(googletag.pubads()); } if (dfpDisplayConfiguration.leaderboardEnabled) { googletag.defineSlot('/21662595662/utilitydive/utilitydiveleaderboard', [[970, 180], [728, 90], [970, 90]], 'dfp-leaderboard-desktop').addService(googletag.pubads()); googletag.pubads().addEventListener('slotRenderEnded', function (event) { if ((event.slot.getAdUnitPath() === '/21662595662/utilitydive/utilitydiveleaderboard' || event.slot.getAdUnitPath() === '/21662595662/utilitydive/utilitydiveleaderboard') && !event.isEmpty ) { $(window).blur(function () { if (document.activeElement === $('#dfp-leaderboard-desktop iframe')[0] || document.activeElement === $('#dfp-leaderboard-desktop iframe')[0]) { try { localStorage.setItem('leaderboard_signup_path', document.location.pathname); } catch (e) { // local storage could not be available due to privacy settings or something } } }); } }); } if (dfpDisplayConfiguration.sidebarAdsEnabled) { googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid1', [[300, 250], 'fluid', [160, 600]], 'dfp-hybrid1-desktop').addService(googletag.pubads()); } googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid2', [[300, 250], 'fluid'], 'dfp-hybrid2-desktop').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid3', [[300, 250], 'fluid'], 'dfp-hybrid3-desktop').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid4', [[300, 250], 'fluid'], 'dfp-hybrid4-desktop').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivethankyouhybrid1', ['fluid'], 'dfp-thankyouhybrid1-desktop').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivethankyouhybrid2', ['fluid'], 'dfp-thankyouhybrid2-desktop').addService(googletag.pubads()); } else { googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid1', [[300, 250], 'fluid'], 'dfp-hybrid1-mobile').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid2', [[300, 250], 'fluid'], 'dfp-hybrid2-mobile').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid3', [[300, 250], 'fluid'], 'dfp-hybrid3-mobile').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivehybrid4', [[300, 250], 'fluid'], 'dfp-hybrid4-mobile').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivethankyouhybrid1', ['fluid'], 'dfp-thankyouhybrid1-mobile').addService(googletag.pubads()); googletag.defineSlot('/21662595662/utilitydive/utilitydivethankyouhybrid2', ['fluid'], 'dfp-thankyouhybrid2-mobile').addService(googletag.pubads()); } if ((typeof divecounter !== "undefined") && (divecounter.getData().is_subscriber)) { googletag.pubads().setTargeting("is_subscriber", "yes"); } var site = window.location.host; googletag.pubads().setTargeting("site", site); var first_path = window.location.pathname.split( '/' )[1]; googletag.pubads().setTargeting("first_path", first_path); // Set ad targeting on the trendline to show the ads designated for it var isTopicPage = window.location.pathname.indexOf('/topic/') !== -1; if(isTopicPage) { googletag.pubads().setTargeting('is_topics_page', 'true'); } googletag.pubads().setCentering(true); googletag.pubads().collapseEmptyDivs(false); // Whether to collapse the slots even before the ads are fetched. googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); </script> <script>window.fallbackAds = '[{\u0022adType\u0022: \u0022editorial_native_ad\u0022, \u0022link\u0022: \u0022/trendline/grid\u002Dresiliency/84/?utm_source\u003DUD\u0026utm_medium\u003DNativeFB\u0026utm_campaign\u003DTrendlineFB\u0022, \u0022label\u0022: \u0022Trendline\u0022, \u0022image\u0022: \u0022https://imgproxy.divecdn.com/57dAC3UOL8k7gTBlts\u002Duej7iNdCWknmcZq7S4zNe0HI/g:ce/rs:fit:212:100/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy01MTE3Mzg1My5qcGc\u003D.webp\u0022, \u0022attribution\u0022: \u0022\u0022, \u0022headline\u0022: \u0022How utilities are ensuring grid resilience\u0022, \u0022ctaText\u0022: \u0022Access now\u0022, \u0022description\u0022: \u0022Utilities and grid operators are facing\u005Cu00a0increasing threats\u005Cu00a0from climate change as well as\u005Cu00a0cyber and physical attacks, and are deploying a variety of responses to meet the rising challenges.\u0022}]'</script> <script type="module" src="/static/js/dist/onBoardDiagnostics.bundle.js?520216211124" ></script> <!-- NEW RELIC SYNTHETICS CANARY --> </head> <body class="pressrelease"> <!-- Accessibility skip-nav link --> <a href="#skip-link-target" class="button button--loud skip-nav-link" tabindex="1">Skip to main content</a> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-55G8WRR" height="0" width="0" style="display:none;visibility:hidden"> </iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div id="signup-inter" class="modal_dialog" style="display:none;"> <form id="signup-inter-form" class="form-basic" name="signup-inter-form" action="/signup/" method="POST"> <input type="hidden" name="signup_box_location" value="interstitial"> <input type="hidden" name="signup_initial_url_path" value=""> <h1> Don't miss tomorrow's electric utility industry news </h1> <p class="interstitial-text"> Let Utility Dive's free newsletter keep you informed, straight from your inbox. </p> <p class="form-error__message" id="interstitial-error"></p> <div id="form-interstitial"> <input type="email" name="email" placeholder="Work email address" class="email" required id="id_bb32c9_email"> <div id="newsletter-list-section"> <ul id="id_bb32c9_site_newsletters" class="list-no-bullets"> <li><label for="id_bb32c9_site_newsletters_0"><input type="checkbox" name="site_newsletters" value="2" class="list-no-bullets" id="id_bb32c9_site_newsletters_0"> Daily Dive <span class="secondary-label">M-F</span></label> </li> <li><label for="id_bb32c9_site_newsletters_1"><input type="checkbox" name="site_newsletters" value="41" class="list-no-bullets" id="id_bb32c9_site_newsletters_1"> Storage Weekly <span class="secondary-label">Every Tuesday</span></label> </li> <li><label for="id_bb32c9_site_newsletters_2"><input type="checkbox" name="site_newsletters" value="13" class="list-no-bullets" id="id_bb32c9_site_newsletters_2"> Load Management Weekly <span class="secondary-label">Every Wednesday</span> <p class="newsletter-partner">In partnership with</p><img class="newsletter-partner" loading="lazy" src="https://imgproxy.divecdn.com/HKJu6uVJPTX-d4gNw7YugKLYlbufnSe1qe3AQsV_fzc/raw:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL3RodW1ibmFpbHMvbmV3c2xldHRlcl9saXN0cy9QTE1BX2xvZ28ucG5n"></label> </li> <li><label for="id_bb32c9_site_newsletters_3"><input type="checkbox" name="site_newsletters" value="25" class="list-no-bullets" id="id_bb32c9_site_newsletters_3"> Renewable Energy Weekly <span class="secondary-label">Every Thursday</span> <p class="newsletter-partner">In partnership with</p><img class="newsletter-partner" loading="lazy" src="https://imgproxy.divecdn.com/1hVbXLb-Spzm3NFCLfhzZiKL8f7i8_ELUv7ZmwPTSYc/raw:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL3RodW1ibmFpbHMvbmV3c2xldHRlcl9saXN0cy9zZXBhX2xvZ28uanBn"></label> </li> </ul> </div> <div id="interstitial-consent-container"> <input name="user_consent" value="1" id="id_user_consent" type="checkbox"> <span> By signing up to receive our newsletter, you agree to our <a href="https://www.industrydive.com/terms-of-use/" target="_blank">Terms of Use</a> and <a href="https://www.industrydive.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime. </span> </div> </div> <input id="signup-inter-submit" class="email_submit submit button" type="submit" data-role="none" value="Subscribe today"> </form> </div> <!-- leaderboard --> <div class="leaderboard-wrap"> <div class="hide-small show-large"> <div data-container-ad-unit-id="/21662595662/utilitydive/utilitydiveleaderboard-desktop"></div> <div id='dfp-leaderboard-desktop' style="min-height: 90px"> <script> waitToLoadAds.push(function() { googletag.cmd.push(function() { if (window.dfp_visibility == 'desktop') { googletag.display('dfp-leaderboard-desktop'); } }) }); </script> </div> </div> </div> <div class="page-container"> <header role="banner"> <nav id="top" class="site-menu" aria-label="Site menu"> <div class="site-menu-inner"> <!-- logo --> <div class="pub-logo-wrapper"> <a href="/" class="analytics t-dash-navigation"> <img class="pub-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/publications/utility_black.svg" alt="Utility Dive" height="28"> </a> </div> <!-- desktop menu, not visible on mobile/tablet --> <div class="menu-content-wrapper"> <ul class="desktop-menu-main"> <li> <a href="/deep-dive/" class="nav-menu-item analytics t-deepdive-navigation">Deep Dive</a> </li> <li> <a href="/opinion/" class="nav-menu-item analytics t-opinion-navigation">Opinion</a> </li> <li> <a href="/library/" class="nav-menu-item analytics t-library-navigation">Library</a> </li> <li> <a href="/events/" class="nav-menu-item analytics t-events-navigation">Events</a> </li> <li> <a href="/press-release/" class="nav-menu-item analytics t-press-releases-navigation">Press Releases</a> </li> <li class="topics top-nav-dropdown-item"> <button class="nav-menu-item topics-dropdown-item"> Topics <span class="dropdown-toggle-arrow"></span> </button> </li> </ul> <!-- mobile menu toggle icon, not visible on desktop --> <a href="/signup/?signup_location=header" class="nav-menu-item nav-signup-button mobile-nav-signup-button analytics t-signup-navigation button"> Sign up </a> <button class="mobile-menu-toggle"> <img src="/static/img/menu_icons/menu.svg?273117231121" alt="menu" loading="lazy"> </button> <!-- newsletter and search, only shown on desktop --> <ul class="desktop-menu-sub list-no-bullets"> <li> <button class="search-toggle search-button-front analytics t-search-navigation-top"> <img src="/static/img/menu_icons/search.svg?320116291121" alt="search" width="16" height="16" loading="lazy"> <span class="sub-link">Search</span> </button> </li> <li> <a href="/signup/?signup_location=header" class="nav-menu-item nav-signup-button desktop-nav-signup-button analytics t-signup-navigation button"> <img src="/static/img/email_icons/mail.svg?273117231121" width="16" height="11" loading="lazy" alt=""> Sign up </a> </li> </ul> </div> </div> </nav> </header> <div class="menu-search js-search-hide"> <div class="menu-search-inner-wrapper row"> <form action="/search/" method="GET" data-ajax="false"> <label for="search-desktop"> <span class="screen-reader-text search">Search</span> </label> <input id="search-desktop" type="search" name="q" placeholder="Search" data-role="none"> <button type="submit" value="" data-role="none" class="search-button-front analytics t-search-navigation-drawer"> <img src="/static/img/menu_icons/search.svg?320116291121" alt="search" height="16" width="16" loading="lazy"> </button> <img class="close" src="/static/img/menu_icons/close.svg?273117231121" width="16" height="16" alt="close search" loading="lazy"> </form> </div> </div> <nav class="topics menu-bar" aria-label="Menu bar"> <ul class="list-no-bullets"> <li> <a class="analytics t-topic-navigation-Generation" href="/topic/Generation/">Generation</a> </li> <li> <a class="analytics t-topic-navigation-transmission-distribution" href="/topic/transmission-distribution/">T&amp;D</a> </li> <li> <a class="analytics t-topic-navigation-grid-security-reliability" href="/topic/grid-security-reliability/">Grid Reliability</a> </li> <li> <a class="analytics t-topic-navigation-building-transportation-electrification" href="/topic/building-transportation-electrification/">Electrification</a> </li> <li> <a class="analytics t-topic-navigation-demand-response" href="/topic/demand-response/">Load Management</a> </li> <li> <a class="analytics t-topic-navigation-solar" href="/topic/solar/">Renewables</a> </li> <li> <a class="analytics t-topic-navigation-storage" href="/topic/storage/">Storage</a> </li> <li> <a class="analytics t-topic-navigation-distributed-energy" href="/topic/distributed-energy/">DER</a> </li> <li> <a class="analytics t-topic-navigation-policy" href="/topic/policy/">Regs</a> </li> <li> <a class="analytics t-topic-navigation-market-news" href="/topic/market-news/">Corp News</a> </li> </ul> </nav> <script type="module" src="/static/js/dist/navSignupHelper.bundle.js?520216211124" ></script> <script> window.siteName = 'Utility Dive'; </script> <div class="search-overlay"></div> <div class="page-wrapper"> <div class="page-inner-wrapper" id="skip-link-target"> <script src="/static/js/jquery.ui.widget.js" type="text/javascript"></script> <script src="/static/js/jquery.iframe-transport.js" type="text/javascript"></script> <script src="/static/js/jquery.fileupload.js" type="text/javascript"></script> <script src="/static/js/jquery.cloudinary.js" type="text/javascript"></script> <script type='text/javascript'> $.cloudinary.config({"api_key": "516981353162248", "cloud_name": "dmgi9movl"}); </script> <section class="pressrelease-written-content "> <div class="header"> <div class="header__background-top"></div> <div class="row"> <div class="header__back-link"> <a href="/press-release/">&larr; Press Releases</a> <div class="clear-fix"></div> </div> <div class="header__wrapper"> <div class="header__wrapper__background-middle"></div> <div class="large-2 medium-2 large-push-9 medium-push-9 columns"> <div class="header__wrapper__company-logo show-medium"> <img alt="Torus logo" class="cld-responsive" data-src="https://res.cloudinary.com/dmgi9movl/image/upload/dpr_auto,w_auto/v1729771836/press_release/assets/company_logos/Torus_Logo_u4oaie.png"/> </div> </div> <div class="large-offset-1 medium-offset-1 large-9 medium-9 large-pull-3 medium-pull-3 columns"> <h1 class="heading-02 header__wrapper__title">Torus Unveils Integrated Energy Storage and AI-Driven Cybersecurity Solutions</h1> <h2 class="header__wrapper__subheader">The new product lineup tackles the growing concerns of grid instability and cyber threats in the energy sector.</h2> <div class="header__wrapper__secondary-label"> PRESS RELEASE FROM <a href="https://www.torus.co">TORUS</a> </div> </div> </div> </div> </div> <div class="background-bottom"></div> <article class="content"> <div class="row"> <div class="large-4 medium-4 columns"> <div class="content__publish-date">October 24, 2024</div> <div class="content__contacts-divider"></div> <ul class="social-icon-list"> <li> <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=https%3A//www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/&amp;title=Torus%20Unveils%20Integrated%20Energy%20Storage%20and%20AI-Driven%20Cybersecurity%20Solutions" aria-label="Share article to Linkedin" class="social-icon"> <img src="/static/img/social_icons/article_page/linkedin.svg?092716141024" alt="Post to LinkedIn"> <span class="social-icon__text">post</span> </a> </li> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A//www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/" aria-label="Share article to Facebook" class="social-icon"> <img src="/static/img/social_icons/article_page/facebook.svg?440116200824" alt="Share on Facebook"> <span class="social-icon__text">share</span> </a> </li> <li> <a href="https://twitter.com/intent/tweet?text=Torus%20Unveils%20Integrated%20Energy%20Storage%20and%20AI-Driven%20Cybersecurity%20Solutions%20https%3A//www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/%20via%20@UtilityDive" aria-label="Share article to X/Twitter" class="social-icon"> <img src="/static/img/social_icons/article_page/x.svg?092716141024" alt="Post on X"> <span class="social-icon__text">post</span> </a> </li> <li> <a href="javascript:window.print()" aria-label="Print article" class="social-icon js-social-icon-print"> <img src="/static/img/social_icons/article_page/print.svg?440116200824" alt="Print this page"> <span class="social-icon__text">print</span> </a> </li> <li> <a href="/cdn-cgi/l/email-protection#ba85e9cfd8d0dfd9ce87eed5c8cfc99f888aefd4ccdfd3d6c99f888af3d4cedfddc8dbcedfde9f888affd4dfc8ddc39f888ae9ced5c8dbdddf9f888adbd4de9f888afbf397fec8d3ccdfd49f888af9c3d8dfc8c9dfd9cfc8d3cec39f888ae9d5d6cfced3d5d4c99cdbd7ca81f8d5dec387d2cececac99f89fb9595cdcdcd94cfced3d6d3cec3ded3ccdf94d9d5d795cac8dfc9c997c8dfd6dfdbc9df95888a888e8b8a888e97ced5c8cfc997cfd4ccdfd3d6c997d3d4cedfddc8dbcedfde97dfd4dfc8ddc397c9ced5c8dbdddf97dbd4de97dbd397dec8d3ccdfd497d9c3d8dfc8c9dfd9cfc8d3cec397c9d5d6cfced3d595" aria-label="Share article with email" class="social-icon"> <img src="/static/img/social_icons/article_page/email.svg?092716141024" alt="Email this page"> <span class="social-icon__text">email</span> </a> </li> </ul> <div class="content__contacts-header">Press Contacts</div> <div class="content__contacts-wrapper"> <div class="content__contacts-wrapper__contact"> <div class="content__contacts-wrapper__contact__name">Lexie Gardiner</div> <div class="content__contacts-wrapper__contact__email"><a href="/cdn-cgi/l/email-protection#14607b66616754777567607166777b79793a777b79"><span class="__cf_email__" data-cfemail="aadec5d8dfd9eac9cbd9decfd8c9c5c7c784c9c5c7">[email&#160;protected]</span></a></div> <div class="content__contacts-wrapper__contact__phone"></div> </div> </div> </div> <div class="large-7 medium-8 end columns"> <div class="content__image__wrapper"> <img alt="{{press_release.company_name}} header image" class="cld-responsive content__image" data-src="https://res.cloudinary.com/dmgi9movl/image/upload/dpr_auto,w_auto/v1729771836/press_release/assets/header_images/1718997098-torus_fess-bess_olnenh.png"/> </div> <div class="content__text"> <span class="content__text__location"><strong>SOUTH SALT LAKE, Utah — </strong></span><p>Torus, a leader in advanced energy storage and management, today unveiled a suite of innovative commercial solutions designed to revolutionize grid stability, enhance cybersecurity, and address critical national security challenges at the&nbsp;<a href="https://www.zerogravitysummit.com">47G Zero Gravity Summit</a> in Salt Lake City, Utah. The new product lineup tackles the growing concerns of grid instability and cyber threats in the energy sector, with&nbsp;<a href="https://www.reuters.com/technology/cybersecurity/cyberattacks-us-utilities-surged-70-this-year-says-check-point-2024-09-11/">recent studies</a> showing that&nbsp;cyberattacks on energy infrastructure have nearly doubled over the past year.</p> <p>&quot;Our new product lineup answers urgent and complex energy challenges faced by utilities, businesses, and government entities,&quot; said Nate Walkingshaw, co-founder and CEO of Torus. &quot;We&#39;re not just offering products; we&#39;re providing vertically integrated solutions that enhance reliability, safety, and security in an increasingly volatile energy landscape.&quot;</p> <p>By designing, engineering, and manufacturing products in the United States, Torus directly addresses critical national security concerns. This approach ensures that vital energy technologies remain under domestic control, reducing vulnerabilities in the supply chain and reinforcing the integrity of America&#39;s energy infrastructure.&nbsp;</p> <p>The groundbreaking Torus commercial product lineup includes:</p> <ol> <li><strong>Torus Nova Spin&trade;:&nbsp;</strong>An advanced Flywheel Energy Storage System (FESS) offering rapid response capabilities for grid stability and backup power, with twice the lifespan of traditional batteries and a response time of less than 250 milliseconds.</li> <li><strong>Torus Nova Pulse&trade;:&nbsp;</strong>A state-of-the-art Battery Energy Storage System (BESS) designed for long-duration energy storage and grid support, scalable from four to eight-hour charge and discharge capabilities.</li> <li><strong>Torus Nova Shield&trade;:</strong> A robust energy security appliance specifically engineered to protect energy infrastructure from emerging threats, utilizing AI-driven threat detection.</li> <li><strong>Torus Overwatch&trade;:&nbsp;</strong>A comprehensive cybersecurity and Operations &amp; Maintenance (O&amp;M) platform that ensures the safety, security, and optimal performance of energy assets through multi-layered security measures and predictive maintenance.</li> <li><strong>Torus Lasso&trade;:&nbsp;</strong>Energy asset management software that maximizes efficiency and performance across diverse energy portfolios, potentially reducing operational costs by up to 30%.</li> </ol> <p>Torus&#39;s solutions address critical needs across various sectors:</p> <ul> <li><strong>Utilities:</strong> Reduce grid congestion, maintain frequency and voltage stability, and expand capacity with energy storage integration</li> <li><strong>Data Centers:&nbsp;</strong>Bring new facilities online with integrated energy generation, storage, management, maintenance, and security solutions</li> <li><strong>Commercial &amp; Industrial Buildings:&nbsp;</strong>Lower operating costs by 30%, provide emergency backup, and reduce GHG emissions by up to 90%</li> <li><strong>Defense &amp; Government:&nbsp;</strong>Power facilities with secure, reliable microgrid solutions, capable of operating independently from the utility grid</li> <li><strong>Residential Communities:</strong> Provide every home in your community with reliable, affordable, green power</li> </ul> <p>&quot;The Zero Gravity Summit is the perfect platform to showcase how Torus is tackling energy challenges that directly impact national resilience and security,&quot; added Walkingshaw. &quot;As geopolitical tensions rise and climate challenges intensify, the need for robust, secure energy solutions has never been more critical.&quot;</p> <p>Looking ahead, Torus plans to expand its research into next-generation energy storage technologies and further enhance its AI-driven cybersecurity capabilities. The company aims to play a pivotal role in shaping a more resilient and sustainable global energy ecosystem.</p> <p>Torus invites all Zero Gravity Summit attendees to connect with the Torus team for live demonstrations of their new product lineup. Visitors will have the opportunity to experience firsthand how Torus&#39;s integrated solutions can transform their energy infrastructure, improve operational efficiency, and strengthen cybersecurity defenses.</p> <p>###</p> <p><strong>About the 47G and the Zero Gravity Summit:&nbsp;</strong>At 47G, our mission is to make Utah the nation&rsquo;s premier ecosystem for aerospace and defense companies. We bring together academic institutions, service providers, government, and community partners to foster talent, fund entrepreneurship, and fuel innovation in Utah, America&rsquo;s deep tech frontier. The Zero Gravity Summit is a global gathering of leaders in national security and frontier technology. Held on October 24, 2024, in Salt Lake City, Utah, the event highlights critical issues at the intersection of energy, national security, and cybersecurity.</p> <p>For more information visit <a href="https://www.47g.org/">https://www.47g.org/</a> and <a href="https://www.zerogravitysummit.com">https://www.zerogravitysummit.com</a></p> </div> <div class="content__company-boilerplate"> <div class="content__company-boilerplate__hash">###</div> <div class="content__company-boilerplate__header">About</div> <div class="content__company-boilerplate__text"><p><strong>About Torus:&nbsp;</strong>Founded in 2021, Torus is a Utah-based energy solutions company dedicated to making energy storage and management more efficient, affordable, and sustainable. With a focus on American manufacturing and innovation, Torus designs, engineers, and manufactures its products in the U.S., empowering communities to achieve energy independence and resilience.</p> <p>For more information about Torus, please visit www.torus.co. For media inquiries, contact: <a href="/cdn-cgi/l/email-protection#9fefedfaececdfebf0edeaecb1fcf0"><span class="__cf_email__" data-cfemail="63131106101023170c1116104d000c">[email&#160;protected]</span></a>.</p></div> </div> <div class="content__divider"></div> <ul class="social-button-list"> <li> <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=https%3A//www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/&amp;title=Torus%20Unveils%20Integrated%20Energy%20Storage%20and%20AI-Driven%20Cybersecurity%20Solutions" class="social-button" title="Post"> <img src="/static/img/social_icons/article_page/linkedin.svg?092716141024" alt="Post to LinkedIn"> </a> </li> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A//www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/" class="social-button" title="Share"> <img src="/static/img/social_icons/article_page/facebook.svg?440116200824" alt="Share on Facebook"> </a> </li> <li> <a href="https://twitter.com/intent/tweet?text=Torus%20Unveils%20Integrated%20Energy%20Storage%20and%20AI-Driven%20Cybersecurity%20Solutions%20https%3A//www.utilitydive.com/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/%20via%20@UtilityDive" class="social-button" title="Post"> <img src="/static/img/social_icons/article_page/x.svg?092716141024" alt="Post to X"> </a> </li> <li> <a href="javascript:window.print()" class="social-button js-social-button-print" title="Print"> <img src="/static/img/social_icons/article_page/print.svg?440116200824" alt="Print this page"> </a> </li> <li> <a href="/cdn-cgi/l/email-protection#93acc0e6f1f9f6f0e7aec7fce1e6e0b6a1a3c6fde5f6faffe0b6a1a3dafde7f6f4e1f2e7f6f7b6a1a3d6fdf6e1f4eab6a1a3c0e7fce1f2f4f6b6a1a3f2fdf7b6a1a3d2dabed7e1fae5f6fdb6a1a3d0eaf1f6e1e0f6f0e6e1fae7eab6a1a3c0fcffe6e7fafcfde0b5f2fee3a8d1fcf7eaaefbe7e7e3e0b6a0d2bcbce4e4e4bde6e7fafffae7eaf7fae5f6bdf0fcfebce3e1f6e0e0bee1f6fff6f2e0f6bca1a3a1a7a2a3a1a7bee7fce1e6e0bee6fde5f6faffe0befafde7f6f4e1f2e7f6f7bef6fdf6e1f4eabee0e7fce1f2f4f6bef2fdf7bef2fabef7e1fae5f6fdbef0eaf1f6e1e0f6f0e6e1fae7eabee0fcffe6e7fafcbc" class="social-button" title="Email"> <img src="/static/img/social_icons/article_page/email.svg?092716141024" alt="Email this page"> </a> </li> </ul> </div> </div> </article> </section> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script> // The following sets up responsive breakpoints for serving Cloudinary images. // 101 and 202 correspond to the company logo sizes, 400 and 800 correspond to the header image sizes. // The dpr='auto' setting on individual image placements will double any of the above sizes on hidpi screens. // The more breakpoints we serve, the more Cloudinary transformations we will have to pay for, so add with caution. $.cloudinary.config({ cloud_name: '', breakpoints: [101, 202, 400, 800] }); $.cloudinary.responsive(); </script> </div> <!-- ends page-inner-wrapper --> <section class="pre-footer"> </section> <hr class="footer-hr"> <footer> <div class="custom-article-footer"> <div class="row columns"> <div class="footer-grid"> <div class="footer-links"> <a href="https://www.industrydive.com"> <img class="pub-logo-footer" src="https://d12v9rtnomnebu.cloudfront.net/logo/corporate/ID_black.svg" alt="Industry Dive Logo" height="28" loading="lazy"/> </a> <ul class="social-icon-list social-icon-list__footer"> <li> <a href="https://www.linkedin.com/company/utility-dive-energy-and-utility-news" aria-label="Industry Dive LinkedIn" class="social-icon-footer analytics t-sitefooter-linkedin"> <img src="/static/img/social_icons/article_page/linkedin.svg?092716141024"> </a> </li> <li> <a href="https://www.facebook.com/utilitydive/" aria-label="Industry Dive Facebook" class="social-icon-footer analytics t-sitefooter-facebook"> <img src="/static/img/social_icons/article_page/facebook.svg?440116200824"> </a> </li> <li> <a href="https://twitter.com/UtilityDive" aria-label="Industry Dive X/Twitter" class="social-icon-footer analytics t-sitefooter-twitter"> <img src="/static/img/social_icons/article_page/x.svg?092716141024"> </a> </li> <li> <a href="https://www.utilitydive.com/feeds/news/" aria-label="Industry Dive RSS feed" class="social-icon-footer analytics t-sitefooter-rss"> <img src="/static/img/social_icons/article_page/rss.svg?440116200824"> </a> </li> </ul> </div> <div class="link-wrapper"> <div class="footer-links"> <h4 class="uppercase-heading-01">Explore</h4> <ul class="list-no-bullets"> <li> <a href="/about/" class="analytics t-about-sitefooter">About</a> </li> <li> <a href="/editors/" class="analytics t-editors-sitefooter">Editorial Team</a> </li> <li> <a href="/contact/" class="analytics t-feedback-sitefooter">Contact Us</a> </li> <li> <a href="/signup/?signup_location=footer-list&amp;signup_path=/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/" class="analytics t-signup-sitefooter">Newsletter</a> </li> <li> <a href="/selfservice/article-licensing/submit/" class="analytics t-licensing-sitefooter">Purchase Licensing Rights</a> </li> <li> <a class="analytics t-pr-sitefooter-all" href="/press-release/">Press Releases</a> </li> <li> <a href="/what-we-are-reading/" class="analytics t-wwr-sitefooter">What We're Reading</a> </li> </ul> </div> <div class="second-column"> <div class="footer-links"> <h4 class="uppercase-heading-01">Reach our audience</h4> <ul class="list-no-bullets"> <li> <a href="/advertise/" class="analytics t-advertising-sitefooter">Advertising</a> </li> <li> <a class="analytics t-pr-sitefooter-all" href="/press-release/get-started/">Post a press release</a> </li> <li> <a class="analytics t-pr-sitefooter-all" href="/opinion/">Submit an opinion piece</a> </li> <li> <a class="analytics t-events-sitefooter-start" href="/selfservice/event-listings/contact">Promote an event</a> </li> </ul> </div> <div class="footer-links"> <h4 class="uppercase-heading-01">Related Publications</h4> <ul class="list-no-bullets"> <li> <a href="https://www.smartcitiesdive.com/" class="analytics t-sitefooter-related-smart-cities-dive">Smart Cities Dive</a> </li> <li> <a href="https://www.wastedive.com/" class="analytics t-sitefooter-related-waste-dive">Waste Dive</a> </li> </ul> </div> </div> </div> </div> </div> </div> </footer> <hr class="footer-hr"> <div class="baseline-footer-wrapper"> <div class="informa-brand"> <!--?xml version="1.0" encoding="UTF-8"?--> <svg id="SVGRoot" width="500" height="162" version="1.1" viewBox="0 0 500 162" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <linearGradient id="linearGradient20775" x1="-24.025" x2="19.204" y1="-161.85" y2="-207.91" gradientTransform="matrix(1.4283 0 0 1.4283 268.58 476.51)" gradientUnits="userSpaceOnUse"> <stop stop-color="#061d41" offset="0"></stop> <stop stop-color="#061d42" stop-opacity=".6549" offset=".232"></stop> <stop stop-color="#051d40" stop-opacity=".56078" offset=".41621"></stop> <stop stop-color="#061c40" stop-opacity=".49804" offset=".61283"></stop> <stop stop-color="#061c40" stop-opacity=".35686" offset=".73858"></stop> <stop stop-color="#051f3e" stop-opacity=".19216" offset=".84133"></stop> <stop stop-color="#002449" stop-opacity=".054902" offset=".92525"></stop> <stop stop-color="#002449" stop-opacity=".054902" offset="1"></stop> </linearGradient> <linearGradient id="linearGradient20795" x1="-4.8824" x2="58.082" y1="-141.2" y2="-141.2" gradientTransform="matrix(1.4283 0 0 1.4283 268.6 476.54)" gradientUnits="userSpaceOnUse"> <stop stop-color="#061d41" offset="0"></stop> <stop stop-color="#223358" stop-opacity=".85098" offset=".098161"></stop> <stop stop-color="#3b486e" stop-opacity=".55686" offset=".18261"></stop> <stop stop-color="#535d82" stop-opacity=".4" offset=".26261"></stop> <stop stop-color="#656e8e" stop-opacity=".31765" offset=".33879"></stop> <stop stop-color="#77819f" stop-opacity=".21569" offset=".40636"></stop> <stop stop-color="#79809f" stop-opacity=".26275" offset=".46157"></stop> <stop stop-color="#495478" stop-opacity=".54902" offset=".5371"></stop> <stop stop-color="#26365c" stop-opacity=".66667" offset=".6699"></stop> <stop stop-color="#26375b" stop-opacity=".76863" offset=".80174"></stop> <stop stop-color="#13264b" stop-opacity=".9098" offset=".88553"></stop> <stop stop-color="#061d41" offset="1"></stop> </linearGradient> <linearGradient id="linearGradient20785" x1="10.56" x2="51.569" y1="-165.47" y2="-148.21" gradientTransform="matrix(1.4283 0 0 1.4283 268.58 476.51)" gradientUnits="userSpaceOnUse"> <stop stop-color="#061d41" offset="0"></stop> <stop stop-color="#061d42" stop-opacity=".6549" offset=".1618"></stop> <stop stop-color="#051d40" stop-opacity=".56078" offset=".34338"></stop> <stop stop-color="#061c40" stop-opacity=".49804" offset=".54217"></stop> <stop stop-color="#061c40" stop-opacity=".35686" offset=".66063"></stop> <stop stop-color="#051f3e" stop-opacity=".19216" offset=".78691"></stop> <stop stop-color="#002449" stop-opacity=".054902" offset=".89046"></stop> <stop stop-color="#002449" stop-opacity=".054902" offset="1"></stop> </linearGradient> </defs> <metadata> <rdf:rdf> <cc:work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type> <dc:title></dc:title> </cc:work> </rdf:rdf> </metadata> <g transform="translate(-226.26 -174.1)"> <g fill="#061d41"> <path d="m433.38 241.62c-3.5038 0-6.3829-2.822-6.3829-6.3791s2.8792-6.3829 6.3829-6.3829 6.3791 2.8258 6.3791 6.3829-2.8754 6.3791-6.3791 6.3791m5.9945 50.686h-11.951v-46.269h11.951z"> </path> <path d="m477.3 292.31v-27.958c0-5.0614-0.5408-10.485-6.7371-10.485-3.4162 0-7.9101 1.4662-10.968 3.2143v35.228h-11.947v-46.265h11.947v4.6044c4.1398-3.0353 10.694-6.0706 15.816-6.0706 9.6163 0 13.836 7.1675 13.836 16.281v31.45z"> </path> <path d="m601.54 254.52c-3.5152 0.35038-7.2893 2.3003-10.344 4.0446v33.743h-11.951v-46.261h11.951v5.507c4.1321-3.0353 10.69-5.507 15.813-5.507v8.687s-2.9782-0.46083-5.4689-0.21328"> </path> <path d="m549.89 293.5c-15.276 0-23.452-9.4754-23.452-24.835 0-15.542 8.1767-24.096 23.452-24.096 14.822 0 23.452 9.0146 23.452 24.096 0 15.451-8.0853 24.835-23.452 24.835m0-40.655c-8.7175 0-11.593 8.4661-11.593 16.003 0 7.5445 2.6088 16.925 11.593 16.925 9.0793 0 11.68-9.2887 11.68-16.925 0-7.5369-2.963-16.003-11.68-16.003"> </path> <path d="m669.05 292.31v-27.958c0-5.1528-1.0816-10.485-7.1903-10.485-3.142 0-6.6457 1.4662-9.3421 3.2143 0.27039 1.1997 0.35799 2.4869 0.35799 3.778v31.45h-11.947v-27.958c0-5.0614-0.62838-10.485-6.8285-10.485-3.0582 0-6.8323 1.4662-9.3497 3.2143v35.228h-11.951v-46.265h11.951v4.6044c3.778-3.0353 9.9819-6.0706 14.735-6.0706 5.1262 0 9.1669 2.1099 11.505 6.8971 4.3149-2.9439 10.964-6.8971 16.174-6.8971 9.7039 0 13.836 7.1675 13.836 16.281v31.45z"> </path> <path d="m715.48 285.5c-3.2334 4.5054-9.2545 8.0015-14.735 8.0015-7.4569 0-13.84-5.0614-13.84-13.059 0-15.085 16.353-16.829 27.767-17.29v-2.7611c0-5.2404-4.2236-7.9063-9.0755-7.9063-4.4901 0-9.3421 0.63981-13.661 2.1137v-5.149c4.8557-3.0391 10.336-4.8748 16.087-4.8748 8.9841 0 18.239 3.9531 18.239 14.533v33.198h-10.782zm-16.982-6.8018c0 4.1398 2.6088 7.0761 6.6495 7.0761 5.0309 0 9.5249-4.3188 9.5249-9.563v-6.6228c-5.3013 0.28182-16.174 2.2089-16.174 9.1098"> </path> <path d="m520.32 236.2c1.5043 0 3.0658 0.14472 4.5815 0.36942v-5.2975c-2.9744-1.5538-6.2572-2.525-9.6125-2.525-10.606 0-15.001 7.3579-15.001 17.294h-5.5146v8.0548h5.5146l0.0876 38.206h12.035v-38.206h12.492v-8.0548h-12.579c0-5.8878 1.3482-9.841 7.9977-9.841"> </path> </g> <g fill="#061d41" fill-rule="evenodd" shape-rendering="auto"> <path d="m381.26 248.68c-2.4473 5.7e-4 -4.5519 1.4664-5.4845 3.568-0.38853 1.002-0.5029 1.8671-0.50214 2.798 1e-3 1.4426-0.0436 2.876-0.13391 4.2961-2.2793 35.836-31.958 64.081-68.38 64.081-37.915 0-68.523-30.608-68.523-68.523 0-1.6651 0.0792-3.3112 0.19528-4.9461h-12.007c-0.0999 1.6378-0.16738 3.2836-0.16738 4.9461 1e-5 44.387 36.114 80.499 80.501 80.499 42.933 0 78.125-33.783 80.384-76.164 0.0765-1.4352 0.0818-2.8815 0.11438-4.3352 0.0166-0.73955-0.17802-1.5025-0.30408-2.1229-0.79532-2.3817-3.0446-4.0986-5.6937-4.098z" color="#000000" color-rendering="auto" image-rendering="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"> </path> <path d="m306.7 197.44c-0.88702-4.9e-4 -1.7724 0.34162-2.4884 0.59142-1.6476 0.85112-2.766 2.5696-2.7646 4.536 1e-3 1.7596 0.89642 3.3156 2.2624 4.2319 1.0349 0.56984 1.9875 0.91995 2.9905 0.92338 26.184 0.0893 47.302 21.117 47.302 47.302 0 1.5398-0.073 3.0621-0.21587 4.5636l10.251 0.79182c0.16357-1.7636 0.2472-3.5499 0.2472-5.3554 0-31.742-25.842-57.567-57.584-57.584zm-52.471 52.105c-2.4386-6.7e-4 -4.4709 1.6825-4.9851 3.9669-0.12083 0.53679-0.12789 1.0361-0.12832 1.512-5e-3 5.2759 0.70622 10.388 2.0408 15.246l10.155-1.9255c-1.2353-4.2224-1.9022-8.692-1.9127-13.32-2e-3 -0.69049-0.14382-1.4219-0.33476-2.042-0.62601-2.033-2.5892-3.4362-4.8345-3.4369z" color="#000000" color-rendering="auto" image-rendering="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"> </path> <path d="m281.67 229.68c-6.5492 6.4699-10.616 15.447-10.616 25.347 0 7.0626 2.0718 13.653 5.6379 19.198l0.86758 1.2693c0.8646 1.2649 2.0641 2.1192 3.5457 2.1201 2.2281 1e-3 4.0346-1.8058 4.0339-4.0338-3.7e-4 -1.0655-0.50216-2.016-1.1744-2.8427-0.5747-0.70663-1.0534-1.5768-1.512-2.4103-2.1674-3.9394-3.4006-8.4678-3.4006-13.301 0-7.7048 3.1245-14.644 8.1787-19.64z" color="#000000" color-rendering="auto" image-rendering="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"> </path> </g> <g fill="#071b40" fill-opacity=".29804" fill-rule="evenodd"> <g stroke-width="1.3525"> <path d="m291.86 206.48a5.1041 5.1041 0 0 1 -5.1041 5.1041 5.1041 5.1041 0 0 1 -5.1041 -5.1041 5.1041 5.1041 0 0 1 5.1041 -5.1041 5.1041 5.1041 0 0 1 5.1041 5.1041z"> </path> <path d="m274.75 217.8a5.1041 5.1041 0 0 1 -5.1041 5.1041 5.1041 5.1041 0 0 1 -5.1041 -5.1041 5.1041 5.1041 0 0 1 5.1041 -5.1041 5.1041 5.1041 0 0 1 5.1041 5.1041z"> </path> <path d="m263.36 234.81a5.1041 5.1041 0 0 1 -5.1041 5.1041 5.1041 5.1041 0 0 1 -5.1041 -5.1041 5.1041 5.1041 0 0 1 5.1041 -5.1041 5.1041 5.1041 0 0 1 5.1041 5.1041z"> </path> </g> <g stroke-width="1.0687"> <path d="m320.64 285.07a4.0328 4.0328 0 0 1 -4.0328 4.0328 4.0328 4.0328 0 0 1 -4.0328 -4.0328 4.0328 4.0328 0 0 1 4.0328 -4.0328 4.0328 4.0328 0 0 1 4.0328 4.0328z"> </path> <path d="m301.02 285.09a4.0328 4.0328 0 0 1 -4.0328 4.0328 4.0328 4.0328 0 0 1 -4.0328 -4.0328 4.0328 4.0328 0 0 1 4.0328 -4.0328 4.0328 4.0328 0 0 1 4.0328 4.0328z"> </path> <path d="m336.5 273.53a4.0328 4.0328 0 0 1 -4.0328 4.0328 4.0328 4.0328 0 0 1 -4.0328 -4.0328 4.0328 4.0328 0 0 1 4.0328 -4.0328 4.0328 4.0328 0 0 1 4.0328 4.0328z"> </path> </g> <g stroke-width="1.5897"> <path d="m312.8 180.37a5.9989 5.9989 0 0 1 -5.9989 5.9989 5.9989 5.9989 0 0 1 -5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 5.9989z"> </path> <path d="m332.03 182.94a5.9989 5.9989 0 0 1 -5.9989 5.9989 5.9989 5.9989 0 0 1 -5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 5.9989z"> </path> <path d="m350.06 190.37a5.9989 5.9989 0 0 1 -5.9989 5.9989 5.9989 5.9989 0 0 1 -5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 5.9989z"> </path> <path d="m365.49 202.19a5.9989 5.9989 0 0 1 -5.9989 5.9989 5.9989 5.9989 0 0 1 -5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 5.9989z"> </path> <path d="m377.25 217.59a5.9989 5.9989 0 0 1 -5.9989 5.9989 5.9989 5.9989 0 0 1 -5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 5.9989z"> </path> <path d="m384.78 235.81a5.9989 5.9989 0 0 1 -5.9989 5.9989 5.9989 5.9989 0 0 1 -5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 -5.9989 5.9989 5.9989 0 0 1 5.9989 5.9989z"> </path> </g> </g> <g fill-rule="evenodd" shape-rendering="auto"> <path d="m295.46 175.21c-39.056 5.5116-69.203 39.138-69.203 79.69h11.979c0-34.643 25.557-63.171 58.89-67.839z" color="#000000" color-rendering="auto" fill="url(#linearGradient20775)" image-rendering="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"> </path> <path d="m354.02 255.05c0 26.184-21.117 47.302-47.302 47.302-22.44 0-41.114-15.509-46.034-36.426l-10.01 2.4168c6.0075 25.359 28.875 44.292 56.044 44.292 31.742 0 57.584-25.842 57.584-57.584z" color="#000000" color-rendering="auto" fill="url(#linearGradient20795)" image-rendering="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"> </path> <path d="m306.7 219.37c-10.191 0-19.404 4.3099-25.911 11.201l5.893 5.3366c5.0292-5.267 12.128-8.5393 20.018-8.5393 15.319 0 27.651 12.335 27.651 27.654 0 3.852-0.78457 7.5121-2.1955 10.838l7.3396 3.116c1.8342-4.2892 2.8538-9.0054 2.8538-13.954 0-19.642-16.007-35.652-35.649-35.652z" color="#000000" color-rendering="auto" fill="url(#linearGradient20785)" image-rendering="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"> </path> </g> </g> </svg> <div> Industry Dive is an Informa business </div> </div> <div class="baseline-footer"> &copy; 2024 <a href="http://www.industrydive.com">Industry Dive</a>. All rights reserved. | View our <a href="http://www.industrydive.com/industries/">other publications</a> | <a href="http://www.industrydive.com/privacy-policy/">Privacy policy</a> | <a href="http://www.industrydive.com/terms-of-use/">Terms of use</a> | <a href="http://www.industrydive.com/takedown-policy/">Take down policy</a>. <br> <a href="#" onclick="Osano.cm.showDrawer('osano-cm-dom-info-dialog-open')">Cookie Preferences / Do Not Sell</a> </div> </div> </div> </div> <!-- mobile menu, not visible on desktop, must go AFTER footer --> <nav class="mobile-menu"> <div class="mm-top-bar"> <button class="mobile-menu-toggle"> <img src="/static/img/menu_icons/close.svg?273117231121" width="20" height="20" alt="close menu"/> </button> <div class="mm-search"> <form action="/search/" method="GET" data-ajax="false"> <label for="search-mobile"> <span class="screen-reader-text">Search</span> <input id="search-mobile" type="search" name="q" placeholder="Search" data-role="none"> </label> <button type="submit" value="" data-role="none" class="search-button-front analytics t-search-navigation-mobile"> <img src="/static/img/menu_icons/search.svg?320116291121" width="15" height="15" alt="search"> </button> </form> </div> </div> <ul class="mm-list list-no-bullets"> <li> <a href="/" class="analytics t-dash-navigation-mobile"> <span>Home</span> </a> </li> <li class="mm-accordion"> <button> <span>Topics</span> <span class="accordion-toggle-arrow"> <img src="/static/img/menu_icons/chevron_down.svg?102717100918" width="16" height="9" alt="down arrow" loading="lazy"> </span> </button> <ul class="list-no-bullets"> <li> <a class="analytics t-topic-navigation-mobile-Generation" href="/topic/Generation/">Generation</a> </li> <li> <a class="analytics t-topic-navigation-mobile-transmission-distribution" href="/topic/transmission-distribution/">T&amp;D</a> </li> <li> <a class="analytics t-topic-navigation-mobile-grid-security-reliability" href="/topic/grid-security-reliability/">Grid Reliability</a> </li> <li> <a class="analytics t-topic-navigation-mobile-building-transportation-electrification" href="/topic/building-transportation-electrification/">Electrification</a> </li> <li> <a class="analytics t-topic-navigation-mobile-demand-response" href="/topic/demand-response/">Load Management</a> </li> <li> <a class="analytics t-topic-navigation-mobile-solar" href="/topic/solar/">Renewables</a> </li> <li> <a class="analytics t-topic-navigation-mobile-storage" href="/topic/storage/">Storage</a> </li> <li> <a class="analytics t-topic-navigation-mobile-distributed-energy" href="/topic/distributed-energy/">DER</a> </li> <li> <a class="analytics t-topic-navigation-mobile-policy" href="/topic/policy/">Regs</a> </li> <li> <a class="analytics t-topic-navigation-mobile-market-news" href="/topic/market-news/">Corp News</a> </li> </ul> </li> <li> <a href="/deep-dive/" class="analytics t-deepdive-navigation-mobile"> <span>Deep Dive</span> </a> </li> <li> <a href="/opinion/" class="analytics t-opinion-navigation-mobile"> <span>Opinion</span> </a> </li> <li> <a href="/library/" class="analytics t-library-navigation-mobile"> <span>Library</span> </a> </li> <li> <a href="/events/" class="analytics t-events-navigation-mobile"> <span>Events</span> </a> </li> <li> <a href="/press-release/" class="analytics t-press-releases-navigation-mobile"> <span>Press Releases</span> </a> </li> </ul> <section class="signup mm-signup"> <div class="row"> <div class="large-9 medium-10 medium-centered columns"> <h3 class="display-heading-03 display-heading-03--loud">Get Utility Dive in your inbox</h3> <p class="subhead">The free newsletter covering the top industry headlines</p> <form class="form js-form-email-validate" name="signup" action="/signup/" method="POST"> <label for="id_ce94d9_email" class="email-input js-email-input"> <span class="screen-reader-text">Email:</span> <input type="email" name="email" placeholder="Work email address" class="email" required id="id_ce94d9_email"> </label> <input type="hidden" name="signup_box_location" value="integrated_menu"> <input type="hidden" name="signup_initial_url_path" value="/press-release/20241024-torus-unveils-integrated-energy-storage-and-ai-driven-cybersecurity-solutio/"> <input type="hidden" name="js_enabled" value="0" id="id_ce94d9_js_enabled"> <ul class="signup-list list-no-bullets"> <li> <label><span class="screen-reader-text">Select Newsletter:</span></label> <input id="newsletter-integrated_menu-checkbox-2" type="checkbox" name="site_newsletters" value="2" class="checkbox" /> <label for="newsletter-integrated_menu-checkbox-2"> <span class="newsletter-title">Daily Dive</span> <span class="secondary-label">M-F</span> </label> </li> <li> <label><span class="screen-reader-text">Select Newsletter:</span></label> <input id="newsletter-integrated_menu-checkbox-41" type="checkbox" name="site_newsletters" value="41" class="checkbox" /> <label for="newsletter-integrated_menu-checkbox-41"> <span class="newsletter-title">Storage Weekly</span> <span class="secondary-label">Every Tuesday</span> </label> </li> <li> <label><span class="screen-reader-text">Select Newsletter:</span></label> <input id="newsletter-integrated_menu-checkbox-13" type="checkbox" name="site_newsletters" value="13" class="checkbox" /> <label for="newsletter-integrated_menu-checkbox-13"> <span class="newsletter-title">Load Management Weekly</span> <span class="secondary-label">Every Wednesday</span> </label> </li> <li> <label><span class="screen-reader-text">Select Newsletter:</span></label> <input id="newsletter-integrated_menu-checkbox-25" type="checkbox" name="site_newsletters" value="25" class="checkbox" /> <label for="newsletter-integrated_menu-checkbox-25"> <span class="newsletter-title">Renewable Energy Weekly</span> <span class="secondary-label">Every Thursday</span> </label> </li> <li> <label><span class="screen-reader-text">Select user consent:</span></label> <input type="checkbox" name="user_consent" id="id_user_consent-integrated_menu" value="1" class="checkbox"/> <label for="id_user_consent-integrated_menu"> <span class="signup-user-consent_box"> <span> By signing up to receive our newsletter, you agree to our <a href="https://www.industrydive.com/terms-of-use/" target="_blank">Terms of Use</a> and <a href="https://www.industrydive.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime. </span> </span> </label> </li> </ul> <button class="button button--medium signup-button" type="submit" value="Sign up">Sign up</button> <script type="module" src="/static/js/dist/sendEmailToLytics.bundle.js?520216211124" ></script> <label class="error email_error" style="display:none;">A valid email address is required.</label> <label class="error newsletter-error" style="display:none;">Please select at least one newsletter.</label> </form> </div> </div> </section> </nav> <!-- Track signups for Facebook Conversions API --> <script type="module" src="/static/js/dist/signupValidation.bundle.js?520216211124" ></script> <script type="module" src="/static/js/dist/gtmEvents.bundle.js?520216211124" ></script> <!-- Convert straight quotes to curly --> <script type="module" src="/static/js/dist/smartQuotes.bundle.js?520216211124" ></script> <script src="//platform.twitter.com/oct.js" type="text/javascript"></script> <script type="text/javascript"> if(typeof twttr !== 'undefined' && typeof twttr.conversion !== 'undefined') { twttr.conversion.trackPid('l6gv6', { tw_sale_amount: 0, tw_order_quantity: 0 }); } else { window.console && console.log && console.log('twttr undefined; Unable to track twitter retargeting'); } </script> <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://analytics.twitter.com/i/adsct?txn_id=l6gv6&amp;p_id=Twitter&amp;tw_sale_amount=0&amp;tw_order_quantity=0" /> <img height="1" width="1" style="display:none;" alt="" src="//t.co/i/adsct?txn_id=l6gv6&amp;p_id=Twitter&amp;tw_sale_amount=0&amp;tw_order_quantity=0" /> </noscript> <script> // Set cookie if we're on mobile app. Expire if we're not. This affects // which template is used to display the site to the user. $(document).ready(function() { // Get integer value of mobileapp param from URL and default to 0 if it doesn't exist var mobileapp = ''; // Set cookie if mobileapp is 1 or 2 or expire cookie if mobileapp == 0 if (mobileapp == '0') { document.cookie = 'mobileapp=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } else if (mobileapp == '1' || mobileapp == '2') { document.cookie = 'mobileapp=' + mobileapp + '; path=/;'; } // There's no need to immediately load or preload print.css since it's not needed on page // load. Therefore, load it when the document is ready var stylesheet=document.createElement("link"); stylesheet.setAttribute("rel", "stylesheet"); stylesheet.setAttribute("type", "text/css"); stylesheet.setAttribute("media", "print"); if (window.location.pathname.includes('trendline')) { stylesheet.setAttribute("href", "/static/css/print_trendline.css?300116211124"); } else { stylesheet.setAttribute("href", "/static/css/print.css?300116211124"); } document.getElementsByTagName("head")[0].appendChild(stylesheet); }); </script> <!-- Sailthru Horizon --> <!-- <script type="text/javascript" src="https://ak.sail-horizon.com/horizon/v1.js"></script> --> <script src="https://ak.sail-horizon.com/spm/spm.v1.min.js"></script> <script type="text/javascript"> $(function() { // Sailthru Personalization Engine Setup var sailthru_setup = { customerId: '12ab35a80530ffa5450add9c09f5de04', domain: 'horizon.utilitydive.com', spider: false }; if (window.Sailthru) { Sailthru.init(sailthru_setup); } }); </script> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e734d5b5d0e5f7d',t:'MTczMjM4NzM3OS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10