{"id":127792,"date":"2023-05-16T21:09:33","date_gmt":"2023-05-16T21:09:33","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=127792"},"modified":"2023-05-18T13:49:54","modified_gmt":"2023-05-18T13:49:54","slug":"esp32-pushover-notifications-arduino","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/esp32-pushover-notifications-arduino\/","title":{"rendered":"ESP32: Send Pushover Notifications (Arduino IDE)"},"content":{"rendered":"\n<p>In this guide, you&#8217;ll learn how to send ESP32 notifications to Pushover. Pushover is a notification service that integrates with many applications. You can send push notifications to all of your devices and multiple users. You can manage your notifications with levels of priority, set silent hours, and set different sounds depending on the notification.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushover-Notifications-Tutorial-1.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 Send Pushover Notifications Arduino IDE\" class=\"wp-image-127895\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushover-Notifications-Tutorial-1.jpg?w=1280&amp;quality=100&amp;strip=all&amp;ssl=1 1280w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushover-Notifications-Tutorial-1.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushover-Notifications-Tutorial-1.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushover-Notifications-Tutorial-1.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n<p><strong>Table of Contents<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#pushover-intro\" title=\"\">Introducing Pushover App<\/a><\/li>\n\n\n\n<li><a href=\"#install-pushover\" title=\"\">Installing Pushover App<\/a><\/li>\n\n\n\n<li><a href=\"#pushover-user-key-api-key\" title=\"\">Getting Pushover API Key and User Key<\/a><\/li>\n\n\n\n<li><a href=\"#esp32-pushover-code\" title=\"\">Pushover Notifications with the ESP32 &#8211; Example Sketch (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"#demonstration\" title=\"\">Sending Pushover Notifications with the ESP32 &#8211; Demonstration<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"rntbox rntclgreen\">New to the ESP32? <a href=\"https:\/\/randomnerdtutorials.com\/getting-started-with-esp32\/\" title=\"\">Start here: Getting Started with the ESP32 Development Board<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pushover-intro\">Introducing Pushover<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"600\" height=\"150\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-logo.png?resize=600%2C150&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"pushover logo\" class=\"wp-image-127836\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-logo.png?w=600&amp;quality=100&amp;strip=all&amp;ssl=1 600w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-logo.png?resize=300%2C75&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n<p>Pushover is a mobile and desktop app compatible with Android and iOS and Windows, MacOS, and Linux. It allows you to receive notifications from different sources and services and integrates with many applications.<\/p>\n\n\n\n<p>You can receive notifications on all your devices simultaneously or send them to groups with multiple users. Additionally, you can customize things such as priority levels, set silent hours, and even different sounds depending on the type of notification.<\/p>\n\n\n\n<p>After publishing<a href=\"https:\/\/randomnerdtutorials.com\/send-notifications-esp32\/\" title=\"\"> this previous tutorial<\/a>, we found that many of our readers were already using Pushover for other types of notifications. So, we thought it would be useful to know how to integrate Pushover with the ESP32 so that you have all your notifications in one place.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pushover Pricing<\/h3>\n\n\n\n<p>You have a <strong>free 30-day trial period <\/strong>from the time you register so that you can experiment with the app. After that, if you want to continue using the app, it&#8217;s just a one-time $5 USD purchase. Each user can send up to 10,000 messages per month for free. Learn more about <a href=\"https:\/\/pushover.net\/pricing\" target=\"_blank\" rel=\"noopener\" title=\"\">Pushover pricing here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-pushover\">Installing Pushover App<\/h2>\n\n\n\n<p>You can install the Pushover app on your computer, tablet, and smartphone. It is compatible with Windows, MacOS, and Linux, and with Android and iOS.<\/p>\n\n\n\n<p>Download the app into your smartphone and create an account to get started.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"350\" height=\"468\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/IMG_8963.png?resize=350%2C468&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Create Account Pushover App\" class=\"wp-image-127793\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/IMG_8963.png?w=350&amp;quality=100&amp;strip=all&amp;ssl=1 350w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/IMG_8963.png?resize=224%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 224w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/figure><\/div>\n\n\n<p>After creating your account, you&#8217;ll have a free 30-day trial period.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"394\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-free-trial-get-started.png?resize=350%2C394&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Welcome to Pushover Creating an Account\" class=\"wp-image-127794\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-free-trial-get-started.png?w=350&amp;quality=100&amp;strip=all&amp;ssl=1 350w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-free-trial-get-started.png?resize=266%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 266w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/figure><\/div>\n\n\n<p>After that, you&#8217;ll need to go to your email to verify your account.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pushover-user-key-api-key\">Getting Pushover API Key and User Key<\/h2>\n\n\n\n<p>To send notifications to Pushover with the ESP32, we need to get an API key and the user (receiver) key.<\/p>\n\n\n\n<p>For this step, we recommend logging in to your pushover account on your computer browser. Login here: <a href=\"https:\/\/pushover.net\/login\" target=\"_blank\" rel=\"noopener\" title=\"\">https:\/\/pushover.net\/login<\/a>.<\/p>\n\n\n\n<p>You&#8217;ll get access to your Pushover dashboard.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"472\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-dashboard.png?resize=750%2C472&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Pushover dashboard user key\" class=\"wp-image-127795\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-dashboard.png?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-dashboard.png?resize=300%2C189&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>At the top right corner, there&#8217;s the <strong>User Key<\/strong>. Save it because you&#8217;ll need it later.<\/p>\n\n\n\n<p>You can also see all your devices and add more devices if you want. You can try to Push a Notification at the top left corner to check if notifications are working with your device.<\/p>\n\n\n\n<p>Scroll down the page to create an Application\/API Token.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"513\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-create-application-api-token-f.png?resize=750%2C513&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"pushover create an application token\" class=\"wp-image-127883\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-create-application-api-token-f.png?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-create-application-api-token-f.png?resize=300%2C205&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>Give a name and description(optional) to the API Token. You can also add an icon to that. We added an icon of an ESP32. So, when we receive a notification, it will be accompanied by the ESP32 icon. Finally, create the application.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"722\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-create-application-1.png?resize=750%2C722&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Pushover App Create an Application API Key\" class=\"wp-image-127798\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-create-application-1.png?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-create-application-1.png?resize=300%2C289&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>Now, the application will show up on your dashboard under the <em>Your Applications<\/em> section.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"606\" height=\"148\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-application-pushover.png?resize=606%2C148&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Application created on pushover app\" class=\"wp-image-127799\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-application-pushover.png?w=606&amp;quality=100&amp;strip=all&amp;ssl=1 606w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-application-pushover.png?resize=300%2C73&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 606px) 100vw, 606px\" \/><\/figure><\/div>\n\n\n<p>Click on the application name to get its API token. On that menu, you can also check how many notifications you have sent with that API token.<\/p>\n\n\n\n<p>Save the API token because you&#8217;ll need it later.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"605\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/Pushover-API-Token-ESP32.png?resize=750%2C605&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Get Pushover application API key\" class=\"wp-image-127800\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/Pushover-API-Token-ESP32.png?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/Pushover-API-Token-ESP32.png?resize=300%2C242&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>Now that you have the user key and API token, you can start sending ESP32 notifications with Pushover.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"esp32-pushover-code\">Pushover Notifications with the ESP32 &#8211; Example Sketch<\/h2>\n\n\n\n<p>Sending Pushover notifications with the ESP32 is very straightforward thanks to its API.<a href=\"https:\/\/pushover.net\/api\" target=\"_blank\" rel=\"noopener\" title=\"\"> You can&nbsp;read Pushover&#8217;s API documentation here<\/a>. You simply need to POST an HTTPS request with the ESP32 with the right parameters to the API endpoint: <span class=\"rnthl rntliteral\">https:\/\/api.pushover.net\/1\/messages.json<\/span>.<\/p>\n\n\n\n<p>You must pass the following parameters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span class=\"rnthl rntliteral\">token<\/span>: your application&#8217;s API token<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">user<\/span>: your user key or user group key<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">message<\/span>: the notification content<\/li>\n<\/ul>\n\n\n\n<p>You can also pass other optional parameters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span class=\"rnthl rntliteral\">attachment<\/span>: an image attachment to send with the message.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">device<\/span>: the name of the device you want to receive the notification.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">html<\/span>: set to 1 to enable HTML parsing.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">priority<\/span>: set the notification priority level: a value of -2, -1, 0 (default), 1, or 2.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">sound<\/span>: the name of a supported sound to override your default sound choice\u2014values can be <span class=\"rnthl rntliteral\">pushover<\/span>, <span class=\"rnthl rntliteral\">bike<\/span>, <span class=\"rnthl rntliteral\">bugle<\/span>, <span class=\"rnthl rntliteral\">cashregister<\/span>, <span class=\"rnthl rntliteral\">classical<\/span>, <span class=\"rnthl rntliteral\">cosmic<\/span>, etc (<a href=\"https:\/\/pushover.net\/api#sounds\" target=\"_blank\" rel=\"noopener\" title=\"\">check all available sound options here<\/a>). You can even upload your own sounds to your Pushover dashboard.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">timestamp<\/span>: a Unix timestamp of a time to display instead of when our API received the request.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">title<\/span>: your message&#8217;s title, otherwise your app&#8217;s name is used.<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">url<\/span>: a supplementary URL to show with your message (documentation).<\/li>\n\n\n\n<li><span class=\"rnthl rntliteral\">url_title<\/span>: a title for the URL specified as the url parameter, otherwise just the URL is shown.<\/li>\n<\/ul>\n\n\n\n<p>For more information about all the parameters, please <a href=\"https:\/\/pushover.net\/api\" target=\"_blank\" rel=\"noopener\" title=\"\">check Pushover&#8217;s API documentation<\/a>.<\/p>\n\n\n\n<p>The code below shows how to send Pushover notifications with the ESP32 using an HTTPS POST request.<\/p>\n\n\n\n<p>Before uploading the code to your board you need to insert your SSID and password, <a href=\"#pushover-user-key-api-key\" title=\"\">the user key, and Pushover App API token<\/a>.<\/p>\n\n\n<pre style=\"max-height: 40em; margin-bottom: 20px;\"><code class=\"language-c\">\/*\n  Rui Santos\n  Complete project details at https:\/\/RandomNerdTutorials.com\/esp32-pushover-notifications-arduino\/\n  \n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files.\n  \n  The above copyright notice and this permission notice shall be included in all\n  copies or substantial portions of the Software.\n*\/\n\n#include &lt;WiFi.h&gt;\n#include &lt;HTTPClient.h&gt;\n#include &lt;WiFiClientSecure.h&gt;\n#include &lt;ArduinoJson.h&gt;\n\nconst char* ssid = &quot;REPLACE_WITH_YOUR_SSID&quot;;\nconst char* password = &quot;REPLACE_WITH_YOUR_PASSWORD&quot;;\n\nconst char* apiToken = &quot;API_TOKEN&quot;;\nconst char* userToken = &quot;USER_TOKEN&quot;;\n\n\/\/Pushover API endpoint\nconst char* pushoverApiEndpoint = &quot;https:\/\/api.pushover.net\/1\/messages.json&quot;;\n\n\/\/Pushover root certificate (valid from 11\/10\/2006 to 15\/01\/2038)\nconst char *PUSHOVER_ROOT_CA = &quot;-----BEGIN CERTIFICATE-----\\n&quot;\n                  &quot;MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh\\n&quot;\n                  &quot;MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\\n&quot;\n                  &quot;d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\\n&quot;\n                  &quot;MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT\\n&quot;\n                  &quot;MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\\n&quot;\n                  &quot;b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG\\n&quot;\n                  &quot;9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX\/RrohCgiN9RlUyfuI\\n&quot;\n                  &quot;2\/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx\\n&quot;\n                  &quot;1x7e\/dfgy5SDN67sH0NO3Xss0r0upS\/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ\\n&quot;\n                  &quot;q2EGnI\/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134\/tJS7SsVQepj5Wz\\n&quot;\n                  &quot;tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ\\n&quot;\n                  &quot;vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP\\n&quot;\n                  &quot;BgNVHRMBAf8EBTADAQH\/MA4GA1UdDwEB\/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV\\n&quot;\n                  &quot;5uNu5g\/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY\\n&quot;\n                  &quot;1Yl9PMWLSn\/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv\/iPsGEMNKSuIEyExtv4\\n&quot;\n                  &quot;NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth\/Jsw1HKj2ZL7tcu7XUIOGZX1NG\\n&quot;\n                  &quot;Fdtom\/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91\\n&quot;\n                  &quot;8rGOmaFvE7FBcf6IKshPECBV1\/MUReXgRPTqh5Uykw7+U0b6LJ3\/iyK5S9kJRaTe\\n&quot;\n                  &quot;pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl\\n&quot;\n                  &quot;MrY=\\n&quot;\n                  &quot;-----END CERTIFICATE-----\\n&quot;;\n\nvoid setup() {\n  Serial.begin(115200);\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(1000);\n    Serial.println(&quot;Connecting to WiFi...&quot;);\n  }\n  Serial.println(&quot;Connected to WiFi&quot;);\n\n  \/\/Make HTTPS POST request to send notification\n  if (WiFi.status() == WL_CONNECTED) {\n    \/\/ Create a JSON object with notification details\n    \/\/ Check the API parameters: https:\/\/pushover.net\/api\n    StaticJsonDocument&lt;512&gt; notification; \n    notification[&quot;token&quot;] = apiToken; \/\/required\n    notification[&quot;user&quot;] = userToken; \/\/required\n    notification[&quot;message&quot;] = &quot;Hello from ESP32&quot;; \/\/required\n    notification[&quot;title&quot;] = &quot;ESP32 Notification&quot;; \/\/optional\n    notification[&quot;url&quot;] = &quot;&quot;; \/\/optional\n    notification[&quot;url_title&quot;] = &quot;&quot;; \/\/optional\n    notification[&quot;html&quot;] = &quot;&quot;; \/\/optional\n    notification[&quot;priority&quot;] = &quot;&quot;; \/\/optional\n    notification[&quot;sound&quot;] = &quot;cosmic&quot;; \/\/optional\n    notification[&quot;timestamp&quot;] = &quot;&quot;; \/\/optional\n\n    \/\/ Serialize the JSON object to a string\n    String jsonStringNotification;\n    serializeJson(notification, jsonStringNotification);\n\n    \/\/ Create a WiFiClientSecure object\n    WiFiClientSecure client;\n    \/\/ Set the certificate\n    client.setCACert(PUSHOVER_ROOT_CA);\n\n    \/\/ Create an HTTPClient object\n    HTTPClient https;\n\n    \/\/ Specify the target URL\n    https.begin(client, pushoverApiEndpoint);\n\n    \/\/ Add headers\n    https.addHeader(&quot;Content-Type&quot;, &quot;application\/json&quot;);\n\n    \/\/ Send the POST request with the JSON data\n    int httpResponseCode = https.POST(jsonStringNotification);\n\n    \/\/ Check the response\n    if (httpResponseCode &gt; 0) {\n      Serial.printf(&quot;HTTP response code: %d\\n&quot;, httpResponseCode);\n      String response = https.getString();\n      Serial.println(&quot;Response:&quot;);\n      Serial.println(response);\n    } else {\n      Serial.printf(&quot;HTTP response code: %d\\n&quot;, httpResponseCode);\n    }\n\n    \/\/ Close the connection\n    https.end();\n  }\n}\n\nvoid loop() {\n  \n}\n<\/code><\/pre>\n\t<p style=\"text-align:center\"><a class=\"rntwhite\" href=\"https:\/\/github.com\/RuiSantosdotme\/Random-Nerd-Tutorials\/raw\/master\/Projects\/ESP32\/ESP32_Pushover_Notifications.ino\" target=\"_blank\">View raw code<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How the Code Works<\/h3>\n\n\n\n<p>Continue reading the learn how the code works, or skip to the <a href=\"#demonstration\" title=\"\">demonstration section<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Include Libraries<\/h4>\n\n\n\n<p>You start by including the required libraries. The <span class=\"rnthl rntliteral\">WiFi<\/span> library to connect the ESP32 to your network, so that it can connect to the internet. The <span class=\"rnthl rntliteral\">HTTPClient<\/span> and <span class=\"rnthl rntliteral\">WiFiClientSecure<\/span> libraries will be used to make secure HTTP POST requests, and we&#8217;ll use the <span class=\"rnthl rntliteral\">ArduinoJSON<\/span> library to create a JSON string to send all the required parameters on the body of the HTTP POST request.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>#include &lt;WiFi.h&gt;\n#include &lt;HTTPClient.h&gt;\n#include &lt;WiFiClientSecure.h&gt;\n#include &lt;ArduinoJson.h&gt;<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Network Credentials<\/h4>\n\n\n\n<p>Insert your network credentials in the following variables.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char* ssid = \"REPLACE_WITH_YOUR_SSID\";\nconst char* password = \"REPLACE_WITH_YOUR_PASSWORD\";<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">API Token and User Token<\/h4>\n\n\n\n<p>Insert the API token and user token on the following variables:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char* apiToken = \"API_TOKEN\";\nconst char* userToken = \"USER_TOKEN\";<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">API Endpoint<\/h4>\n\n\n\n<p>Then, we set the API endpoint URL where we&#8217;ll make the requests. According to the documentation, it is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char* pushoverApiEndpoint = \"https:\/\/api.pushover.net\/1\/messages.json\";<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">SSL Certificate<\/h4>\n\n\n\n<p>To make secure HTTPS requests, we need the pushover&#8217;s website TLS certificate. We&#8217;re using the root certificate. It is valid until 2031. To learn how to get a website&#8217;s TLS certificate, you can read this: <a href=\"https:\/\/randomnerdtutorials.com\/esp32-https-requests\/#getting-server-certificate-google-chrome\" title=\"\">Getting a Server\u2019s Certificate using Google Chrome<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char *PUSHOVER_ROOT_CA = \"-----BEGIN CERTIFICATE-----\\n\"\n                 \"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\\n\"\n                 \"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\\n\"\n                 \"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\\n\"\n                 \"QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\\n\"\n                 \"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\\n\"\n                 \"b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\\n\"\n                 \"9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\\n\"\n                 \"CSDMAZOnTjC3U\/dDxGkAV53ijSLdhwZAAIEJzs4bg7\/fzTtxRuLWZscFs3YnFo97\\n\"\n                 \"nh6Vfe63SKMI2tavegw5BmV\/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\\n\"\n                 \"43C\/dxC\/\/AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\\n\"\n                 \"T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr\/y7vrTC0LUq7dBMtoM1O\/4\\n\"\n                 \"gdW7jVg\/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\\n\"\n                 \"BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH\/BAUwAwEB\/zAdBgNVHQ4EFgQUA95QNVbR\\n\"\n                 \"TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\\n\"\n                 \"DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY\/Esr\\n\"\n                 \"hMAtudXH\/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp\/2PV5Adg\\n\"\n                 \"06O\/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\\n\"\n                 \"PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\\n\"\n                 \"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\\n\"\n                 \"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\\n\"\n                 \"-----END CERTIFICATE-----\\n\";<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Connect to Wi-Fi<\/h4>\n\n\n\n<p>In the <span class=\"rnthl rntliteral\">setup()<\/span>, start by connecting the ESP32 to your network:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>Serial.begin(115200);\nWiFi.begin(ssid, password);\nwhile (WiFi.status() != WL_CONNECTED) {\n  delay(1000);\n  Serial.println(\"Connecting to WiFi...\");\n}\nSerial.println(\"Connected to WiFi\");<\/code><\/pre>\n\n\n\n<p class=\"rntbox rntclblue\">Learn more about ESP32 Wi-Fi functions: <a href=\"https:\/\/randomnerdtutorials.com\/esp32-useful-wi-fi-functions-arduino\/\" title=\"\">ESP32 Useful Wi-Fi Library Functions (Arduino IDE)<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Setting Notification Parameters<\/h3>\n\n\n\n<p>After making sure we are connected to Wi-Fi, we create a JSON object called <span class=\"rnthl rntliteral\">notification<\/span> with the required parameters and some of the optional parameters. The required parameters are the API token, user token and the message.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>StaticJsonDocument&lt;512&gt; notification; \nnotification&#091;\"token\"] = apiToken; \/\/required\nnotification&#091;\"user\"] = userToken; \/\/required\nnotification&#091;\"message\"] = \"Hello from ESP32\"; \/\/required\nnotification&#091;\"title\"] = \"ESP32 Notification\"; \/\/optional\nnotification&#091;\"url\"] = \"\"; \/\/optional\nnotification&#091;\"url_title\"] = \"\"; \/\/optional\nnotification&#091;\"html\"] = \"\"; \/\/optional\nnotification&#091;\"priority\"] = \"\"; \/\/optional\nnotification&#091;\"sound\"] = \"cosmic\"; \/\/optional\nnotification&#091;\"timestamp\"] = \"\"; \/\/optional<\/code><\/pre>\n\n\n\n<p>As you can see, the message is set on the following line:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>notification&#091;\"message\"] = \"Hello from ESP32\"; \/\/required<\/code><\/pre>\n\n\n\n<p>You can change the message to whatever it&#8217;s useful for your application.<\/p>\n\n\n\n<p>We also set the message title on the following line:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>notification&#091;\"title\"] = \"ESP32 Notification\"; \/\/optional<\/code><\/pre>\n\n\n\n<p>After getting all the parameters in a JSON object, we convert it to a String so that we can send it in the body of the HTTP POST request.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>String jsonStringNotification;\nserializeJson(notification, jsonStringNotification);<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">HTTPS POST Request<\/h4>\n\n\n\n<p>Now, we can finally make the HTTPS POST request.<\/p>\n\n\n\n<p class=\"rntbox rntclblue\">Learn more about secure HTTPS requests with the ESP32: <a href=\"https:\/\/randomnerdtutorials.com\/esp32-https-requests\/\" title=\"\">ESP32 HTTPS Requests (Arduino IDE)<\/a>.<\/p>\n\n\n\n<p class=\"rntbox rntclgreen\">Learn more about HTTP POST requests with the ESP32:<a href=\"https:\/\/randomnerdtutorials.com\/esp32-http-post-ifttt-thingspeak-arduino\/\" title=\"\"> ESP32 HTTP POST Requests<\/a>. <\/p>\n\n\n\n<p>Create a <span class=\"rnthl rntliteral\">WiFiClientSecure<\/span> object called <span class=\"rnthl rntliteral\">client<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>WiFiClientSecure client;<\/code><\/pre>\n\n\n\n<p>Set a secure client with the certificate using the <span class=\"rnthl rntliteral\">setCACert()<\/span> method:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>client.setCACert(PUSHOVER_ROOT_CA);<\/code><\/pre>\n\n\n\n<p>Then, create an <span class=\"rnthl rntliteral\">HTTPClient<\/span> instance called <span class=\"rnthl rntliteral\">https<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>HTTPClient https;<\/code><\/pre>\n\n\n\n<p>Initialize the <span class=\"rnthl rntliteral\">https<\/span> client on the host specified using the <span class=\"rnthl rntliteral\">begin()<\/span> method. In this case, we&#8217;re making a request on the API endpoint.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>https.begin(client, pushoverApiEndpoint);<\/code><\/pre>\n\n\n\n<p>Then, add the HTTP POST headers\u2014we need to specify that we&#8217;re going to send the data as a JSON string in the request body.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Add headers\nhttps.addHeader(\"Content-Type\", \"application\/json\");<\/code><\/pre>\n\n\n\n<p>Finally, we can send the POST request with the JSON data.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Send the POST request with the JSON data\nint httpResponseCode = https.POST(jsonStringNotification);<\/code><\/pre>\n\n\n\n<p>After making the request, we can check the server response. This is useful to know if the request succeeded or if there were any problems during the request or with the request body. To get the server response, we simply need to use the <span class=\"rnthl rntliteral\">getString()<\/span> method on the <span class=\"rnthl rntliteral\">https<\/span> object.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>if (httpResponseCode &gt; 0) {\n    Serial.printf(\"HTTP response code: %d\\n\", httpResponseCode);\n    String response = https.getString();\n    Serial.println(\"Response:\");\n    Serial.println(response);\n  } else {\n    Serial.printf(\"HTTP response code: %d\\n\", httpResponseCode);\n}<\/code><\/pre>\n\n\n\n<p>Finally, close the HTTPS connection using the <span class=\"rnthl rntliteral\">end()<\/span> method:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>https.end();<\/code><\/pre>\n\n\n\n<p>This example sends a notification in the <span class=\"rnthl rntliteral\">setup()<\/span> when the ESP32 first runs. So, the <span class=\"rnthl rntliteral\">loop()<\/span> is empty. The idea is that you use this example in your own application. For example, to send a notification when motion is detected, when a sensor reading is above or below a certain threshold, to send sensor readings or GPIO states regularly, and many other possibilities in the home automation and IoT fields.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"demonstration\">Demonstration<\/h2>\n\n\n\n<p>After inserting the SSID, password, user key, and API key, you can upload the code to your board.<\/p>\n\n\n\n<p>After uploading, open the Serial Monitor at a baud rate of 115200. Press the ESP32 RST button so that it starts running the code.<\/p>\n\n\n\n<p>You should get a success message (response code: 200) on your Serial Monitor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"381\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushove-Request-Notification-Serial-Monitor.png?resize=614%2C381&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Send ESP32 Notifications to Pushover Serial Monitor Demonstration\" class=\"wp-image-127811\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushove-Request-Notification-Serial-Monitor.png?w=614&amp;quality=100&amp;strip=all&amp;ssl=1 614w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushove-Request-Notification-Serial-Monitor.png?resize=300%2C186&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/figure><\/div>\n\n\n<p>And you should receive the notification on your smartphone.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"270\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-message-received-pushover.png?resize=350%2C270&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 Notification Pushover App\" class=\"wp-image-127812\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-message-received-pushover.png?w=350&amp;quality=100&amp;strip=all&amp;ssl=1 350w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-message-received-pushover.png?resize=300%2C231&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/figure><\/div>\n\n\n<p>You can click on the message to open it.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"221\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-notificaiton-received-pushover.png?resize=350%2C221&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 Notification Pushover App\" class=\"wp-image-127813\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-notificaiton-received-pushover.png?w=350&amp;quality=100&amp;strip=all&amp;ssl=1 350w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-notificaiton-received-pushover.png?resize=300%2C189&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">Pushover Settings<\/h3>\n\n\n\n<p>On your device, you can adjust the settings for your notifications. Click on the (&#8230;) icon at the top right corner. <\/p>\n\n\n\n<p>You&#8217;ll get a page as shown below. You can set quiet hours and other settings like volume and sound for critical alerts, add custom sounds, and more.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"1024\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-settings-notifications.png?resize=473%2C1024&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"pushover notifications settings\" class=\"wp-image-127840\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-settings-notifications.png?resize=473%2C1024&amp;quality=100&amp;strip=all&amp;ssl=1 473w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-settings-notifications.png?resize=139%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 139w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/pushover-settings-notifications.png?w=500&amp;quality=100&amp;strip=all&amp;ssl=1 500w\" sizes=\"(max-width: 473px) 100vw, 473px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>Pushover is a notification service that you can use to receive notifications from different apps and services in the same place. You can manage your notifications in terms of priority, set silence hours, and even set different sounds depending on the notification received.<\/p>\n\n\n\n<p>In this tutorial, you learned how to send ESP32 notifications to Pushover using Pushover&#8217;s API. Using the Pushover app is not free, but you have a 30-day free trial. If you decide that it is useful for your projects, you can have access to the app with a one-time payment fee of just 5$.<\/p>\n\n\n\n<p>If you&#8217;re using an ESP8266 board, we have a similar tutorial:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp8266-nodemcu-pushover-arduino\/\">Pushover Notifications with the ESP8266 (NodeMCU)<\/a><\/li>\n<\/ul>\n\n\n\n<p>We hope you found this tutorial useful. <\/p>\n\n\n\n<p>We have other articles and projects showing how to send other notification methods like email, WhatsApp, and Telegram messages and SMS:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/send-notifications-esp32\/\">7 Different Ways to Send Notifications with the ESP32<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-send-email-smtp-server-arduino-ide\/\">ESP32 Send Emails using an SMTP Server: HTML, Text, and Attachments (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-send-messages-whatsapp\/\" title=\"ESP32: Send Messages to WhatsApp\">ESP32: Send Messages to WhatsApp<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/telegram-control-esp32-esp8266-nodemcu-outputs\/\">Telegram: Control ESP32\/ESP8266 Outputs (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/telegram-request-esp32-esp8266-nodemcu-sensor-readings\/\">Telegram: Request ESP32\/ESP8266 Sensor Readings (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/send-sms-esp32-twilio\/\">Send SMS with the ESP32 (Twilio)<\/a><\/li>\n<\/ul>\n\n\n\n<p>We hope you find this tutorial useful.<\/p>\n\n\n\n<p>Learn more about the ESP32 with our resources:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/learn-esp32-with-arduino-ide\/\">Learn ESP32 with Arduino IDE<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/build-web-servers-esp32-esp8266-ebook\/\">Build Web Servers with ESP32 and ESP8266<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/firebase-esp32-esp8266-ebook\/\">Firebase Web App with ESP32 and ESP8266<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32\/\">Free ESP32 Projects and Tutorials<\/a><\/li>\n<\/ul>\n\n\n\n<p>Thanks for reading.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this guide, you&#8217;ll learn how to send ESP32 notifications to Pushover. Pushover is a notification service that integrates with many applications. You can send push notifications to all of &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"ESP32: Send Pushover Notifications (Arduino IDE)\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/esp32-pushover-notifications-arduino\/#more-127792\" aria-label=\"Read more about ESP32: Send Pushover Notifications (Arduino IDE)\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":127893,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[276,281,277,299,264],"tags":[],"class_list":["post-127792","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-esp32-project","category-esp32-arduino-ide","category-0-esp32","category-project"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2023\/02\/ESP32-Pushover-Notifications-Tutorial.jpg?fit=1280%2C720&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/127792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=127792"}],"version-history":[{"count":20,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/127792\/revisions"}],"predecessor-version":[{"id":131407,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/127792\/revisions\/131407"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/127893"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=127792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=127792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=127792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}