Frage zu Sensoren und JQ zwecks senden an SHC

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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:

    Quellcode

    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:

    Quellcode

    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
    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 :)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von mastadook ()