GithubHelp home page GithubHelp logo

bitbangingbytes / gr-smart_meters Goto Github PK

View Code? Open in Web Editor NEW
224.0 224.0 32.0 286 KB

License: GNU General Public License v3.0

CMake 17.18% Python 27.08% C++ 54.27% C 1.47%
cpp gnuradio python sdr smart-meters

gr-smart_meters's People

Contributors

beroset avatar bitbangingbytes avatar diodered avatar ldoolitt avatar mrarm avatar notpike avatar rct avatar recessim avatar sdwilsh avatar timelf123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gr-smart_meters's Issues

Script Running: No Data, RTL-SDR

My local power company is using a FOCUS AXR-SD meter and I am unable to capture data from the network.

From what I can tell packets are being sent, at least based on this waterfall.

image

I followed the instructions as close as possible, with only a couple deviations:

  • Skipped Install Sandia Utilities (Possibly not needed for GR-3.9), could not build
  • Changed sample_rate parameter from int(2e6) to int(2.048e6) because GNU Radio could not launch it
    Screenshot_2022-07-13_14-54-13

I did open the GridStream_RTLSDR_NoGUI.grc file in GNU Radio. After waiting a while (longer than it takes for several blips on the waterfall in SDR++) all I got in the terminal was this:
Screenshot_2022-07-13_15-44-09

I also tried running it with the packet ID and length filters of 0x55 and 0x23 respectively.

Terminal output of gnuradio-companion appears to be clean:

$ gnuradio-companion 
<<< Welcome to GNU Radio Companion 3.9.5.0 >>>

Block paths:
	/usr/share/gnuradio/grc/blocks
	/usr/local/share/gnuradio/grc/blocks

Loading: "/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_RTLSDR_NoGUI.grc"
>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

I also tried with PYTHONPATH set to the dist-packages directory with the following output:

PYTHONPATH=/usr/local/lib/python3.8/dist-packages/ !!
PYTHONPATH=/usr/local/lib/python3.8/dist-packages/ gnuradio-companion 
<<< Welcome to GNU Radio Companion 3.9.5.0 >>>

Block paths:
	/usr/share/gnuradio/grc/blocks
	/usr/local/share/gnuradio/grc/blocks

Loading: "/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_RTLSDR_NoGUI.grc"
>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

Generating: '/home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py'

Executing: /usr/bin/gnome-terminal -- /usr/bin/python3 -u /home/gudenau/Desktop/meters/gr-smart_meters/examples/GridStream_HackRF_NoGUI.py


>>> Done

with very similar output when running the script.

Pick a license for this work

I'm interested in using and contributing to this work, but there's no license in the repository. My preference would be for a permissive license like MIT or BSD, but if you'd prefer a copyleft license, I can live with GPLv2 as well (I'm not trying to be prescriptive though!). I have found GitHub's https://choosealicense.com/ to be helpful in the past.

Context:
I'd like to work on making a docker image so folks can easily spin up a server to read their own meters, with a longer-term goal of integrating it into Home Assistant as part of their new energy tracking feature. As-is, this repository does not give me or anyone else the permission to do something like that.

Usage information

I was able to decode some packets in my area (Southern California Edison, Santa Barbara). But I am curious about extracting usage information from these meters. Seems like the only information available is meter id, geo coordinates, uptime, and color. Its super interesting to see this. But is power usage information not part of this system?

c++: error: unrecognized command line option ‘-mavx’

gr-fhss_utils fails to build. Any idea how to proceed beyond this error? Nothing obvious standing out here. Freshly installed Ubuntu 20.04 on RaspberryPI, then started following this guide.

