Hallo zusammen,
ich habe mir, ähnlich wie im archivierten Thema (433 Mhz Funktemperatursensoren auslesen) was gebaut,
was mir mittels eines DVB-T Sticks und 433_rtl Tools ein paar Temperatursensoren auswertet.
Jetzt habe nur ein klitze kleines Problem, bei dem mir eventuell jemand helfen kann,
der sich mit diesem Query Tool JQ auskennt, das in dem oben genannten Beispiel verwendet wurde.
Ich habe eine Sorte Sender, bei denen wird keine ID gesendet oder ausgewertet.
Ich muss die also irgendwie anders selektieren, habe an Namen und Channel gedacht, da nur Channel ja auch nicht geht.
So sieht ein Eintrag mit ID des Senders aus, dort klappt problemlos mit der ID:
So sieht der Eintrag aus, den ich auswählen möchte:
Und so, das Script zum Auswerten, da bekomme ich aber Fehler bei den beiden Teilen für diese besagten Sender:
Alles anzeigen
Bis auf die $...4 und $...5 funktioniert alles wie gewünscht.
Kann mir bitte jemand helfen, wie ich jq nutzen kann um solch einen bzw. 3 Sender auszuwählen die auf Channel 1-3 funken?
Danke euch schon mal für die Hilfe
ich habe mir, ähnlich wie im archivierten Thema (433 Mhz Funktemperatursensoren auslesen) was gebaut,
was mir mittels eines DVB-T Sticks und 433_rtl Tools ein paar Temperatursensoren auswertet.
Jetzt habe nur ein klitze kleines Problem, bei dem mir eventuell jemand helfen kann,
der sich mit diesem Query Tool JQ auskennt, das in dem oben genannten Beispiel verwendet wurde.
Ich habe eine Sorte Sender, bei denen wird keine ID gesendet oder ausgewertet.
Ich muss die also irgendwie anders selektieren, habe an Namen und Channel gedacht, da nur Channel ja auch nicht geht.
So sieht ein Eintrag mit ID des Senders aus, dort klappt problemlos mit der ID:
So sieht der Eintrag aus, den ich auswählen möchte:
Und so, das Script zum Auswerten, da bekomme ich aber Fehler bei den beiden Teilen für diese besagten Sender:
Shell-Script
- #!/bin/bash
- echo "cleaning /tmp/pilight_rtl.txt"
- sudo rm /tmp/pilight_rtl.txt
- echo "start collecting 90 seconds"
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi
- timeout 90s sudo rtl_433 -R 3 -R 19 -R 16 -R 56 -C si -F json > /tmp/pilight_rtl.txt
- HUM1=$(jq 'select(.id == 145)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- TEMP1=$(jq 'select(.id == 145)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- BAT1=$(jq 'select(.id == 145)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- echo ""
- if [ -z "$TEMP1" ]; then
- echo "Sensor Kinderzimmer Nassia: No Data transmitted"
- else
- curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=11&sid=11&type=2&v1=${TEMP1}&v2=${HUM1}"
- fi
- HUM2=$(jq 'select(.id == 172)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- TEMP2=$(jq 'select(.id == 172)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- BAT2=$(jq 'select(.id == 172)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- echo ""
- if [ -z "$TEMP2" ]; then
- echo "Sensor Test 1: No Data transmitted"
- else
- curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=21&sid=21&type=2&v1=${TEMP2}&v2=${HUM2}"
- fi
- HUM3=$(jq 'select(.rid == 178)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- TEMP3=$(jq 'select(.rid == 178)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- BAT3=$(jq 'select(.rid == 178)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- if [ -z "$TEMP3" ]; then
- echo "Sensor Test 2: No Data transmitted"
- else
- curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=31&sid=31&type=2&v1=${TEMP3}&v2=${HUM3}"
- fi
- HUM4=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",1)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- TEMP4=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",1)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- BAT4=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",1)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- echo ""
- if [ -z "$TEMP4" ]; then
- echo "Sensor Test 3: No Data transmitted"
- else
- curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=41&sid=41&type=2&v1=${TEMP4}&v2=${HUM4}"
- fi
- HUM5=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",3)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- TEMP5=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",3)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- BAT5=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",3)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
- echo ""
- if [ -z "$TEMP5" ]; then
- echo "Sensor Test 4: No Data transmitted"
- else
- curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=51&sid=51&type=2&v1=${TEMP5}&v2=${HUM5}"
- fi
Kann mir bitte jemand helfen, wie ich jq nutzen kann um solch einen bzw. 3 Sender auszuwählen die auf Channel 1-3 funken?
Danke euch schon mal für die Hilfe
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von mastadook ()