*Note items in the list may have been re-listed later and funded. Some projects may have been ahead of their time as the Pi wasn't popular enough.
Monday, September 28, 2015
List of 18 Crowdfunded Raspberry Pi Boards That Didn't Make It
*Note items in the list may have been re-listed later and funded. Some projects may have been ahead of their time as the Pi wasn't popular enough.
Sunday, September 27, 2015
Raspberry Pi Relay Boards Compared
A Comparison of some add-on/hat relay boards that are fully compatible with the raspberry pi. This list is only for boards that connect directly to the Raspberry Pi's GPIO.
If you have one of these and you recommend it. +1 it :-) to help others. Comment below if you don't see one on here and I will add it. Please include a link to the seller. All prices are priced as of 09-28-15 and do NOT include shipping. Some Items may not ship to and from the US as it includes foreign shops.
| Board | Relays | Extra Inputs |
Extra Outputs |
Stack-able | Size | Pi Ver. | Price (usd) |
+1 |
|---|---|---|---|---|---|---|---|---|
| PiFace |
2 | 8 | 8 | YES(8) | A/B | A/B | $35 | |
| PiFace Rev 2 |
2 | 8 | 8 | - | B+ | B+/2 | $44 | |
| PiFace Relay+ |
4 | - | - | YES(8) | A+ | A+/B+/2 | $46 | |
| SeeedStudio Hat |
4 | - | - | YES(?) | * | * | $32 | |
| Plate Shield |
4 | - | - | - | B | A/B | $35 | |
| LN Digital Interface |
2 | 8 | 8 | - | A+ | A+/B+/2 | $35 | |
| MiniPiio | 2 | - | - | - | 1/2 | A/B | $18 | |
| OpenElectronics I/O Exp Board |
8 | 8 | - | YES(8) | Large | A/B | $30 | |
| BCRobotics Relay Hat | 4 | - | - | - | A+ | A+/B+/2 | $19 | |
| Temperature Controller Plate | 2 | TypeK Therm. |
4 | YES | B | A/B | $50 | |
| 2803 4 Relay | 4 | - | 2 Stepper Motor |
YES | B | A/B | $34 | |
| 2803 2 Relay | 2 | - | 2 Stepper Motor |
YES | 1/2 | A/B | $25 | |
| Ps-6 Relay Hat | 6 | - | - | - | A+ | A+/B+/2 | $50 | |
| Slice of Relay | 2 | - | - | - | 1/2 | A/B | $17 | |
| Rpi+ 2Relay Hat | 2 | 1-Wire | - | - | A+ | A+/B+/2 | $23 | |
| OssoPi I/O Board | 8 | 8 | - | - | X-Large | A+/B+/2 | $103 | |
| ER-OPTO Relay4 Hat | 4 | - | - | YES | A+ | A+/B+/2 | $22 |
Sunday, September 20, 2015
5 Ways to Secure Your Raspberry Pi's Websocket Server.
Websocket's are a great way to transmit real time data. I use them quite often from transfering picam to the web, controlling lights, controlling a raspberry pi picture frame, and controlling my sprinklers(pending post). ALL with the Raspberry Pi. But if it's done without security someone somewhere can tap in and take control. Things could end up pretty bad if it's used to stream video and control lighting.
1. WSS (WebSockets over SSL/TLS).
First I strongly strongly recommend SSL/TLS encryption. Just like https it encrypts the traffic between the client and server. Nothing should be transmitted in plain text to a client. Anyone smart enough to be listening on the connection can probably find out how your websocket protocol is working and take control. For examples on how to create a wss capable server refer to:- NodeJS
- Autobahn Python (Twisted):
2. Query String Authentication
Creating a connection connection to your websocket server by your connection parameters (sometimes a username/password) and appending it as a Query String to the end of the connection: var websocket = new Websocket("wss://rpi?user=Eben&password=Upton");
I don't recommend doing it that way especially if you don't have a secure SSL/TLS connection.
3. CHAP Authentication (Challenge Response Authentication)
I was not liking the query string method and knowing that just securing the channel using SSL/TLS wasn't enough I tried implementing a CHAP authentication routine for my Autobahn WS server on my Pi.
CHAP explained on wikipedia. CHAP is a 3 way handshake:
- Client Connects to the websocket server, server then sends a challenge string (random characters of random or set length) to client.
- Client responds with the hash of the challenge+'shared secret'
- Server calculates the challenge it sent and the 'shared secret' it has locally and compares the client's hash to it's own and either authenticates (adds it to approved clients) or drops the client.
The javascript library I used for SHA256 is found here
4. Basic/Digest/Forms Authentication
Basic/Digest is a common way the web authenticates it's clients. Uses a username and password authentication and there several APIs that support it. Explanation of Digest Auth
This can be done before a connection to the websocket server is made using a post to the server. The server can then add the client to the list of accepted connections.
5. Auth Header
*This only works if the client is NOT a webpage. Just like basic/digest authentication some websocket servers can read custom headers. Through the current web api for websockets you are not able to modify the headers in any way. But your client may able to change his auth header through nodejs, autobahn, and socketrocket
Bonus. Using A Third Party Authentication
One way to authenticate it use a third party authentication service.
- Autobahn's github has an example of using Mozilla Persona,
- Node js' authentication strategies (not with websockets but may be possible to implement)
Please share
Subscribe to:
Posts (Atom)















