ELV WDE1-2 direkt über VZ auslesen?

Moderator: Mod-Team

 

0.00 (0 Bewertungen)

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

Beitragvon lintec » 08.03.2018, 22:38

Hey,
ich bin grade dabei meinen WDE1-2 in Betrieb zu nehmen. Ich bekomme jedoch mit eurem Sript keine Daten rein. Wenn ich es manuel ausführe kommt folgende Ausgabe (endlos):
Code: Alles auswählen
Daten aus WDE holen
Datentelegramm empfangen
Daten an Volkszaehler uebergeben
vzclient -u 1becd640-224a-11e8-8a6f-99650cd8be83 add data ts=1520538036000 value                                                            =20.1
elv.sh: line 67: vzclient: command not found
vzclient -u 36bc7d40-224a-11e8-9502-8b951f56cf6d add data ts=1520538036000 value                                                            =37
elv.sh: line 67: vzclient: command not found
Daten aus WDE holen
Datentelegramm empfangen
Daten an Volkszaehler uebergeben
Keine neuen Daten für 1becd640-224a-11e8-8a6f-99650cd8be83
Keine neuen Daten für 36bc7d40-224a-11e8-9502-8b951f56cf6d
Daten aus WDE holen
Datentelegramm empfangen
Daten an Volkszaehler uebergeben
Keine neuen Daten für 1becd640-224a-11e8-8a6f-99650cd8be83
Keine neuen Daten für 36bc7d40-224a-11e8-9502-8b951f56cf6d


Zudem kommen keine Werte in der Middleware an. Doofe Frage: Muss die config hierfür auch angepasst werden? Oder ist das durch das Script obsolet?

Liebe Grüße
Nico
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 JAU » 09.03.2018, 03:43

lintec hat geschrieben:Ich bekomme jedoch mit eurem Sript keine Daten rein.

Die Scripte von mir und bluebundy sind unterschiedlich. "Unser" Script gibt es also nicht. Es wäre daher hilfreich wenn du dein Script posten oder den Quellbeitrag verlinken würdest um sicher zu gehen das wir vom selben sprechen.

lintec hat geschrieben:Wenn ich es manuel ausführe kommt folgende Ausgabe
[...]
Code: Alles auswählen
elv.sh: line 67: vzclient: command not found

Bei dir ist vzclient nicht installiert. http://wiki.volkszaehler.org/software/clients/vzclient
Alternative wäre das Script auf curl umzuschreiben, vzclient ist nämlich auch nur ein (Python-) Script. Kann ich dir auch machen, wird aber ein wenig dauern.

(endlos)

Das ist Zweck der Übung. Nur so kann man die Nullen rausfiltern. Aber wie du an der Ausgabe erkennen kannst
Code: Alles auswählen
Keine neuen Daten für 1becd640-224a-11e8-8a6f-99650cd8be83

werden eh nur Veränderungen an die Middleware gesendet. Also keine Überflutung der Datenbank.


mfg JAU

Nachtrag: Wir haben ja auch noch das Problem mit dem Zähler der bei Überlauf wieder mit 0 beginnt, wenn ich auf curl umschreiben soll würde ich mir das bei Bedarf auch nochmal ansehen.
No Shift - No Service
Benutzeravatar
JAU
Forumsinventar
Forumsinventar
 
Beiträge: 1580
Registriert: 01.12.2012, 11:04
Wohnort: 74632
PV-Anlage [kWp]: 12,8
Info: Betreiber

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

Beitragvon lintec » 09.03.2018, 08:35

Hallo JAU,

oh mann. Auf solche Kleinigkeiten würde ich auch gerne selbst irgendwann mal kommen. Ich war davon ausgegangen, dass auf dem Volkszähler Image schon der vzclient installiert ist.
Ich werde heute abend nochmal schauen und das verwendete Script nachreichen, dies das "Zuhause"-Projekt ist :-)

Liebe Grüße
Nico
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 lintec » 10.03.2018, 14:55

Hey,

also dies ist das Script welches ich benutzt habe:
Code: Alles auswählen
    #!/bin/bash
    # Daten aus der WDE1-2 von ELV mittels socat und vzclient
    # in die Datenbank eines volkszaehler.org uebertragen
    # 29.01.2016 Christoph Rathmann und Daniel Lauckner

    # Schnittstelle
    wde_dev=/dev/usb-elv0

    # UUIDs den Daten zuordnen
    # wenn kein Channel zugeordnet ist nach dem = einfach leer lassen
    uuids[0]=1becd640-224a-11e8-8a6f-99650cd8be83  # 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]=36bc7d40-224a-11e8-9502-8b951f56cf6d  # 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]=  # Temperatur Kombisensor (°C)
    uuids[17]=  # Feuchte Kombinsensor (%)
    uuids[18]=  # Windgeschwindigkeit (kmh)
    uuids[19]=  # Niederschlag (Impulszähler)
    uuids[20]=  # Regen (bool)

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

    ##  Programm
    tout=0
    declare -a wde_daten_alt
    while [ $tout -le 3 ]      # Max 4 Timeouts in Folge erlaubt
    do
       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 wären obwohl die Daten zum selben Zeitpunkt eingegangen sind
          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" ]      # Wenn WDE für 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 geänderte Daten um Speicherplatz zu sparen
                   then
                      echo "Keine neuen Daten für "${uuids[$i]}" "
                   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
                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
    done
    echo "Zu viele Timeout in Folge - Abbruch"
    exit $ret




