Hichi IR Wifi mqtt Werte auslesen

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

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

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von udo1toni »

Ah. Du nutzt drei Leseköpfe mit jeweils eingebautem WLAN?

Das Problem ist, dass auf dem identischen Topic völlig unterschiedliche JSON Objekte ausgeliefert werden.
Da hilft eine Verkettung von JSONPATH mit REGEX:

Code: Alles auswählen

Thing topic 1EMH12345678 "Z1 Hauptzähler" @ "MQTT" {
	Channels:
		Type string : z1_Power_curr  "Z1 Power Current" [
			stateTopic="tele/tasmota_F9A39A/SENSOR"
			transformationPattern="REGEX:(.*_curr.*)∩JSONPATH:$[0].Power_curr"
		]
		Type number : z1_180  "Z1 Zählwerk 1.8.0 (in)" [
			stateTopic="tele/tasmota_F9A39A/SENSOR",
			transformationPattern="REGEX:(.*_in.*)∩JSONPATH:$[0].Total_in"
		]
		Type number : z1_280  "Z1 Zählwerk 2.8.0 (out)" [
			stateTopic="tele/tasmota_F9A39A/SENSOR",
			transformationPattern="REGEX:(.*_out.*)∩JSONPATH:$[0].Total_out"
		]
}
Das ∩ bekommst Du bequem über den Hilfstext zum transformationPattern, oder halt von hier... ;)
REGEX liefert eine leere Zeichenkette, wenn der String nicht matcht, woraufhin JSONPATH keinen Versuch unternimmt, den Channel upzudaten.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von int5749 »

udo1toni hat geschrieben: 15. Jan 2023 18:01 Ah. Du nutzt drei Leseköpfe mit jeweils eingebautem WLAN?
Ja, hatte ich auf dem Screenshot gezeigt und mal erwähnt, da alle unterschiedliche Topics senden, sollte dies ja kein Problem darstellen.

udo1toni hat geschrieben: 15. Jan 2023 18:01 Das Problem ist, dass auf dem identischen Topic völlig unterschiedliche JSON Objekte ausgeliefert werden.
Da hilft eine Verkettung von JSONPATH mit REGEX:

Code: Alles auswählen

Thing topic 1EMH12345678 "Z1 Hauptzähler" @ "MQTT" {
	Channels:
		Type string : z1_Power_curr  "Z1 Power Current" [
			stateTopic="tele/tasmota_F9A39A/SENSOR"
			transformationPattern="REGEX:(.*_curr.*)∩JSONPATH:$[0].Power_curr"
		]
		Type number : z1_180  "Z1 Zählwerk 1.8.0 (in)" [
			stateTopic="tele/tasmota_F9A39A/SENSOR",
			transformationPattern="REGEX:(.*_in.*)∩JSONPATH:$[0].Total_in"
		]
		Type number : z1_280  "Z1 Zählwerk 2.8.0 (out)" [
			stateTopic="tele/tasmota_F9A39A/SENSOR",
			transformationPattern="REGEX:(.*_out.*)∩JSONPATH:$[0].Total_out"
		]
}
DAS war es, wieder was gelernt mit dieser Verkettung => DANKE

Das folgende

Code: Alles auswählen

transformationPattern="REGEX:(.*_in.*)∩JSONPATH:$[0].Total_in"
funktioniert aber nicht, hier rmuss bei mir ein doppelter .

Code: Alles auswählen

transformationPattern="REGEX:(.*_in.*)∩JSONPATH:$..Total_in"
Nun zeigt das Log keine Fehler mehr :)
Die Zählerwerte lasse ich per tele-Intervall senden, nur der Momentanverbrauch in realtime. Ich denke dies sollte für eine Auswertung ausreichen.

Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von udo1toni »

Ach so... eigentlich sollten die Channel vom Typ number sein, nicht string. Beim Typ number kannst Du zusätzlich noch den Parameter unit setzen, also z.B. unit="kWh", dann kannst Du den Channel mit einem Number:Energy (oder im Fall von W Number:Power) verlinken und bekommst automatisch die korrekte Einheit mit. Nur in den Rules wird es dann minimal komplizierter :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von oh73 »

habe seit ca. 4 Wochen auch einen digitalen Zähler ISKRA MT681,

dazu hab ich mir auch den Hichi IR Sensor gekauft.

einrichten kein großes Problem, nur bei den Werten abfragen hab ich auch das Problem das auf einem Topic mindestens 2 Arten von Json Daten ankommen.

einmal nur der momentan Verbrauch, hab ich im Script auf 16 gestellt, jede Sekunde ?

Code: Alles auswählen

{
    "Time": "2023-01-19T18:42:59",
    "MT681": {
        "Power_cur": 448
    }
}
und einmal alle Werte ca. alle 5 Minuten

Code: Alles auswählen

{
    "Time": "2023-01-19T18:42:59",
    "MT681": {
        "Total_in": 367.623,
        "Power_cur": 448,
        "Power_p1": 0,
        "Power_p2": 0,
        "Power_p3": 0,
        "Total_out": 42.328,
        "Meter_id": "090149534b00053ba01c"
    }
}
mit

