How does Philips Hue bridge work? - web-services

I was wondering recently on how the philips hue bridge work in case the device to control is on a different Network (over the internet remote control).
Is there an intermediate server in place to do the job of taking commands and the bridge polls the server to get the devices working ?
Can someone explain ?

Yes, there is an intermediate server at Philips that receives the requests from the Hue app and sends them to the bridge. This is why signing in to your meethue account is required (so that it can link to the right bridge).
How it's made ? No idea, I do not think it's explained somewhere for now.

Related

Unreal Engine Pixel Streaming

I have set up a pixel streaming in UE5 in AWS(Amazon Web Services) it works perfectly on my laptop, mobile and my colleagues system (same WiFi).
When I send that public IP4 link to my client in another city it just appears blank, after clicking the triangle (play button) in Pixel Streaming.
Edit 1: when I change the location(IP) using VPN, it also not working on my laptop too.
EDIT 2:
I'm using UE5 pixelStreaming, It works on many devices/locations, but it didn't work on some locations. I contacted AWS the checked different locations and its working on their side.
surprisingly i didn't do anything it worked on all devices in all locations the next day.
On the next day this problem arise again it didn't work in my client's whole office.
after a few hours, it started to work on some of my client devices(mobile /web browser).
I checked the remote desktop I find out that webRTC data is not coming there.
Why WebRTC data not coming in some of the devices?
I think it might be because you didn't allow access from other networks on AWS, so it only allows those on your network to see it. While not this exact issue, something similar happened to me before.

Scalable login/lobby servers for a multiplayer game

I am developing a multiplayer game (client-server model) and I am stuck when it comes to scaling its servers.
I understand that most games never even reach 10 000+ players, and I don't think mine will either.
Though if I would be very lucky to get that I want to develop the servers so they cannot become a huge obsticle later.
I have searched a lot for a solution to my problem on the internet, checking GDC talks about it and checking other posts on this website, but none of them seems to solve my specific problem.
My current setup is below and all servers are written in C++ using ENet as my network library.
Game server
This server handles the actual gameplay of the game and requires quite a lot of CPU and packages being sent between the server and its connected clients.
But this dedicated server is hosted by the players themselves, so I don't have to think about scaling it at all.
Lobby server
This server handles the server list, containing all servers currently up.
All game servers are sending a UDP package to this server every 5 seconds to say they are still alive.
This is so the lobby server can keep an updated list of all servers currently online.
All clients are sending a UDP package to this server when they want to fetch all servers (which is only in the server
list screen), and the lobby server sends back a list of all servers.
This does not happen that often and the lobby server is limited to send 4 servers per second to a client (and not a huge package containing all servers).
Login server
This server handles creating accounts, lost password, logins, friends and their current game status,
private messages to other logged in players and player profiles that specifies what in-game items they have.
All clients are sending a UDP package to this server every 5 seconds to say they are still alive, while also
sending what game they are currently in. The server then sends back their friend lists online/offline/in-game statuses.
This is so their friends can keep an updated list of which friend is online/offline/in-game.
It sends messages only with player actions otherwise, like creating an account, logging in, changing/resetting password,
adding/removing/ignoring a friend, private messages to friends, etc.
My questions
What I am worried about is that my lobby and login server might not be scalable and that they would have too much traffic on them.
1. Could they in theory be hosted on just a single computer? Or would it be too much traffic for 10 000+ players?
2. If they can be hosted on a single computer, will the servers still not have issues for people that live far away?
Would it be better to have the lobby and login servers per region of the world in that case?
The bad thing about that is that the players would not be able to see servers in the US if they live in Europe, and that their account and items would not exist on the other servers.
3. Might be far-fetched, but if I would rewrite both servers to instead be on a website with a database and make the client/game server do
web requests instead (such as HTTPS or calling a php with specific headers),
would it help in solving my problems somehow?
All your problems and questions are solved by serverless cloud based solution AWS Lambda e.g. or similar. In this case the scalability is not your problem. Just develop the logic. This will save you much time.
If you would like to make servers as single app hosted by your own server. Consider using something like e.g. Go instead of C++. It's designed exactly for these purposes. I mean highly loaded web/network services.
Well, this is c++ and i code in java, but maybe the logic is useful for you any way so i will tell you how i end up implementing something similar but in a casino.
In my case I have 2 diferrent sockets in the same server program, one of the sockets is TCP and it handles all logins, registers and payments, while the second socket is UDP and it handle the actual game multiple payers are playing, then you could group internally all those UDP connection in groups (probably arrays of sockets) to generate those lobbies. Doing that all your server is just one class that could run in a single pc using 2 ports (one for each socket) However this do not solve the problem of the ping for people who live far away.
If ping is a problem (not my case in a casino) you could probably host your server region base but removing the login, registration and paymets of your server and replace it for a connection to a central server (this central server should be TCP and you could also implement a https socket to also allow your webpage to connect to this server and create accounts or pay you directly from the browser)
sorry to mess your life even more, but i hope it helps

