ESA / EM unterstüzung in FHEM

Begonnen von Predictor, 26 Dezember 2012, 21:51:50

Vorheriges Thema - Nächstes Thema

mikka1

Hallo Etienne

Stimmt, habe Matze1986 gemeint, sorry;-)

Das erste, 68c5 hinter ESA2000 ist mein eigener Zählercode, da muss du einen anderen eingeben, siehe Schlüssel in str0mrs 64_ESA2000.pm, die beiden dbase Werte kannst du löschen, das sind meine bis dahin aufgelaufenen Zählerstände vor der Messung.

@matze1986

Du hast den Typ nicht definiert, versuch es mal damit

###Strom##############################################
define Stromzaehler ESA2000 7653
attr Stromzaehler event-on-update-reading state,actual_ticks,diff_ticks,actual,raw_total,.*_last
attr Stromzaehler model esa1000wz-led
attr Stromzaehler room 4.Logs
attr Stromzaehler stateFormat {sprintf("CNT: %.2f kWh - CUR: %d W - Day: %.2f (%.2f) kWh", ReadingsVal($name,"raw_total",0), ReadingsVal($name,"actual",0)*1000, ReadingsVal($name,"day",0), ReadingsVal($name,"day_last",0))}

define FileLog_Stromzaehler FileLog ./log/Stromzaehler-%Y.log Stromzaehler
attr FileLog_Stromzaehler alias Stromzaehler
attr FileLog_Stromzaehler room 4.Logs
attr FileLog_Stromzaehler logtype text

define weblink_Stromzaehler weblink fileplot FileLog_Stromzaehler:esa2000:CURRENT
attr weblink_Stromzaehler label "kWh"::"kW"
attr weblink_Stromzaehler room 2.StromPlots
attr weblink_Stromzaehler title "Stromzaehler - Min $data{min1}, Max $data{max1}, Last $data{currval1}"

Ich muss ehrlich sein, von denn Zusammenhänge habe ich keine Ahnung, ich habe einfach C & P bei str0mer gemacht und dann auf meine Verhältnise angepasst...

etienne

Hi Mikka,
Danke erstmal, wie bei str0mer auch, habe ich Dich in der Reputation hoch-gevotet :-)

Ich denke ich muss jetzt erst mal diesem Fehler beseitigen,

weiss jemand, was er bedeutet und wie er zu beseitigen ist?

ERROR:
Cannot load module ESA2000
[/b][/color]

Der Fehler taucht auf, wenn diese Zeile in der fhem.cfg gespeichert wird:

define Stromzaehler ESA2000 011e

wird die Zeile auskommentiert, taucht der Fehler nicht auf.

matze1986

@etienne

wie heißt dein ESA2000 Modul? hast du es beim austauschen mit str0mer seinem MOdul vielleicht umgenannt, oder versehentlich wo anders hnkopiert.

es sollte unter fhem/FHEM/ liegen und "64_ESA2000.pm" heißen.

Meins konnte auch nicht geladen werden, weil ich den Namen geändert hatte, um es vom Original zu unterscheiden.

etienne

@matze1986,

anhand deiner Info verstehe ich, dass der Fehler bedeutet, die Datei 64_ESA2000.pm konnte nicht geladen/aufgerufen/gefunden werden.

Die Datei liegt da, wo die anderen *.pm Dateien auch liegen, in /opt/fhem/FHEM/
sie ist auch vollständig vorhanden, kann sie mit dem Befehl "nano 64_ESA2000.pm" öffnen und somit bestätigen
dass Anfang und Ende drin sind.

Wenn die Datei immer noch nicht geladen werden kann, erwartet das fhem System die Datei vielleicht woanders, als da, wo sie liegt?
oder liegt es daran, dass in der *.pm Datei noch irgendein Pfad o.ä. geändert werden muss?

Muss ich vielleicht in diesem Bereich hier noch was anpassen?

use strict;
use warnings;

my %codes = (
  "011e" => "ESAx000WZ",
  "031e" => "ESA1000Z",
);


