Window Cooling Calculator app (WindowCooling)

Q: How do I configure a URL-based climate data source for WindowCooling?

A: To feed URL-based climate data to the WindowCooling app, make the data available via HTTPS GET on a server with a public IP address and a trusted SSL certificate. Format the response data in JSON with the tags as shown in this example:

{"inside_temp":67.4,"in_humidity":56,"outside_temp":56.7,"out_humidity":80.2}

The temperature values are in degrees Fahrenheit. The humidity values represent relative humidity so they are in percentage.

The curl command can be used to validate the server configuration and response data. This is an example of the curl command using the -v option and its output on a URL that I use for testing that returns a fixed set of climate data:

curl -v https://windowcooling.app/json-sample-01 * Host windowcooling.app:443 was resolved. * IPv6: 2606:4700:3036::ac43:8982, 2606:4700:3037::6815:4ecf * IPv4: 172.67.137.130, 104.21.78.207 * Trying 172.67.137.130:443... * Connected to windowcooling.app (172.67.137.130) port 443 * ALPN: curl offers h2,http/1.1 * (304) (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/cert.pem * CApath: none * (304) (IN), TLS handshake, Server hello (2): * (304) (IN), TLS handshake, Unknown (8): * (304) (IN), TLS handshake, Certificate (11): * (304) (IN), TLS handshake, CERT verify (15): * (304) (IN), TLS handshake, Finished (20): * (304) (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 / [blank] / UNDEF * ALPN: server accepted h2 * Server certificate: * subject: CN=windowcooling.app * start date: Jul 30 18:33:40 2026 GMT * expire date: Oct 28 19:33:24 2026 GMT * subjectAltName: host "windowcooling.app" matched cert's "windowcooling.app" * issuer: C=US; O=Google Trust Services; CN=WE1 * SSL certificate verify ok. * using HTTP/2 * [HTTP/2] [1] OPENED stream for https://windowcooling.app/json-sample-01 * [HTTP/2] [1] [:method: GET] * [HTTP/2] [1] [:scheme: https] * [HTTP/2] [1] [:authority: windowcooling.app] * [HTTP/2] [1] [:path: /json-sample-01] * [HTTP/2] [1] [user-agent: curl/8.7.1] * [HTTP/2] [1] [accept: */*] > GET /json-sample-01 HTTP/2 > Host: windowcooling.app > User-Agent: curl/8.7.1 > Accept: */* > * Request completely sent off < HTTP/2 200 < date: Wed, 05 Aug 2026 13:37:19 GMT < content-type: application/json < content-length: 71 < report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=qyG%2FVHVVuIxHIsrl9WbhfJRoka2GY%2FlLLRhgjfcLyp9xudqv89bwwtxu9KWFcQcI8Klcp1cqmM2SKzykdbH4oEFYpKdcRRmqRkxZuhfzdRjZrWMFyJ9V6C41fScafJdS0TM%3D"}]} < nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} < server: cloudflare < cf-ray: a266321d6998db33-SEA < alt-svc: h3=":443"; ma=86400 < * Connection #0 to host windowcooling.app left intact {"inside_temp":74,"in_humidity":55,"outside_temp":78,"out_humidity":20}