Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS für Wetterstation von ELV

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

    [Featurewunsch] LBS für Wetterstation von ELV

    Hallo zusammen,

    ich nutze momentan für Wetterdaten (Temperatur, Feuchte, Windgeschwindigkeit, Niederschlag usw.) von ELV die Wetterstation KS-300 von welcher ich die Daten per USB-WDE1 Empfänger über ein Script auf meinen Bus schicke. Dies geschieht noch über Linknx (lwknxclient). Nun habe ich fast alles auf Edomi umgestellt und möchte das Altsystem abschalten. Hat jemand Interesse an einem LBS für diese Station bzw. kann mir ein paar Hinweise geben wie man einen LBS baut.
    Die Daten werden per serieller Schnittstelle Baudrate 9600 regelmäßig übertragen:
    Bsp.:
    $1;1;;;;;;13,0;;;;;;;;58;;;;18,9;39;0,0;2680;0;0

    Jede Zeile stellt einen kompletten Datensatz dar, der aus 25 durch Semikolon getrennten Feldern besteht. Die ersten drei Felder sind unveränderlich, dann folgen die Temperaturmesswerte (°C) von acht Sensoren (z.B. S 300) und dann die Feuchtewerte (%) dieser acht Sensoren. Danach kommen Temperatur (°C), Luftfeuchte (%), Windgeschwindigkeit (km/h), Niederschlag (Wippenschläge) und Regensensor (0/1) des Kombisensors KS 200 oder KS 300. Das letzte Feld mit dem unveränderlichen Wert 0 steht für das Ende des Datensatzes. (Quelle: https://www.kompf.de/weather/technik.html)

    Für Anregungen bin ich offen!

    Vielen Dank!

    #2
    ich würde vermutlich einen RS232/TCPIP Adapter verwenden, um den Datenstrom als IP Socket bereitzustellen.
    Danach könntest du die die Logikbaustein 19000191 genauer anschauen. Der macht eigentlich dasselbe, nur für die Elsner Wetterstation. Diese sendet auch jede Sekunde eine Zeile mit den gesamten Wetterdaten, die dann zerlegt werden. Allerdings gibt es dort kein Trennzeichen und die Daten sind natürlich andere. Aber so sollte es eigentlich recht einfach funktionieren.

    Kommentar


      #3
      Danke für den Tipp! Ich werde es mal probieren und berichten.

      Kommentar


        #4
        Hi,

        ich kenne LinKNX nicht wirklich. Aber wenn der USB Empfänger dort funktioniert - warum nicht unter Edomi.

        mach mal auf der Console vom Edomi Server ein
        ls -l /dev/ttyU*

        Dann steckst Du den USB-WDE1 ein und wiederholst die Eingabe.
        Gibt es dann ein neues Gerät ?

        z.B. ttyUSB0

        Wenn ja bist Du schon fast am Ziel.

        Poste mal das "alte" Skript

        VG

        Marc

        Kommentar


          #5
          Hallo Marc,

          das Gerät wird als /dev/ttyUSB0 erkannt (cp210x converter). Ich denke auch, dass es ein relativ leichter LBS ist. Nur kenne ich mich noch nicht soweit aus. In Python wurde lediglich der Port geöffnet der String ausgelesen und per Split zerlegt und jeweils zugeordnet.
          Hier mal das alte Python Script:
          Code:
          #!/usr/bin/python -u
          import serial
          import sys
          import os
          import shlex
          # serial port of USB-WDE1
          port = '/dev/ttyUSB0'
          
          # MAIN
          def main():
            # open serial line
            ser = serial.Serial(port, 9600)
            if not ser.isOpen():
              print "Unable to open serial port %s" % port
              sys.exit(1)
            while(1==1):
              # read line from WDE1
              line = ser.readline()
              line = line.strip()
              #print line
          
              data = line.split(';')
              if (len(data) == 25 and data[0] == '$1' and data[24] == '0'):
                    # data is valid
              #re-format data into an update string for rrdtool
              wind=data[22]
              regenmenge=data[23]
              regen=data[24]
              temp=data[20]
              feuchte=data[21]
          
              parame="/var/lib/linknx/lwknxclient -v \"wind\" -w " + wind
              args = shlex.split(parame)
              subprocess.call(args)
              parame="/var/lib/linknx/lwknxclient -v \"regenmenge\" -w " + regenmenge
              args = shlex.split(parame)
              subprocess.call(args)
              parame="/var/lib/linknx/lwknxclient -v \"regen\" -w " + regen
              args = shlex.split(parame)
              subprocess.call(args)
              parame="/var/lib/linknx/lwknxclient -v \"temp\" -w " + temp
              args = shlex.split(parame)
              subprocess.call(args)
              parame="/var/lib/linknx/lwknxclient -v \"feuchte\" -w " + feuchte
              args = shlex.split(parame)
              subprocess.call(args)
          
                break
            ser.close()
          if __name__ == '__main__':
            main()
          Gruß Stefan

          Kommentar


            #6
            Hi Stefan,

            Perl und php wäre mir lieber gewesen (ärgere mich mit einem Python Skript gerade an anderer Stelle rum...).
            Habe mit Serial Write und php schon einige Erfahrungen gemacht. Zum Lesen war mir das Timing immer etwas zu umständlich. Meine Lüftung ist z.B. mit einem alten Wiregate Perl script an Edomi php angebunden. Funktioniert seit einem Jahr problemlos....

            Du hast 2 Möglichkeiten:
            richtig und hübsch: Du liest Dich in Serial mit php ein und schaffst es die Daten per php auszulesen (Stichwort fopen, Vergleichbare Edomi Bausteine wie der Comfoair - nicht der von mir ;-) )
            Ich entwickle solche Bausteine gerne als "echte" php Seite (auf dem Edomi Server). Wenn es dann funktioniert ist es schnell zum Baustein umgestellt. Du ersparst Dir aber das Projektaktivieren. Alles was ich im Python Script lese klingt nicht wirklich schwierig bzgl. Timing.

            quick and dirty:
            Bring den python Baustein unter der Edomi Console zum laufen.

            parame="/var/lib/linknx/lwknxclient -v "wind" -w " + wind args = shlex.split(parame) subprocess.call(args) parame="/var/lib/linknx/lwknxclient -v "regenmenge" -w " + regenmenge args = shlex.split(parame) subprocess.call(args) parame="/var/lib/linknx/lwknxclient -v "regen" -w " + regen args = shlex.split(parame) subprocess.call(args) parame="/var/lib/linknx/lwknxclient -v "temp" -w " + temp args = shlex.split(parame) subprocess.call(args) parame="/var/lib/linknx/lwknxclient -v "feuchte" -w " + feuchte args = shlex.split(parame) subprocess.call(args)
            durch print wind... ersetzen - bzw. Rohausgabe

            So müssten Deine Daten auf der Console erscheinen.

            Dann könntest Du über ein shellexecute den python im Edomi LBS ausführen.

            Wobei die Lösung 1 natürlich zu bevorzugen wäre....

            Viel Erfolg

            Gruss

            Marc

            Kommentar


              #7
              Hallo,

              ich habe den Baustein für die Wetterstation von ELV fertig. Läuft bei mir seit zwei Wochen ohne Probleme. Zum Testen siehe Anlage. Hier ein paar Infos:

              Dieser Baustein liest mit Hilfe des WDE1-2 von ELV www.elv.de sämtliche Sensoren der Baureihe aus. z.B. Wetterstation KS300
              An den Eingängen E1 wird die USB Schnittstelle z.B. /dev/ttyUSB0 angegeben und an E2 die Baudrate 9600 default.
              An den Ausgängen A1 bis A8 die Temperatur von 8 Sensoren (z.B. S 300).
              An den Ausgängen A9-A16 die Feuchte von diesen Sensoren.
              A17-A21 gibt die Daten der Wetterstation KS300 aus.
              A20 => Regenwippe => 1 Wippenschlag = 295 ml/m² = 0,295 mm
              Zusatzsensoren:
              Funk-Kombisensor KS 200/300
              Funk-Temperatursensor S 300 IA
              Funk-Temperatur- und Luftfeuchtesensor S 300 TH und ASH 2200
              Poolsensor PS 50
              Angehängte Dateien

              Kommentar

              Lädt...
              X