#####################################
sub
ESA2000_Initialize($)
{
  my ($hash) = @_;

#                        S0119FA011E00007D6E003100000007C9 ESA2000_LED

  $hash->{Match}     = "^S................................\$";
  $hash->{DefFn}     = "ESA2000_Define";
  $hash->{UndefFn}   = "ESA2000_Undef";
  $hash->{ParseFn}   = "ESA2000_Parse";
  $hash->{AttrList}  = "IODev do_not_notify:0,1 showtime:0,1 loglevel:0,1,2,3,4,5,6 ignore:0,1 ".
                       "model:esa2000-led,esa2000-wz,esa2000-s0,esa1000wz-ir,esa1000wz-s0,esa1000wz-led,esa1000gas base_1 base_2 ".
                       $readingFnAttributes;
}

#####################################

mikka1

Hallo Etienne

In der 64_ESA2000.pm von str0mer habe ich nichts geändert, wie auch im plot nicht, ich habe aber gesehen, dass du ein

define Stromzaehler ESA2000 011e

hast, anstelle von 011e müsstest du wenn ich deinen Post von gestern richtig interpretiere 6062 einfügen, falls du aber diese aus der .pm von str0mer hast, wird es auch damit nicht klappen...

Untenstehend findest du due Aufschlüsslung der COC_RAWMSG, die du siehst, wenn du die Device aufrufst. Wahrscheinlich habe alle ESA Stromzähler die 011e und die Gaszähler die 031e.

# 0 00 0000 0001 11111111 1222 222222 2333
# 0 12 3456 7890 12345678 9012 345678 9012
# S                                            Sensorkennung
#   ss                                         Sequenze und Sequenzwiederhohlung mit gesetzten höchsten Bit
#      dddd                                    Device
#           cccc                               Code
#                vvvvvvvv vvvv vvvvvv vvvv     Valves
#                tttttttt                      Gesamtimpules
#                         aaaa                 Impule je Sequenz
#                              zzzzzz          Zeitstempel seit Start des Adapters             (ESA1000)
#                                     kkkk     Impulse je kWh/m3
#
# Examples:
# ---------
# S 01 19FA 011E 00007D6E 0031 000000 07C9     ESA2000_LED      Zählerkonstante = 2000
# S 12 5E42 011E 00000030 0002 000000 0206     ESA2000_WZ       Zählerkonstante = 600
# S 48 6062 011E 00000061 0001 000000 002B     ESA2000_WZ       Zählerkonstante = 75
# S 93 5DDA 011E 00004F85 0000 000000 0205     ESA2000_WZ       Zählerkonstante = 600
# S 16 68C5 011E 000000BB 0000 001FB4 03CB     ESA1000WZ_LED    Zählerkonstante = 1000
# S AB 0595 031E 000A047E 0000 227C46 0004     ESA1000GAS       Zählerkonstante = 1
# S 1C 0785 011E 00011CDA 0002 0D056C 004C     ESA1000WZ_LED    Zählerkonstante = 75
# S 6E 003D 011E 00037650 0011 02C1DA 07D0     ESA1000WZ_S0     Zählerkonstante = 2000
# S A3 0543 031E 0000099C 0064 001147 000F     ESA1000GAS       Zählerkonstante = 10

Massgebend für define Stromzaehler ESA2000 **** ist der erste vierstellige Zahlenblock.

Gruss
Stephan

etienne

Hi Mikka,

bevor ich das ESA2000 ding umbenannt hatte, stand da was von 011e
und da ich das hier im forum entsprechend wiedergefunden habe, habe ich das mal an die "define" zeile angehängt...

ZitatUntenstehend findest du due Aufschlüsslung der COC_RAWMSG, die du siehst, wenn du die Device aufrufst.

Wie mache ich das konkret, kannst Du mir das kurz erläutern? dann könnte ich da einen Blick drauf werfen und das hier gerne auch posten.

mikka1

Habe ich zu Anfang auch so gemacht, und war damals wohl auch so gedacht, da musste glaube ich in der .pm jeder Zähler einzeln definiert werde. Mit der .pm von st0mer ist das nicht mehr nötig.

Du solltest wenn du deine Device unter ESA2000 anklickst etwas wie

COC_RAWMSG           S3468C5011E0003AFB9001D01DA4D038028

erhalten, die Grün markierte Zahl musst du dann bei dir unter

