Your new topic does not fit any of the above??? Check first. Then post here. Thanks.

Moderator: igrr

User avatar
By rudy
#77574
btidey wrote:The OP seemed to be seeking a solution where the external device directly addresses the internal device without any delay or action on the internal devices part


At this point, in my head, I said "Not possible", and was ready to give that reply.

But with some difficult to maintain patience I did read the following.

btidey wrote:Once it is realised that this is not achievable then a number of other methods can probably be used to actually deliver a feasible solution.


OK, no point in posting a reply as you summed it up.

The company I work for has the same problem. We have control systems that we can't get access to because the customers are in remote rural locations and the internet services available are poor. Sometimes a local individual gets an internet feed from a larger provider and then distributes it in their own fashion. Effectively it is like a private network (your own feed) that gets split by a router and then supplies the end customer's routers. All dynamic IPs. And too much difficulty dealing with the internet resellers. We sell our products through distributors who sell to dealers. The time trying to get these situations to work is significant. So I started to look for a reasonable solution. I have not had time to pursue this one yet. And it isn't my job as I do hardware design and not programming.
User avatar
By lucasromeiro
#77599
btidey wrote:The role reversal is a useful concept, but it still requires the device behind the NAT to initiate the transaction. In this case the beacon is making periodic connection attempts (polling).

The OP seemed to be seeking a solution where the external device directly addresses the internal device without any delay or action on the internal devices part and without setting something up specifically on the NAT router. Once it is realised that this is not achievable then a number of other methods can probably be used to actually deliver a feasible solution.

What solutions do you suggest?
I'm studying to find out the best way.
User avatar
By lucasromeiro
#77600
rudy wrote:
btidey wrote:The OP seemed to be seeking a solution where the external device directly addresses the internal device without any delay or action on the internal devices part


At this point, in my head, I said "Not possible", and was ready to give that reply.

But with some difficult to maintain patience I did read the following.

btidey wrote:Once it is realised that this is not achievable then a number of other methods can probably be used to actually deliver a feasible solution.

So you have a problem similar to mine, I have searched, but I still do not know how I will ... I do not want my equipment to be making several requests per minute to get a command. It will overload my server when I have thousands of installed equipment sending many times per minute without stopping. uPNP already discarded. Portforwarding also discarded because in several cases (like yours) we can not make settings on the router.
OK, no point in posting a reply as you summed it up.

The company I work for has the same problem. We have control systems that we can't get access to because the customers are in remote rural locations and the internet services available are poor. Sometimes a local individual gets an internet feed from a larger provider and then distributes it in their own fashion. Effectively it is like a private network (your own feed) that gets split by a router and then supplies the end customer's routers. All dynamic IPs. And too much difficulty dealing with the internet resellers. We sell our products through distributors who sell to dealers. The time trying to get these situations to work is significant. So I started to look for a reasonable solution. I have not had time to pursue this one yet. And it isn't my job as I do hardware design and not programming.
User avatar
By btidey
#77617
lucasromeiro wrote:
btidey wrote:The role reversal is a useful concept, but it still requires the device behind the NAT to initiate the transaction. In this case the beacon is making periodic connection attempts (polling).

The OP seemed to be seeking a solution where the external device directly addresses the internal device without any delay or action on the internal devices part and without setting something up specifically on the NAT router. Once it is realised that this is not achievable then a number of other methods can probably be used to actually deliver a feasible solution.

What solutions do you suggest?
I'm studying to find out the best way.


Like in most things there is no 'best way'. It depends on what you are trying to achieve.

The first thing to do is to write down the characteristics of what you are trying to achieve.
Like
Maximum number of devices
The traffic required; volume of data and maximum latency time that can be tolerated.
Security requirements

You also need to set out potential resources; speed and maximum delays of the network connections, and what can be deployed for the server.

The two basic techniques are going to be polling from the device or maintaining persistent connections. Polling has simplicity and the volume can be traded off against latency. Persistent connections will give the fastest response but requires extra server side resources to handle multiple connections. Note that device side logic can be put in place to restore connections when network drops occur.

Either method can require significant server side resource as the number of devices scales up so this can mean using either a decent locally hosted server or using a cloud server method if extra scaling is required.
A decent server should be able to maintain several thousand connections depending on the volume of traffic.

One could also look at some commercial cloud solutions that can give this type of IoT hosting support if that was appropriate. For example, Amazon IoT AWS services which can be easily accessed via Mongoose OS. Underneath tey are still using the same basic methods but hide the details and give scaleability.