Open andriej opened 2 years ago
It seems like it would send quite a lot of traffic over the network.... if your openwrt router can run rtl_wmbus, then you can relay the decoded telegrams to wmbusmeters on a different computer.
On the openwrt router: rtl_sdr -f 868.95M -s 1600000 - 2>/dev/null | rtl_wmbus -p s -a | nc -u 192.168.1.777 4444
On 192.168.1.777: wmbusmeters 'rtlwmbus:CMD(nc -lku 4444)'
I suppose you could do something similar with rtl_tcp if your openwrt router cannot run rtl_wmbus.
Check the README for how rtl_wmbus is started and tips on using it in a pipe.
@andriej I got it working like this: On your router run: rtl_tcp -f 868.95M -s 1600000 -a 192.168.xx.xx on your computer run: nc 192.168.xx.xx 1234 | /usr/bin/rtl_wmbus -p s -a | wmbusmeters stdin:rtlwmbus
xx.xx is whatever your router network ip address is.
It should work with the nc 192 ... | rtlwmbus | wmbusmeters command inside rtlwmbus:CMD(nc .... ) but for some reason it does not. Something to debug...
Please test!
I'd love to test it, just wondering how to implement your way of work into running add-on in HA installation. I have to sleep it over, maybe clues will come - seems like solution is close :-)
Whatever I try to run addon with, I end up with:
Not a valid device "rtlwmbus:CMD("nc 192.168.x.x 1234|/usr/bin/rtl_wmbus -p s -a|wmbusmeters stdin:rtlwmbus ")"
[cmd] /run.sh exited 1
I try to ply with nc
and wmbusmeters
but without a success. This command terminates immediately
wmbusmeters --useconfig /etc
device in config file:
device=rtlwmbus:CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)
log output:
/var/log/wmbusmeters/wmbusmeters.log
(serialcmd) closed /bin/sh pid=7513 fd=-1 (rtlwmbus)
[LOCKING] serial_devices_mutex close_all_do_not_remove ( 0)
[LOCKED] serial_devices_mutex close_all_do_not_remove (close_all_do_not_remove 7509)
[UNLOCKING] serial_devices_mutex close_all_do_not_remove (close_all_do_not_remove 7509)
[UNLOCKED] serial_devices_mutex close_all_do_not_remove ( 0)
[LOCKING] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 7509)
(serial) no devices working emergency exit!
[UNLOCKING] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 7509)
[UNLOCKED] serial_devices_mutex remove_non_working_serial_devices ( 0)
simply executing nc 192.168.1.2 1234 | rtl_wmbus -p s
shows incoming data.
It seems like nc exits as soon as stdin is EOF. And stdin becomes EOF immediately when the background process is started. Add "-q -1" to prevent this from happing so try:
device=rtlwmbus:CMD(nc -q -1 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)
nc
(netcat (The GNU Netcat) 0.7.1
) does not have -q
and -1
options.
Anyway I see some strange issues in logs:
$ wmbusmeters --use
(config) "# Remember to change auto here to the device you are going to use in production." ""
(config) "#device=rtlwmbus:868.9M" ""
(config) "#device=rtlwmbus:CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters --device=stdin:rtlwmbus)" ""
(config) "#device=rtl433:CMD(rtl_433 -d rtl_tcp:192.168.1.2:1234 -f 868.95M -s 1.2M -Y autolevel -Y squelch -R 104 -M level -M protocol -F csv)" ""
(config) "device" "rtlwmbus:CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)"
(config) "logtelegrams" "false"
(config) "format" "json"
(config) "meterfiles" "/var/lib/wmbusmeters/meter_readings"
(config) "meterfilesaction" "append"
(config) "logfile" "/var/log/wmbusmeters/wmbusmeters.log"
(config) "" ""
(config) loading meter file /etc/wmbusmeters.d/apator01946185.conf
(config) name=apator01946185
(config) type=apator162
(config) id=01946185
(config) key=<notprinted>
(wmbusmeters) using log file /var/log/wmbusmeters/wmbusmeters.log
So it says that there is one meter configured, but in log /var/log/wmbusmeters/wmbusmeters.log
it says No meters configured
:
(serial) received ascii "Started config rtlwmbus on stdin listening on any<0A>No meters configured. Printing id:s of all telegrams heard!<0A>"
[UNLOCKING] read_mutex receive (receive 69768)
[UNLOCKED] read_mutex receive ( 0)
(rtlwmbus) checkRTLWMBusFrame "Started config rtlwmbus on stdin listening on any<0A>No meters configured. Printing id:s of all telegrams heard!<0A>"
(rtlwmbus) only text
(rtlwmbus) checkRTLWMBusFrame "No meters configured. Printing id:s of all telegrams heard!<0A>"
(rtlwmbus) only text
(wmbusmeters) version: HEAD_1.9.0
(config) store meter files in: "/var/lib/wmbusmeters/meter_readings"
(config) using device: rtlwmbus:CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)
(config) number of meters: 1
[LOCKING] bus_devices_mutex check_for_bus_devices ( 0)
[LOCKED] bus_devices_mutex check_for_bus_devices (check_for_bus_devices 69768)
[MAIN] checking for dead wmbus devices...
[LOCKING] event_loop_mutex eventLoop ( 0)
(serial) expecting devices to work
[UNLOCKING] bus_devices_mutex check_for_bus_devices (check_for_bus_devices 69768)
[UNLOCKED] bus_devices_mutex check_for_bus_devices ( 0)
[LOCKING] bus_devices_mutex check_for_bus_devices ( 0)
[LOCKED] bus_devices_mutex check_for_bus_devices (check_for_bus_devices 69768)
[LOCKED] event_loop_mutex eventLoop (eventLoop 69768)
[MAIN] checking for dead wmbus devices...
(serial) expecting devices to work
[LOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[UNLOCKING] bus_devices_mutex check_for_bus_devices (check_for_bus_devices 69768)
[UNLOCKED] bus_devices_mutex check_for_bus_devices ( 0)
[LOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[LOCKING] serial_devices_mutex lookup (list_file_descriptiors_to_listen_to 69768)
[UNLOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[UNLOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[LOCKED] serial_devices_mutex lookup (lookup 69768)
[SERIAL] select timeout 1 s
[UNLOCKING] serial_devices_mutex lookup (lookup 69768)
[UNLOCKED] serial_devices_mutex lookup ( 0)
(lookup) with cmd "rtlwmbus:CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)"
[LOCKING] bus_devices_mutex open_bus_device ( 0)
[LOCKED] bus_devices_mutex open_bus_device (open_bus_device 69768)
(main) opening rtlwmbus:CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)
Started config rtlwmbus listening on none using CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus)
(rtlwmbus) using command: nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus
(rtlwmbus) opening cmd_0
[LOCKING] serial_devices_mutex opened ( 0)
[LOCKED] serial_devices_mutex opened (opened 69768)
[LOCKING] serial_devices_mutex tickle (opened 69768)
[LOCKED] serial_devices_mutex tickle (tickle 69768)
[UNLOCKING] serial_devices_mutex tickle (tickle 69768)
[UNLOCKED] serial_devices_mutex tickle ( 0)
[UNLOCKING] serial_devices_mutex opened ( 0)
(serial) EVENT thread interrupted
[UNLOCKED] serial_devices_mutex opened ( 0)
[LOCKING] serial_devices_mutex find_non_working_serial_devices ( 0)
(bgshell) exec background "/bin/sh"
(bgshell) arg "-c"
[LOCKED] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
(bgshell) arg "nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus"
[UNLOCKING] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex find_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKING] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[LOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[SERIAL] select read on fd 4
[UNLOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[UNLOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[SERIAL] select timeout 1 s
(serialcmd) opened /bin/sh pid 69772 fd 4 (rtlwmbus)
(main) regular reset of rtlwmbus using CMD(nc 192.168.1.2 1234 | rtl_wmbus -p s | wmbusmeters stdin:rtlwmbus) will happen every 82800 seconds
(wmbus) no alarm (expected activity) for rtlwmbus
[UNLOCKING] bus_devices_mutex open_bus_device (open_bus_device 69768)
[UNLOCKED] bus_devices_mutex open_bus_device ( 0)
[LOCKING] timers_mutex start_regular_callback ( 0)
[LOCKED] timers_mutex start_regular_callback (start_regular_callback 69768)
(serial) registered regular callback HOT_PLUG_DETECTOR(0) every 2 seconds
[UNLOCKING] timers_mutex start_regular_callback (start_regular_callback 69768)
[UNLOCKED] timers_mutex start_regular_callback ( 0)
[LOCKING] bus_send_queue_mutex send_content ( 0)
[LOCKED] bus_send_queue_mutex send_content (send_content 69768)
[UNLOCKING] bus_send_queue_mutex send_content (send_content 69768)
[UNLOCKED] bus_send_queue_mutex send_content ( 0)
(serial) waiting for stop
[LOCKING] serial_devices_mutex wait_for_stop ( 0)
[LOCKED] serial_devices_mutex wait_for_stop (wait_for_stop 69768)
[UNLOCKING] serial_devices_mutex wait_for_stop (wait_for_stop 69768)
[UNLOCKED] serial_devices_mutex wait_for_stop ( 0)
[LOCKING] serial_devices_mutex find_triggering_file_descriptions ( 0)
[LOCKED] serial_devices_mutex find_triggering_file_descriptions (find_triggering_file_descriptions 69768)
[SERIAL] select detected data available for reading on fd 4
[UNLOCKING] serial_devices_mutex find_triggering_file_descriptions (find_triggering_file_descriptions 69768)
[UNLOCKED] serial_devices_mutex find_triggering_file_descriptions ( 0)
[LOCKING] read_mutex receive ( 0)
[LOCKED] read_mutex receive (receive 69768)
(serial) received ascii "Started config rtlwmbus on stdin listening on any<0A>No meters configured. Printing id:s of all telegrams heard!<0A>"
[UNLOCKING] read_mutex receive (receive 69768)
[UNLOCKED] read_mutex receive ( 0)
(rtlwmbus) checkRTLWMBusFrame "Started config rtlwmbus on stdin listening on any<0A>No meters configured. Printing id:s of all telegrams heard!<0A>"
(rtlwmbus) only text
(rtlwmbus) checkRTLWMBusFrame "No meters configured. Printing id:s of all telegrams heard!<0A>"
(rtlwmbus) only text
[LOCKING] serial_devices_mutex find_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
[UNLOCKING] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex find_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKING] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[LOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[SERIAL] select read on fd 4
[UNLOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[UNLOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[SERIAL] select timeout 1 s
[LOCKING] serial_devices_mutex find_triggering_file_descriptions ( 0)
[LOCKED] serial_devices_mutex find_triggering_file_descriptions (find_triggering_file_descriptions 69768)
[SERIAL] select detected data available for reading on fd 4
[UNLOCKING] serial_devices_mutex find_triggering_file_descriptions (find_triggering_file_descriptions 69768)
[UNLOCKED] serial_devices_mutex find_triggering_file_descriptions ( 0)
[LOCKING] read_mutex receive ( 0)
[LOCKED] read_mutex receive (receive 69768)
(serial) received ascii "read(net): Zasoby chwilowo niedost?pne<0A>"
[UNLOCKING] read_mutex receive (receive 69768)
[UNLOCKED] read_mutex receive ( 0)
(rtlwmbus) checkRTLWMBusFrame "read(net): Zasoby chwilowo niedost?pne<0A>"
(rtlwmbus) only text
[LOCKING] serial_devices_mutex find_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
[UNLOCKING] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex find_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKING] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[LOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[SERIAL] select read on fd 4
[UNLOCKING] serial_devices_mutex list_file_descriptiors_to_listen_to (list_file_descriptiors_to_listen_to 69768)
[UNLOCKED] serial_devices_mutex list_file_descriptiors_to_listen_to ( 0)
[SERIAL] select timeout 1 s
(serial) MAIN thread interrupted
[LOCKING] serial_devices_mutex wait_for_stop ( 0)
(serial) EVENT thread interrupted
[LOCKED] serial_devices_mutex wait_for_stop (wait_for_stop 69768)
[LOCKING] serial_devices_mutex find_non_working_serial_devices (wait_for_stop 69768)
[UNLOCKING] serial_devices_mutex wait_for_stop (wait_for_stop 69768)
[UNLOCKED] serial_devices_mutex wait_for_stop ( 0)
[LOCKED] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
(bgshell) 69772 exited with return code 0
[UNLOCKING] serial_devices_mutex find_non_working_serial_devices (find_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex find_non_working_serial_devices ( 0)
(serial) closing non working fd=4 "cmd_0"
(wmbus) disconnected cmd_0 rtlwmbus
[LOCKING] serial_devices_mutex tickle ( 0)
[LOCKED] serial_devices_mutex tickle (tickle 69768)
[UNLOCKING] serial_devices_mutex tickle (tickle 69768)
[UNLOCKED] serial_devices_mutex tickle ( 0)
(serialcmd) closed /bin/sh pid=69772 fd=4 (rtlwmbus)
[LOCKING] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
(serial) no devices working emergency exit!
(serial) stopping manager
[UNLOCKING] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
(serial) MAIN thread interrupted
[UNLOCKED] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKING] serial_devices_mutex close_all_do_not_remove ( 0)
(serial) non working devices found, exiting.
[LOCKED] serial_devices_mutex close_all_do_not_remove (close_all_do_not_remove 69768)
(serial) TIMER thread interrupted
(serial) event loop stopped!
[UNLOCKING] serial_devices_mutex close_all_do_not_remove (close_all_do_not_remove 69768)
[UNLOCKING] event_loop_mutex eventLoop (eventLoop 69768)
[UNLOCKED] serial_devices_mutex close_all_do_not_remove ( 0)
[UNLOCKED] event_loop_mutex eventLoop ( 0)
(wmbus) deleted rtlwmbus
[LOCKING] serial_devices_mutex tickle ( 0)
[LOCKED] serial_devices_mutex tickle (tickle 69768)
[UNLOCKING] serial_devices_mutex tickle (tickle 69768)
[UNLOCKED] serial_devices_mutex tickle ( 0)
(serialcmd) closed /bin/sh pid=69772 fd=-1 (rtlwmbus)
[LOCKING] serial_devices_mutex close_all_do_not_remove ( 0)
[LOCKED] serial_devices_mutex close_all_do_not_remove (close_all_do_not_remove 69768)
[UNLOCKING] serial_devices_mutex close_all_do_not_remove (close_all_do_not_remove 69768)
[UNLOCKED] serial_devices_mutex close_all_do_not_remove ( 0)
[LOCKING] serial_devices_mutex remove_non_working_serial_devices ( 0)
[LOCKED] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
(serial) no devices working emergency exit!
[UNLOCKING] serial_devices_mutex remove_non_working_serial_devices (remove_non_working_serial_devices 69768)
[UNLOCKED] serial_devices_mutex remove_non_working_serial_devices ( 0)
Hello @andriej Do you have some news ?
In most known package of librtlsdr there's rtl_tcp (which enables RTL on tcp and can be used on remote hosts). I have some cheap openwrt router which could be host for USB RTL stick while readings/parsing could be done remotely.
Is it doable to use it with wmbusmeters tho?