From b0384e9f0be4f0fdabe25365c1bab58c10f94d0d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 13 Aug 2016 19:41:26 +0200 Subject: [PATCH] Add initial docs for GPSD component (#656) * Add initial docs for GPSD component * Rename file * Update --- source/_components/sensor.gpsd.markdown | 58 ++++++++++++++++++++++++ source/images/supported_brands/gpsd.png | Bin 0 -> 16518 bytes 2 files changed, 58 insertions(+) create mode 100644 source/_components/sensor.gpsd.markdown create mode 100644 source/images/supported_brands/gpsd.png diff --git a/source/_components/sensor.gpsd.markdown b/source/_components/sensor.gpsd.markdown new file mode 100644 index 00000000000..30b30223c13 --- /dev/null +++ b/source/_components/sensor.gpsd.markdown @@ -0,0 +1,58 @@ +--- +layout: page +title: "GPSD" +description: "Instructions how to integrate GPSD into Home Assistant." +date: 2016-07-18 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: gpsd.png +ha_category: Sensor +ha_release: 0.26 +--- + +The `gpsd` component is using the GPS information collected by [gpsd](http://catb.org/gpsd/) and a GPS receiver. + +A requirement is that `gpsd` is installed (`$ sudo dnf -y install gpsd` or `$ sudo apt-get install gpsd`). `gpsd` uses the socket activation feature of systemd on recent Linux distributions for USB receivers. This means that if you plug your GPS receiver in, `gpsd` is started. Other GPS device may work too, but this was not tested. + +```bash +$ sudo systemctl status gpsdctl@ttyUSB0.service +● gpsdctl@ttyUSB0.service - Manage ttyUSB0 for GPS daemon + Loaded: loaded (/usr/lib/systemd/system/gpsdctl@.service; static; vendor preset: disabled) + Active: active (exited) since Sat 2016-07-16 09:30:33 CEST; 1 day 23h ago + Process: 5303 ExecStart=/bin/sh -c [ "$USBAUTO" = true ] && /usr/sbin/gpsdctl add /dev/%I || : (code=exited, status=0/SUCCESS) + Main PID: 5303 (code=exited, status=0/SUCCESS) + +Jul 16 09:30:33 laptop019 systemd[1]: Starting Manage ttyUSB0 for GPS daemon... +Jul 16 09:30:33 laptop019 gpsdctl[5305]: gpsd_control(action=add, arg=/dev/ttyUSB0) +Jul 16 09:30:33 laptop019 gpsdctl[5305]: reached a running gpsd +``` + +To check if your setup is working, connect to port 2947 on the host where `gpsd` is running with `telnet`. This may need adjustments to your firewall. + +```bash + +$ telnet localhost 2947 +Trying 127.0.0.1... +Connected to localhost. +Escape character is '^]'. +{"class":"VERSION","release":"3.15","rev":"3.15-2.fc23","proto_major":3,"proto_minor":11} +``` + +To setup a GPSD sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +senosr: + - platform: gpsd + host: 127.0.0.1 + port: 2947 + name: GPS USB +``` + +Configuration variables: + +- **host** (*Optional*): The host where GPSD is running. Defaults to `localhost`. +- **port** (*Optional*): The port which GPSD is using. Defaults to 2947. +- **port** (*Optional*): Friendly name to use for the frontend. Default to GPS. diff --git a/source/images/supported_brands/gpsd.png b/source/images/supported_brands/gpsd.png new file mode 100644 index 0000000000000000000000000000000000000000..83ca308013ba016901c96ec21dfb7bf4face5128 GIT binary patch literal 16518 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 UQ?XPA{vb$BT1l!_!X)(n06ryC9smFU literal 0 HcmV?d00001