Our Rendering Servers
By design, screens for the device are rendered via our web server workers, not the device itself. That means that the experience can differ between your browser and our servers in regards to accessing your plugin's polling URLs.
Our servers are hosted on Hetzner Cloud. While we try and be good internet citizens when making requests to your endpoints, some web servers may blacklist entire domains or IP blocks, causing the request to fail, leaving the Your Variables section of your plugin returning only the internal {{ trmnl }}
variable.
Worker IP Addresses as of last update to this document (subject to change):
148.251.232.122
142.93.49.236
88.198.48.93
178.63.44.53
176.9.106.45
78.46.67.98
Debug Logging
Note: This is a feature available only to developer license holders working on private plugins. If you're reading this, you are building your own plugins, so you already have that license.
When viewing a plugin's settings page, you can enable Debug Logging for 24 hours, which enables more detailed information about each request.
Once clicked, the link will change to your account's debug log link, which updates automatically in real-time. Clicking Force Refresh will trigger a refresh, and the debug log will populate with additional information.
Note: This log does not always show errors related to requests, for instance, if the server responds with a valid 200 response and an unformatted "Access Denied" message. It's one more tool in your troubleshooting arsenal.
Testing for Blocking Issues
Like all troubleshooting, you need to isolate and replicate. If you have your own web server and programming skills, you can create a simple proxy script that polls the URL and then outputs the results in the same format (e.g., JSON) when viewed in the browser.
You could also try using a third party website, like reqbin.com to see if they can return data from the URL, or if they are blocked as well.
In either case, the goal is to determine that the request can or cannot work from server-to-server, rather than browser-to-server (or local postman-to-server).
The next steps will vary depending on your testing results.
Adding a Reliable Polling URL
Since TRMNL supports multiple polling URLs, you can add a reliable URL that always returns randomized (fresh) data. This is a way to confirm that the data request is working properly for your plugin, generally.
URL: https://usetrmnl.com/custom_plugin_example_data.json
Cloudflare Configuration
If the polling URL is a server you control and that server is being protected by Cloudflare, your configuration may be generating a challenge for our server's worker browsers which is being captured, before your actual site is returned.
To test this, you can disable Cloudflare protections for your endpoint (broadly, or using a specific authentication string you designate) and retry refreshing the plugin data. Configuring Cloudflare is not part of the scope of this article.