How to set up cloud with application and connected IoT devices via 3G/LTE

I am a beginner at cloud computing, and I'm hoping to get some guidance or advice as to how I can set up a cloud connected to IoT devices and a running application to control the behavior of these devices.
Firstly, there are 5 devices that have to connected via 3G or LTE because of the distance among the devices, so the way I am thinking of is connecting them to the internet using dynamic public ip addresses and using a dynamic DNS server. It seems like I should be using AWS-IoT service to manage these devices. How should I go about doing that, or is there a better approach? The devices all use MQTT and/or REST API.
The next step is to write an application and I was suggested to use AWS Lambda, am I heading towards the correct direction? How do I link the connected devices on AWS-IoT to AWS Lambda?
I know the question may sound vague but I am still new and exploring different solutions. Any guidance or recommendations for the right step forward is appreciated.
I assume your devices (or, one of them) has 64-bit CPU (x86 or Arm) that run Linux.
It's a kind of 70:30 balance where:
- 70% of the work needs to focus on building and testing edge-logic.
- 30% of the work on the rest (IoT Cloud, Lambda etc).
Here is what I suggest.
1/ Code your edge-logic first! (the piece of code that you want to execute ultimately on your devices).
2/ Test it on-the-edge by logging on to the devices (if you can) via SSH and running it.
3/ Once you have that done, 70% of the job is over.
4/ Rest 30% is to complete the jigsaw in cloud. Best place to start: Lambda and Greengrass.
5/ To summarize it all, you will create greengrass components on cloud, install AWS Greengrass Core software on your device, followed by deploying your configuration on your device over-the-air (OTA).
Now, you can use any MQTT client (or) biult-in MQTTTester of AWS IoT -> Test wizard to send a message to your topic to trigger your edge-logic on the device!
Good luck!
cheers,
ram

Why is my AWS DeepLens unable to connect to WiFi?

I am setting up my AWS DeepLens and all the steps have been successful until I try to connect to my home WiFi. How do I fix this issue?
I created a hotspot on my phone to test against a different network and this connection was successful. Then, I switched back to my home WiFi and it connected successfully.
This section of the troubleshooting guide will also fix the problem.
We found that the AWS DeepLens only has one network adapter which it uses both for its own hotspot and connecting to the network. If you are connected to it via any other means (e.g. via a phone) it will throw a hissy and start dropping the connection, repeatedly and seemingly randomly.
When we connected a monitor directly we then found it was stuck on a viewable password prompt, hence why it was not connecting to our network.
Best method by far (and from our experience, only usable option) is to connect directly to the device so you can see what it is doing. To do this you need USB keyboard and mouse, and a mini-HDMI to HDMI cable to hook up a monitor. This will free up the network card to do only one thing.
When connecting please note that the default admin password on ours was "aws_cam". This does not seem to be noted anywhere in the documentation. This will change when you go through the setup process and sync it with your AWS account.
Repeat the process by inserting a pin in the hole at the back of DeepLens. Wait for a few seconds, the wifi indicator (the middle light) would blink and then you can connect with Deeplens wireless network. Then you can open http://deeplens.config where you can configure your home wifi and complete the setup.

How to incorporate ports / sockets for direct tunneling with p2p darknet app

I'm building an app which upon login will connect you to certain ip addresses of which will also be running the same app.
The method of which i believe i should be using is direct tunnelling but as i say im a little new to c++, i have general coding skills, and i have sifted through a lot of forums and sites yet im still very unclear on what the best way forward is to achieve the requirement.
The reason for the connection will be to enable a secure chat, file transfer, and update software auto when connected to the program admin.
All those that have the app installed will once authorised, will be connected to admin client, then from that client all available ip's to connect to will become available to slave clients, this will increase the network size avilable to all users.
so the app needs to be able to handle ports but not via a server, instead it would be direct.
The connections also must ideally be encrypted.
Im kind of looking for what the application RetroShare does, but in text app.
(This is using C++ within Dev C++)
so just to recap, What method should i use to achieve the above?
I would take a look at SDL net to start with, its really simple to learn if you have never done any socket programming before.
for a secure connection you will probably want to start with TCP and then once you get the hang of network programming, start looking at other protocols.
Hope this helped! and good luck.