Code: Alles auswählen

transformationPattern="REGEX:(.*_out*)∩JSONPATH:$.MT681.Total_out"]
und

Code: Alles auswählen

transformationPattern="REGEX:(.*_in*)∩JSONPATH:$.MT681.Total_in"]
funktionet bei mir nicht.
Fehlermeldung Regex findet ._in. und ._out. nicht!

kann ja auch nicht gefunden werden, da alle Sekunden ja der Json String nur mit Power_cur kommt!

hab dann raus gefunden das auf einem anderen Topic die Daten noch mal sind,
normales Topic

Code: Alles auswählen

stateTopic="tele/tasmota_FA0021/SENSOR
das zweite Topic

Code: Alles auswählen

stateTopic="stat/tasmota_FA0021/STATUS8
hier sind immer die kompletten Daten,
nur wieder ein Haken bei der Sache.
dieses Topic wird nicht von selbst aktualisiert, aktualliesiert nur wenn zB. die Web Seite
http://192.168.178.58/cm?cmnd=status+8
aufgerufen wird.

jetzt hab ich noch eine Rule gemacht, die mir alle 5 Minuten die Seite aufruft um die Daten zu aktualisieren.

den momentan Verbrauch ruf ich jetzt mit dem ersten Topic ab und Total_in , Totol_out mit dem zweiten Topic!

ob das alles so richtig ist ??
funktioniern tut es auf jeden Fall .
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von udo1toni »

Die verwendeten Expressions sollten eigentlich funktionieren.

Hast Du REGEX auch installiert?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von oh73 »

erwischt :oops:
ich schäme mich jetzt aber.

muss ich dann morgen mal testen
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von udo1toni »

Entschuldigung... es sind halt glücklicherweise meist die naheliegendsten Fehler...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von PeterA »

udo1toni hat geschrieben: 31. Okt 2022 10:48 Ja, das ist falsch :)

Punkt eins: MQTT benötigt immer und ausnahmslos zwei unterschiedliche Topics, falls auf einem Channel sowohl gesendet als auch empfangen wird, stateTopic und commandTopic sind niemals gleich gesetzt.
Punkt zwei: Mag ja sein, dass Tasmota hier noch die Möglichkeit bietet, Befehle anzunehmen, nötig ist das aber sicher nicht. Also lass bitte das commandTopic im Zweifel komplett leer.
Punkt drei: Da das Topic drei Informationen überträgt, die Du alle haben willst (und eine vierte, auf die Du eventuell verzichten kannst, die aber auch interessant sein kann), wäre es sinnvoll, den Channel mehrfach zu verlinken. dazu muss die stateTransformation leer bleiben und der Channel muss von Typ String sein. Codeansicht:

Code: Alles auswählen

UID: mqtt:topic:mosquitto:hichi
label: Anbindung Stromzähler
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:mosquitto
channels:
  - id: json
    channelTypeUID: mqtt:string
    label: JSON Objekt
    description: ""
    configuration:
      stateTopic: tele/tasmota_E3A268/SENSOR
Hi Udo,

Auch hier gibts nun einen Hichi Lesekopf :)
Wie könnte denn der Mqtt thing Code für OH2.4 aussehen ?

Gruß
Peter
- OpenHab 2.4
#PWRUP

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

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von udo1toni »

Hilf mir mal kurz auf die Sprünge... ist ja schon ein bisschen her...

Grundsätzlich sollte sich der Thing Code zwischen OH3 und OH2.2+ nicht unterscheiden. Kann höchstens sein, dass es im Detail kleine Unterschiede gibt, weil sich Parameternamen geändert haben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Hichi IR Wifi mqtt Werte auslesen

Beitrag von PeterA »

Eigentlich möchte ich nur wissen wir der zitierte Code von OH3 für OH2.x aussieht.

Hier z.B. das mqtt.thing von meinem WR (nur als Beispiel):

Code: Alles auswählen

Bridge mqtt:broker:3448a27a [ host="localhost", secure=false ]  
{
    Thing topic OpenDTU1 "OpenDTU" @ "daHome" [availabilityTopic="solar/dtu/status", payloadAvailable="online", payloadNotAvailable="offline"]
    {
        Channels:
        // Technical things
        Type number : uptime					"OpenDTU uptime"		[stateTopic="solar/dtu/uptime"]
        Type string : ip						"OpenDTU IP"			[stateTopic="solar/dtu/ip"]
        Type number : rssi						"OpenDTU rssi"			[stateTopic="solar/dtu/rssi"]
        // First inverter, serial: 116183132641
        Type string : inv1_name					"Inverter name"			[stateTopic="solar/116183132641/name"]
        // Main values
        Type number : inv1_pow					"Total (AC) power [%.1f W]"		[stateTopic="solar/116183132641/0/power"]
        Type number : inv1_voltage				"I1 AC voltage"			[stateTopic="solar/116183132641/0/voltage"]
        Type number : inv1_current				"I1 AC current"			[stateTopic="solar/116183132641/0/current"]
        Type number : inv1_frequency			"I1 AC Frequency"		[stateTopic="solar/116183132641/0/frequency"]
        Type number : inv1_efficiency			"I1 AC efficiency"		[stateTopic="solar/116183132641/0/efficiency"]
        Type number : inv1_powerfactor			"I1 AC powerfactor"		[stateTopic="solar/116183132641/0/powerfactor"]
        Type number : inv1_reactivepower		"I1 AC reactivepower"	[stateTopic="solar/116183132641/0/reactivepower"]
        Type number : inv1_pow_dc				"DC Power (total)"		[stateTopic="solar/116183132641/0/powerdc"]
        Type number : inv1_temp					"Inverter temperature"	[stateTopic="solar/116183132641/0/temperature"]
        Type number : inv1_yieldday				"Yield day"				[stateTopic="solar/116183132641/0/yieldday"]
        Type number : inv1_yieldtotal			"Yield total"			[stateTopic="solar/116183132641/0/yieldtotal"]
        // Inverter 1 - String 1
        Type number : inv1_s1_voltage			"I1 S1 voltage"			[stateTopic="solar/116183132641/1/voltage"]
        Type number : inv1_s1_current			"I1 S1 current"			[stateTopic="solar/116183132641/1/current"]
        Type number : inv1_s1_pow				"I1 S1 power"			[stateTopic="solar/116183132641/1/power"]
        Type number : inv1_s1_yieldday			"I1 S1 yield day"		[stateTopic="solar/116183132641/1/yieldday"]
        Type number : inv1_s1_yieldtotal		"I1 S1 yield total"		[stateTopic="solar/116183132641/1/yieldtotal"]
        Type number : inv1_s1_irradiation		"I1 S1 irradiation"		[stateTopic="solar/116183132641/1/irradiation"]
        // Inverter 1 - String 2
        Type number : inv1_s2_voltage			"I1 S2 voltage"			[stateTopic="solar/116183132641/2/voltage"]
        Type number : inv1_s2_current			"I1 S2 current"			[stateTopic="solar/116183132641/2/current"]
        Type number : inv1_s2_pow				"I1 S2 power"			[stateTopic="solar/116183132641/2/power"]
        Type number : inv1_s2_yieldday			"I1 S2 yield day"		[stateTopic="solar/116183132641/2/yieldday"]
        Type number : inv1_s2_yieldtotal		"I1 S2 yield total"		[stateTopic="solar/116183132641/2/yieldtotal"]
        Type number : inv1_s2_irradiation		"I1 S2 irradiation"		[stateTopic="solar/116183132641/2/irradiation"]
        // Inverter 1 - String 3
        Type number : inv1_s3_voltage			"I1 S3 voltage"			[stateTopic="solar/116183132641/3/voltage"]
        Type number : inv1_s3_current			"I1 S3 current"			[stateTopic="solar/116183132641/3/current"]
        Type number : inv1_s3_pow				"I1 S3 power"			[stateTopic="solar/116183132641/3/power"]
        Type number : inv1_s3_yieldday			"I1 S3 yield day"		[stateTopic="solar/116183132641/3/yieldday"]
        Type number : inv1_s3_yieldtotal		"I1 S3 yield total"		[stateTopic="solar/116183132641/3/yieldtotal"]
        Type number : inv1_s3_irradiation		"I1 S3 irradiation"		[stateTopic="solar/116183132641/3/irradiation"]
        // Inverter 1 - String 4
        Type number : inv1_s4_voltage			"I1 S4 voltage"			[stateTopic="solar/116183132641/4/voltage"]
        Type number : inv1_s4_current			"I1 S4 current"			[stateTopic="solar/116183132641/4/current"]
        Type number : inv1_s4_pow				"I1 S4 power"			[stateTopic="solar/116183132641/4/power"]
        Type number : inv1_s4_yieldday			"I1 S4 yield day"		[stateTopic="solar/116183132641/4/yieldday"]
        Type number : inv1_s4_yieldtotal		"I1 S4 yield total"		[stateTopic="solar/116183132641/4/yieldtotal"]
        Type number : inv1_s4_irradiation		"I1 S4 irradiation"		[stateTopic="solar/116183132641/4/irradiation"]
        // Inverter info
        Type number : inv1_bl_version			"I1 bootloader version"	[stateTopic="solar/116183132641/device/bootloaderversion"]
        Type number : inv1_fw_build_version		"I1 firmware version"	[stateTopic="solar/116183132641/device/fwbuildversion"]
        //Type datetime : inv1_fw_build_datetime	"I1 fw build datetime"	[stateTopic="solar/116183132641/device/fwbuilddatetime"]
        Type number : inv1_hw_partnumber		"I1 hw part number"		[stateTopic="solar/116183132641/device/hwpartnumber"]
        Type number : inv1_hw_version			"I1 hw version"			[stateTopic="solar/116183132641/device/hwversion"]
        // Settings
        Type string : inv1_limit				"Inverter limit"		[stateTopic="solar/116183132641/settings/limit"]
    }
}
Ist ja doch noch etwas anders aufgebaut als der Zitierte Code von Dir.

Gruß Peter
- OpenHab 2.4
#PWRUP

Antworten