Communication between 2 Arduino over long distance

I want to monitor the temperature and Dissolved Oxygen in the Hydropower project. One is upstream and the other one is downstream, which is 5Km from each other and it will show data over the web browser. The downstream system needs to send data to the upstream system and upstream can compare the reading temperature, and control the gate of a hydropower project to release the water to downstream.
It is not practical for using the wire to connect from Arduino to upstream wich is 5Km distance, I want to connect it through internet, which is using arduino ethernet shield. I don't have problem with telemetry system.
Is there a better way to to send reading temperature from downstream to upstream aside from using Arduino ethernet shield, so that upstream arduino can compare data between downstream and upstream it self and activate the gate?

Are both Arduinos within range of the internet? If so you could set up a webserver to act as a common point of contact.

Using a mobile-phone messaging system may be another option. You can get shields that take SIM cards.

Or, perhaps LoRa wireless modules. They can achieve long range at low data rates.


Use wifi and yagi/directional antennas.

Otherwise you will have to use lora.

Its probably in a location with no SMS/LTE so your options are fairly limited. Line of site wifi using dish/yagi antennas would be the easiest to set up.

I assume a dedicated 433Mhz*) FM connection will be more reliable than routing via internet.

*) or another Frequency allowed in your country ...