root@ubuntu:~/FHSS_Utils/gr-fhss_utils/build# make -j8
[  5%] Building CXX object lib/CMakeFiles/gnuradio-fhss_utils.dir/cf_estimate_impl.cc.o
[ 11%] Building CXX object lib/CMakeFiles/gnuradio-fhss_utils.dir/tagged_burst_to_pdu_impl.cc.o
c++: error: unrecognized command line option ‘-mavx’
[ 17%] Building CXX object lib/CMakeFiles/gnuradio-fhss_utils.dir/constants.cc.o
make[2]: *** [lib/CMakeFiles/gnuradio-fhss_utils.dir/build.make:63: lib/CMakeFiles/gnuradio-fhss_utils.dir/cf_estimate_impl.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 23%] Building CXX object lib/CMakeFiles/gnuradio-fhss_utils.dir/fft_burst_tagger_impl.cc.o
c++: error: unrecognized command line option ‘-mavx’
make[2]: *** [lib/CMakeFiles/gnuradio-fhss_utils.dir/build.make:89: lib/CMakeFiles/gnuradio-fhss_utils.dir/tagged_burst_to_pdu_impl.cc.o] Error 1
c++: error: unrecognized command line option ‘-mavx’
[ 23%] Built target pygen_apps_9a6dd
make[2]: *** [lib/CMakeFiles/gnuradio-fhss_utils.dir/build.make:102: lib/CMakeFiles/gnuradio-fhss_utils.dir/constants.cc.o] Error 1
[ 29%] Built target doxygen_target
[ 41%] Built target pygen_python_72f77
c++: error: unrecognized command line option ‘-mavx’
[ 52%] Built target _fhss_utils_swig_doc_tag
make[2]: *** [lib/CMakeFiles/gnuradio-fhss_utils.dir/build.make:76: lib/CMakeFiles/gnuradio-fhss_utils.dir/fft_burst_tagger_impl.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:272: lib/CMakeFiles/gnuradio-fhss_utils.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:141: all] Error 2

Can't import smart_meters

I believe I followed the directions at https://wiki.recessim.com/view/Gr-smart_meters_Setup_Guide correctly on my Debian Testing system. However, if I try to start the rtl sdr flowgraph in gnuradio, or even just try to import smart_meters manually from a python repl, I see the following error:

>>> import smart_meters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.11/dist-packages/smart_meters/__init__.py", line 18, in <module>
    from .smart_meters_python import *
ImportError: /usr/local/lib/python3.11/dist-packages/smart_meters/smart_meters_python.cpython-311-x86_64-linux-gnu.so: undefined symbol: _ZN2gr12smart_meters10GridStream4makeEbbbbbbbtjjht

I'm afraid my experience with python is limited, so I can't get much further. Any suggestions?

Can't decode GPS packets

I have everything set up and seem to be seeing packets with CRC but both generate errors if I enable the GPS decoder blocks. I get the following error twice:

thread_body_wrapper :error: ERROR thread[thread-per-block[10]: <block Google Earth(3)>]: ValueError: invalid literal for int() with base 16: b''

At:
/usr/local/lib/python3.10/dist-packages/smart_meters/google_earth.py(97): decodeGPS
/usr/local/lib/python3.10/dist-packages/smart_meters/google_earth.py(68): handle_pdu

thread_body_wrapper :error: ERROR thread[thread-per-block[11]: <block Google Map(2)>]: ValueError: invalid literal for int() with base 16: b''

At:
/usr/local/lib/python3.10/dist-packages/smart_meters/google_map.py(72): decodeGPS
/usr/local/lib/python3.10/dist-packages/smart_meters/google_map.py(64): handle_pdu

Just wondering if it's a glitch or something in my settings? I've tried this on two different installations with the same result.

Thanks

Found CRC value

South King County, WA | Puget Sound Energy | CRC = 0x142A

Puget Sound Energy (PSE) covers a lot of territory. I'm not sure if this CRC is used for all of their Washington State infrastructure or just the South King County area.

Base band test data is missing

It would be nice to have some raw .cu8 data to play with. If anyone could supply me with some sample signals that would be nice.

GridStream_impl.cc Boost Fail to Make

Hi,

