Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:sensors:ecometer

Dies ist eine alte Version des Dokuments!


Ecometer EmpfängerEcometer Sensor

EcoMeter Füllstandsanzeige

Unter der Bezeichnung EcoMeter werden von „Proteus“ und „Tekelek“ Funksensoren für Zisternen und Öltanks vertrieben deren Füllstandsanzeige über USB ausgewertet werden kann.

Kommunikation

In der Anzeige steckt eine USB-UART Bridge CP2102 die auf 115200bd, 8N1 eingestellt ist. Über sie wird alle 60 oder 30 Minuten (außer kurzzeitig im „FastMode“) ein Telegramm mit 22 Byte Länge versandt in dem alle aktuellen Messwerte enthalten sind.
Teilweise sind diese schlampig parametriert und haben keine eindeutige PID und Seriennummer. Dem kann mittels USBXpress von Silabs abgeholfen werden. Mit eindeutiger Kennung kann, falls gewünscht, auch eine udev-Regel angelegt werden.

Kanal einrichten

Script

Das Script wird per crontab aufgerufen. Der Zeitabstand ist höher zu wählen als der EcoMeter sendet. Frühestens alle 3 Stunden.

* */3 * * * /home/pi/bin/ecometer.sh

Als Ergebnis wird der Füllstand in Litern ausgewertet (Byte 17 und 18).

ecometer.sh
#!/bin/bash
#~/ecometer.sh
# Daten aus einem Ecometer von Proteus per USB
# an die Middleware eines volkszaehler.org uebergeben
# 06.03.2019 Daniel Lauckner
 
# Schnittstelle
ECO_DEV=/dev/ttyUSB0
 
# VZ
HOST=localhost
UUID=12345678-1234-1234-1234-123456789012
 
# PATH fuer Cronjob setzen
PATH=/usr/local/bin:$PATH
 
# Schnittstelle konfigurieren
stty < "$ECO_DEV" cs8 cstopb -ixon raw speed 115200
 
# Daten holen
echo "Warte auf Daten"
ECO_DATA=$(cat $ECO_DEV | xxd -l 22 -ps)
 
# Timestamp
TS=$(date +%s)
TS=$(($TS*1000))
 
# Plausibilität
ECO_HEAD=$(echo $ECO_DATA | cut -c1-4)
 
if $ECO_HEAD=="5349" # 0x5349 = "SI"
then
    ECO_VALUE=$(printf "%d" "0x$(echo $ECO_DATA | cut -c33-36)")
 
    # Daten senden
    # echo wget -O - -q "http://$HOST/middleware.php/data/$UUID.json?operation=add&ts=$TS&value=$ECO_VALUE"
    wget -O - -q "http://$HOST/middleware.php/data/$UUID.json?operation=add&ts=$TS&value=$ECO_VALUE"
    printf "\n"
else
    printf "Header 0x%s ungültig\n" $ECO_HEAD
fi

Quellen

hardware/channels/sensors/ecometer.1553843453.txt.gz · Zuletzt geändert: 2019/03/29 08:10 von jau