61 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
class AirQuality extends VirtualDeviceManager
 | 
						|
{
 | 
						|
	private $city_sluig = "prague";
 | 
						|
	private $app_id = "53ccbc353bb0bd0b05515169a593b96c38d57c48";
 | 
						|
	private $api_uri = 'http://api.waqi.info/feed/%s/?token=%s'; // Your redirect uri
 | 
						|
	private $virtual_device_name = "Air Quality";
 | 
						|
	private $subdevice_type = "air-quality";
 | 
						|
 | 
						|
	function make()
 | 
						|
	{
 | 
						|
		//Register the settings
 | 
						|
		$settingMng = new SettingsManager();
 | 
						|
		if (!($settingField = $settingMng->getByName("airquality"))) {
 | 
						|
			$settingMng->create("token", "", "airquality");
 | 
						|
		} else {
 | 
						|
			$app_id = $settingField['value'];
 | 
						|
		}
 | 
						|
 | 
						|
		try {
 | 
						|
			if (DeviceManager::registeret($this->virtual_device_name)) {
 | 
						|
				$deviceId = DeviceManager::getDeviceByToken($this->virtual_device_name)['device_id'];
 | 
						|
				if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, $this->subdevice_type)) {
 | 
						|
					SubDeviceManager::create($deviceId, $this->subdevice_type, '');
 | 
						|
					sleep(1);
 | 
						|
					$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($this->subdevice_type));
 | 
						|
				}
 | 
						|
 | 
						|
				//if (!$this->fetchEnabled($deviceId,$subDevice['subdevice_id'])) die();
 | 
						|
 | 
						|
				$finalUrl = sprintf($this->api_uri, $this->city_sluig, $this->app_id);
 | 
						|
				$json = json_decode(Utilities::CallAPI('GET', $finalUrl, ''), true);
 | 
						|
				RecordManager::create($deviceId, $this->subdevice_type, $json['data']['aqi']);
 | 
						|
			} else {
 | 
						|
				DeviceManager::create($this->virtual_device_name, $this->virtual_device_name, 'senzore-virtual');
 | 
						|
				DeviceManager::approved($this->virtual_device_name);
 | 
						|
			}
 | 
						|
			return 'sucessful';
 | 
						|
		} catch(Exception $e) {
 | 
						|
			return 'exception: ' . $e->getMessage();
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	function translate($value){
 | 
						|
		if ($value < 50) {
 | 
						|
			return 'Good';
 | 
						|
		}  else if  ($value > 51 && $value < 100) {
 | 
						|
			return 'Moderate';
 | 
						|
		} else if ($value > 101 && $value < 150) {
 | 
						|
			return 'Normal';
 | 
						|
		} else if ($value > 151 && $value < 200) {
 | 
						|
			return 'Unhealthy';
 | 
						|
		} else if ($value > 201 && $value < 300) {
 | 
						|
			return 'Very Unhealthy';
 | 
						|
		} else if ($value > 301 ) {
 | 
						|
			return 'Hazardous';
 | 
						|
		}
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
}
 |