Open-Source Home Automation
home-assistant.io
home-assistant.io
Couple that with one of the friendliest communities for newbies I have come across in a long time and you have something really awesome.
I've been using it for a couple of years, I have tried all the other open source alternatives but nothing really comes close for me. I'm actually fiddling with my installation right now as it were.
I cannot plug my phone in to charge it up myself obviously, so I am writing a little automation that will check who is in the house and announce through the speakers my phone needs charging up or send them a text message if I have their phone number when my mobile phone charge gets below 20%.
Totally cool beanz and I am totally serious about how much easier this makes my life as a quadriplegic.
I’m curious to know how you’d rank them by usefulness.
The most commonly used automation by a very long way are the lights, because I use voice operated computer people were continually coming into my asking if I was okay because they could hear me talking. This obviously was crazy makin.
So now they ignore all talking unless they see:
All of the lights pulse on and off in a blue colour, which means can you please give me a hand when you have a minute I would like a drink or something similar and it is not urgent.
Or
All of the lights pulse on and off in a red colour, which means drop and come running as I am having and episode of autononmic dysreflexia, my hair is on fire or something equally problematic. It is a very much urgent.
after that I would say that these three are the most used, I'm sure there is a way of pulling that information out of the database but I'm not sure how. If someone from home Assistant Team would like to tell me, that would be great!
* Battery Level on iPhone is below 20%, get someone to plug it in * Notification asking that the basement be closed when it starts raining, or if someone opens the window when rain is predicted to please close it * Logging whenever the medication draw is opened and closed and keeping a running tally (this one is super important)
actually,
Thanks for making me eat humble pie and broadening my views. Sometimes more tech is helpful indeed.
Ps: The way you're applying it is creative and awesome too!
It is one of the wonderful things about this place, who gives a crap about the emotion being quadriplegic (I certainly don't) let's just solve the logistical problems! And as far as I'm concerned all of the problems that disability has introduced into my life have solutions that revolve around logistics, which project/process/company/widget do I need to buy/invent/collaborate on to make this thing work. It's great.
Do you mind if I ask how much precision your conveyance of choice has? I've built docking stations for small mobile robots by mounting qi receiver pads [1] on the robot and compatible phone chargers [2] on walls where the robot can drive up to them to recharge. If you have enough precision you might be able to do the same thing, mount a pair of pads somewhere, run a cable from the pad to your phone, and dock them together to recharge.
Hmm. Not sure what to do if you don't have enough precision to dock a pair of charge pads like that. Maybe... put the one on the wall on a horizontal rail at the correct height and add a motor to run it back and forth until it starts charging? Maybe mount it on a small robot arm?
[1] https://smile.amazon.com/Wireless-Charging-Receiver-Qi-Stand... [2] https://smile.amazon.com/gp/product/B07MZPCC7X
Apple has a very very awesome accessibility software, it is seriously the best of the world and I have tried all in the decade since I became a full-time wheelchair driver. I use a chin controller to drive my chair, and I also use the chin controller to access Apple's Switch Control[1] using the Tecla Bluetooth bridge. As soon as funds permit I will be updating to the new Tecla as it is an amazing device, it really is the missing link.
This means that anything you can do on an iPhone I can do the same, it is not some subset of commands like most other mobile platforms. Once a new phone or any of the other Apple offerings is taken out of the box, I can get my designated hands to turn on the accessibility software and from then on I can do it all myself. There is literally no the company where this is true. As far as I know.
If I understand you correctly, it might be cool when my iPhone is connected to my wheelchair to be able to drive up to something while I am working and have it charge. It would have to be pretty robust as I will drive into it at some point!
[1]: https://gettecla.com/blogs/news/15538916-what-is-switch-cont... [2]: https://gettecla.com/
> If I understand you correctly, it might be cool when my iPhone is connected to my wheelchair to be able to drive up to something while I am working and have it charge. It would have to be pretty robust as I will drive into it at some point!
I think that that's doable, yes! Above, I linked the amazon page for a receiver pad that's designed to be mounted to cell phones to let them use wireless charging even if they don't have it built-in. If you mount one to your wheelchair somewhere and connect it to your phone, you should be able to mount a matching phone charger pad on your desk or the wall so you can drive up to it and your phone will charge as if you'd placed it on the pad. It might be a bit slow - it'll probably only charge at 5W, which looks like it'd take about 4 hours to fully charge an iPhone while it's in use - but it should work.
The hardware itself is pretty durable. The receivers are designed to be mounted underneath phone cases, so you can do the same thing to the one you mount on your wheelchair. The pads are designed to have phones tossed at them every afternoon for several years; I've never had one get even close to breaking. If it does have trouble, the wireless charging tech is designed to be able to run through cell phones' shells and cases and you can build version two with a polycarbonate cover that'd survive a charging battlebot.
Another option might just be to mount an entirely sperate power system just for the phone and any other devices. Buy a huge USB power bank off Amazon and mount it to the carriage or something, might not even need duct tape.
Barring an extended power outage though, I would agree, it is pretty amazing.
Was looking at going with OpenHAB for a bit, but something about home assistant ease of use really got me.
I'm largely doing it with 433Mhz hardware, Raspberry Pi and python scripts. I didn't use Home Assistant because I presumed large project might be overhead and inhibit my choice of hardware; your comment has made me to rethink my strategy.
[1]https://abishekmuthian.com/i-was-told-i-would-become-quadrip...
Generally speaking the main problem is the RF part (to be able to catch it somewhere, and reuse)
I am considering having something else as the RF receiver but would need to forward what it received to MQTT (I can write that part myself - it is really the interface to the dongle I would like to understand)
The purpose of Home Assistant is to first observe all data flowing through your house, by connecting all existing sensors, switches, gateways and anything else that has a digital pulse.
The second step is control, having centralized access through a web or mobile app to all moving parts of a home.
However, the power of HA comes from the third step: automation. The best interface is the one you can forget exists.
I've been running HA for over two years. Aside from being lazy about upgrading to newer versions and adjusting to breaking changes, it's been working great and has spoiled me and my wife. We now expect every house we visit to automatically unlock before we reach the door, for the lights to turn on (and gradually off) automatically as we move through rooms, and for our phones to notify us when the best time to open a window would be, to naturally cool during the summer. It's great to have cold light during the day and warm, lower level light as the evening progresses.
Together with the Python environment provided by appdaemon, there's almost no limits to what you can do, provided you instrument your house with sensors and switches as best as you can.
The motion sensor isn't strictly necessary, you can use the phone joining the network as a trigger. It's just an extra filter to ensure there are no accidental unlocks. It will also prevent unlocks if you come home, park, and then leave without attempting to enter.
That's how I would do it, all easily doable in home assistant.
> However, the power of HA comes from the third step: automation. The best interface is the one you can forget exists.
I have the interface just for my carers and PAs et cetera, almost all of my interactions with the house are done via voice or other scripts triggered by various things. I would post a picture of my dashboard but it is horrendously messy contain hundreds things!
How are you doing this? Is it built in motion sensing in the lights, or some other solution?
Setting a short motion detector rearm time lets me start a decay timer for the light that just turned on. If no motion is detected again, it starts lowering the intensity gradually over 10 minutes and finally turning the light off. I added a button in HA to override this and keep the light on when needed.
When the window is closed, but the outside temperature is lower that inside, it sends a notification to open the window. The opposite happens when the outside temperature exceeds the one inside, unless the window is already closed.
This is all written in Python via appdaemon since it's easier than defining the same automation via the UI (although that's also doable nowadays).
If someone can program basic Pythin it is really, really worthwile to try it out.
In those five days I became acutely aware of how internet dependent my home automation is. I vowed to no longer invest in home automation that requires non-local access.
This will definitely help accelerate the process.
I confirmed this when I tested my Plex server on a Raspberry Pi out in a cabin in the middle of nowhere and it streamed fine without an Internet connection.
Local Auth only.
AirPlay seems like a good local alternative, but I’m hesitant to fully invest in it because it would lock me into Apple products and I fully hate to be locked in, despite having an iPhone at the moment.
Only hiccup was the Roku client took unusually long to bring up my list of local content; I could imagine it timing out on DNS connections.
I've never connected it to the Plex servers ("associated it with my Plex account"), perhaps thats the difference?
Maybe that behaviour's fixed now, or maybe I just hadn't found the setting mentioned in the comments below.
To answer your question, yes it appeared to be attempting to authenticate with their servers, even though my Plex server was local
I found Home Assistant after being burned when Google bought Revolv. I spent $299 on a device that google literally bricked when they acquired the firm and had no recourse. It started out just controlling my Sonos speakers but now controls a whole Zwave mesh I've been slowly building throughout the house.
The only real downside of Home Assistant is just how active the community really is. Each upgrade is a huge avalanche of changes and they're occasionally (but documented) breaking. Do yourself a favor and use Hass.IO (https://www.home-assistant.io/hassio/ ) to manage Home Assistant upgrades and backups. It is really nice.
Edit: changed "dearth" to "avalanche" thanks to braindeath for the cluebat.
Dearth refers to scarcity. Maybe that’s what you meant, but it didn’t sound like it.
But the range won’t cover the whole house and then I can’t use the phone.
https://i.imgur.com/pJAGAZT.png
When I built the house I decided that I was looking for a Home Automation system that was going to be:
a) Open source, or open standards
b) Everything can be done entirely locally
I settled with using the KNX system for the primary actuators for the house, with Home Assistant for automation and control.
One nice property of KNX is that it's distributed, you don't need any central manager for the system to work, so if you press a light switch, then that sends a packet on the KNX network directly to the light actuator. Then there is an IP/KNX bridge to allow you to interact with the KNX network to hack on it.
All the "light" automation in the house is all done using KNX programming. For example, walk into hall, light turns on. You don't need a central authority for that. The motion sensor just talks to the light directly.
For anything more complex, Home Assistant get's involved for all the more "global" automation via the IP/KNX bridge.
And of course you can control everything through it's app. I love how fast and responsive it is since it's local. It's maybe 100ms at most from clicking the button in the app to the light being on.
The main thing I can't do without the cloud is voice control. I'm using Google Homes for it which Home Assistant exposes all my devices to. Local voice control systems really suck compared to Google unfortunately.
Another thing I'm happy I did is just put sensors for everything everywhere through the house. Here is a screenshot of most of them.
https://i.imgur.com/5VeMuE1.png
I actually have more data then this that I haven't bothered to hook up yet since it hasn't been important. Like the motion sensors also provide light levels and so on.
Overall, I would definately recommend Home Assistant.
Are you using separate sensors for humidity/temp/air quality? If so, which ones?
Do you assemble these yourself (eg connecting a sensor to a network enabled board) or are they connected out of the box?
Would really appreciate anything you've got in terms of parts list.
> Local voice control systems really suck compared to Google unfortunately.
Have you checked the latest updates on this? Home Assistant is getting its own voice assistant: https://www.home-assistant.io/blog/2019/11/20/privacy-focuse...
It does motion in 3 directions using infra red, and gives you light levels and temperature as well.
They can sense really damn far, and actually I had to turn most of them down in sensitivity to make them useful.
I use the same sensors for triggering the alarm system. They look way more attractive than those ugly corner sensors most security systems use.
https://www.gira.com/en/gebaeudetechnik/systeme/knx-eib_syst...
You can see what one looks like in place here in the middle of this picture. I use black ones for my wood ceilings.
https://i.imgur.com/pTCOKJx.png
On the left hand side is one of the air quality sensors.
have you looked at picovoice? been pretty impressed by their wake word (Porcupine) and STT (Cheetah) on phones/pi's etc. seems like this could be integrated as a local STT provider with ada.
I have some crazy node red sub flows where I use state machines to turn on based on conditions and I can do whole home announcements as well as level audio and use it for custom security solution. I have smart bulbs too in some rooms and everything is 100% local with no external dependencies (if voice assistant stops working it doesn't affect anything and I'm going to probably move everything to almond). I built everything around sub flows and I made it easier to debug by adding friendly toggles that actually let me do some crazy accessibility stuff like announce motion or lights turning on etc.. If you were blind you'd know exactly where you were at.
I'm also doing local facial recognition (lots more todo) and I'm starting to integrate those into custom automations based on whose in the room (wife or me). It also greets us when we get home. It's been my dream since I was a little kid to have a smart home, and by smart I mean work for me and be quality of life improvement while being dumb for everyone (progressive enhancement). Home should alert you to dangerous weather or do the proper thing if a fire happens (open windows/ doors, turn on path lighting, announce what direction to go to the exit, etc).
Just waiting for the build a house/completely renovate an apartment to put it to practice.
Can you give some more information about the sensors you use, especially for CO2/VOC measurements?
Unfortunately all the other KNX ones I looked at were super ugly/huge. The more ugly ones also had better features like particulate matter as well.
These are a super discrete and small brushed aluminium circle on the ceiling.
Other than that I have PIR sensors in every room that I mentioned in a sibling comment with presence, temp, light level.
One sensor I’m super happy with is the infrasonic water level sensor for the water tank, so I always know how much water I have left.
I also have a weather station connected in with a pile of measurements for outdoor stuff like light, humidity, temp, pressure.
I'm interested to know if you installed everything yourself or had a contractor do it? My understanding is it is expensive to get someone to do the work (as usually it's hotels or offices having this done), but the actual hardware doesn't cost much more than the z-wave equivalent.
Oh and your Room of Requirement definately needs more explanation :-)
Ultimately wiring for KNX doesn’t take a lot more than just running a single extra wire through large sections of rooms since it’s a bus based system.
We worked on an hourly rate + cost of materials, rather than a fixed contract.
All the other home automation people I talked to didn’t really “get it”. This guy opened up to me about the importance of open standards from the first time I talked him and was happy at the concept of me programming the KNX devices myself, so I knew as soon as I met him that he was the right guy for the job.
I worked really closely with him (a daily catchup every day) in order to make sure everything was perfect.
I was really happy with the process, but it relied on getting a guy I could work really well with.
As KNX is a global standard this procedure becomes more and more implemented. We have published an ebook about how to get started with KNX, ETS 5 and ETS Inside (cheaper version of it) and share best practices.
Check yourself: https://www.knxtutorial.com/
>The main thing I can't do without the cloud is voice control.
Mozilla has been working on a google voice replacement btw
I suspect the format would be quite proprietary
Thank you so much.
I found a happy middle ground by installing Node-RED [0] on the same machine and linking it to home assistant via the home assistant websocket plugin [1].
It allows me to create visual workflows for automations, which I find much better to use than raw yaml files.
[0]: https://nodered.org/ [1]: https://flows.nodered.org/node/node-red-contrib-home-assista...
When I'm developing my automations I often need to do a lot of testing and debugging when things don't work as expected. I find that Node-RED allows me to do this extremely easily as I can click on nodes and see what values are being passed around, and what state things are in.
Nonetheless, I'll look into AppDaemon :)
Powered by Stanford's Almond, which you can install yourself, as an Hassio addon, or use the cloud version: https://almond.stanford.edu/
Currently I am mainly using it to show what is happening around the home (device detection, adsl data usage, weather from my simple weather station, house power usage etc, local train level crossing state (barrier down/up))
Very impressed with how easy it is to add new items to the overview.
I have one smart plug, the intention is to control the Christmas lights this year. I did do this about 15 years ago with my old x10 system and it would be nice to try something a bit more advanced.
https://wiki.openraildata.com//index.php?title=Main_Page
Some crossings in the uk are directly available as a state within the data, mine is not so I have to track the trains into and out of a region. When the train enters the region, I assume the crossing must be down and when it leaves, I assume it must be up.
Its about 30 seconds to a minute off, but for my purpose that's OK.
There's a level crossing a few miles from me that has automated barriers. The tricky bit is the crossing is right next to a station and there will be various rules in force:-
* barriers must be down at least X seconds before a train is due to go through
* barriers must be down even if the train is coming in to the station to stop (before it gets to the crossing) - the barriers must be down in case it overshoots
* etc
Whilst the barriers can go up as soon as a train has passed there may be another one along shortly enough that it's not worth opening the barriers only to close them a few seconds later.
Combine those with a timetable that puts 10+ trains an hour each direction and the barriers will probably be down for longer than they are up in peak times. I've seen them down for 10+ minutes at a time.
Here's the google streetview that just happens to have a train that has already passed and stopped at the station: https://goo.gl/maps/jhzApjZHUAJ4FcSt6
As a pedestrian (or a cyclist without lots of luggage) it's often faster to use the footbridge to cross rather than waiting for the train(s) to pass and the barriers to rise.
I work in the traffic industry.
If we can slow people down before they reach the queue, then we can reduce the impact of them joining the queue (co2 etc....).
According to wiki they filed for bankrupcy in 2013. Their www.x10.com website is still going - flogging the same stuff as 20 years ago.
I still have a few boxes of x10 hardware that I spent a small fortune on back in the 90's. I like that signals went through mains (vs. radio signals) but the reliability is poor.
X10 was nice that it could communicate through main, but when I started to use Ethernet over power, it stopped working. It also was one-way. There was no confirm or status from the switch devices.
https://twitter.com/annevanrossum/status/1200478825458622464...
This is not the interesting feature of this system by the way. That is microgeofencing, knowing per room where people are. Yes, you know where you are in the house. However, your "smart" home does not.
Integration with home assistant is on the roadmap. We need a few more people to want it.
Yes, it's a shameless plug. However, there aren't many open source hardware products on the market, so I think it contributes to the discussion.
I solved this in home assistant by adding sensors to my doors inside the apartment.
For example if the living room doors are closed, and after that there's movement inside, the room is marked as "occupied". It works really well.
Same could be achieved with straight line movement sensors on the door frames, if you're someone who keeps the doors open all the time.
And speaking of open source, my whole smart home setup (from sensors, lights, heating, etc) works offline and using open source software and protocols even if hardware isn't open source itself. Which I found to be a good tradeoff.
I think you will run into trouble if there are more people in your household though. But it's a smart idea!
Plenty of options for presence detection: https://www.home-assistant.io/integrations/#presence-detecti...
Most of them check to see if you're connected to the wifi, while some of them rely on your smartphone to report your GPS coordinates. I personally use nmap to look for my phone on my wifi network.
After going through zigbee and zwave, I feel like I finally arrived at a solution that allows me plenty of reasonably priced selection and extreme customization (e.g. just using the warm/cold white LEDs on a RGB+white bulb).
Great experience so far and completely automated integration within homeassistant.
I hope that the esphome-configs project [2] will grow over the next little while and provide more and more copy+paste configurations for various hardware.
You can get really smart about things by tying actions to complex combinations of states. I now often 'forget' to hit the light switch when entering rooms in other homes.
I have automations to limit watering if it has rained recently, and also to increase watering if the day has been extremely hot. Still looking to make it even smarter but this has already been a great improvement.
I haven't tried these, but they might be more suitable for an outdoor garden, and I've heard good things: https://www.blumat.com/tropf/das-tropf-blumat-system/vorteil...
I think there's a way to hook the latter up to mains water if you have a big install.
Basically, the soil moisture determines the watering rate via diffusion through a clay cone.
I was getting all ready to rig up some custom raspi sensor based watering thing when I found this and realized that my way would have been waayyyy more maintenance headache, more expensive, and probably not work as well.
I moved to Home Assistent and i'm not moving back. I did like the more plugin-like architecture & technical design of openhab better... But that makes it bulky. Openhab feels more mature, but also has a lot more legacy... HA is just movign faster...
node-red is available as a hass.io add-on [1], with the Home Assistant node-red plugin pre-installed
First seal to see Then seal to control
Home assistant is the "see" bit. Then you use it (or something else) to control the process
---
Note that in the 0.8 gateway release, browser-based voice commands are processed using Google’s voice assistant API, so the audio strings are processed in the cloud. The speech-to-text result is passed back to your gateway. If you instead type a command into the text field of the smart assistant screen, those commands are processed locally and do not require a connection to the Internet.
https://iot.mozilla.org/docs/gateway-user-guide.html
EDIT: But hopefully they will move to something like offline Common Voice in some future release.
My lesson learnt after several years going through smartthings, home-brew stuff with raspberry pis, home assistant, demoticz, and openhab using ZigBee or zwave is to make sure your core infrastructure (i.e. things you want to control) is MQTT-based running over wi-fi/ethernet and all your plugs/lights/etc are independently controllable via sending raw MQTT commands on your home network.
If you need to rely on a working internet connection, or too many third party things (e.g. IFTTT) you are going to have a bad time when things inevitably break/change/have an outage/become inexplicably slow/get shutdown etc. Once you standardise on MQTT you can switch out HA/OpenHab/others with minimal fuss, and you have great controll and backup options. WiFi just seems rock-solid Vs ZigBee or z-wave that just seemed so troublesome and unreliable.
Tasmota (1) + mosquito running on a RPi has finally given me a reliable set up after years of struggling. It is some rock-solid MQTT compatible firmware for ESP8266 devices.
You might want to look into https://github.com/OpenZWave/Zwave2Mqtt and other projects like it to give you the nice mqtt control over zwave.
I got started as a contributor to home assistant by sending patches to the Sonos integration.
Let's say you're looking for a smart doorbell. You'd go here: https://www.home-assistant.io/integrations/#doorbell
You can then go to each integration and on the right if it says "IoT Class: Local Push" you can be fairly certain it can be locally controlled without the cloud and that it reports state without the cloud. In this scenario, it'd be DoorBird. You can be fairly certain you can block internet access at your router for this device and it'll work just fine. Don't quote me on that for Doorbird though.
Many integrations have their local access via reverse engineered APIs, and they often go away when they get popular enough.
I wrote the Samsung Family Hub smart fridge integration for home assistant and one day Samsung removed the local access in a fridge update and now there is no way to access it without their android or iOS app.
I wonder if you could return the fridge once they update claiming it stopped working for your purposes.
Functions so far: circuit breakers for mains, water valves, district heating PID control, intercom metering, door lock/sensor, curtain bobbin servomotor, thermometer, aircon control, smoke/co detector, lighting and rgb mood light. AV control is being worked on
Retrofit cost n times the cost of electronics.
And in new building, wiring labour still makes the most expense because electrical and smart home wiring topologies don't match exactly. You either have to do a lot of wiring, or a lot of wall cutting.
Wireless obviously doesn't work.
Massive? Samsung has been building smart apartments for over a decade now. Those are way bigger
It's the kind of tooling that is a lot of work even though it might not seem like it at first sight.
Anyone else experiencing this same thing?
What hardware are you people running the system on? Raspberry Pi? Or something more beefier? Or less?
I think they recommend a RPi 4 for the latest release...
Works great, I use it in network host mode because I did it by mistake initially and suddenly discovered a few devices which joined via broadcast (my Logitech Hub especially).
Cheap and reliable.
However I use Home assistant.
Why, because it shows me what is going on....
Its a dashboard for my house.
On a slightly related note, does anybody remember that about a year or so ago somebody posted his "Personal Analytics Dashboard" I think he called it. Basically it detailed every aspect of his life. it was things like heart rate, steps walked, miles run, cycles cycled along with all manner of other nutritional input.
The thing that marked it out for me was that it took all those desperate threads of information and display them in one easy to understand and beautiful layout. But I cannot for the life of me find it!
At the moment I want to get to the state that when one of the nurses comes on duty, she can get the iPad out of the server cupboard (after first pressing her flic button to login) and see on one or two pages things like but not limited to:
* Is the catheter turn on or off
* What is the bosses current heart rate (BPM)
* What is today's resting heart rate and how does it fit in over the week, the month and the year
* Which of the doors and windows are open and are they locked or not
* Did the boss get into his wheelchair today, and if so for how long and how far did he travel
* How many doses of his medication has he had today, and how many does that leave him with for the rest of the day
* Have there been any incidences of Autononmic Dysreflexia[1] or any other life-threatening shenanigans other parts of the team will need to know about
And on and on and on, so it would need to be expandable. It may be possible to skin home assistance with something simple enough but I am not a designer.
I've lots of this data coming in already from lots of different sensors, I am however just struggling with a way of turning those data into information that non-technical users will not be put off by. Because if they are put off by it then they will not use the system, and as this is going to be one of the systems monitoring medication and my health et cetera I would really like them to use. Non-technical users make up the huge majority of people who will be using this system.
And to pre-empt what I know one of you will mention because you care about me, I do not ever put my life in the hands of anyone person, process, widget or anything else! It's nice to know you care. <3
I also hate spreadsheets. I mean, I will continue to use them obviously because there is no choice. Just thought world should know that I hate them.
So yes I am pretty much totally comfortable purchasing sensors and and getting my work PA to install them, I'm also having enormous fun creating new sensors but what I am not enjoying is being quadriplegic and trying to draw out nice designs.
Have a feeling it is not necessary and that there will be a simple way for me to plug in all of my data streams and be given a very shiny dashboard that I could maybe put on the wall of my office on some 17 inch screen something similar.
--------- I've included a couple of links describing autonomic dysreflexia, but be warned it's not a nice condition and it is not fun having one of these episodes. Not happy reading, just put them here for completeness
[1]: https://www.christopherreeve.org/living-with-paralysis/healt...