diff --git a/bundles/org.openhab.binding.prowl/README.md b/bundles/org.openhab.binding.prowl/README.md index 34ac1981d..a0519d299 100644 --- a/bundles/org.openhab.binding.prowl/README.md +++ b/bundles/org.openhab.binding.prowl/README.md @@ -35,9 +35,11 @@ _*.rules_ Once you have created the broker thing with a valid API key, you can use the Prowl service in your rules. First you need to create an instance of the broker just before any call or on the top rules level. (replace the _mybroker_ with the right name of your instance). -Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_. +Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_. +There is also an optional third parameter _priority_ which represents the message priority (very low) -2,-1,0,1,2 (emergency). The default priority is 0. ``` val prowl = getActions("prowl","prowl:broker:mybroker") prowl.pushNotification("Event", "This is the description of the event") +prowl.pushNotification("Emergency Event", "This is the description of the event", 2) ``` diff --git a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java index 6ba26fb04..f292fa165 100644 --- a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java +++ b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/ProwlHandler.java @@ -49,7 +49,7 @@ public class ProwlHandler extends BaseThingHandler { private final Logger logger = LoggerFactory.getLogger(ProwlHandler.class); private ProwlConfiguration config = new ProwlConfiguration(); - final private HttpClient httpClient; + private final HttpClient httpClient; /** * Future to poll for status @@ -117,17 +117,27 @@ public class ProwlHandler extends BaseThingHandler { } public void pushNotification(@Nullable String event, @Nullable String description) { + pushNotification(event, description, 0); + } + + public void pushNotification(@Nullable String event, @Nullable String description, int priority) { if (event == null || description == null) { logger.debug("Cannot push message with null event or null description"); return; } + if (priority < -2) { + priority = -2; + } else if (priority > 2) { + priority = 2; + } + logger.debug("Pushing an event: {} with desc: {}", event, description); try { ContentResponse response = httpClient.POST(PROWL_ADD_URI).timeout(5, TimeUnit.SECONDS) .content( new StringContentProvider("apikey=" + config.apiKey + "&application=" + config.application - + "&event=" + event + "&description=" + description), + + "&event=" + event + "&description=" + description + "&priority=" + priority), "application/x-www-form-urlencoded; charset=UTF-8") .send(); String resp = response.getContentAsString(); diff --git a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java index a535caf52..df7dda12e 100644 --- a/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java +++ b/bundles/org.openhab.binding.prowl/src/main/java/org/openhab/binding/prowl/internal/action/ProwlActions.java @@ -57,10 +57,29 @@ public class ProwlActions implements ThingActions { handler.pushNotification(event, message); } + @RuleAction(label = "@text/pushNotificationActionLabel", description = "@text/pushNotificationActionDescription") + public void pushNotification( + @ActionInput(name = "event", label = "@text/pushNotificationActionEventLabel", description = "@text/pushNotificationActionEventDescription") @Nullable String event, + @ActionInput(name = "message", label = "@text/pushNotificationActionMessageLabel", description = "@text/pushNotificationActionMessageDescription") @Nullable String message, + @ActionInput(name = "priority", label = "@text/pushNotificationActionPriorityLabel", description = "@text/pushNotificationActionPriorityDescription") int priority) { + ProwlHandler clientHandler = handler; + if (clientHandler == null) { + logger.warn("Prowl ThingHandler is null"); + return; + } + + handler.pushNotification(event, message, priority); + } + public static void pushNotification(@Nullable ThingActions actions, @Nullable String event, @Nullable String description) { + pushNotification(actions, event, description, 0); + } + + public static void pushNotification(@Nullable ThingActions actions, @Nullable String event, + @Nullable String description, int priority) { if (actions instanceof ProwlActions) { - ((ProwlActions) actions).pushNotification(event, description); + ((ProwlActions) actions).pushNotification(event, description, priority); } else { throw new IllegalArgumentException("Instance is not a ProwlActions class."); } diff --git a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties index 08d7fb8c6..24a304150 100644 --- a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties +++ b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl.properties @@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Event pushNotificationActionEventDescription = Event name. pushNotificationActionMessageLabel = Message pushNotificationActionMessageDescription = Message text. +pushNotificationActionPriorityLabel = Priority +pushNotificationActionPriorityDescription = Message priority (-2,-1,0,1,2). diff --git a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties index 09e5e9be7..4ba33c122 100644 --- a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties +++ b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_fr.properties @@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evénement pushNotificationActionEventDescription = Nom de l'événement. pushNotificationActionMessageLabel = Message pushNotificationActionMessageDescription = Texte du message. +pushNotificationActionPriorityLabel = Priorité +pushNotificationActionPriorityDescription = Priorité du message (-2,-1,0,1,2). diff --git a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties index b6dd757da..cdebe2b70 100644 --- a/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties +++ b/bundles/org.openhab.binding.prowl/src/main/resources/OH-INF/i18n/prowl_it.properties @@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evento pushNotificationActionEventDescription = Nome evento. pushNotificationActionMessageLabel = Messaggio pushNotificationActionMessageDescription = Testo del messaggio. +pushNotificationActionPriorityLabel = Priorità +pushNotificationActionPriorityDescription = Priorità del messaggio (-2,-1,0,1,2).