Please fill out the fields below so we can help you better. Note: you must provide your domain name to get help. Domain names for issued certificates are all made public in Certificate Transparency logs (e.g. crt.sh | example.com), so withholding your domain name here does not increase secrecy, but only makes it harder for us to provide help.
while only thing about that error message is lechecker.php tried to decode something isn't in JSON, I can say that domain is not exposed to internet, which is required to LE validation to succeed.
I have it sitting between the ISP's router and both firewalls. I turn it off at night because it's completely wide open to the internet. It's back up now.
Can you explain what that self-test is checking. Because if you are using an HTTP Challenge the incoming URL to you from the Let's Encrypt server looks like:
No, it is not expected that pbx.midwestlivestock.com would be responding on port 443.
The Self test is what I see when I attempt to generate a Let's Encrypt Cert.:
I'd first resolve what that Unifi device is doing. If you don't have one then check that your public IP in the DNS is correct. Then make your that Unifi passes requests from port 80 to your FreePBX system.
It is possible that Unifi is the firewall system built in to FreePBX - I don't know for sure.
Your issues are really how to use FreePBX and not directly related to a Let's Encrypt problem. You are probably better off asking about these problems at their support forum. Or, find a good guide using google (maybe this one? https://www.youtube.com/watch?v=7PGKxSnvZrQ)
Not unless FreePBX has seen drastic changes in the last couple of years--though I hope it has, because its built-in LE cert function was very badly broken back then.