From: Ondrej Pecta Date: Sun, 24 Apr 2022 19:00:20 +0000 (+0200) Subject: [prowl] Added the message priority setting feature (#12647) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=ad71ca005568a54b470cf1794311cfb8dbc00a11;p=openhab-addons.git [prowl] Added the message priority setting feature (#12647) Signed-off-by: Ondrej Pecta --- diff --git a/bundles/org.openhab.binding.prowl/README.md b/bundles/org.openhab.binding.prowl/README.md index 34ac1981df..a0519d2999 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 6ba26fb047..f292fa1653 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 a535caf52e..df7dda12ea 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 08d7fb8c6b..24a3041505 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 09e5e9be7e..4ba33c1227 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 b6dd757da9..cdebe2b70d 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).