Still no expert on HTTP, but here goes.
You have a URL that maps to the IP of your dataplicity box. So when a client wants to connect to it for some service it goes to a DNS server and looks up that IP using the domain name. Now it can send a TCP/IP packet to your device using that IP. But what does the dataplicity box do when that packet when it comes in?
The device could be running any number of services. For instance, Unix based boxes usually run a SSH service for remote administration. Emoncms runs on a web server, usually Apache.
So when a request comes in, it also has a port number associated with it. Most popular services have staked out a port number that they use. SSH uses 22, HTTP web services are serviced on port 80, and secure HTTPS web services are usually serviced on port 443. As each service is started, they declare the port(s) that they want to listen on to the lower level TCP/IP stack.
Somewhere in the configuration of your dataplicity, there’s a web server configuration, as I said, probably Apache. I don’t know Apache, but somewhere in that configuration there’s a way to say direct it to reject port 80 requests and ask the client to permanently redirect requests to port 443. In effect saying that all communications must be secure.
That’s not a bad thing. It’s just that IoTaWatt doesn’t have the memory needed to handshake and use the encrypted protocols. There are solutions to that using proxies, but that just gets you in deeper. Better to just open up the dataplicity to HTTP traffic on port 80.
Maybe someone with more in depth knowledge of your equipment will weigh in with more specific advice.
UPDATE: I did an http request and the 301 redirect was issued from a server that identified itself as “awselb/2.0”
The https redirected request was serviced by Nginx, which must be the server that is hosting your Emoncms.
I knew nothing about dataplicity, but after a quick google it starts to make sense. Apparently dataplicity is a VPN like service hosted on AWS. You probably won’t be able to open up port 80 to aws. They’re pretty strict about that.
Your best bet is to open up a port on your WiFi router. That usually involves assigning a static local IP to the server, and setting port forwarding to forward an arbitrary unused port to port 80 on the server. Then you can address the server using your WAN IP address and the arbitrary port that you chose.
If your WAN IP is not fixed, you will need to use some kind of dynamic dns service to map the volatile IP.
Such is the life of running your own server.