Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dhess/pinpon
A doorbell service in Haskell. No, really.
https://github.com/dhess/pinpon
doorbell haskell iot notifications
Last synced: 27 days ago
JSON representation
A doorbell service in Haskell. No, really.
- Host: GitHub
- URL: https://github.com/dhess/pinpon
- Owner: dhess
- License: bsd-3-clause
- Created: 2016-08-03T01:01:22.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-08-29T15:01:58.000Z (about 5 years ago)
- Last Synced: 2024-03-14T23:47:36.504Z (8 months ago)
- Topics: doorbell, haskell, iot, notifications
- Language: Haskell
- Homepage:
- Size: 333 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# pinpon
`pinpon` is a silly little service that implements an
Internet-enabled doorbell in Haskell, using
[Amazon Simple Notification Service](https://aws.amazon.com/sns/) to notify
subscribers that the button has been pushed. Effectively, it's a
simple REST service which, when `POST`ed to, will send a notification
to an SNS topic. You can then build a client application which
subscribes to that topic and notifies the user when the doorbell has
been pressed. No such client application is included in the `pinpon`
package, but an iOS app may be made available at some point in the
future.The package provides a `pinpon-gpio` executable, intended for use on
Linux systems with GPIO functionality. When the specified GPIO pin is
triggered (e.g., via a momentary switch such as
[this one](https://www.e-switch.com/product-catalog/anti-vandal/product-lines/pv3-series-illuminated-sealed-long-life-anti-vandal-switches#.WHW8_7GZNE4)),
`pinpon-gpio` will `POST` a notification to the specified `pinpon`
server.Why not simply build the Amazon SNS functionality into the
`pinpon-gpio` executable and eliminate the `pinpon` REST service?
Chiefly because the host system running the `pinpon-gpio` executable
may be particularly vulnerable to physical attacks (after all, it is
presumably hooked up to a doorbell button that is exposed in a public
space). I did not feel comfortable storing my Amazon AWS credentials
on such a device, nor even allowing such a device to communicate
directly with the public Internet. By proxying the AWS access via a
more physically secure host running the `pinpon` server on my internal
network, I can better protect my AWS credentials and limit network
access on the GPIO device to just the `pinpon` service.