define Strom_allgemein ESA2000 68c5 einfügen.

Bei dir wird es natürlich eine andere Zahl ergeben. Du kriegst diese RAWMSG auch, wenn du denn COC/CUL auswählst, wenn du 2 von den ESA hast, müsstest du aber schauen, welcher was zählt.
Unter Umständen findest du es auch im Log, wie hier bei Matze1986

2013.04.02 12:32:46 3: CUL_0: Unknown code S827621031E000053DE000001289A00225, help me!
2013.04.02 12:33:31 3: CUL_0: Unknown code S1D7653011E0000142600000103EA00D38, help me!

In Rot siehst du 011e für Strom und 031e für Gas, Grün ist die Zahl die du brauchst.

Gruss
Stephan

etienne

Hi Mikka,

wenn ich auf das Device CUL gehe, was ich unter "Everything" finde,
dann steht bei RAWMSG folgendes:

RAWMSG

SCB55B7011E00000F78000200000000353C

Demnach wäre 55b7 was ich in der fhem.cfg so

define Stromzaehler ESA2000 55b7

eintragen müsste

Ich habe auch gleich die 64_ESA2000.pm so angepasst:


my %codes = (
  "011e" => "ESAx000WZ",
  "031e" => "ESA1000Z",
  "55b7" => "ESA200Wz",
);


... trotzdem noch der Fehler "Cannot load module ESA2000"

Ich denke da is irgendwo anders ein grosser Fehler...
ich lass mir das mal durch den Kopf gehen und schaue mal, dass ich alles noch mal von vorne initialisiere.

Danke erst mal, Mikka

mikka1

Genau, die 64_ESA2000.pm musst du aber nicht anpassen, ich habe die von str0mer 1:1 übernommen, wie die ESA2000.gplot auch.
Hast du in der fhem.cfg das Attribut Model gesetzt?

stromer-12

Bin mal kurz online,

Versuche erst mal deine 64_ESA2000.pm fehlerfrei zu laden, eventuell die Datei mittels "update 64_ESA2000.pm" erstmal im original wieder herstellen.
Wenn das klappt und dein CUL empfängt deinen ESA dann kannst du ja noch mal die Datei mit meiner überschreiben. In der Datei selber braucht du dann nichts mehr zu ändern.

Gruß aus Rheinfelden
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

mikka1

Rheinfelden hört sich sehr nahe an, da würde sogar mal ein Kaffee als Dank für deine Arbeit drinliegen;-)

stromer-12

Danke, ist aber wenig Zeit.
Bis Dienstag muss hier noch eine Brandmeldeanlage für eine TÜV Vorabnahme fertiggemacht werden.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

mikka1

Schade, wollte dir zumindest ein virtuelles Bier senden, aber keine Ahnung wie ich hier ein solches Emoticon einfügen kann.

matze1986

Ich glaube ich habe meinen Fehler gefunden.

Da ich eine Woche nicht daheim war, habe ich mein Pi hardressettet. (d.h. Zeitschaltuhr 15min am Tag aus) Nachdem das RasPi kurz ohne Strom war, kamen hier die hohen Peaks herein.
Komisch war ja, das Gas und Strom jeweils zu den gleichen Zeiten diese Peaks anzeigen. Heute morgen habe ich den Strom nochmal kurz ausgemacht(10sec), und dann direkt wieder an, und siehe da, wieder ein Peak.

Komisch ist jetzt jedoch trotzdem, wo in der kurzen Zeit solch ein Peak entstehen kann?
Heute von 500Wh in 5min ->  Verbraucher mit 6KWh
Ich werde das ganze in den kommenden Tagen noch weiter verifizieren und mir wieder die Zählerstände notieren.




stromer-12

Das kommt daher, das die Variable mit der letzten Messung dann vom letzten speichern von fhem.save stammt.
Die Variablen werden nur im Arbeitsspeicher verändert und nicht in der fhem.save wenn eine Messwert übertragen wurde.
Fhem hart beenden kann dann solche Fehler verursachen.
Mit Shutdown sollte dieser Sprung dann nicht auftreten, da ja die Variablen in der fhem.save abgelegt werden.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL