{{ :hardware:channels:sensors:ecometer_empfaenger.jpeg?150|Ecometer Empfänger}}{{ :hardware:channels:sensors:ecometer_sensor.jpeg?90|Ecometer 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 [[https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/02/10/cp210x_customization-Juq8|USBXpress]] von Silabs abgeholfen werden. Mit eindeutiger Kennung kann, falls gewünscht, auch eine [[/hardware/controllers/ir-schreib-lesekopf-usb-ausgang#linux-support|udev-Regel angelegt]] werden.\\
===== Kanal einrichten =====
In der Middleware wird [[/software/middleware/einrichtung|ein Kanal vom Typ "Füllstände" angelegt]].
===== 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).
#!/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 =====
[[https://wiki.fhem.de/wiki/Proteus_EcoMeter]]\\
[[http://tekelek.ie/?ddownload=1408]]\\
[[https://www.photovoltaikforum.com/thread/128544-analog-eingang-realisierbar/?pageNo=2]]\\