Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 4 August 2020

YC-backed Statiq wants to bootstrap India’s EV charging network

Electric vehicles (EVs) are spreading throughout the world. While Tesla has drawn the most attention in the United States with its luxurious and cutting-edge cars, EVs are becoming a mainstay in markets far away from the environs of California.

Take India for instance. In the local mobility market, two- and three-wheel vehicles are starting to emerge as a popular option for a rapidly expanding middle class looking for more affordable options. EV versions are popular thanks to their reduced maintenance costs and higher reliability compared to gasoline alternatives.

Two-wheeled electric scooters are a fast-growing segment of India’s mobility market.

There’s just one problem, and it’s the same one faced by every country which has attempted to convert from gasoline to electric: how do you build out the charging station network to make these vehicles usable outside a small range from their garage?

It’s the classic chicken-and-egg problem. You need EVs in order to make money on charging stations, but you can’t afford to build charging stations until EVs are popular. Some startups have attempted to build out these networks themselves first. Perhaps the most famous example was Better Place, an Israeli startup that raised $800 million in venture capital before dying from negative cash flow back in 2013. Tesla has attempted to solve the problem by being both the chicken and egg by creating a network of Superchargers.

That’s what makes Statiq so interesting. The company, based in the New Delhi suburb of Gurugram, is bootstrapping an EV charging network using a multi-revenue model that it hopes will allow it to avoid the financial challenges that other charging networks have faced. It’s in the current Y Combinator batch and will be presenting at Demo Day later this month.

Akshit Bansal and Raghav Arora, the company’s co-founders, worked together previously as consultants and built a company for buying photos online, eventually reaching 50,000 monthly actives. They decided to make a pivot — a hard pivot really — into EVs and specifically charging equipment.

Statiq founders Raghav Arora and Akshit Bansal. Photos via Statiq

“We felt the need to do something about the climate because we were living in Delhi and Delhi is one of the most polluted cities in the world, and India is home to a lot of the polluted cities in the world. So we wanted to do something about it,” Bansal said. As they researched the causes of pollution, they learned that automobile exhaust represented a large part of the problem locally. They looked at alternatives, but EV charging stations remain basically non-existent across the country.

Thus, they founded Statiq in October 2019 and officially launched this past May. They have installed more than 150 charging stations in Delhi, Bangalore, and Mumbai and the surrounding environs.

Let’s get to the economics though, since that to me is the most fascinating part of their story. Statiq as I noted has a multi-revenue model. First, end users buy a subscription from Statiq to use the network, and then users pay a fee per charging session. That session fee is split between Statiq and the property owner, giving landlords who install the stations an incremental revenue boost.

A Statiq charging station. Photo via Statiq

When it comes to installation, Statiq has a couple of tricks up its sleeves. First, the company’s charging equipment — according to Bansal — costs roughly a third of the equivalent cost of U.S. equipment. That makes the base technology cheaper to acquire. From there, the company negotiates installations with landlords where the landlords will pay the fixed costs of installation in exchange for that continuing session charge fee.

On top of all that, the charging stations have advertising on them, offering another income stream particularly in high-visibility locations like shopping malls which are critical for a successful EV charging network.

In short, Statiq hasn’t had to outlay capital in order to put in place their charging equipment — and they were able to bootstrap before applying to YC earlier this year. Bansal said the company had dozens of charging stations and thousands of paid sessions on its platform before joining their YC batch, and “we are now growing 20% week-over-week.”

What’s next? It’s all about deliberate scaling. The EV market is turning on in India, and Statiq wants to be where those cars are. Bansal and his co-founder are hoping to ride the wave, continuing to build out critical infrastructure along the way. India’s government will likely continue to help: its approved billions of dollars in incentives for EVs and for charging stations, tipping the economics even further in the direction of a clean car future.



from TechCrunch https://ift.tt/3i9R8nQ
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support