Emlog Datenlogger Drehstromzähler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

seka
Beiträge: 27
Registriert: 30. Nov 2018 11:13
Answers: 0

Emlog Datenlogger Drehstromzähler

Beitrag von seka »

Hallo Zusammen,

Hat jmd. von euch einen Datenlogger von Emlog im Einsatz? (https://shop.weidmann-elektronik.de/ind ... t&info=141)
Dieser hat eine externe Datenschnittstelle.
Der Aufruf schaut wie folgt aus: http://emlog/pages/getinformation.php?e ... terindex=1 welcher mir das hier ausgibt

Code: Alles auswählen

{"product":"Emlog - Electronic Meter Log","version":1.08,"Zaehlerstand_Bezug":{"Stand180":4432,"Stand181":2981,"Stand182":1451},"Zaehlerstand_Lieferung":{"Stand280":917,"Stand281":916,"Stand282":0},"Wirkleistung_Bezug":{"Leistung170":0,"Leistung171":0,"Leistung172":0,"Leistung173":0},"Wirkleistung_Lieferung":{"Leistung270":0,"Leistung271":0,"Leistung272":0,"Leistung273":0},"Kwh_Bezug":{"Kwh180":9,"Kwh181":3,"Kwh182":6},"Kwh_Lieferung":{"Kwh280":0,"Kwh281":0,"Kwh282":0},"Betrag_Bezug":{"Betrag180":0,"Betrag181":0.84,"Betrag182":1.44,"Waehrung":"EUR"},"Betrag_Lieferung":{"Betrag280":0,"Betrag281":0,"Betrag282":0,"Waehrung":"EUR"},"DiffBezugLieferung":{"Betrag":-2.28}}
Kann mir jmd. helfen und sagen wie ich dies nun im OpenHab anlegen kann?
Wichtig wäre mir Stand181, Stand182, Stand281 und Stand282

Vielen Dank
Sebastian

Osterei
Beiträge: 19
Registriert: 28. Apr 2020 15:22
Answers: 0

Re: Emlog Datenlogger Drehstromzähler

Beitrag von Osterei »

Moin,
stehe momentan vor dem selben Problem.

Gibt es hierzu neue Erkenntnisse?

Gruß Osterei

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Emlog Datenlogger Drehstromzähler

Beitrag von udo1toni »

Es handelt sich offensichtlich um JSON :) Aufgehübscht durch einen JSON Formatter sieht das so aus:

Code: Alles auswählen

{
	"product": "Emlog - Electronic Meter Log",
	"version": 1.08,
	"Zaehlerstand_Bezug": {
		"Stand180": 4432,
		"Stand181": 2981,
		"Stand182": 1451
	},
	"Zaehlerstand_Lieferung": {
		"Stand280": 917,
		"Stand281": 916,
		"Stand282": 0
	},
	"Wirkleistung_Bezug": {
		"Leistung170": 0,
		"Leistung171": 0,
		"Leistung172": 0,
		"Leistung173": 0
	},
	"Wirkleistung_Lieferung": {
		"Leistung270": 0,
		"Leistung271": 0,
		"Leistung272": 0,
		"Leistung273": 0
	},
	"Kwh_Bezug": {
		"Kwh180": 9,
		"Kwh181": 3,
		"Kwh182": 6
	},
	"Kwh_Lieferung": {
		"Kwh280": 0,
		"Kwh281": 0,
		"Kwh282": 0
	},
	"Betrag_Bezug": {
		"Betrag180": 0,
		"Betrag181": 0.84,
		"Betrag182": 1.44,
		"Waehrung": "EUR"
	},
	"Betrag_Lieferung": {
		"Betrag280": 0,
		"Betrag281": 0,
		"Betrag282": 0,
		"Waehrung": "EUR"
	},
	"DiffBezugLieferung": {
		"Betrag": -2.28
	}
}
Um an die einzelnen Werte zu kommen, musst Du nur die JSONPATH Transformation installieren und den Output durch die Transformation laufen lassen.
Nehmen wir an, Du möchtest die Messwerte einmal pro Minute auslesen, nutzt Du am besten einen http Cache (zu konfigurieren in ./services/http.cfg):

Code: Alles auswählen

meter.url=http://emlog/pages/getinformation.php?export&meterindex=1
meter.updateInterval=60000
Der Rest der Datei kann bleiben wie er ist, sprich, Du hängst die Zeilen einfach unten dran.

Nun hast Du einen http Cache, den Du in den Items verwenden kannst:

Code: Alles auswählen

Number Meter_Bezug_180 "Bezug0 [%.0f kWh]" {http="<[meter:60000:JSONPATH($.Zaehlerstand_Bezug.Stand180)]"}
Number Meter_Bezug_181 "Bezug1 [%.0f kWh]" {http="<[meter:60000:JSONPATH($.Zaehlerstand_Bezug.Stand181)]"}
Number Meter_Bezug_182 "Bezug2 [%.0f kWh]" {http="<[meter:60000:JSONPATH($.Zaehlerstand_Bezug.Stand182)]"}
Die anderen Items erspare ich mir mal, ich denke, das Muster ist klar.
Das [%.0f] bedeutet, dass die Zahl als Float ohne Nachkommastellen dargestellt wird. Willst Du eine Nachkommastelle, muss dann entsprechend .1f dastehen.

Der http Cache ist hier sinnvoll, denn Du möchtest sicherlich mindestens 7 Werte darstellen können. Ohne den http Cache werden dann 7 Anfragen gegen den Webserver geschickt, mit http Cache nur eine Anfrage und openHAB zerlegt das JSON intern in seine Bestandteile.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Osterei
Beiträge: 19
Registriert: 28. Apr 2020 15:22
Answers: 0

Re: Emlog Datenlogger Drehstromzähler

Beitrag von Osterei »

Vielen Dank.
Klappt perfekt.
Gruß Osterei

ms1978
Beiträge: 12
Registriert: 6. Aug 2021 14:53
Answers: 0

Re: Emlog Datenlogger Drehstromzähler

Beitrag von ms1978 »

Hallo, danke für die Hilfe hier, habe seit Jahren nen OH1 und danach OH2 im Einsatz.

Wie binde ich unter OH2 eine 2. Url in das http Binding ein?

Wäre für den emlog der Zähler 2 und 3 z.B.
meter.url=http://emlog/pages/getinformation.php?e ... terindex=2

Habe versucht das obige unten drunter zu kopieren und die Url, sowie meter in meter2 umzubenennen, aber er holt dann nicht mehr die alte Url ab.
wo liegt der Fehler?

Vielen Dank
ms1978

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Emlog Datenlogger Drehstromzähler

Beitrag von peter-pan »

ich nehme mal an du meinst die Version aus dem HTTP-Cache.
Meine "http.cfg" sieht so aus:

Code: Alles auswählen

# timeout in milliseconds for the http requests (optional, defaults to 5000)
timeout=60000

# configuration of the first cache item
owm_test.url=https://api.openweathermap.org/data/2.5/uvi?lat=12.8877028&lon=2.8741097&APPID=meinapikey&lang=de&units=metric
owm_test.updateInterval=3600000

# configuration of the second cache item
# Tasmota Release Status (cached twice a day)
tasmotaRelease.url=https://api.github.com/repos/arendst/Sonoff-Tasmota/tags
tasmotaRelease.updateInterval=43200000
und ein Beispiel-Item dazu:

Code: Alles auswählen

String    Sonoff_Current_FW_Available   "Current Release available from Theo[%s]" <arendst>(gTasmo) ["Status"] { http="<[tasmotaRelease:10000:JSONPATH($[0].name)]"}
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

ms1978
Beiträge: 12
Registriert: 6. Aug 2021 14:53
Answers: 0

Re: Emlog Datenlogger Drehstromzähler

Beitrag von ms1978 »

Vielen Dank, hatte im http alles richtig - der Fehler lag allerdings in der Sitemaps - dort sollte man natürlich verschiedene Namen benutzen :roll:

Osterei
Beiträge: 19
Registriert: 28. Apr 2020 15:22
Answers: 0

Re: Emlog Datenlogger Drehstromzähler

Beitrag von Osterei »

Hallo,
habe nun die meisten Sachen in Openhab 3 am laufen , nur den Emlog bekomme ich nicht hin.
Wie sieht denn die http.things dann aus?

http.things Muster

Code: Alles auswählen

Thing http:url:emlog "Emlog" [
    baseURL="meter.url=http://emlog/pages/getinformation.php?export&meterindex=1",
    refresh=60
] {
    Channels:
http.cfg sah so aus

Code: Alles auswählen

meter.url=http://emlog/pages/getinformation.php?export&meterindex=1
meter.updateInterval=60000
Die items so

Code: Alles auswählen

Number Meter_Bezug_180 "Bezug0 [%.1f kWh]" {http="<[meter:60000:JSONPATH($.Zaehlerstand_Bezug.Stand180)]"}
Number Wirkleistung_Bezug "Bezug0 [%.1f kWh]" {http="<[meter:60000:JSONPATH($.Wirkleistung_Bezug.Leistung170)]"}
Number Zaehlerstand_Lieferung "Bezug0 [%.1f kWh]" {http="<[meter:60000:JSONPATH($.Zaehlerstand_Lieferung.Stand280)]"}
Number Wirkleistung_Lieferung "Bezug0 [%.1f kWh]" {http="<[meter:60000:JSONPATH($.Wirkleistung_Lieferung.Leistung270)]"}
Number KWH_Bezug "Bezug0 [%.1f kWh]" {http="<[meter:60000:JSONPATH($.Kwh_Bezug.Kwh180)]"}
Number KWH_Lieferung "Bezug0 [%.1f kWh]" {http="<[meter:60000:JSONPATH($.Kwh_Lieferung.Kwh280)]"}
Wie müssen denn die Channels aussehen?

Vielen Dank im Voraus .
Gruß Osterei

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Emlog Datenlogger Drehstromzähler

Beitrag von udo1toni »

Es gibt zwei mögliche Varianten. Ich habe hier mal ein Thing mit sieben Channels gebaut. Entweder Du verwendest nur den 1. Channel (json) oder nur die anderen Channel.
Das sieht so aus:

Code: Alles auswählen

Thing http:url:emlog "Emlog" [
    baseURL="http://emlog/pages/getinformation.php?export&meterindex=1",
    refresh=60
  ] {
    Channels:
        Type string : json     "Emlog JSON" []
        Type number : count180 "Zähler Bezug"           [stateTransformation="JSONPATH:$.Zaehlerstand_Bezug.Stand180",       unit="kWh"]
        Type number : power170 "Wirkleistung Bezug"     [stateTransformation="JSONPATH:$.Wirkleistung_Bezug.Leistung170",    unit="kW"]
        Type number : count280 "Zähler Lieferung"       [stateTransformation="JSONPATH:$.Zaehlerstand_Lieferung.Stand280",   unit="kWh"]
        Type number : power270 "Wirkleistung Lieferung" [stateTransformation="JSONPATH:$.Wirkleistung_Lieferung.Leistung270",unit="kW"]
        Type number : kwh180   "kWh Bezug"              [stateTransformation="JSONPATH:$.Kwh_Bezug.Kwh180",                  unit="kWh"]
        Type number : kwh280   "kWh Liefrung"           [stateTransformation="JSONPATH:$.Kwh_Lieferung.Kwh280",              unit="kWh"]
}
Und hier die Items dazu

Code: Alles auswählen

// Variante mit einem string Channel, alle Items mit einem Channel verlinkt
Number Meter_Bezug_180        "Bezug0 Zähler [%.1f kWh]"       {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Zaehlerstand_Bezug.Stand180"]}
Number Wirkleistung_Bezug     "Bezug0 Leistung [%.1f kW]"      {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Wirkleistung_Bezug.Leistung170"]}
Number Zaehlerstand_Lieferung "Lieferung0 Zähler [%.1f kWh]"   {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Zaehlerstand_Lieferung.Stand280"]}
Number Wirkleistung_Lieferung "Lieferung0 Leistung [%.1f kW]"  {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Wirkleistung_Lieferung.Leistung270"]}
Number KWH_Bezug              "Bezug0 [%.1f kWh]"              {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Kwh_Bezug.Kwh180"]}
Number KWH_Lieferung          "Lieferung0 [%.1f kWh]"          {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Kwh_Lieferung.Kwh280"]}

// alternativ UoM mit number Channels, jedes Item hat einen eigenen Channel
Number:Energy Meter_Bezug_180        "Bezug0 Zähler"       {channel="http:url:emlog:count180"}
Number:Power  Wirkleistung_Bezug     "Bezug0 Leistung"     {channel="http:url:emlog:power170"}
Number:Energy Zaehlerstand_Lieferung "Lieferung0 Zähler"   {channel="http:url:emlog:count280"}
Number:Power  Wirkleistung_Lieferung "Lieferung0 Leistung" {channel="http:url:emlog:power270"}
Number:Energy KWH_Bezug              "Bezug0"              {channel="http:url:emlog:kwh180"}
Number:Energy KWH_Lieferung          "Lieferung0"          {channel="http:url:emlog:kwh280"}
Die Items sind entweder oder (weil ich identische Namen verwendet habe...)

Der Unterschied: im oberen Block brauchst Du nur einen einzigen Channel, der dem http Cache entspricht. Die Transformation geschieht im Link zwischen Channel und Item, was ziemlich cool ist, schließlich reicht der eine Channel für alle Items.

Dafür hast Du im unteren Block nun nicht nur einfache Number Items, die den Messwert enthalten, sondern es wird zusätzlich noch die Einheit per UoM übertragen. Du kannst auf die weitere Definition der Einheit verzichten und Dir sogar die Werte in anderen Einheiten ausgeben lassen (also z.B. in Megawattsekunden statt Kilowattstunden.

Da sind ein paar Ungereimtheiten in Deiner Definition (was den Inhalt betrifft):
Die Wirkleistung wird in Watt angegeben, nicht in Wattsekunden (ober auch Kilowattstunden...)
Item fünf und sechs erschließen sich mir nicht. Ist das eventuell die Tagessumme?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Osterei
Beiträge: 19
Registriert: 28. Apr 2020 15:22
Answers: 0

Re: Emlog Datenlogger Drehstromzähler

Beitrag von Osterei »

Vielen Dank Udo.
Mit dem oberen Teil scheint irgentwas noch nicht zu stimmen.

Code: Alles auswählen

2023-02-18 12:38:08.581 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'http.things'
2023-02-18 12:38:31.294 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.Wirkleistung_Bezug.Leistung170 not found!
2023-02-18 12:38:31.294 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.Kwh_Lieferung.Kwh280 not found!
2023-02-18 12:38:31.295 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.Kwh_Bezug.Kwh180 not found!
2023-02-18 12:38:31.296 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.Zaehlerstand_Lieferung.Stand280 not found!
2023-02-18 12:38:31.296 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.Wirkleistung_Lieferung.Leistung270 not found!
2023-02-18 12:38:31.297 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.Zaehlerstand_Bezug.Stand180 not found!'
So habe ich es jetzt eingetragen.
http.things

Code: Alles auswählen

Thing http:url:emlog "Emlog" [
    baseURL="http://emlog/pages/getinformation.php?export&meterindex=1",
    refresh=60
  ] {
    Channels:
        Type string : json     "Emlog JSON" []
        Type number : count180 "Zähler Bezug"           [stateTransformation="JSONPATH:$.Zaehlerstand_Bezug.Stand180",       unit="kWh"]
        Type number : power170 "Wirkleistung Bezug"     [stateTransformation="JSONPATH:$.Wirkleistung_Bezug.Leistung170",    unit="kW"]
        Type number : count280 "Zähler Lieferung"       [stateTransformation="JSONPATH:$.Zaehlerstand_Lieferung.Stand280",   unit="kWh"]
        Type number : power270 "Wirkleistung Lieferung" [stateTransformation="JSONPATH:$.Wirkleistung_Lieferung.Leistung270",unit="kW"]
        Type number : kwh180   "kWh Bezug"              [stateTransformation="JSONPATH:$.Kwh_Bezug.Kwh180",                  unit="kWh"]
        Type number : kwh280   "kWh Lieferung"           [stateTransformation="JSONPATH:$.Kwh_Lieferung.Kwh280",              unit="kWh"]
}
http.items

Code: Alles auswählen

Number Meter_Bezug_180        "Bezug0 Zähler [%.1f kWh]"       {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Zaehlerstand_Bezug.Stand180"]}
Number Wirkleistung_Bezug     "Bezug0 Leistung [%.1f kW]"      {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Wirkleistung_Bezug.Leistung170"]}
Number Zaehlerstand_Lieferung "Lieferung0 Zähler [%.1f kWh]"   {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Zaehlerstand_Lieferung.Stand280"]}
Number Wirkleistung_Lieferung "Lieferung0 Leistung [%.1f kW]"  {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Wirkleistung_Lieferung.Leistung270"]}
Number KWH_Bezug              "Bezug0 [%.1f kWh]"              {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Kwh_Bezug.Kwh180"]}
Number KWH_Lieferung          "Lieferung0 [%.1f kWh]"          {channel="http:url:emlog:json"[profile="transform:JSONPATH",function="$.Kwh_Lieferung.Kwh280"]}
Vielleicht hast du da eine Idee?

Vielen Dank
Gruß Osterei

Antworten