Seite 2 von 3

Re: Modbus - kompatibel??

Verfasst: 30. Mär 2023 21:11
von mad-mike
@ OH73 Funktioniert sofort :D
Ich habe das nun also mit der JS datei erledigt. Das funktioniert auch, (Bis jetzt)

Code: Alles auswählen

(function(i) {
    if(i < 0) return "0";
    return parseFloat(i) / 10
})(input)

Was passiert denn wohl, wenn ich eine Negative Zahl bekomme?? dann bleibt der bei wert 0?

Negativ weil ich einspeise... :?:

Ich versuche das von @Udo1Toni zu finden...
Aber die komplette Liste wird bei mir nicht angezeigt. Muss ich die UoM über die Textfiles erstellen?
Im Channel bzw Thing kann ich nix finden was das UoM angeht.

Re: Modbus - kompatibel??

Verfasst: 30. Mär 2023 21:30
von oh73
der Wechselrichter liefert bei mir keine Negative Werte,
die Einspeisung lese ich vom Smartmeter ab,
der liefert bei Einspeisung Negative Werte, aber da hab ich keine Probleme mit.

meine Things, Items sind alle in Text Files!

hab mir im Habpanel eine Anzeige für meine ganzen Energie Werte,
ist auf dem ersten Blick etwas viel Daten, aber ich spiele halt gern damit,
und es fällt mir fast jeden Tag was neues ein!
Energie.jpg

Re: Modbus - kompatibel??

Verfasst: 30. Mär 2023 21:39
von mad-mike
Ich lese den smart Meter über Port 1016 über den Wechselrichter aus.

Die Verbindung zwischen Wechselrichter und Smartmeter ist zwar auch eine modbus 485 aber anscheind kann ich hier keine Daten auslesen.... Sobald ich hier den Bus anklemme ist die Verbindung zum Wechselrichter weg. Das ist das was ich bei der unendlichen suche im www gelesen habe, es ist wohl eine spezielle 1zu 1 Verbindung.

Drum über Port 1016. Also werde ich wohl auch negative zahlen erwarten.

Re: Modbus - kompatibel??

Verfasst: 30. Mär 2023 22:14
von mad-mike
Habe den teil entfernt. mal gucken was dann passiert??

Code: Alles auswählen

    if(i < 0) return "0";

Re: Modbus - kompatibel??

Verfasst: 2. Apr 2023 15:30
von mad-mike
Es hat sich ebend was neues ergeben.

Und zwar wird der Wert addr 1016 für den momentanen Bezug genutzt, und die addr. 1024 wird die momentane Einspeisung angezeigt.

Lässt sich das in Einklang bringen, das ich hier einen Wert habe in meiner Übersicht?

Für die rule welche ich für die Elektro Patrone nutzen will, kann ich direkt 1024 abfragen.

Nur in meiner Sitemap ist dann auf einmal 0 angezeigt, obwohl cool wäre wenn er dann minus anzeigen könnte...

Wäre das eine Aufgabe für eine rule? Die im 2 Sekunden Takt triggert?

Re: Modbus - kompatibel??

Verfasst: 2. Apr 2023 20:39
von udo1toni
Du wirst dazu einen weiteren Channel anlegen müssen.
Wenn Du in der Übersicht eine Anzeige haben willst, die zwischen positiv und negativ wechselt, musst Du ein drittes Item anlegen, welcehs mit keinem der beiden Channel verlinkt ist. Stattdessen füllst Du das Item dann mittels Rule (die triggert auf die beiden Items für Bezug und Einspeisung).
Die Rule muss dann jedes Mal prüfen, welches der beiden Items 0 ist und den Wert des anderen Items in die Anzeige übernehmen - gegebenenfalls mit umgekehrten Vorzeichen.

Re: Modbus - kompatibel??

Verfasst: 6. Mai 2023 14:11
von mad-mike
Wie kann ich eine Thing Textdatei erstellen??
Über die Oberfläche wie folgt:
Gateway

Code: Alles auswählen

UID: modbus:tcp:d48353e327
label: PV Gateway
thingTypeUID: modbus:tcp
configuration:
  rtuEncoded: false
  connectMaxTries: 1
  reconnectAfterMillis: 50
  timeBetweenTransactionsMillis: 60
  port: 502
  timeBetweenReconnectMillis: 0
  connectTimeoutMillis: 10000
  host: 192.168.178.198
  afterConnectionDelayMillis: 0
  id: 1
  enableDiscovery: false
Poller:

Code: Alles auswählen

UID: modbus:poller:d48353e327:df09fb732e
label: PV poll
thingTypeUID: modbus:poller
configuration:
  length: 100
  start: 1000
  refresh: 3000
  maxTries: 3
  cacheMillis: 50
  type: input
bridgeUID: modbus:tcp:d48353e327
Und Beispiel Thing SOC

Code: Alles auswählen

UID: modbus:data:df09fb732e:7a73715b8e
label: PV Akku
thingTypeUID: modbus:data
configuration:
  readValueType: uint16
  readTransform: default
  writeTransform: default
  readStart: "1014"
  updateUnchangedValuesEveryMillis: 1000
  writeMultipleEvenWithSingleRegisterOrCoil: false
  writeMaxTries: 3
bridgeUID: modbus:poller:d48353e327:df09fb732e

Es ist ja so, das die Liste gefühlt einfacher zu erstellen ist, als die Textdatei, aber irgendwie Stockt es.

Code: Alles auswählen

