ELV WDE1-2 direkt über VZ auslesen?

Moderator: Mod-Team

 

0.00 (0 Bewertungen)

Re: ELV WDE1-2 direkt über VZ auslesen?

Beitragvon lintec » 14.03.2018, 19:47

Ich hatte den Raspi, bzw. den Dienst nochmal neu gestartet und seitdem läuft es durch. Ich werde es nochmal ein paar Tage beobachten. Übrigens habe auch das ESP Easy ausprobiert, das ist ja super einfach und günstig dazu. Bei dem ELV Produkt ist allerdings der fertige Außensensor mit Funk und Batterie netter. Ich wollte nochmal gucken ob man die ESPeasy Geschichte auch über eine Batterie mit angenehmer Laufzeit betreiben kann.
lintec
Stammmitglied
Stammmitglied
 
Beiträge: 44
Registriert: 22.01.2018, 15:39
PV-Anlage [kWp]: 99,9
Info: Betreiber

Re: ELV WDE1-2 direkt über VZ auslesen?

Beitragvon frank-83 » 14.03.2018, 20:41

ESP und Batteriebetrieb ist so ne Sache. Wenn, dann nur mit Deepsleep und einem sehr sparsamen Spannungsregler. LEDs oder USB-Konverter sollten natürlich auch nicht an der Batterie nuckeln...

Grüße
Frank
frank-83
Forumsinventar
Forumsinventar
 
Beiträge: 830
Registriert: 26.05.2015, 11:27
Info: Betreiber

Re: ELV WDE1-2 direkt über VZ auslesen?

Beitragvon bluebundy » 16.03.2018, 17:34

Hallo,

ich habe folgendes nur leicht modifiziertes script über crontab aufgerufen:

Code: Alles auswählen
#!/bin/bash
# Daten aus der WDE1-2 von ELV mittels socat und vzclient
# in die Datenbank eines Volkszaehler.org uebertragen
# 24.01.2016 Christoph Rathmann und Daniel Lauckner

# Schnittstelle
wde_dev=/dev/ttyUSBPort3

# UUIDs den Daten zuordnen# wenn kein Channel zugeordnet ist nach dem = einfach leer lassen
uuids[0]=74d05cf0-c084-11e5-a21c-cff1e432e875   # Temperatur Sensor 1 (  C)
uuids[1]=  # Temperatur Sensor 2
uuids[2]=  # Temperatur Sensor 3
uuids[3]=  # Temperatur Sensor 4
uuids[4]=  # Temperatur Sensor 5
uuids[5]=  # Temperatur Sensor 6
uuids[6]=  # Temperatur Sensor 7
uuids[7]=  # Temperatur Sensor 8
uuids[8]=88109700-c151-11e5-bfe5-afa9b85ef992  # Feuchte Sensor 1 (%)
uuids[9]=  # Feuchte Sensor 2
uuids[10]=  # Feuchte Sensor 3
uuids[11]=  # Feuchte Sensor 4
uuids[12]=  # Feuchte Sensor 5
uuids[13]=  # Feuchte Sensor 6
uuids[14]=  # Feuchte Sensor 7
uuids[15]=  # Feuchte Sensor 8
uuids[16]=03bcb9b0-c9e8-11e5-b77b-838a6560370c  # Temperatur Kombisensor (  C)
uuids[17]= # 202144b0-c9eb-11e5-bc1c-47b4ec6f76fa  # Feuchte Kombinsensor (%)
uuids[18]=2aa2eaf0-c9ec-11e5-a48e-bf093dd93936  # Windgeschwindigkeit (kmh)
uuids[19]=83cec020-c9eb-11e5-b6d5-dd3950a8d5d4 # Niederschlag (mm)
uuids[20]= # b7bf7fa0-c5c7-11e5-938a-a752437329f9  # Regen (bool)

# Schnittstelle konfigurieren
stty < "$wde_dev" 9600 -brkint -opost -onlcr -echo


##  Programm
#declare -a wde_daten_alt
   echo "Daten aus WDE holen"
   wde_daten=($(timeout 200s socat "$wde_dev",start=0x24,escape=0x0a STDOUT) )
   ret=$?
   wde_daten=($(echo $wde_daten | sed 's/;;/;N;/g;s/;;/;N;/g;s/;/ /g;s/,/./g') )
   if [ $ret -eq 0 ]      # Returncode pruefen
      then
      echo "Datentelegramm empfangen"
      tout=0
      ts=$(date +%s)      # Timestamp nicht vom VZ setzen lassen weil die Daten je Kanal eingehen und die TS dann ansteigend wuerdren obwohl die Daten $
      ts=$(($ts*1000))
      echo "Daten an Volkszaehler uebergeben"
      i=0
      z=${#uuids[@]}
      while [ $i -le $z ]
      do
         if [ ${uuids[$i]} ]
         then
            if [ "${wde_daten[$i+3]}" = "N" ] || [ "${wde_daten[22]}" = 0 ]      # Wenn WDE fuer betreffende UUID keine Daten vom Sensor erhalten hat
            then
               echo "Keine g  ltige Daten f  r "${uuids[$i]}" "
            else
#               if [ "${wde_daten[$i+3]}" = "${wde_daten_alt[$i+3]}" ]   # Nur geaenderte Daten um Speicherplatz zu sparen
#               then
#                  echo "Keine neuen Daten f  r "${uuids[$i]}" "
#               else

## Regennuller
      if [ "$i" = 19 ]
               then
           wde_daten[22]=$((${wde_daten[22]}+8190)) # falls der Regenzaehler mal auf Null setzt.
          echo vzclient -u "${uuids[$i]}" add data ts="$ts" value="${wde_daten[22]}" 
          vzclient -u "${uuids[$i]}" add data ts="$ts" value="${wde_daten[22]}"
               else
                 
echo vzclient -u "${uuids[$i]}" add data ts="$ts" value="${wde_daten[$i+3]}"
                  vzclient -u "${uuids[$i]}" add data ts="$ts" value="${wde_daten[$i+3]}"      # In VZ uebertragen
fi # gehoert zum Regennuller
#               fi  # nue bei geaenderten Werten ....
            fi
         fi
      i=$(($i+1))
      done
#      wde_daten_alt=(${wde_daten[*]})
   else
      if [ $ret -ge 124 ]
      then      # Fehler von timeout
         echo "Timeout, kein Datentelegramm empfangen"
         tout=$(($tout+1))
      else      # Fehler von socoat
         echo "Kommandofehler - Abbruch"
         exit $ret
      fi
   fi
exit 0


Der Grund für den cronjob ist, dass ich die Daten nur alle 30 oder 60 Minuten brauche und daher braucht das script auch nicht durchlaufen.
bluebundy
Stammmitglied
Stammmitglied
 
- Threadstarter -
 
Beiträge: 80
Registriert: 28.11.2015, 19:14
Info: Betreiber

Vorherige

Zurück zu volkszaehler.org



Ähnliche Beiträge


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste