Ankündigung

Einklappen
Keine Ankündigung bisher.

SHT21 in Smartvisu einbinden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    SHT21 in Smartvisu einbinden

    Hab heute mein Raspberry Pi 2 auf dem auch die Smarthome.py/Smartvisu läuft um einen 1Wire Bus und einen SHT21 (kalibrierter, günstiger, recht schnell ansprechender Temperatur/Feuchte I2C Sensor) erweitert.
    Als Software zum Auslesen nehm ich die von Martin Steppuhn wie hier beschrieben:
    http://emsystech.de/raspi-sht21/

    Die Daten die die Software nach Aufruf von "sht21" auf dem RPi ausgibt können z.B. so aussehen:
    Code:
    temperature=16.1
    humidity=57
    Nun meine Frage: Wie ich krieg ich die Messwerte in die Smartvisu?
    Leider bin ich selbst nicht des Python mächtig :-(

    #2
    Dazu musst du in Smarthome.py ein Plugin haben, welches dir aus den Werten die du aus deinem Feuchtigkeitssensor bekommst einmal Items befüllt. Die Items kannst du dann in weiterer Folge in Smartvisu integrieren. Dh. Programmierkenntnisse solltest du schon haben - die Plugins sind nicht so schwer zu verstehen, ein guter Einstieg ist zB. das KOSTAL Plugin.

    Kommentar


      #3
      Da ich wie gesagt leider kein Python kann versuche ich es nun in PHP und dem network Plugin, auch wenn ich weiterhin eine Plugin Lösung für sinnvoller halte

      Das funktioniert leider nur so halb. Nur ab und an werden die Werte von sh.py korrekt entgegen genommen.
      Gleiches Verhalten wenn ich die Werte per netcat übergebe (aus der Network Plugin Doku):
      Code:
      echo "item|kg.haustechnik.rpi_sht21.feuchtigkeit|45.5" | nc -uw 1 127.0.0.1 2727
      Jemand eine Idee warum die Werte nur teilweise entgegengenommen werden?
      An der Zeit scheint es nicht zu liegen, hatte auch schon mal einige Minuten zwischen den Werten gewartet.

      PHP-Code:
      <?php

      // Crontab:
      // */5 * * * * php read.php

      /*
      plugin.conf:

      [nw]
          class_name = Network
          class_path = plugins.network
          ip = 127.0.0.1
          port = 2727
          tcp = no
          tcp_acl= 127.0.0.1
          udp = yes
          udp_acl= 127.0.0.1

      items.conf:

      [kg]
          [[haustechnik]]
              [[[rpi_sht21]]]
                  [[[[temperatur]]]]
                      type = num
                      sqlite = init
                      nw = yes
                  [[[[feuchtigkeit]]]]
                      type = num
                      sqlite = init
                      nw = yes
      */

      $GLOBALS['url'] = 'udp://127.0.0.1:2727';
      $GLOBALS['sht21_command'] = '/usr/bin/sht21 S';

      function 
      sendToSmarthome($fTemperature$fHumidity) {
          echo 
      "$fTemperature °C - rel. Feuchtigkeit: $fHumidity % an smarthome.py ".$GLOBALS['url']." senden\n";

          
      $fp fsockopen($GLOBALS['url']);
          if(!
      $fp) {
              echo 
      "Konnte keine Verbindung zu smarthome.py aufbauen: $errstr ($errno)\n";
              exit();
          } else {
              
      fwrite($fp"log|info|sht21-to-smarthome.php - $fTemperature °C - $fHumidity %");
              
      fwrite($fp"item|kg.haustechnik.rpi_sht21.temperatur|$fTemperature");
              
      fwrite($fp"item|kg.haustechnik.rpi_sht21.feuchtigkeit|$fHumidity");
              
      fclose($fp);
          }

      return 
      true;
      }

      function 
      getSHT21Values() {
          
      $sReturn trim(shell_exec($GLOBALS['sht21_command']));
          
      $aTmp explode("\t"$sReturn);

          if(
      count($aTmp) != 2) {
              echo 
      "Konnte Werte nicht auslesen";
              exit();
          }

      return 
      $aTmp;
      }

      // MAIN

      $aSHT21 getSHT21Values();
      sendToSmarthome((float)$aSHT21[0], (float)$aSHT21[1]);

      ?>
      Zuletzt geändert von moeoszilago; 05.04.2015, 20:33.

      Kommentar


        #4
        Hallo

        der Sensor wird ja über I2C angesprochen. Würde wenn ich mal wieder etwas Zeit habe ein Plugin anfangen. Hab noch einen Drucksensor hier der will auch in SH.py.

        Grüße Stromie

        Kommentar


          #5
          Das wär cool :-)

          Hat zu dem angesprochenen Problem mit den teilweise nicht vom Network Plugin des sh.py übernommenen Werten noch jemand eine Idee?
          Das einzige was ich in so einem Fall im Log sehe ist das ein UDP Paket vom Plugin empfangen wurde, nur scheinbar eben nicht / nicht korrekt geparsed.

          Kommentar

          Lädt...
          X