Modul für EM1010

Nach monatelangen Kampf mit dem Gerät bin ich an einem Punkt gekommen, wo ich keinen Fortschritt mehr sehe und an anderen Baustellen weitermachen möchte. Ich möchte Euch aber das bisherige Ergebnis nicht vorenthalten.
Es gibt mehrere Probleme:

  1. Weder das FTDI-Modul noch das Serialport-Modul liefern vernünftige Daten. Der Buffer wird mit „00“ vollgemüllt, ohne das jemals reale Daten kommen. Auch eigene Programme konnten das nicht ändern. Das Spielen mit Latency- und Timeouttimern war erfolglos. Möglicherweise liegt es darin, das kein „OverlappedIO“ benutzt wird. Die funktionierenden Beispiele in Perl und wahrscheinlich auch die Port.dll verwenden das. Es gibt aber keine FTDI-Implementierung mit diesem Feature . (@paresy: kannst Du so etwas noch in FtDI und SerialPort-Modul einbauen?)
  2. Es gibt keine Doku. Alle Kenntnise beruhen aus einem Perlscript von FHEM.
  3. Das EM1010 verwendet eine Verkettung von Blöcken für historische Daten. Die im vorliegenden Perlscript verwendete Methode zur Ermittlung des Startblocks ist leider falsch. Ich kann zwar alle Blöcke auslesen, habe aber keine Info, ob sie in der richtigen Reihenfolge sind und zu welchem Zeitpunkt sie gehören. In Page 0-11 stehen pro Device Parameter, die ich aber wie die HeaderInformation in den Datenblöcken nicht sinnvoll zuordnen kann. Dort ist bestimmt die Lösung zu finden, habe ich aber noch nicht geschafft.
  4. Das Auslesen der historischen Werte ist nicht restartbar. Anders als bei WS300 werden bereits gelesene Daten nicht gelöscht. Der Löschbefehl ist aber noch nicht bekannt.
    Was geht denn nun?
    Ziel der Entwicklung war ja eine Nutzung unabhängig vom mitgelieferten Programm. Ich verwende jetzt meine gute alte port.dll zum auslesen. Die geht aber nur mit COM-Ports, also muss man einen aktuellen FTDI-Treiber mit einem VCP nutzen.
    Mit dieser zusätzlichen DLL kann mein IPS-Modul-SplitterModul jetzt regelmäßig den Status auslesen. Der ComPort wird nur zum Zeitpunkt der Datenanforderung geöffnet, steht also den Rest der Zeit zur Verfügung. Wie bei meinen Wetter-Modulen werden die DeviceInstancen automatisch angelegt. Es gibt zusätzlich noch eine Reihe von Funktionen zum Setzen und Lesen von Parametern wie Reset, Zeit, Zählerkonstante usw.
    Es kann ein Logfile angegeben werden, wo alle Messwerte im CSV-Format landen. Im Debug-Modus sind die Module sehr geschwätzig.
    Aus den oben genannten Gründen habe ich die Funktion zum Auslesen der historischen Daten wieder entfernt. Auch zum Speicher löschen muss leider noch das originale Programm bemüht werden. Gas-Sensoren habe ich vorgesehen, habe ich aber nicht selber.

Das Modul gibts bei mir wie immer als Betaware. Als „Abfallprodukte“ sind auch Testprogramme für die Kommandozeile entstanden, mit der man auch ohne IPS unter Windows das EM1010 auslesen kann.

Mitdenker gesucht
Falls jemand zusätzliche Informationen hat oder selber Programmieren möchte (Perl oder Delphi), kann mir gerne eine PM für die Details schicken.

Tommi

Hallo tommi,

ich hole diesen Thread mal hoch, da ich gerade wieder mal am suchen bin, wie ich unter anderem das Bügelesien und so überwachen kann.

Daher wollte ich wissen wie gut im moment die Kommunikation funkt.

Wenn ich also nen EM 1010 PC besorge
und dann noch EM 1000-FM
und nen EM 1000-HSM (kann ich damit gleich 2 Verbraucher kontrollieren)

Was kann ich in IPS dann überwachen?

Bekomme ich einen gesamtverbrauch?
einen momentanten verbrauch?

Wie oft werden die Daten vom Gerät dann abgeholt?
Kann ich auf Knopfdruck dann abfragen? (Wenn ich rausgehe, noch mal kurz nachfragen, obs Bügeleisen an ist?)
Welche Daten werden da dann geholt?

schalten würde ich dann per Homematic

Hallo,
Das EM1010-Modul fragt per default aller 5min den aktuellen Anzeigewert des EM1010PC ab, wie er von den verschiedenenen Sensoren gemeldet wird. Bei Bedarf kann man über eine PHP-Funktion auch häufiger abfragen, was aber nur wenig Sinn macht, da das Sendeintervall der Sensoren (ca. 3min) nicht beeinflusst werden kann. Der FM-Sensor arbeitet Problemlos, an den HSM kann man zwar 2 Verbraucher anschliessen, gemessen wird aber nur die Summe über beide Anschlüsse.
Das Auslesen der historischen Werte aus dem EM1010 klappt leider nicht (richtig)
Es werden die meisten der Angaben so übertragen, wie sie auch auf dem Display stehen (siehe auch die Screenshots in der Doku)-Pro Sensor z.B.Aktueller Verbrauch sowie Tages/Wochen und Monatssummen. Gesamtsummen muss man selber rechnen. Aufgrund der Abhängigkeit vom Sendeintervall und Übetragungsfehlern ist die Anwendung „Bügeleisen überwachen“ nur sinnvoll, wenn die Daten auch mal 5-10min alt sein dürfen.

Tommi

Hi Tommi,

ich habe heute mal Dein EM 1010-Mudul in mein IPS integriert: das funktioniert ja sehr komfortabel! Ich bin begeistert! Kein rumgefrickel mit irgendwelchen Scripten: Splitter-Instanz in Betrieb nehmen - das war’s schon.
Hab zwar ein wenig gebraucht um zu kapieren wie das funktionieren soll (z.B. automatische Instanzen-Anlage, automatisches Auslesen der Werte) - nun läuft’s aber. Habe aktuell 4 EM 1000-EM dran, mal sehen wie stabil die sich im Dauerbetrieb machen (man liest ja nicht viel Gutes).

Danke sehr!

Ach ja: evtl. für jemanden interessant: ich hab den EM 1010 PC über einen Silex 3000GB an den Server (IPS) angeschlossen, funktioniert problemlos.

Hallo Tommi,

ich hab edas Update auf 2.5 von Deiner Seite geladen, aber leider läuft es bei mir irgendwie nicht :frowning:

Ich bekomme keine Daten mehr von meinem EM

Beim Versuch die Parameter zu ändern mit

echo EM1010PC_getTime(34955 /*[Conrad Energy Control 3000 USB]*/);

EM1010Dev_SetPrice(31437 /*[Allgemein\Energy\Elektrozähler]*/, 2200);

EM1010Dev_setRperKW(31437 /*[Allgemein\Energy\Elektrozähler]*/ ,960);

EM1010PC_update(34955 /*[Conrad Energy Control 3000 USB]*/);

erhalte ich diese Fehlermeldung Warning: Objekt mit Ident LastLineVar wurde nicht gefunden in [Allgemein\Energy\scripte\Einstellen] on line 10

Das bezieht sich auf EM1010PC_update

Kannst Du helfen :o

Anbei eine neue Version. Wenn es das war, was ich geändert habe, war es aber vorher in V2.3 auch schon falsch. Bitte mal testen. Wenn der Fehler wieder auftritt, bitte mal ein Debuglog des EM1010 und den Auszug mit den Einträgen zum EM1010 aus dem ips log anhängen. Ich kann das leider aktuell nicht selber testen.

Tommi

EM1010.zip (306 KB)

Danke Tommi,

jetzt läuft es wieder :stuck_out_tongue:

OK, ich habe den Download für V2.5 aktualisiert. em1010.dll 2.5.0.78 ist die geänderte Version.

Ich habe gerade auf meine Rechner das Problem, dass ich im treiber unter Windows 7 den VCP nicht aktivieren kann. Also aktivieren geht schon, und er zeigt auch den USB Serial Port an, allerdings bekommt er keinen Treiber dafür. Auch wird keine COM Port zugewiesen. Mit der Anleitung auf der ELV-Seite klappt es auch nicht. Der EM 1010PC taucht unter den USB geräten auf und funktioniert einwandfrei.
Hat jemand das selbe Problem und eventuell eine Lösung parat?

Hätte gerne erst mal das Problem verstanden. Ein paar Einzelheiten über den Treiber und was Du gemacht hast würden auch nicht schaden, ausser es soll ein Ratespiel werden. :cool:

Gruß
Bruno

Ok, also ich habe ganz normal die Software Installiert, die ELV zum EM1010PC mitliefert. Das klappte unter Windows7 auch ganz unproblematisch mit dem programm EnergyProfessional kann ich auch problemlos mit dem EM1010PC kommunizieren.
Soweit so gut. Zur Integration in IPS möchte ich das Modul von tommi verwenden. Laut seiner Anleitung http://www.tdressler.net/ipsymcon/em1010.html im Abschnitt Konfiguration muss hierzu VCP im Treiber aktiviert werden, damit dieser einen virtuellen COM Port erzeugt. Also habe ich das Häkchen gesetzt. Im Gerätemanager erscheint dann wie auf tommis Anleitung „USB Serial Port“ aber ohne „(COMx)“ dahinter. Klicke ich nun mit rechter Maustaste da drauf und gehe auf Eigenschaften, wird mir angezeigt, dass kein Treiber für das Gerät vorhanden ist. Nach ein paar Minuten fängt Windows selber an einen Treiber für das Gerät zu suchen, bricht jedoch mit der Meldung dass kein treibe rinstalliert werden konnte ab. Auch wenn ich manuell das Verzeichnis im EnergyProfessional angebe wo die Treiber liegen kommt die Meldung.
Ich habe also im Endeffekt keinen virtuellen COM Port mit dem das Modul von Tommi arbeiten kann.

Nimm mal die FTDI-Treiber vom Hersteller. Du musst jedoch die inf-Dateien anpassen.

Gruß
Bruno

Hallo,

für Windows7 bitte aktuelle Treiber von ftdichip.com besorgen, dazu dann die INF-Files von hier packen und anschliessend den Treiber mit den INF-Files aktualisieren. Die ELV-Version ist grottig alt.

HTH
Tommi

Klappt jetzt super. Danke für die Hilfe.:slight_smile:

Also die VErbindung läuft und beim Strom kommt auch genau das raus was EnergyProfessional auch sagt. Ganz anders schaut es beim Gas aus.
Dort habe ich beim UnitPrice 60,5ct/m³ im EnergyProdessional eingestellt. im EM1010Modul wird mir 0,605 angezeigt. Da nehme ich mal an, das das in Euro/m³ ist. Die Kurven über den Tag sehen von der Form her gleich aus. Leide rnicht die Werte. Im EnergyProfessional liegen diese etwa um den Faktor 6 höher. Kommt da was mit dem UnitPrice durcheinander oder hab ich da nur einen Denkfehler.

Die Auswertung des Gasmoduls habe ich lediglich entsprechend der Spezifikation geschrieben, aber nicht getestet, weil ich selbst keinen Gaszähler habe. Möglicherweise stimmen nicht alle Berechnungen. Bisher hat sich noch niemand wegen Problemen damit gemeldet, was aber auch damit zusammenhängen kann, weil das (optische) ELV-Gerät mehr eine Schätzung als eine Messung liefert und es deshalb kaum genutzt wird. Aber die Werte aus dem EM1010PC und in IPS sollten schon passen.
Eine Differenz der Mengen um den Faktor 6 ist allerdings schon ungewöhnlich. Bei 12 hätte ich gesagt, da stimmt was mit der Intervallberechnung nicht(5min zu 1h). So tappe ich aber ohne weitere konkrete Informationen im Dunkeln. Welche Werte konkret stimmen nicht. Sind irgendwelche Änderungen an den Faktoren gemacht worden…
Einen Hinweis gibt das Debug-Fenster des Splitters und des Endgerätes, wo die Rohdaten mitgeschrieben werden. Wenn da was falsch, bitte auch schicken.

Tommi

Hallo Tommi

Also bei mir funrkioniert die Auslesung mit dem Sensor bsiher recht gut. zumindest in EnergyProfessional stimmen die Werte mit der Anzeige am Zählwerk überein. Meine Zählerwalzen auf denen die Die Zahlen stehen sind schwarz mit weißer Schrift. Es gibt aber auch Zähler mit weißen Walzen und schwarzer Schrift. Vielleicht macht da der Sensor Probleme.
Wie dem auch sei. ich habe mir mal die Momentanwerte angeschaut. Dein Modul liefert beim Lastdeviceinfo für die Stundensumme (momentan) einen Wert von 0.009. Energyprofessional meldet allerdings hier einen Wert von 0.09. Ebenso schaut es beim der Tagessumme aus (Lastdeviceinfo = 1,527 ,EnergyProfesional =15,27). Damit geht irgendwo ein Faktor 10 verschütt.
Der Faktor 6 kam wohl weil ich einfach die Werte im Diagramm angeschaut hatte und da nimmt EnergyProfessional 15 Minutenwerte (so die Auswahl im Diagramm), während dein Modul gerade 5 Minutenwerte auf die Stunde hochrechnet. Damit hatte ich wohl eher Äpfel mit Birnen verglichen. Ein direkter Vergleich geht ja nur mit den Momentanwerten.

Ich denke mal ich werde mir einfach noch ein paar Variablen anlegen und die Werte mit einem Skript um den Faktor 10 umrechnen.

Ich würde das schon gerade ziehen. Also nach meinen Unterlagen wird ein Gas-Sensor genauso behandelt wie ein FM Sensor (Stecker mit Adr. 5-8). Die Zähler-Konstante iec ist 1000, die Basiswerte kommen direkt aus der EM1000PC-Record ohne weiter Umrechnung.

sum_h_energy:=  dw(d,33)/ iec; // pulses this hour
  sum_d_energy:= dw(d,37) / iec; // pulses today
  sum_w_energy:= dw(d,41) / iec; // pulses this week
  total_energy:= dw(d, 7) / iec; //  pulses total

Was sagt denn der Debug-Output und was das Logfile?

Tommi

Hallo!

ich hab ein kleines Problem.

die Auswertung läuft sehr gut, aber ich hab bei „Cur_Power“ einen Wert von 0,08 und auf dem Display vom EM1010PC hab ich 0,008.
die Anzeige für den Tag (Sum_Daily_Energy) stimmt überein.

Gruß Gerald

Wer hat denn noch Gaszähler und/oder die Funkmess-Stecker im Einsatz und kann berichten, welche einzelnen Werte die Anzeige auf dem EM1010PC und IPS haben(z.B. Tag stimmt, Stunde IPS Faktor 10 zuwenig)? Mich wundert, das diese Fehler die ganze Zeit nicht aufgetaucht sind, obwohl dieser Code nie geändert worden ist.
Danke!
Tommi