I'm trying to build the gr-smart_meter blocks for GRC however I need some help trying to figure out what the hang up is. I'm working with Ubuntu 18.04 Bionic and installed all the dependencies outlined in this write up (https://wiki.recessim.com/view/Gr-smart_meters_Setup_Guide).

Fair warning but I'm not a C++ dev so I'm really unfamiliar with this. Below is what I'm getting when I try to compile this code.

[  7%] Building CXX object lib/CMakeFiles/gnuradio-smart_meters.dir/GridStream_impl.cc.o
In file included from /usr/include/boost/bind.hpp:22:0,
                 from /usr/include/boost/thread/detail/thread.hpp:30,
                 from /usr/include/boost/thread/thread_only.hpp:22,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/gnuradio/thread/thread.h:31,
                 from /usr/include/gnuradio/basic_block.h:31,
                 from /usr/include/gnuradio/block.h:27,
                 from /home/user/Software/gr-smart_meters/lib/../include/smart_meters/GridStream.h:25,
                 from /home/user/Software/gr-smart_meters/lib/GridStream_impl.h:24,
                 from /home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:26:
/usr/include/boost/bind/bind.hpp: In instantiation of ‘struct boost::_bi::result_traits<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&)>’:
/usr/include/boost/bind/bind.hpp:1284:48:   required from ‘class boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >’
/home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:60:73:   required from here
/usr/include/boost/bind/bind.hpp:75:37: error: ‘int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&)’ is not a class, struct, or union type
     typedef typename F::result_type type;
                                     ^~~~
In file included from /usr/include/boost/function/detail/maybe_include.hpp:18:0,
                 from /usr/include/boost/function/detail/function_iterate.hpp:14,
                 from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:52,
                 from /usr/include/boost/function.hpp:64,
                 from /usr/include/gnuradio/basic_block.h:34,
                 from /usr/include/gnuradio/block.h:27,
                 from /home/user/Software/gr-smart_meters/lib/../include/smart_meters/GridStream.h:25,
                 from /home/user/Software/gr-smart_meters/lib/GridStream_impl.h:24,
                 from /home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:26:
/usr/include/boost/function/function_template.hpp: In instantiation of ‘static void boost::detail::function::void_function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::function_buffer&, T0) [with FunctionObj = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>]’:
/usr/include/boost/function/function_template.hpp:925:38:   required from ‘void boost::function1<R, T1>::assign_to(Functor) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>]’
/usr/include/boost/function/function_template.hpp:716:7:   required from ‘boost::function1<R, T1>::function1(Functor, typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>; typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type = int]’
/usr/include/boost/function/function_template.hpp:1061:16:   required from ‘boost::function<R(T0)>::function(Functor, typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>; typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type = int]’
/usr/include/gnuradio/basic_block.h:392:38:   required from ‘void gr::basic_block::set_msg_handler(pmt::pmt_t, T) [with T = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; pmt::pmt_t = boost::shared_ptr<pmt::pmt_base>]’
/home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:60:74:   required from here
/usr/include/boost/function/function_template.hpp:159:11: error: no match for call to ‘(boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >) (boost::shared_ptr<pmt::pmt_base>)’
           BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS));
           ^
lib/CMakeFiles/gnuradio-smart_meters.dir/build.make:62: recipe for target 'lib/CMakeFiles/gnuradio-smart_meters.dir/GridStream_impl.cc.o' failed
make[2]: *** [lib/CMakeFiles/gnuradio-smart_meters.dir/GridStream_impl.cc.o] Error 1
CMakeFiles/Makefile2:135: recipe for target 'lib/CMakeFiles/gnuradio-smart_meters.dir/all' failed
make[1]: *** [lib/CMakeFiles/gnuradio-smart_meters.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Any help would be appreciated.
Thank you!

Decoder.h Bindings are our of sync

You've made a Python CFlag change but did not update something (I've not deep dived it yet but it was in the last 5 months). Changing to commit f8e869e has fixed the issue for the time being.

image

Determining CRC always fails

I'm following the instructions in the wiki to determine the CRC for my meter but reveng always fails with "no models found".

My meter is the Gen 5 shown at the bottom of this page: https://wiki.recessim.com/view/Landis%2BGyr_Residential_Meter

I'm using an RTL-SDR for listening to the meter. The antenna and SDR are placed next to an inside wall at the point nearest to the meter's location on the outside. All the software is running on a Raspberry Pi 4 running Bookworm.

Some raw sample data:

80FF2A55002330EFFFFFFFFFFFFE902482A0001A006D1E05A40B112C82E001001935060C7B7C7031A6
80FF2A55002330FFFFFFFFFFFFFE9024178C001200892C7AA40B9024178C01001635050A5F7E709EC1
80FF2A55002330FFFFFFFFFFFFFE90247AF800EC0087CC06A40B90247AF8010016350503437E704642
80FF2A55002330FFFFFFFFFFFFFE90241B200006008AC0F6A40B90241B20010015350513657E7084C8
80FF2A55002330FFFFFFFFFFFFFE90241B0700D40089654BA40B90241B07010015350506457E70E732
80FF2A55002330FFFFFFFFFFFFFE90241CE500C400896B5CA40B90241CE5010015350506D17E702B87
80FF2A55002330FFFFFFFFFFFFFE90241CE500CC00896B67A40B90241CE501001535050B317E70935F
80FF2A55002330FFFFFFFFFFFFFE9023FA7100520086AA48A40B9023FA710100153505117B7E7087D6

Stripping the first 6 bytes yields:

30EFFFFFFFFFFFFE902482A0001A006D1E05A40B112C82E001001935060C7B7C7031A6
30FFFFFFFFFFFFFE9024178C001200892C7AA40B9024178C01001635050A5F7E709EC1
30FFFFFFFFFFFFFE90247AF800EC0087CC06A40B90247AF8010016350503437E704642
30FFFFFFFFFFFFFE90241B200006008AC0F6A40B90241B20010015350513657E7084C8
30FFFFFFFFFFFFFE90241B0700D40089654BA40B90241B07010015350506457E70E732
30FFFFFFFFFFFFFE90241CE500C400896B5CA40B90241CE5010015350506D17E702B87
30FFFFFFFFFFFFFE90241CE500CC00896B67A40B90241CE501001535050B317E70935F
30FFFFFFFFFFFFFE9023FA7100520086AA48A40B9023FA710100153505117B7E7087D6

My reveng command:
reveng -w 16 -s 30EFFFFFFFFFFFFE902482A0001A006D1E05A40B112C82E001001935060C7B7C7031A6 30FFFFFFFFFFFFFE9024178C001200892C7AA40B9024178C01001635050A5F7E709EC1 30FFFFFFFFFFFFFE90247AF800EC0087CC06A40B90247AF8010016350503437E704642 30FFFFFFFFFFFFFE90241B200006008AC0F6A40B90241B20010015350513657E7084C8 30FFFFFFFFFFFFFE90241B0700D40089654BA40B90241B07010015350506457E70E732 30FFFFFFFFFFFFFE90241CE500C400896B5CA40B90241CE5010015350506D17E702B87 30FFFFFFFFFFFFFE90241CE500CC00896B67A40B90241CE501001535050B317E70935F 30FFFFFFFFFFFFFE9023FA7100520086AA48A40B9023FA710100153505117B7E7087D6

and the result:
reveng: no models found

Am I doing something wrong? Or is there something different about the way my meter is sending data?

Infinite loop in crc16

Sometimes I get a bad burst which its length is less than 8. This caused underflow of out.size()-8 and crc16() will not finish. It didn't cause a crash perhaps due to uint16_t i wraps around in small range. It's worth putting a check on out.size() before calling crc16().

Build fails (fedora 37)

I'm following the instructions at https://wiki.recessim.com/view/Gr-smart_meters_Setup_Guide and getting a weird error when trying to run cmake on gr-smart_meters (branch adjusted from those instructions to use maint-3.10).

Output looks like:

-- Build type not specified: defaulting to release.
-- Using GMP.
-- User set python executable /usr/bin/python3
-- Extracting version information from git describe...
fatal: No names found, cannot describe anything.
-- Found pybind11: /usr/include (found version "2.10.3")
-- Using install prefix: /usr/local
-- Building for version: g36ea098 / 1.0.0git
-- No C++ unit tests... skipping
-- PYTHON and GRC components are enabled
-- Python checking for pygccxml - found
CMake Error at /lib64/cmake/gnuradio/GrPybind.cmake:220 (message):
  Python bindings for Deframer.h are out of sync
Call Stack (most recent call first):
  python/bindings/CMakeLists.txt:35 (GR_PYBIND_MAKE_OOT)

gnuradio package versions are gnuradio-3.10.3.0-4.fc37.x86_64 and python3-gnuradio-3.10.3.0-4.fc37.x86_64 which is reported as a compatible version.

I set BINDTOOL_GEN_AUTOMATIC(1) in Deframer_python.cc and cmake completed successfully, however make still fails with the following output:

[  0%] Built target pygen_apps_9a6dd
[ 18%] Built target pygen_python_40be2
[ 27%] /home/USERNAME/gas_meter/FHSS_Utils/gr-smart_meters/python/bindings/../../include/smart_meters/Deframer.h
[ 54%] Built target gnuradio-smart_meters
[ 63%] Built target smart_meters_docstrings
In file included from <built-in>:437:
<command line>:3:9: error: macro name must be an identifier
#define -U__PIE__ 1
        ^
1 error generated.
Traceback (most recent call last):
  File "/home/USERNAME/gas_meter/FHSS_Utils/gr-smart_meters/python/bindings/bind_oot_file.py", line 57, in <module>
    bg.gen_file_binding(args.filename)
  File "/usr/lib64/python3.11/site-packages/gnuradio/bindtool/core/generator.py", line 211, in gen_file_binding
    raise(e)
  File "/usr/lib64/python3.11/site-packages/gnuradio/bindtool/core/generator.py", line 198, in gen_file_binding
    header_info = parser.get_header_info(self.namespace)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/site-packages/gnuradio/blocktool/core/parseheader_generic.py", line 324, in get_header_info
    decls = parser.parse(
            ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/__init__.py", line 51, in parse
    declarations = parser.read_files(files, compilation_mode)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/project_reader.py", line 255, in read_files
    return self.__parse_all_at_once(files)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/project_reader.py", line 356, in __parse_all_at_once
    return self.read_string(''.join(header_content))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/project_reader.py", line 369, in read_string
    decls = reader.read_string(content)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/source_reader.py", line 377, in read_string
    decls = self.read_file(header_file)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/source_reader.py", line 303, in read_file
    return self.read_cpp_source_file(source_file)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/source_reader.py", line 322, in read_cpp_source_file
    xml_file = self.create_xml_file(ffname)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pygccxml/parser/source_reader.py", line 263, in create_xml_file
    raise RuntimeError(
RuntimeError: Error occurred while running CASTXML xml file does not exist
make[2]: *** [python/bindings/CMakeFiles/Deframer_python.cc_regen_bindings.dir/build.make:73: /home/USERNAME/gas_meter/FHSS_Utils/gr-smart_meters/python/bindings}/Deframer_python.cc] Error 1
make[1]: *** [CMakeFiles/Makefile2:314: python/bindings/CMakeFiles/Deframer_python.cc_regen_bindings.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Collection of buglets

For gr-smart_meters itself, and the RECESSIM Gr-smart_meters_Setup_Guide.

My base system is Debian testing (Bookworm) gnuradio 3.10.4.0 and gr-osmosdr 0.2.3.
Maybe a little bleeding-edge at the moment, but it (or something very similar) should go mainstream in a matter of months.
The setup instructions are based on gnuradio 3.8 or 3.9, and don't work as-is on 3.10.

As discussed in https://lists.gnu.org/archive/html/discuss-gnuradio/2022-12/msg00074.html I needed to
apt-get install --no-install-recommends libsndfile1-dev
before starting to build the OOT gnuradio modules.
Skipping over gr-osmosdr (because there's a Debian package),

  • gr-pdu_utils
  • gr-sandia_utils
  • gr-timing_utils
  • gr-fhss_utils

all need to have their maint-3.10 branch checked out, and get built and installed in the above order.
I got some compile-time build warnings; logs available on request.

I needed to
add apt-get install -y gobject-introspection gir1.2-gtk-3.0
before gnuradio-companion will start up, otherwise it complained about "Namespace Gtk not available".
I suppose most people wouldn't notice, if they have some default Ubuntu desktop loaded. I personally find such X environments unusable. :-(

About gr-smart_meters proper, and examples/GridStream_RTLSDR_NoGUI.grc in particular:

  1. It self-identifies as id: GridStream_HackRF_NoGUI. This leads to it confusingly generating GridStream_HackRF_NoGUI.py when you press gnuradio-companion's Generate button.
  2. Running it crashed with an invalid FFT size. I changed fft_size value: int(2000) to int(1024), and that let it run.

All of this is possibly a waste of my time. I looked more closely at my electric meter.
I have a California PG&E Landis+Gyr FOCUS AXRe-SD, and the sticker at its top says ITRON, FCC ID: OWS-NIC511-06; no mention of GridStream.

Invalid Filter patterns

I am trying to install gr-smart meters, and have not manged to make it happen.
Here is one of the problems during make

Generating init.pyc, google_map.pyc, google_earth.pyc
[ 41%] Built target pygen_apps_9a6dd
warning: Invalid value for 'FILTER_PATTERNS' tag at line 784, file /home/gord/gr-smart_meters/build/docs/doxygen/Doxyfile: Values in list '*.py="/home/gord/gr-smart_meters"/doc/doxygen/other/doxypy.py' are not properly space or comma separated
warning: Tag 'COLS_IN_ALPHA_INDEX' at line 877 of file '/home/gord/gr-smart_meters/build/docs/doxygen/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
error: Illegal format for option FILTER_PATTERNS, no equal sign ('=') specified for item '/doc/doxygen/other/doxypy.py'

SegFault when adding rtlsdr flow

What happened?
When adding a GRC flow, the app crashes with the following in syslog:
Jan 4 19:50:21 np3 kernel: [79027.967650] gnuradio-compan[235862]: segfault at 7f1642acbab7 ip 00007f15e6bc58ea sp 00007ffdefdd5170 error 7 in _imagingft.cpython-38-x86_64-linux-gnu.so[7f15e6bbd000+b000]
Jan 4 19:50:21 np3 kernel: [79027.967658] Code: e8 7b ae ff ff 48 85 c0 48 89 03 0f 84 bf 01 00 00 48 8d 35 28 11 00 00 48 89 c7 e8 10 b3 ff ff 48 8b 2d 29 1f 20 00 48 85 c0 <48> 89 45 00 0f 84 6c 01 00 00 48 8b 3b 48 8d 35 9a 10 00 00 e8 ed

System Information
OS: Ubuntu 20.04.3
GR Installation Method: apt

GNU Radio Version
3.8 (maint-3.8)

Specific Version
3.8.3.1

Steps to Reproduce the Problem
Add flow for any radio from gr-smart_meters. Segfault occurs immediately.

Relevant log output

Jan  4 19:50:21 np3 kernel: [79027.967650] gnuradio-compan[235862]: segfault at 7f1642acbab7 ip 00007f15e6bc58ea sp 00007ffdefdd5170 error 7 in _imagingft.cpython-38-x86_64-linux-gnu.so[7f15e6bbd000+b000]
Jan  4 19:50:21 np3 kernel: [79027.967658] Code: e8 7b ae ff ff 48 85 c0 48 89 03 0f 84 bf 01 00 00 48 8d 35 28 11 00 00 48 89 c7 e8 10 b3 ff ff 48 8b 2d 29 1f 20 00 48 85 c0 <48> 89 45 00 0f 84 6c 01 00 00 48 8b 3b 48 8d 35 9a 10 00 00 e8 ed

Question: any interest in a wireshark dissector?

I'm working on a lua script that Wireshark can use to dissect packets. It doesn't pull usage data from the payload yet, but it appears to pull more headers out of the Oncor file on the wiki.

It's much easier to review the protocol in Wireshark, where possible fields are labeled.

Is there any interest in this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.