Ich möchte eine Regel schreiben, die ausgelöst wird, wenn die Herzfrequenz 5 Minuten lang über 160 liegt. Die Regel kam ich mit ist die folgende:Esper-Regelsprache: Feuerregel nur, wenn die Bedingung für einen bestimmten Zeitraum erfüllt ist
EPAdministrator cepRule3 = cep.getEPAdministrator();
EPStatement cepStatementRule3 = cepRule3.createEPL("select * from "
+ "HeartRate.win:time(5 min) "
+ "group by macAddress "
+ "having min(heartrate) > 160");
cepStatementRule3.addListener(new rule3Listener());
Meine Herzfrequenz-Klasse hat die folgenden Felder:
int heartrate;
String heartratesTimestamp;
String macAddress;
Das Problem ist, ich bin vor, dass diese Regel gibt es jedes Mal, feuert eine Herzfrequenz über 160. Stattdessen möchte ich es nur feuern, wenn die Herzfrequenz 5 Minuten lang über 160 bleibt. Wie kann ich diese Regel anpassen?
Könnten Sie dies vollständig schreiben, weil ich die Syntax dieser Regel nicht verstehen Dank – Tim
Danke, ich habe jetzt die folgende Regel:.. '" wählen * aus Muster [alle (Herzfrequenz (Herzfrequenz> 160) -> (Timer: Intervall (5 min) a nd nicht HeartRate (Herzfrequenz <= 160)))] "aber wie kann ich die Gruppe per Macaddress wie in meiner vorherigen Regel aufnehmen? – Tim
Sie können einen Kontext verwenden, der durch die MAC-Adresse partitioniert ist, wie folgt: create context PartitionByMac partitioniert von macaddress von HeartRate; context PartitionByMac select * aus dem Muster [every (HeartRate (Herzfrequenz> 160) -> (Timer: Intervall (5 min) und nicht HeartRate (Herzfrequenz <= 160))); – user3613754