Bridge modbus:tcp:localhostTCP [ host="192.168.178.198", port=502, id=1 ] {
    Bridge poller inputRegisters [ start=1000, length=100, refresh=5000, type="input" ] {
        Thing data Akku_watt [ readStart="1010", readValueType="uint16"]
        Thing data PV_SOC [ readStart="1014", readValueType="uint16"]
        Thing data von_Netz [ readStart="1022", readValueType="uint16"]
        Thing data ins_Netz [ readStart="1030", readValueType="uint16"]
    }
}
Es gibt immer eine Warnmeldung wenn ich das Thing über die Text datei aktiviere...

Code: Alles auswählen

2023-05-06 13:46:06.102 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=1000, length=100, maxTries=3]). Will try again soon. Error was I/O error, so resetting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: SocketTimeoutException Read timed out [operation ID 4c6507b4-8087-4e08-8d5d-9dfb8d8e5c61]
hat jemand eine idee, was ich falsch mache?? wie gesagt, über die UI läuft es ohne fehler...

:geek: danke und gruss

Re: Modbus - kompatibel??

Verfasst: 6. Mai 2023 20:40
von udo1toni
Hast Du die UI-Bridge pausiert, während das Text-Thing definiert war?

Offensichtliche Fehler sehe ich nicht, allerdings möchte ich vorschlagen (entgegen dem Beispiel in der offiziellen Doku), jeweils ein Label zu definieren, also so:

Code: Alles auswählen

Bridge modbus:tcp:tcpBridge "PV Gateway"  [ host="192.168.178.198", port=502, id=1 ] {
    Bridge poller inputPoller "PV Poller" [ start=1000, length=100, refresh=5000, type="input"] {
        Thing data Akku_watt "Akku"       [ readStart="1010", readValueType="uint16"]
        Thing data PV_SOC    "SOC"        [ readStart="1014", readValueType="uint16"]
        Thing data von_Netz  "von Netz"   [ readStart="1022", readValueType="uint16"]
        Thing data ins_Netz  "ins Netz"   [ readStart="1030", readValueType="uint16"]
    }
}
Hast Du openHAB mal neu gestartet? Es gibt (in den aktuellen Snapshots eventuell gab - hab den aktuellen Stand nicht ganz im Blick) einen Fehler, der verhindert, dass Änderungen an Things Dateien korrekt zur Laufzeit eingelesen werden. Also nach Änderungen an Things-Dateien geht es am einfachsten, openHAB komplett durchzustarten. Alternativ kann man auch die betroffenen Bindings durchstarten.

Re: Modbus - kompatibel??

Verfasst: 7. Mai 2023 00:17
von mad-mike
Danke dir.

Habe noch mal alles im Detail Verglichen, und habe doch noch Differenzen festgestellt:

Code: Alles auswählen

Bridge modbus:tcp:tcpBridge "PV Gateway"  [ host="192.168.178.198", port=502, id=1,   reconnectAfterMillis=50 ] {
    Bridge poller inputPoller "PV Poller" [ start=1000, length=100, refresh=5000, type="input", cacheMillis=50] {
        Thing data Akku_watt "Akku"       [ readStart="1010", readValueType="uint16"]
        Thing data PV_SOC    "SOC"        [ readStart="1014", readValueType="uint16"]
        Thing data von_netz  "von Netz"   [ readStart="1022", readValueType="uint16"]
        Thing data ins_Netz  "ins Netz"   [ readStart="1030", readValueType="uint16"]
    }
}
Nun läuft es...

Re: Modbus - kompatibel??

Verfasst: 25. Jun 2023 12:15
von mad-mike
kann man da noch einen 2ten Poller mit dran hängen?

Code: Alles auswählen

Bridge modbus:tcp:tcpBridge "PV Gateway"  [ host="192.168.178.198", port=502, id=1,   reconnectAfterMillis=1500 ] {
    Bridge poller inputPoller "PV Poller" [ start=1000, length=100, refresh=1500, type="input", cacheMillis=100] {
        Thing data Akku_watt "Akku"       [ readStart="1010", readValueType="uint16"]
        Thing data PV_SOC    "SOC"        [ readStart="1014", readValueType="uint16"]
        Thing data von_netz  "von Netz"   [ readStart="1022", readValueType="uint16"]
        Thing data ins_Netz  "ins Netz"   [ readStart="1030", readValueType="uint16"]
 }
    Bridge poller inputPoller "PV Poller2" [ start=0001, length=100, refresh=1500, type="input", cacheMillis=100] {
        Thing data PV_watt "PV"       [ readStart="0002", readValueType="uint16"]
        Thing data PV_Volt "PV_Volt"       [ readStart="0003", readValueType="uint16"]

}}
Der untere teil will nicht...


Code: Alles auswählen

2023-06-25 12:14:44.324 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'modbus:data:tcpBridge:inputPoller:PV_watt' changed from UNINITIALIZED to INITIALIZING

2023-06-25 12:14:44.335 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'modbus:data:tcpBridge:inputPoller:PV_watt' changed from INITIALIZING to OFFLINE (CONFIGURATION_ERROR): Out-of-bounds: Poller is reading from index 1000 to 1099 (inclusive) but this thing configured to read 'uint16' starting from element 2. Exceeds polled data bounds.

2023-06-25 12:14:44.340 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'modbus:data:tcpBridge:inputPoller:PV_Volt' changed from UNINITIALIZED to INITIALIZING

2023-06-25 12:14:44.350 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'modbus:data:tcpBridge:inputPoller:PV_Volt' changed from INITIALIZING to OFFLINE (CONFIGURATION_ERROR): Out-of-bounds: Poller is reading from index 1000 to 1099 (inclusive) but this thing configured to read 'uint16' starting from element 3. Exceeds polled data bounds.