How to connect from webpage to raspberry pi locally to control solenoid lock - raspberry-pi

I already have a web app but I want to be able to control the solenoid door lock using my web app. Is there a way to control raspberry pi or send data?

You can make a simple web socket on the pi that listens to a node on the web app.
(Think of this as performing an HTTP read on a url in a loop, the url points to a bit on the web app, that changes when the button is pressed)
Look into how the web app is hosted and it might be possible to have the button set a bit that the pi can read.

Related

Attaching video stream from ESP32-cam web server to ESP32 web server

I'm trying to build a wireless robot using an ESP32 and ESP32 cam. My idea is to use the ESP32 to control wheels and other sensors, while ESP32-cam is attached on the robot and sends live video to the user via a website. At the moment, I have made two separate websites for the two boards and they work as expected. However, I want to somehow "integrate" these two websites into a single one so that I don't have to open 2 windows for each boards to monitor the robot.
I'm using this library: https://github.com/me-no-dev/ESPAsyncWebServer for the ESP32 website and following this tutorial: https://randomnerdtutorials.com/esp32-cam-video-streaming-web-server-camera-home-assistant/ for the ESP32-cam web server.
One solution I'm thinking of is to paste the link of the stream to the ESP32 web server. This could be the fastest way, but I'm not certain whether this is possible or not. Any suggestions would be great!

Hosting PyQt Application on Server

I have written a PyQt Application that runs on my Raspberry Pi. Now I want to take it a step further and access the Application from other devices while it is running on my Pi. The Application has to be interactable, see the images.
I imagine I would have to setup the Pi as a Server (There's tutorials on the Pi website), but how do I actually access the GUI then? It's supposed to be like a remote connection but just through a web browser without installing third party software on my device.
you are thinking of pyqt as a presentation layer. it is not that.
you would have to rewrite your app as a client-server app, separating the logic from the presentation.
google for "client server programming model" for some idea's
good luck

Secure, local IoT Device Discovery using PWA without a remote server

I'm looking for a way to managing and controlling IoT devices without the (constant) need for a remote server to be part in it and with a PWA instead of a native application on the managing device. The resulting goal is an IoT device that keeps working when a product eventually goes obsolete (no more server running/allocated) and having an application that has PWA benefits like always up-to-date, easy to replicated and cheaply hosted on something like S3.
As an example, let's say I have one or more IoT devices of different classes like an ESP8266 and a Raspberry Pi for instance. Just as with any new IoT device I want to add it to the network and from there on manage its state from an app. The app in this case is a PWA instead of full blown native app.
1) Traditionally, in the initial setup a native app would scan for wifi networks, connecting automatically to one that has the right name. Using PWA's we are limited to just the "state" of the network. So users would have to manually switch to the network of the newly connected IoT device. This is okay.
2) Next up, the user would need to enter his/her wifi credentials. There might be methods to set this up automatically using a native app, but I don't believe this is the case on a PWA. This, also, is okay.
3) The device then restarts, tries to connect to the network set up in (2). If set up correctly it should get its IP using DHCP. And now things get difficult. I want to 'discover' that network from my PWA. There used to be a way to retrieve the IP from a device using the WebRTC API. but that since has changed to show an obfuscated mdns that resolves to localhost. The ip leak would have allowed for a browser based network scan, but that is no longer possible. I always hoped that Android would default to using a users router as a DNS server, but that is not the case. The result is that simply using an mDNS isn't an option either. I do not want user having to check their router, install an app like fing or do anything else that disrupts the flow from a UX perspective.
Step (3) needs to run every time the app starts so you'd want something reliable. Scanning for devices isn't possible using a PWA, so I need to find another method. I was thinking of something like the way Docker containers can find each other in between networks (see etcd for example), using a predefined key that is shared during installation. The problem with this, is that it requires a remote server to store the IPs attached to that key. I don't want that.
Ideas on how to solve this are very much appreciated! I want to be able to offer a solution that would work even when WAN is out. That being said, I am aware that a connection to a remote server is needed if the end user would want to enable any voice assistant or wants to control a device from WAN.

Electron app that opens a server or using sockets over the web

Im making an app that multiple players can connect to, but im brainstorming the best approach.
Im going to be using electron for the interface and then be able to use other computers to log in to website to join the game with multiple players.
I will use sockets to connect to each player, but what i am trying to figure out is whats the best approach for the interface.
Should i use express with electron to somehow connect to the same website the players are on?
Is it possible to make the electron app start up a server and have my website direct to the computer that is running the electron app?
Or my other option was to just continuously upload and download from a database, but I feel like that would not be very efficient.
You're on the right track. I would suggest using a WebSocket based server / client architecture.
The server application is continuously running and handles inter-player communication as well as providing a database. The database could be integrated in the server application as a starting point, and, depending on your needs concerning scalability, be extracted as a standalone service in the long run.
Client applications could then come in many forms (a website, a desktop application, a mobile app). Using electron is a great way to enable cross-platform desktop application development that is adaptable to any of these scenarios, possibly also enabling to extract the contained web application as either a hosted website or even mobile application (using, for example, react-native or nativescript).
Good luck!

Secure iPhone-Desktop Connection

Background
There are a lot of App Store released iPhone apps that require an IP based server on the desktop so that the iPhone can connect to the desktop as a client. For example, there are many programs that emulate a keyboard, touchpad, or Apple remote on the iPhone so that a desktop computer can be controlled over wifi. However, many of these applications get around writing their own server by requiring the user to install some VNC server variant.
Question
What is the best way to implement a secure (encrypted) IP server on a desktop (Mac and Windows platforms) that allows for simple two way message passing between itself and an iPhone client on a wifi network?
Sample Use Case
An event on the desktop causes the desktop to push a small image or text to the iPhone. An event on the iPhone causes a short text message to be pushed to the desktop. Any single event can happen at any time (doesn't appear synchronized to the user).
1st Follow-Up Question
Would this type of project be best handled using something like XML or JSON over HTTP? Or is there a better protocol, like BEEP or Bonjour(XMPP)?
What is the best way to implement a secure (encrypted) IP server on a desktop (Mac and Windows platforms) that allows for simple two way message passing between itself and an iPhone client on a wifi network?
Not sure if there is a "best" way, but much code is already available to do xyz-over-HTTPS (TLS/SSL). In that case, the "xyz" can be any web-based message exchange protocol, such as XML, JSON, etc. via REST or SOAP, etc.
If you want to be able to push events to a non-jailbroken iPhone you can't do it other than via Apple's Push Server which causes a notification to the client program if it is running or otherwise displays an alert of some kind to the user.
Typical architecture has those notifications handled by the client program as an indication it should go and get some data from the server - Apple insist we do not regard the notifications as trusted delivery.
I suggest a read of this article on using Bonjour and local networking, whilst it's iPhone to iPhone it should apply to desktop OS/X also.