433 Mhz Funktemperatursensoren auslesen

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

    • 433 Mhz Funktemperatursensoren auslesen

      Eigentlich habe ich bereits in einem anderen Beitrag hier beschrieben, wie ein 433 Mhz Funktemperatursensoren ausgelesen werden kann.
      Dennoch finde ich, dass das ganze mal in den richtigen Bereich einfließen sollte.

      Zuallererst muss geprüft werden, ob die Daten Funktemperatursensoren empfangen werden.
      Dazu pilight-receive in die CLI eingeben und warten.

      Irgendwann sollte etwas in der folgenden Art auftauchen:

      Quellcode

      1. {
      2.         "message": {
      3.                 "id": 1490,
      4.                 "temperature": 26.4,
      5.                 "humidity": 41.0,
      6.                 "battery": 1
      7.         },
      8.         "origin": "receiver",
      9.         "protocol": "alecto_ws1700",
      10.         "uuid": "0000-b8-27-eb-0f3db7",
      11.         "repeats": 4
      12. }
      Alles anzeigen


      In diesem Codeausschnitt seht ihr die mittels eures 433 MHz Empfängers empfangenen Daten.
      Um diese nun nach SHC zu bekommen, benötigt ihr folgendes Script.

      Shell-Script

      1. #!/bin/bash
      2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi
      3. timeout 120s pilight-receive > /tmp/pilight.txt
      4. HUM=$(jq 'select(.message.id == 1490)| .message.humidity' /tmp/pilight.txt| xargs -n1 | tail -1)
      5. TEMP=$(jq 'select(.message.id == 1490)| .message.temperature' /tmp/pilight.txt| xargs -n1 | tail -1)
      6. if [ -z "$TEMP" ]; then
      7. echo "$TEMP is empty"
      8. else
      9. curl "http://localhost/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&sid=1&type=2&v1=${TEMP}&v2=${HUM}"
      10. fi
      Alles anzeigen


      In diesem müsst ihr die entsprechende ID Nummerierung in Zeile 5 und 6 ändern und evtl. die Adresse zu eurem Raspberry.
      Solltet ihr bereits die ID 1 bereits vergeben haben, müsst ihr diese natürlich ebenfalls ersetzen.

      Weiterhin ist zu beachten, das euer Raspberry für die Ausführung von jq Jessie installiert haben muss.
      Eine Ausführung unter Wheezy ist leider nicht möglich, da jq für diese Version nicht kompiliert wurde.
      Falls ihr jq noch nicht installiert habt: sudo apt-get install jq

      Das Skript speichert ihr dann auf eurem Raspberry ab und lasst es bspw. alle 5 Minuten mittels eines Cronjobs ausführen.
      Anschließend werden alle 5 Minuten die Daten der Funktemperatursensor übertragen hat, an das SHC übertragen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rgarcia ()

    • RE: 433 Mhz Funktemperatursensoren auslesen

      Hallo

      Möchte auch einen Funktemperatursensor in SHC einbinden,
      aber leider ist Software nicht so meine Stärke.
      Ausgelesen habe folgenes Model.

      Model Ventus W186-D

      Quellcode

      1. "message": {
      2.                "id": 96,
      3.                "temperature": 1.1,
      4.                "humidity": 99.0,
      5.                "battery": 1
      6.        },
      7.        "origin": "receiver",
      8.        "protocol": "alecto_wx500",
      9.        "uuid": "0000-b8-27-eb-cb3ea0",
      10.        "repeats": 5


      Shell-Script

      1. #!/bin/bash
      2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi
      3. timeout 120s pilight-receive > /tmp/pilight.txt
      4. HUM=$(jq 'select(.message.id == 96)| .message.humidity' /tmp/pilight.txt| xargs -n1 | tail -1)
      5. TEMP=$(jq 'select(.message.id == 96)| .message.temperature' /tmp/pilight.txt| xargs -n1 | tail -1)
      6. if [ -z "$TEMP" ]; then
      7. echo "$TEMP is empty"
      8. else
      9. curl "http://raspberry/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&sid=1&type=2&v1=${TEMP}&v2=${HUM}"
      10. fi
      Alles anzeigen


      So würde ich es dann machen.

      1. sudo nano funktemperatursensor.sh

      2. sudo cp funktemperatursensor.sh /home/pi

      3. In "crontab -e"   " 5 * * * * /home/pi/funktemperatursensor.sh " einfügen.

      4. Neustart

      Kann ich die Adresse zu SHC so lassen ?
    • RE: 433 Mhz Funktemperatursensoren auslesen

      premo schrieb:


      1. sudo nano funktemperatursensor.sh

      2. sudo cp funktemperatursensor.sh /home/pi

      3. In "crontab -e"   " 5 * * * * /home/pi/funktemperatursensor.sh " einfügen.

      4. Neustart

      Kann ich die Adresse zu SHC so lassen ?


      1. Passt so
      2. Kannst du dir sparen wenn du funktemperatursensor.sh direkt unter dem /home/pi Pfad erstellst
      3. sudo crontab -e und folgendes einfügen "*/5 * * * * /home/pi/funktemperatursensor.sh" andernfalls läuft den Job immer um fünf nach.
      4. Das Skirpt ausführbar machen dazu sudo chmod +x funktemperatursensor.sh
      5. Neustarten braucht du nicht - zum testen kannst du das Skript auch einfach mal händisch ausführen (sudo ./funktemperatursensor.sh) und anschließend in die Sensorpunkte schauen

      Die Adresse kannst du so lassen wenn dein raspberry im DNS auch raspberry heißt. Andernfalls abändern - kannst auch localhost eintragen *hab ich eben mal angepasst*

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rgarcia ()

    • RE: 433 Mhz Funktemperatursensoren auslesen

      Danke für die Antwort.

      Anlegen hat soweit geklappt, aber bei "sudo ./funktemperatursensor.sh"
      erscheint
      "./funktemperatursensor.sh: Zeile 5: jq: Kommando nicht gefunden.
      ./funktemperatursensor.sh: Zeile 6: jq: Kommando nicht gefunden.
      is empty"

      Unter Sensorpoint in SHC erscheint nichts.
    • RE: 433 Mhz Funktemperatursensoren auslesen

      Danke, das war es!

      Kann man auch mehrere so in SHC betreiben.

      Wie sieht es mit der Entfernung zum 433 Empfänger aus.
      Gerade bei dem Einrichten wurde FTS (ca. 0,5 m) ja in SHC angezeigt.
      Jetzt befindet sich der FTS ca. 2,5 m im Aussenbereich
      vom Empfänger entfernt und es wird nichts mehr empfangen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von premo ()

    • RE: 433 Mhz Funktemperatursensoren auslesen

      So etwa  :blush:

      Shell-Script

      1. #!/bin/bash
      2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi
      3. timeout 120s pilight-receive > /tmp/pilight.txt
      4. HUM=$(jq 'select(.message.id == 96)| .message.humidity' /tmp/pilight.txt| xargs -n1 | tail -1)
      5. TEMP=$(jq 'select(.message.id == 96)| .message.temperature' /tmp/pilight.txt| xargs -n1 | tail -1)
      6. HUM=$(jq 'select(.message.id == **)| .message.humidity' /tmp/pilight.txt| xargs -n1 | tail -1)
      7. TEMP=$(jq 'select(.message.id == **)| .message.temperature' /tmp/pilight.txt| xargs -n1 | tail -1)
      8. if [ -z "$TEMP" ]; then
      9. echo "$TEMP is empty"
      10. else
      11. curl "http://raspberry/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&sid=1&type=2&v1=${TEMP}&v2=${HUM}"
      12. curl "http://raspberry/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=2&sid=2&type=2&v1=${TEMP}&v2=${HUM}"
      13. fi
      Alles anzeigen
    • RE: 433 Mhz Funktemperatursensoren auslesen

      Auf die schnelle würde ich eher sagen so:
      Ansonsten schickst du immer nur den letzten Sensor Wert.

      Shell-Script

      1. #!/bin/bash
      2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi
      3. timeout 120s pilight-receive > /tmp/pilight.txt
      4. HUM1=$(jq 'select(.message.id == 96)| .message.humidity' /tmp/pilight.txt| xargs -n1 | tail -1)
      5. TEMP1=$(jq 'select(.message.id == 96)| .message.temperature' /tmp/pilight.txt| xargs -n1 | tail -1)
      6. HUM2=$(jq 'select(.message.id == **)| .message.humidity' /tmp/pilight.txt| xargs -n1 | tail -1)
      7. TEMP2=$(jq 'select(.message.id == **)| .message.temperature' /tmp/pilight.txt| xargs -n1 | tail -1)
      8. if [ -z "$TEMP1" ]; then
      9. echo "$TEMP1 is empty"
      10. else
      11. curl "http://raspberry/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&sid=1&type=2&v1=${TEMP1}&v2=${HUM1}"
      12. fi
      13. if [ -z "$TEMP2" ]; then
      14. echo "$TEMP2 is empty"
      15. else
      16. curl "http://raspberry/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&sid=2&type=2&v1=${TEMP2}&v2=${HUM2}"
      17. fi
      Alles anzeigen


      Die if muss auch verdoppelt werden, da wir keine leeren Werte senden wollen falls der Sensor mal Probleme bereitet.
      Abschließen muss natürlich noch die Sensor ID in der URL inkrementiert werden.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rgarcia ()

    • RE: 433 Mhz Funktemperatursensoren auslesen

      Moin
      Wollte mal schauen ob der Aussensensor noch läuft,
      aber leider nicht.
      Komischerweise ist die Datei "funktemperatursensor.sh"
      leer.

      Habe dann nach der Anleitung alles neu gesetzt.
      Jetzt erscheint bei "sudo ./funktemperatursensor.sh"
      die Ausgabe (Foto).
      Bilder
      • 2.2.6 AussenSensor.JPG

        25,21 kB, 498×91, 326 mal angesehen
    • RE: 433 Mhz Funktemperatursensoren auslesen

      Damit geht es.
      Aber nur wenn ich "sudo ./funktemperatursensor.sh"
      ausführe.
      Danach bleiben die zuletzt erfassten Sensordaten so stehen.

      Kann ich irgendt wo sehen ob das Script und crontab ausgeführt
      wird.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von premo ()