<?php
if (PHP_SAPI != 'cli') exit();
define('PICONTROL', true);

$doNotCheckForAuthentification = true;
(include_once realpath(dirname(__FILE__)).'/../init.php')	or die('Error: 0x0000');
(include_once LIBRARY_PATH.'main/main.function.php')		or die('Error: 0x0001');
(include_once LIBRARY_PATH.'main/rpi.function.php')			or die('Error: 0x0002');
(include_once LIBRARY_PATH.'curl/curl.class.php')			or die('Error: 0x0003');

if (getConfig('main:notificationPB.enabled', false))
{
    $token = getConfig('main:notificationPB.token', '');
    $lastPush = json_decode(htmlspecialchars_decode(getConfig('main:notificationPB.lastPush', '{}')), true);
		
    if (getConfig('main:notificationPB.picontrolVersionEnabled', 'false') == 'true' && (getConfig('cron:updateCheck.picontrol', 0)+21600) < time())
    {
        $picontrolUpdate = checkUpdate();
        
        if (!isset($lastPush['picontrol']))
            $lastPush['picontrol'] = array('time' => 0, 'value' => 0, 'notification_iden' => '');
        
        if (!is_array($picontrolUpdate))
            setConfig('cron:updateCheck.picontrol', time());
        else
        {
            if ($lastPush['picontrol']['value'] < $picontrolUpdate['versioncode'] && $lastPush['picontrol']['time']+21600 < time())
            {
                setConfig('cron:updateCheck.picontrol', time()-86400);
                
				$curl = new cURL('https://api.pushbullet.com/v2/pushes', HTTP_POST);
				$curl->addHeader(array('Authorization: Bearer '.$token, 'Content-Type: application/json'));
				$curl->setParameterRaw(json_encode(array('type' => 'note', 'title' => 'Pi Control | '._t('Aktualisierung verfügbar'), 'body' => _t('Pi Control Version %s steht ab sofort für dein Pi Control "%s" zum herunterladen bereit.', $picontrolUpdate['version'], getConfig('main:main.label', 'Raspberry Pi')))));
				$curl->execute();
                
                // Reduziere Traffic, da selbst bei Fehler erst wieder nach 21600 Sek. geprüft wird
                $lastPush['picontrol']['time'] = time();
                
				if ($curl->getResult($data) == JSON_ERROR_NONE)
				{
					if (!isset($data['error']))
					{
						$lastPush['picontrol']['value'] = $picontrolUpdate['versioncode'];
                    	$lastPush['picontrol']['notification_iden'] = $return['iden'];
					}
				}
            }
        }
    }
	
    if (getConfig('main:notificationPB.cpuTemperatureEnabled', 'false') == 'true')
    {
        $temp = rpi_getCoreTemprature();
        
        if (!isset($lastPush['cpu_temp']))
            $lastPush['cpu_temp'] = array('time' => 0, 'value' => 0, 'notification_iden' => '');
        
        if ($temp > getConfig('main:notificationPB.cpuTemperatureMaximum', 65) && $lastPush['cpu_temp']['value'] < ($temp + 5) && $lastPush['cpu_temp']['time']+300 < time())
        {
			$curl = new cURL('https://api.pushbullet.com/v2/pushes', HTTP_POST);
			$curl->addHeader(array('Authorization: Bearer '.$token, 'Content-Type: application/json'));
			$curl->setParameterRaw(json_encode(array('type' => 'note', 'title' => 'Pi Control | '._t('Temperaturüberschreitung'), 'body' => _t('Dein Pi Control "%s" meldet eine erhöhte Temperatur der CPU von %s °C.', getConfig('main:main.label', 'Raspberry Pi'), $temp))));
			$curl->execute();
			
			if ($curl->getResult($data) == JSON_ERROR_NONE)
			{
				if (!isset($data['error']))
				{
	                $lastPush['cpu_temp']['time'] = time();
	                $lastPush['cpu_temp']['value'] = $temp;
	                $lastPush['cpu_temp']['notification_iden'] = $data['iden'];
				}
			}
        }
        elseif (getConfig('main:notificationPB.cpuTemperatureMaximum', 65) > $temp)
            $lastPush['cpu_temp']['value'] = 0;
    }
	
    if (getConfig('main:notificationPB.memoryUsedEnabled', 'false') == 'true')
    {
        $memory = rpi_getMemoryInfo();
        $percent = $memory[count($memory)-1]['percent'];
        
        if (!isset($lastPush['memory']))
            $lastPush['memory'] = array('time' => 0, 'value' => 0, 'notification_iden' => '');
        
        if (getConfig('main:notificationPB.memoryUsedLimit', 80) < $percent && $lastPush['memory']['value'] < ((100 - $percent) / 10 + $percent) && $lastPush['memory']['time']+3600 < time())
        {
			$curl = new cURL('https://api.pushbullet.com/v2/pushes', HTTP_POST);
			$curl->addHeader(array('Authorization: Bearer '.$token, 'Content-Type: application/json'));
			$curl->setParameterRaw(json_encode(array('type' => 'note', 'title' => 'Pi Control | '._t('Speicherverbrauch'), 'body' => _t('Dein Pi Control "%s" meldet einen Speicherverbrauch von %d%%.', getConfig('main:main.label', 'Raspberry Pi'), $percent))));
			$curl->execute();
			
			if ($curl->getResult($data) == JSON_ERROR_NONE)
			{
				if (!isset($data['error']))
				{
	                $lastPush['memory']['time'] = time();
	                $lastPush['memory']['value'] = $percent;
	                $lastPush['memory']['notification_iden'] = $data['iden'];
				}
			}
        }
        elseif (getConfig('main:notificationPB.memoryUsedLimit', 80) > $percent)
            $lastPush['memory']['value'] = 0;
    }
    
    setConfig('main:notificationPB.lastPush', htmlspecialchars(json_encode($lastPush)));
}
?>