install: lninstall
lninstall:
- ln -sf $(abspath init.d/usb-wde-log) /etc/init.d
- insserv usb-wde-log
+ ln -sf $(abspath systemd/usb-wde1-log.service) /etc/systemd/system/
+ systemctl daemon-reload
+ systemctl start usb-wde1-log
+ systemctl enable usb-wde1-log
ln -sf $(abspath munin/usb-wde1_) $(PLUGINS)/usb-wde1_temperature
ln -sf $(abspath munin/usb-wde1_) $(PLUGINS)/usb-wde1_humidity
uninstall:
- service usb-wde-log stop
- insserv -r usb-wde-log
- rm -f /etc/init.d/usb-wde-log
+ systemctl stop usb-wde1-log
+ systemctl disable usb-wde1-log
+ rm /etc/systemd/system/usb-wde1-log.service
+ systemctl daemon-reload
rm -f $(PLUGINS)/usb-wde1_temperature
rm -f $(PLUGINS)/usb-wde1_humidity
$ cd munin && nohup ./usb-wde1-log-last.sh &
- once. It backgrounds the logging process and logs into /tmp/usb-wde1-last.
+ once. It backgrounds the logging process and logs into ``/var/spool/usb-wde1/usb-wde1-last``.
This process needs to be started whenever the machine is rebooted.
+ The ``systemd/`` directory contains a ``usb-wde1-log.service`` file you can copy to
+ ``/etc/systemd/system/``. After copying it, run::
+
+ $ systemctl daemon-reload
+ $ systemctl start usb-wde1-log
+ $ systemctl status usb-wde1-log
+ $ systemctl enable usb-wde1-log
+
2. Link the munin plugin::
$ cd /etc/munin/plugins
$ ln -s /usr/local/src/usb-wde1-tools/munin/usb-wde1_ usb-wde1_temperature
$ ln -s /usr/local/src/usb-wde1-tools/munin/usb-wde1_ usb-wde1_humidity
-3. Configure the plugins
- Edit /etc/munin/plugin-conf.d/munin-node and add the following lines::
+3. Configure the plugins:
+
+ Edit ``/etc/munin/plugin-conf.d/munin-node`` and add the following lines::
[usb-wde1_*]
- env.logfile /tmp/usb-wde1-last
+ env.logfile /var/spool/usb-wde1/usb-wde1-last
env.host_name House
env.sensors 0 1 7
env.sensor0 Living room
work.
Run ``gen-html.php`` every 5 minutes.
+
+
+Static USB device name
+======================
+When you have multiple serial USB devices attached to the computer,
+rebooting may lead to switched ttyUSB* numbers.
+
+A solution is to define a udev rule in ``/etc/udev/rules.d/99-usb-wde1.rules``::
+
+ SUBSYSTEM=="tty", ATTRS{serial}=="XQJ2EJEMADDFYBD3", SYMLINK+="usbwde1"
+
+You can find the serial number in ``dmesg`` output::
+
+ usb 1-3: new full-speed USB device number 2 using xhci_hcd
+ usb 1-3: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
+ usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
+ usb 1-3: Product: ELV USB-WDE1 Wetterdatenempfänger
+ usb 1-3: Manufacturer: Silicon Labs
+ usb 1-3: SerialNumber: XQJ2EJEMADDFYBD3
+
+After creating the file, activate it::
+
+ $ udevadm control --reload
+ $ udevadm trigger
+
+Now a file ``/dev/usbwde1`` exists.
+
+Modify ``munin/usb-wde1-log-last.sh`` to use the new device file instead
+of ``ttyUSB0``.
* path to the .rrd files.
* {item} will be replaced with humidity/temperature,
* {id} with the sensor number
+ *
+ * May be an array with the same keys as in $names.
*/
$filetemplate = '/var/lib/munin/home.cweiske.de/haus-usb_wde1_{item}-sensor{id}-g.rrd';
$outdir = '/tmp/';
#
# FIXME: send RESET or INIT and M2
+device=/dev/ttyUSB0
+
+if [ ! -d /var/spool/usb-wde1 ]; then
+ mkdir /var/spool/usb-wde1
+fi
+
curdir="$(dirname "$0")"
if [ "$1" = "--dummy-data" ]; then
$curdir/../dummy-data-generator.php\
- | $curdir/log-single-line.sh /tmp/usb-wde1-last
+ | $curdir/log-single-line.sh /var/spool/usb-wde1/usb-wde1-last
else
- if [ ! -r /dev/ttyUSB0 ]; then
- echo "Device /dev/ttyUSB0 is not readable"
+ if [ ! -r $device ]; then
+ echo "Device $device is not readable"
exit 1
fi
#socat breaks something that leads to
# WRONG VAL, WRONG CMD and FullBuff->Reset
# errors
- socat /dev/ttyUSB0,b9600,min=1,time=1,brkint=0,icrnl=0,ixoff=1,imaxbel=0,opost=0,isig=0,icanon=0,iexten=0,echo=0,echoe=0,echok=0 STDOUT\
- | $curdir/log-single-line.sh /tmp/usb-wde1-last
+ socat $device,b9600,min=1,time=1,brkint=0,icrnl=0,ixoff=1,imaxbel=0,opost=0,isig=0,icanon=0,iexten=0,echo=0,echoe=0,echok=0 STDOUT\
+ | $curdir/log-single-line.sh /var/spool/usb-wde1/usb-wde1-last
fi
=head2 EXAMPLE CONFIGURATION
[usb-wde1_*]
- env.logfile /tmp/usb-wde1-last
+ env.logfile /var/spool/usb-wde1/usb-wde1-last
env.host_name House
env.sensors 0 1 7
env.sensor0 Living room
--- /dev/null
+[Unit]
+Description=USB-WDE1-Wetterdatenlogger
+After=systemd-udev-settle.service
+
+[Service]
+Type=simple
+User=root
+Group=root
+WorkingDirectory=/usr/local/src/usb-wde1-tools/munin/
+ExecStart=/usr/local/src/usb-wde1-tools/munin/usb-wde1-log-last.sh
+Restart=always
+RestartSec=30
+
+[Install]
+WantedBy=multi-user.target