I figured that it'd be nice to let people know when the bus is supposed to be there. So, I installed a 28" display on a monitor stand, installed the stand on my window frame, turned the monitor to face the bus station, and show the up-to-date arrival time in a very big font (the buses have GPS; the Pi gets the real time info from the local transit authority).
This is in Montreal. Some info here . And a little video .
Btw, from some experience spending cold winters looking at it, it flickers a lot by having so many screen changes, making it tiring to see the screen change so much. L'AUTOBUS - SERA - LA - DANS - 5... - MINUTES - GREG . - TECHNOLOGY. It would be easier on the eyes if it changed less often.
Thanks so much anyways!
Agreed on timing, it could be better. I'll consider skipping some of the words + make them appear slower. Thanks for the suggestion!
I think that makes sense, yeah. I would rather not flash other digits (55) as that could be confusing for someone who sees that number go by (was that the bus number or the number of minutes?)
I'll be there in 5'
Also, since this is a sign seen from about 10-15 meters away, using an apostrophe might lead to confusion (it might not be clear to read).
The aesthetics of the big flashing words are also intentional. Way, way back in my brain there was definitely  playing while I was creating this. :-)
 * * * WARNING A lot of Flashing Lights! * * * https://www.yhchang.com/SAMSUNG_MEANS_TO_COME_V.html
You'll also have 50% more screens in the same amount of time.
No, just kidding, I am in France but the idea is awesome. Simply fantastic.
P.S. does the transit authority offer an API or is this prone to breaking when they change their page layout?
[edit: I just read about the rumor on your webpage. Clarifies.]
As many other transit authorities, the STM  offers "GTFS" data (a standard feed format for transit info) .
Mucking around STM's public site, you'll also see the schedule information go by if you inspect the network requests. From what I've seen, their API endpoints are stable, reliable and fast. I've had to do ~2 updates in >1 year of service.
[ edit: that rumor is just a rumor :-) ]
For MITMProxy you can visit http://mimt.it when the setup is running.
A bit more difficult with “pinned-setificate” where you have to:
1) Decompile the app (easy if you search for the online APK-download and APK-decompile tools)
2) Move the certificate out of the APK and use it for the traffic between MITMProxy/Charles and the server
3) Replace the certificate in the APK with one generated for MITMProxy/Charles, or just delete it if that works for the app (most likely not)
4) Re-compile the APK and install on your device
5) Run MITMProxy/Charles as before, just with some parameters to load the “pinned-certificate”
(There is also a lot of guides for this. Maybe not for pinned-certificate.)
Lots of people use app so when the bus is about to arrive the bus station will suddenly get busy and full of people.
I wanted to do something similar to try and reinvent the old/ugly/hard-to-parse televisions scattered around the DC metro.
Awesome public service with the Pi bus times though, love it!
Nicely done. Hopefully the construction there will end soon, too.
Also, paper schedules have been part of all stops here for a long time. Considering that the buses are pretty reliable, the paper schedule typically does the job. And you can always use the transit authority's website or one of the many mobile apps to see if there's an unexpected delay.
Well, I just don't recall when I saw a public transport stop that does not have the digital sign here in the Netherlands. The paper version is always provided as well. But I suspect that it works like this in large cities only.
In any case, one of the neat things about the Pi sign is that it works for everyone (whether you have a phone or not), and is part of the urban landscape. You can use your phone for more important things, or just leave it alone a few minutes while you wait. :)
The pi runs a reddit bot that reads the votes, and can switch on a pump to water. It also collects data about sunlight, moisture, temp and humidity to help inform the decision about watering. Despite many people's preconceptions about the goodness of the internet, I must admit that they do a wonderful job caring for my plant!
subreddit w/ voting: http://old.reddit.com/r/takecareofmyplant
Maybe I should create a subreddit where people can control a bot that has access to my bank accounts so they can manage my finances, invest some, etc. ;-)
Set up a system like that wrong, and it doesn't matter how smart the crowd is, you're going to lose all your money. It would be interesting to play with the parameters of the game and see how results changed. (how often trades are made, max portfolio % per trade, voting mechanics, etc.)
You'd want to play to the 'wisdom of the crowd'.
Perhaps some kind of voting on a selection of likely stocks?
Maybe introduce sales after it's been around for a year. (Though I'm not sure which mechanism, DCA doesn't work in reverse.)
Raspberry pi is automatically uploading video of each watering to YouTube (https://www.youtube.com/channel/UCtl442fLi6KAOowkw_w83rA/vid...) and informing me with summary (incl. watering duration, soil moisture level, temperature, humidity, light level etc.).
Not that I care that much about the plant but automating it has been fun. It's been on auto pilot now for a couple of months now and the plant from the looks of it seams to be happy.
Availability of water level at source is checked by a non-contact liquid level sensor.
Triggers for watering plant are defined as follows:
1. There is water in tank / source (checked by non-contact liquid level sensor)
2. Soil moisture level is below certain threshold (measured by 2 soil moisture capacity sensors embedded in the plant)
3. Watering duration is determined by current soil moisture level; Python script activates relay to run the pump for the right duration.
4. Same python script also:
- activates camera to record watering (+2s buffer to have all on the video) via usb cam connected to the pi (leveraging opencv lib)
- uploads recorded video automatically to youtube channel (if pi has internet connection)
- summarizes watering event and sends me notification with link to the recording and other helpful stats (temp, humidity, moisture level etc.)
- saves all metrics to sqllite db for future reference
Key parts I ended up using for the project:
1. Water pump: https://www.amazon.com/gp/product/B01LWXV7DE/ref=ppx_yo_dt_b...
2. Non-contact Liquid Level Sensor -XKC-Y25-NPN: https://www.amazon.com/gp/product/B07D3246BH/ref=ppx_yo_dt_b...
3. Gikfun Capacitive Soil Moisture Sensor: https://www.amazon.com/gp/product/B07H3P1NRM/ref=ppx_yo_dt_b...
4. Relay: https://www.amazon.com/KeeYees-Channel-Indicator-Arduino-Ras... (though I just bought my when visiting Fry's)
Primary motivation to do the project was so that wife can have pice of mind knowing plants are taken care of while we are away on longer trips.
Hope this helps.
Out of curiosity, how did you come up with this idea?
If you have interest in doing something similar, come check out the subreddit and feel free to DM me on reddit or twitter. Always happy to talk about plants and automation
my pihole also blackholes them
I interfaced a toy excavator remote with an Arduino and also put a small Cozmo robot online from time to time. Some people took their robots outside even :)
- Outdoor irrigation control via OpenSprinkler Pi: https://opensprinkler.com/product/opensprinkler-pi/
- Z-Wave home automation via ZWay: https://z-wave.me/products/razberry/
- 2 Custom HAVC thermostats using: https://github.com/jeffmcfadden/PiThermostat
- An NTP server with GPS attached for a time source.
- 2 for weather monitoring (one directly attached to sensors, one that aggregates the data from a few sources and provides reporting)
- A sort of centralized "workhorse" Pi that runs a lot of random cron jobs, etc.
- An Alexa gateway for home automation
- An NES emulator
- An infrared-remote source for turning on/off surround receiver, TV, etc.
- Monitoring of HVAC temperatures/performance
- An intranet server
Assuming I didn't forget anything.
- Turning lights on/off around the house, because I found cron to be a more reliable scheduling agent that the one built-into my Wave software when I first set it up.
- Testing network performance (ping times to various locations)
- Fetching a mail account and processing the messages for an automation I have setup for some things.
- Updating online weather services with data from my weather station.
- Kicking off data gathering/update jobs.
I moved some stuff out of cron into systemd and although it worked, it was over-complicated in an infuriating way.
I realize systemd is useful, but the implementation is like trying to navigate through a teenager's bedroom trying to find something.
So, I hear people doing this alot. However what exactly does this help with? Like, is the extra information really more useful than just the standard old TV weather forecast?
I do find it interesting to see the differences in temperature (and humidity, etc.) in the microclimate around my house compared to the city and greater metro area.
I also use the data to measure the performance of my home's HVAC system. Doing this _does_ require real-time local temperature and humidity data. But again, this is all for fun.
I just enjoy it.
Adafruit has a bunch of sensors that work over the i2c bus; they’ve included python code for accessing the data as well, which makes it easy to get started.
There are sensors out there for everything. Absolutely everything.
That is as good a reason as any!
I'm really benchmarking the system against itself, year on year, by comparing the weather outside vs. performance (output temperature of the HVAC unit, average temperature inside the house).
I'm not trying to find an objective efficiency rating so much as monitor performance over time to see if it's changing.
Whats your success with this? I am not referring so much to the Raspberry Pi part - but the actual ZWave protocol and whatever mesh network it creates. Is it reliable? Or do your lights flicker on and off randomly?
My experience is that it has all been rock solid. I’m using most GE branded in-wall light switches and they’ve been very reliable for me. Misc other brands for the other modules.
I’d recommend it.
Why 2 temperature sensors? Turns out the BME280 runs about 2°F hot, and the 18B20 is right on, so I end up using the 18B20 as my primary temp sensor.
Every minute a cronjob runs and the Pi takes readings from the sensors and stores them locally.
Then, I have another Pi that, every minute, reads those values and stores them in a long-term database (I have about 5 years of weather data at this point). The long-term database is running a custom Rails app I wrote to report on the data and show graphs, compare weather over years, etc.
In theory this could all live in a single Pi, but for various legacy reasons I ended up with a dedicated Pi for data processing, and a dedicated Pi for data gathering.
There's also some efficiencies from having everything on the same hardware platform.
But mostly it's just comfortable for me.
At the beginning of the project, I'd barely powered up the Pis I had collecting dust in my drawer. By the end, I was a legitimate domain expert in several niches within niches of Pi dark arts. For example, since Pis do not have hardware clocks, you have to rely on NTP. However, you need to take pains to make sure that each Pi is getting the same amount of voltage or else they will run at different speeds. If you want to power 70 Pis in a constrained space, you need to devise a customized power distribution system with adequate heat venting.
Due to the thin effect, voltage drops over distance, so the distance a Pi was from the power would impact the voltage and therefore the speed. The major breakthrough came when I realized that I could start with a high end power supply outputting 14 volts and terminate each parallel line with a device known as a UBEC. They are used primarily by drone enthusiasts to make efficient use of battery packs.
A UBEC is designed to drop down a supply voltage to 5v without bleeding off the excess voltage as heat. Since this could also describe a fuse, we felt comfortable bypassing the Pi's MicroUSB power supply and attaching the UBEC's pins directly to the top pins on the Pi's GPIO breakout.
That's just a tiny example of the hijinx. The Pi is an incredible tool if you're patient and clever.
What a rollercoaster.
For anyone attempting something similar, here's my boy scout good deed for the day: http://www.banggood.com/External-Brushless-BEC-UBEC-3A-5V2-5...
It's entirely possible that you could get a cheaper buck converter, possibly for pennies. However, this was not where the money was being spent in our project... and if we had to do literally anything to it to prepare it for use (such as soldering on a pin socket) it would have destroyed any cost advantage.
All depends how many of whatever you're building, I suppose.
However, I cannot state enough that the price of this small component was simply not where the costs accumulated on this project. We geeks have a nasty tendency to over-optimize things that just don't matter in the big picture. You totally nailed it when you mentioned that this device is a packaged (and QA'd) product. The fact that it just slips right onto a Pi's GPIO pins without requiring any further modification is what makes this such a win. If you have to do anything to [70 units of] a component to make it work, you're blowing up any miniscule price arbitrage anyhow.
With the firefly analogy, it's like having one firefly flashing at 1.73513x (random number) faster than it's neighbor - can't easily have them persistently synchronized.
Unfortunately, I also have literally no idea what you're proposing. I would like to, though.
Second: I worked alongside a brilliant team with rare knowledge of geometry reconstruction. We took the 70 images of people, algorithmically removed the backgrounds and then used a proprietary process to create a mesh geometry from the intersection masks of those shapes in 3D space, which all had to be carefully calibrated on the regular. That geometry was smoothed to create a valid smooth human mesh. We then created a texture which would be mapped to the physical geometry of the mesh. All lighting and camera sensors had to be carefully measured and corrected, with ample algorithmic color smoothing along the seams of this texture. Then we ran our proprietary auto-rigging algorithm on the mesh, and exported both a 3JS compatible obj+jpg as well as a Unity bundle. The entire process was optimized to take under 60 seconds. This meant that you could step out of the booth, watch the magic happen, and then immediately put on a Vive and interact with yourself in a mirror using your fully articulated new avatar.
Third: VCs were unwilling to fund something with a hardware component
Some day, I will write a book. It’ll be a doozy.
Reflecting on this conversation, it occurs to me that I should strongly consider publishing a string of #1 on HN deep dives on what I learned to pay it forward. ;)
Your point about voltage fluctuation affecting clock speed already has me re-evaluating my current solution. Also I'm really curious about your custom cameras. Thanks for sharing!
The business plan morphed significantly during our 4-year run, from 3D pet scanning to location-based branded marketing to what was going to be a big gaming focus (my vote) or glorified 3D emojis (their vote).
I wanted any game/experience that featured characters/avatars to be able to allow people to play as themselves. I didn't get a chance to see that concept through.
So I installed a fire-protecion-approved door drive that is hooked to a raspberry pi. Another raspberry pi then analyzes a video stream and detects my cat. If my cat is in the frame for n amount of time, a message is sent to the pi conntected to the door drive and the door opens up slightly for him to get in.
A cat door that can tell if the cat has a mouse it's going to "gift" to you, and locks to keep the cat out.
I loved reading what you are doing with the Pi though.
Since last week I'm in contact with the manufacturer of the door drive tough because they maybe want to create a product out of it. To be honest I think it would pure marketing and at the moment it is very unlikely to ever hit the market.
Unless your cat door goes to market. May luck be on your side :)
(really, don't underestimate niches, you can probably find plenty of places to sell this sort of product...)
Maybe a bit off-topic but: The only thing that differs an "fire-protection approved" door drive from a non approved drive is that the drive is not allowed to have an option to keep the door open. Also in case of power outage (or fire) the door needs to close without power.
I look at it this way: If you want a remote device that measures or controls just one or two things, but does very little if any calculations - use a esp8366/32 (or anything with low power requirements). If you need to process data (video stream), or do other calculations, potentially while controlling many different sensors/things - you'll likely want a raspberrpi/similar
If you can come up with a reasonably secure way to get an ESP8862 to unlock your door that I can't sniff from across the street with a pringles can hooked up to a wifi dongle running in promiscuous mode (perhaps with a pile of off board AWS to crack your WPA key), I'd be interested in checking it out.
I'm not saying it can't be done. But for _me_, I'd prefer to piggy back on all the battle tested tools available in linux like OpenSSL rather that pretend I can write bulletproof crypto code for the constrained resources available on the esp. And I'd prefer to run my unlock signals over wires rather than over a radio. I'm cautious like that.
There's definitely something to be said for not having the surface area of some hobbiest-grade linux distro on your door locks also. I'd like to perform a "security update" on my door locks just about never.
Anyway, the esp32 has a tls stack which is adequate if you want to go that way. Lately there are a handful of boards on the market that pair the esp32 with a PoE chip that are becoming my goto for little "iot" projects.
So I'd go with something like an Adafruit ESP32 Feather . Sure it's super impressive that one can pick up a perfectly functional anonymous board on eBay for almost nothing but, for getting started, $20 for something from Adafruit will save you a lot of initial hassle.
MicroPython on ESP32 .
MicroPython specifically on the Adafruit ESP32 Feather .
This is a link to the exact one I bought since you asked: https://www.ebay.com.au/itm/283082902927 (not actually branded TTGO, it's a clone)
Why you might like it:
- it has an OLED screen on the board for debugging and status output
- it has a battery holder and charging circuitry for an 18650 on the back of the board for portable powering/"UPS"
- it breaks out all the GPIO lines onto pins
Why you might not like it:
- like many esp32 dev boards it's slightly too fat to go straight into a standard breadboard. You have to join two breadboards to get access to both rows of pins.
I will open source everything once I'm happy with the security and the ability to configure it.
Reads like a monty python sketch.
I found a braille display which features a small compartment with micro-USB inside. Used a Pi Zero (these days 0w) to transform that braille display into a full-features Linux laptop. I documented the first version here: https://blind.guru/brlpi.html
You make reference to fonts. I assume this isn't font in the traditional sense, ie the look (feel?) of a character.
This dependency on the loaded font has been removed with linux 4.19 and brltty 6.0. Now, there is a new device (/dev/vcsu) which can be used to read the unicode codepoints of characters on the console, without having to go through the loaded font.
I assume its for differing reasons? You would want an X to always be an X and what feels most like an X to you, and not be worried about whether the X is Ariel or Times New Roman.
Does it extend further to do italics and such?
I had naively thought the screen would do all the heavy lifting in this situation, feed it text, and it converts it to braille.
The real reason we ever wanted to get a landline was because of this issue, so instead of wasting money I just used spare parts to make an alert system I can activate remotely. I can also use the 'say' command for text-to-speech, but that's not really effective. The old school phone ringer wav is perfect.
Once, when I was working away from home, someone unplugged the phone at home so I couldn't phone in. After becoming very frustrated, I SSH'd into my home server, and from there into the Mac Mini we used as a media station. Then:
- checked they were watching something using `ps`.
- killed that process so I had their attention.
- `say 'this is dad, I'm inside the computer.'`
- `say 'I want to phone you but you have unplugged the phone.'`
- `say 'plug it back in'`
 Also interesting is the time I discovered that sending a special escape code to the printer caused the cash drawer to open, but that's a tale for another thread.
My kids weren't replying to text messages about being ready to go to an appointment that we were pressed for time on, and I was on the way home, so I did that to tell them to get ready. A few seconds later I get a text from my wife: "How'd you do that?!?"
I also have a "haptic test" function: press the button, the phone vibrates briefly. I originally created that check the delay on the Pebble-Tasker connection, but ended up using it almost every day to find my phone among the clutter in the house.
Tasker is amazing, if you have Android, I recommend checking it out.
 - misplacing a phone while having it still in Bluetooth range actually happened to me once long ago with a feature-phone. I looked and looked and couldn't find it. It was set on silent, so calling it didn't help. Then I noticed it's still connected via Bluetooth to my PC's phone management app, so I manually turned the ringer on, and discovered it deep within the mechanism of my bed. Finding it there without this trick would probably take me hours.
Better off forcing a ring in the home than where you can't foresee the consequences.
In the same sentence as performance and a restaurant, not less.
In contrast (and yes, my intention was contrast), if the wife was hiding from a shooter then her ability to maintain silence is required for life. Airplane mode isn't great, because she should be texting/tweeting/etc.
Thus, best to not let your silence be overridden.
For non-life-safety reasons that the husband might be trying to reach the wife, that could be solved via agreement ("keep your ringer on except in emergencies") instead of brute force.
For instance, my wife has her phone ALWAYS set to silent. I like all the suggestions here.
I think the "active shooter" situation is a bit of a stretch, to be honest.
"the kid is vomiting and school needs us to come get them asap, which one of us is more available?" is not a life-threatening emergency, but it's a family emergency and needs attention. It also happens a lot. An awful lot more than your "unlikely to happen to most people in their lifetime" contrived scenario.
As a workaround, I’ll use the “Find my iPhone” chime which is the one way to bypass the hardware switch if I need to get my wife’s attention while the phone is set to silent.
1 Raspberry Pi for a running a very stupid sitcom sound thing. Using a camera it tries to recognise who you are, then play a random sound assigned to you out of a little speaker. Think of like the cheering/clapping when a guest or celebrity enters the room in a sitcom tv show, and replace out the clapping with whatever sound you want.
And for the general radio, I use the RTL-SDR Blog USB dongle - https://www.amazon.com/RTL-SDR-Blog-RTL2832U-Software-Telesc...
In terms of the random radio transmissions, it was simply because I was already installing the two ADS-B antennas in my attic, and thought I might as well just put up the standard telescopic antenna that came with the USB receivers as well. I'm a newbie in terms of radio, so it's just been interesting scanning the bands to see what you can find and listen to.
A future project I have is to try and pick up the 443Mhz transmission from a really simple weather/temperature sensor I got from Walmart a while ago, since apparently that's what it uses to talk to the little base station it came with.