import java.util.HashMap;
import java.util.Map;
import eu.hsrw.ias.ggd.SensorData
import javax.swing.JOptionPane
import HttpCall.HttpPost
import eu.hsrw.ias.ggd.Notification
import eu.hsrw.ias.ggd.Severity;
import eu.hsrw.ias.ggd.Device;


rule "CriticalBattery"
    when
        device: Device(sensorDatas: sensorData)
        sensorData: SensorData(tag == "battery", value < 4.0) from sensorDatas

    then

        String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
        String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica
        HttpPost httpPost = new HttpPost();
        final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
        httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalBatteryOutput);
        insert(new Notification("battery", sensorData, Severity.Critical));

//        modify(sensorData){
//            setState(Severity.Critical)
//        }

end

rule "OptimalBattery"
    when
        device: Device(sensorDatas: sensorData)
        sensorData: SensorData(tag == "battery", value > 4.0) from sensorDatas

    then

        String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
        HttpPost httpPost = new HttpPost();
        final String optimalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
        httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalBatteryOutput);
        insert(new Notification("battery", sensorData, Severity.Optimal));

//        modify(sensorData){
//            setState(Severity.Optimal)
//        }

end
