Frage zu Sensoren und JQ zwecks senden an SHC

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Frage zu Sensoren und JQ zwecks senden an SHC

    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:

    Source Code

    1. {"time" : "2017-03-25 23:40:04", "model" : "Nexus Temperature/Humidity", "id" : 172, "battery" : "OK", "channel" : 1, "temperature_C" : 25.500, "humidity" : 37}

    So sieht der Eintrag aus, den ich auswählen möchte:

    Source Code

    1. {"time" : "2017-03-24 12:52:37", "model" : "Kedsum Temperature & Humidity Sensor", "channel" : 3, "temperature_C" : 25.500, "humidity" : 37}

    Und so, das Script zum Auswerten, da bekomme ich aber Fehler bei den beiden Teilen für diese besagten Sender:

    Shell-Script

    1. #!/bin/bash
    2. echo "cleaning /tmp/pilight_rtl.txt"
    3. sudo rm /tmp/pilight_rtl.txt
    4. echo "start collecting 90 seconds"
    5. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi
    6. timeout 90s sudo rtl_433 -R 3 -R 19 -R 16 -R 56 -C si -F json > /tmp/pilight_rtl.txt
    7. HUM1=$(jq 'select(.id == 145)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    8. TEMP1=$(jq 'select(.id == 145)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    9. BAT1=$(jq 'select(.id == 145)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    10. echo ""
    11. if [ -z "$TEMP1" ]; then
    12. echo "Sensor Kinderzimmer Nassia: No Data transmitted"
    13. else
    14. curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=11&sid=11&type=2&v1=${TEMP1}&v2=${HUM1}"
    15. fi
    16. HUM2=$(jq 'select(.id == 172)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    17. TEMP2=$(jq 'select(.id == 172)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    18. BAT2=$(jq 'select(.id == 172)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    19. echo ""
    20. if [ -z "$TEMP2" ]; then
    21. echo "Sensor Test 1: No Data transmitted"
    22. else
    23. curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=21&sid=21&type=2&v1=${TEMP2}&v2=${HUM2}"
    24. fi
    25. HUM3=$(jq 'select(.rid == 178)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    26. TEMP3=$(jq 'select(.rid == 178)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    27. BAT3=$(jq 'select(.rid == 178)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    28. if [ -z "$TEMP3" ]; then
    29. echo "Sensor Test 2: No Data transmitted"
    30. else
    31. curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=31&sid=31&type=2&v1=${TEMP3}&v2=${HUM3}"
    32. fi
    33. HUM4=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",1)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    34. TEMP4=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",1)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    35. BAT4=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",1)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    36. echo ""
    37. if [ -z "$TEMP4" ]; then
    38. echo "Sensor Test 3: No Data transmitted"
    39. else
    40. curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=41&sid=41&type=2&v1=${TEMP4}&v2=${HUM4}"
    41. fi
    42. HUM5=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",3)| .humidity' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    43. TEMP5=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",3)| .temperature_C' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    44. BAT5=$(jq 'select(.model,.channel == "Kedsum Temperature & Humidity Sensor",3)| .battery' /tmp/pilight_rtl.txt| xargs -n1 | tail -1)
    45. echo ""
    46. if [ -z "$TEMP5" ]; then
    47. echo "Sensor Test 4: No Data transmitted"
    48. else
    49. curl "http://192.168.1.68/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=51&sid=51&type=2&v1=${TEMP5}&v2=${HUM5}"
    50. fi
    Display All
    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 :)

    The post was edited 5 times, last by mastadook ().