Wenn ich nun das vzclient Script runterlade, wo speichere ich es hin? Wie muss ich es ausführen? Einmalig oder als crownjob? Verstehe nicht wie die beiden Scripte zusammenlaufen.

Liebe Grüße
Nico

P.S. Nochmal die Frage, an der vzconfig muss ich nichts anpassen, wenn ich die Daten wie in diesem Fall per Script einsammle?
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 JAU » 10.03.2018, 18:40

lintec hat geschrieben:Wenn ich nun das vzclient Script runterlade, wo speichere ich es hin?

/usr/local/bin/

Wie muss ich es ausführen?

vzclient? Gar nicht.

Einmalig oder als crownjob?

Falls du elv.sh meinst musst du das natürlich einmalig aufrufen, wenn du das über cronjob machst wird jedesmal eine zusätzliche Instanz geöffnet die sich dann um die Schnittstelle streiten.

Edel wäre es das Script als Dienst (systemctl) zu konfigurieren, schnelle Lösung ist ein "$" an den Aufruf anzuhängen. https://wiki.ubuntuusers.de/Shell/Prozesssteuerung/

Verstehe nicht wie die beiden Scripte zusammenlaufen.

Was für beide Scripte? elv.sh und vzclient?

P.S. Nochmal die Frage, an der vzconfig muss ich nichts anpassen,

Was ist vzconfig?


mfg JAU
No Shift - No Service
Benutzeravatar
JAU
Forumsinventar
Forumsinventar
 
Beiträge: 1580
Registriert: 01.12.2012, 11:04
Wohnort: 74632
PV-Anlage [kWp]: 12,8
Info: Betreiber

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

Beitragvon lintec » 10.03.2018, 20:00

Sorry ich meinte die vzclient.conf

Ich werde es gleich mal testen und melde mich dann wieder. Vielen Dank für deine Geduld.
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 lintec » 10.03.2018, 23:07

Code: Alles auswählen
vzclient get channel

füht bei mir immernoch zu einer Fehlermeldung "command not found".

Ich meinte ob ich die vzlogger.conf noch anpassen muss, wie zum Beispiel bei der Konfiguration mit der optischen Schnittstelle und den Stromzählern.

In der vzclient.conf muss nur die URL der Middleware angepasst werden? Also http://IP-ADRESSE/middleware.php ?
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 JAU » 11.03.2018, 10:24

lintec hat geschrieben:
Code: Alles auswählen
vzclient get channel

füht bei mir immernoch zu einer Fehlermeldung "command not found".

Code: Alles auswählen
ls -l /usr/local/bin/vzclient

Falls da links keine x sondern - stehen musst du noch ausführbar machen:

Code: Alles auswählen
sudo chmod +x /usr/local/bin/vzclient


Ich meinte ob ich die vzlogger.conf noch anpassen muss, wie zum Beispiel bei der Konfiguration mit der optischen Schnittstelle und den Stromzählern.

vzlogger liefert seine Daten an die Middleware. vzclient liefert seine Daten an die Middleware.
Schnittstelle zwischen vzlogger und vzclient? Keine.
Also: Nein.

vzlogger ist übrigens kein Script sondern ein Binary, also eine "vollwertige" Anwendung. Unter Linux sind Binaries oft nicht unter den Systemen austauschbar. Scripte schon, wenn man den passenden Interpreter (ein Binary) installiert hat.
Deswegen ist die Nutzung von vzclient im Shell-Script auch ein wenig bekloppt.

Mit curl sähe das so aus:
Schnittstelle -> elv.sh -> Bash (Kommandointerpreter) -> curl (Binary) -> Daten an die MW
Mit vzclient:
Schnittstelle -> elv.sh -> Bash (Kommandointerpreter) -> vzclient -> Python Interpreter (Binary) -> Daten an die MW

In der vzclient.conf muss nur die URL der Middleware angepasst werden? Also http://IP-ADRESSE/middleware.php ?

Nur wenn die Middleware auf einem anderen Rechner liegt.
Also: Nein.

Die Config sollte, nach Linux "Standard", übrigens unter /etc/ abgelegt werden.


mfg JAU
No Shift - No Service
Benutzeravatar
JAU
Forumsinventar
Forumsinventar
 
Beiträge: 1580
Registriert: 01.12.2012, 11:04
Wohnort: 74632
PV-Anlage [kWp]: 12,8
Info: Betreiber

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

Beitragvon lintec » 12.03.2018, 19:53

Danke sehr, habe nun Werte von meinem Sensor empfangen. Am Anfang, wie auch schon früher in diesem Thread erwähnt, kamen erstmal "0"- Werte an. Heute nacht um 2 Uhr kamen dann keine Werte mehr an. Ich habe das Script mit
Code: Alles auswählen
sudo bash elv.sh &

gestartet.
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 JAU » 13.03.2018, 08:34

Läuft es denn noch?
Code: Alles auswählen
ps -A | grep elv



mfg JAU
No Shift - No Service
Benutzeravatar
JAU
Forumsinventar
Forumsinventar
 
Beiträge: 1580
Registriert: 01.12.2012, 11:04
Wohnort: 74632
PV-Anlage [kWp]: 12,8
Info: Betreiber

VorherigeNächste

Zurück zu volkszaehler.org



Ähnliche Beiträge


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast