首頁>Raspberry Pi>source

该系統是執行Raspbian GNU / Linux 10(破壞者)並使用systemd的Raspberry Pi B +。

我原以為這是一件微不足道的练习,但似乎比預期的要少.我有一个USB SDR接收器,它被設置為通過第三方程式(用C編寫)傳遞資料流,该程式会剥离資料,然後將其儲存在RRD以及用於汇总接收到的所有資料的第二个纯文字檔案中.

基本上,資料正在由能量监视器(Efergy)廣播,该监视器在蓝牙上每6秒以433.5MHz的频率廣播一个脉冲,该脉冲是该時間點所消耗的能量的讀數.该資料由單独的(物理上独立的监控器)收集,该資料聚合資料並顯示该時間和特定時間範圍(日,週,月等)所消耗的能量.在我看来,這對於Pi来說是一个理想的專案,它可以將資料收集為一種形式,可以更容易地以圖形形式顯示並在網頁上顯示,類似於我从2个位置附近的多个温度傳感器所聚合的資料.

与後者的不同之處在於,資料是连續廣播的,並且rtl-sdr监听程式需要连續執行.温度測量可以通過crontab間歇地进行.使用cli使用(方法1)之類的命令,该過程可以正常工作

rtl_fm -f 433500000 -s 200000 -r 96000 -g 7.7 2>/dev/null | ./Energy_Log /home/pi/Energy/Samples.txt

然後將RTL-SDR的輸出通過管道傳送到C程式(最初由Nataniel Elijah編寫,然後由Li Gough博士和我自己修改),该程式將計算所需的實際資料並將其寫入迴圈資料庫( Oetiker)以及纯文字檔案.我的2種適應方法通過Energy_Log建立了一个瞬時系統命令,以執行rrdtool命令,该命令在每次接收到新資料點或"听到"時在指定的unixtime插入資料點.我承认使用rrdtool'C'庫直接執行此操作更有意義,但是它可以工作,並且我無法让'C'編譯器接受rrdtool命令。

以上述形式執行時 將程式呼叫的結構顯示為:-

ps -axf
最新回復
  • 6月前
    1 #

    systemd不会對 ExecStart=进行外壳樣式解析 線.請參阅systemd.service.通常,要具有竖線字元和 2>&1 在外壳解析後,您將需要呼叫外壳.例如:

    ExecStart=/bin/bash -c '/usr/local/bin/rtl_fm ... 2>&1 | /home/pi/...'
    

    当心使用 $ 並在這些行中加上引號,因為systemd確實對其进行了解析。

  • 6月前
    2 #

    meuh的迴答 是正確的,但也许更好地使用pipexec.最终,我在pipexec命令中發現了一个小錯誤,该錯誤在修複後完全按照我想要的方式執行(現已在上文中进行了更正).通過命令將資訊寫入Oetiker RRD(而不是尝試使實際的RRD'C'庫正常工作),从而執行了2个月的最佳時間.這樣更容易。

    還要設置rrd的每日查詢,以便在午夜之後將每日耗電量(以kwhrs為單位)發送到主服務器上的Mariadb.似乎工作正常。

相似問題

  • security:掃描BLE(低功耗蓝牙)設備時訪問被拒绝
  • i2c:讀取ADS1115的配置寄存器時,如何获得与之前編寫的值不同的值?