diff --git a/Makefile b/Makefile index e14b66b..ab741c0 100644 --- a/Makefile +++ b/Makefile @@ -175,7 +175,7 @@ all: $(BUILD)/wmbusmeters $(BUILD)/wmbusmeters-admin $(BUILD)/testinternals @$(STRIP_BINARY) @cp $(BUILD)/wmbusmeters $(BUILD)/wmbusmetersd -dist: wmbusmeters_$(DEBVERSION)_$(DEBARCH).deb +deb: wmbusmeters_$(DEBVERSION)_$(DEBARCH).deb install: $(BUILD)/wmbusmeters @./install.sh $(BUILD)/wmbusmeters $(DESTDIR) $(EXTRA_INSTALL_OPTIONS) @@ -193,6 +193,10 @@ wmbusmeters_$(DEBVERSION)_$(DEBARCH).deb: @echo "Maintainer: Fredrik Öhrström" >> $(BUILD)/debian/wmbusmeters/DEBIAN/control @echo "Architecture: $(DEBARCH)" >> $(BUILD)/debian/wmbusmeters/DEBIAN/control @echo "Description: A tool to read wireless mbus telegrams from utility meters." >> $(BUILD)/debian/wmbusmeters/DEBIAN/control + @for x in preinst postinst prerm postrm ; do \ + cp scripts/$$x $(BUILD)/debian/wmbusmeters/DEBIAN/ ; \ + chmod 555 $(BUILD)/debian/wmbusmeters/DEBIAN/$$x ; \ + done @(cd $(BUILD)/debian; dpkg-deb --build wmbusmeters .) @mv $(BUILD)/debian/wmbusmeters_$(DEBVERSION)_$(DEBARCH).deb . @echo Built package $@ diff --git a/scripts/postinst b/scripts/postinst old mode 100644 new mode 100755 index 25293d3..316e7b9 --- a/scripts/postinst +++ b/scripts/postinst @@ -1,3 +1,74 @@ #!/bin/sh # Start wmbusmeters service + +if [ $(getent group wmbusmeters) ] +then + echo "group: wmbusmeters unmodified" +else + groupadd -f wmbusmeters + echo "group: added wmbusmeters" +fi + +ID=$(id -u wmbusmeters 2>/dev/null) + +if [ -f /usr/sbin/nologin ] +then + USERSHELL="/usr/sbin/nologin" +elif [ -f /sbin/nologin ] +then + USERSHELL="/sbin/nologin" +else + USERSHELL="/bin/false" +fi + +if [ -z "$ID" ] +then + # Create the wmbusmeters user + useradd --system --shell $USERSHELL -g wmbusmeters wmbusmeters + echo "user: added wmbusmeters" +else + echo "user: wmbusmeters unmodified" +fi + +if [ $(getent group dialout) ] +then + if [ "$(groups wmbusmeters | grep -o dialout)" = "" ] + then + # Add the wmbusmeters user to dialout + usermod -a -G dialout wmbusmeters + echo "user: added wmbusmeters to dialout group" + else + echo "user: wmbusmeters already added to dialout" + fi +else + echo "dialout group does not exist" +fi + +if [ $(getent group uucp) ] +then + if [ "$(groups wmbusmeters | grep -o uucp)" = "" ] + then + # Add the wmbusmeters user to uucp + usermod -a -G uucp wmbusmeters + echo "user: added wmbusmeters to uucp group" + else + echo "user: wmbusmeters already added to uucp" + fi +else + echo "uucp group does not exist" +fi + +if [ $(getent group plugdev) ] +then + if [ "$(groups wmbusmeters | grep -o plugdev)" = "" ] + then + # Add the wmbusmeters user to plugdev + usermod -a -G plugdev wmbusmeters + echo "user: added wmbusmeters to plugdev group" + else + echo user: wmbusmeters already added to plugdev + fi +else + echo "plugdev group does not exist" +fi diff --git a/scripts/postrm b/scripts/postrm old mode 100644 new mode 100755 index 779e73e..98d3967 --- a/scripts/postrm +++ b/scripts/postrm @@ -1,3 +1,11 @@ #!/bin/bash -# More cleanup? \ No newline at end of file +# More cleanup? + +ID=$(id -u wmbusmeters 2>/dev/null) + +if [ ! "$ID" = "" ] +then + userdel wmbusmeters + echo user: removed wmbusmeters +fi diff --git a/scripts/preinst b/scripts/preinst old mode 100644 new mode 100755 index c0798dc..3264ed9 --- a/scripts/preinst +++ b/scripts/preinst @@ -1,3 +1,4 @@ #!/bin/sh # Shutdown wmbusmeters service if it is running. +systemctl stop wmbusmeters.service diff --git a/scripts/prerm b/scripts/prerm old mode 100644 new mode 100755 index 41f79c6..65f7820 --- a/scripts/prerm +++ b/scripts/prerm @@ -1,3 +1,6 @@ #!/bin/bash -# Stop the service \ No newline at end of file +# Stop the service + +echo "Stopping any wmbusmeters.service running..." +systemctl stop wmbusmeters.service || true diff --git a/simulations/simulation_t1.txt b/simulations/simulation_t1.txt index e3853dc..0a36af4 100644 --- a/simulations/simulation_t1.txt +++ b/simulations/simulation_t1.txt @@ -110,6 +110,12 @@ telegram=|2944A511780729662366A20118001378D3B3DB8CEDD77731F25832AAF3DA8CADF9774E {"media":"water","meter":"izar","name":"IzarWater2","id":"66290778","total_m3":16.76,"last_month_total_m3":11.84,"last_month_measure_date":"2019-11-30","remaining_battery_life_y":12,"current_alarms":"no_alarm","previous_alarms":"no_alarm","timestamp":"1111-11-11T11:11:11Z"} |IzarWater2;66290778;16.760000;11.840000;2019-11-30;12.000000;no_alarm;no_alarm;1111-11-11 11:11.11 +# Yet another silly version of IZAR, come again, type 0x20 = Breaker (electricity) for a water meter! + +telegram=|1944A511780779194820A1|21170013355F8EDB2D03C6912B1E37 +{"media":"water","meter":"izar","name":"IzarWater3","id":"19790778","total_m3":4.366,"last_month_total_m3":0,"last_month_measure_date":"2020-12-31","remaining_battery_life_y":11.5,"current_alarms":"no_alarm","previous_alarms":"no_alarm","timestamp":"1111-11-11T11:11:11Z"} +|IzarWater3;19790778;4.366000;0.000000;2020-12-31;11.500000;no_alarm;no_alarm;1111-11-11 11:11.11 + # Test Hydrus water meter telegram telegram=|4E44A5116464646470077AED004005|2F2F01FD08300C13741100007C1300000000FC101300000000FC201300000000726C00000B3B00000002FD748713025A6800C4016D3B177F2ACC011300020000| {"media":"water","meter":"hydrus","name":"HydrusWater","id":"64646464","total_m3":1.174,"max_flow_m3h":0,"flow_temperature_c":10.4,"total_at_date_m3":0.2,"at_date":"2019-10-31 23:59","remaining_battery_life_y":13.686516,"status":"OK","timestamp":"1111-11-11T11:11:11Z"} diff --git a/src/meters.h b/src/meters.h index b78b1fa..8fd95cb 100644 --- a/src/meters.h +++ b/src/meters.h @@ -117,6 +117,7 @@ X(IZAR, MANUFACTURER_SAP, 0x66, -1) \ X(IZAR, MANUFACTURER_DME, 0x66, -1) \ X(IZAR, MANUFACTURER_DME, 0x19, 0x00) \ + X(IZAR, MANUFACTURER_DME, 0x20, 0x48) \ X(IZAR3, MANUFACTURER_SAP, 0x00, 0x88) \ X(LANSENSM, MANUFACTURER_LAS, 0x1a, 0x03) \ X(LANSENTH, MANUFACTURER_LAS, 0x1b, 0x07) \ diff --git a/tests/test_listen_to_all.sh b/tests/test_listen_to_all.sh index 9ec88aa..ba82828 100755 --- a/tests/test_listen_to_all.sh +++ b/tests/test_listen_to_all.sh @@ -120,6 +120,11 @@ Received telegram from: 66290778 type: Unknown (0x66) ver: 0x23 driver: izar +Received telegram from: 19790778 + manufacturer: (DME) DIEHL Metering, Germany (0x11a5) + type: Breaker (electricity) (0x20) + ver: 0x48 + driver: izar Received telegram from: 64646464 manufacturer: (DME) DIEHL Metering, Germany (0x11a5) type: Water meter (0x07) diff --git a/tests/test_t1_meters.sh b/tests/test_t1_meters.sh index 0c68b6e..b1953f5 100755 --- a/tests/test_t1_meters.sh +++ b/tests/test_t1_meters.sh @@ -26,6 +26,7 @@ METERS="MyWarmWater supercom587 12345678 NOKEY Rummet rfmamb 11772288 NOKEY IzarWater izar 21242472 NOKEY IzarWater2 izar 66290778 NOKEY + IzarWater3 izar 19790778 NOKEY HydrusWater hydrus 64646464 NOKEY HydrusVater hydrus 65656565 NOKEY HydrodigitWater hydrodigit 86868686 NOKEY