FHEM Forum

FHEM => Sonstiges => Thema gestartet von: StefanStrobel am 12 Juli 2014, 14:50:22

Titel: Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 Juli 2014, 14:50:22
Hallo,

Anbei ein neues Modul für Geräte, die eine serielle Schnittstelle mit Modbus Protokoll haben.
Das ganze besteht aus zwei Teilen: einem Basismodul für die Schnittstelle und Modulen für die daran angeschlssenen Geräte.

Das Basismodul definiert auch Funktionen, die Module für die angeschlossenen Geräte nutzen können. So können Set- und Get-Befehle oder das zyklische Abfragen von Modbus-Registern alles über die Funktionen des Basismoduls gemacht werden. Das Modul für ein Gerät muss dafür nur eine Datenstruktur definieren, in der die Holding-Register des Geräts beschrieben werden.

Beispiel:

my %SET10parseInfo = (
"r256"  =>  { unpack => "n", # 0100 (holding register, hex address 0x0100)
defaultpoll => 1, # request this register in GetUpdate per default
name => "Pb1", # internal name of this register in the hardware doc
showget => 1, # make a get option visible
expr => '$val / 10', # conversion of raw value to visible value
reading => "Temp_Wasser_Ein"}, # name of the reading for this value

definiert ein Holding-Register mit der Adresse 256, in dem die Temperatur des Wassers beim Eintritt in eine Wärmepumpe ausgelesen werden kann. Das Basismodul interpretiert diese Daten und macht daraus ein Reading mit namen Temp_Wasser_ein, eine Get-Option für das Reading, Attribute zum Steuern ob das Register zuklisch abgefragt werden soll etc.


"r770"  =>  { unpack => "n", # 0302
defaultpoll => 1,
name => "ST03",
expr => '$val / 10',
setexpr => '$val * 10', # expression to convert a set value to the internal value
reading => "Temp_Soll",
showget => 1,
min => 5, # input validation for set: min value
max => 32, # input validation for set: max value
set => 1}, # this value can be set


definiert ein Reading mit namen Temp_Soll, das aus dem Holding-Register mit Adresse 770 gelesen werden kann. Das Basis-Modul macht daraus auch eine Set-Option, mit der das Register geschrieben werden kann, eine Eingabeprüfung mit Min- und Max-Wert sowie die dabei nötige Umrechnung.

Weitere Module für Modbus-Geräte sollten so fast ohne nennenswertes Programmieren erstellt werden können.

die Konfiguration am Beispiel der SET Silent 10 sieht dann beispielsweise folgendermaßen aus:


define ModbusRS485 Modbus /dev/ttyUSB1@9600
define PWP ModbusSET 5 60
attr PWP poll-Hysterese 1
attr PWP stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"Temp_Wasser_Ein",0))}


Bisher macht das Basismodul nur Modbus über serielle Leitungen. Modbus-TCP müsste noch ergänzt werden. Das Frame-Format unterscheidet sich dort ein kleines bischen. Ebenso sind bisher nur die wichtigsten Modbus-Function-Codes für Holding-Register implementiert. Für Coils und Inputs müssen sie noch ergänzt werden. Da meine Wärmepumpe alles über Holding-Register abbildet, fehlt mir hier leider das Equipment zum Testen.

Modbus.pm ist das Basismodul
ModbusSET.pm ist ein Modul für die SET Silent 10 Wärmepumpe und ähnliche, die die Steuerung iChill IC121 von Dixell verwenden. Die Pumpe wird auch von Topras unter dem Namen Top10Silent angeboten.

Es würde mich freuen wenn jemand auf dieser Basis weitere Module für Geräte mit Modbus-Schnittstelle bauen kann. ModbusSET.pm sollte gut als Kopiervorlage verwendbar sein. Patches als Vorschläge zur Erweiterung von Modbus.pm für ModbusTCP oder Coils und Inputs werden ebenfalls gerne genommen.

Gruss
   Stefan

Edit 13.2.15: removed attached old versions

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 17 Januar 2015, 12:09:43
Hallo Stefan,
ich habe einen Stromzähler SDM630M von B+G E-Tech & EASTON erworben. Dieser hat auch eine Modbus Schnittstelle.
Ich habe vor, auf Deinen Vorarbeiten aufsetztend, ein 98_ModbusSDM630M.pm zu schreiben. Aber auch die 98_Modbus.pm muss angepasst werden, da z.B. Modbus function code 4 verwendet wird.
Bist Du hier noch aktiv?

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 18 Januar 2015, 09:26:31
Hallo Roger,

ja, ich bin da noch aktiv und freue mich wenn ich nicht der einzige bin. Ich würde gerne die fehlenden function codes und auch modbus TCP ergänzen. Da ich das selbst aber nicht testen kann, habe ich es erst mal hinten angestellt und gewartet ob es auch jemand brauchen kann.
Möchtest Du Deine Erweiterungen als Diff schicken oder soll ich die Ergänzung machen?

gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 18 Januar 2015, 12:12:50
Hallo Stefan,
schön zu hören, dass Du hier noch aktiv bist. Ich finde es gut, wenn es ein Basismodul für Modbus gibt. So kann jemand mit mehreren verschiedenen Modbus Geräten alle über einen BUS abfragen/steuern.
Ich schlage folgene Zusammenarbeit vor:
- ich schaue erst mal, dass ich Daten von meinen Stromzähler lesen und interpretieren kann
- wir stimmen neue Anforderungen von "meinem" Gerät gemeinsam ab
- ich erstelle 98_ModbusSDM630M.pm
- Du baust die nötigen Änderungen in 98_Modbus.pm ein
- ich teste mit dann die Funktionalität mit SDM630M


derzeitiger Stand:
- habe in 98_Modbus.pm ModbusSDM630M als Client-Modul aufgenommen
- habe in 98_Modbus.pm Formatierungen zu besseren Verständnis meinerseits vorgenommen
- habe in 98_Modbus.pm etliche print-Befehle eingefügt, damit ich direkt auf der cmd sehe, was passiert
- habe in 98_Modbus.pm object types "r" auf modbus function code "4" umgebogen
- habe in 98_Modbus.pm, sub "Modbus_ParseFrames" die Behandlung von "$fCode==4" eingefügt
- nachdem ich die 120 Ohm Abschlusswiderstände entfernt habe, bekomme ich von SDM630M nun auch Antworten  :)


Nun will ich die Konvertierung der empfangenen Daten (Spannung, Strom) hinbekommen. Die sind nach IEEE754 floating-point numbers, welche als 4 Bytes übertragen werden.


SDM630M unterstützt folgende Modbus-Befehle:
Read Holding Registers     -> function code 3  -> in 98_Modbus.pm parseInfo "r" (Register)
Read Input Registers        -> function code 4  -> in 98_Modbus.pm noch nicht implementiert
Diagnostics                      -> function code 8  -> ich denke Unterstützung benötigen wir nicht
pre-set multiple Registers -> function code 16 -> in 98_Modbus.pm noch nicht implementiert


Frage: Wie soll die Kodierung function code 4 und 16 umgesetzt werden? Derzeit ist folgendes vorgesehen:
my %fCodeMap = (
"read:c" => 1,
"read:i" => 2,
"read:r" => 3,
"write:c" => 5,
"write:r" => 6,
);


Leider ist "i" für input register schon vergeben (oder kannst Du das ändern?).
Dann würde ich gern die Registeradressen in SDM630MparseInfo in HEX eingeben. Wie lässt sich das umsetzten.

So das reicht erst mal. schönes Restwochenende wünscht Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: ChrisD am 18 Januar 2015, 18:48:59
Hallo,

Für die Konvertierung der Floats kannst du dich vielleicht bei den Modulen von https://github.com/ChrisD70/FHEM-Modules (https://github.com/ChrisD70/FHEM-Modules) inspirieren. Diese enthalten Code sowohl für Float-Zahlen im Big-Endian wie auch im Little-Endian Format.

Bei Big-Endian z.B. lässt sich die Zahl mit
$float=unpack "f", pack "L", ($reg0<<16)+$reg1;
umwandeln, wobei $reg0 und $reg1 2 aufeinanderfolgende Register sind.

Grüße,

ChrisD
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 18 Januar 2015, 21:00:14
Hallo,

Zitat
Ich schlage folgene Zusammenarbeit vor:
- ich schaue erst mal, dass ich Daten von meinen Stromzähler lesen und interpretieren kann
- wir stimmen neue Anforderungen von "meinem" Gerät gemeinsam ab
- ich erstelle 98_ModbusSDM630M.pm
- Du baust die nötigen Änderungen in 98_Modbus.pm ein
- ich teste mit dann die Funktionalität mit SDM630M
klingt vernünftig.

Zitat
derzeitiger Stand:
- habe in 98_Modbus.pm ModbusSDM630M als Client-Modul aufgenommen
- habe in 98_Modbus.pm Formatierungen zu besseren Verständnis meinerseits vorgenommen
- habe in 98_Modbus.pm etliche print-Befehle eingefügt, damit ich direkt auf der cmd sehe, was passiert
- habe in 98_Modbus.pm object types "r" auf modbus function code "4" umgebogen
- habe in 98_Modbus.pm, sub "Modbus_ParseFrames" die Behandlung von "$fCode==4" eingefügt
Das mit dem $modHash->{Clients} ist in diesem Fall vermutlich sogar überflüssig, da ich nicht das normale 2-stufige Modell verwendet habe. Bei modbus hat das keinen Sinn / Mehrwert gebracht. Man muss ja an der Nachricht nicht erst parsen, für welchen Client die Nachricht ist. Da Fhem der Master ist, ist vom Request her schon vorgegeben, welcher Client gleich drankommt und zudem ist der Client hier fast nur noch ein Pseudo-Modul, das die Datenstruktur zum Parsen füllt. Aber zu Doku-Zwecken hab ich es damals dringelassen :-)

Für das Debugging hab ich mir angewöhnt Log3-Aufrufe mit Level 5 einzubauen und dann in einem zweiten Fenster einen tail -f auf dem Fhem-Logfile offen zu haben. Das hat den Vorteil, dass man nicht alle Print-Aufrufe später wieder entfernen muss und auch später spontan debuggen kann, indem man das verbose-Level je Gerät auf 5 erhöht.

Zu der Map, die vom Lesen/Schreiben und Typ der Daten auf den Function code verweist:

my %fCodeMap = (
"read:c" => 1,
"read:i" => 2,
"read:r" => 3,
"write:c" => 5,
"write:r" => 6,
);


da hatte ich "i" für die discrete inputs zugewiesen, aber da ich die bisher noch gar nie verwendet habe, können wir auch gerne daraus ein "d" machen und dann "i" für die input register verwenden und auf function code 4 verweisen: "read:d" => 2 und "read:i" => 4.

Bei dem 16er code bin ich mir noch nicht ganz sicher wie das am elegantesten zu machen ist. Wenn jedes Gerät den unterstützen würde, könnte man vermutlich generell 16 statt 6 verwenden. Nur das wird nicht immer so sein. Die Idee von der fCodeMap war eigentlich, dass man vom fcode abstrahieren kann und dass das Modul das automatisch richtig macht. Da das aber nicht eindeutig ist, war das so evt. keine gute Idee. Eventuell könnte man auch die fCodeMap abschaffen und statt dessen im Client-Modul ein Flag setzen, welche function codes das jeweilige Gerät unterstützt und dann im Modbus-Modul-Code entscheiden, welcher function code von den unterstützten am elegantesten ist. Bei 4-Byte floats ist 16 vermutlich besser als 6.
Da die function codes 3,4,6,16, 22 und 23 nach meiner Doku die gleichen Registertypen betreffen, wäre das austauschbar ...

Ob man die Adressen in Dezimal oder Hex angibt, ist eigentlich nur eine Geschmacksfrage. Nur müsste man dann entweder nochmal eine weitere Kennzeichnung in den Key des parseInfo hashes einbauen (z.B. rx0a - mit einem extra x) aber das macht die Verarbeitung nachher nicht schneller, oder man ändert die Struktur komplett.
Die idee war hier, dass man beim Parsen der gelesenen Register schnell auf die zuständige Parse-Info zugreifen kann:

my $key = "r$startAdr";
if (defined($parseInfo->{$key})) {
...


Was die float-Typen angeht, so sollten wir erst mal schauen, ob die Formate irgendwie mit f>, f< etc. kompatibel sind. Laut Perldoc kann es da trotz IEEE viele Varianten geben. Im Idealfall funktioniert es direkt wenn in der ParsInfo der richtige unpack-Code eingetragen wird. Kommt aber darauf an, wie Dein Gerät das codiert und sollten wir erst mal prüfen.

Ich werde in den nächsten Tagen leider kaum zum Programmieren kommen, aber sobald ich wieder dazu komme, schau ich mir das im Detail noch genauer an und poste dann eine erweiterte Version des Moduls.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 19 Januar 2015, 19:54:41
Hi Stefan,
bin am WE weitergekommen. Ich kann jetzt die Input Register mit $fCode==4 auslesen und auch richtig konvertieren.
Ist mir mit:
$val = unpack("f",reverse($rest));
in sub Modbus_ParseRegs gelungen. Es werden 4 Byte übergeben, welche mit dem obigen Befehl dann richtig dekodiert werden. Die Dekodierung habe ich erst mal hart in 98_Modbus.pm eingebaut. Bitte überlege Dir hier eine passende Umsetzung.


Definition %SDM630MparseInfo z.B.

"i000"  =>  {                                 # input register 0x0000, Phase 1: Spannung
unpack => "f", # IEEE 754 floating-point numbers
expr => 'sprintf("%.1f",$val)', # conversion of raw value to visible value
defaultpoll => 1, # request this register in GetUpdate per default
name => "P1_V", # internal name of this register in the hardware doc
showget => 1, # make a get option visible
reading => "P1_V" # name of the reading for this value
},

Den expr mir sprintf habe ich eingefügt, da Fließkommazahlen mit zu vielen Nachkommastellen entstehen. Diese belegen nur Platz, machen es unübersichtlich und bringen keinen genaueren Wert (<Meßfehler). Vielleicht kannst Du in parseInfo etwas einbauen, was dieses kürzer ermöglicht (expr ist ja eigentlich für was anderes gedacht).
Mit der dezimalen Registerangabe bin ich doch hingekommen --> hex ist nice to have  :)

Vielleicht überlegst Du Dir, wie mal in welchem Modul die function codes und die Dekodierung definiert. Vielleicht macht es ja Sinn hier einiges in die Device-Module (z.B. die %fCodeMap) zu verlagern und nur die grundlegende Kommunikation uns Steuerung im Basis-Modul zu machen.
Zitatda hatte ich "i" für die discrete inputs zugewiesen, aber da ich die bisher noch gar nie verwendet habe, können wir auch gerne daraus ein "d" machen und dann "i" für die input register verwenden und auf function code 4 verweisen: "read:d" => 2 und "read:i" => 4.
Heisen die Register bei Deinem Gerät auch Holding und Input register? Dann kann mal vielleicht h und i verwenden.


Als nächstes werde ich mich dem Auslesen der Holding Registern mit $fCode==3 und dem Beschreiben $fCode==15 oder 16 (unterschiedliche Angaben in der Doku) widmen (wohl erst nächstes WE).


Ich berichte, wenn ich weiter bin und stehe dann für gemeinsame Weiterentwicklung und Tests zu Verfügung  :).
Danke für den Tip tail -f (lag schon zu lange zurück  :()
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: avg123-de am 19 Januar 2015, 21:11:00
Hallo zusammen,

ich habe schon seit einiger Zeit vor, einen Stromzähler in FHEM zu integrieren und dachte die ganze Zeit immer wieder an S-Zähler, bis ich auf die Stromzähler mit RS485 gestoßen bin und per Zufall diesen Thread gelesen habe: http://forum.fhem.de/index.php?topic=32354.0

Meine Frage ist, da mein Sicherungskasten und der FHEM-Server ein ganzes Stück auseinander sind und ich in der Hinsicht eigentlich immer relativ flexibel bleiben möchte, was die Positionierung angeht, ob dieses Modul in Zukunft auch die Anbindung über Ethernet unterstützen wird, da dies für mich ausschlaggebend ist.

viele Grüße
Alexander
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 19 Januar 2015, 22:29:04
Hallo Alexander,
also ich werde nichts mit Modbus über TCP/IP machen, da Modbus RS485 mit geschirmter Zweidrahtleitung bis 1200m gehen soll.
Aber Stefan schrieb, dass er sein Modbus-Basismodul 98_Modbus.pm eventuell um IP erweitern will.
ChrisD verweist weiter unten auf https://github.com/ChrisD70/FHEM-Modules (https://github.com/ChrisD70/FHEM-Modules), wo ich ein 36_ModbusTCPServer.pm sehe. Vielleicht schaust Du Dich da auch mal um.
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 22 Januar 2015, 21:15:29
Hallo Roger,

Zitat von: Roger am 19 Januar 2015, 19:54:41
Hi Stefan,
bin am WE weitergekommen. Ich kann jetzt die Input Register mit $fCode==4 auslesen und auch richtig konvertieren.
Ist mir mit:
$val = unpack("f",reverse($rest));
in sub Modbus_ParseRegs gelungen. Es werden 4 Byte übergeben, welche mit dem obigen Befehl dann richtig dekodiert werden. Die Dekodierung habe ich erst mal hart in 98_Modbus.pm eingebaut. Bitte überlege Dir hier eine passende Umsetzung.

versuch doch bitte mal im ParseInfo Hash bei unpack "f>" anzugeben. Bei mir (auf einem Raspberry) kommt dann das gleiche heraus wie bei einem unpack("f",reverse($rest)) und es wäre gar keine Code-Änderung nötig.

"i000"  =>  {                                 # input register 0x0000, Phase 1: Spannung
unpack => "f>", # IEEE 754 floating-point numbers - big endian notation
expr => 'sprintf("%.1f",$val)', # conversion of raw value to visible value


im Code bleibt dann das generische:

my $unpack  = $parseInfo->{$key}{unpack};
my $val = unpack ($unpack, $rest);


für die Format-Angabe würde ich vorschlagen, einen weiteren Hash-Key einzuführen (ähnlich habe ich das im FReplacer Modul über Attribute gelöst):

    format => "%.1f",



Zitat
Vielleicht überlegst Du Dir, wie mal in welchem Modul die function codes und die Dekodierung definiert. Vielleicht macht es ja Sinn hier einiges in die Device-Module (z.B. die %fCodeMap) zu verlagern und nur die grundlegende Kommunikation uns Steuerung im Basis-Modul zu machen.

Die CodeMap ins Device-Modul zu verlegen wäre vermutlich die einfachste Lösung um zu definieren, welche function codes eine Modbus-Implementation zum Schreiben von Registern unterstützt. Da der Stromzähler hier den naheliegenden Code 6 nicht implementiert, sondern nur den 16er, müsstest Du dann nur in dem Hash eine Zahl ändern. Gefällt mir fast besser als für jedes Register individuell die zu verwendenden codes anzugeben (das wäre zwar noch flexibler, aber vermutlich unnötig aufwändig).

Zitat
Heisen die Register bei Deinem Gerät auch Holding und Input register? Dann kann mal vielleicht h und i verwenden.



Ich hab gar keine Doku für die SET Wärmepumpe sondern habe mich an den Modbus-Standard Dokus orientiert:
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
Wir können aber gerne "h" und "i" nehmen.

In den ParseInfo Hash muss ich auf jeden Fall auch noch einen "Len" Key einbauen. Deine Werte gehen ja über zwei Register. Ich vermute Du hast das erst mal fest als 2 in den Code eingebaut.

Die Dekodierung würde ich im Modbus-Modul lassen. Das sollte alles generisch funktionieren und nicht vom Gerät abhängen.

Ich hoffe ich komme demnächst mal dazu wieder etwas zu programmieren. Diese Woche sieht es schlecht aus.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 25 Januar 2015, 22:00:29
Hallo Roger,

anbei mal ein neuer Zwischenstand. Ich habe bei der Überarbeitung auch einige intere Details überarbeitet, Altlasten entfernt (undokumentierte Scan-Funktion) und Übergabeparameter an Funktionen optimiert.
Die Schnittstelle nach Aussen für logische Module hat sich nur so wie bereits diskutiert geändert (r->h, fCodeMap ins logische Modul etc.)
Ich hoffe Du kommst damit klar.

Gruss
   Stefan

Edit 13.2.15: removed attached old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 26 Januar 2015, 21:14:38
Hallo,

hier noch mal ein neuerer Stand. Jetzt ist auch "format" als key im parseInfo Hash drin und der function code 16 kann getestet werden.
Zudem habe ich weitere Fehler bei Handling von Datentypen beseitigt und die Funktion zum Parsen von gelesenen Registern optimiert, so dass der "len" key ausgewertet wird. Bei Float-Werten, die über zwei Register gehen, muss len => 2 gesetzt werden und unpack => "f>".
Beispiele / Kommentare zum Aufbau der ParseInfo stehen im ModbusSET Beispiel-Client-Modul

Gruss
   Stefan

Edit 13.2.15: removed attached old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 26 Januar 2015, 21:25:30
Hi Stefan,
am WE habe ich den Zähler im Zählerkasten eingebaut (vorher war er neben mir nur über einen Stecker testweise an einer Phase angeschlossen). Nun liefert er Werte von allen drei Phasen  :). Mit dem Schreiben zum Zähler habe ich mich noch nicht beschäftig.

Ich versuche gerade Deine neue Version zum fliegen zu bekommen.
Frage: Wie kann ich die Länge beim Lesen definieren (ich muss ja zwei Register hintereinander lesen)? Du hast das was vorgesehen, aber ich blicke es nicht. Habe es erst mal fest in 98_Modbus.pm auf zwei geändert  :(

Ich habe mein Modul in 98_Modbus.pm mit:
$modHash->{Clients} = ":ModbusSET:ModbusSDM630M:"; # Roger
registriert. Ist das notwendig? Müsstes Du es dann für jede Erweiterung tun?

Das entpacken mit unpack    => "f>" funktioniert!  :). Sehr schön, das macht es einfacher.


Also bis auf die Länge geht alles. $fCode=3 und auch $fCode=4. Klasse!   8)

Nun zu den Erweiterungen/Wünschen:
Zitatfür die Format-Angabe würde ich vorschlagen, einen weiteren Hash-Key einzuführen (ähnlich habe ich das im FReplacer Modul über Attribute gelöst):
Code: [Auswählen]

    format => "%.1f",
1. Das mit dem angedachten Format hast Du noch nicht eingebaut?
2. Hast Du Dir schon mal Gedanken zu Einheiten von Werten gemacht? Ich habe hier jede Menge: V, A, W, VA, ...
    Vielleicht kann man die bei den Readings mit angeben. Wenn man ein leerzeichen dazwischen hat, so müssten auch die
    Plots weiter die Wert extraieren, oder? Ev. gibt dann ReadingsVal Probleme, aber es gibt ja das neue ReadingsNum
3. Über defaultpoll=> 1 werden Werte zyklisch ausgelesen - alle mit dem gleichen Zyklus. Einige Werte möchte ich
    gern häufiger lesen, als andere. Hast Du hier Ideen?
4. Wenn das Modul mit einem Intervall gestartet wurde, so gehen manuelle get-Befehle werden timeout häufig nicht
5. Auch ohne Intervall, kann ich nicht nicht mehrere gets absetzten --> z.B. Timeout reading answer for Sum_A

So das reicht erst mal. Vielen Dank für Deine Mühen.
Roger

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 26 Januar 2015, 22:38:37
Hallo Stefan,
unsere Antworten haben sich überschnitten. Habe die neue Version getestet.


--> Len nun verstanden  ::) und es funktioniert  ;)


$modHash->{Clients} = ":ModbusSET:ModbusSDM630M:"; ist notwendig, sonst funktioniert mein Client Modul nicht. D.h. Du musst jedes neue Client-Modul bei Dir einpflegen.


format klappt auch --> Danke

Fragen 2 - 5 sind noch offen  :D
6. Ich musste bei jedem Register in SDM630MparseInfo die Zeile:
len => 2,# float value, Länge 2 (2 registers / 4 bytes)
einfügen. Kann man das nicht einmal pro Type in %fCodeMap machen?

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 27 Januar 2015, 17:35:28
Hallo Roger,

zu 2) - Einheiten bei Readings. Das Thema wurde schon oft Diskutiert. Siehe http://forum.fhem.de/index.php/topic,18238.msg121212.html#msg121212

zu 3) - unterschiedliche Poll-Zyklen. Was für Zyklen möchtest Du denn verwenden? Ich würda da eher einen sinnvolen Wert für alles suchen und dann gegebenenfalls das Modbus-Modul so optimieren, dass Werte, die man auf einem Schlag lesen kann, auch gemeinsam gelesen werden. Mit function code 3 kann man z.B. bis zu 125 Register lesen, sofern sie nacheinander stehen. Einzelne timer je Reading würden das Konstrukt ziemlich aufblasen.

zu 4 und 5) - timeouts etc. Das kann daran liegen, dass Dein Zähler größere Pausen zwischen zwei Befehlen braucht. Da sollte Dein Modul die Attribute minSendDelay und minCommDelay anbieten. Das Modbus-Modul berücksichtigt die dann bei der Verarbeitung der send-queue. Das kannst Du Dir aus ModbusSET abschauen:

  $modHash->{AttrList}= "do_not_notify:1,0 " .
        "timeout " .
        "minSendDelay " .
        "minCommDelay " .
        $modHash->{pollList} .      # Def der zyklisch abzufragenden Nachrichten
        $readingFnAttributes;


zu 6) - Default-Werte für Keys in der parseInfo, z.B. len. Da überleg ich mir noch eine elegante Variante, wie man Defaults setzen kann. Das könnte auch für format interessant sein, wenn man nur floats hat.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 27 Januar 2015, 21:13:40
Hallo Stefan,
zu 2: Ja, wurde schon oft diskutiert. Aber was machen wir? Für jedes Register in parseInfo eine Eigenschaft Unit angeben können und im Reading mit Leerzeichen getrennt dranhängen? ReadingsNum zum Auslesen verwenden?

zu 3: Mein Zähler liefert Strom, Spannung, Verbrauch in W, Verbrauch in VA, Phasenverschiebung und noch mehr für jede der 3 Phasen und noch verschiedenen Durchschnitts- und Summenwerte. Der Zähler kann laut Doku 40 Werte (80 Register) mit einer Abfrage liefern - also Unterschied zu Deinem Modbus Gerät. Wenn Du in die Richtung "Auslesen mehrere Werte in einen Read" geht, sollte hier die Anzahl konfigurierbar sein.
Nun zu meinem Ansinnen der unterschiedlichen Zeiten: Verbräuche sind z.B. wichtiger als Phasenverschiebung oder Durchschnitts- und Summenwerte. Die Verbräuche will ich genauer sehen -> also öfter auslesen. Meine Idee war hier: Angabe, ob Werte in jeden Durchlauf, jeden zweiten, oder nur jeden x-ten Durchlauf ausgelesen wird. Dann könnte ich den Zyklus auf 15s stellen. Derzeit dauert ein Durchlauf zu lange, als das ich alle (fast 100) Register bei 60s Zyklus auslesen kann. (Bin allerdings noch mit 9600Baud unterwegs.)

zu 4: Die Attribute:  "timeout ",  "minSendDelay ", und "minCommDelay " kennt auch mein Modul, da ich einfach Dein ModbusSET als Vorlage genommen habe  :).
Folgendes Szenario: Device-Modul wurde mit zyklischer Abfrage gestartet. Ich kann keinen einzelnen get-Befehl ohne Fehlermeldung timeout absetzte, wenn der die Werte gerade zyklisch abgefragt werden.

zu 5: Device-Modul wurde ohne zyklischer Abfrage gestartet. Fehlermeldung timeout, wenn ich 3 get-Befehle über Telnet absetzte (minSendDelay & minCommDelay = Default). Werte zu den Abständen habe ich keine in der Doku gefunden. Der Zähler arbeitet aber halbduplex.

zu 6: konfigurierbare Defaults finde ich prinzipiell gut, insbesondere für format. Allerdings ist len eher eine Eigenschaft für %fCodeMap und nicht für die einzelnen Register. Bei meinem Stromzähler ist len generell 2. Wer aber ein Modbus-Gerät mit verschiedenen Längen der in %fCodeMap definierten Befehlsarten hat, der tippt sich den Wolf  :(

7. Würde Dein Basis-Modul auch mit der Verarbeitung von zwei unterschiedlichen Modbus-Geräten an einem Bus zurechtkommen? Die %fCodeMap Definition heißt ja im Device-Modul immer gleich.

Vielen Dank. Gute Nacht - bis bald
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 28 Januar 2015, 08:05:55
Hallo Stefan,

ich versuche mich gerade darin ein Modul für einen Energiemonitor UMG103 von Janitza machen. Soweit funktioniert das schon mal. Es ist schon einige der Verfügbaren und wichtigen Variablen drin, aber längst noch nicht alle. Zum testen reicht es aber.

Die Probleme mit dem Timeout bei einzelnen GET oder SET habe ich auch.

Das Modul habe ich angehängt.

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 28 Januar 2015, 22:20:57
Hallo Roger und Denis,

Ich habe die Ursache für die Timeouts gefunden. Leider komme ich aber frühestens am Wochenende dazu das Problem zu fixen.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 29 Januar 2015, 21:34:41
Hallo Denis,
willkommen im Modbus-Club  ;D. Mann mit Janitza hast Du ja ein feines Gerät.
Ich habe mir mal die Bezeichnungen in Deinem Device-Modul angeschaut und meines so ähnlich gemacht. Habe auch noch nicht alle Register eingetragen.
Die Zeile 49 my %SET10parseInfo = ( habe ich an den Gerätenamen angepasst (ist auch nochmal in Zeile761 relevant).
Ich habe gesehen, dass Du die Einheiten in format => '%.1f Wh', angegeben hast. Kommen die auch in den Readings an? Habe ich probiert, bei mir nicht  :(.
Anbei mal mein Device-Modul.

@Stefan: keine Eile, Grundfunktionen laufen ja  :)

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 30 Januar 2015, 08:12:01
Hallo Roger,
format => '%.1f Wh',
funktioniert, siehe Anhang. Die Bezeichnungen habe ich aus der Modbus-Adressenliste des Gerätes übernommen. Ich werde es wohl nicht alle Adressen mit einbauen, das wird zu viel.

gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 01 Februar 2015, 11:53:59
Hallo Roger und Denis,

anbei ein neuer Zwischenstand. Das Problem mit den Timeouts sollte behoben sein, wenngleich ein Timeout prinzipiell natürlich trotzdem mal auftreten kann.
Ich habe einiges an den Strukturen geändert. Statt der fCodeMap gibt es jetzt ein devicveInfo Hash, in dem die function codes und diverse default-Werte eingestellt werden können.
Ich denke wenn Ihr das ModbusSET Modul anseht, sollte klar sein, wie es gemeint ist.
Defaults für timeouts und delays könnt Ihr darüber jetzt auch festlegen.
Auch Defaults für Längen, Unpack und Format. Das kann man dann in der parseInfo weglassen, wenn der Default genommen werden soll.

Da verschiedene read function codes mehrere Register auf einmal lesen können, könnt Ihr im deviceInfo Hash angeben, wie viele maximal bei getUpdate auf einmal gelesen werden können
(combine). GetUpdate versucht dann die read function codes zu optimieren / kombinieren.

Gruss
   Stefan

Edit 13.2.15: removed attached old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 01 Februar 2015, 16:13:01
Hallo Stefan,
vielen Dank. Bin am testen. Bisher keine timeouts.  :D
Das mit dem devicveInfo finde ich Klasse, insbesondere die Defaults für parseInfo.



zu 2: (Einheiten): Nutze format dafür ('%.1f V' für Volt). Der ist dann aber fast bei jedem Register anders, so dass der Default hier nichts nützt  :(
Willst Du noch etwas eigenes nur für Einheiten einbauen?
@Denis: Einheiten werden nun auch bei mir in den Attributen angezeigt. Ursache bei Nichtanzeige war event-on-change-reading
#attr HA_SDM630M_1 event-on-change-reading .*:.2   # Einheiten verschwinden im Reading
attr HA_SDM630M_1 event-on-change-reading .*      # Einheiten werden angezeigt




zu 3: (unterschiedliche Zykluszeiten): Halte ich für sinnvoll, da ich fast 100 Register auslese, einige aber nicht so häufig brauche. Der Zähler von Denis hat auch Tonnen von Registern
Willst Du noch was in Richtung unterschiedliche Abfragezyklen tun?



zu 4&5: (timeouts): timeouts sind bisher nicht mehr aufgetreten, auch ein get , wenn gerade eine Abfragezyklus läuft, funktioniert Ohne Probleme. Ich habe combine => 10 eingestellt. erledigt!



zu 6: (Len, Defaults): mit devicveInfo erledigt  :D



zu 7: (mehrere Devices): Denis hat die Namen so wie in 98_ModbusSET gelassen, ich habe die geändert, da ich Deinen Namen SET auf meinen anpassen wollte:
sub
ModbusSDM630M_Initialize($)
{ my ($modHash) = @_;
require "$attr{global}{modpath}/FHEM/98_Modbus.pm";
$modHash->{DefFn}     = "ModbusSDM630M_Define";
$modHash->{UndefFn}   = "ModbusSDM630M_Undef";
$modHash->{SetFn}     = "ModbusLD_Set"; # provided by physical module
$modHash->{GetFn}     = "ModbusLD_Get"; # provided by physical module
$modHash->{parseInfo} = \%SDM630MparseInfo;
$modHash->{deviceInfo} = \%deviceInfo; # map that defines properties of the device like

Dann muss ich mich auch als Client im Basismodul eintragen.
Wie ist das gedacht? Wie soll die Abfrage unterschiedlicher Modbus-Geräte über einen Bus funktionieren?

Wie gesagt es funktioniert alles zufriedenstellend. Fragen oben sich Sahnehäubchen. :D
Werde mich demnächst mal dem Schreiben zum Gerät widmen.
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 01 Februar 2015, 21:06:01
Hallo Roger,

Das mit den Einheiten im Reading halte ich nicht für eine gute Idee. Bei der Weiterverarbeitung, beim Plotten etc. wird das ungeschickt. Es gibt im Wiki auch eine Entwicklungsrichtlinie, in der explizit steht
Zitat
Readings enthalten grundsätzlich genau einen Wert und diesen ohne Einheit.

Für die Abfragezyklen wäre die einfachste Lösung in der ParseInfo je Reading ein minInterval anzugeben.
Die getUpdate Funktion, die mit einem Basisintervall aufgerufen wird, würde dann nur die Werte abfragen, bei denen minInterval abgelaufen ist. Die Intervalle wären dann effektiv immer Vielfache des Basisintervalls.

Zur Clientliste: Ich könnte in der nächsten Version die Clientliste abschaffen und das mit der IODevice-Zuordnung anders lösen. Ich schau mir das bei nächster Gelegenheit noch mal an.

Wegen mehrerer Geräte am selben Bus: das sollte einfach funktionieren ;-)
Jedes Gerät hat eine eigene Id und das Basismodul speichert die Zuordnung.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 02 Februar 2015, 13:13:39
Hallo Stefan,

kurze Rückinfo. Ich habe die neue Version getestet.

Habe im deviceInfo   combine=>50 eingestellt - funktioniert.
write=>6 und 16 habe ich geteste, bei beiden bekomme ich immer ein Timeout.

gruß Denis

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 02 Februar 2015, 14:44:00
Hallo Denis,

Function Code 6 funktioniert bei meiner Wärmepumpe ohne Probleme. Setz doch mal verbose bei Deinem Modul und dem Basismodul auf 5 und schick den relevanten Teil aus dem Log. Vielleicht sieht man da ja was.
Eigentlich sollte ein Gerät zumindest eine Fehlermeldung zurücksenden ...

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 03 Februar 2015, 20:44:33
Hi Stefan,
habe mich mal dem Schreiben gewidmet. Bekomme: got exception code 313434 / 01  :(
Versuche mit Modbus protocol function code 16 zu schreiben (allerdings steht an anderer Stelle der Doku was von 15  >:()

Hier das Log:

2015.02.03 20:14:56 5: HA_SDM630M_1: Set found option Demand_Period__minutes in setHash created from parseInfo data
2015.02.03 20:14:56 5: HA_Modbus_1: Add frame to queue: 0110000200000008e8, force send
2015.02.03 20:14:56 5: HA_SDM630M_1: _Send: creating new queue
2015.02.03 20:14:56 5: HA_Modbus_1: handle send queue, force
2015.02.03 20:14:56 4: HA_Modbus_1: handle queue sends frame: 0110000200000008e8 (fcode 16 to 1)
2015.02.03 20:14:56 5: SW: 0110000200000008e8
2015.02.03 20:14:56 5: HA_SDM630M_1: ReadAnswer called and remaining timeout is 1.99733996391296 requested reading is Demand_Period__minutes
2015.02.03 20:14:56 5: SetSilent ReadAnswer got: 01
2015.02.03 20:14:56 5: SetSilent ReadAnswer got: 0190
2015.02.03 20:14:56 5: SetSilent ReadAnswer got: 019001
2015.02.03 20:14:56 5: SetSilent ReadAnswer got: 0190018d
2015.02.03 20:14:56 5: SetSilent ReadAnswer got: 0190018dc0
2015.02.03 20:14:56 5: HA_Modbus_1: ParseFrames got: 0190018dc0
2015.02.03 20:14:56 4: HA_Modbus_1: ParseFrames: fcode 144 from 1, data 01 calc crc = 49293, read = 49293 expect 16 from 1 for module HA_SDM630M_1
2015.02.03 20:14:56 5: HA_Modbus_1: read got error code 313434 / 01
2015.02.03 20:14:56 5: HA_SDM630M_1: ReadAnswer done, err = got exception code 313434 / 01

Verstehe die Anwort 313434 nicht, eher müsste es 9001 (siehe oben 2015.02.03 20:14:56 5: HA_Modbus_1: ParseFrames got: 0190018dc0) heisen. Dieses würde dann: "The function code is not supported by the product" bedeuten. Werde es später mal mit fcode=15 testen.


zu 2: (Einheiten):
ZitatDas mit den Einheiten im Reading halte ich nicht für eine gute Idee. Bei der Weiterverarbeitung, beim Plotten etc. wird das ungeschickt. Es gibt im Wiki auch eine Entwicklungsrichtlinie, in der explizit steht
OK, habe ja auch Probleme mit
attr HA_SDM630M_1 event-on-change-reading .*[b]:.2[/b] gehabt. Aber wozu wurde dann ReadingsNum eingeführt? Und Plos sind kein Problem. Und nun?


zu 3: (unterschiedliche Zykluszeiten): noch offen


zu 7: (mehrere Devices):
ZitatWegen mehrerer Geräte am selben Bus: das sollte einfach funktionieren ;-)
Jedes Gerät hat eine eigene Id und das Basismodul speichert die Zuordnung.
Ja technisch funktioniert das prima. Ich weiss nur nicht, was Dein Basismodul sagt, wenn sich mehrere Device-Module (klar mit unterschiedlichen IDs) bei ihm anmelden. Klappt die Zuordnung der unterschiedlichen %deviceInfo, %parseInfo, Namen der SUBs usw.? Ich hänge noch mal mein aktuelles Device Module an. Vielleicht definiert Du mal zusätzlich zu Deinem Gerät -> meinen Zähler und schaust Dir die Logs an und ...


8: Fehlermeldungen beim Schreiben (siehe oben)



Hoffentlich nerven Dich meine Aufzählungen nicht so sehr  :-[. Ich will nur den Überblick behalten  :D.
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 04 Februar 2015, 20:06:45
Hallo Stefan,
habe mit dem Schreiben weitergemacht. fcode=16 ist richtig (nicht 15), aber das von 98_Modbus.pm generierte Schreib-Kommando scheint falsch zu sein.
Ein Schreiben auf Register 2 mit
set HA_SDM630M_1 Demand_Period__minutes 60
erzeugt folgendes Log:
2015.02.04 19:59:34 5: HA_SDM630M_1: Set found option Demand_Period__minutes in setHash created from parseInfo data
2015.02.04 19:59:34 5: HA_Modbus_1: Add frame to queue: 01100002000061c9, force send
2015.02.04 19:59:34 5: HA_SDM630M_1: _Send: creating new queue
2015.02.04 19:59:34 5: HA_Modbus_1: handle send queue, force
2015.02.04 19:59:34 4: HA_Modbus_1: handle queue sends frame: 01100002000061c9 (fcode 16 to 1)
2015.02.04 19:59:34 5: SW: 01100002000061c9
2015.02.04 19:59:34 5: HA_SDM630M_1: ReadAnswer called and remaining timeout is 1.99713921546936 requested reading is Demand_Period__minutes
2015.02.04 19:59:36 3: HA_SDM630M_1: Timeout2 in ReadAnswer for Demand_Period__minutes
2015.02.04 19:59:36 1: Perfmon: possible freeze starting at 19:59:35, delay is 1.031
2015.02.04 19:59:36 4: HA_Modbus_1: timeout waiting for 16 from 1, Request was 01100002000061c9, last Buffer: 01030442700000ef90

Wenn ich das richtig sehe, so ist das erzeugte Kommando unvollständig/falsch:

Field Name  Hex-erwartet   Hex-98_Modbus.pm
Slave Address        01      01
Function             10      10
Start Address High   00      00
Start Address Low    02      02
Number of Reg. High  00      00
Number of Reg. Low   02      00
Byte Count           04
Data, Hi-Reg,Hi-Byte 42
Data, Hi-Reg,LowByte 70
Data, LowReg,Hi-Byte 00
Data, LowReg,LowByte 00
Error Check Low      67      61
Error Check High     D5      C9

Vielleicht liege ich in der Analyse richtig und es hilft Dir  :D
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 05 Februar 2015, 18:18:09
Hallo Roger,

Deine Analyse ist richtig, da ist noch ein kleiner Bug beim Senden. Wenn in der ParseInfo keine Länge angegeben ist, wird beim Write 0 verwendet statt dem Default.
Leider kann ich das erst am Wochenende korrigieren.
Du kannst aber zum Testen einfach mal len in der ParseInfo angeben.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 06 Februar 2015, 11:09:59
Hi,

selber Fehler bei mir:

2015.02.06 10:56:37 5: ModbusRT485: handle send queue
2015.02.06 10:56:38 4: ModbusRT485: handle queue sends frame: 010313880008c0a2 (fcode 3 to 1)
2015.02.06 10:56:38 5: SW: 010313880008c0a2
2015.02.06 10:56:38 5: ModbusRT485: raw read: 0103104680780446cc95f04712eceb47983eca389a
2015.02.06 10:56:38 5: ModbusRT485: ParseFrames got: 0103104680780446cc95f04712eceb47983eca389a
2015.02.06 10:56:38 4: ModbusRT485: ParseFrames: fcode 3 from 1, data 104680780446cc95f04712eceb47983eca calc crc = 39480, read = 39480 expect 3 from 1 for module umg103
2015.02.06 10:56:38 5: ModbusRT485: _ParseRegs has returned, now returning from ParseFrames
2015.02.06 10:56:38 5: ModbusRT485: handle send queue
2015.02.06 10:56:38 4: ModbusRT485: handle queue sends frame: 010303e8002cc467 (fcode 3 to 1)
2015.02.06 10:56:38 5: SW: 010303e8002cc467
2015.02.06 10:56:38 5: ModbusRT485: raw read: 010358436715b843663ea043668fd143c7b2e243c77b6843c802883e0455993fe9b1e83f0f240a3fc5947e411f06e543d1c8bc42cd78d344050f94c0e2d6d0c1bdc0b0c21a9856c28ae9c441eee8ee43d22f024300eacb4410c97bc60d
2015.02.06 10:56:38 5: ModbusRT485: ParseFrames got: 010358436715b843663ea043668fd143c7b2e243c77b6843c802883e0455993fe9b1e83f0f240a3fc5947e411f06e543d1c8bc42cd78d344050f94c0e2d6d0c1bdc0b0c21a9856c28ae9c441eee8ee43d22f024300eacb4410c97bc60d
2015.02.06 10:56:38 4: ModbusRT485: ParseFrames: fcode 3 from 1, data 58436715b843663ea043668fd143c7b2e243c77b6843c802883e0455993fe9b1e83f0f240a3fc5947e411f06e543d1c8bc42cd78d344050f94c0e2d6d0c1bdc0b0c21a9856c28ae9c441eee8ee43d22f024300eacb4410c97b calc crc = 3526, read = 3526 expect 3 from 1 for module umg103
2015.02.06 10:56:38 5: ModbusRT485: _ParseRegs has returned, now returning from ParseFrames
2015.02.06 10:56:38 5: ModbusRT485: handle send queue
2015.02.06 10:56:42 5: ModbusRT485: handle send queue, force
2015.02.06 10:56:42 4: ModbusRT485: handle queue sends frame: 0106000901ded8 (fcode 6 to 1)
2015.02.06 10:56:42 5: SW: 0106000901ded8
2015.02.06 10:56:44 3: umg103: Timeout2 in ReadAnswer for Delete_Work
2015.02.06 10:56:45 4: ModbusRT485: timeout waiting for 6 from 1, Request was 0106000901ded8, last Buffer: 010358436715b843663ea043668fd143c7b2e243c77b6843c802883e0455993fe9b1e83f0f240a3fc5947e411f06e543d1c8bc42cd78d344050f94c0e2d6d0c1bdc0b0c21a9856c28ae9c441eee8ee43d22f024300eacb4410c97bc60d
2015.02.06 10:56:51 5: ModbusRT485: handle send queue
2015.02.06 10:56:51 4: ModbusRT485: handle queue sends frame: 010304ca0002e505 (fcode 3 to 1)
2015.02.06 10:56:51 5: SW: 010304ca0002e505
2015.02.06 10:56:51 5: ModbusRT485: handle send queue
2015.02.06 10:56:51 5: ModbusRT485: send busy, delay writing from queue
2015.02.06 10:56:51 5: ModbusRT485: handle send queue
2015.02.06 10:56:51 5: ModbusRT485: send busy, delay writing from queue
2015.02.06 10:56:51 5: ModbusRT485: raw read: 0103044248029dae94


Delete_Work ist in der ParseInfo folgend definiert

"h9"=>  { unpack => "c", # 9 Lösche_Arbeit 0 1 CHAR 0
name => "del_wh",
showget => 1,
expr => '$val',
                                        setexpr => '$val',
len => 1,
reading => "Delete_Work",
                                        set => 1,
                                        setmin => 0,
setmax => 1},

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 Februar 2015, 11:52:57
Hallo Roger,

anbei eine neue Version.
Die Default-Länge sollte jetzt verwendet werden. Bei mir funktioniert sowohl fCode 6 als auch 16. Die Ausgabe der Fehlermeldung habe ich auch korrigiert und eine Klartextmeldung hinzugefügt.

Gruss
   Stefan

Edit 13.2.15: removed attached old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 Februar 2015, 12:11:39
Hallo Denis,

Dein Timeout scheint ein anderes Problem zu sein. Das gesendete Modbus-Frame sieht für mich korrekt aus, aber dein Gerät antwortet nicht.

Bekommst Du denn eine Fehleranzeige bei der Übertragung des Schreib-Befehls auf den LEDs Deines Geräts?
Hast Du eine Möglichkeit die Kommunikation der mitgelieferten Software mitzulesen? (evt. kannst Du da sehen wo der Unterschied liegt)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 09 Februar 2015, 21:58:48
Hallo Stefan,
so nun hatte ich endlich zeit zum Testen. Senden ist etwas besser, aber noch nicht gut  :(
Hier das Log:
2015.02.09 20:12:15 5: HA_SDM630M_1: Set: found option Demand_Period__minutes in setHash, setVal = 60
2015.02.09 20:12:15 5: HA_Modbus_1: Add frame to queue: 01100002000204084b, force send
2015.02.09 20:12:15 5: HA_SDM630M_1: _Send: creating new queue
2015.02.09 20:12:15 5: HA_Modbus_1: handle send queue, force
2015.02.09 20:12:15 4: HA_Modbus_1: handle queue sends frame: 01100002000204084b (fcode 16 to 1)
2015.02.09 20:12:15 5: SW: 01100002000204084b
2015.02.09 20:12:15 5: HA_SDM630M_1: ReadAnswer called and remaining timeout is 1.99783301353455 requested reading is Demand_Period__minutes
2015.02.09 20:12:17 3: HA_SDM630M_1: Timeout2 in ReadAnswer for Demand_Period__minutes
2015.02.09 20:12:17 1: Perfmon: possible freeze starting at 20:12:16, delay is 1.451
2015.02.09 20:12:17 4: HA_Modbus_1: timeout waiting for 16 from 1, Request was 01100002000204084b, last Buffer: 01030442700000ef90

Byte-Count 04 wird nun eingetragen, aber irgendwie scheinen die Daten zu fehlen:
Field Name Example Hex-OK   Hex-Modul
Slave Address        01      01
Function             10      10
Start Address High   00      00
Start Address Low    02      02
Number of Reg. High  00      00
Number of Reg. Low   02      02
Byte Count           04      04
Data, Hi-Reg,Hi-Byte 42
Data, Hi-Reg,LowByte 70
Data, LowReg,Hi-Byte 00
Data, LowReg,LowByte 00
Error Check Low      67      08
Error Check High     D5      4B

Was kann ich tun?
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 09 Februar 2015, 22:22:27
Hallo Roger,

Du kannst für Dein Holding Register den unpack-Code in ParseInfo angeben.
Dann wird der Wert auch ins Frame gepackt.
Der defUnpack Key als Default wird im Modul noch nicht verwendet - Sorry, soweit war ich noch nicht.
Siehe Funktion ModbusLD_Send im Basis-Modul.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 10 Februar 2015, 18:31:10
Hallo Stefan,
mit unpack-Code in ParseInfo geht das Schreiben  :)
2015.02.10 18:13:58 5: HA_SDM630M_1: Set: found option Demand_Period__minutes in setHash, setVal = 60
2015.02.10 18:13:58 5: HA_Modbus_1: Add frame to queue: 011000020002044270000067d5, force send
2015.02.10 18:13:58 5: HA_SDM630M_1: _Send: creating new queue
2015.02.10 18:13:58 5: HA_Modbus_1: handle send queue, force
2015.02.10 18:13:58 4: HA_Modbus_1: handle queue sends frame: 011000020002044270000067d5 (fcode 16 to 1)
2015.02.10 18:13:58 5: SW: 011000020002044270000067d5
2015.02.10 18:13:58 5: HA_SDM630M_1: ReadAnswer called and remaining timeout is 1.99634289741516 requested reading is Demand_Period__minutes
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 01
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 0110
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 011000
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 01100002
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 011000020002
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got: 011000020002
2015.02.10 18:13:58 4: HA_Modbus_1: ParseFrames: fcode 16 from 1, data 0002 calc crc = 56449, read = 512 -> mismatch! expect 16 from 1 for module HA_SDM630M_1
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 011000020002e008
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got: 011000020002e008
2015.02.10 18:13:58 4: HA_Modbus_1: ParseFrames: fcode 16 from 1, data 00020002 calc crc = 2272, read = 2272 expect 16 from 1 for module HA_SDM630M_1
2015.02.10 18:13:58 5: HA_Modbus_1: reply to fcode 16 arrived, 2 registers written
2015.02.10 18:13:58 5: HA_SDM630M_1: ReadAnswer done
2015.02.10 18:13:58 5: HA_SDM630M_1: Set: sending read after write
2015.02.10 18:13:58 5: HA_Modbus_1: Add frame to queue: 01030002000265cb, force send
2015.02.10 18:13:58 5: HA_SDM630M_1: _Send: creating new queue
2015.02.10 18:13:58 5: HA_Modbus_1: handle send queue, force
2015.02.10 18:13:58 5: HA_Modbus_1: HandleSendQueue sendDelay for device HA_SDM630M_1 not over, sleep 0.0541110038757324 forced
2015.02.10 18:13:58 5: HA_Modbus_1: HandleSendQueue commDelay for device HA_SDM630M_1 not over, sleep 0.0939970016479492 forced
2015.02.10 18:13:58 4: HA_Modbus_1: handle queue sends frame: 01030002000265cb (fcode 3 to 1)
2015.02.10 18:13:58 5: SW: 01030002000265cb
2015.02.10 18:13:58 5: HA_SDM630M_1: ReadAnswer called and remaining timeout is 1.99457097053528 requested reading is Demand_Period__minutes
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 01
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 0103
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 010304
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 01030442
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 0103044270
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got: 0103044270
2015.02.10 18:13:58 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 04 calc crc = 13089, read = 28738 -> mismatch! expect 3 from 1 for module HA_SDM630M_1
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 010304427000
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got: 010304427000
2015.02.10 18:13:58 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 0442 calc crc = 10611, read = 112 -> mismatch! expect 3 from 1 for module HA_SDM630M_1
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 01030442700000ef
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got: 01030442700000ef
2015.02.10 18:13:58 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 04427000 calc crc = 11969, read = 61184 -> mismatch! expect 3 from 1 for module HA_SDM630M_1
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.02.10 18:13:58 5: SetSilent ReadAnswer got: 01030442700000ef90
2015.02.10 18:13:58 5: HA_Modbus_1: ParseFrames got: 01030442700000ef90
2015.02.10 18:13:58 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 0442700000 calc crc = 37103, read = 37103 expect 3 from 1 for module HA_SDM630M_1
2015.02.10 18:13:58 5: HA_SDM630M_1: ParseRegs called with 42700000 and start 002
2015.02.10 18:13:58 4: HA_SDM630M_1: ParseRegs assign Demand_Period__minutes with 60
2015.02.10 18:13:58 5: HA_SDM630M_1: Set: ? not found, return list Demand_Period__minutes Modbus_Speed__baud System_Password Modbus_Parity_Stop Modbus_Node_adr
2015.02.10 18:13:58 5: HA_Modbus_1: reply to fCode 3 parsed, 1 readings
2015.02.10 18:13:58 5: HA_SDM630M_1: ReadAnswer done

Das Ende sieht mit Set: ? not found, return list Demand_Period__minutes Modbus_Speed__baud System_Password Modbus_Parity_Stop Modbus_Node_adr noch etwas merkwürdig aus, aber das Schreiben selbst scheint wohl geklappt zu haben.


Dafür habe ich einen anderen Fehler entdeckt  :(
Seit der Einführung von combine zum Lesen von mehreren Registern mit einem Read-Kommando, werden nicht mehr alle Register mit defaultpoll=>1 zyklisch gelesen. Ich hatte den Wert auf 10 stehen und es fehlten ca. 30% der Werte.
Seit ich es wieder auf 1 gezetzt habe, werden wieder alle Register abgefragt.
Wie kann ich das näher untersuchen/loggen?

@Denis: Hast Du auch ein solches Verhalten? Ich habe derzeit 51 Register, welche ich zyklisch einlese.

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 10 Februar 2015, 20:30:44
Hallo Roger,

schick doch mal einen Log-Auszug, in dem man das getupdate sieht. Da sollte erkennbar sein, welche Register in einem gemeinsamen Lesebefehl zusammengefasst werden, wie die Anfrage aussieht und wie Dein Gerät antwortet.
Die Debug-Meldung mit dem set ? ist übrigens völlig normal.

Gruss / Thanx
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 10 Februar 2015, 21:41:20
Hallo Roger,
Ich werde morgen mal nachschauen. Das update von mehreren Readings funktioniert aber ich habe im Moment keine mit defaultpoll =1 drin.
Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 11 Februar 2015, 08:17:07
Hallo,

ich habe mal getestet und alle werte auf defaultpoll=> 1 gesetzt. Keine Probleme.

Hier mal ein Logauszug wenn ich versuche einen Wert zu schreiben.

2015.02.11 08:12:10 5: umg103: Set found option Delete_Work in setHash created from parseInfo data
2015.02.11 08:12:10 5: umg103: checking Value 1 against Min 0
2015.02.11 08:12:10 5: umg103: checking Value 1 against Max 1
2015.02.11 08:12:10 5: umg103: converted Value 1 to 1 using expr $val
2015.02.11 08:12:10 5: ModbusRT485: Add frame to queue: 0106000901ded8, force send
2015.02.11 08:12:10 5: umg103: _Send: creating new queue
2015.02.11 08:12:10 5: ModbusRT485: handle send queue, force
2015.02.11 08:12:10 4: ModbusRT485: handle queue sends frame: 0106000901ded8 (fcode 6 to 1)
2015.02.11 08:12:10 5: SW: 0106000901ded8
2015.02.11 08:12:10 5: umg103: ReadAnswer called and remaining timeout is 1.99001908302307 requested reading is Delete_Work
2015.02.11 08:12:12 3: umg103: Timeout2 in ReadAnswer for Delete_Work
2015.02.11 08:12:13 4: ModbusRT485: timeout waiting for 6 from 1, Request was 0106000901ded8, last Buffer: 01030442e766ab3463
2015.02.11 08:12:20 5: umg103: GetUpdate called


und der Passende Eintrag aus praseInfo


   "h9"=>  { unpack => "c", # 9 Lösche_Arbeit 0 1 CHAR 0
name => "del_wh",
                                        #defaultpoll => 1,
showget => 1,
expr => '$val',
                                        setexpr => '$val',
len => 1,
reading => "Delete_Work",
                                        set => 1,
                                        setmin => 0,
setmax => 1},   


Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 Februar 2015, 21:30:56
Hallo Roger und Denis,

anbei eine neue Version. Jetzt sollte der defUnpack key im deviceInfo Hash auch bei schreibenden Zugriffen verwendet werden. Zudem wird für jedes Reading nicht nur ein poll- Attribut angeboten sondern auch ein optionales pollDelay- Attribut. Das kann man auf einen höheren Wert als das normale Poll-Intervall setzen. Wenn dann nach einem Poll-Intervall die GetUpdate Routine aufegrufen wird, prüft die für jedes zu pollende Reading, ob ein individueller Delay per Attribut spezifiziert wurde und falls ja, ob schon genügend Zeit verstrichen ist. Sonst wird das entsprechende Reading in diesem Update-Zyklus übersprungen.
Im Log wird das bei verbose 5 entsprechend ausgegeben.

Beispiel:

define PWP ModbusSET 5 60            # normaler Update-Zyklus 1 Minute
attr PWP pollDelay-Temp_Soll 300    # dieses Reading nur alle 5 Minuten abfragen


Gruss
   Stefan

edit: removed old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 12 Februar 2015, 21:19:36
Hallo Stefan,
habe neue Version getestet --> schreiben geht jetzt auch ohne explizite Angabe von unpack  ;D


Allerding habe ich die Thematik, das mit combine=10 nur 22 readings gelesen werden.
Bei combine=1, kommen alle 51 readings
Logs und meine Device.pm habe ich angehängt. Bestimmt siehst Du was.


Die Lösung mit dem
Zitatattr PWP pollDelay-Temp_Soll 300
gefällt mir nicht so  :(
Ich würde eine Lösung im Device-Modul bevorzugen, anstatt das der Anwender als einzige Lösung 50 attrib-Zeilen einfügen muss.
Eher schwebt mir folgendes vor: Im Device Modul lege ich fest, ob das Register bei jedem Zyklus, jeden zweiten usm. ausgelesen wird. Der Anwender kann ev. mit attr einzelne Werte übersteuern.
Vielleicht kannst Du Dir hier noch was überlegen  :-\

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Februar 2015, 19:50:59
Hallo Roger,

wenn man ins Log schaut, sieht man recht schnell woran das mit den fehlenden Readings liegt:


2015.02.12 20:49:09 5: HA_SDM630M_1: ParseRegs called with 434f1f11000000004561d765 and start 082
2015.02.12 20:49:09 5: HA_SDM630M_1: doing sprintf with format %.3f kAh value is 207.121353149414
2015.02.12 20:49:09 5: HA_SDM630M_1: result is 207.121 kAh
2015.02.12 20:49:09 4: HA_SDM630M_1: ParseRegs assign Charge__kAh with 207.121 kAh
2015.02.12 20:49:09 5: HA_SDM630M_1: moving to next register value, skip 2 to 84
2015.02.12 20:49:09 5: HA_SDM630M_1: ParseRegs: no parseInfo for i84
2015.02.12 20:49:09 5: HA_SDM630M_1: moving to next register value, skip 2 to 86
2015.02.12 20:49:09 5: HA_SDM630M_1: ParseRegs: no parseInfo for i86


Bei einem Read für mehrere Register bekommt die ParseRegs Funktion den gelesenen String und die Adresse des ersten Registers. Nach dem Verarbeiten des ersten Registers erhöht die ParseRegs Funktion die Adresse und sucht nach der passenden Definition im parseInfo hash. Nach der Startadresse 82 und einem Wert, der über zwei Register geht, kommt 84. Für das Input-Register mit Adresse 84 findet die Routine jedoch keinen Key mit "i84", da in Deinem Hash "i084" als Key verwendet wird.

Die einfachste Lösung wäre wenn Du die führenden Nullen entfernst.

Für die unterschiedlichen Lese-Intervalle kann ich Dir noch einen weiteren Key im parseInfo bauen, in dem Du eine Vorgabe je Register hinterlegen kannst. Dem Benutzer würde ich aber auf jeden Fall per Attribut ermöglichen, die Intervalle zu ändern.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Februar 2015, 20:32:47
Hallo,

hier nochmal eine erweiterte Version.
Es gibt jetzt in der parseInfo noch einen weiteren Key defaultpolldelay, mit dem Ihr einen Default für pollDelay im Modul setzen könnt. Der Benutzer kann das dann per Attribut überschreiben wenn er möchte.

Gruss
   Stefan

Edit: removed old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 14 Februar 2015, 14:29:21
Hallo Stefan,
habe alle führenden Nullen entfernt --> es wir auch bei combine=40 alles eingelesen  :)

Auch das mit dem defaultpolldelay geht, auch wenn ich es nicht schön finde  :(
(hier hätte ich eher es was wie: in jedem Durchlauf, nur in jedem zweiten - anstatt feste Zeiten. Ich weiß ja nicht, mit welcher Zykluszeit andere Anwender das Modul laufen lassen und auch ich möchte die Zykluszeit beim Aufruf mit einem einzigen Parameter verändern und Beeinflussung aller Abfragen haben :))


Nun habe ich noch ein paar Fragen zur Schönheit in parseInfo:

9.: Warum gibt es showget und warum muss man es bei jedem Register angeben? Ich denke ein get sollte doch bei jedem Register gehen, oder? Eventuell als Standard zu deviceInfo

10.: Kann ein Standard für defaultpoll nicht auch in  deviceInfo möglich sein? Alle meine i-Register sollen zyklisch ausgelesen werden, von den h-Registern keines.

11.: Einige h-Register möchte ich beim Start einmalig auslesen. Kannst Du so etwas noch einbauen?


So das wars erst mal. Vielen Dank für Deine Hilfe und die bisherigen Korrekturen/Erweiterungen  :D
Roger

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 14 Februar 2015, 21:40:28
Hallo Stefan,

für Rogers Vorschlag aus Punkt 11 bin ich auch.

Zum testen der neuen Version komme ich erst nächste Woche.

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 Februar 2015, 21:01:15
Hallo,

Das mit dem einmaligen Lesen kann ich Euch noch einbauen, ebenso ein defaultpoll in der DeviceInfo.
Was die Gets angeht, so wird per Default jeder Wert als Get implementiert. Nur in Fhemweb wird er nicht notwendigerweise angezeit (siehe Rückgabe auf get ?).
Ich schau mal wie ich nächste Woche Zeit finde noch ein paar Zusatzfeatures einzubauen.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 15 Februar 2015, 21:17:06
Hallo Stefan,

super, dann  kann ich ja mal alle Sinnvollen Werte die das Gerät liefert mit einbauen.

Hast du auch vor eine Unterstützung für Modbus Tcp mit einzubauen?

Grus Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 16 Februar 2015, 22:36:59
Hallo,

Modbus-TCP wäre eine offensichtlich sinnvolle Erweiterung. Die Unterschiede sind nicht groß. Leider habe ich kein Gerät mit Modbus-TCP Schnittstelle zum Testen. Hat von Eich jemand so etwas und würde das Testen übernehmen?

Anbei eine neue Version für Euch zum Testen.

Ich habe das Debug-Log noch ein wenig verschönert, es gibt ein paar neue Keys für logische Module und ein paar Änderungen an der Bedeutung alter Keys:

in deviceInfo gibt es nun defPoll, defShowGet (Bedeutung sollte klar sein, Beispiele wie immer im ModbusSET Modul)

defaultpoll in parseInfo, defPoll in deviceInfo und das entsprechende Attribut für den Benutzer können ausser 0 und 1 auch "once" enthalten.

defaultpolldelay und die entsprechenden Attribute können neben Zahlen für absolute Sekunden auch x[0-9]+ (z.B. x3) enthalten. Dann wird als Delay das Dreifache des Intervalls verwendet.
Der Delay ist so zu verstehen, dass die Zeit seit dem letzten erfolgreichen Read verwendet wird. Wenn mal ein Timeout dazwischen kommt, wird es auf jeden Fall in der nächsten Runde nochmal versucht.

Gruss
   Stefan

Edit: removed old attached versions.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 17 Februar 2015, 13:57:11
Hallo Stefan,

TCP kann ich testen. Habe zwar nicht immer Zugriff auf die Geräte, aber das sollte schon gehen.

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 17 Februar 2015, 19:04:44
Hallo Stefan,
prima  :D. Habe mich schon den ganzen Tag auf das Testen gefreut. Es sind ja so viele Änderungen drin:
defPoll, defShowGet Standards --> habe parseInfo ganz schön aufräumen können  :)
defaultpoll="once" --> Klasse, klappt prima (habe ich für die holding Register verwendet)  :)
x[0-9] Format für defaultpolldelay --> Mensch, Mensch, super Spitzenklasse, bin begeistert  :)

Modbus über TCP/IT kann ich nicht testen, da nicht vorhanden, aber da gibt es schon Umsetzungen
http://forum.fhem.de/index.php/topic,12655.msg261840.html#msg261840 (http://forum.fhem.de/index.php/topic,12655.msg261840.html#msg261840)
Da hat sogar einer den gleichen SDM630 Stromzähler wie ich, nur will er ihn über TCP/IT anbinden.

Also ich bin schwer begeistert. Alles sieht gut aus und ich kämpfe gerade mit den Statistik-Modul,
da will noch nicht so richtig  >:(
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 22 Februar 2015, 20:50:32
Hallo Denis,

anbei eine neue Version, die jetzt auch Modbus TCP oder auch RTU über TCP unterstützt.
Damit das elegant geht, habe ich die restlichen Funktionen bis auf _initialize der Client-Module auch noch ins Basis-Modul integriert. Ihr könnt also aus Euren Modulen die Define- und Undefine-Funktionen löschen und statt dessen auf die ModbusLD-Define etc. verweisen. (Beispiel angehängt).

Für Modbus TCP übergibt man dann beim Define des Client-Moduls nach der ID und dem Intervall die Adresse mit Port und das Protokoll. Wenn man die neuen Sachen weglässt, ist es Modbus RTU über ein bereits definiertes serielles Modbus-Gerät. Wenn man eine Adresse angibt, dann benötigt man kein physisches Gerät.

Beispiel:

define test ModbusTCPTest 1 30 192.168.7.11:502 TCP


Gruss
   Stefan

Edit: removed old versions
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 22 Februar 2015, 21:03:37
Hallo Stefan,
dann fange ich Morgen mal mit dem Testen an.

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 23 Februar 2015, 09:27:17
Hallo Stefan,

funktioniert nicht, ich erhaltebei einem Define
define umg604 ModbusUMG604 1 10 10.136.6.95:502 TCP
im Logfile die Meldung

2015.02.23 08:24:16 0: Undefined subroutine &main::ModbusLD_Initialize called at ./FHEM/98_ModbusUMG604.pm line 1072

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 23 Februar 2015, 15:21:26
Hallo zusammen,
so habe die neue Version getestet --> bei mir über seriell scheint alles zu gehen  :D
Hier der Überblick über meine bisherigen Fragen:

zu 1. Format --> erledigt
zu 2. Einheiten: OK, habe verstanden, dass hier FHEM noch keine Lösung hat (geht ja auch mit format) --> vertagt
zu 3. verschiedene Poll-Zeiten: --> hervorragend gelöst  :)
zu 4. timeout bei manuellen gets --> gelöst
zu 5. timeout bei mehreren gets --> gelöst
zu 6. viele gleiche len-Angaben in parseInfo --> mit defaults in deviceInfo gelöst
zu 7. mehrere Modbus-Geräten an einem Bus: keine Ahnung? zumindest keine Anpassung clients in 98_Modbus.pm mehr nötig  :)
zu 8. Fehlermeldungen beim Schreiben --> gelöst
zu 9. sehr oft showget --> mit defaults in deviceInfo gelöst
zu 10. Standard für defaultpoll in deviceInfo --> gelöst
zu 11. einmaliges einlesen bei Start --> gelöst

Wie kann man den 7. testen? Habe derzeit nur ein Modbus-Gerät.

Also vom meiner Seite (derzeit :) ) volle Zufriedenheit und ein großes Log an Dich Stefan.
Roger

PS: Anbei noch meine aktuelle Datei für den SDM630M
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 23 Februar 2015, 19:25:12
Hallo Denis,

da fehlt noch ein

require "$attr{global}{modpath}/FHEM/98_Modbus.pm";

in der Initialize-Funktion deines Moduls wenn 98_Modbus.pm nicht ohnehin geladen ist (ist mir nicht aufgefallen, da ich parallel noch ein Gerät per RS485 auslese und das Modul daher geladen ist)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 24 Februar 2015, 12:58:25
Hallo Stefan,

damit klapt es schon besser, es fehlt in der 98_Mosbus.pm noch

require "$attr{global}{modpath}/FHEM/DevIo.pm";

Habe ein UMG604 zur Zeit als einziges Device in FHEM.
Zum testen hänge ich noch ein UMG103 an das 604 als ModbusGateway, um zu sehen was mit Punkt 7 aus der Liste ist.

Gruß Denis

PS: Habe das 103 hinter das 604 angeschlossen. Frage: mus das 103 jetz das 604 ais IO Dev bekommen oder geht das über TCP nicht?

PPS: habe es auch mal so Probiert:

define ModbusGW Modbus 10.136.6.95:502 TCP

define umg604 ModbusUMG604 1 10
attr umg604 IODev ModbusGW
attr umg604 poll-Voltage_L1 1
attr umg604 poll-Voltage_L2 1
attr umg604 poll-Voltage_L3 1

define umg103 ModbusUMG103 4 10
attr umg103 IODev ModbusGW
attr umg103 poll-Voltage_L1 1
attr umg103 poll-Voltage_L2 1
attr umg103 poll-Voltage_L3 1
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 26 Februar 2015, 22:22:32
Hallo Denis,

Bei Modbus TCP hast Du ja keinen RS485 Bus und Du kannst in jedem Fall mehrere Geräte über ihre IP Adresse im Netz ansprechen. Auch bei RS485 kannst Du mehrere Geräte über ihre Modbus ID ansprechen, auch wenn sie direkt am gleichen Kabel angeschlossen sind.

Dein Gateway kenne ich leider nicht. Generell war aber meine Idee, dass Du bei Modbus TCP den ersten Define weglassen kannst und statt dessen beim Define für z.B ein Umg604 die IP-Adresse und den Port angibst, so wie ich das am 22.2. gepostet hatte.

Klappt das denn so weit bei dir?

Wenn ein Gateway zu fhem Modbus TCP spricht und dahinter ein weiteres Gerät per RS484 am Gateway hängt, dann müsstest Du eigentlich das dahinterliegende Gerät genauso definieren wie wenn es selbst TCP sprechen würde und ggf. nur die UnitID als Modbus ID angeben.
Leider kenne ich aber Deine Geräte ebensowenig wie deine Verkabelung und kann es deshalb nicht genauer sagen.

Gruß
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 02 März 2015, 14:45:32
Hallo Stefan,

das UMG604 (ID = 1) hat einen RS485 Bus an dem im meinem Fall ein UMG103 (ID =4) angeschlossen ist.
Wenn ich das ganze mit meinem Modbus OPC Server ansteuer, dann gebe ich einfach die ID mit an und erhalte die Daten des entsprechenden Gerätes.
Das ganze funktioniert auf Port 502 als Modbus TCP und auf Port 8000 als Modbus RTU über TCP.
Wenn ich nur das Umg604 anlege mit
define UMG604 ModbusUMG604 1 10 192.168.1.11:502 TCP
oder mit
define UMG604 ModbusUMG604 1 10 192.168.1.11:8000 RTU
funktioniert das ohne Probleme.
Wenn nur das Umg103 mit
define UMG103 ModbusUMG103 4 10 192.168.1.11:502 TCP
oder
define UMG103 ModbusUMG103 4 10 192.168.1.11:8000 RTU
anlege funktioniert das nicht.
die Fehlermeldungen sind in dem Fall gleich
dann steht im Log z.B.:

2015.03.02 14:22:53 3: Opening umg103 device 192.168.1.11:8000
2015.03.02 14:22:53 3: umg103 device opened
2015.03.02 14:22:53 3: umg103: defined with id 4, interval 10, destination 192.168.1.11:8000, protocol RTU

und auf der konsole:

Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Modbus.pm line 447.


ein anlegen von zwei Geräten
define UMG604 ModbusUMG604 1 10 192.168.1.11:502 TCP
define UMG103 ModbusUMG103 4 10 192.168.1.11:502 TCP

log Einträge wie oben.
Log mit verbose 5
2015.03.02 14:42:58 5: umg103: GetUpdate called
2015.03.02 14:42:58 5: umg103: GetUpdate check h3024 => Max_value_P_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1038 => Reactive_power_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5018 => Real_energy_L2_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5014 => Real_energy_sum_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5040 => Apparent_energy_L1_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5008 => Real_energy_L1_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5032 => Apparent_energy_L1_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4012 => Min_value_CosPhi_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1044 => CosPhi_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4004 => Min_value_U_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5060 => Reactive_energy_L3_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1014 => Current_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3032 => Max_value_Q_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5036 => Apparent_energy_L3_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3044 => Max_value_CosPhi_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5062 => Reactive_energy_sum_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2002 => Mean_value_U_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2026 => Mean_value_P_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1036 => Reactive_power_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2046 => Mean_value_CosPhi_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5064 => Reactive_energy_L1_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5030 => Apparent_energy_sum_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2014 => Mean_value_I_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5000 => Real_energy_L1_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3050 => Max_value_CosPhi_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3042 => Max_value_S_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1012 => Current_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3028 => Max_value_Q_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1226 => Frequency, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2226 => Mean_value_Frequency, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4006 => Min_value_U_L1-L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5046 => Apparent_energy_sum_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5006 => Real_energy_sum_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5016 => Real_energy_L1_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2004 => Mean_value_U_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5054 => Reactive_energy_sum_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2034 => Mean_value_Q_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5020 => Real_energy_L3_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1020 => Real_power_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1028 => Apparent_power_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5070 => Reactive_energy_sum_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3038 => Max_value_S_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h9 => Delete_Work, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2050 => Mean_value_CosPhi_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3040 => Max_value_S_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5068 => Reactive_energy_L3_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3048 => Max_value_CosPhi_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4010 => Min_value_U_L3-L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5026 => Apparent_energy_L2_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2048 => Mean_value_CosPhi_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2030 => Mean_value_Q_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2040 => Mean_value_S_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5074 => Real_energy_L2_Supply, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3000 => Max_value_U_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2020 => Mean_value_P_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2044 => Mean_value_CosPhi_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5024 => Apparent_energy_L1_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5050 => Reactive_energy_L2_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5002 => Real_energy_L2_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3022 => Max_value_P_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3010 => Max_value_U_L3-L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3020 => Max_value_P_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h600 => Stromwandler_Primär, poll = once, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate will request Stromwandler_Primär
2015.03.02 14:42:58 5: umg103: GetUpdate check h1008 => Voltage_L2-L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2010 => Mean_value_U_L3-L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5078 => Real_energy_L2_Supply, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1004 => Voltage_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2022 => Mean_value_P_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4018 => Min_value_CosPhi_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4016 => Min_value_CosPhi_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5076 => Real_energy_L2_Supply, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1022 => Real_power_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2038 => Mean_value_S_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1046 => CosPhi_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h911 => Serial_Nr, poll = once, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate will request Serial_Nr
2015.03.02 14:42:58 5: umg103: GetUpdate check h1024 => Real_power_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5022 => Real_energy_sum_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4104 => Min_value_Frequency, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4008 => Min_value_U_L2-L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5072 => Real_energy_L1_Supply, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5012 => Real_energy_L3_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1050 => CosPhi_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5028 => Apparent_energy_L3_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2032 => Mean_value_Q_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2042 => Mean_value_S_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2024 => Mean_value_P_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3016 => Max_value_I_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3030 => Max_value_Q_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1026 => Real_power_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3008 => Max_value_U_L2-L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5004 => Real_energy_L3_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1000 => Voltage_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3026 => Max_value_P_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h8 => Delete_MinMax, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2016 => Mean_value_I_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1032 => Apparent_power_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1048 => CosPhi_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5066 => Reactive_energy_L2_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2012 => Mean_value_I_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5042 => Apparent_energy_L2_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5052 => Reactive_energy_L3_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5044 => Apparent_energy_L3_Consumption_NT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1010 => Voltage_L3-L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3018 => Max_value_I_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5010 => Real_energy_L2_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3036 => Max_value_S_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3004 => Max_value_U_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5034 => Apparent_energy_L2_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2036 => Mean_value_S_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1006 => Voltage_L1-L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5038 => Apparent_energy_sum_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3046 => Max_value_CosPhi_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3006 => Max_value_U_L1-L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2018 => Mean_value_I_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2006 => Mean_value_U_L1-L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h913 => Firmware, poll = once, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate will request Firmware
2015.03.02 14:42:58 5: umg103: GetUpdate check h4000 => Min_value_U_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3034 => Max_value_Q_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1002 => Voltage_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1040 => Reactive_power_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h602 => Spannungswandler_Primär, poll = once, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate will request Spannungswandler_Primär
2015.03.02 14:42:58 5: umg103: GetUpdate check h5048 => Reactive_energy_L1_Consumption, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2028 => Mean_value_Q_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4014 => Min_value_CosPhi_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3226 => Max_value_Frequency, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5058 => Reactive_energy_L2_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1042 => Reactive_power_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h603 => Spannungswandler_Sekundär, poll = once, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate will request Spannungswandler_Sekundär
2015.03.02 14:42:58 5: umg103: GetUpdate check h1034 => Apparent_power_sum, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3012 => Max_value_I_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h4002 => Min_value_U_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3002 => Max_value_U_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2008 => Mean_value_U_L2-L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h5056 => Reactive_energy_L1_Consumption_HT, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h601 => Stromwandler_Sekundär, poll = once, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate will request Stromwandler_Sekundär
2015.03.02 14:42:58 5: umg103: GetUpdate check h1016 => Current_L3, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h1030 => Apparent_power_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h3014 => Max_value_I_L2, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate check h2000 => Mean_value_U_L1, poll = 0, last = 0
2015.03.02 14:42:58 5: umg103: GetUpdate combines Stromwandler_Primär (600) with Stromwandler_Sekundär (601), Span = 2, dropping read for 601
2015.03.02 14:42:58 5: umg103: GetUpdate combines Stromwandler_Primär (600) with Spannungswandler_Primär (602), Span = 3, dropping read for 602
2015.03.02 14:42:58 5: umg103: GetUpdate combines Stromwandler_Primär (600) with Spannungswandler_Sekundär (603), Span = 4, dropping read for 603
2015.03.02 14:42:58 5: umg103: GetUpdate combines Serial_Nr (911) with Firmware (913), Span = 3, dropping read for 913
2015.03.02 14:42:58 5: umg103: GetUpdate now requests adr 600 (Stromwandler_Primär) with span 4
2015.03.02 14:42:58 5: umg103: pdu : 0302580004
2015.03.02 14:42:58 5: umg103: TCP frame tid=54, dlen=6, devId=4, pdu=0302580004
2015.03.02 14:42:58 5: umg103: Add frame to queue: 003600000006040302580004
2015.03.02 14:42:58 5: umg103: _Send: creating new queue
2015.03.02 14:42:58 5: umg103: handle queue
2015.03.02 14:42:58 4: umg103: handle queue sends 003600000006040302580004 (fcode 3 to 4 for Stromwandler_Primär len 4)
2015.03.02 14:42:58 5: SW:


die Aktuellen Versionen habe ich mit angehängt.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 02 März 2015, 17:40:41
Hallo Denis,

Erst mal vielen Dank für's Testen!
wenn das UMG604 sowohl per Modbus TCP als auch per Modbus RTU über TCP funktioniert, ist das schon mal eine sehr gute Nachricht.
Damit funktioniert die Implementation von Modbus-TCP prinzipiell für direkt angeschlossene Geräte.

Die Frage ist nun, warum es bei der Kommunikation per TCP über das UMG604 als Gateway auf das dort per RS485 angeschlossene UMG103 noch nicht funktioniert.
Wenn ich das Protokoll richtig verstanden habe, müsste das eigentlich genauso funktionieren. Definiert würde ein Gerät für das UMG103 mit der ID 4 und der IP-Adresse des Gateways. Ein zusätzlicher Define für das Gateways selbst sollte nicht nötig sein.

Die Warnung auf der Konsole sollte auch nicht das Problem sein. Die kommt nur von einem Debug-Log.
Leider endet Dein Log-Auszug dort wo es interessant wird. Die ganzen Meldungen zu GetUpdate am Anfang zeigen nur die Zusammenfassung der Read-Requests. Am Ende kommt dann das Queueing der ersten Anfrage. Ich vermute danach kommt ein Timeout oder?

Eventuell fehlt in meiner Implementation noch irgend eine Kleinigkeit, damit es auch über Gateways funktioniert.

Könntest Du zum Testen aus Deinem Modul mal alle Objekte bis auf eines rauswerfen (damit das Log nicht zu voll wird) und dann ein komplettes Log vom Define bis zu den Timeouts schicken?

Hast Du vielleicht sogar die Möglichkeit funktionierende Requests vom OPC Server per Sniffer mitzuschneiden, damit ich sehe wo der Unterschied ist?
(mit der Methode könnten wir auch gleich sehen warum das Schreiben bei Dir nicht funktioniert)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 03 März 2015, 09:30:55
Hallo Stefan,

an den OPC Server gehe ich nicht ran, der läuft im Produktiveinsatz mit sehr vielen Geräten.

ich habe aber mal einen Logauszug mit Verbose 5 als Datei angehängt.
In der fhem.cfg steht

define UMG604 ModbusUMG604 1 10 10.136.6.104:502 TCP
attr UMG604 poll-Voltage_L1 1
attr UMG604 poll-Voltage_L2 1
attr UMG604 poll-Voltage_L3 1
attr UMG604 verbose 5

define UMG103 ModbusUMG604 4 10 10.136.6.104:502 TCP
attr UMG103 poll-Voltage_L1 1
attr UMG103 poll-Voltage_L2 1
attr UMG103 poll-Voltage_L3 1
attr UMG103 verbose 5


Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 März 2015, 22:40:03
Hallo Denis,

Du versuchst das umg103 mit Deinem Modul für das 603 abzufragen. Da passen die Register aber nicht:

define UMG103 ModbusUMG604 4 10 10.136.6.104:502 TCP


Probier es mal mit


define UMG103 ModbusUMG103 4 10 10.136.6.104:502 TCP


Und dann fällt mir noch auf, dass Deine Fhem-Installation ein altes DevIO verwendet. Da solltest du vor dem weiteren Testen mal ein Fhem Update machen. Dann wäre es für das weitere Testen hilfreich wenn Du temporär alle Register bis auf 2 oder 3 aus parseInfo entfernst.

Ich hoffe, das macht einen Unterschied.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 04 März 2015, 08:13:19
Hallo Stefan,

habe das Update gemacht, die Module Verkleinert und das Define angepasst. Hier der Ausschnitt aus der Konfig.

define UMG604 ModbusUMG604a 1 10 10.136.6.104:502 TCP
attr UMG604 poll-Voltage_L1 1
attr UMG604 poll-Voltage_L2 1
attr UMG604 poll-Voltage_L3 1
attr UMG604 verbose 5

define UMG103 ModbusUMG103a 4 10 10.136.6.104:502 TCP
attr UMG103 poll-Voltage_L1 1
attr UMG103 poll-Voltage_L2 1
attr UMG103 poll-Voltage_L3 1
attr UMG103 verbose 5


Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 März 2015, 17:45:50
Hallo Denis,

das ist schon seltsam, warum dein UMG103 nicht antwortet. Was passiert eigentlich wenn Du nur das UMG103 definierst und kein UMG604 Gerät anlegst? Vielleicht hat das UMG604 ein Problem mit der gleichzeitigen Kommunikation als Endgerät und als Gateway?

Wenn es generell nicht antwortet, dann muss es einen Unterschied in der Kommunikation zwischen dem Fhem-Modul als Master und dem OPC-Server als Master geben, der allerdings nur bei der Kommunikation über das UMG604 als Gateway zuschlägt.
Vielleicht hat das UMG604 Gateway ein Problem damit, dass mehrere Register gleichzeitig abgefragt werden.
Hast Du mal versucht, den "combine" key in der deviceInfo weg zu lassen, so dass immer nur ein Register gleichzeitig abgefragt wird?

Übrigens scheint das mit dem Update noch nicht erfolgreich gewesen zu sein. Der Log-Eintrag von DevIO sieht noch alt aus ...
Wie hast Du das update denn gemacht?

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 März 2015, 19:53:53
Hallo,

ich hätte nochmal was Neues zum Test:

Eine stark überarbeitete Version des Modbus-Basismoduls. Sie unterstützt jetzt auch Coils und es gibt viele Attribute zum Überschreiben der parseInfo und devInfo Strukturen. Damit das alles gut zusammen passt, musste ich ein paar Keys in der parseInfo umbenennen. (defaultpoll ist nur noch poll, defaultpolldelay nur noch polldelay)
Anbei die neuen Files. Eine vollständige Doku ist wieder in den Files enthalten.

Neu ist auch das Modul ModbusAttr. Das verwendet das Basismodul, enthält aber selbst keine parseInfo sondern erlaubt dem Anwender sein Gerät vollständig über Attribute zu definieren.

Beispiel:

define PWP ModbusAttr 5 30
attr PWP obj-h256-reading Temp_Wasser_ein
attr PWP obj-h256-expr $val/10

attr PWP obj-h258-reading Temp_Wasser_Aus
attr PWP obj-h258-expr $val/10

attr PWP obj-h262-reading Temp_Luft
attr PWP obj-h262-expr $val / 10

attr PWP obj-h770-reading Temp_Soll
attr PWP obj-h770-expr $val / 10
attr PWP obj-h770-set 1
attr PWP obj-h770-setexpr $val * 10
attr PWP obj-h770-max 32
attr PWP obj-h770-min 10
attr PWP obj-h770-hint 8,10,20,25,28,29,30,30.5,31,31.5,32

attr PWP dev-h-combine 5
attr PWP dev-h-defPoll 1

attr PWP room Pool-WP
attr PWP stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"Temp_Wasser_Ein",0))}
attr PWP webCmd Temp_Soll


Man definiert ein Datenobjekt / Reading, indem man Attribute definiert, die mit obj- beginnen, dann den Typ des Objekts (c/d/h/i) und der dezimalen Adresse anthalten und dann für das Objekt weitere Eigenschaften. Das ganze entspricht den Keys in ParseInfo.
Ebenso kann man Device-Settings bzw. Defaults wie in der devInfo Struktur definieren. Die Attribute beginnen mit dev- dann kommt entweder timing oder der Obejkttyp und dann der Wert. Die Doku des Moduls ModbusAttr enthält eine vollständige Beschreibung.

Bei mir hat es bisher gut funktioniert. Wenn es noch jemand erfolgreich testen kann, würde ich das Basismodul, ModbusSET und ModbusAttr einchecken, so dass die Doku auch in der CommandRef auftaucht und einen Wiki-Eintrag schreiben.

Gruss
   Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 14 März 2015, 06:45:25
Hallo Stefan,

werde ich Montag noch mal kurz testen.

Gruß Denis
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 14 März 2015, 10:49:01
Hallo Stefan,
ich werde es auch testen. Mal schauen, ob ich es am WE schaffe.

Ich habe nun ein zweites Modbus Gerät. Einphasiger Stromzähler SDM220M.
Beide funktionieren parallel an einem Modbus --> damit ist:
Punkt 7: mehrere Modbus-Geräten an einem Bus --> erledigt  :)


Mit den zwei Geräten an einem Bus habe ich nun eine zusätzliche Frage:
12: Wie kann ich sehen wie stark der Bus ausgelastet ist?
Ich habe ja diverse Abfragen mit unterschiedlichen Zyklenzeiten:
- bei jedem Zyklus, nur jeden zweiten/dritten/...
- nur aller 60s, 120s, 180s, ...
Und das Ganze nun von zwei Geräten!

Wie kann ich sehen inwieweit die Zyklen ausgelastet sind?
Wo ist noch wieviel Luft für ev. weitere/häufigere Abfragen?
Möglichst als Reading mit Log-Funktion, damit man das in einer Grafik sehen kann.

Stefan fällt Dir dazu was ein? Müsste ja irgendwie in 98_Modbus.pm realisiert werden.

Meine aktualisierten Gerätedateien, gibt es bei der Rückmeldung vom Test der neuen Version.
mit zyklischem Gruß
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: golem am 14 März 2015, 11:28:47
Hallo Stefan,

ich habe mal einen kurzen Test gemacht. Sieht gut aus.
Das Umg604 Mit TCP antwortet und das Umg103 welches am 604 per RS485 angeklemmt ist liefert auch ordentliche werte.


Denis   
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 15 März 2015, 19:17:58
Hallo Stefan,
habe auch umgestellt und getestet --> sieht alles gut aus  :)
Anbei auch die Dateien für die Zähler SDM630M und SDM220M von B+G E-Tech & EASTON.

Hätte noch eine zusätzliche Frage:
13. Kann ich mit zwei Modbus Adaptern arbeiten?
Zwei Modbus Definitionen mit unterschiedlichen /dev Geräten sind bestimmt kein Problem.
Aber woher weiß meine Geräte Definition, an welches Basismodul sie sind anhängen soll?

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 März 2015, 19:50:37
Hallo Roger,

Zu Deiner Frage 12: So eine Art Bus-Nutzungs-Überwachung könnte ich noch einbauen.
Das sollte kein großer Aufwand sein. Ich würde aber gerne das Modul mit den Grundfunktionen erst noch vollständig dokumentieren und einchecken, bevor ich weitere Features hinzufüge.

Zu 13: dafür gibt es das Attribut IODev. Allerdings hab ich das noch nicht getestet. Zunächst nimmt ein Client-Modul das erste Modbus-Basismodul, das es findet. Sobald aber das Attribut IODev verarbeitet wird, kümmert sich Fhem darum, dass der Device-Hash des IO Devices im Internal $hash->{IODev} im Client-Modul gesetzt wird. Die Client-Funktionen des Modbus-Moduls verwenden das und selektieren so den gewünschten IO-Device-Hash. Der Hash des Client-Moduls wird dann beim Senden eines Requests in der Queue vermerkt, so dass beim Lesen der Antwort wieder klar ist, welches Client-Modul die Daten weiter verarbeiten möchte.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 15 März 2015, 20:43:52
Hallo Stefan,
das mit dem IODev zu 13. werde ich testen.
Schön, dass zu zu 12. Bus-Nutzungs-Überwachung was einbauen willst.

Ich habe gerade festgestellt:
14. dass die Attribute: sendDelay, commDelay und timeout bei meinen Geräte-Modulen nicht mehr funktionieren. Hier hattest Du die "" in deviceInfo entfernt.
Sollen diese attribute nicht mehr gesetzt werden könne? Habe ich was falsch umgesetzt?
Zumindest in der commandref von 98_ModbusSET.pm sind sie noch drin.

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 März 2015, 21:42:47
Hallo Roger,

Sorry - das mit den Attributen hätte ich deutlicher schreiben können. Ich habe bei der letzten Überarbeitung die Attributnamen an die Namen in parseInfo und devInfo angeglichen, damit das zukünftig weniger verwirrend wird. In der Doku zu ModbusAttr steht die aktuelle Beschreibung. Die Doku zu ModbusSET habe ich noch nicht angepasst.
Jedenfalls heißen diese Attribute jetzt dev-timing-timeout, dev-timing-sendDelay und dev-timing-commDelay.

Entsprechend kann man auch in jedem Client-Modul, das auf 98_Modbus.pm aufbaut alle ParseInfo Elemente über Attribute wie obj-h234-unpack überschreiben.
Alternativ versteht das Modul auch Attribute mit der Schreibweise parseInfoKey-Reading, also z.B. poll-temp_Luft wenn im Client-Modul entsprechende Attributnamen an die AttrList angefügt werden.

Wenn Du das als Autor eines Client-Moduls nicht möchtest, kannst Du einfach das entsprechende Attribut beim Füllen von $modHash->{AttrList} in der _Initialize-Funktion weglassen. Wenn Du den Anwendern alles erlauben möchtest, kannst du einfach die Zuweisung zu $modHash->{AttrList} wie in ModbusSET machen. Dein Modul hat dann auch alle Features von ModbusAttr ...
Ich habe schon angefangen Wiki-Artikel dazu zu schreiben. Es fehlt jedoch noch einiges.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 23 März 2015, 21:47:13
Hallo,

98_Modbus.pm ist nun eingecheckt, ebenso 98_ModbusAttr.pm und ModbusSET.pm.
Im Wiki habe ich einen ersten Entwurf der Doku abgelegt: http://www.fhemwiki.de/wiki/Modbus
Es wäre schön wenn Ihr die Doku ergänzen möchtet oder von dort auf Eure Module verweisen würdet.
Vermutlich sind auch noch Fehler in der Doku (erster Entwurf) und Verbesserungen sind willkommen :-)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: privat58 am 03 April 2015, 14:58:14
Hallo, bin gerade auf den "Fred" gestossen. Ich habe selber 2 SDM630DC im Einsatz.
Ausgelesen werden die im Moment mit:
define MB_RTU ModbusRTU /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
attr MB_RTU charformat 8N1
attr MB_RTU pollIntervall 5
attr MB_RTU timeout 8

define U_L1 ModbusRegister 1 30001 #vom erstem Zähler
attr U_L1 IODev MB_RTU
attr U_L1 plcDataType REAL_BE
attr U_L1 room Stromzaehler
attr U_L1 stateFormat {sprintf("%.1f", ReadingsVal($name,"state",0))."V"}

define U_L1 ModbusRegister 2 30001 #vom zweiten Zähler
attr U_L1 IODev MB_RTU
attr U_L1 plcDataType REAL_BE
attr U_L1 room Stromzaehler
attr U_L1 stateFormat {sprintf("%.1f", ReadingsVal($name,"state",0))."V"}


Bisher musste ich für jeden Wert ein eigenes define anlegen.

So wie es ausschaut, brauche ich dies mit dem Modul ModbusSDM630M nicht mehr.
Wie kann ich aber die zwei Zähler mit dem neuen Modul definieren?
Dank an Euch
Steffen
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 03 April 2015, 18:34:58
Hi Steffen,
da ich einen SDM630M und einen SDM220M habe, antworte ich mal.
Du benötigst nur 3 Definitionen:

define HA_Modbus_1 Modbus /dev/ttyUSB0@9600
define HA_SDM630M_1 ModbusSDM630M 1 60
define HA_SDM630M_2 ModbusSDM630M 2 60

Die erste für die Definition des Modbus-Adapters an Deinem Computer.
Die beiden nächsten für die Definition der zwei Modbus Geräte. Diese müssen natürlich unterschiedliche Adressen haben.
Dein SDM630DC hat etwas weniger Register, aber Du kannst aus meinem 98_ModbusSDM630M.pm durch löschen Dir schnell eine Version für Dein Gerät erzeugen  :)

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: privat58 am 04 April 2015, 06:51:55
Danke Roger,
dann werde ich mich mal nach Ostern hinsetzen und umschreiben. Deine Vorlage gefällt mir sehr, da es Laien wie mir einfacher macht einzusteigen in die Materie. Auch das Bestimmen der Ausleseintervalle ist aus meiner Sicht gut gelöst.
Steffen
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: privat58 am 06 April 2015, 18:03:48
Ich habe die zwei Zähler jetzt so eingebunden. Das Intervall habe ich von 60 auf 5 gestellt.
Da werden mir die Daten etwas schneller aber nicht aller 5 Sekunden aktualisiert.
Soweit wie ich es verstanden habe, kann ich das Interval nicht per attr so setzen:
attr poll-Power_Sum__W 5
2015-04-06_17:39:15 SDM630M_Haus Power_Sum__W: 78.1 W
2015-04-06_17:40:22 SDM630M_Haus Power_Sum__W: 82.7 W
2015-04-06_17:41:17 SDM630M_Haus Power_Sum__W: 133.0 W
2015-04-06_17:42:23 SDM630M_Haus Power_Sum__W: 86.0 W
2015-04-06_17:43:17 SDM630M_Haus Power_Sum__W: 89.4 W
2015-04-06_17:44:23 SDM630M_Haus Power_Sum__W: 90.3 W
2015-04-06_17:45:17 SDM630M_Haus Power_Sum__W: 89.1 W
2015-04-06_17:46:27 SDM630M_Haus Power_Sum__W: 53.7 W
2015-04-06_17:47:17 SDM630M_Haus Power_Sum__W: 70.6 W
2015-04-06_17:49:04 SDM630M_Haus Power_Sum__W: 64.9 W
2015-04-06_17:49:54 SDM630M_Haus Power_Sum__W: 58.9 W
2015-04-06_17:50:18 SDM630M_Haus Power_Sum__W: 60.5 W
2015-04-06_17:50:22 SDM630M_Haus Power_Sum__W: 59.1 W
2015-04-06_17:50:29 SDM630M_Haus Power_Sum__W: 65.2 W
2015-04-06_17:51:09 SDM630M_Haus Power_Sum__W: 60.9 W
2015-04-06_17:51:27 SDM630M_Haus Power_Sum__W: 115.1 W
2015-04-06_17:52:01 SDM630M_Haus Power_Sum__W: 109.7 W


In der alten Einstellung konnte ich die Leistung aller z.Bsp. 5 Sekunden auslesen und auswerten.
Hintergrund ist der, das ich zwei PV-Anlagen mit Batterie nutze und einen Teil in Warmwasser versenken muss. Ich darf nicht mehr Einspeisen im Jahr als ich entnehme (der schwedischen eon sei Dank).
Ich schalte eine Heizpatrone zu, wenn Überschuss ist. Diese soll aber wieder ausgeschalten werden, wenn z.Bsp. der Wasserkocher angemacht wird, da ich sonst wieder in den Bezug gehe. Für diese "Überschussregelung" nutze ich DOIF.
Gibt es da eine andere Möglichkeit?
Dank an Euch.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: privat58 am 07 April 2015, 09:56:13
Frage hat sich erledigt. Ich habe jetzt alles aus dem Modul ModbusSDM630M rausgenommen und es funktioniert. Entweder habe ich Probleme mit dem Modbus oder der Raspi schafft es nicht.
Vielen Dank auf jedem Fall noch einmal für das Modul, es ist sehr gut kommentiert, so das selbst ich als Laie es anpassen konnte.
Steffen
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 07 April 2015, 20:33:27
Hi privat58,
der Dank gehört Stefan, da er die Basis-Module geschrieben hat.
Aller 10s ist sehr oft. Innerhalb dieser Zeit kann der SDM630 nicht alle seine Registerwerte liefern.
Stefan will hier noch etwas einbauen, damit man die BUS-Auslastung sehen kann.

Aber Du hast ja eine Lösung gefunden  :). Freut mich, dass Du Dich dank der Dokumentation in dem 98_ModbusSDM630M.pm von mir zurechtgefunden hast.

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 16 April 2015, 22:20:04
Hallo,

ich möchte meinen SolarEdge Wechselrichter auslesen. RS485 ist angeschlossen und mit dem Prog (http://www.modbusdriver.com/modpoll.html).
Aufruf : ./modpoll -b 115200 -d 8 -p none  -r 40001 -t 4:hex  -c 45  /dev/ttyS0 bekomme ich auch Werte.

Jetzt wollte ich diese Werte in fhem einlesen. Habe das Modul 98_ModbusSDM220M.pm in 98_ModbusSolarEdge.pm umbenannt und auch ein Paar Register eingetragen. Im fhem-Log wird mir etwas angezeigt.

2015.04.16 22:11:05 5: PWP: GetUpdate called
2015.04.16 22:11:05 5: PWP: GetUpdate objects from attributes: h262145
2015.04.16 22:11:05 5: PWP: GetUpdate full object list: h262145
2015.04.16 22:11:05 5: PWP: GetUpdate check h262145 => C_SunSpec_ID, poll = 2, last = 0
2015.04.16 22:11:05 5: PWP: GetUpdate will request C_SunSpec_ID
2015.04.16 22:11:05 5: PWP: GetUpdate tries to combine read commands
2015.04.16 22:11:05 5: PWP: GetUpdate: combine for h is 1
2015.04.16 22:11:05 5: SolarWR: Send adds fcode 3 for C_SunSpec_ID to queue: 010300010001d5ca pdu 0300010001
2015.04.16 22:11:05 4: SolarWR: handle queue sends 010300010001d5ca (fcode 3 to 1 for C_SunSpec_ID, len 1)
2015.04.16 22:11:05 5: SW: 010300010001d5ca
2015.04.16 22:11:05 5: SolarWR1: GetUpdate called
2015.04.16 22:11:05 5: SolarWR1: GetUpdate objects from attributes:
2015.04.16 22:11:05 5: SolarWR1: GetUpdate full object list: h262145 h262149 h262278
2015.04.16 22:11:05 5: SolarWR1: GetUpdate check h262145 => ID, poll = 0, last = 0
2015.04.16 22:11:05 5: SolarWR1: GetUpdate check h262149 => Hersteller, poll = 0, last = 0
2015.04.16 22:11:05 5: SolarWR1: GetUpdate check h262278 => AC_Frequenz, poll = 0, last = 0
2015.04.16 22:11:05 5: SolarWR1: GetUpdate tries to combine read commands
2015.04.16 22:11:07 4: SolarWR: timeout waiting for 3 from 1, Request was 010300010001d5ca, last Buffer:
2015.04.16 22:11:25 5: PWP: UpdateGetSetList full object list: h262145
2015.04.16 22:11:25 5: PWP: UpdateSetList: setList=
2015.04.16 22:11:25 5: PWP: UpdateSetList: getList=
2015.04.16 22:11:25 5: SolarWR1: UpdateGetSetList full object list: h262149 h262145 h262278
2015.04.16 22:11:25 5: SolarWR1: UpdateSetList: setList=
2015.04.16 22:11:25 5: SolarWR1: UpdateSetList: getList=ID Hersteller AC_Frequenz
2015.04.16 22:11:28 5: SolarWR1: Get: key for AC_Frequenz = h262278
2015.04.16 22:11:28 5: SolarWR1: Get: Requesting AC_Frequenz (h 262278)
2015.04.16 22:11:28 5: SolarWR: Send adds fcode 3 for AC_Frequenz to queue: 01030086000225e2 pdu 0300860002, force send
2015.04.16 22:11:28 4: SolarWR: handle queue sends 01030086000225e2 (fcode 3 to 1 for AC_Frequenz, len 2)
2015.04.16 22:11:28 5: SW: 01030086000225e2
2015.04.16 22:11:28 5: SolarWR1: ReadAnswer called and remaining timeout is 1.99834203720093 requested reading is AC_Frequenz
2015.04.16 22:11:30 3: SolarWR1: Timeout2 in ReadAnswer for AC_Frequenz
2015.04.16 22:11:30 4: SolarWR: timeout waiting for 3 from 1, Request was 01030086000225e2, last Buffer:

Wie muß ich die auszulesenden Register definieren ? Zahl, String usw.  Da habe ich noch keinen Plan. Ich hänge mal die SolarEdge Beschreibung und das fhem_modul an. Vielleicht kann mir jemand einen Tip geben. Vielen Dank.

Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 19 April 2015, 14:06:33
Hallo pejonp,

Im Log sieht man, dass Dein Gerät auf die Anfragen nicht antwortet. Das liegt vermutlich an falschen Adressen.

Am Beispiel des Readings ID fällt mir folgendes auf:

Die Adresse Deines ID Objekts ist 40001 dezimal. Für das Protokoll ist das vermutlich 40000 (beginnt bei 0). Im Modul müsste daher vermutlich h40000 stehen. Wenn das Gerät darauf nicht antwortet, würde ich auch 40001 ausprobieren. 262145 ist auf jeden Fall zu groß.

Wenn es aber gar keine Holding Register sondern Input Register sind, dann musst du ein i statt dem h verwenden.

Da die ID 2 Register belegt (32 Bit Wert) fehlt der Key len => 2.
Um den Datentyp auf uint32 festzulegen würde ich dann noch ein unpack => "L>" (Big endian format) oder auch nur "L" einfügen (small endian) ausprobieren.

Die Formattierung als Float mit einer Nachkommastelle ist vermutlich nicht sinnvoll. Den Key format=> würde ich daher weglassen.

Im Wiki habe ich eine Beschreibung des Basismoduls abgelegt. da steht etwas ausführlicher wie man eigene Gerätemodule für Modbus schreibt: http://www.fhemwiki.de/wiki/Modbus

Ich hoffe das hilft Dir weiter.

Gruß
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 19 April 2015, 19:10:23
Hallo Stefan,

dank deiner Hilfe habe ich schon etwas hinbekommen, aber leider werden die Daten falsch zugeordnet.

Einträge in fhem.cfg:

define SolarWR Modbus /dev/ttyS0@115200
define PWP ModbusAttr 1 10
attr PWP IODev SolarWR
attr PWP dev-h-defPoll 1
attr PWP obj-h72-reading I_AC_Strom_h72
attr PWP obj-h73-expr $val
attr PWP obj-h73-reading I_AC_StromL1_h73
attr PWP obj-h74-expr $val
attr PWP obj-h74-reading I_AC_StromL2_h74
attr PWP obj-h75-expr $val
attr PWP obj-h75-reading I_AC_StromL3_h75

Angezeigt wird:
I_AC_Strom_h72     63
I_AC_StromL1_h73 63
I_AC_StromL2_h74 63
I_AC_StromL3_h75 65534

wenn ich über das modpoll-Tool die Daten Abfrage erhalte ich folgendes:
[72]: 190
[73]: 63
[74]: 63
[75]: 63

Es sieht so aus, das die Zuordnung zu den einzelnen Registern nicht stimmt. Wo muß/kann  ich noch etwas einstellen ? Ich hänge mal den Log an. Vieleicht kann du ja daran gleich etwas erkennen. Vielen Dank.

Jörg

Ergänzung:
Beim ändern der Pollzeit über die Oberfläche, beendet sich fhem auf dem Server mit dem Hinweis:
Can't use string ("SolarWR") as a HASH ref while "strict refs" in use at ./FHEM/98_Modbus.pm line 782.

es ist dieser Eintrag in der fhem.cfg gemeint: define PWP ModbusAttr 1 10

im 98_Modbus.pm steht dort:
Log3 $name, 5, "$name: SetIODev is using $ioDev->{NAME} given in attribute";
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 19 April 2015, 20:45:04
Hallo,

habe einen Fehler bei mir gefunden. Wenn der Regiester bei Adresse H40072 liegt, muß zum auslesen einer abgezogen werden, also h71. Jetzt kommen auch die richtigen Werte.

attr PWP obj-h71-reading I_AC_Strom_h72

Angezeigt wird:
I_AC_Strom_h72     190

Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: satprofi am 30 April 2015, 17:09:00
Hallo.
Habe SDM220M wie oben angesprochen angelegt. Bekomme auch sämtl. Readings angezeigt, aber alle mit 0.
Wie muss man den SDM220M configurieren?
gruss
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: frankbatzen am 05 Mai 2015, 15:05:15
Hallo,

ursprünglich hatte ich mich in diesem Thread
http://forum.fhem.de/index.php/topic,35487.0.html
nach einer Möglichkeit erkundigt, viele Arduino als Sensorknoten an FHEM zu hängen. Am Ende habe ich mich dafür entschieden, das ganze per Modbus RTU umzusetzen, weil es dieses feine Modul für FHEM gibt.

Seit gestern läuft jetzt der erste Arduino nano
http://www.ebay.de/itm/Arduino-Nano-V3-kompatibles-Board-ATmega328P-16MHz-mit-CH340-USB-RS232-Chip-/291415212095?pt=LH_DefaultDomain_77&hash=item43d9b3403f

mit einem RS485-Shield
http://www.ebay.de/itm/331359788902?ru=http%3A%2F%2Fwww.ebay.de%2Fsch%2Fi.html%3F_from%3DR40%26_sacat%3D0%26_nkw%3D331359788902%26_rdc%3D1

an einem USB-RS485-Adapter
http://www.digitus.info/mx/produkte/zubehoer/adapter-und-konverter/r-usb-seriell-adapter-usb-20-da-70157/

am Raspberry pi.
Ich musste hierfür die Biasing-Widerstände im RS-485-Netzwerk anpassen, weil die auf dem RS485-Shield verbauten viel zu hochohmig sind, siehe:
http://arduino-experience.blogspot.de/2015/02/the-library-compiles-with-arduino-ide.html )

Auf dem Arduino läuft die folgende library:
https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino

mit folgendem Sketch (Dies ist das Beispielsketch "simple_slave", das in der Library enthalten ist in leicht modifizierter Form - andere Baudrate, anderer Inhalt des Arrays, Pin2 ist Txenable-Pin für RS485):

/**
*  Modbus slave example 1:
*  The purpose of this example is to link a data array
*  from the Arduino to an external device.
*
*  Recommended Modbus Master: QModbus
*  http://qmodbus.sourceforge.net/
*/

#include <ModbusRtu.h>

// data array for modbus network sharing
uint16_t au16data[16] = {
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };

/**
*  Modbus object declaration
*  u8id : node id = 0 for master, = 1..247 for slave
*  u8serno : serial port (use 0 for Serial)
*  u8txenpin : 0 for RS-232 and USB-FTDI
*               or any pin number > 1 for RS-485
*/
Modbus slave(1,0,2); // this is slave @1 and RS-485

void setup() {
  slave.begin( 9600 ); // baud-rate at 9600
}

void loop() {
  slave.poll( au16data, 16 );
}


Mit den FHEM-Modulen Modbus und MottbusAttr kann ich nun die Werte, die im Arduino in dem Array au16data gespeichert sind, per Modbus über RS485 abrufen. Meine FHEM Definitionen in der fhem.cfg:

define ModbusRS485 Modbus /dev/ttyUSB1@9600
#attr ModbusRS485 verbose 5

define Klappe1 ModbusAttr 1 10
#attr Klappe1 verbose 5
attr Klappe1 room Keller
attr Klappe1 obj-h1-reading Winkel
attr Klappe1 obj-h1-expr $val/10
attr Klappe1 obj-h1-set
attr Klappe1 stateFormat {sprintf("%.1f°", ReadingsVal($name,"Winkel",0))}
attr Klappe1 dev-h-defPoll 1
attr Klappe1 dev-h-defShowGet 1

Damit holt sich FHEM jetzt alle 10 Sekunden den ZWEITEN Wert aus dem Array au16data auf dem Arduino ab. Hier also den Wert "1". Den ersten Wert (hier also die "0") kann ich nicht auslesen, weil das in ModbusAttr h0 wäre, was in ModbusAttr unzulässig zu sein scheint. Ist aber völlig egal, da man das Array beliebig groß machen kann, muss man die erste Position nicht benutzen. Jetzt muss man das Arduino-Sketch nur noch so erweitern, dass der Arduino beliebige Werte von Sensoren ins Array schreibt oder man schreibt über set-Befehle von FHEM aus ins Array, was dann von Aktoren am Arduino als Stellwert genutzt wird.

Warum schreibe ich das alles: Weil ich finde, dass diese Kombination eine unglaublich mächtige Erweiterung von FHEM darstellt. Arduinos lassen sich extrem günstig mit allen möglichen Sensoren und Aktoren bestücken (I2C, SPI, etc.) und genauso günstig können Arduinos natürlich auch Aktoren (Motoren, Dimmer, Relais, etc.) steuern, was dann von FHEM verarbeitet bzw. kontrolliert werden kann.

Danke für das Modul!

Gruß
frank
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Flobo am 08 Mai 2015, 17:36:50
HI Zusammen,

ich versuche gerade eine Wago SPS mit Modbus TCP abzufragen ( Input Registers )

Ich habe in der fhem.cfg folgendes stehen :

define PWP ModbusAttr 1 30 10.10.10.25:502 TCP

.. bekomme aber folgende Meldung wenn ich versuche FHEM zu starten :

root@OMD:/opt/fhem# Undefined subroutine &main::DevIo_OpenDev called at ./FHEM/98_Modbus.pm line 823, <$fh> line 12.

Hat jemand eine Idee wie ich das Lösen kann ?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 Mai 2015, 20:13:36
Hallo Flobo,

das ist ein Bug im Modul, der nur dann auftritt, wenn man keine anderen Module verwendet, die bereits DevIO benötigen. Ich hab gerade eine neue Version eingecheckt, die den Fehler beheben sollte. Mach morgen einfach mal ein update, dann sollte es funktionieren.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Flobo am 12 Mai 2015, 19:27:29
Hallo Stefan,

vielen Dank für den Fix, hat geklappt es kommt nun keine Fehlermeldung mehr.
Ich bin leider noch nicht so geübt im Umgang mit FHEM und habe noch ein weiteres Problem mit dem Modul.

Und zwar : Wenn ich in die fhem.cfg folgendes eintrage :


define Test ModbusAttr 1 30 10.10.10.25:502 TCP
attr Test userattr obj-i14296-reading
attr Test obj-i14296-reading Aussentemperatur


Die SPS hat die Modbus ID 1, und die IP Adresse 10.10.10.25 auf Port 502 .. also das sollte soweit stimmen.
Die Wago spricht direkt Modbus TCP, Dann versuche ich das InputRegister mit der Adresse 14296 abzufragen.

Bekomme allerding im Log nur folgendes :

2015.05.12 19:23:01 5: Test: GetUpdate called
2015.05.12 19:23:01 5: Test: GetUpdate objects from attributes: i14296
2015.05.12 19:23:01 5: Test: GetUpdate full object list: i14296
2015.05.12 19:23:01 5: Test: GetUpdate check i14296 => Aussentemperatur, poll = 0, last = 0
2015.05.12 19:23:01 5: Test: GetUpdate tries to combine read commands


Mache ich noch irgendwas falsch ?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 Mai 2015, 21:24:34
Hallo Flobo,

Falsch ist nichts, aber wenn Du möchtest, dass das Objekt alle 30 Sekunden abgefragt wird, musst Du das entweder beim Objekt oder als Default für alle definierten Input Register angeben.
Dafür gibt es die Attribute obj-[cdih][1-9][0-9]*-poll oder dev-([cdih]-)*defPoll

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Flobo am 12 Mai 2015, 21:36:15
Hi Stefan,

vielen Dank für deine Antwort, aber leider hats bei mir immer noch nicht *klick* gemacht.

define Test ModbusAttr 1 30 10.10.10.25:502 TCP
attr Test obj-i14296-poll Aussentemperatur


Ich will einen Float Wert abfragen ( Temperatur z.b. 20,0 Grad )
Ich habe einen Real32 Signed Wert mit der Registeradresse 14296.

könntest du mir ein kleines Beispiel aufzeigen .. das wär lieb.

Das ganze sieht im Webinterface so aus bei mir :

(//)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Mai 2015, 08:01:57
Halo Flobo,

Das -Poll Attribut setzt man auf 1 damit ein vorher definiertes Objekt / Reading regelmäßig abgefragt wird.
Ein 32 Bit Real passt nicht in ein Input- oder Holding-Register. Das wird also in zwei aufeinanderfolgenden Registern gespeichert sein.
Wichtig wäre zunächst mal zu wissen ob es ein Input- oder ein Holding-Register ist. Entsprechend musst Du im Attribut dann i4296 oder h4296 schreiben. Für das 32-Bit Objekt brauchst Du dann ein -len mit 2 und einen passenden unpack code für die Kodierung als Real. Da kommt es darauf an, wie es im Wago kodiert ist. Die Attribute sind in der Kommandoreferenz ausführlicher erläutert.

Probiers mal ungefähr so:


define Test ModbusAttr 1 30 10.10.10.25:502 TCP
attr Test obj-i14296-reading Aussentemperatur
attr Test obj-i14296-len 2
attr Test obj-i14296-unpack f>
attr Test dev-i-defPoll 1


Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 Mai 2015, 11:40:44
Hallo,

Ich habe gerade ein Update des Modbus Basis-Moduls eingecheckt, das einen Bug behebt, der beim Ändern der Definition zu einem Crash geführt hat.
Danke an Satprofi für den Hinweis.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 18 Mai 2015, 21:50:57
hallo an alle

kann mir jemand sagen wie ich das mit dem Modbus Zähler hin bekomme lese sei einigen tagen durch das Forum.
Hardware: Raspberry,  usb zu Rs485 fti chip, zwei  ECS3-63 cp Modbus Zähler




2015-05-18 21:27:50 Modbus ModBusLine DISCONNECTED
2015-05-18 21:27:50 Modbus HA_Modbus_1 DISCONNECTED
2015-05-18 21:27:50 Modbus ModbusRS485 DISCONNECTED
2015-05-18 21:27:55 Modbus ModBusLine CONNECTED
2015-05-18 21:27:55 Modbus HA_Modbus_1 CONNECTED
2015-05-18 21:27:55 Modbus ModbusRS485 CONNECTED
2015-05-18 21:28:08 ROOMMATE rr_Father durTimerAbsence_cr: 657001
2015-05-18 21:28:08 ROOMMATE rr_Father durTimerAbsence: 10950:01:16
2015-05-18 21:28:08 ROOMMATE rr_Mother durTimerPresence_cr: 657012
2015-05-18 21:28:08 ROOMMATE rr_Mother durTimerPresence: 10950:11:51
2015-05-18 21:28:08 ROOMMATE rr_Daughter durTimerAbsence_cr: 656970
2015-05-18 21:28:08 ROOMMATE rr_Daughter durTimerAbsence: 10949:30:09
2015-05-18 21:28:08 ROOMMATE rr_Son durTimerAbsence_cr: 656970


fehm.cfg


attr global userattr devStateIcon devStateStyle icon lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 sortby structexclude webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global backup_before_update 0
attr global logfile -
attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\

attr global room System
attr global sendStatistics never
attr global statefile ./demolog/fhem.save
attr global updateInBackground 1
attr global verbose 3

define telnetPort telnet 7072 global
attr telnetPort room System

define WEB FHEMWEB 8083 global
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB defaultRoom Light
attr WEB hiddenroom DashboardRoom
attr WEB iconPath openautomation:fhemSVG:default
attr WEB room System
attr WEB sortRooms Light Cinema Residents Sensors System

define WEBphone FHEMWEB 8084 global
attr WEBphone hiddenroom DashboardRoom
attr WEBphone iconPath openautomation:fhemSVG
attr WEBphone plotEmbed 0
attr WEBphone room System
attr WEBphone sortRooms Light Cinema Residents Sensors System
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet hiddenroom DashboardRoom
attr WEBtablet iconPath openautomation:fhemSVG
attr WEBtablet plotEmbed 0
attr WEBtablet room System
attr WEBtablet sortRooms Light Cinema Residents Sensors System
attr WEBtablet stylesheetPrefix ios7touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
attr Logfile room System

define autocreate autocreate
attr autocreate room System
define eventTypes eventTypes demolog/eventTypes.txt
attr eventTypes room System

define CUL_0 CUL none 0000
attr CUL_0 dummy 1
attr CUL_0 room System
define Outdoor FS20 1234 11
attr Outdoor userattr Light Light_map structexclude
attr Outdoor IODev CUL_0
attr Outdoor Light AllLights
attr Outdoor group Single Lights
attr Outdoor icon light_outdoor
attr Outdoor room Light
define Office FS20 1234 12
attr Office userattr Light Light_map structexclude
attr Office IODev CUL_0
attr Office Light AllLights
attr Office group Single Lights
attr Office icon light_office
attr Office model fs20st
attr Office room Light
define Livingroom FS20 1234 13
attr Livingroom userattr Light Light_map structexclude
attr Livingroom IODev CUL_0
attr Livingroom Light AllLights
attr Livingroom eventMap off:dim0% on:dim100%
attr Livingroom group Single Lights
attr Livingroom icon light_pendant_light
attr Livingroom model fs20di
attr Livingroom room Light
attr Livingroom webCmd dim
define AllLights structure Light Alarm Livingroom Office Outdoor CT RGB
attr AllLights devStateIcon undefined:light_question
attr AllLights group Structure
attr AllLights icon light_light
attr AllLights room Light
define Alarm FS20 1234 14
attr Alarm userattr Light Light_map structexclude
attr Alarm IODev CUL_0
attr Alarm Light AllLights
attr Alarm follow-on-for-timer 1
attr Alarm group Single Lights
attr Alarm icon light_wall_2
attr Alarm room Light
attr Alarm webCmd blink 5 1
define Garden KS300 1234
attr Garden IODev CUL_0
attr Garden group Sensors
attr Garden room Sensors
define Log.Garden FileLog demolog/garden.log Sens.Out:T:.*
attr Log.Garden room Sensors
define Log.Predicted FileLog demolog/predicted.log predicted:T:.*
attr Log.Predicted room Sensors
define Cellar CUL_WS 1 -1 -3.5
attr Cellar group Sensors
attr Cellar room Sensors
define SVG_01_Garden SVG Log.Garden:SVG_01_Garden:CURRENT
attr SVG_01_Garden label "Temp: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_01_Garden room Sensors
attr SVG_01_Garden startDate 2013-08-13
define Log.Cellar FileLog demolog/cellar.log Cellar:T:.*
attr Log.Cellar room Sensors
define SVG_02_Cellar SVG Log.Cellar:SVG_02_Cellar:CURRENT
attr SVG_02_Cellar label "Temp: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_02_Cellar room Sensors
attr SVG_02_Cellar startDate 2013-08-13
define Log.Dewpoint FileLog demolog/dewpoint.log .*dewpoint.*
attr Log.Dewpoint room Sensors
define dew_all dewpoint dewpoint .*
attr dew_all group Helper
attr dew_all room Sensors
define SVG_03_Dewpoint SVG Log.Dewpoint:SVG_03_Dewpoint:CURRENT
attr SVG_03_Dewpoint room Sensors
attr SVG_03_Dewpoint startDate 2013-08-13
define logProxy logProxy
attr logProxy room System
define SVG_04_Sun SVG logProxy:SVG_04_Sun:CURRENT
attr SVG_04_Sun fixedrange year
attr SVG_04_Sun room Sensors
attr SVG_04_Sun title {"".logProxy_dec2hms($data{min1})." - ".logProxy_dec2hms($data{max1})." - ".logProxy_dec2hms($data{min2})." - ".logProxy_dec2hms($data{max2})}
define SVG_05_Polar SVG logProxy:SVG_05_Polar:CURRENT
attr SVG_05_Polar plotsize 340,300
attr SVG_05_Polar room Sensors

define sunRise at *{sunrise()} set Office on
attr sunRise group Timer
attr sunRise icon weather_sunrise
attr sunRise room Light
define sunSet at *{sunset()} set Office off
attr sunSet group Timer
attr sunSet icon weather_sunset
attr sunSet room Light
define outdoorNotifier notify Outdoor:.* set Office $EVENT
attr outdoorNotifier group Notify
attr outdoorNotifier icon light_ceiling_light
attr outdoorNotifier room Light

define Projector dummy
attr Projector userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr Projector devStateIcon on:control_on_off:off off:control_home:on
attr Projector group AV
attr Projector room Cinema
attr Projector setList on:noArg off:noArg
attr Projector webCmd on:off
define TV dummy
attr TV userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr TV devStateIcon on:control_on_off:off off:control_home:on
attr TV group AV
attr TV room Cinema
attr TV setList on:noArg off:noArg
attr TV webCmd on:off
define Screen dummy
attr Screen userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr Screen devStateIcon down:fts_garage_door_100:up up:fts_garage_door_10:down
attr Screen group AV
attr Screen room Cinema
attr Screen setList up:noArg down:noArg
attr Screen webCmd down:up
define CeilingLight FS20 0001 01
attr CeilingLight userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr CeilingLight IODev CUL_0
attr CeilingLight eventMap off:dim0% on:dim100%
attr CeilingLight group Light
attr CeilingLight icon light_ceiling_light
attr CeilingLight model dummyDimmer
attr CeilingLight room Cinema
attr CeilingLight webCmd on:off:dim
define ReadingLight FS20 0001 02
attr ReadingLight userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr ReadingLight IODev CUL_0
attr ReadingLight eventMap off:dim0% on:dim100%
attr ReadingLight group Light
attr ReadingLight icon light_floor_lamp
attr ReadingLight room Cinema
attr ReadingLight webCmd on:off:dim:dim 50
define wlCinema weblink htmlCode {LightScene_2html("lcCinema")}
attr wlCinema room Cinema
define lcCinema LightScene Projector Screen TV CeilingLight ReadingLight
attr lcCinema alias Scenes
attr lcCinema devStateIcon AllOff:control_home Break:rc_PAUSE Cinema:scene_cinema WatchTV:it_television
attr lcCinema group Control
attr lcCinema icon scene_scene
attr lcCinema room Cinema
attr lcCinema webCmd scene

define anyViews Dashboard
attr anyViews dashboard_colcount 2
attr anyViews dashboard_row top-center
attr anyViews dashboard_rowcentercolwidth 400
attr anyViews dashboard_rowtopheight 205
attr anyViews dashboard_tab1groups Home State,Light,AV,Single Lights
attr anyViews dashboard_tab1name Dashboard Demo
attr anyViews dashboard_tab1sorting t0c100,Light,true,518,129:t0c100,Home State,true,496,204:t0c0,Single Lights,true,522,209:t0c0,AV,true,221,170:
attr anyViews dashboard_tabcount 1
attr anyViews dashboard_width 80%
attr anyViews room hidden

define anyViews_weblink weblink htmlCode {DashboardAsHtml("anyViews")}
attr anyViews_weblink room DashboardRoom

define rgr_Residents RESIDENTS
attr rgr_Residents alias Residents
attr rgr_Residents devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home
attr rgr_Residents group Home State
attr rgr_Residents icon control_building_filled
attr rgr_Residents room Residents
attr rgr_Residents sortby 2
attr rgr_Residents webCmd state
define rgr_Parents RESIDENTS
attr rgr_Parents alias Parents
attr rgr_Parents devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home
attr rgr_Parents group Home State
attr rgr_Parents icon control_building_filled
attr rgr_Parents room Residents
attr rgr_Parents sortby 2
attr rgr_Parents webCmd state
define rgr_Children RESIDENTS
attr rgr_Children alias Children
attr rgr_Children devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home
attr rgr_Children group Home State
attr rgr_Children icon control_building_filled
attr rgr_Children room Residents
attr rgr_Children sortby 3
attr rgr_Children webCmd state
define rgr_Guests RESIDENTS
attr rgr_Guests alias Guests
attr rgr_Guests devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home
attr rgr_Guests group Home State
attr rgr_Guests icon control_building_filled
attr rgr_Guests room Residents
attr rgr_Guests sortby 4
attr rgr_Guests webCmd state
define rg_Guest1 GUEST rgr_Residents,rgr_Guests
attr rg_Guest1 alias Guest1
attr rg_Guest1 devStateIcon .*home:user_available:absent .*absent:user_away:home .*none:control_building_empty:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rg_Guest1 group Guests
attr rg_Guest1 icon scene_visit_guests
attr rg_Guest1 rg_autoGoneAfter 0.01
attr rg_Guest1 rg_realname alias
attr rg_Guest1 room Residents
attr rg_Guest1 sortby 1
attr rg_Guest1 webCmd state
define rg_Guest2 GUEST rgr_Residents,rgr_Guests
attr rg_Guest2 alias Guest2
attr rg_Guest2 devStateIcon .*home:user_available:absent .*absent:user_away:home .*none:control_building_empty:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rg_Guest2 group Guests
attr rg_Guest2 icon scene_visit_guests
attr rg_Guest2 rg_autoGoneAfter 0.01
attr rg_Guest2 rg_realname alias
attr rg_Guest2 room Residents
attr rg_Guest2 sortby 1
attr rg_Guest2 webCmd state
define rr_Father ROOMMATE rgr_Residents,rgr_Parents
attr rr_Father alias Status
attr rr_Father devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rr_Father group Father
attr rr_Father icon status_available
attr rr_Father room Residents
attr rr_Father rr_autoGoneAfter 0.1
attr rr_Father sortby 0
attr rr_Father webCmd state
define rr_Mother ROOMMATE rgr_Residents,rgr_Parents
attr rr_Mother alias Status
attr rr_Mother devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rr_Mother group Mother
attr rr_Mother icon status_available
attr rr_Mother room Residents
attr rr_Mother rr_autoGoneAfter 0.1
attr rr_Mother rr_passPresenceTo rr_Baby
attr rr_Mother sortby 0
attr rr_Mother webCmd state
define rr_Daughter ROOMMATE rgr_Residents,rgr_Children
attr rr_Daughter alias Status
attr rr_Daughter devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rr_Daughter group Daughter
attr rr_Daughter icon status_available
attr rr_Daughter room Residents
attr rr_Daughter sortby 0
attr rr_Daughter webCmd state
define rr_Son ROOMMATE rgr_Residents,rgr_Children
attr rr_Son alias Status
attr rr_Son devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rr_Son group Son
attr rr_Son icon status_available
attr rr_Son room Residents
attr rr_Son sortby 0
attr rr_Son webCmd state
define AllResidentsAway notify rgr_Residents:(absent|gone) set AllLights off;;set lcCinema scene AllOff
attr AllResidentsAway room Residents
define ResidentsComeHome notify rgr_Residents:home set Outdoor on
attr ResidentsComeHome room Residents
define rr_Baby ROOMMATE rgr_Residents,rgr_Children
attr rr_Baby alias Status
attr rr_Baby devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rr_Baby group Baby
attr rr_Baby icon status_available
attr rr_Baby room Residents
attr rr_Baby sortby 0
attr rr_Baby webCmd state
define RGB readingsProxy RGB
attr RGB userattr Light Light_map structexclude
attr RGB Light AllLights
attr RGB alias RGB Light
attr RGB comment light with the ability to change RGB color
attr RGB devStateIcon {Color::devStateIcon("RGB","rgb","rgb","state")}
attr RGB group Color Lights
attr RGB room Light
attr RGB setFn {if( $CMD =~ m/on|off/ ) { $ARGS=$CMD;;$CMD = "state" } else {fhem ("setreading $DEVICE state on");;} if( $CMD =~ m/hue/ ) {my ($r,$g,$b) = Color::hsv2rgb($ARGS/360,1,1);; my $rgb = Color::rgb2hex( $r*255, $g*255, $b*255 );; fhem ("setreading $DEVICE rgb $rgb");;} if( $CMD =~ m/rgb/ && $ARGS =~ m/^(..)(..)(..)/ ) {my( $r, $g, $b ) = (hex($1)/255.0, hex($2)/255.0, hex($3)/255.0);; my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);; my $hue = int($h*359);;  fhem ("setreading $DEVICE hue $hue");;} fhem ("setreading $DEVICE $CMD $ARGS");;return undef;;}
attr RGB setList on:noArg off:noArg rgb:colorpicker,RGB hue:colorpicker,HUE,0,1,359
attr RGB webCmd hue:rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffffff:on:off
define colorInit notify global:INITIALIZED {use Color;;Color_Initialize()}
attr colorInit room hidden
define CT readingsProxy CT
attr CT userattr Light Light_map structexclude
attr CT Light AllLights
attr CT alias CT Light
attr CT comment light with the ability to change the color temperature
attr CT devStateIcon {Color::devStateIcon("CT","rgb","rgb","state")}
attr CT getFn { my ($r,$g,$b) = Color::ct2rgb( ReadingsVal($DEVICE,"ct",333) );; return (Color::rgb2hex($r,$g,$b), 1);; }
attr CT getList rgb:noArg
attr CT group Color Lights
attr CT room Light
attr CT setFn {if( $CMD =~ m/on|off/ ) { $ARGS=$CMD;;$CMD = "state" } else {fhem ("setreading $DEVICE state on");;}  fhem ("setreading $DEVICE $CMD $ARGS");;return undef;;}
attr CT setList on:noArg off:noArg ct:colorpicker,CT,2000,1,6500
attr CT webCmd ct::ct 2040:ct 2630:ct 3703:ct 6250:on:off

define Weather Weather 673513 1800 de
attr Weather group Weather
attr Weather room Weather

define Weather.weblink weblink htmlCode { WeatherAsHtmlH("Weather") }
attr Weather.weblink alias Weather Forecast
attr Weather.weblink room Weather

define ModbusRS485 Modbus /dev/ttyUSB0@9600
define HA_Modbus_1 Modbus /dev/ttyUSB0@9600 define HA_SDM630M_1 ModbusSDM630M 1 5
define ModBusLine Modbus /dev/ttyUSB0@9600    HA_SDM630M_2 ModbusSDM630M 1 60
define SVG_Log.Cellar_1 SVG Log.Cellar:SVG_Log.Cellar_1:CURRENT
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 29 Mai 2015, 11:21:54
Guten Morgen,

bei der Implementation eines UMG96 (mit Arduino nano) bin ich dann auf dieses FHEM-Modul gestossen. Naja, geladen und ausprobiert, Definition klappt, sowohl der RS485 Device (/tty/USB0@19200) als auch die Geräte Definition via ModbusAttr sehen gut aus. Bei beiden wird als state "opened" angezeigt.
Bei Verbose 5 wird im Log das "getupdate" angezeigt, es kommen aber keine Daten.
Ein Oszillsokopeinsatz direkt auf der RS485 - Leitung zeigt, das kein Abfragen an den Slave geschickt werden. Verwendet wird ein USB zu RS485 Adapter der günstigen Sorte, mit CH341-Chip und MAX485. Stellt sich die Frage ob das mit dem Adapter geht oder wird eins mit FTDI - Chip benötigt? Der MAX benötigt ja zum Senden ein High-Level am DE/RE  Pin. Ich habe noch nicht kontrolliert, ob dieses Signal generiert wird.
Die Konfiguration sieht wie folgt aus:


define ModbusRS485 Modbus /dev/ttyUSB0@19200
attr ModbusRS485 room System
attr ModbusRS485 verbose 5

define Power ModbusAttr 105 5
attr Power userattr IODev obj-h100-reading obj-h101-reading obj-h102-reading obj-h106-reading obj-h107-reading obj-h108-reading obj-h109-reading obj-h110-reading obj-h111-reading obj-h200-reading obj-h40101-reading verbose
attr Power IODev ModbusRS485
attr Power obj-h101-reading Spannung_L2
attr Power obj-h102-reading Spannung_L3
attr Power obj-h106-reading Strom_L1
attr Power obj-h107-reading Strom_L2
attr Power obj-h108-reading Strom_L3
attr Power obj-h109-reading W_Leistung_L1
attr Power obj-h110-reading W_Leistung_L2
attr Power obj-h111-reading W_Leistung_L3
attr Power obj-h200-reading Spannung_L1
attr Power room System
attr Power verbose 5


Ein Auszug as dem Log:


2015.05.29 11:20:23 5: Power: GetUpdate objects from attributes: h107 h111 h102 h101 h106 h108 h200 h110 h109
2015.05.29 11:20:23 5: Power: GetUpdate full object list: h101 h102 h106 h107 h108 h109 h110 h111 h200
2015.05.29 11:20:23 5: Power: GetUpdate check h101 => Spannung_L2, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h102 => Spannung_L3, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h106 => Strom_L1, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h107 => Strom_L2, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h108 => Strom_L3, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h109 => W_Leistung_L1, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h110 => W_Leistung_L2, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h111 => W_Leistung_L3, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate check h200 => Spannung_L1, poll = 0, last = 0
2015.05.29 11:20:23 5: Power: GetUpdate tries to combine read commands
2015.05.29 11:20:23 5: Power: GetUpdate called


Nach Lesen des Threads und des WIKI's denke ich alles richtig gemacht zu haben. Oder habe ich etwas übersehen?

Ein Tip wäre sehr hilfreich... :-)

Liebe Grüße

Marie

PS EDIT: Das Ganze läuft übrigens mit einem BANANAPI und LUBUNTU. Ich hab da mal gemessen, scheinbar ist das ein Treiber Problem. Auch wenn der Chip auf USB zwar erkannt wird, irgendwie wird er nicht angesprochen.
Hat trotzdem jemand einen Tip? Oder hat jemand rein zufällig solch eine Kombination? Angeblich soll der Stick auf einem Raspi laufen....

PPS: Hab spontan mal den Stick auf das Produktivsystem mit Raspberry gesteckt --> genau dieselbe Reaktion....
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 29 Mai 2015, 12:14:30
Noch als Nachtrag:

auf dem Raspberry läuft der Treiber für ch341 .... lsmod bestätigt dies.

Hab ich irgendetwas übersehen???

LG

Marie 
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 29 Mai 2015, 14:06:51
äh, ok,

ich beantworte mal meine Frage selber...


attr Power dev-h-defPoll 1


hilft....nun heisst es noch Werte skalieren, in Grafiken einfügen und gut....

LG

Marie
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 29 Mai 2015, 16:11:44
So,

für alle die auch mal Probleme haben, bei mir läuft es so:



define ModbusRS485 Modbus /dev/ttyUSB0@19200
attr ModbusRS485 room System
attr ModbusRS485 verbose 0

define Power ModbusAttr 105 5
attr Power userattr IODev dev-h-combine dev-h-defPoll dev-i-defFormat obj-h100-reading obj-h101-reading obj-h102-reading obj-h106-reading obj-h107-reading obj-h108-reading obj-h109-reading obj-h110-reading obj-h111-reading obj-h200-expr obj-h200-len obj-h200-reading obj-h201-expr obj-h201-len obj-h201-reading obj-h202-expr obj-h202-len obj-h202-reading obj-h206-expr obj-h206-reading obj-h207-expr obj-h207-reading obj-h208-expr obj-h208-reading obj-h209-expr obj-h209-reading obj-h21-expr obj-h210-expr obj-h210-reading obj-h211-expr obj-h211-reading obj-h279-expr obj-h279-reading obj-h280-expr obj-h280-reading obj-h281-expr obj-h281-reading obj-h40101-reading verbose
attr Power IODev ModbusRS485
attr Power dev-h-combine 20
attr Power dev-h-defPoll 5

attr Power obj-h206-expr ($val/100)*4
attr Power obj-h206-reading Strom_L1
attr Power obj-h207-expr ($val/100)*4
attr Power obj-h207-reading Strom_L2
attr Power obj-h208-expr ($val * 4) /1000
attr Power obj-h208-reading Strom_L3
attr Power obj-h209-expr ($val * 4) / 1000
attr Power obj-h209-reading W_Leistung_L1
attr Power obj-h210-expr ($val * 4) / 1000
attr Power obj-h210-reading W_Leistung_L2
attr Power obj-h211-expr ($val * 4) / 1000
attr Power obj-h211-reading W_Leistung_L3
attr Power obj-h279-expr ($val * 4) / 100
attr Power obj-h279-reading Wirkleistung_gesamt
attr Power room System,Verbräuche
attr Power verbose 0



LG

Marie
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 30 Mai 2015, 19:13:31
Hallo Marie

Habe es nach deiner Anleitung gemacht, ich sehe das der rpi sendet und ich denke der Zähler antwortet,leider weiß ich nicht wie ich das überprüfen kann. Wie kann ich mir die antworten ansehen bzw. loggen? bin sehr unerfahren.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 30 Mai 2015, 19:22:05
Dann müsstest du im fhem bei Deinem Device readings sehen....

LG

Marie

Melde mich morgen noch einmal, haben gerade heute eine kleine Feier.....
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 30 Mai 2015, 22:25:17
Danke Marie

ich glaube das die eingestelten Verzeichniss Adessen falsch sind. Sehe ich das richtig (obj-h279-expr) ist der auf ruf der Adresse 279?

Anbei Modbus Dokumentation von janitza zähler
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: My-FHEM am 31 Mai 2015, 08:45:55
Hallo,

beim define: define Mod485 Modbus /dev/ttyUSB1@9600
erhalte ich : Cannot load module Modbus  als Antwort.

Im Log bekomme ich folgende Meldung:


2015.05.31 08:29:32 1: reload: Error:Modul 98_Modbus deactivated:
Type of arg 1 to values must be hash (not hash element) at ./FHEM/98_Modbus.pm line 170, near "}) "
Type of arg 1 to keys must be hash (not hash element) at ./FHEM/98_Modbus.pm line 277, near "}) "
Type of arg 1 to keys must be hash (not private variable) at ./FHEM/98_Modbus.pm line 282, near "$parseInfo) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_Modbus.pm line 315.

2015.05.31 08:29:32 0: Type of arg 1 to values must be hash (not hash element) at ./FHEM/98_Modbus.pm line 170, near "}) "
Type of arg 1 to keys must be hash (not hash element) at ./FHEM/98_Modbus.pm line 277, near "}) "
Type of arg 1 to keys must be hash (not private variable) at ./FHEM/98_Modbus.pm line 282, near "$parseInfo) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_Modbus.pm line 315.


Fhem Version ist aktueller update stand. Die Modbus Module sind vom


-rw-r--r-- 1 fhem fhem 60549 May 18 17:51 /opt/fhem-cvs/FHEM/98_Modbus.pm
-rw-r--r-- 1 fhem fhem 14916 May 14 07:54 /opt/fhem-cvs/FHEM/98_ModbusAttr.pm
-rw-r--r-- 1 fhem fhem 13983 Mar 24 11:05 /opt/fhem-cvs/FHEM/98_ModbusSET.pm


Hat jemand eine Idee wo ich suchen muss?


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 31 Mai 2015, 09:56:11
Zitat von: Ppunk am 30 Mai 2015, 22:25:17
Danke Marie

ich glaube das die eingestelten Verzeichniss Adessen falsch sind. Sehe ich das richtig (obj-h279-expr) ist der auf ruf der Adresse 279?

Anbei Modbus Dokumentation von janitza zähler

Hallo,

Ja für deinen Zähler sind die Adressen anders, 4267 wäre die erste für die Spannung. Einfach eintragen falls du  das noch nicht getan hast....

LG

PS: und du solltest natürlich die richtige Modbusadresse deines Zählers einsetzen. Meine war 105, aber auch nur weil ich die Profibus mal so konfiguriert hatte. Bei deinem ist die Standardmäßig 1.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Mai 2015, 10:34:44
Hallo My-FHEM,

Welche Perl-Version verwendest Du denn?

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: My-FHEM am 31 Mai 2015, 10:56:21
Hallo  Stefan,

perl -V sagt folgendes:


This is perl, v5.10.1 (*) built for arm-linux-gnueabi-thread-multi

Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
   
  Platform:
    osname=linux, osvers=2.6.32, archname=arm-linux-gnueabi-thread-multi
    uname='linux antheil 2.6.32 #1 fri jan 20 18:19:54 utc 2012 armv5tel gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=arm-linux-gnueabi -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.4.5', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.11.3.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1
    gnulibc_version='2.11.3'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
  Locally applied patches:
        DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
        DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to /etc/perl as /usr may not be writable.
        DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
        DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
        DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
        DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
        DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
        DEBPKG:debian/extutils_hacks - Various debian-specific ExtUtils changes
        DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
        DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
        DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
        DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
        DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.
        DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
        DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
        DEBPKG:debian/perl_synopsis - http://bugs.debian.org/278323 Rearrange perl.pod
        DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
        DEBPKG:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File.
        DEBPKG:fixes/assorted_docs - http://bugs.debian.org/443733 [384f06a] Math::BigInt::CalcEmu documentation grammar fix
        DEBPKG:fixes/net_smtp_docs - http://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net::SMTP 'Port' option
        DEBPKG:fixes/processPL - http://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules.
        DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
        DEBPKG:fixes/pod2man-index-backslash - http://bugs.debian.org/521256 Escape backslashes in .IX entries
        DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in Compress::Raw::Zlib
        DEBPKG:fixes/kfreebsd_cppsymbols - http://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD.
        DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
        DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl.
        DEBPKG:fixes/kfreebsd-filecopy-pipes - http://bugs.debian.org/537555 [16f708c] Fix File::Copy::copy with pipes on GNU/kFreeBSD
        DEBPKG:fixes/anon-tmpfile-dir - http://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file
        DEBPKG:fixes/abstract-sockets - http://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets.
        DEBPKG:fixes/hurd_cppsymbols - http://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd.
        DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
        DEBPKG:fixes/archive-tar-instance-error - http://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive::Tar instance error strings from each other
        DEBPKG:fixes/positive-gpos - http://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \G crash on first match
        DEBPKG:debian/devel-ppport-ia64-optim - http://bugs.debian.org/548943 Work around an ICE on ia64
        DEBPKG:fixes/trie-logic-match - http://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626]
        DEBPKG:fixes/hppa-thread-eagain - http://bugs.debian.org/554218 make the threads-shared test suite more robust, fixing failures on hppa
        DEBPKG:fixes/crash-on-undefined-destroy - http://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method
        DEBPKG:fixes/tainted-errno - http://bugs.debian.org/574129 [perl #61976] [be1cf43] fix an errno stringification bug in taint mode
        DEBPKG:fixes/safe-upgrade - http://bugs.debian.org/582978 Upgrade Safe.pm to 2.25, fixing CVE-2010-1974
        DEBPKG:fixes/tell-crash - http://bugs.debian.org/578577 [f4817f3] Fix a tell() crash on bad arguments.
        DEBPKG:fixes/format-write-crash - http://bugs.debian.org/579537 [perl #22977] [421f30e] Fix a crash in format/write
        DEBPKG:fixes/arm-alignment - http://bugs.debian.org/289884 [f1c7503] Prevent gcc from optimizing the alignment test away on armel
        DEBPKG:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed
        DEBPKG:fixes/hurd-ccflags - http://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them
        DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
        DEBPKG:fixes/lc-numeric-docs - http://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes
        DEBPKG:fixes/lc-numeric-sprintf - http://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants
        DEBPKG:fixes/concat-stack-corruption - http://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding'
        DEBPKG:fixes/cgi-multiline-header - http://bugs.debian.org/606995 [CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and multiline header vulnerabilities
        DEBPKG:fixes/casing-taint-cve-2011-1487 - http://bugs.debian.org/622817 [perl #87336] fix unwanted taint laundering in lc(), uc() et al.
        DEBPKG:fixes/safe-reval-rdo-cve-2010-1447 - [PATCH] Wrap by default coderefs returned by rdo and reval
        DEBPKG:fixes/encode-heap-overflow - [PATCH] Fix decode_xs n-byte heap-overflow security bug in
        DEBPKG:fixes/digest_eval_hole - Close the eval "require $module" security hole in
        DEBPKG:fixes/unregister_signal_handler - [PATCH] main: Unregister signal handler before destroying my_perl
        DEBPKG:fixes/CVE-2012-5195 - avoid calling memset with a negative count
        DEBPKG:fixes/CVE-2012-5526 - [PATCH 1/4] CR escaping for P3P header
        DEBPKG:fixes/storable-security-warning - [PATCH] add a note about security concerns in Storable
        DEBPKG:fixes/maketext-code-execution - Fix misparsing of maketext strings.
        DEBPKG:fixes/CVE-2013-1667 - [PATCH] Prevent premature hsplit() calls, and only trigger REHASH
        DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-17squeeze5 in patchlevel.h
  Built under linux
  Compiled at Mar  6 2013 19:03:50
  @INC:
    /etc/perl
    /usr/local/lib/perl/5.10.1
    /usr/local/share/perl/5.10.1
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.10
    /usr/share/perl/5.10
    /usr/local/lib/site_perl


Debian squeeze

Gruß

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 31 Mai 2015, 11:39:52
habe das soweit abgeändert es kommt nichts an.
define Power ModbusAttr 1 5
attr Power userattr IODev dev-h-combine dev-h-defPoll dev-i-defFormat obj-h100-reading obj-h101-reading obj-h102-reading obj-h106-reading obj-h107-reading obj-h108-reading obj-h109-reading obj-h110-reading obj-h111-reading obj-h200-expr obj-h200-len obj-h200-reading obj-h201-expr obj-h201-len obj-h201-reading obj-h202-expr obj-h202-len obj-h202-reading obj-h4279-expr obj-h4279-reading obj-h4281-expr obj-h4281-reading obj-h4283-expr obj-h4283-reading obj-h4151-expr obj-h4151-reading obj-h4153-expr obj-h4153-reading obj-h4155-expr obj-h4155-reading obj-h4157-expr obj-h4157-reading obj-h280-expr obj-h280-reading obj-h281-expr obj-h281-reading obj-h40101-reading verbose
attr Power IODev ModbusRS485
attr Power dev-h-combine 20
attr Power dev-h-defPoll 5
attr Power obj-h4279-expr ($val/100)*4
attr Power obj-h4279-reading Strom_L1
attr Power obj-h4281-expr ($val/100)*4
attr Power obj-h4281-reading Strom_L2
attr Power obj-h4283-expr ($val * 4) /1000
attr Power obj-h4283-reading Strom_L3
attr Power obj-h4151-expr ($val * 4) / 1000
attr Power obj-h4151-reading W_Leistung_L1
attr Power obj-h4153-expr ($val * 4) / 1000
attr Power obj-h4153-reading W_Leistung_L2
attr Power obj-h4155-expr ($val * 4) / 1000
attr Power obj-h4155-reading W_Leistung_L3
attr Power obj-h4157-expr ($val * 4) / 100
attr Power obj-h4157-reading Wirkleistung_gesamt
attr Power room System,Verbräuche
attr Power verbose 5



und den log dazu:
2015.05.31 11:38:01 5: Power: GetUpdate called
2015.05.31 11:38:01 5: Power: GetUpdate objects from attributes: h4153 h4279 h4155 h4157 h4283 h4281 h4151
2015.05.31 11:38:01 5: Power: GetUpdate full object list: h4151 h4153 h4155 h4157 h4279 h4281 h4283
2015.05.31 11:38:01 5: Power: GetUpdate check h4151 => W_Leistung_L1, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request W_Leistung_L1
2015.05.31 11:38:01 5: Power: GetUpdate check h4153 => W_Leistung_L2, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request W_Leistung_L2
2015.05.31 11:38:01 5: Power: GetUpdate check h4155 => W_Leistung_L3, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request W_Leistung_L3
2015.05.31 11:38:01 5: Power: GetUpdate check h4157 => Wirkleistung_gesamt, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request Wirkleistung_gesamt
2015.05.31 11:38:01 5: Power: GetUpdate check h4279 => Strom_L1, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request Strom_L1
2015.05.31 11:38:01 5: Power: GetUpdate check h4281 => Strom_L2, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request Strom_L2
2015.05.31 11:38:01 5: Power: GetUpdate check h4283 => Strom_L3, poll = 5, last = 0
2015.05.31 11:38:01 5: Power: GetUpdate will request Strom_L3
2015.05.31 11:38:01 5: Power: GetUpdate tries to combine read commands
2015.05.31 11:38:01 5: Power: GetUpdate: combine for h is 20
2015.05.31 11:38:01 5: Power: GetUpdate combines W_Leistung_L1 / h4151 with W_Leistung_L2 / h4153, span = 3, dropping read for h4153
2015.05.31 11:38:01 5: Power: GetUpdate combines W_Leistung_L1 / h4151 with W_Leistung_L3 / h4155, span = 5, dropping read for h4155
2015.05.31 11:38:01 5: Power: GetUpdate combines W_Leistung_L1 / h4151 with Wirkleistung_gesamt / h4157, span = 7, dropping read for h4157
2015.05.31 11:38:01 5: Power: GetUpdate cannot combine W_Leistung_L1 / h4151 with Strom_L1 / h4279, span would be 129
2015.05.31 11:38:01 5: Power: GetUpdate: combine for h is 20
2015.05.31 11:38:01 5: Power: GetUpdate combines Strom_L1 / h4279 with Strom_L2 / h4281, span = 3, dropping read for h4281
2015.05.31 11:38:01 5: Power: GetUpdate combines Strom_L1 / h4279 with Strom_L3 / h4283, span = 5, dropping read for h4283
2015.05.31 11:38:01 5: ModbusRS485: Send adds fcode 3 for Strom_L1 to queue: 010310b70005312f pdu 0310b70005
2015.05.31 11:38:01 5: ModbusRS485: Send adds fcode 3 for W_Leistung_L1 to queue: 010310370007b106 pdu 0310370007
2015.05.31 11:38:06 5: Power: GetUpdate called
2015.05.31 11:38:06 5: Power: GetUpdate objects from attributes: h4153 h4279 h4155 h4157 h4283 h4281 h4151
2015.05.31 11:38:06 5: Power: GetUpdate full object list: h4151 h4153 h4155 h4157 h4279 h4281 h4283
2015.05.31 11:38:06 5: Power: GetUpdate check h4151 => W_Leistung_L1, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request W_Leistung_L1
2015.05.31 11:38:06 5: Power: GetUpdate check h4153 => W_Leistung_L2, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request W_Leistung_L2
2015.05.31 11:38:06 5: Power: GetUpdate check h4155 => W_Leistung_L3, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request W_Leistung_L3
2015.05.31 11:38:06 5: Power: GetUpdate check h4157 => Wirkleistung_gesamt, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request Wirkleistung_gesamt
2015.05.31 11:38:06 5: Power: GetUpdate check h4279 => Strom_L1, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request Strom_L1
2015.05.31 11:38:06 5: Power: GetUpdate check h4281 => Strom_L2, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request Strom_L2
2015.05.31 11:38:06 5: Power: GetUpdate check h4283 => Strom_L3, poll = 5, last = 0
2015.05.31 11:38:06 5: Power: GetUpdate will request Strom_L3
2015.05.31 11:38:06 5: Power: GetUpdate tries to combine read commands
2015.05.31 11:38:06 5: Power: GetUpdate: combine for h is 20
2015.05.31 11:38:06 5: Power: GetUpdate combines W_Leistung_L1 / h4151 with W_Leistung_L2 / h4153, span = 3, dropping read for h4153
2015.05.31 11:38:06 5: Power: GetUpdate combines W_Leistung_L1 / h4151 with W_Leistung_L3 / h4155, span = 5, dropping read for h4155
2015.05.31 11:38:06 5: Power: GetUpdate combines W_Leistung_L1 / h4151 with Wirkleistung_gesamt / h4157, span = 7, dropping read for h4157
2015.05.31 11:38:06 5: Power: GetUpdate cannot combine W_Leistung_L1 / h4151 with Strom_L1 / h4279, span would be 129
2015.05.31 11:38:06 5: Power: GetUpdate: combine for h is 20
2015.05.31 11:38:06 5: Power: GetUpdate combines Strom_L1 / h4279 with Strom_L2 / h4281, span = 3, dropping read for h4281
2015.05.31 11:38:06 5: Power: GetUpdate combines Strom_L1 / h4279 with Strom_L3 / h4283, span = 5, dropping read for h4283
2015.05.31 11:38:06 5: ModbusRS485: Send adds fcode 3 for Strom_L1 to queue: 010310b70005312f pdu 0310b70005
2015.05.31 11:38:06 5: ModbusRS485: Send adds fcode 3 for W_Leistung_L1 to queue: 010310370007b106 pdu 0310370007

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Mai 2015, 11:57:42
Hallo My-FHEM,

Ich glaube 5.10 ist aus 2009. Leider verwende ich im Modul ein paar Dinge, die erst mit 5.14 oder neueren Perl-Versionen funktionieren. Bei Gelegenheit werde ich mir mal ansehen, wie ich das umbauen kann. Kurzfristig könntest Du versuchen Dein Perl zu updaten.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Mai 2015, 12:03:26
Hallo Ppunk,

Dein Gerät scheint auf die Anfragen nicht zu antworten. Das kann daran liegen, dass die Modbus-Adresse nicht stimmt oder dass die Register-Adressen nicht zum Gerät passen. Manchmal liegt es auch an der Verkabelung oder am USB-Adapter ...
Leider kenne ich Deinen ECS3-63 nicht.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 31 Mai 2015, 12:07:29
Moin,

attr Power userattr IODev dev-h-combine dev-h-defPoll dev-i-defFormat obj-h100-reading obj-h101-reading obj-h102-reading obj-h106-reading obj-h107-reading obj-h108-reading obj-h109-reading obj-h110-reading obj-h111-reading obj-h200-expr obj-h200-len obj-h200-reading obj-h201-expr obj-h201-len obj-h201-reading obj-h202-expr obj-h202-len obj-h202-reading obj-h4279-expr obj-h4279-reading obj-h4281-expr obj-h4281-reading obj-h4283-expr obj-h4283-reading obj-h4151-expr obj-h4151-reading obj-h4153-expr obj-h4153-reading obj-h4155-expr obj-h4155-reading obj-h4157-expr obj-h4157-reading obj-h280-expr obj-h280-reading obj-h281-expr obj-h281-reading obj-h40101-reading verbose

da würde ich mal alle Readings rausschmeißen, die nicht nicht zu deinem Zähler passen....müsste dann so aussehen:


attr Power userattr IODev dev-h-combine dev-h-defPoll obj-h4279-expr obj-h4279-reading obj-h4281-expr obj-h4281-reading obj-h4283-expr obj-h4283-reading obj-h4151-expr obj-h4151-reading obj-h4153-expr obj-h4153-reading obj-h4155-expr obj-h4155-reading obj-h4157-expr obj-h4157-reading obj-h280-expr obj-h280-reading obj-h281-expr obj-h281-reading obj-h40101-reading verbose


Dann weiss ich ja nicht ob die Skalierungen mit den expr. so bei Dir hinkommen, musst Du testen, also evtl erst einmal die Umrechnungen rausschmeissen .

attr Power room System,Verbräuche

kann auch raus, das sind ja meine Räume, da solltest Du Deine eigenen einsetzen....

2015.05.31 11:38:01 5: Power: GetUpdate cannot combine W_Leistung_L1 / h4151 with Strom_L1 / h4279, span would be 129
2015.05.31 11:38:01 5: Power: GetUpdate: combine for h is 20


aus deinem Log heisst ja nur, das er die Reading nicht in einem Block abholen kann, da sie zu weit auseinander liegen...So wie ich das sehe macht das Modul dann einen neuen Abruf selbsttätig passend...

attr Power dev-h-combine 20

definiert, wieviele aufeinanderfolgende Readings er zusammenfassen soll... muss angepasst oder rausgelassen werden....

und Du solltest natürlich auch das prüfen was Stefan gerade geschrieben hat.... :) ;)

LG

Marie
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: My-FHEM am 31 Mai 2015, 16:30:13
Hallo Stefan


This is perl 5, version 14, subversion 2 (v5.14.2) built for arm-linux-gnueabi-thread-multi-64int
(with 89 registered patches, see perl -V for more detail)


Damit lässt sich das define ausführen.

Thanks
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 31 Mai 2015, 20:01:35
Hallo,
inzwischen kann ich die Reg meines SolarEdge WR auslesen. Ein Problem habe ich aber noch. Bei den Ergebnissen muß noch die Kommastelle angepaßt werden. Dazu gibt es extra ein Register z.B.:

attr PWP obj-h83-expr $val
attr PWP obj-h83-reading I_AC_Leistung_kW
attr PWP obj-h84-expr $val
attr PWP obj-h84-reading I_AC_Leistung_SF

I_AC_Leistung_SF = 65534
I_AC_Leistung_kW = 5900  --> Ergebnis nach der Berechnung: 59,00 Watt

Ich habe jetzt versucht die Berechnung so zu machen:

attr PWP bj-h83-expr $val / {if (ReadingsVal("PWP","I_AC_Leistung_SF",0)=='65534' {100;}}
oder
attr PWP bj-h83-expr $val / {if (ReadingsVal($name,"I_AC_Leistung_SF",0)=='65534' {100;}}

Aber anscheinend geht das so nicht. Kann mir jemand einen Tipp geben. Vielen Dank.

Jörg
   
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: My-FHEM am 01 Juni 2015, 15:17:16
@Roger

Ist das 98_ModbusSDM630M.pm vom 14.3.2015 die aktuelle Version?
Ist vorgesehen, dieses Modul demnächst in den FHEM update prozess mit einzubeziehen?

Viele Grüße

Tolles Modul
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 01 Juni 2015, 21:54:36
Hallo Marie ,

so habs hinbekommen, die Verdrahtung war Falsch.
Leider bekomme  ich jetzt falsche werte, kannst mir erklären wie das zusammenhängt zb.  "obj-h4279-expr  ($val* 4)/10000" sehe ich das richtig "( variable x 4)geteilt durch 10000"
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 01 Juni 2015, 21:58:19
Moin,

Ja genau, so war das bei mir richtig...d.h. Ja aber nicht das das bei dir auch so sein muss...aber das steht in der Anleitung für deinen wandler...

LG. Marie
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 01 Juni 2015, 22:19:29
Das kann nicht sein, das muß dann auch noch mit den Bytes zusammen hängen, werde morgen das mit dem Hersteller Klären.

Vielen Lieben Dank Marie hast mir sehr geholfen, dir auch Stefan, werde berichten wenn ich so weit bin. 
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 01 Juni 2015, 23:02:25
Moin Moin,

ZitatLänge in Bytes der Meßgröße: Da ein Modbus-Verzeichnis 2 Bytes einnimmt, werden alle Meßgrößen auf mehrere Verzeichnisse verteilt (4 Bytes: 2 Verzeichnisse; 8 Bytes: 4 Verzeichnisse). 

Zitat


Meßgrößenlänge 4 Bytes 

Die in diesen Verzeichnissen (2) als ganze Zahlen gespeicherten Werte müssen zur Rekonstruktion des ursprünglichen Wertes durch 10000 dividiert werden. Beispiel: Wirkleistung 1. Phase Ganzzahlwert: 122447  Ursprünglicher Wert: 122447/10000 = 12,2447 (kW) 

Meßgrößenlänge 8 Bytes 

In diesem Fall ist die Rekonstruktion des ursprünglichen Wertes etwas komplizierter. Der in den ersten 4 Bytes enthaltene Wert muß mit 10^9 (1000000000) multipliziert werden.   Zum Ergebnis muß der in den nächsten 4 Bytes enthaltene Wert hinzuaddiert werden. Zum Schluß muß dieses Ergebnis durch 10000 dividiert werden. Beispiel: Wirkleistung gesamt  Ganzzahlwert (die wichtigsten 4 Bytes): 12344 Ganzzahlwert (die weniger wichtigen 4 Bytes): 765532 Ursprünglicher Wert: (12344*1000000000+765532)/10000=1234400076,5532 (kW) 


So steht es in deiner Anleitung. Du musst also bei 4bytes zwei Register einlesen, die beiden  Wörter addieren und dann durch 10000 teilen.

Für 8byte ein wenig komplizierter, 4 Register einlesen und dann nach der Anleitung Vorgehen....

LG Marie.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 03 Juni 2015, 00:48:08
hab den zähler mit dem prog. ausgelesen wie bekomme ich dies verzeichnis aus der adresse?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Juni 2015, 04:16:41
Hallo Jörg,

In das Expr Attribut muss nur eine gültige Perl-Expression rein, wenn Du den Reading Wert ändern möchtest.
Eine Expr mit nur $val ist daher überflüssig und im ersten Fall kannst Du das Attribut einfach weglassen.
Für die kompliziertere Berechnung bist Du auf dem richtigen Weg, nur die geschweiften Klammern gehören da nicht rein. Das Ganze soll ja eine Perl Expression sein ...

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Juni 2015, 10:20:47
Hi Jörg,

Zwei ergänzende Hinweise noch:

1) Die beiden  Attribute in Deinem post beginnen mit bj- statt obj-. Das könnte ein Teil des Problems sein.
2) Die Readings werden in der Reihenfolge der Adressen verarbeitet. Das bedeutet dass h83 vor h84 ausgewertet wird. Wenn das Ergebnis von h84 abhängt, solltest Du h83 als temporären Wert betrachten und das Reading z.B. Leistung_raw nennen und dann h84 auswerten und in der Expr von h84 den Raw-Wert weiter verarbeiten.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 03 Juni 2015, 15:17:05
Zitat von: StefanStrobel am 03 Juni 2015, 10:20:47
..
1) Die beiden  Attribute in Deinem post beginnen mit bj- statt obj-. Das könnte ein Teil des Problems sein.
2) Die Readings werden in der Reihenfolge der Adressen verarbeitet. Das bedeutet dass h83 vor h84 ausgewertet wird. Wenn das Ergebnis von h84 abhängt, solltest Du h83 als temporären Wert betrachten und das Reading z.B. Leistung_raw nennen und dann h84 auswerten und in der Expr von h84 den Raw-Wert weiter verarbeiten.
..

Hallo Stefan,

vielen Dank für die Hilfe.
bei 1) sind es Schreibfehler, in der fhem.cfg steht obj-. ;-(
zu 2) ich habe es jetzt über einen Dummy gelöst. Das Attribut -expr z.B.  'attr PWP obj-h100-expr $val' habe ich gelöscht. Macht die fhem.cfg wieder etwas kleiner. Der Dummy schreibt auch in Log. sieht jetzt so aus. Die Zeilen ohne PWP sind vom Dummy.

2015-06-03_15:04:43 PWP I_DC_Spannung_V: 753
2015-06-03_15:04:43 PWP I_DC_Spannung_SF: 0
2015-06-03_15:04:44 I_DC_Leistung_W 1909.6
2015-06-03_15:04:44 PWP I_DC_Leistung_W: 19096
2015-06-03_15:04:44 PWP I_DC_Leistung_SF: 65535
2015-06-03_15:04:44 PWP Temp_Kuehler_C: 35
2015-06-03_15:04:44 PWP C_Status: WR_An
2015-06-03_15:05:43 I_AC_Frequenz_Hz 49.99
2015-06-03_15:05:43 I_AC_Leistung_W 5207
2015-06-03_15:05:43 PWP C_Geraeteadresse: 1



attr PWP obj-h100-expr $val
attr PWP obj-h100-reading I_DC_Leistung_W
attr PWP obj-h101-expr $val
attr PWP obj-h101-reading I_DC_Leistung_SF

define DC_LeistungWR notify PWP:I_DC_Leistung_W.* {\
use Math::Round qw/nearest/;;;;\
    my $a = ReadingsVal("PWP","I_DC_Leistung_W",0) ;;;; \
    my $b = ReadingsVal("PWP","I_DC_Leistung_SF",0) ;;;; \
    my $beginn = 65536;;;; \
    my $vv = $beginn - $b;;;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};;;; \
    my $sum1 = nearest(0.001, $a/$vv);;;; \
    my $text = "$sum1" ;;;; \
    fhem ("set I_DC_Leistung_W $text") ;;;; \
    }
attr DC_LeistungWR room Solar
define I_DC_Leistung_W dummy
attr I_DC_Leistung_W room Solar



Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 03 Juni 2015, 16:02:45
Hallo ich noch mal.

das eine Problem ist gelöst, jetzt das nächste. Ich habe eine DRT710M (Drehstromzähler)  Einstellung: 1200 8E1 . Nach langem in und her (Telefonat) mit dem Hersteller, komme ich jetzt an das Gerät.

Was habe ich gemacht ? Ich habe mir einen neuen RS485 Adapter Digitus DA-70157 http://www.amazon.de/gp/product/B007VZY4CW?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00 (http://www.amazon.de/gp/product/B007VZY4CW?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00) gekauft. Mit dem vorhanden http://www.amazon.de/gp/product/B00D8VK9SQ?psc=1&redirect=true&ref_=oh_aui_detailpage_o06_s00 (http://www.amazon.de/gp/product/B00D8VK9SQ?psc=1&redirect=true&ref_=oh_aui_detailpage_o06_s00) kann ich nur meinen SolarEdge SE5K WR auslesen.

Jetzt zum Problem: Mit Win 8.1, QModBus (http://qmodbus.sourceforge.net/) und dem Digitus DA-70157 komme ich an die Register. Etwas umständlich, da diese nicht fortlaufend sind, sondern mit Lücken, da kommt dann ein Timeout (bei QModbus).

Jetzt habe ich den Digitus DA-70157 an den zur Zeit noch Linux-PC gehangen. Auf dem läuft schon der RS485 Adapter vom SolarEdge an der /dev/ttyS0 und liefert Daten. Der Digitus DA-70157 ist /dev/ttyUSB0 und liefert keine Daten.

Die anderen Tools (modpool, perl-script) liefern von der /dev/ttyUSB0 auch keine Daten. Was kann ich einstellen ? Jemand eine Idee. Vielen Dank.

Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 04 Juni 2015, 09:12:16
@My-FHEM: Ich habe noch eine kleine Ergänzung zur Einspeisung von PV Anlagen in Arbeit. Leider saldiert der Zähler nicht über die Phasen.
Das Lob steht in großen Teilen Stefan Strobel, der das Basis-Modul geschrieben hat, zu. Ihm würde ich auch die Verteilung über FHEM update überlassen (habe selbst keinen Zugriff)
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Juni 2015, 09:19:55
Hallo Jörg,

Was fhem angeht, so könnte das Problem die Even Parity sein. Soweit ich mich erinnere stellt devio immer 8n1 ein (dieses Basismodul verwenden die meisten Module, auch Modbus.pm).
Wenn es daran liegt, könnte man das sicher etwas erweitern, z.B. mit einem Attribut.
Wenn Du in DevIO.pm nach parity suchst, findest Du die Stelle leicht. Du könntest dort ja testweise mal even reinschreiben. Dann geht zwar natürlich Deine andere Schnittstelle erstmal nicht mehr, aber zumindest ist dann der Lösungsweg klar.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Juni 2015, 09:36:58
Hallo Roger,

Ich kann Die Module gerne unter contrib einchecken.
Ideal wäre es wenn Du eine kleine Wiki-Seite mit passender Kategorie dafür schreiben könntest:
http://www.fhemwiki.de/wiki/Kategorie:Energieverbrauchsmessung
Oder Du beantragst einfach einen Zugang zum SVN.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 04 Juni 2015, 11:26:52
Hallo

kann mir keiner helfen um das Problem zu lösen?

Ich wies einfach nicht wie ich das richtige Register in der Adresse Auslesen muss um die korrekten werte zu erhalten.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 04 Juni 2015, 14:47:08
Hallo Stefan,
Wiki Seite ist ein guter Vorschlag. Bin allerdings nächste Woche nicht verfügbar. Weißt Du wie man zu einem Account kommt?
Eventuell macht es ja auch Sinn, wenn ich mein Modul selbst hochlade. Wie ist hier das Verfahren?
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 04 Juni 2015, 14:52:17
Zitat von: Ppunk am 04 Juni 2015, 11:26:52
Hallo

kann mir keiner helfen um das Problem zu lösen?

Ich wies einfach nicht wie ich das richtige Register in der Adresse Auslesen muss um die korrekten werte zu erhalten.

Hallo,

Du musst zwei aufeinanderfolgende Register auslesen, das erste quasi Zwischenspeichern und dann beim zweiten in der Berechnung mit benutzen....wie das allerdings in Perl funktioniert, weiß ich noch nicht, dazu habe ich mich bisher zu wenig damit beschäftigt.... Die Sprache ist mir, gelinde gesagt ein wenig suspekt. Aber das liegt wohl nur daran das ich mich noch nicht so sehr mit der Notation auseinandergesetzt habe, aber ich seh schon das ich das wohl mal tun muss....

Aber es gibt hier reichlich fähige Leute, die dir bestimmt helfen können....
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Juni 2015, 18:16:49
Hallo Ppunk,

Wenn der Wert, den Du lesen möchtest als normaler Float-Wert in zwei Registern (also 4 Bytes) gespeichert ist, geht es recht einfach. Das Modul macht dann alles für Dich. Du musst nur als Länge 2 angeben und als unpack Code f>. Also so ungefähr:

define MyRS485 Modbus /dev/device@baudrate
define MyDev ModbusAttr 1 30
attr MyDev dev-h-defPoll 1
attr MyDev obj-h4303-reading Frequenz
attr MyDev obj-h4303-len 2
attr MyDev obj-h4303-unpack f>


Details zu den Attributen findest Du im Wiki:
http://www.fhemwiki.de/wiki/ModbusAttr
Und eine vernünftige Beschreibung zum Modbus-Protokoll hier:
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
Die Codes für die Perl-Befehle pack und unpack, die vom Modul verwendet werden findest Du hier:
http://perldoc.perl.org/functions/pack.html

Wenn falsche Werte herauskommen, kann es noch zwei Ursachen haben: Die Nummerierung der Register bei Modbus beginnt im Protokoll bei 0, bei Geräten aber bei 1. Eventuell musst Du also einfach eine Adresse vor oder zurück.
Die Float Kodierung kann im big endian oder small endian Format sein. Statt f> kannst Du daher auch f< probieren.
   
Gruß
    Stefan


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Juni 2015, 18:24:40
Ergänzung:

Wenn der Wert dann noch durch 10000 dividiert werden muss (wie es Marie in einer Anleitung gefunden hat), dann kannst Du einfach noch ein

attr MyDev obj-h4303-expr $val / 10000

hinzufügen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 04 Juni 2015, 19:41:46
Siehste, manchmal kann es ganz einfach sein....
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: davipet am 04 Juni 2015, 20:21:12
Hi Leute,

ich versuche grade meinen Janitza UMG 96S anzubinden.

Ich habe den zwar auch per Profibus an meiner S7 3152DP und diese per Libnodave am FHEM - aber dennoch möchte ich den Janitza per RS485 auslesen. Macht es einfach direkter und lässt sich dann auch besser reproduzieren auf weiteren Systemen. (Mein Dad hat auch Bedarf ;) )

Zu meinem Problem...
Ich bekomme schlicht keine Daten.
Das Log bleibt leer bis auf :

2015.06.04 20:00:26 3: Opening ModbusRS485 device /dev/ttyUSB0
2015.06.04 20:00:26 3: Setting ModbusRS485 baudrate to 9600
2015.06.04 20:00:26 3: ModbusRS485 device opened
2015.06.04 20:00:26 3: Power: defined with id 1, interval 5, destination ModbusRS485, protocol RTU


Ich habe im Wesentlichen den Codeschnipsel von Marie aus #93 verwendet.
Gerät ist ja das Selbe. Adresse von 105 auf 1 gesetzt. Und auf 9600Baud da es so im Gerät eingestellt ist.
Das Gerät stet auf RS232 - ist das richtig? Die RS485 Option ist für eine direkte 2-draht verkabelung?

Am USBSERIAL lese ich per lsmod "pl2303"

FHEM läuft auf Raspi und ist frisch...

Wie kann ich nun am Besten vorgehen um den Fehler einzugrenzen?

Danke für eure Hilfe!

David
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Marie am 04 Juni 2015, 20:59:22
Hallo,

Das Gerät mus auf RS485, RS232 ist für Point-to-Point....

Probier mal....

LG

Marie
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 04 Juni 2015, 21:36:37
Danke Stefan so gehst.

wie geht das kürzen auf zwei Kommastellen ?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: davipet am 04 Juni 2015, 21:48:38
Sorry, dass hier jetzt zwei Probleme Parallel besprochen werden!
@Marie: Danke - da war mein Fehler... Also nicht direkt... Ich habe einen USB -RS232 Adapter erwischt. Bin also erstmal raus aus dem Problem bis ich den richtigen Adapter aus der 4ma habe... ;-)

DANKE!

David
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 04 Juni 2015, 22:00:57
Zitat von: StefanStrobel am 04 Juni 2015, 09:19:55

.. angeht, so könnte das Problem die Even Parity sein. Soweit ich mich erinnere stellt devio immer 8n1 ein (dieses Basismodul verwenden die meisten Module, auch Modbus.pm).
....

Hallo Stefan,

ich habe im Modul DevIO.pm in Zeile 309 einmal       

$po->parity('even');  eingetragen.
Leider läst sich der DRT710M zu nichts überreden. Eigenartigerweise empfängt der andere RS485 (SolarEdge)  der auf 'none' lief/läuft immer noch Daten. Der Linux-Rechner wurde auch schon neu gestartet.
Ich versuche noch einmal die Register anzupassen.
Zur Zeit steht im Log für den DRT710 folgendes:

2015.06.04 21:44:02 5: SW: 0103000f0008740f
2015.06.04 21:44:02 5: DRT710M: Send adds fcode 3 for Frequenz_Hz to queue: 0103004d0004d41e pdu 03004d0004
2015.06.04 21:44:04 4: DRT710M: timeout waiting for 3 from 1, Request was 0103000f0008740f, last Buffer:
2015.06.04 21:44:04 4: DRT710M: handle queue sends 0103004d0004d41e (fcode 3 to 1 for Frequenz_Hz, len 4 )
2015.06.04 21:44:04 5: SW: 0103004d0004d41e
2015.06.04 21:44:06 4: DRT710M: timeout waiting for 3 from 1, Request was 0103004d0004d41e, last Buffer:
2015.06.04 21:44:52 5: DRT: GetUpdate called
2015.06.04 21:44:52 5: DRT: GetUpdate objects from attributes: h15 h77
2015.06.04 21:44:52 5: DRT: GetUpdate full object list: h15 h77
2015.06.04 21:44:52 5: DRT: GetUpdate check h15 => VoltageL1, poll = 1, last = 0
2015.06.04 21:44:52 5: DRT: GetUpdate will request VoltageL1
2015.06.04 21:44:52 5: DRT: GetUpdate check h77 => Frequenz_Hz, poll = 1, last = 0
2015.06.04 21:44:52 5: DRT: GetUpdate will request Frequenz_Hz
2015.06.04 21:44:52 5: DRT: GetUpdate tries to combine read commands
2015.06.04 21:44:52 5: DRT: GetUpdate: combine for h is 8
2015.06.04 21:44:52 5: DRT: GetUpdate cannot combine VoltageL1 / h15 with Frequenz_Hz / h77, span would be 66
2015.06.04 21:44:52 5: DRT: GetUpdate: combine for h is 8
2015.06.04 21:44:52 5: DRT710M: Send adds fcode 3 for VoltageL1 to queue: 0103000f0008740f pdu 03000f0008
2015.06.04 21:44:52 4: DRT710M: handle queue sends 0103000f0008740f (fcode 3 to 1 for VoltageL1, len 8 )
2015.06.04 21:44:52 5: SW: 0103000f0008740f
2015.06.04 21:44:52 5: DRT710M: Send adds fcode 3 for Frequenz_Hz to queue: 0103004d0004d41e pdu 03004d0004
2015.06.04 21:44:54 4: DRT710M: timeout waiting for 3 from 1, Request was 0103000f0008740f, last Buffer:
2015.06.04 21:44:54 4: DRT710M: handle queue sends 0103004d0004d41e (fcode 3 to 1 for Frequenz_Hz, len 4 )
2015.06.04 21:44:54 5: SW: 0103004d0004d41e
2015.06.04 21:44:56 4: DRT710M: timeout waiting for 3 from 1, Request was 0103004d0004d41e, last Buffer:
2015.06.04 21:45:42 5: DRT: GetUpdate called
2015.06.04 21:45:42 5: DRT: GetUpdate objects from attributes: h15 h77
2015.06.04 21:45:42 5: DRT: GetUpdate full object list: h15 h77
2015.06.04 21:45:42 5: DRT: GetUpdate check h15 => VoltageL1, poll = 1, last = 0
2015.06.04 21:45:42 5: DRT: GetUpdate will request VoltageL1
2015.06.04 21:45:42 5: DRT: GetUpdate check h77 => Frequenz_Hz, poll = 1, last = 0
2015.06.04 21:45:42 5: DRT: GetUpdate will request Frequenz_Hz
2015.06.04 21:45:42 5: DRT: GetUpdate tries to combine read commands
2015.06.04 21:45:42 5: DRT: GetUpdate: combine for h is 8
2015.06.04 21:45:42 5: DRT: GetUpdate cannot combine VoltageL1 / h15 with Frequenz_Hz / h77, span would be 66
2015.06.04 21:45:42 5: DRT: GetUpdate: combine for h is 8
2015.06.04 21:45:42 5: DRT710M: Send adds fcode 3 for VoltageL1 to queue: 0103000f0008740f pdu 03000f0008
2015.06.04 21:45:42 4: DRT710M: handle queue sends 0103000f0008740f (fcode 3 to 1 for VoltageL1, len 8 )
2015.06.04 21:45:42 5: SW: 0103000f0008740f
2015.06.04 21:45:42 5: DRT710M: Send adds fcode 3 for Frequenz_Hz to queue: 0103004d0004d41e pdu 03004d0004
2015.06.04 21:45:44 4: DRT710M: timeout waiting for 3 from 1, Request was 0103000f0008740f, last Buffer:
2015.06.04 21:45:44 4: DRT710M: handle queue sends 0103004d0004d41e (fcode 3 to 1 for Frequenz_Hz, len 4 )
2015.06.04 21:45:44 5: SW: 0103004d0004d41e
2015.06.04 21:45:46 4: DRT710M: timeout waiting for 3 from 1, Request was 0103004d0004d41e, last Buffer:

Vielleicht kannst du da schon etwas eingrenzen. Oder hast du ein Perlscript mit dem man ganz einfach einen Wert auslesen kann. Ich habe schon diese versucht (siehe Anlage). Der SolarEdge macht alles mit und liefert Daten, ob even oder none.
Können noch andere Zeiten eingestellt werden ?? Vielen Dank.

Tschüss Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Ppunk am 04 Juni 2015, 22:24:38
Danke an Stefan und Marie für die große Hilfe.
Hier der Code für den Janitza Zähler ECSEEM113 bzw.ECSEEM114

define ModbusRS485 Modbus /dev/ttyUSB0@19200
attr ModbusRS485 room System

define MyDev ModbusAttr 1 10
attr MyDev userattr dev-h-defPoll obj-h4279-expr obj-h4279-format obj-h4279-len obj-h4279-reading obj-h4279-unpack obj-h4303-format obj-h4303-len obj-h4303-reading obj-h4303-unpack stateFormat
attr MyDev IODev ModbusRS485
attr MyDev obj-h4131-format %2f
attr MyDev obj-h4131-len 2
attr MyDev obj-h4131-reading Wirkenergie_Gesamt(kWh)
attr MyDev obj-h4131-unpack f>
attr MyDev obj-h4151-format %2f
attr MyDev obj-h4151-len 2
attr MyDev obj-h4151-reading Wirkleistung_L1(kW)
attr MyDev obj-h4151-unpack f>
attr MyDev obj-h4153-format %2f
attr MyDev obj-h4153-len 2
attr MyDev obj-h4153-reading Wirkleistung_L2(kW)
attr MyDev obj-h4153-unpack f>
attr MyDev obj-h4155-format %2f
attr MyDev obj-h4155-len 2
attr MyDev obj-h4155-reading Wirkleistung_L3(kW)
attr MyDev obj-h4155-unpack f>
attr MyDev obj-h4157-format %2f
attr MyDev obj-h4157-len 2
attr MyDev obj-h4157-reading Wirkleistung_Gesamt(kW)
attr MyDev obj-h4157-unpack f>
attr MyDev obj-h4267-format %2f
attr MyDev obj-h4267-len 2
attr MyDev obj-h4267-reading Spannung_L1-N
attr MyDev obj-h4267-unpack f>
attr MyDev obj-h4269-format %2f
attr MyDev obj-h4269-len 2
attr MyDev obj-h4269-reading Spannung_L2-N
attr MyDev obj-h4269-unpack f>
attr MyDev obj-h4271-format %2f
attr MyDev obj-h4271-len 2
attr MyDev obj-h4271-reading Spannung_L3-N
attr MyDev obj-h4271-unpack f>
attr MyDev obj-h4279-format %2f
attr MyDev obj-h4279-len 2
attr MyDev obj-h4279-reading Strom_L1
attr MyDev obj-h4279-unpack f>
attr MyDev obj-h4281-format %2f
attr MyDev obj-h4281-len 2
attr MyDev obj-h4281-reading Strom_L2
attr MyDev obj-h4281-unpack f>
attr MyDev obj-h4283-format %2f
attr MyDev obj-h4283-len 2
attr MyDev obj-h4283-reading Strom_L3
attr MyDev obj-h4283-unpack f>
attr MyDev obj-h4303-format %2f
attr MyDev obj-h4303-len 2
attr MyDev obj-h4303-reading Frequenz
attr MyDev obj-h4303-unpack f>
attr MyDev dev-h-defPoll 1
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 05 Juni 2015, 17:58:12
Hallo Jörg,

Laut Log werden die Requests an das Device gesendet nur das antwortet nicht. Wenn Adressen, Baudrate, Device etc. stimmen, dann fällt mir auch erstmal nicht mehr viel ein.
Hast Du eine Möglichkeit, die Kommunikation von Qmodbus mitzulesen und mit der Fhem-Kommunikation zu vergleichen?
Könnte es sein, dass Qmodbus die Adressen anders zählt (beginnend bei 1 statt bei 0)?
Hast Du mal versucht, die Adressen um 1 zu variieren?

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 05 Juni 2015, 18:03:29
Hallo Ppunk,

Schön dass es jetzt klappt.
Wenn Du es noch etwas eleganter machen möchtest, könntest Du statt der einzelnen -len, -format und -unpack Attribute einfach je einmal dev-h-defLen, dev-h-defFormat und der-h-defUnpack setzen. Das gilt dann für alle Holding-Register als Default und muss nur noch angegeben werden, wenn es davon abweicht. Dann bleibt für die meisten Werte nur ein -Reading Atrribut übrig :-)

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 05 Juni 2015, 22:25:37
Hallo Stefan,

hier mal die Ein und Ausgaben über QModBus.
Es werden die Reg 0x0010 - 0x0014 Länge 4 bytes  (Voltage L1 - L3) und das Reg 0X004E Länge 4 bytes (Frequency) ausgelesen.

Gesendet: (Reg: 0x0010 -> Dec: 16, 6 Register)
01  03  00 10  00 06
Empfang:
01 03 0c 00 00 00 e8 00 00 00 e6 00 00 00 e6 b5 28

Reg 16: 0
Reg 17: 232
Reg 18: 0
Reg 19: 230
Reg 20: 0
Reg 21: 230

Im Fhem.log sieht das so aus. Und Fhem sendet das hier : 01030010000445cc pdu 0300100004
bis zum 01 03 00 10 ist alles ok, danach sollte eigentlich ein 06 kommen und dann nichts mehr.  Kann man die Länge festlegen ?


2015.06.05 22:19:36 5: DRT: GetUpdate called
2015.06.05 22:19:36 5: DRT: GetUpdate objects from attributes: h16
2015.06.05 22:19:36 5: DRT: GetUpdate full object list: h16
2015.06.05 22:19:36 5: DRT: GetUpdate check h16 => VoltageL1, poll = 1, last = 0
2015.06.05 22:19:36 5: DRT: GetUpdate will request VoltageL1
2015.06.05 22:19:36 5: DRT: GetUpdate tries to combine read commands
2015.06.05 22:19:36 5: DRT: GetUpdate: combine for h is 6
2015.06.05 22:19:36 5: DRT710M: Send adds fcode 3 for VoltageL1 to queue: 01030010000445cc pdu 0300100004
2015.06.05 22:19:36 4: DRT710M: handle queue sends 01030010000445cc (fcode 3 to 1 for VoltageL1, len 4)
2015.06.05 22:19:36 5: SW: 01030010000445cc
2015.06.05 22:19:38 4: DRT710M: timeout waiting for 3 from 1, Request was 01030010000445cc, last Buffer:
2015.06.05 22:20:26 5: DRT: GetUpdate called
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 05 Juni 2015, 23:03:04
Hallo Stefan,

ich habe heute ein Fhem-Update  gemacht und aus der DevIO.pm war das 'even' raus.
So jetzt bekomme ich für ein Register auch Zahlen.

Fhem.cfg Eintrag:

attr DRT IODev DRT710M
attr DRT dev-h-combine 6
attr DRT dev-h-defPoll 1
attr DRT dev-timing-timeout 1
attr DRT obj-h16-len 4
attr DRT obj-h16-unpack c
attr DRT obj-h16-reading VoltageL1.1

Im Log steht folgendens.


mismatch! expect 3 from 1 for module DRT
2015.06.05 22:54:41 5: DRT710M: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.06.05 22:54:41 5: DRT710M: raw read: e6
2015.06.05 22:54:41 5: DRT710M: ParseFrames got: 010308000000e8000000e6
2015.06.05 22:54:41 4: DRT710M: ParseFrames: fcode 3 from 1, data 08000000e80000 calc crc = 33102, read = 58880 -> mismatch! expect 3 from 1 for module DRT
2015.06.05 22:54:41 5: DRT710M: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.06.05 22:54:41 5: DRT710M: raw read: 74
2015.06.05 22:54:41 5: DRT710M: ParseFrames got: 010308000000e8000000e674
2015.06.05 22:54:41 4: DRT710M: ParseFrames: fcode 3 from 1, data 08000000e8000000 calc crc = 13313, read = 29926 -> mismatch! expect 3 from 1 for module DRT
2015.06.05 22:54:41 5: DRT710M: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2015.06.05 22:54:41 5: DRT710M: raw read: 4a
2015.06.05 22:54:41 5: DRT710M: ParseFrames got: 010308000000e8000000e6744a
2015.06.05 22:54:41 4: DRT710M: ParseFrames: fcode 3 from 1, data 08000000e8000000e6 calc crc = 19060, read = 19060  expect 3 from 1 for module DRT
2015.06.05 22:54:41 5: DRT: ParseObj called with 000000e8000000e6 and start 16
2015.06.05 22:54:41 5: DRT: ParseObj ObjInfo: reading=VoltageL1.1, unpack=c, expr=, format=, map=
2015.06.05 22:54:41 4: DRT: ParseObj for VoltageL1.1 assigns 0
2015.06.05 22:54:41 5: DRT710M: ParseFrames done, reply to fCode 3, 1 readings
2015.06.05 22:54:44 5: DRT: UpdateGetSetList full object list: h16
2015.06.05 22:54:44 5: DRT: UpdateSetList: setList=
2015.06.05 22:54:44 5: DRT: UpdateSetList: getList=


Dieser Eintrag :
2015.06.05 22:54:41 5: DRT: ParseObj called with 000000e8000000e6 and start 16
Die die richtige Antwort ist: e8 = 232 und e6 = 230 (Volt). Leider bekomme ich nur ein 0 zurück. Wie komme ich an die richtigen Daten.

Danke Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 Juni 2015, 12:16:59
Hallo Jörg,

Das sieht doch schon gut aus.
Jetzt sind es nur noch zwei kleine Fehler.

1) der Unpack-Code c nimmt nur ein Byte. du möchtest aber vermutlich einen unsigned short Wert mit 16 Bits im big endian Format. Das wäre ein n.

2) len wird als Anzahl der Register interpretiert und sollte daher 2 sein für 2 Register bzw. 4 Bytes und nicht 4.

Damit sollte es dann funktionieren.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: davipet am 06 Juni 2015, 17:08:14
Also der Vollständigkeit halber hier meine Erkenntnisse:

Ich habe den UMG96U mit der Bestellnummer 52.13.029.
Dieser hat keine RS485 Schnittstelle! Aber per RJ11 über Sub-D auf den RS232 - USB Wandler am Raspberry habe ich mit folgendem Code nun auch die Werte im FHEM!


define Power ModbusAttr 4 5
attr Power userattr IODev dev-h-combine dev-h-defPoll dev-i-defFormat obj-h100-reading obj-h101-reading obj-h102-reading obj-h106-reading obj-h107-reading obj-h108-reading obj-h109-reading obj-h110-reading obj-h111-reading obj-h200-expr obj-h200-len obj-h200-reading obj-h201-expr obj-h201-len obj-h201-reading obj-h202-expr obj-h202-len obj-h202-reading obj-h206-expr obj-h206-reading obj-h207-expr obj-h207-reading obj-h208-expr obj-h208-reading obj-h209-expr obj-h209-reading obj-h21-expr obj-h210-expr obj-h210-reading obj-h211-expr obj-h211-reading obj-h279-expr obj-h279-reading obj-h280-expr obj-h280-reading obj-h281-expr obj-h281-reading obj-h40101-reading verbose
attr Power IODev ModbusRS485
attr Power dev-h-combine 20
attr Power dev-h-defPoll 5

attr Power obj-h206-expr ($val/100)*4
attr Power obj-h206-reading Strom_L1
attr Power obj-h207-expr ($val/100)*4
attr Power obj-h207-reading Strom_L2
attr Power obj-h208-expr ($val * 4) /1000
attr Power obj-h208-reading Strom_L3
attr Power obj-h209-expr ($val * 4) / 1000
attr Power obj-h209-reading W_Leistung_L1
attr Power obj-h210-expr ($val * 4) / 1000
attr Power obj-h210-reading W_Leistung_L2
attr Power obj-h211-expr ($val * 4) / 1000
attr Power obj-h211-reading W_Leistung_L3
attr Power obj-h279-expr ($val * 4) / 100
attr Power obj-h279-reading Wirkleistung_gesamt
attr Power room System,Verbräuche
attr Power verbose 0


Zu Beachten ist, dass ich Adresse 4 verwende! (Weil andere Teilnehmer auf dem Profibus sind - welcher ebenfalls an dem Gerät arbeitet!)

Und ich habe die Speed aufgrund fliegender Verdrahtung noch auf 9600 Baud stehen.

Danke an Marie für die Unterstützung!

Gruß

David
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 17 Juni 2015, 18:52:40
Zitat von: StefanStrobel am 06 Juni 2015, 12:16:59
...
Das sieht doch schon gut aus.
Jetzt sind es nur noch zwei kleine Fehler.
...

Hallo Stefan,

jetzt bekomme ich schon mehr Werte angezeigt. Aber die Registern liegen sehr weit auseinander, so das nicht immer alle Werte ausgelesen werden oder richtig angezeigt werden. z.Z. habe ich dev-h-combine = 3 , da geht es jetzt einigermaßen. Hoffe ich.

Es wäre noch schön wenn du den Parameter parity noch einbauen könntest, da man ansonsten bei jedem Update daran denken muß im DevIo.pm wieder auf  $po->parity('even');  umzustellen.

Ich hänge mal meine Def. für den DRT710M mit an, vieleicht braucht es ja mal einer. Die dev-timing-timeout habe ich auf 5 angepaßt, ab da wurden dann erst Daten richtig eingelesen, vorher stand im Log das nicht alles gelesen werden konnte.

Vielen Dank.
Tschüss Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: ChrisD am 17 Juni 2015, 19:40:53
Hallo,

Es ist nicht nötig DevIO zu ändern, die Schnittstellenparameter können direkt vom Modul geändert werden wenn eine Callback-Funktion beim Aufruf von 'DevIo_OpenDev' mit übergeben wird und diese die Parameter wie gewünscht setzt.

Grüße,

ChrisD
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 18 Juni 2015, 20:30:01
Zitat von: ChrisD am 17 Juni 2015, 19:40:53
...
Es ist nicht nötig DevIO zu ändern, die Schnittstellenparameter können direkt vom Modul geändert werden wenn eine Callback-Funktion beim Aufruf von 'DevIo_OpenDev' mit übergeben wird und diese die Parameter wie gewünscht setzt.
....

Hallo ChrisD,

kannst bitte ein kurzes Beispiel geben oder auf ein vorhandenes Perlscript verweisen. Ich habe schon etwas gesucht. Da ich aber nicht so richtig weiss wonach ich suchen muss, ist es schwer.  Vielen Dank.

Tschüss Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: ChrisD am 18 Juni 2015, 21:05:18
Hallo,

Ich habe dies vor einiger Zeit in verschiedenen Modulen eingebaut, u.a. auch für ModbusRTU. Hier (https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/36_ModbusRTU.pm) findest du ein Beispiel.

Anbei findest du auch ein Diff für 98_Modbus mit einer Möglichkeit das Ganze zu implementieren (ungetestet). Du kannst damit bei der Definition das Zeichenformat angeben:
define mb Modbus /dev/ttyUSB0@19200 8 even 1

Grüße,

ChrisD
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 20 Juni 2015, 13:08:18
Zitat von: ChrisD am 18 Juni 2015, 21:05:18
...
Anbei findest du auch ein Diff für 98_Modbus mit einer Möglichkeit das Ganze zu implementieren (ungetestet). Du kannst damit bei der Definition das Zeichenformat angeben:
define mb Modbus /dev/ttyUSB0@19200 8 even 1
....

Hallo ChrisD,

vielen Dank für die Erweiterung. Ich habe sie eingespielt und es funktioniert. Vielen Dank.

@Stefan: Hallo Stefan, damit hat sich das Problem mir der parity gelöst. Mit dem oben genannten Patch und dem Eintrag geht es. Es müßte nur diese Änderung im 98_Modbus.pm eingespielt werden.

Gruß Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 21 Juni 2015, 22:29:17
Hallo Chris,

vielen Dank für Deine Unterstützung!
Das mit der Callback-Funktion ist eine gute Lösung. Inzwischen hat jedoch Rudi eine Erweiterung in DevIO eingebaut, die für alle Module funktionieren sollte, die DevIO verwenden. Damit muss dieses Feature nicht mehr in die Module sondern wird zentral bereitgestellt.

Eine neue Version von Modbus.pm werde ich dennoch demnächst hier zum Testen posten. Ich habe ein paar Funktionen zum Überwachen der Bus-Nutzung bzw. zum Profiling eingebaut.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 22 Juni 2015, 20:17:24
Hallo,

anbei eine neue Version des Basismoduls Modbus.pm.
Neu ist eine Bus-Profiling / Statistik-Funktion. Wenn man das neue Attribut profileInterval auf z.B. 300 setzt, dann wird für alle 300 Sekunden summiert, wie viel Zeit mit Senden, Warten auf Antwort, Lesen etc. verbraucht wird.
Das Ergebnis wird nach Ablauf des ersten Intervalls in Readings abgelegt (siehe angehängtes Bild).
Der Wert für profileInterval sollte deutlich größer gewählt werden als das Intervall zum Abfragen der Readings.

Profiler_Delay ist die Zeit, die das Modul wartet dass konfigurierte Delays abgelaufen sind (commDelay, sendDelay bei ModbusAttr).
Profiler_Fhem ist die interne Verarbeitung
Profiler_Idle ist die ungenutzte Zeit
Profiler_Read ist die Zeit zum Lesen einer Antwort
Profiler_Send die Zeit zum vorbereiten und senden von Requests
Profiler_Wait die Zeit, in der das Modul auf eine Antwort "wartet" (Fhem wartet ja nicht wirklich sondern kümmert sich in der Zeit um andere Module)

Zudem hat in der bisherigen Version ein Attribut zum Setzen von Defaults für obj-x-Expr per dev-x-defExpr gefehlt. Das ist jetzt drin und wird ModbusAttr bereit gestellt.

Zum setzten der Kommunikationsparameter (Datenbits, Parität und Stopbits) muss man diese einfach nur durch Kommas getrennt hinter die Baudrate setzen. (siehe http://forum.fhem.de/index.php/topic,38242.0.html)
Es wäre hilfreich wenn ein paar Leute die neue Version testen könnten bevor ich sie einchecke.

Gruss / Thanx
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 22 Juni 2015, 23:15:39
Lieber Stefan,
vielen Dank für die Erweiterung. Darauf habe ja u.a. ich gewartet  :).

Habe das neue Modul am Testen. Bisher läuft alles.
Wie ich vermute, zeigt Profiler_Idle_sum wie viel Luft ich noch auf dem BUS habe, oder?
Ich möchte gern sehen, ob ich Modbus-Geräte noch öfter abfragen kann oder ob der BUS schon dicht ist.

Bisher werden Sekunden angezeigt. Vielleicht ist ein %-Wert von profileInterval sinnvoll?

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 23 Juni 2015, 09:59:41
Hallo Roger,

ja, bei Idle siehst Du wie viel "Luft" noch auf dem Bus ist ;-)
das mit den Prozenten habe ich mir auch überlegt, aber ich wollte die Liste der Readings nicht zumüllen.
Evt. wäre ein weiteres Attribut eine Möglichkeit, mit dem man von Sekunden auf Prozente umschalten kann.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 23 Juni 2015, 23:44:28
Hallo Stefan,

ich habe mir heute die neue Version von 98_Modbus.. raufgespielt. Läuft ganz gut. Werde mal einige Tage testen. Gute Arbeit.
Ein Paar Frage habe ich aber noch:
Wenn ich beim DRT710M dev-h-combine = 3 einstelle werden alle Daten gezogen. Wenn ich aber einen höheren Wert (10) nehme, werden einige Werte nicht gezogen. Die Werte für Frequenz(h78) + PowerL3(h148) sind immer identisch. Wenn ich weniger Werte bzw. nur einen Wert Abfrage kommen die richtigen Werte. :-(. Vielleicht hast du ja eine Idee wo ich suchen kann.
Die Auslastung sieht zur Zeit auf meinem RaspBerry Pi V1 so aus.

Tschüss Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 27 Juni 2015, 13:04:23
Hallo Jörg,

ich vermute dass das an dem Limit Deines Geräts liegt. Für jedes Gerät sollte in der Doku stehen, wie viele Register auf einmal gelesen werden können. Manchmal sind das nur 3, manchmal 10, manchmal auch deutlich mehr ...
Wenn man zu viel abfragt, kommt nichts oder ein Fehler zurück.
Schau doch mal was in der Doku von Deinem Gerät steht.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 14 September 2015, 16:10:09
Hallo, ich habe die Tage meine beiden Stromzähler eastron sdm220m in fhem mit der 98_ModbusSDM220M.pm aus http://forum.fhem.de/index.php/topic,25315.msg274011.html#msg274011 (http://forum.fhem.de/index.php/topic,25315.msg274011.html#msg274011) eingebunden. Die beiden Zähler sind mit:

define Xtender_AC_in ModbusSDM220M 1 30
attr Xtender_AC_in userattr IODev event-on-update-reading
attr Xtender_AC_in IODev Eastron
attr Xtender_AC_in event-on-update-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Enel:Energy_total__kWh
attr Xtender_AC_in group Xtender
attr Xtender_AC_in userReadings Verbrauch_Enel:Energy_total__kWh { ReadingsNum("$name","Energy_total__kWh",0)-106.25 . " kWh";; },

define Xtender_AC_out ModbusSDM220M 2 30
attr Xtender_AC_out userattr IODev event-on-update-reading
attr Xtender_AC_out IODev Eastron
attr Xtender_AC_out event-on-update-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Home:Energy_total__kWh
attr Xtender_AC_out group Xtender
attr Xtender_AC_out userReadings Verbrauch_Home:Energy_total__kWh { ReadingsNum("$name","Energy_total__kWh",0)-314.05 . " kWh";; },


definiert.

Das funktioniert vorzüglich inkl. Plots und statistics-Auswertungen.

Was mich stört sind ein paar Fehlermeldungen im fhem-log:

2015.09.14 14:33:12 1: PERL WARNING: Missing argument in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.14 14:33:12 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/98_Modbus.pm line 401.
2015.09.14 14:33:13 1: PERL WARNING: Argument "export.active.energy" isn't numeric in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.14 14:33:36 1: PERL WARNING: Argument "import+export.active.energy" isn't numeric in sprintf at ./FHEM/98_Modbus.pm line 401.


Ich kann die Fehler leider nicht nachvollziehen (könnte es etwas mit "export" zu tun haben? Ich speise nicht ein), würde mich aber freuen wenn einer von euch eine Idee hätte?!

Das ist die 98_ModbusSDM220M.pm

##############################################
##############################################
# $Id: 98_ModbusSDM220M.pm
#
# fhem Modul für Stromzähler SDM220M von B+G E-Tech & EASTON
# verwendet Modbus.pm als Basismodul für die eigentliche Implementation des Protokolls.
#
# This file is part of fhem.
#
# Fhem is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# Fhem is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with fhem.  If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
# Changelog:
# 2015-02-27 initial release
# 2015-03-14 Anpassungan an neues 98_Modbus.pm, defaultpoll --> poll, defaultpolldelay --> polldelay,
# attribute für timing umbenannt,
# parseInfo --> SDM220MparseInfo, deviceInfo --> SDM220MdeviceInfo

package main;

use strict;
use warnings;
use Time::HiRes qw( time );

sub ModbusSDM220M_Initialize($);

# deviceInfo defines properties of the device.
# some values can be overwritten in parseInfo, some defaults can even be overwritten by the user with attributes if a corresponding attribute is added to AttrList in _Initialize.
#
my %SDM220MdeviceInfo = (
"timing" => {
timeout => 2, # 2 seconds timeout when waiting for a response
commDelay => 0.7, # 0.7 seconds minimal delay between two communications e.g. a read a the next write,
# can be overwritten with attribute commDelay if added to AttrList in _Initialize below
sendDelay => 0.7, # 0.7 seconds minimal delay between two sends, can be overwritten with the attribute
# sendDelay if added to AttrList in _Initialize function below
},
"i" => { # details for "input registers" if the device offers them
read => 4, # use function code 4 to read discrete inputs. They can not be read by definition.
defLen => 2, # default length (number of registers) per value ((e.g. 2 for a float of 4 bytes that spans 2 registers)
# can be overwritten in parseInfo per reading by specifying the key "len"
combine => 40, # allow combined read of up to 10 adjacent registers during getUpdate
# combine => 1, # no combined read (read more than one registers with one read command) during getUpdate
defFormat => "%.1f", # default format string to use after reading a value in sprintf
# can be overwritten in parseInfo per reading by specifying the key "format"
defUnpack => "f>", # default pack / unpack code to convert raw values, e.g. "n" for a 16 bit integer oder
# "f>" for a big endian float IEEE 754 floating-point numbers
# can be overwritten in parseInfo per reading by specifying the key "unpack"
defPoll => 1, # All defined Input Registers should be polled by default unless specified otherwise in parseInfo or by attributes
defShowGet => 1, # default für showget Key in parseInfo
},
"h" => { # details for "holding registers" if the device offers them
read => 3, # use function code 3 to read holding registers.
write => 16, # use function code 6 to write holding registers (alternative could be 16)
defLen => 2, # default length (number of registers) per value (e.g. 2 for a float of 4 bytes that spans 2 registers)
# can be overwritten in parseInfo per reading by specifying the key "len"
combine => 10, # allow combined read of up to 10 adjacent registers during getUpdate
defUnpack => "f>", # default pack / unpack code to convert raw values, e.g. "n" for a 16 bit integer oder
# "f>" for a big endian float IEEE 754 floating-point numbers
# can be overwritten in parseInfo per reading by specifying the key "unpack"
defShowGet => 1, # default für showget Key in parseInfo
},
);

# %parseInfo:
# r/c/i+adress => objHashRef (h = holding register, c = coil, i = input register, d = discrete input)
# the address is a decimal number without leading 0
#
# Explanation of the parseInfo hash sub-keys:
# name internal name of the value in the modbus documentation of the physical device
# reading name of the reading to be used in Fhem
# set can be set to 1 to allow writing this value with a Fhem set-command
# setmin min value for input validation in a set command
# setmax max value for input validation in a set command
# hint string for fhemweb to create a selection or slider
# expr perl expression to convert a string after it has bee read
# map a map string to convert an value from the device to a more readable output string
# or to convert a user input to the machine representation
# e.g. "0:mittig, 1:oberhalb, 2:unterhalb"
# setexpr per expression to convert an input string to the machine format before writing
# this is typically the reverse of the above expr
# format a format string for sprintf to format a value read
# len number of Registers this value spans
# poll defines if this value is included in the read that the module does every defined interval
# this can be changed by a user with an attribute
# unpack defines the translation between data in the module and in the communication frame
# see the documentation of the perl pack function for details.
# example: "n" for an unsigned 16 bit value or "f>" for a float that is stored in two registers
# showget can be set to 1 to allow a Fhem get command to read this value from the device
# polldelay if a value should not be read in each iteration after interval has passed,
# this value can be set to a multiple of interval

my %SDM220MparseInfo = (
# Spannung, nur bei jedem 5. Zyklus
"i0" => { # input register 0x0000
name => "Line to neutral volts", # internal name of this register in the hardware doc
reading => "Voltage__V", # name of the reading for this value
format => '%.1f V', # format string for sprintf
polldelay => "x5", # only poll this Value if last read is older than 5*Iteration, otherwiese getUpdate will skip it
},

# Strom
"i6" => { # input register 0x0006
name => "current", # internal name of this register in the hardware doc
reading => "Current__A", # name of the reading for this value
format => '%.2f A', # format string for sprintf
},

# Leistung in W
"i12" => { # input register 0x000C, Phase 1: Leistung
name => "Active power", # internal name of this register in the hardware doc
reading => "Power__W", # name of the reading for this value
format => '%.f W', # format string for sprintf
},

# Scheinleistung in VA
"i18" => { # input register 0x0012, Phase 1: Volt Ampere
name => "Apparent power", # internal name of this register in the hardware doc
reading => "Power__VA", # name of the reading for this value
format => '%.1f VA', # format string for sprintf
},

# Blindleistung in VAr
"i24" => { # input register 0x0018
name => "Reactive power", # internal name of this register in the hardware doc
reading => "Power__VAr", # name of the reading for this value
format => '%.1f VAr', # format string for sprintf
},

# Leistungsfaktor, nur jeden 10. Zyklus
"i30" => { # input register 0x001E
# The power factor has its sign adjusted to indicate the nature of the load.
# Positive for capacitive and negative for inductive
name => "Power factor", # internal name of this register in the hardware doc
reading => "PowerFactor", # name of the reading for this value
format => '%.1f', # format string for sprintf
polldelay => "x10", # only poll this Value if last read is older than 10*Iteration, otherwiese getUpdate will skip it
},

# Phasenverschiebung, nur jeden 3. Zyklus
"i36" => { # input register 0x0024
name => "Phase angle", # internal name of this register in the hardware doc
reading => "CosPhi", # name of the reading for this value
format => '%.1f %', # format string for sprintf
polldelay => "x3", # only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
},

# Frequenz, nur bei jedem 10. Zyklus
"i70" => { # input register 0x0046
name => "Frequency", # internal name of this register in the hardware doc
reading => "Frequency__Hz", # name of the reading for this value
format => '%.1f Hz', # format string for sprintf
polldelay => "x10", # only poll this Value if last read is older than 10*Iteration, otherwiese getUpdate will skip it
},

# Arbeit, Zyklus: jede Minute
"i72" => { # input register 0x0048
name => "Import active energy", # internal name of this register in the hardware doc
reading => "Energy_import__kWh", # name of the reading for this value
format => '%.3f kWh', # format string for sprintf
polldelay => 60, # request only if last read is older than 60 seconds
},
"i74" => { # input register 0x004A
name => "Export active energy", # internal name of this register in the hardware doc
reading => "Energy_export__kWh", # name of the reading for this value
format => '%.3f kWh', # format string for sprintf
polldelay => 60, # request only if last read is older than 60 seconds
},
"i76" => { # input register 0x004C
name => "Import reactive energy",# internal name of this register in the hardware doc
reading => "Energy_import__kVArh", # name of the reading for this value
format => '%.3f kVArh', # format string for sprintf
polldelay => 60, # request only if last read is older than 60 seconds
},
"i78" => { # input register 0x004E
name => "Export reactive energy",# internal name of this register in the hardware doc
reading => "Energy_export__kVArh", # name of the reading for this value
format => '%.3f kVArh', # format string for sprintf
polldelay => 60, # request only if last read is older than 60 seconds
},

# kWh Gesamtwerte, Zyklus: jede Minute
"i342" => { # input register 0x0156
name => "Total active energy", # internal name of this register in the hardware doc
reading => "Energy_total__kWh", # name of the reading for this value
format => '%.3f kWh', # format string for sprintf
polldelay => 60, # request only if last read is older than 60 seconds
},
"i344" => { # input register 0x0158
name => "Total reactive energy", # internal name of this register in the hardware doc
reading => "Energy_total__kVArh", # name of the reading for this value
format => '%.3f kVArh', # format string for sprintf
polldelay => 60, # request only if last read is older than 60 seconds
},


###############################################################################################################
# Holding Register
###############################################################################################################
"h12" => { # holding register 0x000C
# Write relay on period in milliseconds: 60, 100 or 200, default 100
name => "Relay Pulse Width", # internal name of this register in the hardware doc
reading => "System_Pulse_Width__ms",# name of the reading for this value
format => '%.f ms', # format string for sprintf
hint => "60,100,200", # string for fhemweb to create a selection or slider
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

"h18" => { # holding register 0x0012
# Write the network port parity/stop bits for MODBUS Protocol, where:
# 0 = One stop bit and no parity, default.
# 1 = One stop bit and even parity.
# 2 = One stop bit and odd parity.
# 3 = Two stop bits and no parity.
# Requires a restart to become effective.
name => "Network Parity Stop", # internal name of this register in the hardware doc
reading => "Modbus_Parity_Stop", # name of the reading for this value
map => "0:1stop.bit_no.parity, 1:1stop.bit_even.parity, 2:1stop.bit_odd.parity, 3:2stop.bits_no.parity", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,2,3", # string for fhemweb to create a selection or slider
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

"h20" => { # holding register 0x0014
# Write the network port node address: 1 to 247 for MODBUS Protocol, default 1.
# Requires a restart to become effective.
name => "Network Node", # internal name of this register in the hardware doc
reading => "Modbus_Node_adr", # name of the reading for this value
min => 1, # input validation for set: min value
max => 247, # input validation for set: max value
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

"h28" => { # holding register 0x001C
# Write the network port baud rate for MODBUS Protocol, where:
# 0=2400; 1=4800; 2=9600; 5=1200
# Requires no restart, wird sofort active!
name => "Network Baud Rate", # internal name of this register in the hardware doc
reading => "Modbus_Speed__baud", # name of the reading for this value
map => "0:2400, 1:4800, 2:9600, 5:1200", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,2,5", # string for fhemweb to create a selection or slider
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

"h86" => { # holding register 0x0056
# 0001: Import active energy
# 0002: Import + export active energy
# 0004: Export active energy, (default)
# 0005: Import reactive energy
# 0006: Import + export reactive energy
# 0008: Export reactive energy
name => "Pulse1 output", # internal name of this register in the hardware doc
reading => "Relay1_Energy_Type", # name of the reading for this value
unpack => "f>", # ??? pack / unpack code to convert raw values
map => "1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,4,5,6,8", # string for fhemweb to create a selection or slider
format => '%.f', # format string for sprintf
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

"h62720" => { # holding register 0xF500
# Demand interval , slide time, automatic scroll display interval(scroll Time), Backlight time
# Data Format: BCD min-min-s-min 10-01 -00-60
# scroll time=0: the display does not scroll automatically.
# Backlight time=0 Backlight always on
name => "Demand interval", # internal name of this register in the hardware doc
reading => "system_demand_interval",# name of the reading for this value
unpack => "N", # BCD pack / unpack code to convert raw values
format => '', # format string for sprintf
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

"h63760" => { # holding register 0xF910
# Data Format: Hex
# 0000: 0.001kwh( kvarh) /imp( default)
# 0001: 0.01kwh( kvarh) /imp
# 0002: 0.1kwh( kvarh) /imp
# 0003: 1kwh( kvarh) /imp
name => "Pulse 1 constant", # internal name of this register in the hardware doc
reading => "System_Pulse_constant", # name of the reading for this value
unpack => "H*", # Hex pack / unpack code to convert raw values
map => "0:0.001/imp, 1:0.01/imp, 2:0.1/imp, 3:1/imp", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,2,3", # string for fhemweb to create a selection or slider
format => '', # format string for sprintf
poll => "once", # only poll once after define after define (or after a set)
set => 1, # this value can be set
},

"h63776" => { # holding register 0xF920
# Data Format: Hex
# 0001:mode 1(total = import)
# 0002:mode 2(total = import + export) ( default)
# 0003:mode 3 (total = import - export)
name => "Measurement mode", # internal name of this register in the hardware doc
reading => "System_Measurement_mode", # name of the reading for this value
unpack => "H*", # Hex pack / unpack code to convert raw values
map => "1:import, 2:import+export, 3:import-export", # map to convert visible values to internal numbers (for reading and writing)
hint => "1,2,3", # string for fhemweb to create a selection or slider
format => '', # format string for sprintf
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},

# Ende parseInfo
);


#####################################
sub
ModbusSDM220M_Initialize($)
{
    my ($modHash) = @_;

require "$attr{global}{modpath}/FHEM/98_Modbus.pm";

$modHash->{parseInfo}  = \%SDM220MparseInfo; # defines registers, inputs, coils etc. for this Modbus Defive

$modHash->{deviceInfo} = \%SDM220MdeviceInfo; # defines properties of the device like
# defaults and supported function codes

ModbusLD_Initialize($modHash); # Generic function of the Modbus module does the rest

$modHash->{AttrList} = $modHash->{AttrList} . " " . # Standard Attributes like IODEv etc
$modHash->{ObjAttrList} . " " . # Attributes to add or overwrite parseInfo definitions
$modHash->{DevAttrList} . " " . # Attributes to add or overwrite devInfo definitions
"poll-.* " . # overwrite poll with poll-ReadingName
"polldelay-.* "; # overwrite polldelay with polldelay-ReadingName
}


1;

=pod
=begin html

<a name="ModbusSDM220M"></a>
<h3>ModbusSDM220M</h3>
<ul>
    ModbusSDM220M uses the low level Modbus module to provide a way to communicate with SDM220M smart electrical meter from B+G E-Tech & EASTON.
It defines the modbus input and holding registers and reads them in a defined interval.

<br>
    <b>Prerequisites</b>
    <ul>
        <li>
          This module requires the basic Modbus module which itsef requires Device::SerialPort or Win32::SerialPort module.
        </li>
    </ul>
    <br>

    <a name="ModbusSDM220MDefine"></a>
    <b>Define</b>
    <ul>
        <code>define &lt;name&gt; ModbusSDM220M &lt;Id&gt; &lt;Interval&gt;</code>
        <br><br>
        The module connects to the smart electrical meter with Modbus Id &lt;Id&gt; through an already defined modbus device and actively requests data from the
        smart electrical meter every &lt;Interval&gt; seconds <br>
        <br>
        Example:<br>
        <br>
        <ul><code>define SDM220M ModbusSDM220M 1 60</code></ul>
    </ul>
    <br>

    <a name="ModbusSDM220MConfiguration"></a>
    <b>Configuration of the module</b><br><br>
    <ul>
        apart from the modbus id and the interval which both are specified in the define command there is nothing that needs to be defined.
However there are some attributes that can optionally be used to modify the behavior of the module. <br><br>
       
        The attributes that control which messages are sent / which data is requested every &lt;Interval&gt; seconds are:

        <pre>
poll-Energy_total__kWh
poll-Energy_import__kWh
</pre>
       
        if the attribute is set to 1, the corresponding data is requested every &lt;Interval&gt; seconds. If it is set to 0, then the data is not requested.
        by default the temperatures are requested if no attributes are set.
        <br><br>
        Example:
        <pre>
        define SDM220M ModbusSDM220M 1 60
        attr SDM220M poll-Energy_total__kWh 0
        </pre>
    </ul>

    <a name="ModbusSDM220M"></a>
    <b>Set-Commands</b><br>
    <ul>
        The following set options are available:
        <pre>
        </pre>
    </ul>
<br>
    <a name="ModbusSDM220MGet"></a>
    <b>Get-Commands</b><br>
    <ul>
        All readings are also available as Get commands. Internally a Get command triggers the corresponding
        request to the device and then interprets the data and returns the right field value. To avoid huge option lists in FHEMWEB, only the most important Get options
        are visible in FHEMWEB. However this can easily be changed since all the readings and protocol messages are internally defined in the modue in a data structure
        and to make a Reading visible as Get option only a little option (e.g. <code>showget => 1</code> has to be added to this data structure
    </ul>
<br>
    <a name="ModbusSDM220Mattr"></a>
    <b>Attributes</b><br><br>
    <ul>
<li><a href="#do_not_notify">do_not_notify</a></li>
        <li><a href="#readingFnAttributes">readingFnAttributes</a></li>
        <br>
<li><b>poll-Energy_total__kWh</b></li>
<li><b>poll-Energy_import__kWh</b></li>
            include a read request for the corresponding registers when sending requests every interval seconds <br>
        <li><b>timeout</b></li>
            set the timeout for reads, defaults to 2 seconds <br>
<li><b>minSendDelay</b></li>
minimal delay between two requests sent to this device
<li><b>minCommDelay</b></li> 
minimal delay between requests or receptions to/from this device
    </ul>
    <br>
</ul>

=end html
=cut


Grüße

H.

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 September 2015, 18:18:34
Hallo,

aus meiner Sicht ist das ein Fehler im SDM220 Modul in der Definition von h86:


map => "1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,4,5,6,8", # string for fhemweb to create a selection or slider
format => '%.f', # format string for sprintf


Das Modbus-Basismodul verwendet zuerst die Map um den numerischen Wert in einen String zu verwandeln. Danach wird der Wert mit sprintf konvertiert. Dabei soll %.f verwendet werden und das passt nicht für Strings.
Versuch doch mal die Zeile mit format => zu entfernen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: satprofi am 14 September 2015, 18:30:33
Hallo.
Was hast du unter Readings beim Wert "Relay1_Energy_Type" stehen? Keine 0 ?
Ich habe dort 0 stehen, und keine Probleme. Vielleicht stimmt der Wert dort nicht.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 10:39:27
@satprofi: Relay1_Energy_Type ist bei mir auch 0

@Stefan: ein (nur Zeile format geändert)

"h86" => { # holding register 0x0056
# 0001: Import active energy
# 0002: Import + export active energy
# 0004: Export active energy, (default)
# 0005: Import reactive energy
# 0006: Import + export reactive energy
# 0008: Export reactive energy
name => "Pulse1 output", # internal name of this register in the hardware doc
reading => "Relay1_Energy_Type", # name of the reading for this value
unpack => "f>", # ??? pack / unpack code to convert raw values
map => "1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,4,5,6,8", # string for fhemweb to create a selection or slider
format => # format string for sprintf
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},


oder auch ein (nur Zeile format geändert)

"h86" => { # holding register 0x0056
# 0001: Import active energy
# 0002: Import + export active energy
# 0004: Export active energy, (default)
# 0005: Import reactive energy
# 0006: Import + export reactive energy
# 0008: Export reactive energy
name => "Pulse1 output", # internal name of this register in the hardware doc
reading => "Relay1_Energy_Type", # name of the reading for this value
unpack => "f>", # ??? pack / unpack code to convert raw values
map => "1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy", # map to convert visible values to internal numbers (for reading and writing)
hint => "0,1,4,5,6,8", # string for fhemweb to create a selection or slider
format => '', # format string for sprintf
poll => "once", # only poll once after define (or after a set)
set => 1, # this value can be set
},


führt jetzt zu anderen Fehlermeldungen. Auch ein komplettes Entfernen der format-Zeile.

Relay1_Energy_Type enthält in allen drei Fällen dann export.active.energy

2015.09.15 10:29:02 1: PERL WARNING: Missing argument in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.15 10:29:02 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/98_Modbus.pm line 401.

2015.09.15 10:29:53 1: PERL WARNING: Use of uninitialized value in string ne at fhem.pl line 3894.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: satprofi am 15 September 2015, 14:07:55
hallo.
Lese mal deinen SDM manuell aus, am Gerät selbst, und schau ob du überhaupt diese Werte abrufen kannst? Vielleicht hast du andere Version deines 220er.
Was passiert wenn du das Register h86 komplett entfernst?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 14:55:19
Hallo Stefan, wenn ich das Register komplett entferne kommt nur noch

2015.09.15 14:50:23 1: PERL WARNING: Missing argument in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.15 14:50:23 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/98_Modbus.pm line 401.


als Fehler.

Wie lese ich den Zähler manuell aus? Welches Progrämmchen kann das (Win)? EDIT: Quark nicht Win, das Ding hängt ja am Raspi.

Wenn ich wenigstens mal wüßte, was dieses Register genau macht?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: satprofi am 15 September 2015, 15:14:03
na direkt am display ;-)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 15:21:43
Ach so ;) ... bin gewohnt, dass es kompliziert sein muß :D ..... und wie würde es sich am Display nennen?

Edit: hab jetzt alle Anzeigen am Gerät durch. Nichts was Ähnlichkeit mit "Relay1_Energy_Type" hat gefunden.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 15:52:59
Zitat von: StefanStrobel am 14 September 2015, 18:18:34
Das Modbus-Basismodul verwendet zuerst die Map um den numerischen Wert in einen String zu verwandeln. Danach wird der Wert mit sprintf konvertiert. Dabei soll %.f verwendet werden und das passt nicht für Strings.

welcher Ersatz für %.f würde denn für Strings passen?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: satprofi am 15 September 2015, 17:25:10
Zitat von: holle75 am 15 September 2015, 15:21:43
Ach so ;) ... bin gewohnt, dass es kompliziert sein muß :D ..... und wie würde es sich am Display nennen?

Edit: hab jetzt alle Anzeigen am Gerät durch. Nichts was Ähnlichkeit mit "Relay1_Energy_Type" hat gefunden.

Relay_Energy_Type musst du in den settings abfragen, heisst du musst ins Menü zu den Einstellungen. Wo auch ID, Baudrate, etc. eingestellt wird.
Hast du das auch gemacht?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 17:34:37
Jo, im device gibt es sowohl unter set als auch unter get Relay_Energy_Type. Get ergibt "0"
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 19:07:07
Hab jetzt mal spaßeshalber per set Relay_Energy_Type auf eine andere Zahl setzen wollen und bekomme als Ergebnis dann den Fehler "Set Value X did not match defined map"

und ein log mit verbose 5 auf dem einen Zähler:

2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate called
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate objects from attributes:
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate full object list: h12 h18 h20 h28 h62720 h63760 h63776 h86 i0 i12 i18 i24 i30 i342 i344 i36 i6 i70 i72 i74 i76 i78
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h12 => System_Pulse_Width__ms, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request System_Pulse_Width__ms
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h18 => Modbus_Parity_Stop, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Modbus_Parity_Stop
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h20 => Modbus_Node_adr, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Modbus_Node_adr
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h28 => Modbus_Speed__baud, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Modbus_Speed__baud
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h62720 => system_demand_interval, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request system_demand_interval
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h63760 => System_Pulse_constant, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request System_Pulse_constant
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h63776 => System_Measurement_mode, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request System_Measurement_mode
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check h86 => Relay1_Energy_Type, poll = once, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Relay1_Energy_Type
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i0 => Voltage__V, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Voltage__V
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i12 => Power__W, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Power__W
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i18 => Power__VA, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Power__VA
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i24 => Power__VAr, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Power__VAr
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i30 => PowerFactor, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request PowerFactor
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i342 => Energy_total__kWh, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Energy_total__kWh
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i344 => Energy_total__kVArh, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Energy_total__kVArh
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i36 => CosPhi, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request CosPhi
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i6 => Current__A, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Current__A
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i70 => Frequency__Hz, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Frequency__Hz
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i72 => Energy_import__kWh, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Energy_import__kWh
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i74 => Energy_export__kWh, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Energy_export__kWh
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i76 => Energy_import__kVArh, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Energy_import__kVArh
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate check i78 => Energy_export__kVArh, poll = 1, last = 0
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate will request Energy_export__kVArh
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate tries to combine read commands
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for h is 10
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines System_Pulse_Width__ms / h12 with Modbus_Parity_Stop / h18, span = 8, dropping read for h18
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines System_Pulse_Width__ms / h12 with Modbus_Node_adr / h20, span = 10, dropping read for h20
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine System_Pulse_Width__ms / h12 with Modbus_Speed__baud / h28, span would be 18
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for h is 10
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine Modbus_Speed__baud / h28 with system_demand_interval / h62720, span would be 62694
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for h is 10
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine system_demand_interval / h62720 with System_Pulse_constant / h63760, span would be 1042
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for h is 10
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine System_Pulse_constant / h63760 with System_Measurement_mode / h63776, span would be 18
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for h is 10
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine System_Measurement_mode / h63776 with Relay1_Energy_Type / h86, span would be -63688
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for h is 10
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine Relay1_Energy_Type / h86 with Voltage__V / i0, span would be -84
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for i is 40
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Voltage__V / i0 with Power__W / i12, span = 14, dropping read for i12
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Voltage__V / i0 with Power__VA / i18, span = 20, dropping read for i18
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Voltage__V / i0 with Power__VAr / i24, span = 26, dropping read for i24
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Voltage__V / i0 with PowerFactor / i30, span = 32, dropping read for i30
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine Voltage__V / i0 with Energy_total__kWh / i342, span would be 344
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for i is 40
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Energy_total__kWh / i342 with Energy_total__kVArh / i344, span = 4, dropping read for i344
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine Energy_total__kWh / i342 with CosPhi / i36, span would be -304
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for i is 40
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine CosPhi / i36 with Current__A / i6, span would be -28
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for i is 40
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate cannot combine Current__A / i6 with Frequency__Hz / i70, span would be 66
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate: combine for i is 40
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Frequency__Hz / i70 with Energy_import__kWh / i72, span = 4, dropping read for i72
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Frequency__Hz / i70 with Energy_export__kWh / i74, span = 6, dropping read for i74
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Frequency__Hz / i70 with Energy_import__kVArh / i76, span = 8, dropping read for i76
2015.09.15 19:11:38 5: Xtender_AC_in: GetUpdate combines Frequency__Hz / i70 with Energy_export__kVArh / i78, span = 10, dropping read for i78
2015.09.15 19:11:38 5: Eastron: Send adds fcode 3 for Modbus_Speed__baud to queue: 0103001c000205cd pdu 03001c0002
2015.09.15 19:11:38 5: Eastron: Send adds fcode 4 for CosPhi to queue: 01040024000231c0 pdu 0400240002
2015.09.15 19:11:38 5: Eastron: Send adds fcode 3 for Relay1_Energy_Type to queue: 010300560002241b pdu 0300560002
2015.09.15 19:11:38 5: Eastron: Send adds fcode 4 for Voltage__V to queue: 010400000020f1d2 pdu 0400000020
2015.09.15 19:11:38 5: Eastron: Send adds fcode 3 for system_demand_interval to queue: 0103f5000002f7c7 pdu 03f5000002
2015.09.15 19:11:38 5: Eastron: Send adds fcode 3 for System_Pulse_constant to queue: 0103f9100002f552 pdu 03f9100002
2015.09.15 19:11:38 5: Eastron: Send adds fcode 4 for Energy_total__kWh to queue: 0104015600041025 pdu 0401560004
2015.09.15 19:11:38 5: Eastron: Send adds fcode 3 for System_Measurement_mode to queue: 0103f9200002f55d pdu 03f9200002
2015.09.15 19:11:38 5: Eastron: Send adds fcode 4 for Frequency__Hz to queue: 01040046000a91d8 pdu 040046000a
2015.09.15 19:11:38 5: Eastron: Send adds fcode 3 for System_Pulse_Width__ms to queue: 0103000c000a05ce pdu 03000c000a
2015.09.15 19:11:38 5: Eastron: Send adds fcode 4 for Current__A to queue: 01040006000291ca pdu 0400060002
2015.09.15 19:11:38 5: Xtender_AC_in: ParseObj called with 40000000 and start 28
2015.09.15 19:11:38 5: Xtender_AC_in: ParseObj ObjInfo: reading=Modbus_Speed__baud, unpack=f>, expr=, format=, map=0:2400, 1:4800, 2:9600, 5:1200
2015.09.15 19:11:38 5: Xtender_AC_in: ParseObj for Modbus_Speed__baud maps value 2 with 0:2400, 1:4800, 2:9600, 5:1200
2015.09.15 19:11:38 4: Xtender_AC_in: ParseObj for Modbus_Speed__baud assigns 9600

2015.09.15 19:11:39 5: Xtender_AC_in: ParseObj called with 41b37836 and start 36
2015.09.15 19:11:39 5: Xtender_AC_in: ParseObj ObjInfo: reading=CosPhi, unpack=f>, expr=, format=%.1f %, map=
2015.09.15 19:11:39 5: Xtender_AC_in: ParseObj for CosPhi does sprintf with format %.1f % value is 22.4336967468262
2015.09.15 19:11:39 1: PERL WARNING: Missing argument in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.15 19:11:39 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/98_Modbus.pm line 401.
2015.09.15 19:11:39 5: Xtender_AC_in: ParseObj for CosPhi sprintf result is 22.4 %
2015.09.15 19:11:39 4: Xtender_AC_in: ParseObj for CosPhi assigns 22.4 %

2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj called with 40800000 and start 86
2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj ObjInfo: reading=Relay1_Energy_Type, unpack=f>, expr=, format=%.f, map=1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy
2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj for Relay1_Energy_Type maps value 4 with 1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy
2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj for Relay1_Energy_Type does sprintf with format %.f value is export.active.energy
2015.09.15 19:11:40 1: PERL WARNING: Argument "export.active.energy" isn't numeric in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj for Relay1_Energy_Type sprintf result is 0
2015.09.15 19:11:40 4: Xtender_AC_in: ParseObj for Relay1_Energy_Type assigns 0
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj called with 43601b1700000000000000003f290eb500000000000000004308aad000000000000000004313fec20000000000000000426324ad00000000000000003f6c67ac and start 0
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=Voltage__V, unpack=f>, expr=, format=%.1f V, map=
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Voltage__V does sprintf with format %.1f V value is 224.105819702148
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Voltage__V sprintf result is 224.1 V
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for Voltage__V assigns 224.1 V
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 2
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i2
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 4
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i4
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 6
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=Current__A, unpack=f>, expr=, format=%.2f A, map=
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Current__A does sprintf with format %.2f A value is 0.660380661487579
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Current__A sprintf result is 0.66 A
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for Current__A assigns 0.66 A
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 8
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i8
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 10
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i10
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 12
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=Power__W, unpack=f>, expr=, format=%.f W, map=
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Power__W does sprintf with format %.f W value is 136.667236328125
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Power__W sprintf result is 137 W
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for Power__W assigns 137 W
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 14
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i14
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 16
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i16
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 18
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=Power__VA, unpack=f>, expr=, format=%.1f VA, map=
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Power__VA does sprintf with format %.1f VA value is 147.995147705078
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Power__VA sprintf result is 148.0 VA
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for Power__VA assigns 148.0 VA
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 20
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i20
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 22
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i22
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 24
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=Power__VAr, unpack=f>, expr=, format=%.1f VAr, map=
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Power__VAr does sprintf with format %.1f VAr value is 56.785816192627
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for Power__VAr sprintf result is 56.8 VAr
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for Power__VAr assigns 56.8 VAr
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 26
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i26
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 28
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj has no parseInfo for i28
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 30
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=PowerFactor, unpack=f>, expr=, format=%.1f, map=
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for PowerFactor does sprintf with format %.1f value is 0.923456907272339
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj for PowerFactor sprintf result is 0.9
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for PowerFactor assigns 0.9
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj called with 15010060 and start 62720
2015.09.15 19:11:41 5: Xtender_AC_in: ParseObj ObjInfo: reading=system_demand_interval, unpack=N, expr=, format=, map=
2015.09.15 19:11:41 4: Xtender_AC_in: ParseObj for system_demand_interval assigns 352387168
2015.09.15 19:11:42 5: Xtender_AC_in: ParseObj called with 00000000 and start 63760
2015.09.15 19:11:42 5: Xtender_AC_in: ParseObj ObjInfo: reading=System_Pulse_constant, unpack=H*, expr=, format=, map=0:0.001/imp, 1:0.01/imp, 2:0.1/imp, 3:1/imp
2015.09.15 19:11:42 5: Xtender_AC_in: ParseObj for System_Pulse_constant maps value 00000000 with 0:0.001/imp, 1:0.01/imp, 2:0.1/imp, 3:1/imp
2015.09.15 19:11:42 4: Xtender_AC_in: ParseObj for System_Pulse_constant assigns 00000000

2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj called with 42e1d0e54238051f and start 342
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj ObjInfo: reading=Energy_total__kWh, unpack=f>, expr=, format=%.3f kWh, map=
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj for Energy_total__kWh does sprintf with format %.3f kWh value is 112.907997131348
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj for Energy_total__kWh sprintf result is 112.908 kWh
2015.09.15 19:11:43 4: Xtender_AC_in: ParseObj for Energy_total__kWh assigns 112.908 kWh
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 344
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj ObjInfo: reading=Energy_total__kVArh, unpack=f>, expr=, format=%.3f kVArh, map=
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj for Energy_total__kVArh does sprintf with format %.3f kVArh value is 46.0050010681152
2015.09.15 19:11:43 5: Xtender_AC_in: ParseObj for Energy_total__kVArh sprintf result is 46.005 kVArh
2015.09.15 19:11:43 4: Xtender_AC_in: ParseObj for Energy_total__kVArh assigns 46.005 kVArh
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj called with 00020000 and start 63776
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj ObjInfo: reading=System_Measurement_mode, unpack=H*, expr=, format=, map=1:import, 2:import+export, 3:import-export
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for System_Measurement_mode maps value 00020000 with 1:import, 2:import+export, 3:import-export
2015.09.15 19:11:44 4: Xtender_AC_in: ParseObj for System_Measurement_mode assigns 00020000
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj called with 4248002542e1c1893cf5c28f41590a3d4201c28f and start 70
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj ObjInfo: reading=Frequency__Hz, unpack=f>, expr=, format=%.1f Hz, map=
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Frequency__Hz does sprintf with format %.1f Hz value is 50.0001411437988
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Frequency__Hz sprintf result is 50.0 Hz
2015.09.15 19:11:44 4: Xtender_AC_in: ParseObj for Frequency__Hz assigns 50.0 Hz
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 72
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj ObjInfo: reading=Energy_import__kWh, unpack=f>, expr=, format=%.3f kWh, map=
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_import__kWh does sprintf with format %.3f kWh value is 112.877998352051
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_import__kWh sprintf result is 112.878 kWh
2015.09.15 19:11:44 4: Xtender_AC_in: ParseObj for Energy_import__kWh assigns 112.878 kWh
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 74
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj ObjInfo: reading=Energy_export__kWh, unpack=f>, expr=, format=%.3f kWh, map=
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_export__kWh does sprintf with format %.3f kWh value is 0.0299999993294477
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_export__kWh sprintf result is 0.030 kWh
2015.09.15 19:11:44 4: Xtender_AC_in: ParseObj for Energy_export__kWh assigns 0.030 kWh
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 76
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj ObjInfo: reading=Energy_import__kVArh, unpack=f>, expr=, format=%.3f kVArh, map=
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_import__kVArh does sprintf with format %.3f kVArh value is 13.5649995803833
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_import__kVArh sprintf result is 13.565 kVArh
2015.09.15 19:11:44 4: Xtender_AC_in: ParseObj for Energy_import__kVArh assigns 13.565 kVArh
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 78
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj ObjInfo: reading=Energy_export__kVArh, unpack=f>, expr=, format=%.3f kVArh, map=
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_export__kVArh does sprintf with format %.3f kVArh value is 32.439998626709
2015.09.15 19:11:44 5: Xtender_AC_in: ParseObj for Energy_export__kVArh sprintf result is 32.440 kVArh
2015.09.15 19:11:44 4: Xtender_AC_in: ParseObj for Energy_export__kVArh assigns 32.440 kVArh

2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj called with 42c800000000000000000000000000003f800000 and start 12
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj ObjInfo: reading=System_Pulse_Width__ms, unpack=f>, expr=, format=%.f ms, map=
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj for System_Pulse_Width__ms does sprintf with format %.f ms value is 100
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj for System_Pulse_Width__ms sprintf result is 100 ms
2015.09.15 19:11:45 4: Xtender_AC_in: ParseObj for System_Pulse_Width__ms assigns 100 ms
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 14
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj has no parseInfo for h14
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 16
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj has no parseInfo for h16
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 18
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj ObjInfo: reading=Modbus_Parity_Stop, unpack=f>, expr=, format=, map=0:1stop.bit_no.parity, 1:1stop.bit_even.parity, 2:1stop.bit_odd.parity, 3:2stop.bits_no.parity
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj for Modbus_Parity_Stop maps value 0 with 0:1stop.bit_no.parity, 1:1stop.bit_even.parity, 2:1stop.bit_odd.parity, 3:2stop.bits_no.parity
2015.09.15 19:11:45 4: Xtender_AC_in: ParseObj for Modbus_Parity_Stop assigns 1stop.bit_no.parity
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj moves to next object, skip 2 to 20
2015.09.15 19:11:45 5: Xtender_AC_in: ParseObj ObjInfo: reading=Modbus_Node_adr, unpack=f>, expr=, format=, map=
2015.09.15 19:11:45 4: Xtender_AC_in: ParseObj for Modbus_Node_adr assigns 1
2015.09.15 19:11:46 5: Xtender_AC_in: ParseObj called with 3f29f8e4 and start 6
2015.09.15 19:11:46 5: Xtender_AC_in: ParseObj ObjInfo: reading=Current__A, unpack=f>, expr=, format=%.2f A, map=
2015.09.15 19:11:46 5: Xtender_AC_in: ParseObj for Current__A does sprintf with format %.2f A value is 0.663954019546509
2015.09.15 19:11:46 5: Xtender_AC_in: ParseObj for Current__A sprintf result is 0.66 A
2015.09.15 19:11:46 4: Xtender_AC_in: ParseObj for Current__A assigns 0.66 A


die Fehler kommen immer nach einem %.f. Was wäre der richtige Ersatz?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 September 2015, 20:43:16
Hallo,

das Problem liegt an den format-Angaben im Modul.
Bei h86 ist das offensichtlich. Ein %f ist für floats gedacht und funktioniert nicht bei Strings.
Siehe http://perldoc.perl.org/functions/sprintf.html

Das Log ist hier eindeutig:

2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj for Relay1_Energy_Type maps value 4 with 1:import.active.energy, 2:import+export.active.energy, 4:export.active.energy, 6:import+export.reactive.energy, 8:export.reactive.energy
2015.09.15 19:11:40 5: Xtender_AC_in: ParseObj for Relay1_Energy_Type does sprintf with format %.f value is export.active.energy
2015.09.15 19:11:40 1: PERL WARNING: Argument "export.active.energy" isn't numeric in sprintf at ./FHEM/98_Modbus.pm line 401.

sprintf soll den string export.active.energy mit dem Format %.f formattieren, was keinen Sinn macht.

ähnlich ist es mit i36.
Hier ist ein % ohne Format-Spezifikation am Ende im Format-String (%.1f %). Das kann auch nicht klappen. Auch hier ist das im Log offensichtlich:

2015.09.15 19:11:39 5: Xtender_AC_in: ParseObj for CosPhi does sprintf with format %.1f % value is 22.4336967468262
2015.09.15 19:11:39 1: PERL WARNING: Missing argument in sprintf at ./FHEM/98_Modbus.pm line 401.
2015.09.15 19:11:39 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/98_Modbus.pm line 401.

Wenn ein %-Zeichen ausgegeben werden soll, muss das als %% angegeben werden. Wenn ein String ausgegeben werden soll, kann %s verwendet werden. Die oben verlinkte Website zur sprintf erklärt das alles.

Das Modbus-Basismodul verzichtet auf den Aufruf von sprintf wenn kein format angegeben wurde (die ganze Zeile würde dann entfallen, es darf aber auch kein defFormat für den Objekt-Typ hinterlegt sein, sonst wird das format von dort verwendet)

aus Modbus.pm:

$format  = ModbusLD_ObjInfo($logHash, $key, "format", "defFormat");   

und danach

if ($format) {
    Log3 $name, 5, "$name: ParseObj for $reading does sprintf with format " . $format . " value is $val";
    $val = sprintf($format, $val);
    Log3 $name, 5, "$name: ParseObj for $reading sprintf result is $val";
}


Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 15 September 2015, 21:14:06
Hi,
habe format-Angaben der Module für die beiden Modbus-Zähler SDM220M und SDM630M Dank der Hinweise korrigiert.

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 15 September 2015, 21:19:53
Danke Stefan für deine Ausführungen, danke Roger für die fixes. Jetzt läuft es ohne Fehlermeldungen.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 28 September 2015, 16:26:16
Hallo zusammen,

ich versuche zur Zeit eine Danfoss ECL300 WP Steuerung mit Modbus an FHEM zu koppeln.
Siehe auch hier http://forum.fhem.de/index.php/topic,41382.msg336110.html#msg336110 (http://forum.fhem.de/index.php/topic,41382.msg336110.html#msg336110)

Die Danfoss ECL300 ist eine Universalsteuerung, die mit einem Modbus Kommunikationsmodul nachgerüstet wurde.

Ich habe nun ein USB/seriel gateway per Modbus Modul erstellt. Die Kommunikation scheint zu funktionieren (state: "opened").
Über ModbusAttr versuche ich nun vorerst mal nur einen Temperaturwert auszulesen der als Holding Register unter der Register Nr. 11201 
in der ECL300 Steuerung zu finden ist. Jedoch erhalte ich in der Abfrage jeweils einen timeout.
Daher vermute ich, dass ich entweder nicht die richtigen Einstellungen/Code eingegeben habe oder auch dass die Registeraddresse von FHEM nicht korrekt weitergegeben wird (o/1-basiert). Die Nachbaradressen habe ich daher auch schon versucht, jedoch vergeblich.

Vielleicht könnte ja mal ein Profi auf die cfg- und filelog Einträge schauen, ob ich hier schon groben Unfug getrieben habe, das ware wirklich nett.
Sorry, bin noch FHEM Anfänger, aber ich finde die Anwendung mit den Möglichkeiten und die Community einfach super. 

Config sieht folgendermaßen aus:
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global backup_before_update 0
attr global logfile ./log/fhem-%Y-%m-%d.log
attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\

attr global nofork 1
attr global nrarchive 14
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 5

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global
attr WEB editConfig 1

define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m-%d.log fakelog
attr Logfile icon edit_copy
attr Logfile nrarchive 14

define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define ModbusRS485 Modbus COM3@19200,8,E,1
define ECL300 ModbusAttr 3 60
attr ECL300 userattr IODev dev-h-defPoll dev-h-defShowGet dev-timing-timeout obj-h11201-reading
attr ECL300 IODev ModbusRS485
attr ECL300 dev-h-defPoll 1
attr ECL300 dev-h-defShowGet 1
attr ECL300 dev-timing-timeout 6
attr ECL300 obj-h11201-reading Temp_aussen
     


Die Aufzeichnung des logfiles der letzten Minuten (verbose 5):
2015.09.29 15:56:32 5: ECL300: GetUpdate called
2015.09.29 15:56:32 5: ECL300: GetUpdate objects from attributes: h11201
2015.09.29 15:56:32 5: ECL300: GetUpdate full object list: h11201
2015.09.29 15:56:32 5: ECL300: GetUpdate check h11201 => Temp_aussen, poll = 1, last = 0
2015.09.29 15:56:32 5: ECL300: GetUpdate will request Temp_aussen
2015.09.29 15:56:32 5: ECL300: GetUpdate tries to combine read commands
2015.09.29 15:56:32 5: ECL300: GetUpdate: combine for h is 1
2015.09.29 15:56:32 5: ModbusRS485: Send adds fcode 3 for Temp_aussen to queue: 03032bc10001ddf0 pdu 032bc10001
2015.09.29 15:56:32 4: ModbusRS485: handle queue sends 03032bc10001ddf0 (fcode 3 to 3 for Temp_aussen, len 1)
2015.09.29 15:56:32 5: SW: 03032bc10001ddf0
2015.09.29 15:56:38 4: ModbusRS485: timeout waiting for 3 from 3, Request was 03032bc10001ddf0, last Buffer:
2015.09.29 15:57:32 5: ECL300: GetUpdate called
2015.09.29 15:57:32 5: ECL300: GetUpdate objects from attributes: h11201
2015.09.29 15:57:32 5: ECL300: GetUpdate full object list: h11201
2015.09.29 15:57:32 5: ECL300: GetUpdate check h11201 => Temp_aussen, poll = 1, last = 0
2015.09.29 15:57:32 5: ECL300: GetUpdate will request Temp_aussen
2015.09.29 15:57:32 5: ECL300: GetUpdate tries to combine read commands
2015.09.29 15:57:32 5: ECL300: GetUpdate: combine for h is 1
2015.09.29 15:57:32 5: ModbusRS485: Send adds fcode 3 for Temp_aussen to queue: 03032bc10001ddf0 pdu 032bc10001
2015.09.29 15:57:32 4: ModbusRS485: handle queue sends 03032bc10001ddf0 (fcode 3 to 3 for Temp_aussen, len 1)
2015.09.29 15:57:32 5: SW: 03032bc10001ddf0
2015.09.29 15:57:38 4: ModbusRS485: timeout waiting for 3 from 3, Request was 03032bc10001ddf0, last Buffer:
2015.09.29 15:58:32 5: ECL300: GetUpdate called
2015.09.29 15:58:32 5: ECL300: GetUpdate objects from attributes: h11201
2015.09.29 15:58:32 5: ECL300: GetUpdate full object list: h11201
2015.09.29 15:58:32 5: ECL300: GetUpdate check h11201 => Temp_aussen, poll = 1, last = 0
2015.09.29 15:58:32 5: ECL300: GetUpdate will request Temp_aussen
2015.09.29 15:58:32 5: ECL300: GetUpdate tries to combine read commands
2015.09.29 15:58:32 5: ECL300: GetUpdate: combine for h is 1
2015.09.29 15:58:32 5: ModbusRS485: Send adds fcode 3 for Temp_aussen to queue: 03032bc10001ddf0 pdu 032bc10001
2015.09.29 15:58:32 4: ModbusRS485: handle queue sends 03032bc10001ddf0 (fcode 3 to 3 for Temp_aussen, len 1)
2015.09.29 15:58:32 5: SW: 03032bc10001ddf0
2015.09.29 15:58:38 4: ModbusRS485: timeout waiting for 3 from 3, Request was 03032bc10001ddf0, last Buffer:
2015.09.29 15:58:51 4: Connection accepted from FHEMWEB:127.0.0.1:58560
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58560 GET /fhem?cmd=style%20edit%20fhem.cfg
2015.09.29 15:58:51 4: 4596:FHEMWEB:127.0.0.1:58560: /fhem?cmd=style%20edit%20fhem.cfg / RL:1783 / text/html; charset=UTF-8 / Content-Encoding: gzip

/
2015.09.29 15:58:51 4: Connection accepted from FHEMWEB:127.0.0.1:58564
2015.09.29 15:58:51 4: Connection accepted from FHEMWEB:127.0.0.1:58566
2015.09.29 15:58:51 4: Connection closed for FHEMWEB:127.0.0.1:58560: Bad file descriptor
2015.09.29 15:58:51 4: Connection accepted from FHEMWEB:127.0.0.1:58568
2015.09.29 15:58:51 4: Connection accepted from FHEMWEB:127.0.0.1:58570
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58566 GET /fhem?cmd=style%20edit%20fhem.cfg
2015.09.29 15:58:51 4: 4596:FHEMWEB:127.0.0.1:58566: /fhem?cmd=style%20edit%20fhem.cfg / RL:1783 / text/html; charset=UTF-8 / Content-Encoding: gzip

/
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58566 GET /fhem/pgm2/style.css
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58564 GET /fhem/pgm2/jquery-ui.min.css
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58570 GET /fhem/pgm2/jquery.min.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58568 GET /fhem/pgm2/fhemweb.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58566 GET /fhem/pgm2/jquery-ui.min.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58564 GET /fhem/pgm2/fhemweb_colorpicker.js
2015.09.29 15:58:51 4: Connection accepted from FHEMWEB:127.0.0.1:58571
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58568 GET /fhem/pgm2/fhemweb_readingsGroup.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58566 GET /fhem/pgm2/fhemweb_readingsHistory.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58564 GET /fhem/pgm2/fhemweb_sortable.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58570 GET /fhem/pgm2/fhemweb_fbcalllist.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58566 GET /fhem/images/default/icoEverything.png
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58568 GET /fhem/pgm2/fhemweb_uzsu.js
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58571 GET /fhem/pgm2/fhemweb_knob.js
2015.09.29 15:58:51 4: Connection closed for FHEMWEB:127.0.0.1:58545: Bad file descriptor
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58571 GET /fhem/pgm2/defaultCommon.css
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58571 GET /fhem/pgm2/dashboard_style.css
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58571 GET /fhem/images/default/fhemicon.png
2015.09.29 15:58:51 4: HTTP FHEMWEB:127.0.0.1:58571 GET /fhem?XHR=1&inform=type=status;filter=;since=1443535130;fmt=JSON×tamp=1443535131504
2015.09.29 15:59:32 5: ECL300: GetUpdate called
2015.09.29 15:59:32 5: ECL300: GetUpdate objects from attributes: h11201
2015.09.29 15:59:32 5: ECL300: GetUpdate full object list: h11201
2015.09.29 15:59:32 5: ECL300: GetUpdate check h11201 => Temp_aussen, poll = 1, last = 0
2015.09.29 15:59:32 5: ECL300: GetUpdate will request Temp_aussen
2015.09.29 15:59:32 5: ECL300: GetUpdate tries to combine read commands
2015.09.29 15:59:32 5: ECL300: GetUpdate: combine for h is 1
2015.09.29 15:59:32 5: ModbusRS485: Send adds fcode 3 for Temp_aussen to queue: 03032bc10001ddf0 pdu 032bc10001
2015.09.29 15:59:32 4: ModbusRS485: handle queue sends 03032bc10001ddf0 (fcode 3 to 3 for Temp_aussen, len 1)
2015.09.29 15:59:32 5: SW: 03032bc10001ddf0
2015.09.29 15:59:38 4: ModbusRS485: timeout waiting for 3 from 3, Request was 03032bc10001ddf0, last Buffer:
2015.09.29 16:00:06 4: Connection closed for FHEMWEB:127.0.0.1:58568: EOF
2015.09.29 16:00:06 4: Connection closed for FHEMWEB:127.0.0.1:58570: EOF
2015.09.29 16:00:06 4: Connection closed for FHEMWEB:127.0.0.1:58566: EOF
2015.09.29 16:00:06 4: Connection closed for FHEMWEB:127.0.0.1:58564: EOF
2015.09.29 16:00:06 4: Connection accepted from FHEMWEB:127.0.0.1:58577
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58577 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2015-09-29.log
2015.09.29 16:00:06 4: Connection accepted from FHEMWEB:127.0.0.1:58578
2015.09.29 16:00:06 4: Connection accepted from FHEMWEB:127.0.0.1:58580
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58578 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2015-09-29.log
2015.09.29 16:00:06 4: Connection accepted from FHEMWEB:127.0.0.1:58582
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58578 GET /fhem/pgm2/style.css
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/pgm2/jquery-ui.min.css
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58582 GET /fhem/pgm2/jquery.min.js
2015.09.29 16:00:06 4: Connection accepted from FHEMWEB:127.0.0.1:58587
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58578 GET /fhem/pgm2/jquery-ui.min.js
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/pgm2/fhemweb_colorpicker.js
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58587 GET /fhem/pgm2/fhemweb.js
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58578 GET /fhem/pgm2/fhemweb_readingsGroup.js
2015.09.29 16:00:06 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/pgm2/fhemweb_readingsHistory.js
2015.09.29 16:00:07 4: Connection accepted from FHEMWEB:127.0.0.1:58588
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58582 GET /fhem/pgm2/fhemweb_fbcalllist.js
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58588 GET /fhem/pgm2/fhemweb_knob.js
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58587 GET /fhem/pgm2/fhemweb_sortable.js
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58578 GET /fhem/pgm2/fhemweb_uzsu.js
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/images/default/icoEverything.png
2015.09.29 16:00:07 4: Connection closed for FHEMWEB:127.0.0.1:58571: Bad file descriptor
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/pgm2/defaultCommon.css
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/pgm2/dashboard_style.css
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/images/default/fhemicon.png
2015.09.29 16:00:07 4: HTTP FHEMWEB:127.0.0.1:58580 GET /fhem/FileLog_logWrapper?XHR=1&inform=type=status;filter=;since=1443535205;fmt=JSON×tamp=1443535207914
2015.09.29 16:00:32 5: ECL300: GetUpdate called
2015.09.29 16:00:32 5: ECL300: GetUpdate objects from attributes: h11201
2015.09.29 16:00:32 5: ECL300: GetUpdate full object list: h11201
2015.09.29 16:00:32 5: ECL300: GetUpdate check h11201 => Temp_aussen, poll = 1, last = 0
2015.09.29 16:00:32 5: ECL300: GetUpdate will request Temp_aussen
2015.09.29 16:00:32 5: ECL300: GetUpdate tries to combine read commands
2015.09.29 16:00:32 5: ECL300: GetUpdate: combine for h is 1
2015.09.29 16:00:32 5: ModbusRS485: Send adds fcode 3 for Temp_aussen to queue: 03032bc10001ddf0 pdu 032bc10001
2015.09.29 16:00:32 4: ModbusRS485: handle queue sends 03032bc10001ddf0 (fcode 3 to 3 for Temp_aussen, len 1)
2015.09.29 16:00:32 5: SW: 03032bc10001ddf0
2015.09.29 16:00:38 4: ModbusRS485: timeout waiting for 3 from 3, Request was 03032bc10001ddf0, last Buffer:
2015.09.29 16:01:22 4: Closing inactive connection FHEMWEB:127.0.0.1:58587
2015.09.29 16:01:22 4: Closing inactive connection FHEMWEB:127.0.0.1:58578
2015.09.29 16:01:22 4: Closing inactive connection FHEMWEB:127.0.0.1:58588
2015.09.29 16:01:22 4: Closing inactive connection FHEMWEB:127.0.0.1:58577
2015.09.29 16:01:22 4: Closing inactive connection FHEMWEB:127.0.0.1:58582
2015.09.29 16:01:22 4: Connection accepted from FHEMWEB:127.0.0.1:58607
2015.09.29 16:01:22 4: Connection accepted from FHEMWEB:127.0.0.1:58609
2015.09.29 16:01:22 4: Connection accepted from FHEMWEB:127.0.0.1:58611
2015.09.29 16:01:22 4: HTTP FHEMWEB:127.0.0.1:58607 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2015-09-29.log
2015.09.29 16:01:23 4: Connection accepted from FHEMWEB:127.0.0.1:58614
2015.09.29 16:01:23 4: HTTP FHEMWEB:127.0.0.1:58609 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2015-09-29.log




LG
Dieter
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 28 September 2015, 17:51:51
Zitat von: sportster am 28 September 2015, 16:26:16

Die Danfoss ECL300 ist eine Universalsteuerung, die mit einem Modbus Kommunikationsmodul nachgerüstet wurde.
...
define ModbusRS485 Modbus COM3@19200,8,E,1
...

Hallo Dieter,
was hast du für ein System ? Linux ? Dann sollte der Eintrag COM3 in  /dev/com3  geändert werden. 

Jörg

PS: Ich habe gerade in einem anderen Eintrag gelesen das du Win7 hast. COM3 ist dann richtig.
Die meisten ModbusKontroller benötigen 19200,8, O ,1.   O=Odd

Probiere einmal diese SW unter Win  (http://qmodbus.sourceforge.net/ Beitrag: http://forum.fhem.de/index.php/topic,25315.msg300513.html#msg300513). Ob dort Daten empfangen werden.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 28 September 2015, 18:47:52
Hallo Jörg,

danke für die schnelle Antwort  :)

Also an der parity Einstellung kann es meiner Meinung nach nicht liegen, da diese so in der Modbus Doku von der Danfoss ECL300 stehen und
ich diese auch mit Profilab Expert 4.0 benutz hatte. Da konnte ich alle Register fehlerfrei auslesen.

Ich vermute immer noch, dass es etwas mit den Registern/Adrssen zu tun hat.
Z. B. liegt ja "Temp_aussen" per Danfoss Definition in einem Holding Register 11201. Dies weicht doch schon vom Modbus Standard ab, der für die Holdings doch den 40000er Bereich vorsieht??... ???    Oder sehe ich das falsch?

*Grübel*

LG

Dieter
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 28 September 2015, 22:14:48
Zitat von: sportster am 28 September 2015, 18:47:52
...
Ich vermute immer noch, dass es etwas mit den Registern/Adrssen zu tun hat.
...
Hallo Dieter,

hast du mal QModBus versucht. Ich denke einmal die Register können liegen oder beginne so wie der Hersteller es benötigt. Bei meinem DRT710 (Drehstromzähler) beginnen einige Hold-Reg bei 61745. Man muß die Register nur richtig ansprechen, bei  Hold 0x03 verher senden, aber das macht ja das Modul.
Setze mal die Länge auf 2. Hier ein Teil meiner Einstellungen für meinen Drehstromzähler. Bis dieser so am laufen war hat es eine Weile gedauert.

attr DRT dev-h-defLen 2
attr DRT dev-h-defPoll 1
attr DRT dev-h-defUnpack N
attr DRT dev-timing-timeout 2

Ich habe dieses ganz gut, unter anderem, mit dem QModBus herausbekommen. In der Doku von Danfos habe ich auch gelesen das der Regler einen Ethernet-Anschluß hat über den Modbus-TCP geht. Ist das so oder ist das ein andere Adapter ?

Vielleicht solltest du beim testen und Fehler suchen alle anderen Einträge aus der fhem.cfg entfernen.

Jörg

PS: Ganz dumme Frage: Die Modbus Adresse bei deinem Gerät ist auch die 3, so wie in der fhem.cfg eingetragen ?!
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 29 September 2015, 15:53:34
Hallo Jörg,

habe es nun einmal mit QModbus versucht. Damit kann ich alle Werte aus der ECL300 Steuerung ziehen, kein Problem.
Einstellungen wie auch von mir in FHEM eingetragen COM3 19200 Baud 8 Datenbits 1 Stopbit Even Parity
Die ECL300 hat Bus ID 3. Also alles korrekt und funktioniert auch über QModbus... ???
Gut, die Register im ECL300 sind 1basiert und in FHEM Modul wohl 0-basiert. Bedeutet, wenn ich Register "11201" in ECL300 auslesen will muss ich in
FHEM "11200" eintragen.

Mit len hab ich jetzt auch getestet. Das hat auch nicht funktioniert. Kann eigentlich auch nicht weil die Register definitive alles 16 byte sind.

Bezüglich der Danfoss Steuerung ECL 300: Das ist eine schon ältere Steuerung mit einem Modbusmodul ECA 71. Die macht aber "nur" Modbus RTU.
Das Modbusmodul habe ich Anfang des Jahres selbst nachgerüstet. Das war immer noch günstiger als eine komplett neue WP Steuerung einzubauen(plus ggf. Anpassungen vom Heizungsfachmann..usw.). Für mich tut es alles was ich benötige, alles gut.
Nur FHEM will wohl (noch) nicht so richtig. Aber ich bin zäh...... ;D

Gruß

Dieter       
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 29 September 2015, 16:11:25
Hallo Dieter
Rechne die Register einmal in hex um und trage dieses ein. Kannst du ja als zusätzlichen Eintrag machen. Ich hatte bei mir auch lange gekämpft. Versuche auch mal einen widerstand 120 ohm zwischen a+ und b-. Das hat bei mir geholfen.
Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 29 September 2015, 20:49:36
Hallo Dieter,

hast Du mal versucht Fhem unter Linux in einer VM oder auf einem Raspberry laufen zu lassen?
Das Feature, mit dem in DevIO.pm die Parität für die serielle Kommunikation eingestellt wird, habe ich erst vor wenigen Monaten als Patch vorgeschlagen und ich habe keine Ahnung, ob das schon mal jemand unter Windows getestet hat. (ModbusAttr verwendet Modbus.pm und das verwendet DevIO ...)
Ich selbst mache inzwischen alles auf einem Raspberry.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 04 Oktober 2015, 13:57:07
Sodele,

es hat etwas gedauert um Debian 8 auf einer VMware Maschine und FHEM zu installieren.
Ich bin zur Zeit auf dem gleichen Stand. Das heist:

Modbus Modul konfiguriert:
define RS485 Modbus /dev/ttyUSB0@19200,8,E,1

--> Status "opened" --> scheint o.k.

ModbusAttr Modul konfiguriert:
define ECL300 ModbusAttr 3 60

--> Status "opened" --> scheint o.k.

Erstes reading konfiguriert:
attr ECL300 obj-h11200-reading Temp_aussen

--> timeout reading.....

also dasselbe Problem wie unter WIN 7.. :P

Was mir aber aufgefallen ist:
Wenn ich QModbus nutze und das Register 11200 auslese wird folgender HEX Code gesendet (zu dem ich auch einen Wert zurück bekomme)
03 03 2b c0 00 01 

Im Logfile FHEM steht aber: RS485: timeout waiting for 3 from 3, Request was 03032bc000018c30

Was bedeuten die letzten 4 HEX Zeichen 8c30? Kann es daran liegen, dass die ECL 300 nicht antwortet?

Da ich weiß, dass die Steuerung ein wenig sensibel in Bezug auf die Abfrageintervalle ist habe ich timing send Delay, timing Comm Delay etc. auch bereits eingebaut und verschiedene Einstellungen versucht, aber da tut sich nichts.

Da die ECL auf die QModbus  Anfragen innerhalb kürzester Zeit reagiert und auch korrekte Werte liefert, tippe ich jetzt mal auf diesen gesendeten HEX Code als mögliche Ursache, was meint ihr?  ::)

LG

Dieter   

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 04 Oktober 2015, 18:35:30
Zitat von: sportster am 04 Oktober 2015, 13:57:07

Was mir aber aufgefallen ist:
Wenn ich QModbus nutze und das Register 11200 auslese wird folgender HEX Code gesendet (zu dem ich auch einen Wert zurück bekomme)
03 03 2b c0 00 01 

Im Logfile FHEM steht aber: RS485: timeout waiting for 3 from 3, Request was 03032bc000018c30

Was bedeuten die letzten 4 HEX Zeichen 8c30? Kann es daran liegen, dass die ECL 300 nicht antwortet?

LG

Dieter   

Hab schnell mal in meinen Erinnerungen zum Modbus Protokoll geforscht. Letzte vier HEX Stellen dürften die CRC sein. Da dies im Protokoll der ECL300 aber nicht vorgesehen ist (letzte Stelle sollte die Anzahl der abgefragten Register sein) könnte das doch schon zu einem timeout führen :-\
Gibt es eine Möglichkeit in dem Modulden CRC zu unterdrücken?

LG

Dieter
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 04 Oktober 2015, 19:03:04
Zitat von: sportster am 04 Oktober 2015, 13:57:07
...
Modbus Modul konfiguriert:
define RS485 Modbus /dev/ttyUSB0@19200,8,E,1

--> Status "opened" --> scheint o.k.

ModbusAttr Modul konfiguriert:
define ECL300 ModbusAttr 3 60

--> Status "opened" --> scheint o.k.

Erstes reading konfiguriert:
attr ECL300 obj-h11200-reading Temp_aussen
....

Hallo Dieter,

vielleicht noch beim ModBus die
attr queueDelay 3 und  attr queueMax 200 anpassen. Hat bei mir glaube ich geholfen.

define RS485 Modbus /dev/ttyUSB0@19200,8,E,1

define ECL300 ModbusAttr 3 60
attr ECL300 IODev RS485 <-- hast du auch diesen Eintrag in deiner fhem.cfg
attr ECL300 obj-h11200-reading Temp_aussen


#meine Einstellungen
define DRT710M Modbus /dev/ttyUSB1@9600,8,E,1
attr DRT710M profileInterval 300
attr DRT710M queueDelay 3
attr DRT710M queueMax 200
attr DRT710M room Zaehler
attr DRT710M verbose 1

define DRT ModbusAttr 1 60
attr DRT IODev DRT710M  <-----
attr DRT dev-h-combine 16
attr DRT dev-h-defLen 2
attr DRT dev-h-defPoll 1
attr DRT dev-h-defUnpack N
attr DRT dev-timing-timeout 3
attr DRT obj-h144-reading PowerL1
attr DRT obj-h146-reading PowerL2
attr DRT obj-h148-reading PowerL3
attr DRT obj-h150-reading PowerGesamt
...

Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Oktober 2015, 19:15:38
Hallo,

Ein Unterdrücken der CRC ist bisher nicht vorgesehen. Ich gehe auch davon aus, dass auch QModbus mit CRC sendet, es nur nicht anzeigt.
Wenn Du es ohne CRC probieren möchtest, könntest Du in Modbus.pm Zeile 1627 ändern. Bisher steht da  $frame  = $header.$pdu.$crc;
Wenn du das .$crc entfernst sollte das reichen.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 04 Oktober 2015, 22:51:11
Huhu,

ich weiss zwar nicht warum, aber plötzlich kommen die Werte... ;D
Vielleicht, weil ich den USB Adapter mal kurz deaktiviert und wieder aktiviert habe...egal, es läuft.

Vielen lieben Dank Jörg und Stefan für den super Support hier. Sobald mein Projekt steht werde ich es mal vorstellen. Sicher werden aber auf dem Weg dorthin noch hier und da Fragen auftauchen.

LG
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: sportster am 02 November 2015, 10:27:34
Hallo zusammen,

nach einigen Wochen intensiven Einarbeitens in die FHEM Materie, steht die Steuerung meiner Bartl WP.
Ich kann alle Werte auslesen, habe mir SVG Plots erstellt, die Temperaturen und Stati der WP aufzeichnen und ich kann
Werte in die WP Steuerung über das Modbus Attr Modul schreiben. Alles wunderbar  :D

jetzt bin ich gerade dabei alles ein wenig aufzuräumen und aufzuhübschen. Also eine readingsGroup definiert, in der ich jetzt die
gelesenen Werte hübsch aufbereitet im FHEM Web darstellen kann. Es ist auch angedacht die gesamte WP Steuerung zukünftig in ein Dashboard Tab zu packen.

Was mich zurzeit aber beschäftigt: Ist es möglich, ausser den readings, auch die set Befehle (also Werte in die Steuerung schreiben) in einer readingsGroup (oder ein anderes Modul) darzustellen? Im Moment kann ich diese nur im ModbusAttr Modul setzen (welches ich aber nicht im FHEMweb veröffentlichen will).
Ich habe hier schon mit den Befehlen "commands", "setList", "webCMD" etc. innerhalb des readingsGroup Moduls herumexperimentiert, aber mit keinem dieser Befehle komme ich an die set Attribute im Modbus Modul heran.

Gibt es hierzu eine Lösung?? Wäre super, wenn mich hier jemand mit einem kleinen Tipp von der Leitung zieht ::) 

LG

Dieter
   
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 November 2015, 17:06:16
Hallo,

readingsGroup kann fast alles.
Für Fragen zu readingsGroup würde ich einen anderen Thread wählen.
Dann bekommst Du schneller Hilfe :-)

Gruß
  Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: danieljo am 12 Dezember 2015, 19:41:08
Ich benötige mal etwas Hilfe:

System:
Raspberry Pi 2 mit Debian Wheezy Kernel 3.18...
FHEM 5.7

USB:
USB to RS485 Adapter wird im System als /dev/ttyUSB0 angezeigt

Stromzähler:
B+G Eastron SDM220
Modbus ID laut Zähler ist -> 100

Der Stromzähler ist mit ca.20cm verdrillter Litze an den USB Adapter angeschlossen Klemme A auf A; B auf B

Dann habe ich in FHEM das Modbus-Basismodull eingerichtet mit:

define ModBus Modbus /dev/ttyUSB0@9600,8,E,1
attr ModBus queueDelay 3
attr ModBus queueMax 200


desweiteren mit den von euch angebotenem modul ModbusSDM220M habe ich folgendes eingerichtet:

define SDM220 ModbusSDM220M 100 60
attr SDM220 userattr IODev
attr SDM220 IODev ModBus


Leider bekomme ich nur "timeout reading answer"

Was mache ich falsch oder was habe ich übersehen ?

MFG, Daniel Joachims
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 14 Dezember 2015, 20:14:26
Hallo danieljo,
hier ein paar Hinweise von mir:
- versuche mal ein längeres (3-5m) Kabel
- versuche mal mit oder ohne Abschlusswiderständen
- versuche mal Adresse 1 oder 2 oder 3 (100 hatte ich noch nicht)
- stelle mal "verbose" von beiden devices auf 5 und schaue im Log nach
Wozu das "attr SDM220 userattr IODev"? So was benötige ich nicht.

Hoffe das es hilft  :)
Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: danieljo am 14 Dezember 2015, 21:09:43
Zitat von: Roger am 14 Dezember 2015, 20:14:26
Hallo danieljo,
hier ein paar Hinweise von mir:
- versuche mal ein längeres (3-5m) Kabel
- versuche mal mit oder ohne Abschlusswiderständen
- versuche mal Adresse 1 oder 2 oder 3 (100 hatte ich noch nicht)
- stelle mal "verbose" von beiden devices auf 5 und schaue im Log nach
Wozu das "attr SDM220 userattr IODev"? So was benötige ich nicht.

Hoffe das es hilft  :)
Roger

Muss ich beim SDM220Modbus Modul kein IODev angeben ?

Mit oder ohne abschlusswiderstand erbrachte kein Erfolg.
Adresse merhfach geändert ebenfalls kein Erfolg.

EDIT: Hast recht das "attr SDM220 userattr IODev" war falsch weiß auch nicht wie das da rein gekommen ist. Ich habe das attr jetzt gelöscht. Nun kommt als Meldung "No FD" was heißt das ?

Kann es sein das der SDM220Standart nicht unterstützt wird sondern nur der SDM220Modbus ?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 Dezember 2015, 22:06:24
Hallo,

die userattr Einträge werden von den Modulen selbst erzeugt, damit man Attribute mit Wildcards über fhemweb durch anklicken ändern kann. Die schaden nichts, sind aber auch nicht nötig damit es funktioniert. Das ist auch bei HTTPMOD so.

IODev muss man selbst nicht angeben. Auch das macht das Modul selbst, sofern es nur ein Modbus-Interface gibt.

Wenn der SDM220 Standard eine Modbus-Schnittstelle hat, dann sollte er auch funktionieren. Allerdings gab es im Forum schon oft Probleme mit Kabeln, Abschlusswiderständen und nicht funktionierenden USB-RS485 Adaptern ...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: danieljo am 15 Dezember 2015, 19:40:55
Ok also anscheinend wird der SDM220Standart nicht vom SDM220M Modul unterstützt. Weil heute habe ich den SDM220Modbus bekommen angeschlossen und funktionierte sofort. Ist das Protokoll so unterschiedlich zwischen SDM220Standart und SDM220Modbus.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: My-FHEM am 01 Januar 2016, 15:22:44
Hat es einen bestimmten Grund, warum die Readings des Modules SDM630 mit Einheiten versehen werden?

Dies führt bei Rechnungen mit den Readings immer zu Meldungen wie diesen:

PERL WARNING: Argument "243.7 W" isn't numeric in addition (+) at fhem.pl line

Ist es nicht fhem Codingstyle, das  Reading Werte Dimensionslos sind?

Gruss
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: coyote8219 am 08 Januar 2016, 17:30:43
Hallo,

bei meiner Suche im Forum habe ich das Modbus Modul entdeckt und hätte nun ein, zwei kleine Fragen. Vielleicht kann mir ja jemand bei meinenVorhaben helfen...

Ich habe folgendes Problem. Ich habe einen Sony Projektor, welcher sich über IP Commands via LAN steuern lässt. Die Commands habe ich. Das ganze müsste über TCP gesendet werden.

Die Befhle welche zum Beispiel gesendet werden müsste schauen dann letztendlich so aus:
/x02/x0aSONY/x00/x00/x61/x02/x00/x01/

Vielleicht kann mir ja jemand einen Tip geben? Der Projektor ist via IP erreichbar via Port 53484...

Habe auch schon ModbusAttr definiert, nur danach hänge ich ein wenig? Was muss ich als nächstes tun, um meine Befehle via TCP zu schicken?

Schon einmal Danke
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 09 Januar 2016, 15:18:30
Zitat von: coyote8219 am 08 Januar 2016, 17:30:43
...
Ich habe folgendes Problem. Ich habe einen Sony Projektor, welcher sich über IP Commands via LAN steuern lässt. Die Commands habe ich. Das ganze müsste über TCP gesendet werden.

Die Befhle welche zum Beispiel gesendet werden müsste schauen dann letztendlich so aus:
/x02/x0aSONY/x00/x00/x61/x02/x00/x01/

Vielleicht kann mir ja jemand einen Tip geben? Der Projektor ist via IP erreichbar via Port 53484...
..
Hallo,

versuch doch mal das HTTPMOD Modul siehe hier (http://forum.fhem.de/index.php/topic,27029.msg346600.html#msg346600).

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: volschin am 09 Januar 2016, 20:08:38
Macht wohl ziemlich wenig Sinn, einen TCP (Telnet) Port über HTTP anzusprechen.  ::)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: coyote8219 am 09 Januar 2016, 22:06:05
muss auf alle Fälle via TCP senden, sonst funktioniert das am Projektor leider nicht. Hat jemand einen Tipp?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 09 Januar 2016, 22:41:57
Zitat von: coyote8219 am 09 Januar 2016, 22:06:05
muss auf alle Fälle via TCP senden, sonst funktioniert das am Projektor leider nicht. Hat jemand einen Tipp?
Hallo coyote8219,

du kannst es auch mit dem ECMD Modul versuchen. Hier ein Beispiel zum lesen.(http://forum.fhem.de/index.php/topic,42793.msg351541.html#msg351541) Mit diesem Modul kann auch gesendet werden. Was für ein Protokoll wird den auf dem Port gesendet Telnet oder Http ?

Suche einmal im Forum nach "beamer ecmd" .  Dieses ist zwar für RS232, die Schnittstelle kann ja ausgetauscht werden.

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: coyote8219 am 11 Januar 2016, 22:54:12
Hallo pejonp,

Danke für Deine Antwort. Es wird über Telnet gesendet. Aber wie schie ich Die Befehle, bzw. wie programmiere ich sie in FHEM?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 12 Januar 2016, 23:23:52
Zitat von: coyote8219 am 11 Januar 2016, 22:54:12
...
Danke für Deine Antwort. Es wird über Telnet gesendet. Aber wie schie ich Die Befehle, bzw. wie programmiere ich sie in FHEM?
Hallo coyote8219,

schau mal hier http://forum.fhem.de/index.php/topic,45382.msg372148.html#msg372148. Du mußt dich natürlich noch etwas in ECMD einlesen. Es gibt leider keine fertige Lösung, aber einige Beispiele oder die Doku (http://www.fhemwiki.de/wiki/AVR-NET-IO).

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Lars am 21 Februar 2016, 10:01:45
Guten Morgen,

meine Nilan KWL muss unbedingt in FHEM integriert werden.
Dazu bräuchte ich mal ein bisschen Starthilfe in der Anpassung der bereitgestellten Module. RS485 Interface ist vorhanden und mit Modul Modbus eingerichtet. State=open.
Die Module 98_ModbusAttr.pm und 98_ModbusSET.pm habe ich mir angesehen. Im Attr Modul finde ich keinen Ansatzpunkt, es ist ja fast leer. Ok, im SET Modul finde ich Adressen und Mappings zu Readings.  Die Idee ist, dieses nun für die Nilan KWL anzupassen.

Dazu die folgenden Fragen:
- Laut Nilan Doku besteht ein Request aus Slave addr, Function code, Address, Quantity, CRC. Im SET Modul sehe ich aber nur sowas wie "h256" - das sieht wie die Adresse aus. Wo werden denn die anderen Parameter gesetzt? Oder ist der o.g. Aufbau kein Modbus Standard?
- Die Nilan KWL kennt die Function codes 03 (read holding registers), 04 (read input registers) und 16 (preset multiple registers). Ich müsste also unterschiedliche function codes senden, abhängig von GET und SET. Wo kann ich das einstellen?
- Dann noch was zu der Dokumentation:
Zitat
Register layout:
Register addresses are specified as decimal numerals.
Input registers are placed in the address area 30001..39999.
Holding registers are placed in the address area 40001..49999.
NOTE:
In the following tables, the register addresses applied in the MODBUS messages are without the global offset. This means that if you read input register 100 with function code 04, you will get the global address 30101.
Die NOTE verstehe ich überhaupt nicht.

Und noch eine letze Frage:
# Siehe ModbusExample.pm für eine ausführlichere Infos zur Verwendung des Moduls
# 98_Modbus.pm


Wo finde ich denn ModbusExample.pm?

Gruß
Lars
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 21 Februar 2016, 16:01:02
Hallo Lars,

ModbusAttr enthält keine Adressen etc. weil Du die per Attribut selbst definieren kannst. Es ist ein generisches Modul. Damit sollte es leicht sein, Deine KWL einzubinden, ohne das Du ein eigenes Modul programmieren musst.
Siehe http://www.fhemwiki.de/wiki/ModbusAttr

Slave addr gibst Du beim Define an, Function codes werden entweder automatisch gewählt (3 für holding Register etc.) oder Du kannst sie per Attribut überschreiben, Address (Adressen der einzelnen Werte der Register oder Coils) werden Objekt für Objekt per Attribut definiert, Quantity wählt das Modul automatisch. Dabei versucht es sinnvoll mehrere per Attribut definierte Werte gleichzeitig abzufragen, CRC etc. macht das Modul automatisch.
Wenn Du die Posts in diesem Thread der Reihe nach durchliest, sollte alles klar werden.

Wenn Du ein eigenes Modul schreiben möchtest, dann kannst Du ModbusSET als Vorlage nehmen. Die Bedeutung der parseInfo Struktur findest Du in diesem Thread oder zusammengefasst im Wiki: http://www.fhemwiki.de/wiki/Modbus.
Im Prinzip funktioniert das ganz genauso wie mit ModbusAttr, nur dass die Definitionen nicht mit Attributen an ModbusAttr übergeben sondern in Datenstrukturen im neuen Modul hinterlegt werden. Den Rest macht das Basismodul 98_Modbus.pm

Gruss
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Lars am 21 Februar 2016, 22:30:07
Hallo Stefan,
danke für die guten Tipps, der Wiki-Artikel hat alle Unklarheiten beseitigt. Ich schreibe ein eigenes Modul für die Nilan KWL. Die erste Version ist in Arbeit.
Gruß
Lars
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Reinerlein am 03 März 2016, 12:53:14
Hallo,

ich bin gerade dabei, ein Modbus-Modul für meine Heizungssteuerung (Trovis 5567) zu bauen.
Das läuft auch super. Danke für dieses Modul :)

Ich hätte jetzt nur einen kleinen Feature-Request:
Bei der Steuerung ist es so, dass ich z.B. die Betriebsart setzen kann. Wenn ich das tue, ändert sich automatisch in der Steuerung ein anderer Zustandswert (der Wert, der mir signalisiert, dass ich nun von Autark-Betrieb auf Manuell-Betrieb geschaltet habe).

Ich hätte gerne, dass das Modul nach dem Set nicht nur den gerade gesetzten Wert abfragt, sondern auch noch zusätzlich konfigurierte Readings (die ich als Abhängig identifiziert habe).

Z.B. folgende Readings:

...
'h105' => { reading => 'RK1_Betriebsart',
name => 'BetriebsArtRk1',
map => '1:Aus, 2:Standby, 4:Sonne, 5:Mond',
poll => 1,
set => 1
},
'c88' => { reading => 'RK1_Betriebsart_EBN',
name => 'Ebene Betriebsart Rk1 (HR40106)',
map => '0:GLT, 1:Autark',
poll => 1,
set => 1
},
...
Wenn ich nun "RK1_Betriebsart" setze, wird in der Anlage "RK1_Betriebsart_EBN" auf GLT gesetzt (bzw. dort ja 0).
Ich würde nun gerne sofort beim Setzen der "Betriebsart" auch das Flag "Betriebsart Ebene" mit abfragen lassen.
Das ganze konfigurierbar, vielleicht so:

'h105' => { reading => 'RK1_Betriebsart',
name => 'BetriebsArtRk1',
map => '1:Aus, 2:Standby, 4:Sonne, 5:Mond',
poll => 1,
set => 1,
setgetReadings => 'RK1_Betriebsart_EBN'
},
Das sollte vielleicht eine Kommaseparierte Liste sein, damit man auch mehrere Readings angeben könnte...

Oder gibt es einen anderen Weg, wie ich das direkt im Modul definieren kann, ohne dass ein etwaiger Anwender des Moduls zusätzliche Aufgaben hat?
Danke schon mal im Vorraus...

Grüße
Reiner
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Roger am 03 März 2016, 22:44:09
Hi,
ich habe für die Stromzähler SDM220M und SDM630M nun ein eigenes Thema aufgemacht:
http://forum.fhem.de/index.php/topic,50196.0.html (http://forum.fhem.de/index.php/topic,50196.0.html)
Dort kann man im ersten Beitrag immer die aktuellen Module finden.
- nun ohne %-Zeichen in den Readings-Namen

Roger
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 05 März 2016, 22:18:42
Hallo Reiner,

Ich setze das auf die Wunschliste für die nächste Version.
Sollte kein großer Aufwnd sein.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mkunst am 06 März 2016, 13:40:25
Hallo,

Ich habe auf Basis des Modbus-Moduls ein Modul für die aktuelle Generation der Pluggit Avent Lüftungsanlagen (AP190,AP310,AP460) mit Modbus TCP Schnittstelle über Ethernet geschrieben und
auch erfolgreich mit meiner AP310 in Betrieb genommen.
Vielen Dank an Stefan für das Modbus Basis Modul. Damit war die Einbindung wirklich schnell und einfach umzusetzen  ;D   
Das Modul möchte ich hiermit gerne Teilen und würde mich freuen wenn mal jemand mit mehr Modbus und Perl Erfahrung drüber schaut und mir Rückmeldung dazu gibt.
Bisher werden nur Betriebsinfos gelesen und der Modus und die Lüftergeschwindigkeit können gesetzt werden.

Gruß
Matthias
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Reinerlein am 14 März 2016, 17:43:19
Hallo Stefan,

danke schön schon mal...

Eine andere kleine Sache: Kannst du getList mit jeweils einem :noArg für die Readings zusammenbauen?
Momentan gibt es in der Fhemweb-Oberfläche neben der Get-Auswahl immer noch ein Eingabefeld, welches den aktuellen Wert enthält.
Wenn man jetzt den Wert dort drin läßt, und auf den Button get drückt, gibt es eine Fehlermeldung... Man muss das Feld erst leermachen...

Grüße
Reiner
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 16 März 2016, 19:16:17
Hallo Reiner,

Ich nehm es auf die Liste für die nächste Version.

Gruß
    Stefan
Titel: Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mkunst am 27 März 2016, 21:50:42
Da es keinen bösen Aufschrei zu meinem Pluggit Modul gab, hab ich für die weitere Entwicklung einen eigenen Thread erstellt  ;) :
https://forum.fhem.de/index.php/topic,51437.msg430943.html#msg430943 (https://forum.fhem.de/index.php/topic,51437.msg430943.html#msg430943)
Dort gibts auch eine neue erweiterte Version.
Gruß
Matthias
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 28 März 2016, 01:32:14
Hallo,

ich habe Probleme eine Modbus TCP Verbindung unter Windows aufzubauen.

Es kommt immer ein Fehler
Can't call method "status" on an undefined value at ./FHEM/98_Modbus.pm line 745
und perl stürzt ab

Da heist es ja
# This is relevant for windows/USB only
kann es sein dass der Modbus TCP Modus unter Windows nicht so recht mag, da er hier ja im USB Modus Unterwegs ist, der für TCP gar nicht gebraucht wird.

thx
Hermann

PS: mit QModMaster bekomm ich eine saubere Verbindung und Ergebnis über holding register
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 28 März 2016, 13:50:19
Hallo,

Ich habe leider kein Fhem unter Windows und muss mich da erst weiter reindenken.
Versuch doch mal die angehängte Version. Damit sollte zumindest nichts mehr abstürzen.

Die geänderte Funktion ist jetzt:


#####################################
sub
Modbus_Ready($)
{
  my ($hash) = @_;
  return DevIo_OpenDev($hash, 1, undef)
                if($hash->{STATE} eq "disconnected");

  # This is relevant for windows/USB only
  my $po = $hash->{USBDev};
  if ($po) {
    my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status;
    return ($InBytes>0);
  }
}


Gruss
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 28 März 2016, 18:59:58
Hallo Stefan,

ja jetzt stürtzt nichts mehr ab, aber Daten kommen auch nicht
2016.03.28 18:50:28 5: CCGX: GetUpdate called
2016.03.28 18:50:28 5: CCGX: GetUpdate objects from attributes: h3
2016.03.28 18:50:28 5: CCGX: GetUpdate full object list: h3
2016.03.28 18:50:28 5: CCGX: GetUpdate check h3 => SpannungL1, poll = 0, last = 0
2016.03.28 18:50:28 5: CCGX: GetUpdate tries to combine read commands
2016.03.28 18:50:28 5: CCGX: GetUpdate called
2016.03.28 18:50:28 5: CCGX: GetUpdate objects from attributes: h3
2016.03.28 18:50:28 5: CCGX: GetUpdate full object list: h3
2016.03.28 18:50:28 5: CCGX: GetUpdate check h3 => SpannungL1, poll = 0, last = 0
2016.03.28 18:50:28 5: CCGX: GetUpdate tries to combine read commands
2016.03.28 18:50:59 5: CCGX: GetUpdate called
2016.03.28 18:50:59 5: CCGX: GetUpdate objects from attributes: h3
2016.03.28 18:50:59 5: CCGX: GetUpdate full object list: h3
2016.03.28 18:50:59 5: CCGX: GetUpdate check h3 => SpannungL1, poll = 0, last = 0
2016.03.28 18:50:59 5: CCGX: GetUpdate tries to combine read commands
2016.03.28 18:50:59 5: CCGX: GetUpdate called
2016.03.28 18:50:59 5: CCGX: GetUpdate objects from attributes: h3
2016.03.28 18:50:59 5: CCGX: GetUpdate full object list: h3
2016.03.28 18:50:59 5: CCGX: GetUpdate check h3 => SpannungL1, poll = 0, last = 0
2016.03.28 18:50:59 5: CCGX: GetUpdate tries to combine read commands


hab fürs erste ne ganz einfache konfig

define CCGX ModbusAttr 246 30 192.168.1.115:502 TCP
attr CCGX obj-h3-reading SpannungL1
attr CCGX verbose 5


von Adresse 246 Read Holding register 3
macht der Modbus Master schön  :)
oder hab ich da nen Denkfehler in der Config?

Ich denk wenn ich eine remote fhem auf meinem PI zum modbus lesen machen würde sollte es laufen ...

Thx Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 28 März 2016, 21:12:54
Hallo Hermann,

es fehlt mindestens noch ein Attribut, damit die Holding-Register auch per Default gepollt werden:

attr CCGX dev-h-defPoll 1


Dann sollte etwas mehr passieren.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 28 März 2016, 23:02:09
Hi Stefan,

ping das wars  ;D

so mag Dein Modbus auch mit Windoof  :)

thx
Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 05 April 2016, 12:00:31
Hallo Stefan,

ich schon wieder sorry  :-[

Ich bekomme jetzt immer wieder unplausible Readings/Logs
bei genauerer Analyse sind es Werte von anderen Adressen,
kann es sein, dass bei Fehlern oder Timeout die Werte die noch im Speicher sind übergeben werden?

Gruß Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 05 April 2016, 16:33:27
Hallo Hermann,

das könnte schon ein Bug im Modul sein.
Um den zu finden wäre es sehr hilfreich, wenn Du einen Auszug aus dem Log mit Verbose 5 für das Modul (Modbus) schicken könntest, wenn der Fehler auftritt ...

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 05 April 2016, 23:37:53
Hallo Stefan,

hab jetzt wieder eins gefunden
falsche Werte sind

2016.04.05 22:56:31 4: BMV: ParseObj for SOC___ assigns 647.5
2016.04.05 22:57:34 4: BMV: ParseObj for Charged_Energy assigns 14.9
2016.04.05 22:57:34 4: BMV: ParseObj for Discharged_Energy assigns 393.7


der Wert 393.7 gehört eigentlich zu  Last_discharge
2016.04.05 22:56:31 4: BMV: ParseObj for Last_discharge assigns 393.7

und 647.5 gehört zu Discharged_Energy statt zu StateOfCharge das nicht mehr als 100% werden kann
2016.04.05 22:56:04 4: BMV: ParseObj for Discharged_Energy assigns 647.5

hier das Log dazu


2016.04.05 22:56:06 5: BMV: raw read: 004d00000005ee03020012
2016.04.05 22:56:06 5: BMV: ParseFrames got: 004d00000005ee03020012
2016.04.05 22:56:06 4: BMV: ParseFrames: fcode 3 from 238, tid 77, data 020012 expect 3 from 238, tid 77 for module BMV
2016.04.05 22:56:06 5: BMV: ParseObj called with 0012 and start 284
2016.04.05 22:56:06 5: BMV: ParseObj ObjInfo: reading=Charge_cycles, unpack=n, expr=, format=, map=
2016.04.05 22:56:06 4: BMV: ParseObj for Charge_cycles assigns 18
2016.04.05 22:56:06 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:06 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:06 4: BMV: handle queue sends 002a00000006ee03011b0001 (fcode 3 to 238 for Average_discharge, len 1)
2016.04.05 22:56:06 5: SW: 002a00000006ee03011b0001
2016.04.05 22:56:06 5: BMV: raw read: 002a00000005ee03020e6c
2016.04.05 22:56:06 5: BMV: ParseFrames got: 002a00000005ee03020e6c
2016.04.05 22:56:06 4: BMV: ParseFrames: fcode 3 from 238, tid 42, data 020e6c expect 3 from 238, tid 42 for module BMV
2016.04.05 22:56:06 5: BMV: ParseObj called with 0e6c and start 283
2016.04.05 22:56:06 5: BMV: ParseObj ObjInfo: reading=Average_discharge, unpack=n, expr=$val / -10, format=, map=
2016.04.05 22:56:06 5: BMV: ParseObj for Average_discharge evaluates 3692 with expr $val / -10
2016.04.05 22:56:06 4: BMV: ParseObj for Average_discharge assigns -369.2
2016.04.05 22:56:06 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:06 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:56:07 4: BMV: handle queue sends 005100000006ee03011d0001 (fcode 3 to 238 for Fulldischarges, len 1)
2016.04.05 22:56:07 5: SW: 005100000006ee03011d0001
2016.04.05 22:56:07 5: BMV: raw read: 005100000005ee03020000
2016.04.05 22:56:07 5: BMV: ParseFrames got: 005100000005ee03020000
2016.04.05 22:56:07 4: BMV: ParseFrames: fcode 3 from 238, tid 81, data 020000 expect 3 from 238, tid 81 for module BMV
2016.04.05 22:56:07 5: BMV: ParseObj called with 0000 and start 285
2016.04.05 22:56:07 5: BMV: ParseObj ObjInfo: reading=Fulldischarges, unpack=n, expr=, format=, map=
2016.04.05 22:56:07 4: BMV: ParseObj for Fulldischarges assigns 0
2016.04.05 22:56:07 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:07 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:07 4: BMV: handle queue sends 003900000006ee0301050001 (fcode 3 to 238 for I_A_, len 1)
2016.04.05 22:56:07 5: SW: 003900000006ee0301050001
2016.04.05 22:56:07 5: BMV: raw read: 003900000005ee0302fed5
2016.04.05 22:56:07 5: BMV: ParseFrames got: 003900000005ee0302fed5
2016.04.05 22:56:07 4: BMV: ParseFrames: fcode 3 from 238, tid 57, data 02fed5 expect 3 from 238, tid 57 for module BMV
2016.04.05 22:56:07 5: BMV: ParseObj called with fed5 and start 261
2016.04.05 22:56:07 5: BMV: ParseObj ObjInfo: reading=I_A_, unpack=s>, expr=$val / 10, format=, map=
2016.04.05 22:56:07 5: BMV: ParseObj for I_A_ evaluates -299 with expr $val / 10
2016.04.05 22:56:07 4: BMV: ParseObj for I_A_ assigns -29.9
2016.04.05 22:56:07 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:07 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:08 4: BMV: handle queue sends 001900000006ee03012e0001 (fcode 3 to 238 for Charged_Energy, len 1)
2016.04.05 22:56:08 5: SW: 001900000006ee03012e0001
2016.04.05 22:56:08 5: BMV: raw read: 001900000005ee03021ef3
2016.04.05 22:56:08 5: BMV: ParseFrames got: 001900000005ee03021ef3
2016.04.05 22:56:08 4: BMV: ParseFrames: fcode 3 from 238, tid 25, data 021ef3 expect 3 from 238, tid 25 for module BMV
2016.04.05 22:56:08 5: BMV: ParseObj called with 1ef3 and start 302
2016.04.05 22:56:08 5: BMV: ParseObj ObjInfo: reading=Charged_Energy, unpack=n, expr=$val / 10, format=, map=
2016.04.05 22:56:08 5: BMV: ParseObj for Charged_Energy evaluates 7923 with expr $val / 10
2016.04.05 22:56:08 4: BMV: ParseObj for Charged_Energy assigns 792.3
2016.04.05 22:56:08 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:08 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:09 4: BMV: handle queue sends 002000000006ee0301030001 (fcode 3 to 238 for V_V_, len 1)
2016.04.05 22:56:09 5: SW: 002000000006ee0301030001
2016.04.05 22:56:09 5: BMV: raw read: 002000000005ee030209a1
2016.04.05 22:56:09 5: BMV: ParseFrames got: 002000000005ee030209a1
2016.04.05 22:56:09 4: BMV: ParseFrames: fcode 3 from 238, tid 32, data 0209a1 expect 3 from 238, tid 32 for module BMV
2016.04.05 22:56:09 5: BMV: ParseObj called with 09a1 and start 259
2016.04.05 22:56:09 5: BMV: ParseObj ObjInfo: reading=V_V_, unpack=n, expr=$val / 100, format=, map=
2016.04.05 22:56:09 5: BMV: ParseObj for V_V_ evaluates 2465 with expr $val / 100
2016.04.05 22:56:09 4: BMV: ParseObj for V_V_ assigns 24.65
2016.04.05 22:56:09 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:09 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:09 4: BMV: handle queue sends 005100000006ee0301210001 (fcode 3 to 238 for Time_since_last_full_charge, len 1)
2016.04.05 22:56:09 5: SW: 005100000006ee0301210001
2016.04.05 22:56:09 5: BMV: raw read: 005100000005ee03020ae0
2016.04.05 22:56:09 5: BMV: ParseFrames got: 005100000005ee03020ae0
2016.04.05 22:56:09 4: BMV: ParseFrames: fcode 3 from 238, tid 81, data 020ae0 expect 3 from 238, tid 81 for module BMV
2016.04.05 22:56:09 5: BMV: ParseObj called with 0ae0 and start 289
2016.04.05 22:56:09 5: BMV: ParseObj ObjInfo: reading=Time_since_last_full_charge, unpack=n, expr=$val / 1000, format=, map=
2016.04.05 22:56:09 5: BMV: ParseObj for Time_since_last_full_charge evaluates 2784 with expr $val / 1000
2016.04.05 22:56:09 4: BMV: ParseObj for Time_since_last_full_charge assigns 2.784
2016.04.05 22:56:09 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:09 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:10 4: BMV: handle queue sends 00c500000006ee03011e0001 (fcode 3 to 238 for Total_Ah_drawn, len 1)
2016.04.05 22:56:10 5: SW: 00c500000006ee03011e0001
2016.04.05 22:56:10 5: BMV: raw read: 00c500000005ee03021940
2016.04.05 22:56:10 5: BMV: ParseFrames got: 00c500000005ee03021940
2016.04.05 22:56:10 4: BMV: ParseFrames: fcode 3 from 238, tid 197, data 021940 expect 3 from 238, tid 197 for module BMV
2016.04.05 22:56:10 5: BMV: ParseObj called with 1940 and start 286
2016.04.05 22:56:10 5: BMV: ParseObj ObjInfo: reading=Total_Ah_drawn, unpack=s>, expr=$val / 10, format=, map=
2016.04.05 22:56:10 5: BMV: ParseObj for Total_Ah_drawn evaluates 6464 with expr $val / 10
2016.04.05 22:56:10 4: BMV: ParseObj for Total_Ah_drawn assigns 646.4
2016.04.05 22:56:10 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:10 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:56:10 4: BMV: handle queue sends 004600000006ee0301220001 (fcode 3 to 238 for Automatic_syncs, len 1)
2016.04.05 22:56:10 5: SW: 004600000006ee0301220001
2016.04.05 22:56:10 5: BMV: raw read: 004600000005ee03020021
2016.04.05 22:56:10 5: BMV: ParseFrames got: 004600000005ee03020021
2016.04.05 22:56:10 4: BMV: ParseFrames: fcode 3 from 238, tid 70, data 020021 expect 3 from 238, tid 70 for module BMV
2016.04.05 22:56:10 5: BMV: ParseObj called with 0021 and start 290
2016.04.05 22:56:10 5: BMV: ParseObj ObjInfo: reading=Automatic_syncs, unpack=n, expr=, format=, map=
2016.04.05 22:56:10 4: BMV: ParseObj for Automatic_syncs assigns 33
2016.04.05 22:56:10 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:10 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:10 4: BMV: handle queue sends 00c400000006ee03011b0001 (fcode 3 to 238 for Average_discharge, len 1)
2016.04.05 22:56:10 5: SW: 00c400000006ee03011b0001
2016.04.05 22:56:10 5: BMV: raw read: 00c400000005ee03020e6c
2016.04.05 22:56:10 5: BMV: ParseFrames got: 00c400000005ee03020e6c
2016.04.05 22:56:10 4: BMV: ParseFrames: fcode 3 from 238, tid 196, data 020e6c expect 3 from 238, tid 196 for module BMV
2016.04.05 22:56:10 5: BMV: ParseObj called with 0e6c and start 283
2016.04.05 22:56:10 5: BMV: ParseObj ObjInfo: reading=Average_discharge, unpack=n, expr=$val / -10, format=, map=
2016.04.05 22:56:10 5: BMV: ParseObj for Average_discharge evaluates 3692 with expr $val / -10
2016.04.05 22:56:10 4: BMV: ParseObj for Average_discharge assigns -369.2
2016.04.05 22:56:10 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:10 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:10 4: BMV: handle queue sends 00f300000006ee03011c0001 (fcode 3 to 238 for Charge_cycles, len 1)
2016.04.05 22:56:10 5: SW: 00f300000006ee03011c0001
2016.04.05 22:56:10 5: BMV: raw read: 00f300000005ee03020012
2016.04.05 22:56:10 5: BMV: ParseFrames got: 00f300000005ee03020012
2016.04.05 22:56:10 4: BMV: ParseFrames: fcode 3 from 238, tid 243, data 020012 expect 3 from 238, tid 243 for module BMV
2016.04.05 22:56:10 5: BMV: ParseObj called with 0012 and start 284
2016.04.05 22:56:10 5: BMV: ParseObj ObjInfo: reading=Charge_cycles, unpack=n, expr=, format=, map=
2016.04.05 22:56:10 4: BMV: ParseObj for Charge_cycles assigns 18
2016.04.05 22:56:11 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:11 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:11 4: BMV: handle queue sends 00e100000006ee0301090001 (fcode 3 to 238 for CE_Ah_, len 1)
2016.04.05 22:56:11 5: SW: 00e100000006ee0301090001
2016.04.05 22:56:11 5: BMV: raw read: 00e100000005ee03020705
2016.04.05 22:56:11 5: BMV: ParseFrames got: 00e100000005ee03020705
2016.04.05 22:56:11 4: BMV: ParseFrames: fcode 3 from 238, tid 225, data 020705 expect 3 from 238, tid 225 for module BMV
2016.04.05 22:56:11 5: BMV: ParseObj called with 0705 and start 265
2016.04.05 22:56:11 5: BMV: ParseObj ObjInfo: reading=CE_Ah_, unpack=n, expr=$val / -10, format=, map=
2016.04.05 22:56:11 5: BMV: ParseObj for CE_Ah_ evaluates 1797 with expr $val / -10
2016.04.05 22:56:11 4: BMV: ParseObj for CE_Ah_ assigns -179.7
2016.04.05 22:56:11 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:11 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:11 4: BMV: handle queue sends 00c400000006ee03011a0001 (fcode 3 to 238 for Last_discharge, len 1)
2016.04.05 22:56:11 5: SW: 00c400000006ee03011a0001
2016.04.05 22:56:11 5: BMV: raw read: 00c400000005ee03020f61
2016.04.05 22:56:11 5: BMV: ParseFrames got: 00c400000005ee03020f61
2016.04.05 22:56:11 4: BMV: ParseFrames: fcode 3 from 238, tid 196, data 020f61 expect 3 from 238, tid 196 for module BMV
2016.04.05 22:56:11 5: BMV: ParseObj called with 0f61 and start 282
2016.04.05 22:56:11 5: BMV: ParseObj ObjInfo: reading=Last_discharge, unpack=n, expr=$val / 10, format=, map=
2016.04.05 22:56:11 5: BMV: ParseObj for Last_discharge evaluates 3937 with expr $val / 10
2016.04.05 22:56:11 4: BMV: ParseObj for Last_discharge assigns 393.7
2016.04.05 22:56:11 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:11 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:56:12 4: BMV: handle queue sends 003f00000006ee03010a0001 (fcode 3 to 238 for SOC___, len 1)
2016.04.05 22:56:12 5: SW: 003f00000006ee03010a0001
2016.04.05 22:56:14 5: BMV: raw read: 003f00000005ee0302036e
2016.04.05 22:56:14 5: BMV: ParseFrames got: 003f00000005ee0302036e
2016.04.05 22:56:14 4: BMV: ParseFrames: fcode 3 from 238, tid 63, data 02036e expect 3 from 238, tid 63 for module BMV
2016.04.05 22:56:14 5: BMV: ParseObj called with 036e and start 266
2016.04.05 22:56:14 5: BMV: ParseObj ObjInfo: reading=SOC___, unpack=n, expr=$val / 10, format=, map=
2016.04.05 22:56:14 5: BMV: ParseObj for SOC___ evaluates 878 with expr $val / 10
2016.04.05 22:56:14 4: BMV: ParseObj for SOC___ assigns 87.8
2016.04.05 22:56:14 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:14 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:56:20 4: BMV: handle queue sends 006500000006ee03012d0001 (fcode 3 to 238 for Discharged_Energy, len 1)
2016.04.05 22:56:20 5: SW: 006500000006ee03012d0001
2016.04.05 22:56:21 5: BMV: raw read: 006500000005ee0302194b
2016.04.05 22:56:21 5: BMV: ParseFrames got: 006500000005ee0302194b
2016.04.05 22:56:21 4: BMV: ParseFrames: fcode 3 from 238, tid 101, data 02194b expect 3 from 238, tid 101 for module BMV
2016.04.05 22:56:21 5: BMV: ParseObj called with 194b and start 301
2016.04.05 22:56:21 5: BMV: ParseObj ObjInfo: reading=Discharged_Energy, unpack=n, expr=$val / 10, format=, map=
2016.04.05 22:56:21 5: BMV: ParseObj for Discharged_Energy evaluates 6475 with expr $val / 10
2016.04.05 22:56:21 4: BMV: ParseObj for Discharged_Energy assigns 647.5
2016.04.05 22:56:21 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:21 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:56:25 4: BMV: handle queue sends 00c100000006ee03012d0001 (fcode 3 to 238 for Discharged_Energy, len 1)
2016.04.05 22:56:25 5: SW: 00c100000006ee03012d0001
2016.04.05 22:56:31 4: BMV: timeout waiting for 3 from 238, Request was 00c100000006ee03012d0001, last Buffer:
2016.04.05 22:56:31 4: BMV: handle queue sends 001000000006ee03010a0001 (fcode 3 to 238 for SOC___, len 1)
2016.04.05 22:56:31 5: SW: 001000000006ee03010a0001
2016.04.05 22:56:31 5: BMV: raw read: 00c100000005ee0302194b001000000005ee0302036e
2016.04.05 22:56:31 5: BMV: ParseFrames got: 00c100000005ee0302194b001000000005ee0302036e
2016.04.05 22:56:31 4: BMV: ParseFrames: fcode 3 from 238, tid 193, data 02194b001000000005ee0302036e expect 3 from 238, tid 16 for module BMV
2016.04.05 22:56:31 5: BMV: ParseObj called with 194b001000000005ee0302036e and start 266
2016.04.05 22:56:31 5: BMV: ParseObj ObjInfo: reading=SOC___, unpack=n, expr=$val / 10, format=, map=
2016.04.05 22:56:31 5: BMV: ParseObj for SOC___ evaluates 6475 with expr $val / 10
2016.04.05 22:56:31 4: BMV: ParseObj for SOC___ assigns 647.5
2016.04.05 22:56:31 5: BMV: ParseObj moves to next object, skip 1 to 267
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h267
2016.04.05 22:56:31 5: BMV: ParseObj moves to next object, skip 1 to 268
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h268
2016.04.05 22:56:31 5: BMV: ParseObj moves to next object, skip 1 to 269
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h269
2016.04.05 22:56:31 5: BMV: ParseObj moves to next object, skip 1 to 270
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h270
2016.04.05 22:56:31 5: BMV: ParseObj moves to next object, skip 1 to 271
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h271
2016.04.05 22:56:31 5: BMV: ParseObj moves to next object, skip 1 to 272
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h272
2016.04.05 22:56:31 5: BMV: ParseObj has no parseInfo for h272
2016.04.05 22:56:31 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:31 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:31 4: BMV: handle queue sends 004d00000006ee03011a0001 (fcode 3 to 238 for Last_discharge, len 1)
2016.04.05 22:56:31 5: SW: 004d00000006ee03011a0001
2016.04.05 22:56:31 5: BMV: raw read: 004d00000005ee03020f61
2016.04.05 22:56:31 5: BMV: ParseFrames got: 004d00000005ee03020f61
2016.04.05 22:56:31 4: BMV: ParseFrames: fcode 3 from 238, tid 77, data 020f61 expect 3 from 238, tid 77 for module BMV
2016.04.05 22:56:31 5: BMV: ParseObj called with 0f61 and start 282
2016.04.05 22:56:31 5: BMV: ParseObj ObjInfo: reading=Last_discharge, unpack=n, expr=$val / 10, format=, map=
2016.04.05 22:56:31 5: BMV: ParseObj for Last_discharge evaluates 3937 with expr $val / 10
2016.04.05 22:56:31 4: BMV: ParseObj for Last_discharge assigns 393.7
2016.04.05 22:56:31 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:31 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:31 4: BMV: handle queue sends 004800000006ee0301090001 (fcode 3 to 238 for CE_Ah_, len 1)
2016.04.05 22:56:31 5: SW: 004800000006ee0301090001
2016.04.05 22:56:31 5: BMV: raw read: 004800000005ee03020707
2016.04.05 22:56:31 5: BMV: ParseFrames got: 004800000005ee03020707
2016.04.05 22:56:31 4: BMV: ParseFrames: fcode 3 from 238, tid 72, data 020707 expect 3 from 238, tid 72 for module BMV
2016.04.05 22:56:31 5: BMV: ParseObj called with 0707 and start 265
2016.04.05 22:56:31 5: BMV: ParseObj ObjInfo: reading=CE_Ah_, unpack=n, expr=$val / -10, format=, map=
2016.04.05 22:56:31 5: BMV: ParseObj for CE_Ah_ evaluates 1799 with expr $val / -10
2016.04.05 22:56:31 4: BMV: ParseObj for CE_Ah_ assigns -179.9
2016.04.05 22:56:31 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:31 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:31 4: BMV: handle queue sends 004500000006ee03011c0001 (fcode 3 to 238 for Charge_cycles, len 1)
2016.04.05 22:56:31 5: SW: 004500000006ee03011c0001
2016.04.05 22:56:31 5: BMV: raw read: 004500000005ee03020012
2016.04.05 22:56:31 5: BMV: ParseFrames got: 004500000005ee03020012
2016.04.05 22:56:31 4: BMV: ParseFrames: fcode 3 from 238, tid 69, data 020012 expect 3 from 238, tid 69 for module BMV
2016.04.05 22:56:31 5: BMV: ParseObj called with 0012 and start 284
2016.04.05 22:56:31 5: BMV: ParseObj ObjInfo: reading=Charge_cycles, unpack=n, expr=, format=, map=
2016.04.05 22:56:31 4: BMV: ParseObj for Charge_cycles assigns 18
2016.04.05 22:56:31 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:31 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:31 4: BMV: handle queue sends 00ef00000006ee03011b0001 (fcode 3 to 238 for Average_discharge, len 1)
2016.04.05 22:56:31 5: SW: 00ef00000006ee03011b0001
2016.04.05 22:56:31 5: BMV: raw read: 00ef00000005ee03020e6c
2016.04.05 22:56:31 5: BMV: ParseFrames got: 00ef00000005ee03020e6c
2016.04.05 22:56:31 4: BMV: ParseFrames: fcode 3 from 238, tid 239, data 020e6c expect 3 from 238, tid 239 for module BMV
2016.04.05 22:56:31 5: BMV: ParseObj called with 0e6c and start 283
2016.04.05 22:56:31 5: BMV: ParseObj ObjInfo: reading=Average_discharge, unpack=n, expr=$val / -10, format=, map=
2016.04.05 22:56:31 5: BMV: ParseObj for Average_discharge evaluates 3692 with expr $val / -10
2016.04.05 22:56:31 4: BMV: ParseObj for Average_discharge assigns -369.2
2016.04.05 22:56:32 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:32 5: BMV: handle queue sendDelay for device BMV not over, try again later
2016.04.05 22:56:32 4: BMV: handle queue sends 005700000006ee03011e0001 (fcode 3 to 238 for Total_Ah_drawn, len 1)
2016.04.05 22:56:32 5: SW: 005700000006ee03011e0001
2016.04.05 22:56:35 5: BMV: raw read: 005700000005ee03021941
2016.04.05 22:56:35 5: BMV: ParseFrames got: 005700000005ee03021941
2016.04.05 22:56:35 4: BMV: ParseFrames: fcode 3 from 238, tid 87, data 021941 expect 3 from 238, tid 87 for module BMV
2016.04.05 22:56:35 5: BMV: ParseObj called with 1941 and start 286
2016.04.05 22:56:35 5: BMV: ParseObj ObjInfo: reading=Total_Ah_drawn, unpack=s>, expr=$val / 10, format=, map=
2016.04.05 22:56:35 5: BMV: ParseObj for Total_Ah_drawn evaluates 6465 with expr $val / 10
2016.04.05 22:56:35 4: BMV: ParseObj for Total_Ah_drawn assigns 646.5
2016.04.05 22:56:35 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:35 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:56:52 5: BMV: GetUpdate called
2016.04.05 22:56:52 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:56:52 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:56:52 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:56:52 5: BMV: GetUpdate will request V_V_
2016.04.05 22:56:52 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:56:52 5: BMV: GetUpdate will request I_A_
2016.04.05 22:56:52 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829
2016.04.05 22:56:52 5: BMV: GetUpdate will request CE_Ah_
2016.04.05 22:56:52 5: BMV: GetUpdate check h266 => SOC___, poll = 1, last = 1459889791.38093
2016.04.05 22:56:52 5: BMV: GetUpdate will request SOC___
2016.04.05 22:56:52 5: BMV: GetUpdate check h282 => Last_discharge, poll = 1, last = 1459889791.55677
2016.04.05 22:56:52 5: BMV: GetUpdate will request Last_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h283 => Average_discharge, poll = 1, last = 1459889791.98954
2016.04.05 22:56:52 5: BMV: GetUpdate will request Average_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h284 => Charge_cycles, poll = 1, last = 1459889791.81898
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charge_cycles
2016.04.05 22:56:52 5: BMV: GetUpdate check h285 => Fulldischarges, poll = 1, last = 1459889767.02003
2016.04.05 22:56:52 5: BMV: GetUpdate will request Fulldischarges
2016.04.05 22:56:52 5: BMV: GetUpdate check h286 => Total_Ah_drawn, poll = 1, last = 1459889795.9088
2016.04.05 22:56:52 5: BMV: GetUpdate will request Total_Ah_drawn
2016.04.05 22:56:52 5: BMV: GetUpdate check h289 => Time_since_last_full_charge, poll = 1, last = 1459889769.54124
2016.04.05 22:56:52 5: BMV: GetUpdate will request Time_since_last_full_charge
2016.04.05 22:56:52 5: BMV: GetUpdate check h290 => Automatic_syncs, poll = 1, last = 1459889770.68535
2016.04.05 22:56:52 5: BMV: GetUpdate will request Automatic_syncs
2016.04.05 22:56:52 5: BMV: GetUpdate check h301 => Discharged_Energy, poll = 1, last = 1459889781.14737
2016.04.05 22:56:52 5: BMV: GetUpdate will request Discharged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate check h302 => Charged_Energy, poll = 1, last = 1459889768.0791
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate tries to combine read commands
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine V_V_ / h259 with I_A_ / h261, span would be 3
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine I_A_ / h261 with CE_Ah_ / h265, span would be 5
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine CE_Ah_ / h265 with SOC___ / h266, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine SOC___ / h266 with Last_discharge / h282, span would be 17
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Last_discharge / h282 with Average_discharge / h283, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Average_discharge / h283 with Charge_cycles / h284, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Charge_cycles / h284 with Fulldischarges / h285, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Fulldischarges / h285 with Total_Ah_drawn / h286, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Total_Ah_drawn / h286 with Time_since_last_full_charge / h289, span would be 4
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Time_since_last_full_charge / h289 with Automatic_syncs / h290, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Automatic_syncs / h290 with Discharged_Energy / h301, span would be 12
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Discharged_Energy / h301 with Charged_Energy / h302, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Automatic_syncs to queue: 008500000006ee0301220001 pdu 0301220001
2016.04.05 22:56:52 4: BMV: handle queue sends 008300000006ee0301220001 (fcode 3 to 238 for Automatic_syncs, len 1)
2016.04.05 22:56:52 5: SW: 008300000006ee0301220001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Total_Ah_drawn to queue: 00d000000006ee03011e0001 pdu 03011e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for V_V_ to queue: 00f900000006ee0301030001 pdu 0301030001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Time_since_last_full_charge to queue: 00b200000006ee0301210001 pdu 0301210001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for I_A_ to queue: 006800000006ee0301050001 pdu 0301050001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charged_Energy to queue: 00bb00000006ee03012e0001 pdu 03012e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Fulldischarges to queue: 00ad00000006ee03011d0001 pdu 03011d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Last_discharge to queue: 00be00000006ee03011a0001 pdu 03011a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for SOC___ to queue: 006400000006ee03010a0001 pdu 03010a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Discharged_Energy to queue: 00ba00000006ee03012d0001 pdu 03012d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charge_cycles to queue: 00f500000006ee03011c0001 pdu 03011c0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for CE_Ah_ to queue: 00da00000006ee0301090001 pdu 0301090001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Average_discharge to queue: 00e800000006ee03011b0001 pdu 03011b0001
2016.04.05 22:56:52 5: BMV: GetUpdate called
2016.04.05 22:56:52 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:56:52 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:56:52 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:56:52 5: BMV: GetUpdate will request V_V_
2016.04.05 22:56:52 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:56:52 5: BMV: GetUpdate will request I_A_
2016.04.05 22:56:52 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829
2016.04.05 22:56:52 5: BMV: GetUpdate will request CE_Ah_
2016.04.05 22:56:52 5: BMV: GetUpdate check h266 => SOC___, poll = 1, last = 1459889791.38093
2016.04.05 22:56:52 5: BMV: GetUpdate will request SOC___
2016.04.05 22:56:52 5: BMV: GetUpdate check h282 => Last_discharge, poll = 1, last = 1459889791.55677
2016.04.05 22:56:52 5: BMV: GetUpdate will request Last_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h283 => Average_discharge, poll = 1, last = 1459889791.98954
2016.04.05 22:56:52 5: BMV: GetUpdate will request Average_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h284 => Charge_cycles, poll = 1, last = 1459889791.81898
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charge_cycles
2016.04.05 22:56:52 5: BMV: GetUpdate check h285 => Fulldischarges, poll = 1, last = 1459889767.02003
2016.04.05 22:56:52 5: BMV: GetUpdate will request Fulldischarges
2016.04.05 22:56:52 5: BMV: GetUpdate check h286 => Total_Ah_drawn, poll = 1, last = 1459889795.9088
2016.04.05 22:56:52 5: BMV: GetUpdate will request Total_Ah_drawn
2016.04.05 22:56:52 5: BMV: GetUpdate check h289 => Time_since_last_full_charge, poll = 1, last = 1459889769.54124
2016.04.05 22:56:52 5: BMV: GetUpdate will request Time_since_last_full_charge
2016.04.05 22:56:52 5: BMV: GetUpdate check h290 => Automatic_syncs, poll = 1, last = 1459889770.68535
2016.04.05 22:56:52 5: BMV: GetUpdate will request Automatic_syncs
2016.04.05 22:56:52 5: BMV: GetUpdate check h301 => Discharged_Energy, poll = 1, last = 1459889781.14737
2016.04.05 22:56:52 5: BMV: GetUpdate will request Discharged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate check h302 => Charged_Energy, poll = 1, last = 1459889768.0791
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate tries to combine read commands
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine V_V_ / h259 with I_A_ / h261, span would be 3
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine I_A_ / h261 with CE_Ah_ / h265, span would be 5
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine CE_Ah_ / h265 with SOC___ / h266, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine SOC___ / h266 with Last_discharge / h282, span would be 17
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Last_discharge / h282 with Average_discharge / h283, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Average_discharge / h283 with Charge_cycles / h284, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Charge_cycles / h284 with Fulldischarges / h285, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Fulldischarges / h285 with Total_Ah_drawn / h286, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Total_Ah_drawn / h286 with Time_since_last_full_charge / h289, span would be 4
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Time_since_last_full_charge / h289 with Automatic_syncs / h290, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Automatic_syncs / h290 with Discharged_Energy / h301, span would be 12
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Discharged_Energy / h301 with Charged_Energy / h302, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charge_cycles to queue: 007200000006ee03011c0001 pdu 03011c0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for CE_Ah_ to queue: 006f00000006ee0301090001 pdu 0301090001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Average_discharge to queue: 001000000006ee03011b0001 pdu 03011b0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Last_discharge to queue: 00c600000006ee03011a0001 pdu 03011a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for SOC___ to queue: 004100000006ee03010a0001 pdu 03010a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Discharged_Energy to queue: 003200000006ee03012d0001 pdu 03012d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for I_A_ to queue: 000a00000006ee0301050001 pdu 0301050001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charged_Energy to queue: 009300000006ee03012e0001 pdu 03012e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Fulldischarges to queue: 001100000006ee03011d0001 pdu 03011d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Total_Ah_drawn to queue: 00ed00000006ee03011e0001 pdu 03011e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Automatic_syncs to queue: 00f100000006ee0301220001 pdu 0301220001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for V_V_ to queue: 00c200000006ee0301030001 pdu 0301030001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Time_since_last_full_charge to queue: 004200000006ee0301210001 pdu 0301210001
2016.04.05 22:56:52 5: BMV: GetUpdate called
2016.04.05 22:56:52 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:56:52 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:56:52 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:56:52 5: BMV: GetUpdate will request V_V_
2016.04.05 22:56:52 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:56:52 5: BMV: GetUpdate will request I_A_
2016.04.05 22:56:52 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829
2016.04.05 22:56:52 5: BMV: GetUpdate will request CE_Ah_
2016.04.05 22:56:52 5: BMV: GetUpdate check h266 => SOC___, poll = 1, last = 1459889791.38093
2016.04.05 22:56:52 5: BMV: GetUpdate will request SOC___
2016.04.05 22:56:52 5: BMV: GetUpdate check h282 => Last_discharge, poll = 1, last = 1459889791.55677
2016.04.05 22:56:52 5: BMV: GetUpdate will request Last_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h283 => Average_discharge, poll = 1, last = 1459889791.98954
2016.04.05 22:56:52 5: BMV: GetUpdate will request Average_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h284 => Charge_cycles, poll = 1, last = 1459889791.81898
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charge_cycles
2016.04.05 22:56:52 5: BMV: GetUpdate check h285 => Fulldischarges, poll = 1, last = 1459889767.02003
2016.04.05 22:56:52 5: BMV: GetUpdate will request Fulldischarges
2016.04.05 22:56:52 5: BMV: GetUpdate check h286 => Total_Ah_drawn, poll = 1, last = 1459889795.9088
2016.04.05 22:56:52 5: BMV: GetUpdate will request Total_Ah_drawn
2016.04.05 22:56:52 5: BMV: GetUpdate check h289 => Time_since_last_full_charge, poll = 1, last = 1459889769.54124
2016.04.05 22:56:52 5: BMV: GetUpdate will request Time_since_last_full_charge
2016.04.05 22:56:52 5: BMV: GetUpdate check h290 => Automatic_syncs, poll = 1, last = 1459889770.68535
2016.04.05 22:56:52 5: BMV: GetUpdate will request Automatic_syncs
2016.04.05 22:56:52 5: BMV: GetUpdate check h301 => Discharged_Energy, poll = 1, last = 1459889781.14737
2016.04.05 22:56:52 5: BMV: GetUpdate will request Discharged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate check h302 => Charged_Energy, poll = 1, last = 1459889768.0791
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate tries to combine read commands
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine V_V_ / h259 with I_A_ / h261, span would be 3
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine I_A_ / h261 with CE_Ah_ / h265, span would be 5
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine CE_Ah_ / h265 with SOC___ / h266, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine SOC___ / h266 with Last_discharge / h282, span would be 17
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Last_discharge / h282 with Average_discharge / h283, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Average_discharge / h283 with Charge_cycles / h284, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Charge_cycles / h284 with Fulldischarges / h285, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Fulldischarges / h285 with Total_Ah_drawn / h286, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Total_Ah_drawn / h286 with Time_since_last_full_charge / h289, span would be 4
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Time_since_last_full_charge / h289 with Automatic_syncs / h290, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Automatic_syncs / h290 with Discharged_Energy / h301, span would be 12
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Discharged_Energy / h301 with Charged_Energy / h302, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Automatic_syncs to queue: 00d400000006ee0301220001 pdu 0301220001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Total_Ah_drawn to queue: 00b400000006ee03011e0001 pdu 03011e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for V_V_ to queue: 006700000006ee0301030001 pdu 0301030001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Time_since_last_full_charge to queue: 007e00000006ee0301210001 pdu 0301210001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for I_A_ to queue: 00b700000006ee0301050001 pdu 0301050001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charged_Energy to queue: 00ea00000006ee03012e0001 pdu 03012e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Fulldischarges to queue: 002c00000006ee03011d0001 pdu 03011d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for SOC___ to queue: 00f600000006ee03010a0001 pdu 03010a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Last_discharge to queue: 00fd00000006ee03011a0001 pdu 03011a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Discharged_Energy to queue: 00f700000006ee03012d0001 pdu 03012d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charge_cycles to queue: 008a00000006ee03011c0001 pdu 03011c0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for CE_Ah_ to queue: 00d600000006ee0301090001 pdu 0301090001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Average_discharge to queue: 00de00000006ee03011b0001 pdu 03011b0001
2016.04.05 22:56:52 5: BMV: GetUpdate called
2016.04.05 22:56:52 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:56:52 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:56:52 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:56:52 5: BMV: GetUpdate will request V_V_
2016.04.05 22:56:52 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:56:52 5: BMV: GetUpdate will request I_A_
2016.04.05 22:56:52 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829
2016.04.05 22:56:52 5: BMV: GetUpdate will request CE_Ah_
2016.04.05 22:56:52 5: BMV: GetUpdate check h266 => SOC___, poll = 1, last = 1459889791.38093
2016.04.05 22:56:52 5: BMV: GetUpdate will request SOC___
2016.04.05 22:56:52 5: BMV: GetUpdate check h282 => Last_discharge, poll = 1, last = 1459889791.55677
2016.04.05 22:56:52 5: BMV: GetUpdate will request Last_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h283 => Average_discharge, poll = 1, last = 1459889791.98954
2016.04.05 22:56:52 5: BMV: GetUpdate will request Average_discharge
2016.04.05 22:56:52 5: BMV: GetUpdate check h284 => Charge_cycles, poll = 1, last = 1459889791.81898
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charge_cycles
2016.04.05 22:56:52 5: BMV: GetUpdate check h285 => Fulldischarges, poll = 1, last = 1459889767.02003
2016.04.05 22:56:52 5: BMV: GetUpdate will request Fulldischarges
2016.04.05 22:56:52 5: BMV: GetUpdate check h286 => Total_Ah_drawn, poll = 1, last = 1459889795.9088
2016.04.05 22:56:52 5: BMV: GetUpdate will request Total_Ah_drawn
2016.04.05 22:56:52 5: BMV: GetUpdate check h289 => Time_since_last_full_charge, poll = 1, last = 1459889769.54124
2016.04.05 22:56:52 5: BMV: GetUpdate will request Time_since_last_full_charge
2016.04.05 22:56:52 5: BMV: GetUpdate check h290 => Automatic_syncs, poll = 1, last = 1459889770.68535
2016.04.05 22:56:52 5: BMV: GetUpdate will request Automatic_syncs
2016.04.05 22:56:52 5: BMV: GetUpdate check h301 => Discharged_Energy, poll = 1, last = 1459889781.14737
2016.04.05 22:56:52 5: BMV: GetUpdate will request Discharged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate check h302 => Charged_Energy, poll = 1, last = 1459889768.0791
2016.04.05 22:56:52 5: BMV: GetUpdate will request Charged_Energy
2016.04.05 22:56:52 5: BMV: GetUpdate tries to combine read commands
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine V_V_ / h259 with I_A_ / h261, span would be 3
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine I_A_ / h261 with CE_Ah_ / h265, span would be 5
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine CE_Ah_ / h265 with SOC___ / h266, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine SOC___ / h266 with Last_discharge / h282, span would be 17
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Last_discharge / h282 with Average_discharge / h283, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Average_discharge / h283 with Charge_cycles / h284, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Charge_cycles / h284 with Fulldischarges / h285, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Fulldischarges / h285 with Total_Ah_drawn / h286, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Total_Ah_drawn / h286 with Time_since_last_full_charge / h289, span would be 4
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Time_since_last_full_charge / h289 with Automatic_syncs / h290, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Automatic_syncs / h290 with Discharged_Energy / h301, span would be 12
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: GetUpdate cannot combine Discharged_Energy / h301 with Charged_Energy / h302, span would be 2
2016.04.05 22:56:52 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charge_cycles to queue: 009400000006ee03011c0001 pdu 03011c0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for CE_Ah_ to queue: 00c800000006ee0301090001 pdu 0301090001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Average_discharge to queue: 006c00000006ee03011b0001 pdu 03011b0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for SOC___ to queue: 008500000006ee03010a0001 pdu 03010a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Last_discharge to queue: 006f00000006ee03011a0001 pdu 03011a0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Discharged_Energy to queue: 00c500000006ee03012d0001 pdu 03012d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for I_A_ to queue: 00e400000006ee0301050001 pdu 0301050001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Charged_Energy to queue: 008500000006ee03012e0001 pdu 03012e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Fulldischarges to queue: 00fb00000006ee03011d0001 pdu 03011d0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Automatic_syncs to queue: 001e00000006ee0301220001 pdu 0301220001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Total_Ah_drawn to queue: 000500000006ee03011e0001 pdu 03011e0001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for V_V_ to queue: 005000000006ee0301030001 pdu 0301030001
2016.04.05 22:56:52 5: BMV: Send adds fcode 3 for Time_since_last_full_charge to queue: 002a00000006ee0301210001 pdu 0301210001
2016.04.05 22:56:56 5: BMV: raw read: 008300000005ee03020021
2016.04.05 22:56:56 5: BMV: ParseFrames got: 008300000005ee03020021
2016.04.05 22:56:56 4: BMV: ParseFrames: fcode 3 from 238, tid 131, data 020021 expect 3 from 238, tid 131 for module BMV
2016.04.05 22:56:56 5: BMV: ParseObj called with 0021 and start 290
2016.04.05 22:56:56 5: BMV: ParseObj ObjInfo: reading=Automatic_syncs, unpack=n, expr=, format=, map=
2016.04.05 22:56:56 4: BMV: ParseObj for Automatic_syncs assigns 33
2016.04.05 22:56:56 5: BMV: ParseFrames done, reply to fCode 3, 13 readings
2016.04.05 22:56:56 5: BMV: handle queue commDelay for device BMV not over, try again later
2016.04.05 22:57:04 5: BMV: GetUpdate called
2016.04.05 22:57:04 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:57:04 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:57:04 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:57:04 5: BMV: GetUpdate will request V_V_
2016.04.05 22:57:04 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:57:04 5: BMV: GetUpdate will request I_A_
2016.04.05 22:57:04 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829
2016.04.05 22:57:04 5: BMV: GetUpdate will request CE_Ah_
2016.04.05 22:57:04 5: BMV: GetUpdate check h266 => SOC___, poll = 1, last = 1459889791.38093
2016.04.05 22:57:04 5: BMV: GetUpdate will request SOC___
2016.04.05 22:57:04 5: BMV: GetUpdate check h282 => Last_discharge, poll = 1, last = 1459889791.55677
2016.04.05 22:57:04 5: BMV: GetUpdate will request Last_discharge
2016.04.05 22:57:04 5: BMV: GetUpdate check h283 => Average_discharge, poll = 1, last = 1459889791.98954
2016.04.05 22:57:04 5: BMV: GetUpdate will request Average_discharge
2016.04.05 22:57:04 5: BMV: GetUpdate check h284 => Charge_cycles, poll = 1, last = 1459889791.81898
2016.04.05 22:57:04 5: BMV: GetUpdate will request Charge_cycles
2016.04.05 22:57:04 5: BMV: GetUpdate check h285 => Fulldischarges, poll = 1, last = 1459889767.02003
2016.04.05 22:57:04 5: BMV: GetUpdate will request Fulldischarges
2016.04.05 22:57:04 5: BMV: GetUpdate check h286 => Total_Ah_drawn, poll = 1, last = 1459889795.9088
2016.04.05 22:57:04 5: BMV: GetUpdate will request Total_Ah_drawn
2016.04.05 22:57:04 5: BMV: GetUpdate check h289 => Time_since_last_full_charge, poll = 1, last = 1459889769.54124
2016.04.05 22:57:04 5: BMV: GetUpdate will request Time_since_last_full_charge
2016.04.05 22:57:04 5: BMV: GetUpdate check h290 => Automatic_syncs, poll = 1, last = 1459889816.5372
2016.04.05 22:57:04 5: BMV: GetUpdate will request Automatic_syncs
2016.04.05 22:57:04 5: BMV: GetUpdate check h301 => Discharged_Energy, poll = 1, last = 1459889781.14737
2016.04.05 22:57:04 5: BMV: GetUpdate will request Discharged_Energy
2016.04.05 22:57:04 5: BMV: GetUpdate check h302 => Charged_Energy, poll = 1, last = 1459889768.0791
2016.04.05 22:57:04 5: BMV: GetUpdate will request Charged_Energy
2016.04.05 22:57:04 5: BMV: GetUpdate tries to combine read commands
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine V_V_ / h259 with I_A_ / h261, span would be 3
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine I_A_ / h261 with CE_Ah_ / h265, span would be 5
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine CE_Ah_ / h265 with SOC___ / h266, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine SOC___ / h266 with Last_discharge / h282, span would be 17
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Last_discharge / h282 with Average_discharge / h283, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Average_discharge / h283 with Charge_cycles / h284, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Charge_cycles / h284 with Fulldischarges / h285, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Fulldischarges / h285 with Total_Ah_drawn / h286, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Total_Ah_drawn / h286 with Time_since_last_full_charge / h289, span would be 4
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Time_since_last_full_charge / h289 with Automatic_syncs / h290, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Automatic_syncs / h290 with Discharged_Energy / h301, span would be 12
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Discharged_Energy / h301 with Charged_Energy / h302, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Time_since_last_full_charge to queue: 00b800000006ee0301210001 pdu 0301210001
2016.04.05 22:57:04 4: BMV: handle queue sends 007b00000006ee0301210001 (fcode 3 to 238 for Time_since_last_full_charge, len 1)
2016.04.05 22:57:04 5: SW: 007b00000006ee0301210001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for V_V_ to queue: 001d00000006ee0301030001 pdu 0301030001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Automatic_syncs to queue: 002c00000006ee0301220001 pdu 0301220001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Total_Ah_drawn to queue: 000b00000006ee03011e0001 pdu 03011e0001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Fulldischarges to queue: 008400000006ee03011d0001 pdu 03011d0001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Charged_Energy to queue: 00ad00000006ee03012e0001 pdu 03012e0001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for I_A_ to queue: 006300000006ee0301050001 pdu 0301050001
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Discharged_Energy to queue: 005800000006ee03012d0001 pdu 03012d0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Last_discharge to queue: 00bd00000006ee03011a0001 pdu 03011a0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for SOC___ to queue: 00b600000006ee03010a0001 pdu 03010a0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Average_discharge to queue: 000100000006ee03011b0001 pdu 03011b0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for CE_Ah_ to queue: 00f100000006ee0301090001 pdu 0301090001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Charge_cycles to queue: 00df00000006ee03011c0001 pdu 03011c0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: GetUpdate called
2016.04.05 22:57:04 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:57:04 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:57:04 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:57:04 5: BMV: GetUpdate will request V_V_
2016.04.05 22:57:04 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:57:04 5: BMV: GetUpdate will request I_A_
2016.04.05 22:57:04 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829
2016.04.05 22:57:04 5: BMV: GetUpdate will request CE_Ah_
2016.04.05 22:57:04 5: BMV: GetUpdate check h266 => SOC___, poll = 1, last = 1459889791.38093
2016.04.05 22:57:04 5: BMV: GetUpdate will request SOC___
2016.04.05 22:57:04 5: BMV: GetUpdate check h282 => Last_discharge, poll = 1, last = 1459889791.55677
2016.04.05 22:57:04 5: BMV: GetUpdate will request Last_discharge
2016.04.05 22:57:04 5: BMV: GetUpdate check h283 => Average_discharge, poll = 1, last = 1459889791.98954
2016.04.05 22:57:04 5: BMV: GetUpdate will request Average_discharge
2016.04.05 22:57:04 5: BMV: GetUpdate check h284 => Charge_cycles, poll = 1, last = 1459889791.81898
2016.04.05 22:57:04 5: BMV: GetUpdate will request Charge_cycles
2016.04.05 22:57:04 5: BMV: GetUpdate check h285 => Fulldischarges, poll = 1, last = 1459889767.02003
2016.04.05 22:57:04 5: BMV: GetUpdate will request Fulldischarges
2016.04.05 22:57:04 5: BMV: GetUpdate check h286 => Total_Ah_drawn, poll = 1, last = 1459889795.9088
2016.04.05 22:57:04 5: BMV: GetUpdate will request Total_Ah_drawn
2016.04.05 22:57:04 5: BMV: GetUpdate check h289 => Time_since_last_full_charge, poll = 1, last = 1459889769.54124
2016.04.05 22:57:04 5: BMV: GetUpdate will request Time_since_last_full_charge
2016.04.05 22:57:04 5: BMV: GetUpdate check h290 => Automatic_syncs, poll = 1, last = 1459889816.5372
2016.04.05 22:57:04 5: BMV: GetUpdate will request Automatic_syncs
2016.04.05 22:57:04 5: BMV: GetUpdate check h301 => Discharged_Energy, poll = 1, last = 1459889781.14737
2016.04.05 22:57:04 5: BMV: GetUpdate will request Discharged_Energy
2016.04.05 22:57:04 5: BMV: GetUpdate check h302 => Charged_Energy, poll = 1, last = 1459889768.0791
2016.04.05 22:57:04 5: BMV: GetUpdate will request Charged_Energy
2016.04.05 22:57:04 5: BMV: GetUpdate tries to combine read commands
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine V_V_ / h259 with I_A_ / h261, span would be 3
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine I_A_ / h261 with CE_Ah_ / h265, span would be 5
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine CE_Ah_ / h265 with SOC___ / h266, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine SOC___ / h266 with Last_discharge / h282, span would be 17
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Last_discharge / h282 with Average_discharge / h283, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Average_discharge / h283 with Charge_cycles / h284, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Charge_cycles / h284 with Fulldischarges / h285, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Fulldischarges / h285 with Total_Ah_drawn / h286, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Total_Ah_drawn / h286 with Time_since_last_full_charge / h289, span would be 4
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Time_since_last_full_charge / h289 with Automatic_syncs / h290, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Automatic_syncs / h290 with Discharged_Energy / h301, span would be 12
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: GetUpdate cannot combine Discharged_Energy / h301 with Charged_Energy / h302, span would be 2
2016.04.05 22:57:04 5: BMV: GetUpdate: combine for h is 1
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Average_discharge to queue: 00b500000006ee03011b0001 pdu 03011b0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Charge_cycles to queue: 002300000006ee03011c0001 pdu 03011c0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for CE_Ah_ to queue: 002500000006ee0301090001 pdu 0301090001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Last_discharge to queue: 008600000006ee03011a0001 pdu 03011a0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for SOC___ to queue: 00e700000006ee03010a0001 pdu 03010a0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Discharged_Energy to queue: 007f00000006ee03012d0001 pdu 03012d0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Fulldischarges to queue: 001e00000006ee03011d0001 pdu 03011d0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for I_A_ to queue: 00bf00000006ee0301050001 pdu 0301050001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Charged_Energy to queue: 00d700000006ee03012e0001 pdu 03012e0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for V_V_ to queue: 00c200000006ee0301030001 pdu 0301030001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Time_since_last_full_charge to queue: 006b00000006ee0301210001 pdu 0301210001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Total_Ah_drawn to queue: 00b200000006ee03011e0001 pdu 03011e0001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: Send adds fcode 3 for Automatic_syncs to queue: 001f00000006ee0301220001 pdu 0301220001
2016.04.05 22:57:04 3: BMV: Send queue too long, dropping request
2016.04.05 22:57:04 5: BMV: GetUpdate called
2016.04.05 22:57:04 5: BMV: GetUpdate objects from attributes: h284 h290 h285 h301 h283 h266 h259 h261 h302 h289 h286 h282 h265
2016.04.05 22:57:04 5: BMV: GetUpdate full object list: h259 h261 h265 h266 h282 h283 h284 h285 h286 h289 h290 h301 h302
2016.04.05 22:57:04 5: BMV: GetUpdate check h259 => V_V_, poll = 1, last = 1459889769.37936
2016.04.05 22:57:04 5: BMV: GetUpdate will request V_V_
2016.04.05 22:57:04 5: BMV: GetUpdate check h261 => I_A_, poll = 1, last = 1459889767.18185
2016.04.05 22:57:04 5: BMV: GetUpdate will request I_A_
2016.04.05 22:57:04 5: BMV: GetUpdate check h265 => CE_Ah_, poll = 1, last = 1459889791.67829



ich hab das längere Log als File angehängt, war etwas groß für das Code Fenster.

Gruß
Hermann

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 April 2016, 20:30:49
Hallo Hermann,

das Log war hilfreich. Es ist tatsächlich so, dass ein erster Request nicht rechtzeitig beantwortet wird. Das Modul meldet den Timeout und sendet dann den nächsten Request. Der Lesepuffer im Modul ist bis dahin noch leer. Beim nächsten Read kommt jedoch erst die Antwort auf den ersten Request an und die zweite Antwort hängt direkt dahinter. Das Modul hat bisher die verspätete erste Antwort als Antwort für den zweiten Request interpretiert, was natürlich falsch ist. Ein höherer Timeout sollte das Problem schon lösen.

Ich habe eine neue Version zum Testen angehängt. Die prüft jetzt eine Transaction Id und sollte das Problem ebenfalls beheben.

Da ich selbst kein Gerät mit Modbus-TCP habe sondern nur RTU, wäre es schön wenn ein paar Leute testen könnten, ob mit der Änderung noch alles funktioniert.

Gruss
   Stefan

EDIT 8.4.16: Angehängtes Modul entfernt, neuere Version in späterem Post.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 08 April 2016, 10:32:16
Hallo Stefan,

vielen Dank, das schaut gut aus!
Saubere Grafen ohne Ausreißer seit Gestern Abend.

Gruß Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 April 2016, 21:13:17
Hallo,

ich habe das Handling von Modbus TCP nochmal optimiert.
Falls nach einem Timeout doch noch ein Antwort-Frame gelesen wird, wurde bisher auch das folgende Frame gedroppt. Jetzt sollte das Modul versuchen, auch in solchen Fällen das Folgeframe noch zu interpretieren.
Wenn es bei Euch funktioniert, checke ich die Änderung in ein paar Tagen ein.

Zudem wird jetzt bei Get ein :noArg in der Antwort auf ? gesetzt, so dass fhemweb kein Eingabefeld anzeigt.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 13 April 2016, 14:15:02
Hallo Stefan,

schaut soweit ganz gut aus denke ich.

Edit:
Die "Send queue too long" Meldungen hab ich denk ich größten Teils weg, war ne fhem überlastung  :D

Hab gerade mal das log ne zeit Tailen lassen,
dabei ist mir aufgefallen, dass ich immer wieder "Send queue too long, dropping request" bekomme,
hast Du einen vorschlag wo ich noch drehen könnte?


2016.04.13 14:11:42 4: BMV: ParseFrames: fcode 3 from 238, tid 82, data 020c1c e
xpect 3 from 238, tid 82 for module BMV
2016.04.13 14:11:42 4: BMV: ParseObj for Last_discharge assigns 310
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:42 3: CCGX: Send queue too long, dropping request
2016.04.13 14:11:43 4: BMVview: ParseFrames: fcode 3 from 238, tid 168, data 020
148 expect 3 from 238, tid 168 for module BMVview
2016.04.13 14:11:43 4: BMVview: ParseObj for I_A_ assigns 32.8


dev-timing-timeout hab ich schon mal wieder auf 1 zurück gesetzt

Gruß Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 April 2016, 11:59:24
Hallo,

wenn die Send Queue aufgrund zu vieler definierter Einzel-Requests doch mal zu kurz wäre, kann man sie im Modbus-Device auch per queueMax-Attribut verlängert.

Gruss
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 14 April 2016, 12:30:33
Hallo Stefan,

hast Du für Modbus TCP auch die Möglichkeit vorgesehen ganze Blöcke einzulesen?
da geht ja in einer Abfrage
z.b. den Block  3-41 abzurufen
und dann die Werte einzelnen Readings wie bei der Einzellabfrage zu zuweisen?
Würde denk ich die Systemlast verringern.

oder geht das schon, wenn ich eine zusammenhängende parseInfo structure definiere?

Gruß Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: vknie am 14 April 2016, 14:26:11
Hallo zusammen,

erstmal einen Dank an Stefan für dieses tolle Tool!

ich habe in fhem auf Raspi 2 mit Erfolg meine diversen AVR-Module mit MODBUS RTU über RS485 und Modbus RTU über TCP in Betrieb genommen.
Da ich mit der Beschreibung des Timings zu einzelnen Requests einige Verständnisprobleme hatte, habe ich viel rumexperimentiert,
um einigermaßen dahinterzukommen.

Dabei ist mir folgende Unregelmäßigkeit aufgefallen:
1.nach einem Neustart laufen alle Modbus-Requests im eingestellten Intervall ab, auch bei Baudraten von bis zu 500000kBit/s!
2.Wird die Intervallzeit über den DEF-Link in der Weboberfläche geändert, bzw. nur der Link angeklickt, damit sich das Fenster zum Ändern öffnet, und das Fenster über den modify-Button geschlossen, werden ab diesem Zeitpunkt alle Requests doppelt in kürzester Zeit ausgeführt, auch wen nichts geändert wurde.
3.Dies trifft sowohl beim seriellen Device zu als auch bei RTU über TCP.
4.Auch bei sehr langen Intervallen von 2 sec habe ich 2 Requests innerhab weniger ms hintereinander.
5.Dies ändert sich nicht mehr. Angesammelte Requests aus einer Queue scheinen es also nicht zu sein.

Hat jemand hierfür eine Erklärung.

Gruß Volker

PS. Habe gerade eben nochmal getestet mit der Version 98-Modbus.pm aus Antwort 211 - kein Unterschied
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 April 2016, 17:16:59
Hallo Hermann,

das Basismodul versucht bereits heute die Abfragen zusammenzufassen. Sowohl bei Modbus TCP als auch bei RTU.
Gesteuert wird das per dev-([cdih]-)*combine bzw. über die entsprechende Hash-Struktur bei Modulen auf Basis von Modbus.pm.
Wie hoch man combine setzen kann, hängt vom Device ab. Manche erlauben beim Function code 3 beispielsweise maximal 5 Register in einem Request, andere sogar 50 oder 100.
Wenn combine nicht angegeben wird, geht das Modul von 1 aus und dann gibt es einzelne Requests für jeden Wert.
Bei verbose 5 sieht man das gut im Log.

Gruss
   Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 April 2016, 17:23:06
Hallo Volker,

danke für den Hinweis. Das klingt nach einem Bug.
Ich schau mir das mal an. Vermutlich fehlt ein RemoveInternalTimer in der Define Funktion ...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: vknie am 15 April 2016, 11:41:11
Hallo Stefan,
was mir noch aufgefallen ist - wenn Modbus RTU seriell und über TCP benutzt wird, werden beim Start doppelte Funktionsdefinitionen aus dem MODBUS-pm-Modul im Logfile eingetragen, wenn die TCP-Variante vor der seriellen definiert wird. Ich weiß nicht, ob das nur unschön ist oder noch Folgen hat.
Definiert man das serielle Device als erstes, bleiben die Fehlermeldungen/Warnungen aus.

Gruß

Volker   
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 16 April 2016, 14:39:14
Hallo Volker,

das ist unschön, sollte aber keine negativen Folgen haben.
Anbei eine korrigierte Version von Modbus und ModbusAttr. Wenn die keine Probleme machen, checke ich sie ein.

Gruss / Thanx
    Stefan

EDIT 14.7.16: angehängte alte Module entfernt
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: vknie am 17 April 2016, 23:06:18
Hallo Stefan,

ich habe beide Varianten mit deinen neuen Dateien ausprobiert und konnte den Fehler mit den doppelten Requests nicht mehr feststellen, weder bei der RTU über TCP-Variante als auch bei der RS232/RS485-Variante.
Ich denke, dass der Fehler damit behoben ist.

Gruß und Danke

Volker
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Burny4600 am 18 April 2016, 20:12:51
Läßt sich das irgendwie mit einem RS485 Modbus auf TCP/IP auch realisieren.

Ich möchte einen SDM630M/Modbus an einem RS485/Modbus-TCP/IP Konverter betreiben.
Mir fehlt aber noch der Durchblick wie ich das konfigurationstechnisch umsetzten kann.

Vielleicht hat hier ja schon jemand eine Lösung.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 20 April 2016, 21:33:55
Hallo Chris,

das sollte eigentlich funktionieren.
Wenn Dein Konverter Modbus-TCP (port 502) spricht, kannst Du seine IP-Adresse und TCP als Modus beim Define angeben.
Wenn er Modbus-RTU über einen TCP-Port spricht, kannst Du seine Adresse und Modus RTU angeben.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 02 Mai 2016, 21:21:12
Hallo Stefan,

das combine geht super, alle Werte mit einer Abfrage ..

so jetzt noch ne dumme Frage  ::)

wie kann ich Ihn eigentlich einfach zu nem TCP reconnect überreden?
Bisher mach ich immer ein defmod mit geänderem Port.

Gruß Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Mai 2016, 18:27:54
Hallo Hermann,

gute Frage.
Ich habe leider kein Modbus-TCP Gerät zum Testen und habe mich bisher darauf verlassen, dass der Status disconnected in der _Ready Funktion zu einem neuen OpenDev führt.
Wenn das nicht funktioniert muss ich mir das nochmal intensiver ansehen.

Gruss
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: BallaBalla am 17 Mai 2016, 21:02:58
Hallo in die Runde
An bei mein Code für einen Zähler ABB B23 112 100. Es sollte auch für Zähler ABB B21 und ABB B24 funktionieren.
Installationsanleitung mit Code-Tabelle gibt es auch in Deutsch bei ABB.

Wer den Code benutzen möchte, kann es tun.

Der Code ist nicht ganz vollständigt da ich bei einigen Punkten total auf dem Schlauch stehe.
Evtl. hat jemand die Zeit und die Lust daraus ein Modul zu erstellen. Das übersteigt derzeit noch mein können.

Gruß
Benno
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 29 Mai 2016, 16:13:27
Hallo Stefan,

erstmal vielen Dank für das Modbus Modul.
Ich habe jetzt 9 Slaves per RS485 laufen.
Das funktioniert Prinzipiell auch, aber hin und wieder gibt es doch Probleme.
Das manchmal Werte aus falschen Registern gesetzt werden scheint gefixt zu sein.
Aber ich habe öfter das Problem das beim schreiben von Registern der RS485 Port einen disconnect bekommt, dadurch kommen nicht alle FHEM Befehle bei den Slaves an. Wenn ich den Verbose Wert der Slaves auf 3 setze bekomme ich jede menge "Send queue too long".
Da die Slaves ja nicht von sich aus senden können muss das modul eine art "Statemachine" abbilden, daher habe ich einen Interval von 1 und kurze Timeouts um die kontinuierlich zu pollen.
Ich bin kein Programmierer und kann den Code nur schwer nachvollziehen, daher meine Frage.
Besteht die Möglichkeit anstatt eines Intervals das polling Kontinuierlich laufen zu lassen, damit müsste sich die queue auch deutlich verkleinern da die gleiche abfrage nicht mehrfach existiert. Vielleicht auch mit einem Vorrang für schreibende Requests.
Ich habe die Slaves vorher mit einem Python Script angesprochen und bei 9 Slaves mit 160 Registern für einen kompletten Poll 1.2s benötigt. Jetzt mit FHEM und nur noch 50 Registern benötige ich mehr als das doppelte an Zeit, plus die manchmal verschluckten Writes.
Ach ja, läuft alles auf einem PI2.

Güße Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 29 Mai 2016, 17:41:58
Hallo Marco,

ein "kontinuierliches Pollen" gibt es leider nicht. Modbus Slaves antworten immer erst wenn sie gefragt werden und Daher musst Du eben häufig fragen.

Du kannst aber vermutlich einiges optimieren.
Jeder Slave hat ein eigenes Maximum an Registern, die in einem Read per Function Code 3 gleichzeitig gelesen werden können. je höher Du das setzt (Combine) umso effizienter wird der Bus genutzt. Du darfst nur nicht über das Maximum gehen, sonst antworten die Slaves ggf. gar nicht. Das Maximum steht normalerweise in der Doku der Slaves.

Bei 9 Slaves und vielen Registern ist evt. auch die Default-Send-Queue zu kurz. Die kannst Du auch per Attribut vergrößern.

Wenn die serielle Schnittstelle auf Disconnected geht, klingt das nach Verkabelungsproblemen, die evt. erst bei einer intensiven Bus-Nutzung Auswirkungen zeigt. Durch Erhöhen von Combine wird das evt. besser.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 29 Mai 2016, 18:19:53
Die Slaves habe ich selber gebaut, Arduinos mit Minimalmodbus. Die max. gleichzeitige Anzahl an Registern sind 25 schreibend oder 27 lesend, dann ist die FIFO Puffer voll. Mit dem Python Script habe ich immer 20er blöcke benutzt, das Funktioniert auch Problemlos ohne disconnects. Wenn ich mit FHEM mehr als 10 gleichzeitig hole gibts jede menge timeouts und disconnects.
Ich habe etliche konstellationen mit timeouts, combine und queue längen ausprobiert.
Jetzt habe ich combine 2, queue 100, commdelay 0, senddelay 0 und erreiche so ca. 2500 request die minute und manchmal einen timeout.
Da mit einem interval von 1 das abfragen der register immer sekündlich erfolgt, alle register aber abzufragen mehr als 1 sekunde dauert bring auch das erhöhen der queue nichts da sie immer überläuft.

Gibts keine möglichkeit z.B. die abfrage eines registers garnicht erst zu queuen falls diese abfrage schon in der queue ist?
Oder alternativ zu verhindern das schreibende anfragen aus der queue verworfen werden?
Das würde meine Probleme glaube ich schon beheben.

grüße
Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 29 Mai 2016, 18:43:43
Hallo Marco,

das klingt seltsam. Es würde mich schon interessieren, wo der Unterschied zwischen dem Python-Script und den Requests von Fhem ist.
Hast Du eine Möglichkeit, die tatsächlich über die Leitung gehenden Daten aufzuzeichnen und zu vergleichen?

Das mit dem Droppen eines Requests, der schon in der Queue ist, ist eine gute Idee.
Ich pack das mal auf die Wunschliste.
In den letzten Monaten habe einiges an HTTPMOD weiterentwickelt und ein paar der Features davon möchte ich demnächst auch ins Modbus-Modul einbauen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 29 Mai 2016, 19:35:35
Hallo Stefan,

mit dem aufzeichnen habe ich mir auch schon Gedanken gemacht. Da das Problem der disconnects nur sporadisch auftritt müsste ein Langzeitlog her, aber bei den Unmengen an Daten die da anfallen sprengt das meinen PI.
Aber mit den jetzigen Einstellungen hält sich das ja in Grenzen, wenn bei 20000 Requests ein Disconnect auftritt ist die wahrscheinlichkeit das es ein write request war relativ gering. Ich denke aus der Queue werden vieeelmehr requests verworfen, und da ist die wahrscheinlichkeit hoch das es writes waren, und dann fahren meine rolladen halt nicht hoch oder runter.
Ich habe mit da schon mit doifs konstrukte gebaut um diese requests zu wiederholen bis der motor auch fährt, aber das wird immer komplizierter je mehr dazu kommt.
Als ich mir das pythonscript gebastelt habe konnte ich auch die passenden timeouts sauber ausmessen (mit dem ossi). Da ist mir aufgefallen das z.B. beim lesen verschiedener Register am gleichen Slave keine wartezeiten nötig waren, wenn aber ein anderer slave angesprochen wurde hat der bus eine weile benötigt bevor es funktionierte. Gleiches beim wechsel zwischen lesen und schreiben.
Also mit python habe ich das dann so gelöst das ich ein 50ms timeout benutze, aber erst beim 2. Timeout quasi die Fehlerbehandlung bzw. Protokolierung startete. Dadurch wurde der Bus von einem ausgefallenen Slave nicht blockiert, die Pollzeiten aber trotzdem niedrig gehalten. Soweit ich das nachlesen konnte hängt das auch stark von der eingesetzten Library ab, und der eingesetzen Hardware.

Ich hätte das Script auch weiterbenutzt, aber das ist viel einfacher wenn FHEM native Modbus spricht. Und mir ist es nicht gelungen eine vernünftige Schnittstelle zwischen dem Script und FHEM zu basteln. Dafür habe ich einfach keine Programmierkenntnisse, und jeden programmschritt zu googlen fehlt mir die Zeit.
Was ich wohl sagen kann, je mehr Last auf dem PI ist, desto eher gibt es timeouts, bzw. disconnects. Das python Script lief immer auf einem anderen Core als die FHEM Instanz, jetzt muss das alles über einen Core laufen, evtl. gibts dadurch timingprobleme.

grüße
Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 29 Mai 2016, 22:18:37
Hi Marco,

Kannst Du mal testweise Combine auf 25 setzen, den Timeout dafür auf das doppelte und dabei mit verbose 5 loggen?

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 30 Mai 2016, 23:21:40
Hallo Stefan,

ich bin heute nicht dazu gekommen die logs zu ziehen.
Wenn ich früh genug zu hause bin reiche ich die morgen nach.

Grüße Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 31 Mai 2016, 19:08:34
Hallo Stefan,

ich hätte das log, sind ca. 10mb
https://www.dropbox.com/sh/3od3h0mvtse34uz/AAAnkcficAYJXfivDh8w1eHLa?dl=0

grüße Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 13 Juni 2016, 10:00:43
Hallo,

ist es auch möglich mit dem Modul ein Modbus Gerät zu erstellen?

Hintergrund ist das ich mehrere Modbus Geräte habe (Wechselrichter, Stromzähler, Lüftungsanlage) der Wechselrichter (Fronius) kann auch per Modbus auf einen Stromzähler zugreifen und liest dabei die Aktuelle Verbrauchsleistung aus. Jedoch funktioniert das nur mit dem von Fronius angebotenen Zähler da die Register bei meinem SDM630 andere sind. Nun würde ich die Werte meines SDM630 gerne auf einer neuen Adresse und mit anderen Registern wieder ausgeben. Somit würde der Fronius Wechselrichter über FHEM auch an die Werte kommen.

Gruß
Björnar.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 13 Juni 2016, 13:00:18
Zitat von: wthiess am 13 Juni 2016, 11:45:44
Hallo!

Ich habe eine Wohnraumlüftung von Systemair VR400DC. Derzeit steuere ich die Anlage über diverse Releais über deren Digitale Kontakte. Aber die Anlage kann mehr eben auch ModeBus.  Weiters habe ich einen USB-RS485 Adapter Von Circuit.
Der Adapter wird von Fhem gefunden.

define luftbus Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AL01GIJ7-if00-port0@19200,8,E,1

Leider habe ich keine Ahnung wie ich weiter machen soll und die Anlage in FHEm anzusprechen.
Lauft Beschreibung hat das Ding einige Werte die ich auslesen könnte.
Vielleicht kann mir bitte jemand hier weiterhelfen.

Kann ich dafür ein fertiges Modul verwenden oder muss dafür etwas programmiert werden? Leider bin ich kein Programmierer.

Hier die Modebusbeschreibung der Anlage.
intern.telso.at/ModbusD24810.pdf (http://intern.telso.at/ModbusD24810.pdf)

lg
Wolfgang

Suchfunktion hätte dich darauf geführt:

https://forum.fhem.de/index.php/topic,54429.msg460088.html#msg460088 (https://forum.fhem.de/index.php/topic,54429.msg460088.html#msg460088)

Bei mir Funktioniert es soweit gut. Ich steuer momentan aber nur die Stufen.
Aber man kann ja auch fast alles andere darüber festlegen.

Ich werde in Zukunft die Anlage auch Temperaturabhängig damit steuern.

Gruß
Bjrörnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 Juni 2016, 15:33:03
Hallo Marco,

Vielen Dank für die Logs und sorry für die späte Antwort.
So wie ich die Logs verstehe ist ein Hochsetzen von Combine prinzipiell schon der richtige Weg. Dadurch wird die Anzahl der Requests pro Sekunde deutlich reduziert. Allerdings haben Deine Geräte, wie Du es ja schon selbst erkannt hast, ein Problem wenn die nächste Anfrage an ein anderes Gerät zu früh nach der letzten Antwort auf den Bus kommt. Dann antwortet das Gerät nicht und der Timeout führt dazu dass der Bus lange nicht genutzt wird und während dieser Zeit läuft die Queue voll.

Ein Hochsetzen von commDelay oder sendDelay bringt möglicherweise auch nichts, da diese Delays bisher nur ein Gerät betrachten und nicht busbezogen arbeiten.

Für die nächste Modulversion würde auf jeden Fall einen weiteren Delay ermöglichen, der busbezogen dann greift wenn mit einem anderen Endgerät gesprochen werden soll. Zudem werde ich einbauen, dass Requests, die schon in der Queue stehen, gedroppt werden können.

In der Zwischenzeit könntest Du auch probieren, mit pollDelay nur die Register häufig zu Pollen, bei denen Du auch die Aktualität benötigst.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 14 Juni 2016, 16:11:06
Hallo Stefan,

ich habe die Register schon reduziert, damit läufts auch.
Ich bin mal gespannt auf die neue Version.

Grüße Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 18 Juni 2016, 14:16:11
Hallo,

anbei eine neue Version der Module Modbus und ModbusAttr zum Testen.
auf Ebene des physischen Device sind folgende Attribute neu:
grundsätzliche Verzögerung zwischen dem letzten Read und dem nächsten Send, auch Geräteübergreifend
Verzögerung bevor ein Send an ein neues Gerät geht
verwirft neue Requests falls der gleiche Request noch in der Queue steht

zudem wurden folgende Attribute von HTTPMOD übernommen.
wie bei at
vordefinierte Set-Befehle: reread, interval, start und stop

Gruss
    Stefan

EDIT 14.7.16: angehängte Dateien entfernt, neuere Version in späterem Post
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 19 Juni 2016, 14:03:21
Hallo Stefan,

hab dein neues Modul mit ClientSwitchDelay und dropQueueDoubles laufen. Sieht alles gut aus.
Im laufe der Woche werde ich auch alle jetzt pausierten Register dazunehmen. Ich berichte dann davon.

Vielen Dank für deine Arbeit
Grüße Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 20 Juni 2016, 14:56:07
Hallo,

mir ist nicht ganz klar ob das hier richtig ist aber ich versuche es mal ;

Ich lese meine Lüftungsanlage per Modbus aus, klappt soweit.
Nur möchte ich gerne den Status ändern er steht immer auf STATE: opened
Kann ich hier auch etwas anderes Übergeben? und wenn ja wie?

Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mba am 20 Juni 2016, 19:27:38
Hallo Björnar,

ich habe das über ReadingsProxy gelöst.
Vielleicht hilft dir das weiter.

Grüße Marco
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 20 Juni 2016, 19:54:55
Zitat von: mba am 20 Juni 2016, 19:27:38
Hallo Björnar,

ich habe das über ReadingsProxy gelöst.
Vielleicht hilft dir das weiter.

Grüße Marco
Hmm ich würde aber gerne den State von meinem Modul das auf Modbus zurückgreift ändern. Das state kommt momentan aus dem Modbus Modul wenn ich das richtig verstehe
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 29 Juni 2016, 00:15:20
Hallo!
Ich arbeite bei meiner Systemair Lüftungsanlage VR400 nun mit ModbusAttr
läuft super. Nur habe ich seit dem einspielen der neuen Dateien ModbusAttr.pm und Modbus.pm die Fehlermeldung im
Log:
PERL WARNING: Use of uninitialized value $last in addition (+) at ./FHEM/98_Modbus.pm line 841.
Habe ich was falsch gemacht?

lg
Wolfgang

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: oniT am 29 Juni 2016, 09:53:06
Hallo Zusammen,

gibt es eigentlich die Möglichkeit das ModbusAttr auf "disable" zu setzen? Ich habe jetzt mal Testweise Geräte angebunden, wenn ich allerdings die Verbindung trenne dann müllt es mir das Logfile voll. Jetzt müsste ich ja das komplette angelegte Device wieder löschen. Oder habe ich etwas überlesen oder sehe ich den Wald vor lauter Bäumen nicht?  ???

[erledigt]
Ich habe das Attribut dev-h-defPoll auf 0 gesetzt. Damit bleiben die Meldungen aus.

Danke,

Gruß
Tino
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 Juni 2016, 16:16:15
Hallo!

Kann mir jemand einen Tipp geben. Nach dem ich nun meine Systemairanlage erfolgreich mit modbusattr eingebunden habe wollte ich nun ein Thermostat  WRF06-RS485-Modbus einbinden. Leider bleibt der state immer auf open. Hier meine fhem.cfg ähnlich wie ich es mit Systemair erfolgreich gemacht habe.

Die Hardeware passt. Mit einem Windows-Tool vom Hersteller kann ich mit dem Thermostat kommunizieren.

Ich hoffe das mir jemand helfen kann.

lg
Wolfgang


#ModeBus
define VR400Mod Modbus /dev/serial/by-id/usb-FTDI_USB-RS485_Cable_FTYST3LZ-if00-port0@9600,8,E,1
attr VR400Mod room Modbus

define T_AbA ModbusAttr 2 10
attr T_AbA userattr IODev dev-c-combine dev-h-defPoll obj-h11-expr obj-h11-reading sortby stateFormat
attr T_AbA IODev VR400Mod
attr T_AbA dev-h-combine 5
attr T_AbA dev-h-defPoll 1
attr T_AbA group ModbusSystemair
attr T_AbA obj-h11-reading Raumbelegung
attr T_AbA stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"Raumbelegung",0))}
attr T_AbA room Modbus


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 30 Juni 2016, 16:33:22
Hallo
Ich glaube du must dem Modbus noch die Schnittstelle zuweisen.
Vr400 und T_AbA sind doch glaube ich 2 verschiedene Geräte .

Pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 Juni 2016, 16:37:36
Nein das passt schon so. Das erste ist der USB-Adapter.  Der läuft. Dann kommt das Thermostat, von dem ich keine Werte erhalte.
So betreibe ich meine Lüftungsanlage erfolgreich.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 02 Juli 2016, 10:34:08
Hallo Björnar,

die meisten setzen für solche Dinge einfach das Attribute stateFormat. Bei meiner Wärmepumpe steht das z.B. auf 
attr WP stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"Temp_Wasser_Ein",0))}

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 02 Juli 2016, 10:36:33
Hallo Wolfgang,

die Perl Warnung ist ein Fehler im Modul. Ich arbeite gerade an einer neuen Version, die das neue non-Blocking TCP-Connect für Modbus-TCP unterstützt. Sobald das wieder stabil ist, poste ich eine neue Version.

Zu Deiner zweiten Frage: wenn mal etwas nicht funktioniert, hilft meist ein Block ins Log bei Verbose 5. Du kannst gerne einen Auszug aus dem Log posten.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 04 Juli 2016, 13:06:39
Hallo Stefan!

Hatte im Log sowas wie CRC Fehler.
Gelöst! Habe wie in einem Bericht weiter oben bei beiden Geräten USB-Stik und Thermostat die Terminatoren deaktiviert.
Verstehe ich zwar nicht. Der Modebus sollter doch an beiden Enden Terminiert werden. Möglicherweise ist das bei 1m nicht der Fall. Ich bin schon neugierig wie es in der Praxis auf der Baustelle sein wird. Dort hängt dann das Thermostat und eine Lüftungsanlage am Bus. Länge wird dann 10m sein. Auch habe ich mir eine Relaiskarte mit Modbussteuerung bestellt. Die wird dann nochmal 40m weiter betrieben.
Trotzdem möchte ich hier einen Logauszug reinstellen. Es läuft zwar aber die Logeinträge deuten für mich auf nicht 100% ok hin. Vielleicht hilft es zwecks Weiterentwicklung.

2016.07.06 11:06:46 5: VR400Mod: raw read: 01
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got: 01
2016.07.06 11:06:46 5: VR400Mod: raw read: 0302
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got: 010302
2016.07.06 11:06:46 5: VR400Mod: raw read: 00
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got: 01030200
2016.07.06 11:06:46 5: VR400Mod: raw read: 00
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got: 0103020000
2016.07.06 11:06:46 4: VR400Mod: ParseFrames: fcode 3 from 1, data 02 calc crc = 12705, read = 0 -> mismatch! expect 3 from 1 for module Anwesenheit
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.07.06 11:06:46 5: VR400Mod: raw read: b8
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got: 0103020000b8
2016.07.06 11:06:46 4: VR400Mod: ParseFrames: fcode 3 from 1, data 0200 calc crc = 47344, read = 47104 -> mismatch! expect 3 from 1 for module Anwesenheit
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.07.06 11:06:46 5: VR400Mod: raw read: 44
2016.07.06 11:06:46 5: VR400Mod: ParseFrames got: 0103020000b844
2016.07.06 11:06:46 4: VR400Mod: ParseFrames: fcode 3 from 1, data 020000 calc crc = 17592, read = 17592  expect 3 from 1 for module Anwesenheit
2016.07.06 11:06:46 5: Anwesenheit: ParseObj called with 0000 and start 528
2016.07.06 11:06:46 5: Anwesenheit: ParseObj ObjInfo: reading=Anwesend, unpack=n, expr=, format=, map=
2016.07.06 11:06:46 4: Anwesenheit: ParseObj for Anwesend assigns 0
2016.07.06 11:06:46 5: Triggering Anwesenheit (1 changes)
2016.07.06 11:06:46 5: Starting notify loop for Anwesenheit, first event Anwesend: 0
2016.07.06 11:06:46 5: VR400Mod: ParseFrames done, reply to fCode 3, 1 readings


lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 Juli 2016, 19:57:36
Hallo Wolfgang,

die CRC Fehler im Debug-Log (sieht man ja nur bei Verbose 5) sind nicht wirklich Fehler. Das Modul bekommt die Daten in kleinen Häppchen und wenn ein Frame noch nicht vollständig da ist, stimmt die CRC auch nicht. Das Modul liest dann einfach weiter und in der Regel passt die CRC sobald noch ein paar Bytes mehr angekommen sind.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: oniT am 12 Juli 2016, 21:32:07
Hallo Stefan,

da ich mich mit dem Modul jetzt mehr und mehr auseinander setze und so langsam verstehe wie man dies konfiguriert, habe ich gleich mal eine weitere Frage bzw. Problem. Ich habe ein Gerät, wo das Schreiben von Werten nur Funktionscode 10 unterstützt. Jetzt hatte ich schon verschiedene Konfigurationen mit dem Modul ModbusAttr versucht. Leider funktioniert es nicht. Wenn ich es richtig sehe, steht auch in der Commandref nichts von FC 10. Gibt es hier trotzdem eine Möglichkeit? Im Anhang stelle ich einmal die PDF mit den Registern und der Beschreibung.

Danke,

Gruß
Tino
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Juli 2016, 18:00:21
Hallo Tino,

mit Function Code 10 ist sicher 10 hex, also 16 dezimal gemeint ("write multiple holding reigisters").
Der ist im Modul implementiert. Probier mal den. 10 dezimal zum Schreiben kann ich mir eigentlich nicht vorstellen (siehe Modbus Standard).

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 Juli 2016, 20:17:00
Hallo,

anbei nochmal eine neue Version mit folgenden Erweiterungen:

- Nonblocking Open und Reconnect bei TCP Verbindungen
- Neues Attribut disable (hat bisher gefehlt)
- Neues Attribut maxTimeoutsToReconnect für TCP-Verbindungen
  erkennt anhand mehrerer aufeinanderfolgender Timeouts dass die TCP-Verbindung zu einem Gerät nicht mehr steht
  und versucht dann die Verbindung neu aufzubauen.
- Set "reconnect" um eine TCP-Verbindung neu aufzubauen

Gruss
    Stefan

EDIT 20.7.16: Anhänge entfernt, da die neue Version inzwischen eingecheckt ist.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: WumpE am 27 Juli 2016, 16:21:27
Hallo Stefan, kann ich das Modul bedenkenlos auch für Modbus ASCII nutzen? Ich habe hier eine OEG KMS-D+ Heizungsregelung die über USB-CDC mit Modbus-Ascii komuniziert. Mit C# konnte ich  schon Daten anfordern und auswerten, aber bei Perl bin ich totaler noob.

der Request schaut zB so aus
:80030000003C41\r\n

80 ist das Gerät, 03 die Funktion, 3C die Länge die abgefragt wird und 41 der LRC

als antwort erhalte ich darauf
:8003783204190C10070001006E0068100000DC0096000000000000100000DC009600000000000010000244000000000000000000000000000000000000000100000000000000000000009803C100000C2D0138027B0132024501340C1C0C25003C003CFE0CFE0C01090276002802440028FE0CFE0C003C003C0028B6

Was wo steht habe ich schon herausgefunden

Falls ASCII bei dir nicht geht, gibt es evtl nen Modul was ich dafür verwenden könnte?

Danke und Grüße

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 29 Juli 2016, 12:00:42
Hallo,

ASCII habe ich bisher nicht implementiert.
Ich setze es mal auf die Wunschliste.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: oniT am 31 Juli 2016, 17:01:37
Hallo Stefan,

also ich komme nicht so recht weiter und benötige weitere Hilfe. Ja Du hast Recht:
Zitat
mit Function Code 10 ist sicher 10 hex, also 16 dezimal gemeint ("write multiple holding reigisters").
es ist natürlich FC16. Hier hatte ich mich vertan.

So, wenn ich es richtig sehe muss mit FC16 alle Register gleichzeitig geschrieben werden, oder? Das ist ja ein Ding. Ich bin schon ziemlich weit, aber nicht der Modbus Spezi. Von daher hänge ich jetzt hier an der Stelle fest.

Was habe ich?
- Modbusadresse 99 ist klar
- FC16 ist auch klar
- Startregister 256 ist auch klar
- Anzahl Register 9 ist ebenfalls klar

Jetzt habe ich inzwischen herausbekommen, dass hiermit:

63 10 01 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 42 00 64 00 01 00 00 13 98

die Leistungsstufen, was dem Register 261 entspricht, z.B. mit dem Wert 66 beschreiben kann. Dies habe ich aus einer fertigen Konfiguration von dem Terminalprogramm hterm. Damit funktioniert es.

Jedoch bekomme ich das so nicht in der Konfiguration in ModbusAttr hin. Hier mal die aktuelle Ausgabe.

Internals:
DEF        99 3600
DEST
INTERVAL   3600
IODev      ModbusRTU
MODBUSID   99
NAME       RTUWrite
NR         56
PROTOCOL   RTU
STATE      opened
TYPE       ModbusAttr
getList
setList    256 257 258 259 260 261:0,33,66,100 262 263:0,1 264:0,1
Helper:
lrecv      1468855663.14424
lsend      1468855663.11331
Lastread:
Attributes:
IODev      ModbusRTU
dev-h-combine 9
dev-h-defPoll 0
dev-h-write 16
dev-timing-timeout 4
obj-h256-reading 256
obj-h256-set 1
obj-h257-reading 257
obj-h257-set 1
obj-h258-reading 258
obj-h258-set 1
obj-h259-reading 259
   obj-h259-set 1
   obj-h260-reading 260
   obj-h260-set 1
   obj-h261-hint 0,33,66,100
   obj-h261-max 100
   obj-h261-min 0
   obj-h261-reading 261
   obj-h261-set 1
   obj-h262-max 100
   obj-h262-min 0
   obj-h262-reading 262
   obj-h262-set 1
   obj-h263-hint 0,1
   obj-h263-max 1
   obj-h263-min 0
   obj-h263-reading 263
   obj-h263-set 1
   obj-h264-hint 0,1
   obj-h264-max 1
   obj-h264-min 0
   obj-h264-reading 264
   obj-h264-set 1
   userattr   IODev dev-h-combine dev-h-defBswapRegs dev-h-defPoll dev-h-write dev-timing-timeout obj-h256-reading obj-h256-set obj-h257-reading obj-h257-set obj-h258-reading obj-h258-set obj-h259-reading obj-h259-set obj-h260-reading obj-h260-set obj-h261-hint obj-h261-max obj-h261-minobj-h261-reading obj-h261-set obj-h262-max obj-h262-min obj-h262-reading obj-h262-set obj-h263-hint obj-h263-max obj-h263-min obj-h263-reading obj-h263-set obj-h264-hint obj-h264-max obj-h264-min obj-h264-reading obj-h264-set verbose
   verbose    5


Wenn ich jetzt auf das Register 261 den Wert 66 schreibe, dann bekomme ich ein Timeout und es wird auch nicht dieser

63 10 01 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 42 00 64 00 01 00 00 13 98


Was mache ich falsch?
Warum ist die Länge des Kommandos nicht richtig?
Und wie muss die Konfiguration in ModbusAttr sein?

Hier noch die Ausgabe des Log:

2016.07.18 17:27:43.110 5: RTUWrite: Set: key for 261 = h261
2016.07.18 17:27:43.111 5: RTUWrite: Set: found option 261 (h261), setVal = 66
2016.07.18 17:27:43.111 5: RTUWrite: Set: checking value 66 against min 0
2016.07.18 17:27:43.112 5: RTUWrite: Set: checking value 66 against max 100
2016.07.18 17:27:43.113 5: ModbusRTU: Send adds fcode 16 for 261 to queue: 6310010500010200428796 pdu 1001050001020042, force send
2016.07.18 17:27:43.115 5: RTUWrite: ReadAnswer called and remaining timeout is 3.99820995330811 requested reading is 261
2016.07.18 17:27:43.135 5: ReadAnswer got: 63
2016.07.18 17:27:43.136 5: ReadAnswer got: 6310
2016.07.18 17:27:43.137 5: ReadAnswer got: 631000
2016.07.18 17:27:43.138 5: ReadAnswer got: 63100000
2016.07.18 17:27:43.140 5: ReadAnswer got: 6310000000
2016.07.18 17:27:43.142 5: ReadAnswer got: 631000000000
2016.07.18 17:27:43.142 5: ReadAnswer got: 631000000000c8
2016.07.18 17:27:43.143 5: ReadAnswer got: 631000000000c84b
2016.07.18 17:27:47.146 3: RTUWrite: Timeout2 in ReadAnswer for 261


Danke
Gruß
Tino
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Juli 2016, 21:17:38
Hallo Tino,

Function Code 16 kann mehrere Register gleichzeitig schreiben. Das muss er aber nicht. Das Modul erzeugt deshalb auch einen anderen Request. In Deinem hterm-Beispiel werden 8 Register ab Adresse 256 zusammen geschrieben. 261 ist nur eines davon.
Das Fhem Modul versucht gezielt nur Register 261 zu schreiben.

Der Timeout ist seltsam, da ja eine Antwort ankommt. Das könnte ein Bug sein.

Als erstes solltest Du die aktuellste Version des Moduls 98_Modbus.pm verwenden. Einfach mit dem Fhem Befehl update aktualisieren.

Könntest Du dann bitte nochmal Deine Konfiguration posten - nicht als Ausgabe von list sondern den relevanten Auszug aus Deiner fhem.cfg für das Modbus-Modul und für das ModbusAttr-Modul.

Zudem bräuchte ich eine Log-Ausgabe, bei der sowohl das physische als auch das logische Modul verbose 5 gesetzt haben.
Da müsste einiges mehr an Log-Zeilen kommen.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 04 August 2016, 09:53:26
Hallo,

ich habe seit inniger Zeit das Problem das ich mein Wechselrichter am morgen nicht mehr abfragen kann. Nachts ist er nicht erreichbar!
Ich vermute das es seit dem letzten oder vorletzten Update ist.

Typ: Fronius Symo per TCP
Komisch ist nur das ich zwei Module habe. 1x für den MPP Tracker und 1x für den WR selbst.

Gleiche IP gleiche ID

Das MPP Modul liefert sofort wieder Daten wenn er wieder erreichbar ist.
Der WR nicht.

Habe das Modul jetzt schon auf disable gesetzt wenn der WR nicht mehr erreichbar ist, hat aber auch nicht geholfen.

Wenn ich ein get mache erhalten ich "No FD"


2016.08.04 09:50:27 5: Cmd: >get Wechselrichter1 ActiveStateCode<
2016.08.04 09:50:27 5: Wechselrichter1: Get: key for ActiveStateCode = h00213
2016.08.04 09:50:27 5: Wechselrichter1: Get: Requesting ActiveStateCode (h00213)
2016.08.04 09:50:27 5: Wechselrichter1: Get: Queue is stil busy - taking over the read with ReadAnswer
2016.08.04 09:50:27 4: Wechselrichter1: Send called with h 00213 len 1 / span - to id 1, queue has 37 requests
2016.08.04 09:50:27 4: Wechselrichter1: Send queues fcode 3 for h 00213 (ActiveStateCode), len / span 1 : 002900000006010300d50001 pdu 0300d50001, force
2016.08.04 09:50:27 4: Wechselrichter1: sends 002900000006010300d50001 (fcode 3 to 1, tid 41 for ActiveStateCode (00213), len 1)
2016.08.04 09:50:27 5: SW: 002900000006010300d50001
2016.08.04 09:50:27 4: name: /fhem?detail=Wechselrichter1&dev.getWechselrichter1=Wechselrichter1&cmd.getWechselrichter1=get&arg.getWechselrichter1=ActiveStateCode&val.getWechselrichter1=&XHR=1&addLinks=1&fw_id=1445 / RL:27 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.08.04 09:50:28 4: Wechselrichter1: sends 00a40000000601039c9d0002 (fcode 3 to 1, tid 164 for Frequency__Hz (40093), len 2)
2016.08.04 09:50:28 5: SW: 00a40000000601039c9d0002


BUSY steht dann immer auf 1
nach einem shutdown restart ist alles wieder ok.

Hat jemand ein Idee?

Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 August 2016, 22:56:06
Hallo Björnar,

Kommt da ein timeout?
Kannst Du mal ein größeres Stückchen
Log posten?

Gruß / Thanx
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 05 August 2016, 07:17:49
Hallo,

ich werde heute Abend mal das logging mal wieder hochsetzen mal sehen was dann kommt:

Aufgefallen ist mit lediglich folgendes (Loglevel = 3)

2016.08.04 22:28:41 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1)
2016.08.04 22:28:41 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1_MPPT)


danach kommen solche Meldungen nur noch für Wechselrichter1_MPPT und nicht für Wechselrichter1
2016.08.05 02:13:19 1: 192.168.178.21:502 reappeared (Wechselrichter1_MPPT)
2016.08.05 02:29:42 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1_MPPT)


Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 05 August 2016, 07:24:32
Das bekomme ich wenn es nicht funktioniert:

Zitat2016.08.05 07:21:08 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00dc0000000601039ca50002, last Buffer:
2016.08.05 07:21:08 4: Wechselrichter1: sends 00680000000601039c8d0002 (fcode 3 to 1, tid 104 for Current_L3__A (40077), len 2)
2016.08.05 07:21:10 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00680000000601039c8d0002, last Buffer:
2016.08.05 07:21:10 4: Wechselrichter1: sends 005f0000000601039c8f0002 (fcode 3 to 1, tid 95 for Voltage_L1_to_L2__V (40079), len 2)
2016.08.05 07:21:12 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 005f0000000601039c8f0002, last Buffer:
2016.08.05 07:21:12 4: Wechselrichter1: sends 00a90000000601039c870002 (fcode 3 to 1, tid 169 for Current_total__A (40071), len 2)
2016.08.05 07:21:14 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a90000000601039c870002, last Buffer:
2016.08.05 07:21:14 4: Wechselrichter1: sends 00a20000000601039c8b0002 (fcode 3 to 1, tid 162 for Current_L2__A (40075), len 2)
2016.08.05 07:21:14 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-08-05 07:22:14
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request ActiveStateCode
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power_Site__W
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_Day__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_Year__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_Total__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_total__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_L1__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_L2__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_L3__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L1_to_L2__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L2_to_L3__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L3_to_L1__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L1__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L2__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L3__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power__W
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Frequency__Hz
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power__VA
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power__VAr
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request PowerFactor
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_total__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_DC__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_DC__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power_DC__W
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_Cabinet__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_Coolant__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_Transformer__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_other__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Operating_State
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Operating_State_Vendor
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00501 len 4 / span 4 to id 1, queue has 7 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00501 (Energy_Day__kWh), len / span 4 : 003300000006010301f50004 pdu 0301f50004
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00499 len 2 / span 2 to id 1, queue has 8 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00499 (Power_Site__W), len / span 2 : 001f00000006010301f30002 pdu 0301f30002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40107 len 2 / span 2 to id 1, queue has 9 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40107 (Power_DC__W), len / span 2 : 00cf0000000601039cab0002 pdu 039cab0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40117 len 1 / span 1 to id 1, queue has 10 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40117 (Operating_State), len / span 1 : 007e0000000601039cb50001 pdu 039cb50001
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40081 len 2 / span 2 to id 1, queue has 11 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40081 (Voltage_L2_to_L3__V), len / span 2 : 00720000000601039c910002 pdu 039c910002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40113 len 2 / span 2 to id 1, queue has 12 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40113 (Temp_Transformer__C), len / span 2 : 005f0000000601039cb10002 pdu 039cb10002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40093 len 2 / span 2 to id 1, queue has 13 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40093 (Frequency__Hz), len / span 2 : 00330000000601039c9d0002 pdu 039c9d0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40091 len 2 / span 2 to id 1, queue has 14 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40091 (Power__W), len / span 2 : 00f50000000601039c9b0002 pdu 039c9b0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40083 len 2 / span 2 to id 1, queue has 15 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40083 (Voltage_L3_to_L1__V), len / span 2 : 006f0000000601039c930002 pdu 039c930002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00509 len 4 / span 4 to id 1, queue has 16 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00509 (Energy_Total__kWh), len / span 4 : 007300000006010301fd0004 pdu 0301fd0004
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40089 len 2 / span 2 to id 1, queue has 17 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40089 (Voltage_L3__V), len / span 2 : 00c70000000601039c990002 pdu 039c990002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00505 len 4 / span 4 to id 1, queue has 18 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00505 (Energy_Year__kWh), len / span 4 : 00e000000006010301f90004 pdu 0301f90004
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40115 len 2 / span 2 to id 1, queue has 19 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40115 (Temp_other__C), len / span 2 : 00050000000601039cb30002 pdu 039cb30002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40101 len 2 / span 2 to id 1, queue has 20 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40101 (Energy_total__kWh), len / span 2 : 002f0000000601039ca50002 pdu 039ca50002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40099 len 2 / span 2 to id 1, queue has 21 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40099 (PowerFactor), len / span 2 : 00770000000601039ca30002 pdu 039ca30002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40103 len 2 / span 2 to id 1, queue has 22 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40103 (Current_DC__A), len / span 2 : 00620000000601039ca70002 pdu 039ca70002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40111 len 2 / span 2 to id 1, queue has 23 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40111 (Temp_Coolant__C), len / span 2 : 007b0000000601039caf0002 pdu 039caf0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40105 len 2 / span 2 to id 1, queue has 24 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40105 (Voltage_DC__V), len / span 2 : 00230000000601039ca90002 pdu 039ca90002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40073 len 2 / span 2 to id 1, queue has 25 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40073 (Current_L1__A), len / span 2 : 00dc0000000601039c890002 pdu 039c890002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40077 len 2 / span 2 to id 1, queue has 26 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40077 (Current_L3__A), len / span 2 : 00630000000601039c8d0002 pdu 039c8d0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40079 len 2 / span 2 to id 1, queue has 27 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40079 (Voltage_L1_to_L2__V), len / span 2 : 00550000000601039c8f0002 pdu 039c8f0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40085 len 2 / span 2 to id 1, queue has 28 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40085 (Voltage_L1__V), len / span 2 : 00510000000601039c950002 pdu 039c950002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40118 len 1 / span 1 to id 1, queue has 29 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40118 (Operating_State_Vendor), len / span 1 : 00e80000000601039cb60001 pdu 039cb60001
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40109 len 2 / span 2 to id 1, queue has 30 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40109 (Temp_Cabinet__C), len / span 2 : 009f0000000601039cad0002 pdu 039cad0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40095 len 2 / span 2 to id 1, queue has 31 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40095 (Power__VA), len / span 2 : 00040000000601039c9f0002 pdu 039c9f0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40075 len 2 / span 2 to id 1, queue has 32 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40075 (Current_L2__A), len / span 2 : 00820000000601039c8b0002 pdu 039c8b0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40071 len 2 / span 2 to id 1, queue has 33 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40071 (Current_total__A), len / span 2 : 00d90000000601039c870002 pdu 039c870002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40097 len 2 / span 2 to id 1, queue has 34 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40097 (Power__VAr), len / span 2 : 00200000000601039ca10002 pdu 039ca10002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00213 len 1 / span 1 to id 1, queue has 35 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00213 (ActiveStateCode), len / span 1 : 008700000006010300d50001 pdu 0300d50001
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40087 len 2 / span 2 to id 1, queue has 36 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40087 (Voltage_L2__V), len / span 2 : 004b0000000601039c970002 pdu 039c970002
2016.08.05 07:21:16 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a20000000601039c8b0002, last Buffer:
2016.08.05 07:21:16 4: Wechselrichter1: sends 007d0000000601039c9f0002 (fcode 3 to 1, tid 125 for Power__VA (40095), len 2)
2016.08.05 07:21:18 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007d0000000601039c9f0002, last Buffer:
2016.08.05 07:21:18 4: Wechselrichter1: sends 00290000000601039cad0002 (fcode 3 to 1, tid 41 for Temp_Cabinet__C (40109), len 2)
2016.08.05 07:21:20 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00290000000601039cad0002, last Buffer:
2016.08.05 07:21:20 4: Wechselrichter1: sends 00dd0000000601039cb60001 (fcode 3 to 1, tid 221 for Operating_State_Vendor (40118), len 1)
2016.08.05 07:21:22 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00dd0000000601039cb60001, last Buffer:
2016.08.05 07:21:22 4: Wechselrichter1: sends 00ea0000000601039c950002 (fcode 3 to 1, tid 234 for Voltage_L1__V (40085), len 2)
2016.08.05 07:21:24 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00ea0000000601039c950002, last Buffer:
2016.08.05 07:21:24 4: Wechselrichter1: sends 00db0000000601039c970002 (fcode 3 to 1, tid 219 for Voltage_L2__V (40087), len 2)
2016.08.05 07:21:26 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00db0000000601039c970002, last Buffer:
2016.08.05 07:21:26 4: Wechselrichter1: sends 00a800000006010300d50001 (fcode 3 to 1, tid 168 for ActiveStateCode (00213), len 1)
2016.08.05 07:21:28 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a800000006010300d50001, last Buffer:
2016.08.05 07:21:28 4: Wechselrichter1: sends 00bc0000000601039ca10002 (fcode 3 to 1, tid 188 for Power__VAr (40097), len 2)
2016.08.05 07:21:30 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00bc0000000601039ca10002, last Buffer:
2016.08.05 07:21:30 4: Wechselrichter1: sends 003300000006010301f50004 (fcode 3 to 1, tid 51 for Energy_Day__kWh (00501), len 4)
2016.08.05 07:21:32 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 003300000006010301f50004, last Buffer:
2016.08.05 07:21:32 4: Wechselrichter1: sends 001f00000006010301f30002 (fcode 3 to 1, tid 31 for Power_Site__W (00499), len 2)
2016.08.05 07:21:34 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 001f00000006010301f30002, last Buffer:
2016.08.05 07:21:34 4: Wechselrichter1: sends 00cf0000000601039cab0002 (fcode 3 to 1, tid 207 for Power_DC__W (40107), len 2)
2016.08.05 07:21:36 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00cf0000000601039cab0002, last Buffer:
2016.08.05 07:21:36 4: Wechselrichter1: sends 007e0000000601039cb50001 (fcode 3 to 1, tid 126 for Operating_State (40117), len 1)
2016.08.05 07:21:38 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007e0000000601039cb50001, last Buffer:
2016.08.05 07:21:38 4: Wechselrichter1: sends 00720000000601039c910002 (fcode 3 to 1, tid 114 for Voltage_L2_to_L3__V (40081), len 2)
2016.08.05 07:21:40 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00720000000601039c910002, last Buffer:
2016.08.05 07:21:40 4: Wechselrichter1: sends 005f0000000601039cb10002 (fcode 3 to 1, tid 95 for Temp_Transformer__C (40113), len 2)
2016.08.05 07:21:42 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 005f0000000601039cb10002, last Buffer:
2016.08.05 07:21:42 4: Wechselrichter1: sends 00330000000601039c9d0002 (fcode 3 to 1, tid 51 for Frequency__Hz (40093), len 2)
2016.08.05 07:21:44 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00330000000601039c9d0002, last Buffer:
2016.08.05 07:21:44 4: Wechselrichter1: sends 00f50000000601039c9b0002 (fcode 3 to 1, tid 245 for Power__W (40091), len 2)
2016.08.05 07:21:46 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00f50000000601039c9b0002, last Buffer:
2016.08.05 07:21:46 4: Wechselrichter1: sends 006f0000000601039c930002 (fcode 3 to 1, tid 111 for Voltage_L3_to_L1__V (40083), len 2)
2016.08.05 07:21:48 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 006f0000000601039c930002, last Buffer:
2016.08.05 07:21:48 4: Wechselrichter1: sends 007300000006010301fd0004 (fcode 3 to 1, tid 115 for Energy_Total__kWh (00509), len 4)
2016.08.05 07:21:50 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007300000006010301fd0004, last Buffer:
2016.08.05 07:21:50 4: Wechselrichter1: sends 00c70000000601039c990002 (fcode 3 to 1, tid 199 for Voltage_L3__V (40089), len 2)
2016.08.05 07:21:52 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00c70000000601039c990002, last Buffer:
2016.08.05 07:21:52 4: Wechselrichter1: sends 00e000000006010301f90004 (fcode 3 to 1, tid 224 for Energy_Year__kWh (00505), len 4)
2016.08.05 07:21:54 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00e000000006010301f90004, last Buffer:
2016.08.05 07:21:54 4: Wechselrichter1: sends 00050000000601039cb30002 (fcode 3 to 1, tid 5 for Temp_other__C (40115), len 2)
2016.08.05 07:21:56 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00050000000601039cb30002, last Buffer:
2016.08.05 07:21:56 4: Wechselrichter1: sends 002f0000000601039ca50002 (fcode 3 to 1, tid 47 for Energy_total__kWh (40101), len 2)
2016.08.05 07:21:58 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 002f0000000601039ca50002, last Buffer:
2016.08.05 07:21:58 4: Wechselrichter1: sends 00770000000601039ca30002 (fcode 3 to 1, tid 119 for PowerFactor (40099), len 2)
2016.08.05 07:22:00 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00770000000601039ca30002, last Buffer:
2016.08.05 07:22:00 4: Wechselrichter1: sends 00620000000601039ca70002 (fcode 3 to 1, tid 98 for Current_DC__A (40103), len 2)
2016.08.05 07:22:02 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00620000000601039ca70002, last Buffer:
2016.08.05 07:22:02 4: Wechselrichter1: sends 007b0000000601039caf0002 (fcode 3 to 1, tid 123 for Temp_Coolant__C (40111), len 2)
2016.08.05 07:22:04 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007b0000000601039caf0002, last Buffer:
2016.08.05 07:22:04 4: Wechselrichter1: sends 00230000000601039ca90002 (fcode 3 to 1, tid 35 for Voltage_DC__V (40105), len 2)
2016.08.05 07:22:06 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00230000000601039ca90002, last Buffer:
2016.08.05 07:22:06 4: Wechselrichter1: sends 00dc0000000601039c890002 (fcode 3 to 1, tid 220 for Current_L1__A (40073), len 2)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 August 2016, 11:59:44
Hallo Bjoernar,

wenn die TCP-Verbindung verloren geht, dann versucht das Modbus-Modul regelmäßig die Verbindung neu aufzubauen. Allerdings funktioniert das nur dann zu verlässig, wenn die Gegenseite die Verbindung aktiv schließt und nicht wenn die Verbindung physisch getrennt wird. Sonst bleibt das lange unbemerkt. Das ist ein Problem mit TCP und wurde im Forum schon oft diskutiert.
Es könnte also sein dass bei einem Deiner Geräte Fhem nicht bemerkt dass die Verbindung weg ist.
Für diesen Fall habe ich ein Attribut vorgesehen: maxTimeoutsToReconnect
setze das mal auf zwei, dann baut Fhem die TCP-Verbindung neu auf wenn zweimal hintereinander ein Timeout auftritt.
Ich könnte mir vorstellen, dass das das Problem schon löst.

Gruss
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 07 August 2016, 08:53:35
Zitat von: StefanStrobel am 06 August 2016, 11:59:44
Hallo Bjoernar,

wenn die TCP-Verbindung verloren geht, dann versucht das Modbus-Modul regelmäßig die Verbindung neu aufzubauen. Allerdings funktioniert das nur dann zu verlässig, wenn die Gegenseite die Verbindung aktiv schließt und nicht wenn die Verbindung physisch getrennt wird. Sonst bleibt das lange unbemerkt. Das ist ein Problem mit TCP und wurde im Forum schon oft diskutiert.
Es könnte also sein dass bei einem Deiner Geräte Fhem nicht bemerkt dass die Verbindung weg ist.
Für diesen Fall habe ich ein Attribut vorgesehen: maxTimeoutsToReconnect
setze das mal auf zwei, dann baut Fhem die TCP-Verbindung neu auf wenn zweimal hintereinander ein Timeout auftritt.
Ich könnte mir vorstellen, dass das das Problem schon löst.

Gruss
     Stefan
Danke das hat zum gewünschten Erfolg geführt.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 09 August 2016, 07:29:08
Zitat von: Bjoernar am 07 August 2016, 08:53:35
Danke das hat zum gewünschten Erfolg geführt.

Gesendet von meinem Moto G (4) mit Tapatalk

Hallo,

war leider doch nicht von erfolg gekrönt, bekomme nun folgende Meldung:

2016.08.09 06:59:55 3: Wechselrichter1: no IODev found for Wechselrichter1

Gruß
Brörnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 09 August 2016, 21:55:35
Hi Björnar,

dauerhaft oder nur kurzzeitig? In welchem Kontext?

Die Meldung sollte kommen wenn keine Verbindung besteht, aber dennoch ein get oder set Kommando ausgeführt wurde.
Sobald Fhem das nächste Mal erfolgreich die Verbindung wiederherstellen konnte, sollte die Meldung nicht mehr kommen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 11 August 2016, 12:02:15
Hallo,

ab ca. 21:56 war der Wechselrichter1 nicht mehr erreichbar.
Danch versucht er nach dem timeouts scheinbar ein reconnect.
Um 23:16 behauptet er das er ein reconnect gemacht hat. Gerät war aber definitiv nicht erreichbar.
Danach folgen bis zu restart von fhem immer die "no IODev found" Fehler.

Hilft das weiter?

Danke und Gruß
Björnar

2016.08.09 21:56:52 3: Wechselrichter1: 2 successive timeouts, trying to reconnect
2016.08.09 21:56:52 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.08.09 21:56:55 3: Can't connect to 192.168.178.21:502: Die Wartezeit für die Verbindung ist abgelaufen
2016.08.09 23:16:51 3: Wechselrichter1: 3 successive timeouts, trying to reconnect
2016.08.09 23:16:51 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.08.09 23:16:51 3: Wechselrichter1 device opened
2016.08.09 23:17:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:18:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:19:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:20:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:21:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:22:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:23:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:24:49 3: Wechselrichter1: no IODev found for Wechselrichter1
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 August 2016, 20:47:15
Hallo,

ja - das hilft weiter. Da ist noch ein Bug im Code...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 11 August 2016, 20:53:34
...das klingt gut ;-) zumindest muss ich nicht mehr weiter suchen... Was mir noch aufgefallen ist, selbst wenn ich das Device auf disable setze fragt er weiter ab...

Gruß Björnar

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 August 2016, 17:59:06
Hallo,

anbei eine neue Zwischen-Version zum Testen.
Ich habe das Connection-Handling generell überarbeitet und speziell bei Modbus-TCP sollte der Reconnect jetzt sauberer laufen.
Zudem gibt es ein neues Attribut textArg für definierte Sets (das wird dann bei ModbusAttr und anderen Modulen auf Basis von 98_Modbus.pm sichtbar). Damit kann man auch nicht numerische Werte als Set-Parameter übergeben. Um die weiterverarbeiten zu können muss dann natürlich ein passender unpack-String angegeben sein.

Als nächstes werde ich das Queue-Handling nochmal umbauen müssen, damit künftig auch Modbus-ASCII sinnvoll integriert werden kann und damit Sonderfälle einfacher möglich werden, die z.B. vor dem Lese / Schreiben erst ein anderes Register befüllen müssen.

Gruss
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 15 August 2016, 18:23:06
Teste ich heute abend....danke schon mal.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: fhem_TS am 15 August 2016, 19:35:25
Guten Abend, Stefan,

erstmal danke für die Arbeit. Könntest du das
ZitatZudem gibt es ein neues Attribut textArg für definierte Sets (das wird dann bei ModbusAttr und anderen Modulen auf Basis von 98_Modbus.pm sichtbar). Damit kann man auch nicht numerische Werte als Set-Parameter übergeben
bitte noch etwas genauer ausführen?

Ich habe folgendes define:
define Helios_KWL ModbusAttr 180 120 IP.ADRESSE TCP

und bei den Attributen finde ich nichts mit textArg.

Funktioniert das irgendwie über "map" ?


Danke schonmal vorab!

Gruß Tobias
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eszych am 17 August 2016, 01:37:47
Hallo Zusammen,
mit großem Interesse habe ich die Diskussion zum Thema RS485 / ModBus hier gelesen.
Ich habe seit kurzem eine PV mit SolarEdge Wechselrichtern und einer TESLA Batterie. Das System besteht aus einem 3-Phasen WR (WR-3) an dem die PV Module angeschlossen sind und einem 1-Phasen WR (WR-1) an dem die Batterie angeschlossen ist. WR-1 und WR-3 sind über einen RS485 Bus miteinander verbunden. WR-1, die Batterie und ein SolarEdge Modbus Ertragszähler sind über einen weiteren RS485 Bus verbunden. In diesen Bus habe ich ein Modbus TCP zu Modbus RTU Wandler gehängt - https://www.expertdaq.de/konverter/modbus-tcp-modbus-rtuascii/ex9132c-2-mtcp/ (https://www.expertdaq.de/konverter/modbus-tcp-modbus-rtuascii/ex9132c-2-mtcp/)
Das System hat zwei Modi: "TCP to RTU Slave" und "RTU to TCP Slave" welchen Modus muss ich nutzen, um Daten vom RS485 Bus mit dem Modul ModbusAttr abgreifen und die aktuellen Produktionswerte aus dem SolarEdge Wechselrichtern WR-1 auslesen zu können?

Danke für eure Hinweise!

Sonnige Grüße
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 18 August 2016, 09:14:33
Moin, hat leider nicht geholfen.
Hier die Ausgabe aus dem Log:

2016.08.18 09:10:20 3: Wechselrichter1: 6468 successive timeouts 2016.08.18 09:10:22 3: Wechselrichter1: 6469 successive timeouts 2016.08.18 09:10:24 3: Wechselrichter1: 6470 successive timeouts 2016.08.18 09:10:26 3: Wechselrichter1: 6471 successive timeouts 2016.08.18 09:10:28 3: Wechselrichter1: 6472 successive timeouts 2016.08.18 09:10:30 3: Wechselrichter1: 6473 successive timeouts 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:31 3: Wechselrichter1: Send queue too long, dropping request 2016.08.18 09:10:34 3: Wechselrichter1: 6474 successive timeouts 2016.08.18 09:10:36 3: Wechselrichter1: 6475 successive timeouts 2016.08.18 09:10:38 3: Wechselrichter1: 6476 successive timeouts

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 18 August 2016, 09:14:54
Wiederholt sich immer so weiter.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 20 August 2016, 21:52:13
Hallo Björnar,

Auch wenn Dein Log-Auszug leider nicht mit verbose 5 gemacht wurde, sieht es doch so aus, als ob das Attribut

maxTimeoutsToReconnect

nicht gesetzt ist. Ich würde es immer auf 2 oder 3 setzen. Ohne das Attribut verwendet Fhem die normalen Mechanismen des Betriebssystems zum Erkennen, ob eine TCP-Verbindung tatsächlich noch offen ist. In Deinem Fall scheint ja die Verbindung im Netzwerk gekappt zu werden und Fhem bekommt daher nicht mit dass die TCP-Verbindung nicht mehr da ist.

Für solche Fälle hatte ich das maxTimeoutsToReconnect in das Modbus-Modul eingebaut. Das setzt dann nach der angegebenen Zahl von aufeinanderfolgemden Timeouts das Device auf "disconnected" und Fhem versucht dann die Verbindung wieder neu aufzubauen.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 20 August 2016, 21:58:07
Hallo eszych,

Das sollte in dem Handbuch zu Deinem Konverter stehen. Ich tippe auf TCP zu RTU. Könnte aber auch anders herum gemeint sein.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 20 August 2016, 22:20:37
Hallo Tobias,

textArg bezieht sich auf die Objekt-spezifischen Attribute.
z.B.

dev-h-defPoll 1
obj-h100-reading test
obj-h100-showGet 1

würde ein Holding-Register mit Adresse 100 pollen lassen und als get bereitstellen.
Ebenso kann man Objekte per set schreiben lassen

obj-h101-reading ziel
obj-h101-set 1
obj-h101-textArg 1
obj-h101-unpack a


textArg erlaubt dann die Übergabe von nicht numerischen Werten beim set.

Leider hat aber textArg in der bisher geposteten Version noch in der Attributliste gefehlt. Mit userattr hätte man es freischalten können, aber so war das nicht gedacht ;-)
Anbei ein update.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 21 August 2016, 02:14:07
Zitat von: eszych am 17 August 2016, 01:37:47
...
Ich habe seit kurzem eine PV mit SolarEdge Wechselrichtern und einer TESLA Batterie. Das System besteht aus einem 3-Phasen WR (WR-3) an dem die PV Module angeschlossen sind und einem 1-Phasen WR (WR-1) an dem die Batterie angeschlossen ist. WR-1 und WR-3 sind über einen RS485 Bus miteinander verbunden. WR-1, die Batterie und ein SolarEdge Modbus Ertragszähler sind über einen weiteren RS485 Bus verbunden. In diesen Bus habe ich ein Modbus TCP zu Modbus RTU Wandler gehängt....
Hallo eszych,

ich habe ein SE5000K. Am RS485-1 Anschluß habe ich einen RS-485 Adapter. Damit diese Schnittstelle vom hier beschriebenen ModBus.pm gelesen werden kann, musste ich das Protokoll auf "Nicht-SE Logger" einstellen. Das SolarEdge Master/Slave Protokoll sendet noch einen Header von 0x12345679 (siehe auch hier https://github.com/jbuehl/solaredge/issues/8#issuecomment-177584301) und wird somit nicht erkannt.

Kommunikation  RS485-1 Konf
 RS485-1 Konf  Gerätetyp  Nicht-SE Logger
 RS485-1 Konf  Protokoll  SunSpec
 RS485-1 Konf  Geräte-ID und geben Sie dort die MODBUS-Adresse ein (ein eindeutiger Wert zwischen 1...247). Dies wird das Register C_Geräteadresse festlegen.

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: fhem_TS am 22 August 2016, 10:44:19
Hallo Stefan,

das mit userAttr habe ich gestern noch hinbekommen, also lief es soweit schonmal.
Jetzt habe ich folgendes Phänomen:
Ich kann die Anlage nur einmal über den Set Befehl auslesen:
2016.08.22 10:33:05 5: Helios_KWL: Set: key for Register = h1
2016.08.22 10:33:05 5: Helios_KWL: Set: found option Register (h1), setVal = v00105
2016.08.22 10:33:05 4: Helios_KWL: Send called with h 1 len 16 / span - to id 180, queue has 0 requests
2016.08.22 10:33:05 4: Helios_KWL: Send queues fcode 16 for h 1 (Register), len / span 16 : 007e0000000db4100001001020763030313035 pdu 100001001020763030313035, force
2016.08.22 10:33:05 4: Helios_KWL: sends 007e0000000db4100001001020763030313035 (fcode 16 to 180, tid 126 for Register (1), len 16)
2016.08.22 10:33:05 5: SW: 007e0000000db4100001001020763030313035
2016.08.22 10:33:05 5: Helios_KWL: ReadAnswer called and remaining timeout is 1.99864792823792 requested reading is Register
2016.08.22 10:33:05 5: ReadAnswer got: 007e00000006b41000010010
2016.08.22 10:33:05 5: Helios_KWL: ParseFrames got: 007e00000006b41000010010
2016.08.22 10:33:05 4: Helios_KWL: ParseFrames: fcode 16 from 180, tid 126, data 00010010 expect 16 from 180, tid 126 for module Helios_KWL
2016.08.22 10:33:05 5: Helios_KWL: ParseFrames done, reply to fcode 16, 16 objects written
2016.08.22 10:33:05 5: Helios_KWL: ReadAnswer done
2016.08.22 10:33:05 5: Helios_KWL: Set: sending read after write
2016.08.22 10:33:05 4: Helios_KWL: Send called with h 1 len 16 / span - to id 180, queue has 0 requests
2016.08.22 10:33:05 4: Helios_KWL: Send queues fcode 3 for h 1 (Register), len / span 16 : 00a600000006b40300010010 pdu 0300010010, force
2016.08.22 10:33:05 4: Helios_KWL: CheckDelay commDelay for Helios_KWL not over, sleep 0.0913798809051514 forced
2016.08.22 10:33:05 4: Helios_KWL: CheckDelay sendDelay for Helios_KWL not over, sleep 0.0744318962097168 forced
2016.08.22 10:33:05 4: Helios_KWL: sends 00a600000006b40300010010 (fcode 3 to 180, tid 166 for Register (1), len 16)
2016.08.22 10:33:05 5: SW: 00a600000006b40300010010
2016.08.22 10:33:05 5: Helios_KWL: ReadAnswer called and remaining timeout is 1.99872303009033 requested reading is Register
2016.08.22 10:33:05 5: ReadAnswer got: 00a600000023b403207630303130353d32302e36000000000000000000000000000000000000000000
2016.08.22 10:33:05 5: Helios_KWL: ParseFrames got: 00a600000023b403207630303130353d32302e36000000000000000000000000000000000000000000
2016.08.22 10:33:05 4: Helios_KWL: ParseFrames: fcode 3 from 180, tid 166, data 207630303130353d32302e36000000000000000000000000000000000000000000 expect 3 from 180, tid 166 for module Helios_KWL
2016.08.22 10:33:05 5: Helios_KWL: ParseObj called with 7630303130353d32302e36000000000000000000000000000000000000000000 and start 1
2016.08.22 10:33:05 5: Helios_KWL: ParseObj ObjInfo: reading=Register, unpack=(a*), expr=, format=%.20s, map=
2016.08.22 10:33:05 5: Helios_KWL: ParseObj for Register does sprintf with format %.20s value is v00105=20.6
2016.08.22 10:33:05 5: Helios_KWL: ParseObj for Register sprintf result is v00105=20.6
2016.08.22 10:33:05 4: Helios_KWL: ParseObj for Register assigns v00105=20.6
2016.08.22 10:33:05 5: Helios_KWL: ParseFrames done, reply to fCode 3, 1 readings
2016.08.22 10:33:05 5: Helios_KWL: ReadAnswer done


Bein zweiten Versuch bekomme ich einen Fehler obwohl ich nur einen Wert geändert habe (von v00105 auf v00106):
2016.08.22 10:33:12 5: Helios_KWL: Set: key for Register = h1
2016.08.22 10:33:12 5: Helios_KWL: Set: found option Register (h1), setVal = v00106
2016.08.22 10:33:12 4: Helios_KWL: Send called with h 1 len 16 / span - to id 180, queue has 0 requests
2016.08.22 10:33:12 4: Helios_KWL: Send queues fcode 16 for h 1 (Register), len / span 16 : 000f0000000db4100001001020763030313036 pdu 100001001020763030313036, force
2016.08.22 10:33:12 4: Helios_KWL: sends 000f0000000db4100001001020763030313036 (fcode 16 to 180, tid 15 for Register (1), len 16)
2016.08.22 10:33:12 5: SW: 000f0000000db4100001001020763030313036
2016.08.22 10:33:12 5: Helios_KWL: ReadAnswer called and remaining timeout is 1.99873399734497 requested reading is Register
2016.08.22 10:33:13 5: ReadAnswer got: 000f00000003b49003
2016.08.22 10:33:13 5: Helios_KWL: ParseFrames got: 000f00000003b49003
2016.08.22 10:33:13 4: Helios_KWL: ParseFrames: fcode 144 from 180, tid 15, data 03 expect 16 from 180, tid 15 for module Helios_KWL
2016.08.22 10:33:13 5: Helios_KWL: ParseFrames got error code 90 / 03, illegal data value
2016.08.22 10:33:13 5: Helios_KWL: ReadAnswer done, err = got exception code 90 / 03, illegal data value


Nun muß ich die Anlage einmal über ModPoll ansprechen (das funktioniert weiterhin) und dann kann ich wieder einmal einen Wert auslesen.
Hast du dafür auch irgendeine Erklärung?

P.S. Der Test ist nicht mit der aktuellen Version aus deinem Beitrag vom 20.08 gemacht.

Danke und Gruß
Tobias
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 22 August 2016, 17:28:35
Hallo Tobias,

das ist schon seltsam.
Das einzige was mir aufgefallen ist, ist dass in der Hersteller-Doku der gesendete String am Ende ein \0 haben muss. Das sendest Du momentan nicht mit. Evt. liegt es daran.
Um das anzuhängen könntest Du das setexpr Attribut verwenden um an $val ein Nullzeichen anzufügen. Im Debug-Log solltest Du das dann auch in der gesendeten PDU sehen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 22 August 2016, 22:18:41
Hallo,

hier ist diese Umwandlung auch schon einmal aufgegriffen worden (https://forum.fhem.de/index.php/topic,46944.msg396977.html#msg396977).
Hier sieht es aus als wenn der String richtig in ASCII umgewandel wurde:

2016.08.22 10:33:05 5: Helios_KWL: ParseObj called with 7630303130353d32302e36000000000000000000000000000000000000000000 and start 1
2016.08.22 10:33:05 5: Helios_KWL: ParseObj ObjInfo: reading=Register, unpack=(a*), expr=, format=%.20s, map=
2016.08.22 10:33:05 5: Helios_KWL: ParseObj for Register does sprintf with format %.20s value is v00105=20.6
2016.08.22 10:33:05 5: Helios_KWL: ParseObj for Register sprintf result is v00105=20.6
2016.08.22 10:33:05 4: Helios_KWL: ParseObj for Register assigns v00105=20.6

v00105=20.6 -> 7630303130353d3232302e36

jetzt könnte man sich den v00106=??  ansehen.
Vielleicht hilft das weiter.

pejonp

PS: - funktioniert die Abfrage über modbuspoll.exe ?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: fhem_TS am 23 August 2016, 07:41:43
Hallo Stefan, hallo pejonp,

ZitatDas einzige was mir aufgefallen ist, ist dass in der Hersteller-Doku der gesendete String am Ende ein \0 haben muss.

Das war der entscheidende Hinweis.

Nachdem ich
obj-h1-setexpr ($val."\0")
ergänzt habe scheint jetzt alles zu funktionieren.

Ich werde jetzt mal meine Steuerung umstellen und testen.

Tausend Dank!

Gruß Tobias
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eszych am 05 September 2016, 13:00:14
Hallo pejonp,

danke für deine Antwort - irgendwie wurde ich vom Forum nicht informiert, daher erst jetzt eine Rückmeldung...

Das Dokument von SolarEdge kannte ich schon, aber ich möchte nichts in der Kommunikationseinstellung auf den RS485 Bussen ändern, da darüber auch ein Stromzähler eingebunden ist...
Ich habe aber herausgefunden, dass sich auf den Netzwerkinterfaces einach TCP-Modbus aktivieren lässt und die Wechselrichter sich dann mit Hilfe des Moduls "ModbusAttr" auslessen lassen.
Das hattest Du schon in einem anderen Post beschrieben und ich habe es leicht abgewandelt für meine Anlage übernommen.
Leider kann ich mit den Werten nicht so besonders viel Anfangen, denn irgendwie passen die Werte, die ich mit FHEM bekomme nicht mit den Werten aus dem Monitoring-Portal zusammen...

Für alle Insterssierten hier nochmal die leicht abgewandelte Konfig - nicht vergessen das Perl Modul Math::Round zu installieren!!!
########################
## Define 1-Phase PWP ##
########################
define PWP1 ModbusAttr 1 90 192.168.178.181:502 TCP
attr PWP1 userattr dev-h-combine dev-h-defPoll obj-h100-reading obj-h101-reading obj-h103-expr obj-h103-format obj-h103-reading obj-h107-map obj-h107-reading obj-h68-expr obj-h68-reading obj-h69-expr obj-h69-reading obj-h70-expr obj-h70-reading obj-h71-reading obj-h72-reading obj-h75-reading obj-h83-reading obj-h84-expr obj-h84-reading obj-h85-expr obj-h85-reading obj-h86-expr obj-h86-reading obj-h87-expr obj-h87-reading obj-h88-expr obj-h88-reading obj-h89-expr obj-h89-reading obj-h90-expr obj-h90-reading obj-h91-expr obj-h91-reading obj-h92-expr obj-h92-reading obj-h93-expr obj-h93-format obj-h93-len obj-h93-reading obj-h93-unpack obj-h95-expr obj-h95-reading obj-h96-expr obj-h96-reading obj-h97-expr obj-h97-reading obj-h98-expr obj-h98-reading obj-h99-expr obj-h99-reading verbose
attr PWP1 dev-h-combine 50
attr PWP1 dev-h-defPoll 1
attr PWP1 obj-h100-reading PWP1_I_DC_Leistung_W
attr PWP1 obj-h101-reading PWP1_I_DC_Leistung_SF
attr PWP1 obj-h103-expr $val / 100
attr PWP1 obj-h103-format %.f
attr PWP1 obj-h103-reading PWP1_Temp_Kuehler_C
attr PWP1 obj-h107-map 1:Aus, 2:Nachtmodus, 4:WR_An
attr PWP1 obj-h107-reading PWP1_C_Status
attr PWP1 obj-h68-expr $val
attr PWP1 obj-h68-reading PWP1_C_Geraeteadresse
attr PWP1 obj-h69-expr $val
attr PWP1 obj-h69-reading PWP1_C_SunSpec_DID
attr PWP1 obj-h70-expr $val
attr PWP1 obj-h70-reading PWP1_C_SunSpec_Laenge
attr PWP1 obj-h71-reading PWP1_I_AC_Strom_A
attr PWP1 obj-h72-reading PWP1_I_AC_StromL1_A
attr PWP1 obj-h75-reading PWP1_I_AC_Strom_SF
attr PWP1 obj-h83-reading PWP1_I_AC_Leistung_W
attr PWP1 obj-h84-expr $val
attr PWP1 obj-h84-reading PWP1_I_AC_Leistung_SF
attr PWP1 obj-h85-expr $val
attr PWP1 obj-h85-reading PWP1_I_AC_Frequenz_Hz
attr PWP1 obj-h86-expr $val
attr PWP1 obj-h86-reading PWP1_I_AC_Frequenz_SF
attr PWP1 obj-h87-expr $val
attr PWP1 obj-h87-reading PWP1_I_AC_VA
attr PWP1 obj-h88-expr $val
attr PWP1 obj-h88-reading PWP1_I_AC_VA_SF
attr PWP1 obj-h89-expr $val
attr PWP1 obj-h89-reading PWP1_I_AC_VAR
attr PWP1 obj-h90-expr $val
attr PWP1 obj-h90-reading PWP1_I_AC_VAR_SF
attr PWP1 obj-h91-expr $val
attr PWP1 obj-h91-reading PWP1_I_AC_PF_Prozent
attr PWP1 obj-h92-expr $val
attr PWP1 obj-h92-reading PWP1_I_AC_PF_SF
attr PWP1 obj-h93-expr $val / 1000
attr PWP1 obj-h93-format %.2f
attr PWP1 obj-h93-len 2
attr PWP1 obj-h93-reading PWP1_I_AC_Energie_WH_kWh
attr PWP1 obj-h93-unpack l>
attr PWP1 obj-h95-expr $val
attr PWP1 obj-h95-reading PWP1_I_AC_Energie_WH_SF
attr PWP1 obj-h96-expr $val
attr PWP1 obj-h96-reading PWP1_I_DC_Strom_A
attr PWP1 obj-h97-expr $val
attr PWP1 obj-h97-reading PWP1_I_DC_Strom_SF
attr PWP1 obj-h98-expr $val
attr PWP1 obj-h98-reading PWP1_I_DC_Spannung_V
attr PWP1 obj-h99-expr $val
attr PWP1 obj-h99-reading PWP1_I_DC_Spannung_SF
attr PWP1 room Solar
attr PWP1 verbose 1

########################
define PWP1_I_AC_Frequenz_Hz dummy
attr PWP1_I_AC_Frequenz_Hz room Solar

########################
define PWP1_AC_Frequenz_WR notify PWP1:PWP1_I_AC_Frequenz_Hz.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP1","PWP1_I_AC_Frequenz_Hz",0) ;; \
    my $b = ReadingsVal("PWP1","PWP1_I_AC_Frequenz_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($v($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP1_I_AC_Frequenz_Hz $text") ;; \
    };;
attr PWP1_AC_Frequenz_WR room Solar

########################
define PWP1_I_DC_Leistung_W dummy
attr PWP1_I_DC_Leistung_W room Solar

########################
define PWP1_DC_Leistung_WR notify PWP1:PWP1_I_DC_Leistung_W.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP1","PWP1_I_DC_Leistung_W",0) ;; \
    my $b = ReadingsVal("PWP1","PWP1_I_DC_Leistung_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP1_I_DC_Leistung_W $text") ;; \
    };;
attr PWP1_DC_Leistung_WR room Solar

########################
define PWP1_I_DC_Strom_A dummy
attr PWP1_I_DC_Strom_A room Solar

########################
define PWP1_DC_Strom_WR notify PWP1:PWP1_I_DC_Strom_A.* {\
use Math::Round qw/nearest/;; \
    my $a = ReadingsVal("PWP1","PWP1_I_DC_Strom_A",0) ;; \
    my $b = ReadingsVal("PWP1","PWP1_I_DC_Strom_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP1_I_DC_Strom_A $text") ;; \
    };;
attr PWP1_DC_Strom_WR room Solar

########################
define PWP1_I_AC_Leistung_W dummy
attr PWP1_I_AC_Leistung_W room Solar

########################
define PWP1_AC_Leistung_WR notify PWP1:PWP1_I_AC_Leistung_W.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP1","PWP1_I_AC_Leistung_W",0) ;; \
    my $b = ReadingsVal("PWP1","PWP1_I_AC_Leistung_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;} elsif($vv == 4){$vv=10000;;} elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;} elsif($vv == 1 ){$vv=10;;} else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP1_I_AC_Leistung_W $text") ;; \
    };;
attr PWP1_AC_Leistung_WR room Solar

########################
define PWP1_I_AC_StromL1_A dummy
attr PWP1_I_AC_StromL1_A room Solar

########################
define PWP1_I_AC_Strom_A dummy
attr PWP1_I_AC_Strom_A room Solar

########################
define PWP1_AC_Strom_WR notify PWP1:PWP1_I_AC_Strom_A.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP1","PWP1_I_AC_Strom_A",0) ;; \
    my $a1 = ReadingsVal("PWP1","PWP1_I_AC_StromL1_A",0) ;; \
    my $b = ReadingsVal("PWP1","PWP1_I_AC_Strom_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP1_I_AC_Strom_A $text") ;; \
    $sum1 = nearest(0.001, $a1/$vv);; \
    $text = "$sum1" ;; \
    fhem ("set PWP1_I_AC_StromL1_A $text") ;; \
    };;
attr PWP1_AC_Strom_WR room Solar

########################
## Define 3 Phase PWP ##
########################
define PWP3 ModbusAttr 1 90 192.168.178.182:502 TCP
attr PWP3 userattr dev-h-combine dev-h-defPoll obj-h100-reading obj-h101-reading obj-h103-expr obj-h103-format obj-h103-reading obj-h107-map obj-h107-reading obj-h68-expr obj-h68-reading obj-h69-expr obj-h69-reading obj-h70-expr obj-h70-reading obj-h71-reading obj-h72-reading obj-h73-reading obj-h74-reading obj-h75-reading obj-h83-reading obj-h84-expr obj-h84-reading obj-h85-expr obj-h85-reading obj-h86-expr obj-h86-reading obj-h87-expr obj-h87-reading obj-h88-expr obj-h88-reading obj-h89-expr obj-h89-reading obj-h90-expr obj-h90-reading obj-h91-expr obj-h91-reading obj-h92-expr obj-h92-reading obj-h93-expr obj-h93-format obj-h93-len obj-h93-reading obj-h93-unpack obj-h95-expr obj-h95-reading obj-h96-expr obj-h96-reading obj-h97-expr obj-h97-reading obj-h98-expr obj-h98-reading obj-h99-expr obj-h99-reading verbose
attr PWP3 dev-h-combine 50
attr PWP3 dev-h-defPoll 1
attr PWP3 obj-h100-reading PWP3_I_DC_Leistung_W
attr PWP3 obj-h101-reading PWP3_I_DC_Leistung_SF
attr PWP3 obj-h103-expr $val / 100
attr PWP3 obj-h103-format %.f
attr PWP3 obj-h103-reading PWP3_Temp_Kuehler_C
attr PWP3 obj-h107-map 1:Aus, 2:Nachtmodus, 4:WR_An
attr PWP3 obj-h107-reading PWP3_C_Status
attr PWP3 obj-h68-expr $val
attr PWP3 obj-h68-reading PWP3_C_Geraeteadresse
attr PWP3 obj-h69-expr $val
attr PWP3 obj-h69-reading PWP3_C_SunSpec_DID
attr PWP3 obj-h70-expr $val
attr PWP3 obj-h70-reading PWP3_C_SunSpec_Laenge
attr PWP3 obj-h71-reading PWP3_I_AC_Strom_A
attr PWP3 obj-h72-reading PWP3_I_AC_StromL1_A
attr PWP3 obj-h73-reading PWP3_I_AC_StromL2_A
attr PWP3 obj-h74-reading PWP3_I_AC_StromL3_A
attr PWP3 obj-h75-reading PWP3_I_AC_Strom_SF
attr PWP3 obj-h83-reading PWP3_I_AC_Leistung_W
attr PWP3 obj-h84-expr $val
attr PWP3 obj-h84-reading PWP3_I_AC_Leistung_SF
attr PWP3 obj-h85-expr $val
attr PWP3 obj-h85-reading PWP3_I_AC_Frequenz_Hz
attr PWP3 obj-h86-expr $val
attr PWP3 obj-h86-reading PWP3_I_AC_Frequenz_SF
attr PWP3 obj-h87-expr $val
attr PWP3 obj-h87-reading PWP3_I_AC_VA
attr PWP3 obj-h88-expr $val
attr PWP3 obj-h88-reading PWP3_I_AC_VA_SF
attr PWP3 obj-h89-expr $val
attr PWP3 obj-h89-reading PWP3_I_AC_VAR
attr PWP3 obj-h90-expr $val
attr PWP3 obj-h90-reading PWP3_I_AC_VAR_SF
attr PWP3 obj-h91-expr $val
attr PWP3 obj-h91-reading PWP3_I_AC_PF_Prozent
attr PWP3 obj-h92-expr $val
attr PWP3 obj-h92-reading PWP3_I_AC_PF_SF
attr PWP3 obj-h93-expr $val / 1000
attr PWP3 obj-h93-format %.2f
attr PWP3 obj-h93-len 2
attr PWP3 obj-h93-reading PWP3_I_AC_Energie_WH_kWh
attr PWP3 obj-h93-unpack l>
attr PWP3 obj-h95-expr $val
attr PWP3 obj-h95-reading PWP3_I_AC_Energie_WH_SF
attr PWP3 obj-h96-expr $val
attr PWP3 obj-h96-reading PWP3_I_DC_Strom_A
attr PWP3 obj-h97-expr $val
attr PWP3 obj-h97-reading PWP3_I_DC_Strom_SF
attr PWP3 obj-h98-expr $val
attr PWP3 obj-h98-reading PWP3_I_DC_Spannung_V
attr PWP3 obj-h99-expr $val
attr PWP3 obj-h99-reading PWP3_I_DC_Spannung_SF
attr PWP3 room Solar
attr PWP3 verbose 1

########################
define PWP3_I_AC_Frequenz_Hz dummy
attr PWP3_I_AC_Frequenz_Hz room Solar

########################
define PWP3_AC_Frequenz_WR notify PWP3:PWP3_I_AC_Frequenz_Hz.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP3","PWP3_I_AC_Frequenz_Hz",0) ;; \
    my $b = ReadingsVal("PWP3","PWP3_I_AC_Frequenz_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($v($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP3_I_AC_Frequenz_Hz $text") ;; \
    };;
attr PWP3_AC_Frequenz_WR room Solar

########################
define PWP3_I_DC_Leistung_W dummy
attr PWP3_I_DC_Leistung_W room Solar

########################
define PWP3_DC_Leistung_WR notify PWP3:PWP3_I_DC_Leistung_W.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP3","PWP3_I_DC_Leistung_W",0) ;; \
    my $b = ReadingsVal("PWP3","PWP3_I_DC_Leistung_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP3_I_DC_Leistung_W $text") ;; \
    };;
attr PWP3_DC_Leistung_WR room Solar

########################
define PWP3_I_DC_Strom_A dummy
attr PWP3_I_DC_Strom_A room Solar

########################
define PWP3_DC_Strom_WR notify PWP3:PWP3_I_DC_Strom_A.* {\
use Math::Round qw/nearest/;; \
    my $a = ReadingsVal("PWP3","PWP3_I_DC_Strom_A",0) ;; \
    my $b = ReadingsVal("PWP3","PWP3_I_DC_Strom_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP3_I_DC_Strom_A $text") ;; \
    };;
attr PWP3_DC_Strom_WR room Solar

########################
define PWP3_I_AC_Leistung_W dummy
attr PWP3_I_AC_Leistung_W room Solar

########################
define PWP3_AC_Leistung_WR notify PWP3:PWP3_I_AC_Leistung_W.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP3","PWP3_I_AC_Leistung_W",0) ;; \
    my $b = ReadingsVal("PWP3","PWP3_I_AC_Leistung_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;} elsif($vv == 4){$vv=10000;;} elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;} elsif($vv == 1 ){$vv=10;;} else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP3_I_AC_Leistung_W $text") ;; \
    };;
attr PWP3_AC_Leistung_WR room Solar

########################
define PWP3_I_AC_StromL1_A dummy
attr PWP3_I_AC_StromL1_A room Solar

########################
define PWP3_I_AC_StromL2_A dummy
attr PWP3_I_AC_StromL2_A room Solar

########################
define PWP3_I_AC_StromL3_A dummy
attr PWP3_I_AC_StromL3_A room Solar

########################
define PWP3_I_AC_Strom_A dummy
attr PWP3_I_AC_Strom_A room Solar

########################
define PWP3_AC_Strom_WR notify PWP3:PWP3_I_AC_Strom_A.* {\
use Math::Round qw/nearest/;;\
    my $a = ReadingsVal("PWP3","PWP3_I_AC_Strom_A",0) ;; \
    my $a1 = ReadingsVal("PWP3","PWP3_I_AC_StromL1_A",0) ;; \
    my $a2 = ReadingsVal("PWP3","PWP3_I_AC_StromL2_A",0) ;; \
    my $a3 = ReadingsVal("PWP3","PWP3_I_AC_StromL3_A",0) ;; \
    my $b = ReadingsVal("PWP3","PWP3_I_AC_Strom_SF",0) ;; \
    my $beginn = 65536;; \
    my $vv = $beginn - $b;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};; \
    my $sum1 = nearest(0.001, $a/$vv);; \
    my $text = "$sum1" ;; \
    fhem ("set PWP3_I_AC_Strom_A $text") ;; \
    $sum1 = nearest(0.001, $a1/$vv);; \
    $text = "$sum1" ;; \
    fhem ("set PWP3_I_AC_StromL1_A $text") ;; \
    $sum1 = nearest(0.001, $a2/$vv);; \
    $text = "$sum1" ;; \
    fhem ("set PWP3_I_AC_StromL2_A $text") ;; \
    $sum1 = nearest(0.001, $a3/$vv);; \
    $text = "$sum1" ;; \
    fhem ("set PWP3_I_AC_StromL3_A $text") ;; \
    }
attr PWP3_AC_Strom_WR room Solar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 05 September 2016, 15:30:27
Hallo eszych,

Was wird denn nicht richtig angezeigt? Im Portal werden die Werte nur im 15min abstand angezeigt.
Am besten du vergleichst mit der Anzeige am WR.

Pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eszych am 06 September 2016, 12:57:10
Hallo PEJONP,

das die Werte aus dem Portal nicht mit den aktuellen Werten aus dem WR zusammen passen, sondern etwas zeitverzögert sind dachte ich mir schon. Ich habe noch einen Fehler in meinen Notify Definitionen gefunden und jetzt werden zumindest die Werte des 3 phasigen WR korrekt angezeigt... Hier noch einmal die DEF aus einem der Notifiy:

PWP3:PWP3_I_AC_Strom_A.* {
   use Math::Round qw/nearest/ ;;
   my $a = ReadingsVal("PWP3","PWP3_I_AC_Strom_A",0) ;;
   my $a1 = ReadingsVal("PWP3","PWP3_I_AC_StromL1_A",0) ;;
   my $a2 = ReadingsVal("PWP3","PWP3_I_AC_StromL2_A",0) ;;
   my $a3 = ReadingsVal("PWP3","PWP3_I_AC_StromL3_A",0) ;;
   my $b = ReadingsVal("PWP3","PWP3_I_AC_Strom_SF",0) ;;
   my $beginn = 65536 ;;
   my $vv = $beginn - $b ;;
   if ($vv==6) {
       $vv=1000000;
   } elsif ($vv == 5) {
       $vv=100000;
   } elsif ($vv == 4) {
       $vv=10000;
   } elsif ($vv == 3) {
       $vv=1000;
   } elsif ($vv == 2) {
       $vv=100;
   } elsif ($vv == 1 ) {
       $vv=10;
   } else {
       $vv=1;
   }
   my $suma = nearest(0.001, $a/$vv) ;;
   my $text = "$suma" ;;
   fhem("set D_PWP3_I_AC_Strom_A $text") ;;
   my $suma1 = nearest(0.001, $a1/$vv) ;;
   $text = "$suma1" ;;
   fhem("set D_PWP3_I_AC_StromL1_A $text") ;;
   my $suma2 = nearest(0.001, $a2/$vv) ;;
   $text = "$suma2" ;;
   fhem("set D_PWP3_I_AC_StromL2_A $text") ;;
   my $suma3 = nearest(0.001, $a3/$vv) ;;
   $text = "$suma3" ;;
   fhem("set D_PWP3_I_AC_StromL3_A $text") ;;
}


Die Werte des 1P WR sind aber völlig daneben. Das hängt aber sicher damit zusammen, dass der 1P WR für das Laden und Entladen der Batterie zuständig ist, er also entweder Strom erzeugt, oder Strom verbraucht. Ich habe zwischenzeitlich Werte von 62.536 bei PWP1_I_AC_Leistung_W.
Ich denke da werde ich mal bei SolarEdge nachfragen, ob es einen Wert gibt, der Anzeigt ob geladen oder entladen wird...

Andere Frage:
Ich meine mal einen Thread gefunden zu haben, in dem auch die Monitoring API von SolarEdge mit HTTPMod angezapft wird - aber ich finde den Thread nicht mehr, meine mich aber zu erinnern, dass Du (?) auch dort ein Konfig-Beispiel gegeben hattest...?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 07 September 2016, 15:45:07
Hallo eszych,

du meinst bestimmt diesen Beitrag (https://forum.fhem.de/index.php/topic,54619.msg462453.html#msg462453). Über die RS485 Schnittstelle habe ich alle Werte bekommen.

z.Z. geht diese aber nicht, da am WR ein Protokoll fehlt, es geht nur Master/Slave. Ich warte noch auf ein SW-Update, damit soll ja dann auch ModBus über TCPIP gehen. Damit entfällt die RS485-Schnittstelle (siehe Dok).

Die Daten meiner einzelnen Solarmodule lese ich jetzt, über das Auswerten der Daten die zum Portal gesendet werden, aus. Mit dem Modul von jbuehl (https://github.com/jbuehl/solaredge) habe ich es hinbekommen. z.Z. werden die Daten noch in eine Datei geschrieben. Zukünftig sollen diese in eine MySQL DB geschrieben werden und dann ausgewertet/dargestellt  werden (https://forum.fhem.de/index.php/topic,53584.msg486497.html#msg486497).

Damit ist keine API-Schnittstelle zum Portal notwendig. Um die API_Schnittstelle zu nutzen benötigt man einen Key und mehr Rechte, diese müssen bei SolarEdge beantragt werden. Damit entfällt für den PV-Errichter der Zugang auf meine Daten im SolarEdge-Portal. Bei Fehlern müßte ich mich dann direkt mit SolarEdge in Verbindung setzten.


zwischenzeitlich Werte von 62.536 bei PWP1_I_AC_Leistung_W.


Schau doch einmal in die Anlage, dort stehen doch auch Register für den Export und Import und vergleiche einmal die Firmware. Vielleicht hat sich da etwas geändert.
Oder es gibt einen anderen Wert für negative Werte I_AC_Leistung_SF <= 62555. positive Werte  I_AC_Leistung_SF = 65536

In der Nacht wird der Wert für Strom "I_DC_Strom_A" bei mir auch sehr groß, ist aber noch ein Fehler in der Auswertung, da sich der Faktor ändert. Müßte noch abgefangen werden. Ist mir jetzt aufgefallen. Tritt aber nur im Nachtmodus auf.

2016-08-08_05:46:19 PWP I_DC_Strom_A: 65535
2016-08-08_05:46:19 PWP I_DC_Strom_SF: 32768
2016-08-08_05:46:19 PWP I_DC_Spannung_V: 0
2016-08-08_05:46:19 PWP I_DC_Spannung_SF: 0
2016-08-08_05:46:19 I_DC_Leistung_W 0
2016-08-08_05:46:19 PWP I_DC_Leistung_W: 0
2016-08-08_05:46:19 PWP I_DC_Leistung_SF: 0
2016-08-08_05:46:19 PWP Temp_Kuehler_C: 0
2016-08-08_05:46:19 PWP C_Status: Nachtmodus


pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eszych am 09 September 2016, 11:16:49
Hallo pejonp,

danke für die ausführliche Antwort! Ich habe den Wert für I_AC_Leistung_SF mal bei verschiedenen Situationen (Batterie lädt, Batterie ist geladen, Batterie erzeugt Strom) angeschaut - und der Wert ändert sich tatsächlich...
In der Doku von SolarEdge steht nichts zu den möglichen Werten - leider...

Werte für I_AC_Leistung_SF ist bei Batterie Lädt = 65535 - die anderen Werte reiche ich noch nach, wenn ich ganz sicher bin...
(Ich werde die Definitionen für die Notifies dann entsprechend anpassen und hier wieder posten.)

In dem von Dir angehängten Dokument werden auch Adressen für StromMeter von SolarEdge angegeben. Ich gebe zu ich habe mich mit dem Modul "ModbusAttr" noch nicht so genau auseinander gesetzt - ich nehme aber an, dass ich über die Einträge in "userattr" die Liste der abzufragenden Werte erweitern kann und dann diese dann entsprechend als eigenständige Attribute definieren muss.
Also analog zu
userattr [...] obj-h84-expr obj-h84-reading
für Adresse "40085" mit Länge "1" und Bezeichnung "I_AC_Power_SF" im Format "int16" der den Wert für "AC Power scale factor" liefert
dann zusätzlich
userattr [...] obj-h209-expr obj-h209-reading
für Adresse "40210" mit Länge "1" und Bezeichnung "M_AC_Power_SF" im Format "int16" der den Wert für "SF AC Real Power Scale Factor" liefert
???
Warum eigentlich immer "-1" für die Adresse?

Wie immer freue ich mich auf eure Kommentare!
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eszych am 09 September 2016, 14:35:34
Batterie ist voll geladen, dann bekomme ich folgenden Wert für I_AC_Leistung_SF
PWP1_I_AC_Leistung_SF = 65533

Was ich komisch finde ist, dass bei den Werten für z.B.
40188 1 C_SunSpec_DID uint16 N/A Well-known value. Uniquely identifies this as a
SunSpecMODBUS Map:
Single Phase (AN or AB) Meter (201)
Split Single Phase (ABN) Meter (202)
Wye-Connect Three Phase (ABCN) Meter (203)
Delta-Connect Three Phase (ABC) Meter(204)

im FHEM / ModbusAttr muss ich folgende Definition machen um den richtigen Wert (in meinem Fall 203) zu bekommen:

obj-h188-expr          $val
obj-h188-reading      PWP1_M1_C_SunSpec_DID


Also in dem Fall nicht Adresse -1...???

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 09 September 2016, 22:58:35
Hallo,

Die userattr Liste kann man weglassen. Das Modul erzeugt die automatisch und das auch nur damit man in Fhemweb die Werte durch Draufklicken ändern kann.

Ebenso ist ein -expr $val überflüssig. -expr macht nur dann Sinn wenn man den ursprünglichen Wert von $val in einer Perl Expression umwandeln will.

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eszych am 12 September 2016, 22:50:19
Der Vollständigkeit halber hier noch der Wert für I_AC_Leistung_SF wenn die Batterie Strom liefert:
I_AC_Leistung_SF = 65535

Der Wert für die Stromproduktion ist dann z.B.
I_AC_Leistung_W = 4730
was wohl 473,0 W entspricht.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: rakete123 am 21 September 2016, 21:34:38
Hallo zusammen,

ich überlege auch einen sdm220 zu holen. Aber ich rätsel noch wie ich die Daten ins FHEM bekomme... Ich habe in dem Schrank leider kein Ethernet Kabel. Auch WLAN möchte ich ungern nutzen. Ich hatte überlegt einen arduino mit reinzuwerfen und den dann per RS485 anschließen und über zwave die daten zu übertragen oder 433 mhz oder sowas.
Gibts da schon etwas fertiges? Oder einen extra RPi dafür?

VIelen Dank

mfg
Marcel
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Oktober 2016, 09:08:51
Hallo,

anbei eine neue Version zum Testen, die auch Modbus ASCII unterstützt. Ich habe leider kein echtes Gerät mit Modbus ASCII und kann es daher nur mit einem Simulator testen. Bei der Definition des logischen Device einfach ASCII als Protokoll angeben.

Weitere Änderung: wenn das Attribut disable bei Modbus über TCP auf 1 gesetzt wird, dann wird auch die TCP-Verbindung geschlossen und erst wieder aufgebaut wenn disable auf 0 gesetzt wird oder wenn es gelöscht wird.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 03 Oktober 2016, 20:13:57
Zuerstmal vielen Dank! Tolle Arbeit die hier geleistet wird...

Besonderer Dank an Roger - das war ja schon fast plug&play die beiden Zähler in betrieb zu nehmen.

Gibt es eigentlich auch ein disable Attribut bei dem USB-Adapter?
Ich habe definitionen Testweise in meine Config aufgenommen...

define HA_Modbus_1 Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0@9600
attr HA_Modbus_1 room Modbus

define HA_SDM630M_1 ModbusSDM630M 1 30
attr HA_SDM630M_1 userattr
attr HA_SDM630M_1 IODev HA_Modbus_1
attr HA_SDM630M_1 room Modbus

define HA_SDM630M_2 ModbusSDM630M 2 30
attr HA_SDM630M_2 userattr
attr HA_SDM630M_2 IODev HA_Modbus_1
attr HA_SDM630M_2 room Modbus


Jetzt ist der "Test-stand" wieder zerlegt - ich finde aber kein disable Attribut.
Die folge ist ein großes Log-file

2016.10.03 20:11:23 3: HA_SDM630M_2: Send queue too long, dropping request
2016.10.03 20:11:23 3: HA_SDM630M_1: Send queue too long, dropping request



Wurde schonmal mit den Übertragungsraten gespielt? Da geht doch noch einiges, oder?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Oktober 2016, 21:28:56
Hallo,

Eigentlich erben die Gerätemodule auf Basis von 98_Modbus.pm genauso wie ModbusAttr die möglichen Attribute vom Basismodul. Ein attr HA_SDM630_1 disable 1 sollte daher möglich sein.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 03 Oktober 2016, 21:38:56
überbleibsel meiner Bastelstunde war der noch eingesteckte USB-Dongle.
Als ich den rausgenommen habe hörte der Zauber auf.

Es wird noch einen dritten slave geben, den Multical602 (Wärmemengenzähler) konnte ich noch nicht mit Spannung versorgen. Wie füge ich dessen Readings hinzu? Wenn ich alles richtig verstanden habe baue ich auf grundlage der ModbusSDM.pm datei eine neue Zuordnung, oder?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 06 Oktober 2016, 09:38:01
Hallo Stefan,
ich habe mir die Dokumentation des Wärmemengenzählers gerade mal angesehen, so richtig blicke ich noch nicht welche Register ich lesen sollte.. Die Daten stehen, wenn ich alles richtig verstehe, in mehreren verschiedenen Variablen Formen zur Verfügung. Würdest Du Dir vielleicht das angehangene PDF Dokument mal anschauen und mir sagen auf welche Tabelle ich setzen sollte..?
Das wäre toll.
Ich hoffe wir bekommen eine schöne 98_ModbusMultical602.pm gebastelt...

Danke im voraus...
Michael
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 06 Oktober 2016, 09:38:37
noch ein Anhang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: oniT am 06 Oktober 2016, 10:30:18
Hallo Stefan,

ich habe eine weitere Frage. Ich bin am Basteln eines Moduls auf Basis 98_ModbusSet.pm. Dabei habe ich nun folgendes Problem. Die abgefragten Werte sind ja Ganzzahlen. Um eine Dezimalstelle, zum Beispiel bei Temperaturen zu erhalten, wird dies mit expr(?) und/oder format(?) doch umgerechnet, richtig? Das ganze sieht dann ja so aus:


'h502' => { reading => 'Referenztemperatur'',
name => 'Referenztemperatur',
expr => '$val/10',
format => '%.1f',
min => 10.0,
max => 40.0,
poll => 1,
set => 1,
},


Was ist aber nun wenn ich Temperaturwerte mit einer Nachkommastelle schreiben möchte? Schreibe ich diese mit einer Nachkommastelle, ist der Wert um ein Zehntel zu klein. Schreibe ich diese als Ganzzahl, also statt zum Beispiel 21.0 -> 210, dann ist der Wert richtig, ist ja logisch. Gibt es da einen Trick oder irgendetwas um den Wert mit Dezimalstelle zu übergeben und dieser wird dann vor dem Schreiben wieder als Ganzzahl umgerechnet?

[gelöst],  :-[ "1000 mal die commandref angesehen, 1000 mal ist nichts passiert", setexpr heißt das Zauberwort.

Danke
Gruß
Tino
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 06 Oktober 2016, 10:42:17
Hallo Stefan, mit Disable bei meinem Wechselrichter funktioniert nun auch. Die anderen Änderungen ergaben bei mir leider kein Erfolg. Setzte das Device jetzt immer auf Disable wenn es nicht erreichbar ist.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 Oktober 2016, 20:11:36
Hallo Bjoernar,

was kam denn bei Dir im Log wenn Du maxTimeoutsToReconnect auf z.B. 3 gesetzt hast?

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 06 Oktober 2016, 20:15:09
Das was ich in den letzten Beiträgen geschrieben hatte. Hat nichts geändert... Kann ich das Login nur für das Modul Verbose stellen oder in eine extra Datei schreiben

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 Oktober 2016, 20:52:45
Hallo Bjoernar,

wenn das

2016.08.18 09:10:22 3: Wechselrichter1: 6469 successive timeouts

immer noch kommt stimmt irgend etwas überhaupt nicht.
ein

attr Wechselrichter1 maxTimeoutsToReconnect 3


sollte dafür sorgen, dass nach dem dritten Timeout der Status des Geräts auf disconnected geht. Dann zählen die Timeouts nicht weiter hoch. Statt dessen sollten danach im Log immer wieder Meldungen kommen, dass das Gerät disconnected ist und dass Requests deshalb gedroppt werden.
Wenn de Verbindung dann wieder da ist sollte es maximal wenige Minuten dauern bis Fhem meldet dass das Gerät wieder aufgetaucht ist.

Um nur das Logging für Deinen Wechselrichter hochzusetzen kannst Du ein
attr Wechselrichter1 5
eingeben.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 Oktober 2016, 20:55:40
Hallo Michael,

Ich interpretiere die Doku Deines Wärmemengenzählers so dass Du die Werte in verschiedenen Formaten abfragen kannst. Ich würde einfach den Float-Wert abfragen. Zum Testen ist es einfacher wenn Du ModbusAttr verwendest. Wenn die Registeradressen etc. stimmen kannst Du das danach einfach in das Format für ein eigenes Modul übertragen. Die Attribute entsprechen den Schlüsseln im Hash.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 15 Oktober 2016, 16:35:01
Hallo,

hier nochmal eine neue Version.
Das Öffnen von Verbindungen über TCP wird jetzt beim Define / Neustart verzögert, bis Fhem initialisiert ist.
Dann sind auch alle Attribute vorhanden und bei disable wird die Verbindung gar nicht erst aufgebaut.
(Bisher wurde zuerst versucht die Verbindung aufzubauen und sobald dann das Attribut disable verarbeitet war, ist sie wieder geschlossen worden. )

Zudem habe ich revRegs und bSwapRegs auch für set eingebaut. Einige Waterkotte Wärmepumpen brauchen das beim Ändern von Werten.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: MegaData am 23 Oktober 2016, 11:22:12
Hi hi !

Vielleicht kann mir ja hier jemand weiter helfen... Ich habe auch eine Helios Lüftung und versuche das ganze nach der Anleitung aufzusetzen. Bekomme jedoch immer nur das Register v00000 ausgelesen und wenn ich was versuche zu setzen meckert er der Wert sei nicht numerisch. Hier mal ein Log-Auszug:

2016.10.23 11:10:16.693 3: Helios_KWL: Set: Value v00104 is not numeric
2016.10.23 11:10:16.694 3: set Helios_KWL Register v00104 : Set Value v00104 is not numeric
2016.10.23 11:13:18.855 5: Helios_KWL: UpdateGetSetList full object list: h1
2016.10.23 11:13:18.858 5: Helios_KWL: UpdateSetList: setList=Register
2016.10.23 11:13:18.866 5: Helios_KWL: UpdateSetList: getList=Register:noArg
2016.10.23 11:13:23.532 4: Helios_KWL: update timer modified: will call GetUpdate in 10.0 seconds at 2016-10-23 11:13:33
2016.10.23 11:13:23.533 5: Helios_KWL: GetUpdate called
2016.10.23 11:13:23.534 5: Helios_KWL: GetUpdate objects from attributes: h1
2016.10.23 11:13:23.535 5: Helios_KWL: GetUpdate full object list: h1
2016.10.23 11:13:23.536 5: Helios_KWL: GetUpdate check h1 => Register, poll = 0, last = 1477084135.13989
2016.10.23 11:13:23.537 5: Helios_KWL: GetUpdate tries to combine read commands
2016.10.23 11:13:30.138 5: Helios_KWL: Get: key for Register = h1
2016.10.23 11:13:30.139 5: Helios_KWL: Get: Requesting Register (h1)
2016.10.23 11:13:30.140 4: Helios_KWL: Send called with h 1 len 16 / span - to id 180, queue has 0 requests
2016.10.23 11:13:30.141 4: Helios_KWL: Send queues fcode 3 for h 1 (Register), len / span 16 : 001f00000006b40300010010 pdu 0300010010, force
2016.10.23 11:13:30.144 4: Helios_KWL: sends 001f00000006b40300010010 (fcode 3 to 180, tid 31 for Register (1), len 16)
2016.10.23 11:13:30.145 5: SW: 001f00000006b40300010010
2016.10.23 11:13:30.150 5: Helios_KWL: ReadAnswer called and remaining timeout is 1.99861097335815 requested reading is Register
2016.10.23 11:13:30.279 5: ReadAnswer got: 001f00000023b403207630303030303d4b574c20454320323730572052000000000000000000000000
2016.10.23 11:13:30.280 5: Helios_KWL: ParseFrames got: 001f00000023b403207630303030303d4b574c20454320323730572052000000000000000000000000
2016.10.23 11:13:30.281 4: Helios_KWL: ParseFrames: fcode 3 from 180, tid 31, data 207630303030303d4b574c20454320323730572052000000000000000000000000 expect 3 from 180, tid 31 for module Helios_KWL
2016.10.23 11:13:30.282 5: Helios_KWL: ParseObj called with 7630303030303d4b574c20454320323730572052000000000000000000000000 and start 1
2016.10.23 11:13:30.285 5: Helios_KWL: ParseObj ObjInfo: reading=Register, unpack=(a*), expr=, format=%.20s, map=
2016.10.23 11:13:30.286 5: Helios_KWL: ParseObj for Register does sprintf with format %.20s value is v00000=KWL EC 270W R
2016.10.23 11:13:30.287 5: Helios_KWL: ParseObj for Register sprintf result is v00000=KWL EC 270W R
2016.10.23 11:13:30.288 4: Helios_KWL: ParseObj for Register assigns v00000=KWL EC 270W R
2016.10.23 11:13:30.446 5: Helios_KWL: ParseFrames done, reply to fCode 3, 1 readings
2016.10.23 11:13:30.447 5: Helios_KWL: ReadAnswer done
2016.10.23 11:13:33.537 4: Helios_KWL: update timer modified: will call GetUpdate in 10.0 seconds at 2016-10-23 11:13:43
2016.10.23 11:13:33.538 5: Helios_KWL: GetUpdate called
2016.10.23 11:13:33.539 5: Helios_KWL: GetUpdate objects from attributes: h1
2016.10.23 11:13:33.540 5: Helios_KWL: GetUpdate full object list: h1
2016.10.23 11:13:33.541 5: Helios_KWL: GetUpdate check h1 => Register, poll = 0, last = 1477214010.28944
2016.10.23 11:13:33.542 5: Helios_KWL: GetUpdate tries to combine read commands
2016.10.23 11:13:39.911 5: Helios_KWL: Set: key for Register = h1
2016.10.23 11:13:39.911 5: Helios_KWL: Set: found option Register (h1), setVal = v00102=3
2016.10.23 11:13:39.913 3: Helios_KWL: Set: Value v00102=3 is not numeric
2016.10.23 11:13:43.681 4: Helios_KWL: update timer modified: will call GetUpdate in 10.0 seconds at 2016-10-23 11:13:53
2016.10.23 11:13:43.683 5: Helios_KWL: GetUpdate called
2016.10.23 11:13:43.684 5: Helios_KWL: GetUpdate objects from attributes: h1
2016.10.23 11:13:43.685 5: Helios_KWL: GetUpdate full object list: h1
2016.10.23 11:13:43.687 5: Helios_KWL: GetUpdate check h1 => Register, poll = 0, last = 1477214010.28944
2016.10.23 11:13:43.688 5: Helios_KWL: GetUpdate tries to combine read commands


Hat da jemand eine Idee ?

Vielen Dank !
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 30 Oktober 2016, 09:18:17
Hallo Leute, gestern habe ich versucht meine Modbus teilnehmer an Ort und Stelle in. betrieb zu nehmen.
Es sind 3 Geräte 2x SDM 630 und 1x Multical 602, verbunden ist alles mit J-Y(ST)Y 2x2x0,8
Der Multical ist vorkonfiguriert auf 19200,8,E,1 - wenn ich alles richtig verstehe lässt sich die parametrierung nicht ohne die Software von Kamstrup anpassen.
Deswegen habe ich die Konfiguration der SDM teilnehmer auch anpassen wollen. Bei einem gelang mir das auch, beim zweiten komme ich aber noch nichtmal bis in das Menu. Wegen einer gebrochenen Anschlussklemme des Modbuses musste ich dieses gehäuse öffnen und eine Litze (A) fest anlöten. Seit dem verschliesen des Gehäuses funktionieren die Schaltflächen nicht mehr ordentlich.
Aktuell ist der USB Adapter mit 19200,8,E,1 konfiguriert...

Die Kette schaut nun so aus
http://shop.in-circuit.de/product_info.php?cPath=38&products_id=82 (http://shop.in-circuit.de/product_info.php?cPath=38&products_id=82) RS485 zu USB
http://bg-etech.de/os/product_info.php/products_id/50 (http://bg-etech.de/os/product_info.php/products_id/50) SDM630M (gelöteter Modbus Anschluss)
http://bg-etech.de/os/product_info.php/products_id/50 (http://bg-etech.de/os/product_info.php/products_id/50) SDM630M (anpassung auf 19200,8,E,1 gelungen)
http://www.multical.hu/MODBUS_datasheet.pdf (http://www.multical.hu/MODBUS_datasheet.pdf) Multical602 (derzeit abgeklemmt)

Zuerst war immer die Meldung send que too long...

Dann habe ich angefangen mit den Dip Schaltern des USB Adapters zu spielen - wenn alle auf "on" stehen bekomme ich bei den SDMs nach und nach alle Readings.

Leider sind die Readings aber alle mit 0.0 belegt - ich bekomme also keine aktuellen werte...

Hat jemand eine Idee? Was kann ich noch probieren? Ich werde jetzt mal kurzzeitig alle geräte auf verbose5 aufzeichnen...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 30 Oktober 2016, 10:20:35
Hier nun eine Handvoll Logs...
Zitat2016.10.30 09:59:47 1: Including /opt/fhem/FHEM/ModbusRTU.cfg
2016.10.30 09:59:47 3: Opening HA_Modbus_1 device /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0
2016.10.30 09:59:48 3: Setting HA_Modbus_1 serial parameters to 19200,8,E,1
2016.10.30 09:59:48 3: HA_Modbus_1 device opened
2016.10.30 09:59:50 3: ModbusZaehler2: define with destination , protocol RTU
2016.10.30 09:59:50 3: ModbusZaehler2: defined with id 2, interval 30, destination HA_Modbus_1, protocol RTU
2016.10.30 09:59:50 3: ModbusZaehler1: define with destination , protocol RTU
2016.10.30 09:59:50 3: ModbusZaehler1: defined with id 1, interval 30, destination HA_Modbus_1, protocol RTU


HA_Modbus_1verbose 5
2016.10.30 10:04:07 4: HA_Modbus_1: sends 02040030002671ec (fcode 4 to 2, tid 0 for Current_Sum__A (48), len 38)
2016.10.30 10:04:07 5: SW: 02040030002671ec
2016.10.30 10:04:07 5: HA_Modbus_1: raw read: 0204003000
2016.10.30 10:04:07 5: HA_Modbus_1: ParseFrames got: 0204003000
2016.10.30 10:04:07 4: HA_Modbus_1: ParseFrames: fcode 4 from 2, data 00 calc crc = 49362, read = 48 -> mismatch! expect 4 from 2 for module ModbusZaehler2
2016.10.30 10:04:07 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:07 5: HA_Modbus_1: raw read: 2671ec
2016.10.30 10:04:07 5: HA_Modbus_1: ParseFrames got: 02040030002671ec
2016.10.30 10:04:07 4: HA_Modbus_1: ParseFrames: fcode 4 from 2, data 00300026 calc crc = 60529, read = 60529  expect 4 from 2 for module ModbusZaehler2
2016.10.30 10:04:07 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 73 readings
2016.10.30 10:04:07 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler2 not over, try again in 0.650346994400024
2016.10.30 10:04:08 4: HA_Modbus_1: sends 0204000c000ab03d (fcode 4 to 2, tid 0 for Power_L1__W (12), len 10)
2016.10.30 10:04:08 5: SW: 0204000c000ab03d
2016.10.30 10:04:08 5: HA_Modbus_1: raw read: 0204000c00
2016.10.30 10:04:08 5: HA_Modbus_1: ParseFrames got: 0204000c00
2016.10.30 10:04:08 4: HA_Modbus_1: ParseFrames: fcode 4 from 2, data 00 calc crc = 49362, read = 12 -> mismatch! expect 4 from 2 for module ModbusZaehler2
2016.10.30 10:04:08 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:08 5: HA_Modbus_1: raw read: 0ab03d
2016.10.30 10:04:08 5: HA_Modbus_1: ParseFrames got: 0204000c000ab03d
2016.10.30 10:04:08 4: HA_Modbus_1: ParseFrames: fcode 4 from 2, data 000c000a calc crc = 15792, read = 15792  expect 4 from 2 for module ModbusZaehler2
2016.10.30 10:04:08 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 73 readings
2016.10.30 10:04:08 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler2 not over, try again in 0.622377157211304
2016.10.30 10:04:09 4: HA_Modbus_1: sends 020400fa0014d007 (fcode 4 to 2, tid 0 for THD_Current_avr__prz (250), len 20)
2016.10.30 10:04:09 5: SW: 020400fa0014d007
2016.10.30 10:04:09 5: HA_Modbus_1: raw read: 020400
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames got: 020400
2016.10.30 10:04:09 5: HA_Modbus_1: raw read: fa0014d007
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames got: 020400fa0014d007
2016.10.30 10:04:09 4: HA_Modbus_1: ParseFrames: fcode 4 from 2, data 00fa0014 calc crc = 2000, read = 2000  expect 4 from 2 for module ModbusZaehler2
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 74 readings
2016.10.30 10:04:09 4: HA_Modbus_1: sends 01040042000ed1da (fcode 4 to 1, tid 0 for CosPhi__grd (66), len 14)
2016.10.30 10:04:09 5: SW: 01040042000ed1da
2016.10.30 10:04:09 5: HA_Modbus_1: raw read: 01040042000e
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames got: 01040042000e
2016.10.30 10:04:09 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0042 calc crc = 10432, read = 3584 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:09 5: HA_Modbus_1: raw read: d1da
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames got: 01040042000ed1da
2016.10.30 10:04:09 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0042000e calc crc = 56017, read = 56017  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 69 readings
2016.10.30 10:04:09 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.662681102752686
2016.10.30 10:04:09 4: HA_Modbus_1: sends 010400ec0022b1e6 (fcode 4 to 1, tid 0 for THD_Voltage_L2_N__prz (236), len 34)
2016.10.30 10:04:09 5: SW: 010400ec0022b1e6
2016.10.30 10:04:09 5: HA_Modbus_1: raw read: 010400ec0022b1e6
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames got: 010400ec0022b1e6
2016.10.30 10:04:09 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00ec0022 calc crc = 59057, read = 59057  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:09 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 70 readings
2016.10.30 10:04:09 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.632614135742188
2016.10.30 10:04:10 4: HA_Modbus_1: sends 0104000a000cd00d (fcode 4 to 1, tid 0 for Current_L3__A (10), len 12)
2016.10.30 10:04:10 5: SW: 0104000a000cd00d
2016.10.30 10:04:10 5: HA_Modbus_1: raw read: 0104000a000cd00d
2016.10.30 10:04:10 5: HA_Modbus_1: ParseFrames got: 0104000a000cd00d
2016.10.30 10:04:10 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 000a000c calc crc = 3536, read = 3536  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:10 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 70 readings
2016.10.30 10:04:10 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.634489059448242
2016.10.30 10:04:11 4: HA_Modbus_1: sends 01040006000291ca (fcode 4 to 1, tid 0 for Current_L1__A (6), len 2)
2016.10.30 10:04:11 5: SW: 01040006000291ca
2016.10.30 10:04:11 5: HA_Modbus_1: raw read: 0104000600
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames got: 0104000600
2016.10.30 10:04:11 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00 calc crc = 49186, read = 6 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:11 5: HA_Modbus_1: raw read: 0291ca
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames got: 01040006000291ca
2016.10.30 10:04:11 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00060002 calc crc = 51857, read = 51857  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 70 readings
2016.10.30 10:04:11 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.661817073822021
2016.10.30 10:04:12 4: HA_Modbus_1: sends 010400080002f009 (fcode 4 to 1, tid 0 for Current_L2__A (8), len 2)
2016.10.30 10:04:12 5: SW: 010400080002f009
2016.10.30 10:04:12 5: HA_Modbus_1: raw read: 010400080002f009
2016.10.30 10:04:12 5: HA_Modbus_1: ParseFrames got: 010400080002f009
2016.10.30 10:04:12 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00080002 calc crc = 2544, read = 2544  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:12 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 70 readings
2016.10.30 10:04:12 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.641105175018311
2016.10.30 10:04:12 4: HA_Modbus_1: sends 0104002e000c9006 (fcode 4 to 1, tid 0 for Current_Avr__A (46), len 12)
2016.10.30 10:04:12 5: SW: 0104002e000c9006
2016.10.30 10:04:12 5: HA_Modbus_1: raw read: 0104002e000c
2016.10.30 10:04:12 5: HA_Modbus_1: ParseFrames got: 0104002e000c
2016.10.30 10:04:12 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 002e calc crc = 1472, read = 3072 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:12 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:12 5: HA_Modbus_1: raw read: 9006
2016.10.30 10:04:12 5: HA_Modbus_1: ParseFrames got: 0104002e000c9006
2016.10.30 10:04:12 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 002e000c calc crc = 1680, read = 1680  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:12 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 70 readings
2016.10.30 10:04:12 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.661504983901978
2016.10.30 10:04:13 4: HA_Modbus_1: sends 0104015c00103028 (fcode 4 to 1, tid 0 for Energy_L2_import__kWh (348), len 16)
2016.10.30 10:04:13 5: SW: 0104015c00103028
2016.10.30 10:04:13 5: HA_Modbus_1: raw read: 0104015c00
2016.10.30 10:04:13 5: HA_Modbus_1: ParseFrames got: 0104015c00
2016.10.30 10:04:13 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 01 calc crc = 227, read = 92 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:13 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:13 5: HA_Modbus_1: raw read: 103028
2016.10.30 10:04:13 5: HA_Modbus_1: ParseFrames got: 0104015c00103028
2016.10.30 10:04:13 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 015c0010 calc crc = 10288, read = 10288  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:13 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 71 readings
2016.10.30 10:04:13 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.648697137832642
2016.10.30 10:04:14 4: HA_Modbus_1: sends 010400540002301b (fcode 4 to 1, tid 0 for Power_Sum_demand__W (84), len 2)
2016.10.30 10:04:14 5: SW: 010400540002301b
2016.10.30 10:04:14 5: HA_Modbus_1: raw read: 01040054
2016.10.30 10:04:14 5: HA_Modbus_1: ParseFrames got: 01040054
2016.10.30 10:04:14 5: HA_Modbus_1: raw read: 0002301b
2016.10.30 10:04:14 5: HA_Modbus_1: ParseFrames got: 010400540002301b
2016.10.30 10:04:14 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00540002 calc crc = 6960, read = 6960  expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:14 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 71 readings


ModbusZaehler1 verbose 5

2016.10.30 10:06:33 5: ModbusZaehler1: UpdateGetSetList full object list: i30 i84 i22 i24 i202 i20 i72 i82 i56 h14 i40 i242 i338 h24 i48 i12 h22 i224 i352 i62 i204 i74 i60 i206 i238 i36 i340 i350 i46 i106 i42 i80 i348 i78 i86 i200 i260 i28 i264 i52 i100 i362 i18 h0 i32 i334 h8 i4 h88 i76 i8 i342 i254 i356 i104 i354 i26 i250 h20 i14 h2 i240 i360 h42 i344 i16 i102 i346 i34 i268 h36 i248 i358 i0 h28 h86 i70 i262 h10 i244 h18 i6 i234 i336 i66 i38 i10 i258 h12 i236 h6 i2 i266
2016.10.30 10:06:33 5: ModbusZaehler1: UpdateSetList: setList=System_Type:1,2,3 System_Pulse_Width__ms:60,100,200 Modbus_Parity_Stop:0,1,2,3 Demand_Period__minutes:0,5,8,10,15,20,30,60 Modbus_Node_adr Pulse_Divisor_1:1,2,3,4,5 System_Password Modbus_Speed__baud:0,1,2,3,4 Relay1_Energy_Type:TotalWh, TotalVArh
2016.10.30 10:06:33 5: ModbusZaehler1: UpdateSetList: getList=Demand_Time__minutes:noArg System_Type:noArg System_Pulse_Width__ms:noArg System_Password_Lock:noArg Modbus_Parity_Stop:noArg Demand_Period__minutes:noArg Modbus_Node_adr:noArg Pulse_Divisor_1:noArg System_Password:noArg Modbus_Speed__baud:noArg System_Power__W:noArg System_Serial_Nr:noArg System_Voltage__V:noArg System_Current__A:noArg Relay1_Energy_Type:noArg Relay2_Energy_Type:noArg Voltage_L1__V:noArg Current_L3__A:noArg Power_Sum_demand__VA:noArg Power_Max_demand__VA:noArg Current_N_demand__A:noArg Current_Max_N_demand__A:noArg Power_L1__W:noArg Power_L2__W:noArg Power_L3__W:noArg Power_L1__VA:noArg Voltage_L2__V:noArg Power_L2__VA:noArg Voltage_L1_to_L2__V:noArg Voltage_L2_to_L3__V:noArg Voltage_L3_to_L1__V:noArg Voltage_Avr_L_to_L__V:noArg Power_L3__VA:noArg Current_N__A:noArg THD_Voltage_L1_N__prz:noArg THD_Voltage_L2_N__prz:noArg THD_Voltage_L3_N__prz:noArg Power_L1__VAr:noArg THD_Current_L1__prz:noArg THD_Current_L2__prz:noArg THD_Current_L3__prz:noArg THD_Voltage_avr_LN__prz:noArg THD_Current_avr__prz:noArg PowerFactor_inverted:noArg Current_L1_demand__A:noArg Power_L2__VAr:noArg Current_L2_demand__A:noArg Current_L3_demand__A:noArg Current_Max_L1_demand__A:noArg Current_Max_L2_demand__A:noArg Current_Max_L3_demand__A:noArg Power_L3__VAr:noArg PowerFactor_L1:noArg PowerFactor_L2:noArg THD_Voltage_L1_L2__prz:noArg THD_Voltage_L2_L3__prz:noArg THD_Voltage_L3_L1__prz:noArg PowerFactor_L3:noArg THD_Voltage_avr_LL__prz:noArg Energy_total__kWh:noArg Energy_total__kVArh:noArg Energy_L1_import__kWh:noArg Energy_L2_import__kWh:noArg Energy_L3_import__kWh:noArg Energy_L1_export__kWh:noArg Energy_L2_export__kWh:noArg Energy_L3_export__kWh:noArg Energy_L1_total__kWh:noArg CosPhi_L1__grd:noArg Energy_L2_total__kWh:noArg Energy_L3_total__kWh:noArg CosPhi_L2__grd:noArg Voltage_L3__V:noArg CosPhi_L3__grd:noArg Voltage_Avr__V:noArg Current_Avr__A:noArg Current_Sum__A:noArg Power_Sum__W:noArg Power_Sum__VA:noArg Current_L1__A:noArg Power_Sum__VAr:noArg PowerFactor:noArg CosPhi__grd:noArg Frequency__Hz:noArg Energy_import__kWh:noArg Energy_export__kWh:noArg Energy_import__kVArh:noArg Energy_export__kVArh:noArg Current_L2__A:noArg Energy_apparent__kVAh:noArg Charge__kAh:noArg Power_Sum_demand__W:noArg Power_Max_demand__W:noArg
2016.10.30 10:06:42 4: ModbusZaehler1: update timer modified: will call GetUpdate in 30.0 seconds at 2016-10-30 10:07:12
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate called
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate objects from attributes:
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate full object list: h0 h10 h12 h14 h18 h2 h20 h22 h24 h28 h36 h42 h6 h8 h86 h88 i0 i10 i100 i102 i104 i106 i12 i14 i16 i18 i2 i20 i200 i202 i204 i206 i22 i224 i234 i236 i238 i24 i240 i242 i244 i248 i250 i254 i258 i26 i260 i262 i264 i266 i268 i28 i30 i32 i334 i336 i338 i34 i340 i342 i344 i346 i348 i350 i352 i354 i356 i358 i36 i360 i362 i38 i4 i40 i42 i46 i48 i52 i56 i6 i60 i62 i66 i70 i72 i74 i76 i78 i8 i80 i82 i84 i86
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h0 => Demand_Time__minutes, poll = once, last = 1477818065.19067
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h10 => System_Type, poll = once, last = 1477818068.04997
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h12 => System_Pulse_Width__ms, poll = once, last = 1477818087.46175
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h14 => System_Password_Lock, poll = once, last = 1477818108.71076
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h18 => Modbus_Parity_Stop, poll = once, last = 1477818129.54769
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h2 => Demand_Period__minutes, poll = once, last = 1477818077.32708
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h20 => Modbus_Node_adr, poll = once, last = 1477818078.03774
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h22 => Pulse_Divisor_1, poll = once, last = 1477818096.83475
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h24 => System_Password, poll = 0, last = 0
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h28 => Modbus_Speed__baud, poll = once, last = 1477818101.97105
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h36 => System_Power__W, poll = once, last = 1477818078.7779
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h42 => System_Serial_Nr, poll = once, last = 1477818105.84611
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h6 => System_Voltage__V, poll = once, last = 1477818070.20603
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h8 => System_Current__A, poll = once, last = 1477818106.55965
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h86 => Relay1_Energy_Type, poll = 0, last = 0
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check h88 => Relay2_Energy_Type, poll = once, last = 1477818071.64334
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i0 => Voltage_L1__V, poll = 1, last = 1477818067.34021
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Voltage_L1__V
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i10 => Current_L3__A, poll = 1, last = 1477818250.6549
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_L3__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i100 => Power_Sum_demand__VA, poll = 1, last = 1477818064.47294
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_Sum_demand__VA, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i102 => Power_Max_demand__VA, poll = 1, last = 1477818105.12367
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_Max_demand__VA, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i104 => Current_N_demand__A, poll = 1, last = 1477818346.60721
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_N_demand__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i106 => Current_Max_N_demand__A, poll = 1, last = 1477818157.46237
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_Max_N_demand__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i12 => Power_L1__W, poll = 1, last = 1477818376.85689
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L1__W, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i14 => Power_L2__W, poll = 1, last = 1477818316.01277
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L2__W, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i16 => Power_L3__W, poll = 1, last = 1477818345.16631
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L3__W, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i18 => Power_L1__VA, poll = 1, last = 1477818158.90242
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L1__VA, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i2 => Voltage_L2__V, poll = 1, last = 1477818070.91949
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Voltage_L2__V
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i20 => Power_L2__VA, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Power_L2__VA
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i200 => Voltage_L1_to_L2__V, poll = 1, last = 1477818063.75476
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Voltage_L1_to_L2__V, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i202 => Voltage_L2_to_L3__V, poll = 1, last = 1477818110.16181
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Voltage_L2_to_L3__V, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i204 => Voltage_L3_to_L1__V, poll = 1, last = 1477818125.94882
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Voltage_L3_to_L1__V, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i206 => Voltage_Avr_L_to_L__V, poll = 1, last = 1477818376.14618
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Voltage_Avr_L_to_L__V, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i22 => Power_L3__VA, poll = 1, last = 1477818023.20548
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L3__VA, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i224 => Current_N__A, poll = 1, last = 1477818348.03059
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_N__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i234 => THD_Voltage_L1_N__prz, poll = 1, last = 1477818216.02064
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L1_N__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i236 => THD_Voltage_L2_N__prz, poll = 1, last = 1477818249.93224
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L2_N__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i238 => THD_Voltage_L3_N__prz, poll = 1, last = 1477818280.50456
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L3_N__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i24 => Power_L1__VAr, poll = 1, last = 1477818023.91986
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L1__VAr, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i240 => THD_Current_L1__prz, poll = 1, last = 1477818074.50338
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Current_L1__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i242 => THD_Current_L2__prz, poll = 1, last = 1477818107.27486
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Current_L2__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i244 => THD_Current_L3__prz, poll = 1, last = 1477818128.82017
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Current_L3__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i248 => THD_Voltage_avr_LN__prz, poll = 1, last = 1477818155.30727
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_avr_LN__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i250 => THD_Current_avr__prz, poll = 1, last = 1477818316.72788
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Current_avr__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i254 => PowerFactor_inverted, poll = 1, last = 1477818374.68262
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip PowerFactor_inverted, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i258 => Current_L1_demand__A, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_L1_demand__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i26 => Power_L2__VAr, poll = 1, last = 1477818073.78018
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L2__VAr, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i260 => Current_L2_demand__A, poll = 1, last = 1477818061.51641
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_L2_demand__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i262 => Current_L3_demand__A, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_L3_demand__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i264 => Current_Max_L1_demand__A, poll = 1, last = 1477818189.77399
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_Max_L1_demand__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i266 => Current_Max_L2_demand__A, poll = 1, last = 1477818347.32014
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_Max_L2_demand__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i268 => Current_Max_L3_demand__A, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_Max_L3_demand__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i28 => Power_L3__VAr, poll = 1, last = 1477818063.05038
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_L3__VAr, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i30 => PowerFactor_L1, poll = 1, last = 1477818110.87521
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip PowerFactor_L1, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i32 => PowerFactor_L2, poll = 1, last = 1477818127.38467
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip PowerFactor_L2, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i334 => THD_Voltage_L1_L2__prz, poll = 1, last = 1477818065.9055
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L1_L2__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i336 => THD_Voltage_L2_L3__prz, poll = 1, last = 1477818101.25656
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L2_L3__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i338 => THD_Voltage_L3_L1__prz, poll = 1, last = 1477818124.53253
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L3_L1__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i34 => PowerFactor_L3, poll = 1, last = 1477818079.48343
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip PowerFactor_L3, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i340 => THD_Voltage_avr_LL__prz, poll = 1, last = 1477818058.65034
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_avr_LL__prz, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i342 => Energy_total__kWh, poll = 1, last = 1477818154.58565
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_total__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i344 => Energy_total__kVArh, poll = 1, last = 1477818190.50649
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_total__kVArh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i346 => Energy_L1_import__kWh, poll = 1, last = 1477818217.45536
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_L1_import__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i348 => Energy_L2_import__kWh, poll = 1, last = 1477818253.53858
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_L2_import__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i350 => Energy_L3_import__kWh, poll = 1, last = 1477818279.78489
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_L3_import__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i352 => Energy_L1_export__kWh, poll = 1, last = 1477818314.57307
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_L1_export__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i354 => Energy_L2_export__kWh, poll = 1, last = 1477818345.88162
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_L2_export__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i356 => Energy_L3_export__kWh, poll = 1, last = 1477818375.42551
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_L3_export__kWh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i358 => Energy_L1_total__kWh, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_L1_total__kWh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i36 => CosPhi_L1__grd, poll = 1, last = 1477818022.49505
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip CosPhi_L1__grd, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i360 => Energy_L2_total__kWh, poll = 1, last = 1477818035.49248
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_L2_total__kWh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i362 => Energy_L3_total__kWh, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_L3_total__kWh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i38 => CosPhi_L2__grd, poll = 1, last = 1477818069.49553
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip CosPhi_L2__grd, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i4 => Voltage_L3__V, poll = 1, last = 1477818072.349
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Voltage_L3__V
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i40 => CosPhi_L3__grd, poll = 1, last = 1477818107.98717
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip CosPhi_L3__grd, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i42 => Voltage_Avr__V, poll = 1, last = 1477818349.46481
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Voltage_Avr__V, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i46 => Current_Avr__A, poll = 1, last = 1477818377.57905
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_Avr__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i48 => Current_Sum__A, poll = 1, last = 1477818315.29957
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Current_Sum__A, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i52 => Power_Sum__W, poll = 1, last = 1477818279.06024
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Power_Sum__W
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i56 => Power_Sum__VA, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Power_Sum__VA
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i6 => Current_L1__A, poll = 1, last = 1477818251.37489
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_L1__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i60 => Power_Sum__VAr, poll = 1, last = 1477818021.77768
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_Sum__VAr, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i62 => PowerFactor, poll = 1, last = 1477818066.61901
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip PowerFactor, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i66 => CosPhi__grd, poll = 1, last = 1477818249.20657
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip CosPhi__grd, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i70 => Frequency__Hz, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Frequency__Hz
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i72 => Energy_import__kWh, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_import__kWh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i74 => Energy_export__kWh, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_export__kWh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i76 => Energy_import__kVArh, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_import__kVArh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i78 => Energy_export__kVArh, poll = 1, last = 0
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Energy_export__kVArh
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i8 => Current_L2__A, poll = 1, last = 1477818252.10314
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Current_L2__A
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i80 => Energy_apparent__kVAh, poll = 1, last = 1477818060.08449
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Energy_apparent__kVAh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i82 => Charge__kAh, poll = 1, last = 1477818109.44436
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Charge__kAh, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i84 => Power_Sum_demand__W, poll = 1, last = 1477818348.74494
2016.10.30 10:06:42 4: ModbusZaehler1: GetUpdate will request Power_Sum_demand__W
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate check i86 => Power_Max_demand__W, poll = 1, last = 1477818158.17992
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate will skip Power_Max_demand__W, delay not over
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate tries to combine read commands
2016.10.30 10:06:42 5: ModbusZaehler1: GetUpdate: combine for i is 40


ModbusZaehler2 verbose 5

2016.10.30 10:10:13 5: ModbusZaehler1: UpdateGetSetList full object list: i30 i84 i22 i24 i202 i20 i72 i82 i56 h14 i40 i242 i338 h24 i48 i12 h22 i224 i352 i62 i204 i74 i60 i206 i238 i36 i340 i350 i46 i106 i42 i80 i348 i78 i86 i200 i260 i28 i264 i52 i100 i362 i18 h0 i32 i334 h8 i4 h88 i76 i8 i342 i254 i356 i104 i354 i26 i250 h20 i14 h2 i240 i360 h42 i344 i16 i102 i346 i34 i268 h36 i248 i358 i0 h28 h86 i70 i262 h10 i244 h18 i6 i234 i336 i66 i38 i10 i258 h12 i236 h6 i2 i266
2016.10.30 10:10:13 5: ModbusZaehler1: UpdateSetList: setList=System_Type:1,2,3 System_Pulse_Width__ms:60,100,200 Modbus_Parity_Stop:0,1,2,3 Demand_Period__minutes:0,5,8,10,15,20,30,60 Modbus_Node_adr Pulse_Divisor_1:1,2,3,4,5 System_Password Modbus_Speed__baud:0,1,2,3,4 Relay1_Energy_Type:TotalWh, TotalVArh
2016.10.30 10:10:13 5: ModbusZaehler1: UpdateSetList: getList=Demand_Time__minutes:noArg System_Type:noArg System_Pulse_Width__ms:noArg System_Password_Lock:noArg Modbus_Parity_Stop:noArg Demand_Period__minutes:noArg Modbus_Node_adr:noArg Pulse_Divisor_1:noArg System_Password:noArg Modbus_Speed__baud:noArg System_Power__W:noArg System_Serial_Nr:noArg System_Voltage__V:noArg System_Current__A:noArg Relay1_Energy_Type:noArg Relay2_Energy_Type:noArg Voltage_L1__V:noArg Current_L3__A:noArg Power_Sum_demand__VA:noArg Power_Max_demand__VA:noArg Current_N_demand__A:noArg Current_Max_N_demand__A:noArg Power_L1__W:noArg Power_L2__W:noArg Power_L3__W:noArg Power_L1__VA:noArg Voltage_L2__V:noArg Power_L2__VA:noArg Voltage_L1_to_L2__V:noArg Voltage_L2_to_L3__V:noArg Voltage_L3_to_L1__V:noArg Voltage_Avr_L_to_L__V:noArg Power_L3__VA:noArg Current_N__A:noArg THD_Voltage_L1_N__prz:noArg THD_Voltage_L2_N__prz:noArg THD_Voltage_L3_N__prz:noArg Power_L1__VAr:noArg THD_Current_L1__prz:noArg THD_Current_L2__prz:noArg THD_Current_L3__prz:noArg THD_Voltage_avr_LN__prz:noArg THD_Current_avr__prz:noArg PowerFactor_inverted:noArg Current_L1_demand__A:noArg Power_L2__VAr:noArg Current_L2_demand__A:noArg Current_L3_demand__A:noArg Current_Max_L1_demand__A:noArg Current_Max_L2_demand__A:noArg Current_Max_L3_demand__A:noArg Power_L3__VAr:noArg PowerFactor_L1:noArg PowerFactor_L2:noArg THD_Voltage_L1_L2__prz:noArg THD_Voltage_L2_L3__prz:noArg THD_Voltage_L3_L1__prz:noArg PowerFactor_L3:noArg THD_Voltage_avr_LL__prz:noArg Energy_total__kWh:noArg Energy_total__kVArh:noArg Energy_L1_import__kWh:noArg Energy_L2_import__kWh:noArg Energy_L3_import__kWh:noArg Energy_L1_export__kWh:noArg Energy_L2_export__kWh:noArg Energy_L3_export__kWh:noArg Energy_L1_total__kWh:noArg CosPhi_L1__grd:noArg Energy_L2_total__kWh:noArg Energy_L3_total__kWh:noArg CosPhi_L2__grd:noArg Voltage_L3__V:noArg CosPhi_L3__grd:noArg Voltage_Avr__V:noArg Current_Avr__A:noArg Current_Sum__A:noArg Power_Sum__W:noArg Power_Sum__VA:noArg Current_L1__A:noArg Power_Sum__VAr:noArg PowerFactor:noArg CosPhi__grd:noArg Frequency__Hz:noArg Energy_import__kWh:noArg Energy_export__kWh:noArg Energy_import__kVArh:noArg Energy_export__kVArh:noArg Current_L2__A:noArg Energy_apparent__kVAh:noArg Charge__kAh:noArg Power_Sum_demand__W:noArg Power_Max_demand__W:noArg
2016.10.30 10:10:24 4: ModbusZaehler1: update timer modified: will call GetUpdate in 30.0 seconds at 2016-10-30 10:10:54
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate called
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate objects from attributes:
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate full object list: h0 h10 h12 h14 h18 h2 h20 h22 h24 h28 h36 h42 h6 h8 h86 h88 i0 i10 i100 i102 i104 i106 i12 i14 i16 i18 i2 i20 i200 i202 i204 i206 i22 i224 i234 i236 i238 i24 i240 i242 i244 i248 i250 i254 i258 i26 i260 i262 i264 i266 i268 i28 i30 i32 i334 i336 i338 i34 i340 i342 i344 i346 i348 i350 i352 i354 i356 i358 i36 i360 i362 i38 i4 i40 i42 i46 i48 i52 i56 i6 i60 i62 i66 i70 i72 i74 i76 i78 i8 i80 i82 i84 i86
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h0 => Demand_Time__minutes, poll = once, last = 1477818065.19067
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h10 => System_Type, poll = once, last = 1477818068.04997
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h12 => System_Pulse_Width__ms, poll = once, last = 1477818087.46175
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h14 => System_Password_Lock, poll = once, last = 1477818108.71076
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h18 => Modbus_Parity_Stop, poll = once, last = 1477818129.54769
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h2 => Demand_Period__minutes, poll = once, last = 1477818077.32708
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h20 => Modbus_Node_adr, poll = once, last = 1477818078.03774
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h22 => Pulse_Divisor_1, poll = once, last = 1477818096.83475
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h24 => System_Password, poll = 0, last = 0
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h28 => Modbus_Speed__baud, poll = once, last = 1477818101.97105
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h36 => System_Power__W, poll = once, last = 1477818078.7779
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h42 => System_Serial_Nr, poll = once, last = 1477818105.84611
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h6 => System_Voltage__V, poll = once, last = 1477818070.20603
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h8 => System_Current__A, poll = once, last = 1477818106.55965
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h86 => Relay1_Energy_Type, poll = 0, last = 0
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check h88 => Relay2_Energy_Type, poll = once, last = 1477818071.64334
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i0 => Voltage_L1__V, poll = 1, last = 1477818409.35053
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Voltage_L1__V, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i10 => Current_L3__A, poll = 1, last = 1477818597.96446
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_L3__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i100 => Power_Sum_demand__VA, poll = 1, last = 1477818064.47294
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_Sum_demand__VA, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i102 => Power_Max_demand__VA, poll = 1, last = 1477818105.12367
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_Max_demand__VA, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i104 => Current_N_demand__A, poll = 1, last = 1477818565.87611
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_N_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i106 => Current_Max_N_demand__A, poll = 1, last = 1477818600.11478
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_Max_N_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i12 => Power_L1__W, poll = 1, last = 1477818503.61473
2016.10.30 10:10:24 4: ModbusZaehler1: GetUpdate will request Power_L1__W
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i14 => Power_L2__W, poll = 1, last = 1477818565.16259
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_L2__W, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i16 => Power_L3__W, poll = 1, last = 1477818533.46497
2016.10.30 10:10:24 4: ModbusZaehler1: GetUpdate will request Power_L3__W
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i18 => Power_L1__VA, poll = 1, last = 1477818158.90242
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_L1__VA, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i2 => Voltage_L2__V, poll = 1, last = 1477818410.80193
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Voltage_L2__V, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i20 => Power_L2__VA, poll = 1, last = 1477818602.26461
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_L2__VA, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i200 => Voltage_L1_to_L2__V, poll = 1, last = 1477818063.75476
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Voltage_L1_to_L2__V, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i202 => Voltage_L2_to_L3__V, poll = 1, last = 1477818110.16181
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Voltage_L2_to_L3__V, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i204 => Voltage_L3_to_L1__V, poll = 1, last = 1477818125.94882
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Voltage_L3_to_L1__V, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i206 => Voltage_Avr_L_to_L__V, poll = 1, last = 1477818606.11861
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Voltage_Avr_L_to_L__V, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i22 => Power_L3__VA, poll = 1, last = 1477818603.88671
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_L3__VA, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i224 => Current_N__A, poll = 1, last = 1477818504.33429
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_N__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i234 => THD_Voltage_L1_N__prz, poll = 1, last = 1477818216.02064
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L1_N__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i236 => THD_Voltage_L2_N__prz, poll = 1, last = 1477818249.93224
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L2_N__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i238 => THD_Voltage_L3_N__prz, poll = 1, last = 1477818280.50456
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L3_N__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i24 => Power_L1__VAr, poll = 1, last = 1477818023.91986
2016.10.30 10:10:24 4: ModbusZaehler1: GetUpdate will request Power_L1__VAr
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i240 => THD_Current_L1__prz, poll = 1, last = 1477818074.50338
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Current_L1__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i242 => THD_Current_L2__prz, poll = 1, last = 1477818107.27486
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Current_L2__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i244 => THD_Current_L3__prz, poll = 1, last = 1477818128.82017
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Current_L3__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i248 => THD_Voltage_avr_LN__prz, poll = 1, last = 1477818155.30727
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_avr_LN__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i250 => THD_Current_avr__prz, poll = 1, last = 1477818316.72788
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Current_avr__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i254 => PowerFactor_inverted, poll = 1, last = 1477818374.68262
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip PowerFactor_inverted, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i258 => Current_L1_demand__A, poll = 1, last = 1477818411.52216
2016.10.30 10:10:24 4: ModbusZaehler1: GetUpdate will request Current_L1_demand__A
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i26 => Power_L2__VAr, poll = 1, last = 1477818073.78018
2016.10.30 10:10:24 4: ModbusZaehler1: GetUpdate will request Power_L2__VAr
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i260 => Current_L2_demand__A, poll = 1, last = 1477818437.77649
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_L2_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i262 => Current_L3_demand__A, poll = 1, last = 1477818468.75391
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_L3_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i264 => Current_Max_L1_demand__A, poll = 1, last = 1477818600.82853
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_Max_L1_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i266 => Current_Max_L2_demand__A, poll = 1, last = 1477818347.32014
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_Max_L2_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i268 => Current_Max_L3_demand__A, poll = 1, last = 1477818505.7569
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Current_Max_L3_demand__A, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i28 => Power_L3__VAr, poll = 1, last = 1477818601.55496
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip Power_L3__VAr, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i30 => PowerFactor_L1, poll = 1, last = 1477818110.87521
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip PowerFactor_L1, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i32 => PowerFactor_L2, poll = 1, last = 1477818127.38467
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip PowerFactor_L2, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i334 => THD_Voltage_L1_L2__prz, poll = 1, last = 1477818065.9055
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L1_L2__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i336 => THD_Voltage_L2_L3__prz, poll = 1, last = 1477818101.25656
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L2_L3__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i338 => THD_Voltage_L3_L1__prz, poll = 1, last = 1477818124.53253
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_L3_L1__prz, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i34 => PowerFactor_L3, poll = 1, last = 1477818079.48343
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip PowerFactor_L3, delay not over
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate check i340 => THD_Voltage_avr_LL__prz, poll = 1, last = 1477818058.65034
2016.10.30 10:10:24 5: ModbusZaehler1: GetUpdate will skip THD_Voltage_avr_LL__prz, delay not over


und noch jeweils ein list

HA_Modbus_1
Internals:
   BUSY       0
   CFGFN      /opt/fhem/FHEM/ModbusRTU.cfg
   DEF        /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0@19200,8,E,1
   DeviceName /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0@19200,8,E,1
   FD         12
   NAME       HA_Modbus_1
   NR         50
   PARTIAL
   RAWBUFFER
   REQUESTHEX 010400ca0018d03e
   STATE      opened
   TYPE       Modbus
   QUEUE:
   Readings:
     2016-10-30 09:59:48   state           opened
   Defptr:
     1:
     2:
   Helper:
     buffer
     lid        1
     lrecv      1477818695.53956
     lsend      1477818695.53642
Attributes:
   room       Modbus


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 30 Oktober 2016, 10:31:15
ModbusZaehler1

Internals:
   DEF        1 30
   DEST
   INTERVAL   30
   IODev      HA_Modbus_1
   MODBUSID   1
   ModuleVersion 3.3.1 - 18.7.2016
   NAME       ModbusZaehler1
   NR         81
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1477819818.56589
   TRIGGERTIME_FMT 2016-10-30 10:30:18
   TYPE       ModbusSDM630M
   Helper:
     Dblog:
       Charge__kah:
         Dblogging:
           TIME       1477819764.71221
           VALUE      0.000
       Cosphi_l1__grd:
         Dblogging:
           TIME       1477819448.35126
           VALUE      0.0
       Cosphi_l2__grd:
         Dblogging:
           TIME       1477819512.00415
           VALUE      0.0
       Cosphi_l3__grd:
         Dblogging:
           TIME       1477819537.61997
           VALUE      0.0
       Cosphi__grd:
         Dblogging:
           TIME       1477819350.74958
           VALUE      0.0
       Current_avr__a:
         Dblogging:
           TIME       1477819797.45249
           VALUE      0.0
       Current_l1__a:
         Dblogging:
           TIME       1477819698.13302
           VALUE      0.00
       Current_l1_demand__a:
         Dblogging:
           TIME       1477819795.30966
           VALUE      0.00
       Current_l2__a:
         Dblogging:
           TIME       1477819762.54821
           VALUE      0.00
       Current_l2_demand__a:
         Dblogging:
           TIME       1477819635.81899
           VALUE      0.00
       Current_l3__a:
         Dblogging:
           TIME       1477819636.5411
           VALUE      0.00
       Current_l3_demand__a:
         Dblogging:
           TIME       1477819698.86078
           VALUE      0.00
       Current_max_l1_demand__a:
         Dblogging:
           TIME       1477819509.85536
           VALUE      0.00
       Current_max_l2_demand__a:
         Dblogging:
           TIME       1477819386.70549
           VALUE      0.00
       Current_max_l3_demand__a:
         Dblogging:
           TIME       1477819539.77059
           VALUE      0.00
       Current_max_n_demand__a:
         Dblogging:
           TIME       1477819479.61379
           VALUE      0.00
       Current_n__a:
         Dblogging:
           TIME       1477819697.41941
           VALUE      0.00
       Current_n_demand__a:
         Dblogging:
           TIME       1477819663.59991
           VALUE      0.00
       Current_sum__a:
         Dblogging:
           TIME       1477819635.10551
           VALUE      0.00
       Demand_period__minutes:
         Dblogging:
           TIME       1477818077.32909
           VALUE      0
       Demand_time__minutes:
         Dblogging:
           TIME       1477818065.19184
           VALUE      0
       Energy_l1_export__kwh:
         Dblogging:
           TIME       1477819573.54466
           VALUE      0.000
       Energy_l1_import__kwh:
         Dblogging:
           TIME       1477819453.36756
           VALUE      0.000
       Energy_l1_total__kwh:
         Dblogging:
           TIME       1477819540.48705
           VALUE      0.000
       Energy_l2_export__kwh:
         Dblogging:
           TIME       1477819793.16398
           VALUE      0.000
       Energy_l2_import__kwh:
         Dblogging:
           TIME       1477819480.33698
           VALUE      0.000
       Energy_l2_total__kwh:
         Dblogging:
           TIME       1477819452.649
           VALUE      0.000
       Energy_l3_export__kwh:
         Dblogging:
           TIME       1477819414.52434
           VALUE      0.000
       Energy_l3_import__kwh:
         Dblogging:
           TIME       1477819510.57029
           VALUE      0.000
       Energy_l3_total__kwh:
         Dblogging:
           TIME       1477819604.15075
           VALUE      0.000
       Energy_apparent__kvah:
         Dblogging:
           TIME       1477819264.33987
           VALUE      0.000
       Energy_export__kvarh:
         Dblogging:
           TIME       1477818786.99845
           VALUE      0.000
       Energy_export__kwh:
         Dblogging:
           TIME       1477818975.32234
           VALUE      0.000
       Energy_import__kwh:
         Dblogging:
           TIME       1477819007.68034
           VALUE      0.000
       Energy_total__kvarh:
         Dblogging:
           TIME       1477819349.31971
           VALUE      0.000
       Energy_total__kwh:
         Dblogging:
           TIME       1477819662.88618
           VALUE      0.000
       Frequency__hz:
         Dblogging:
           TIME       1477819699.60081
           VALUE      0.0
       Modbus_node_adr:
         Dblogging:
           TIME       1477818078.03885
           VALUE      0
       Powerfactor:
         Dblogging:
           TIME       1477819039.89611
           VALUE      0.0
       Powerfactor_l1:
         Dblogging:
           TIME       1477819006.97502
           VALUE      0.0
       Powerfactor_l2:
         Dblogging:
           TIME       1477819072.84725
           VALUE      0.0
       Powerfactor_l3:
         Dblogging:
           TIME       1477818977.48805
           VALUE      0.0
       Powerfactor_inverted:
         Dblogging:
           TIME       1477819323.03839
           VALUE      0.0
       Power_l1__va:
         Dblogging:
           TIME       1477819262.16654
           VALUE      0.0
       Power_l1__var:
         Dblogging:
           TIME       1477819200.57411
           VALUE      0.0
       Power_l1__w:
         Dblogging:
           TIME       1477819763.99892
           VALUE      0
       Power_l2__va:
         Dblogging:
           TIME       1477819383.8434
           VALUE      0.0
       Power_l2__var:
         Dblogging:
           TIME       1477819701.0325
           VALUE      0.0
       Power_l2__w:
         Dblogging:
           TIME       1477819700.32101
           VALUE      0
       Power_l3__va:
         Dblogging:
           TIME       1477819796.02909
           VALUE      0.0
       Power_l3__var:
         Dblogging:
           TIME       1477819696.701
           VALUE      0.0
       Power_l3__w:
         Dblogging:
           TIME       1477819734.47876
           VALUE      0
       Power_max_demand__va:
         Dblogging:
           TIME       1477819289.88605
           VALUE      0.0
       Power_max_demand__w:
         Dblogging:
           TIME       1477819602.72351
           VALUE      0.0
       Power_sum__va:
         Dblogging:
           TIME       1477819733.74873
           VALUE      0.0
       Power_sum__var:
         Dblogging:
           TIME       1477819199.86494
           VALUE      0.0
       Power_sum__w:
         Dblogging:
           TIME       1477819763.27205
           VALUE      0.0
       Power_sum_demand__va:
         Dblogging:
           TIME       1477819262.88461
           VALUE      0.0
       Power_sum_demand__w:
         Dblogging:
           TIME       1477819572.82166
           VALUE      0.0
       System_current__a:
         Dblogging:
           TIME       1477818106.56085
           VALUE      0.00
       System_power__w:
         Dblogging:
           TIME       1477818078.7792
           VALUE      0
       System_pulse_width__ms:
         Dblogging:
           TIME       1477818087.46309
           VALUE      0
       System_voltage__v:
         Dblogging:
           TIME       1477818070.20717
           VALUE      0.0
       Thd_current_l1__prz:
         Dblogging:
           TIME       1477819197.71256
           VALUE      0.0
       Thd_current_l2__prz:
         Dblogging:
           TIME       1477819260.7439
           VALUE      0.0
       Thd_current_l3__prz:
         Dblogging:
           TIME       1477819289.16124
           VALUE      0.0
       Thd_current_avr__prz:
         Dblogging:
           TIME       1477819451.20874
           VALUE      0.0
       Thd_voltage_l1_l2__prz:
         Dblogging:
           TIME       1477819198.42632
           VALUE      0.0
       Thd_voltage_l1_n__prz:
         Dblogging:
           TIME       1477819165.80294
           VALUE      0.0
       Thd_voltage_l2_l3__prz:
         Dblogging:
           TIME       1477819229.52467
           VALUE      0.0
       Thd_voltage_l2_n__prz:
         Dblogging:
           TIME       1477819195.55805
           VALUE      0.0
       Thd_voltage_l3_l1__prz:
         Dblogging:
           TIME       1477819260.02824
           VALUE      0.0
       Thd_voltage_l3_n__prz:
         Dblogging:
           TIME       1477819231.67202
           VALUE      0.0
       Thd_voltage_avr_ll__prz:
         Dblogging:
           TIME       1477819290.60249
           VALUE      0.0
       Thd_voltage_avr_ln__prz:
         Dblogging:
           TIME       1477819135.23847
           VALUE      0.0
       Voltage_avr_l_to_l__v:
         Dblogging:
           TIME       1477819796.73897
           VALUE      0.0
       Voltage_avr__v:
         Dblogging:
           TIME       1477819572.10754
           VALUE      0.0
       Voltage_l1__v:
         Dblogging:
           TIME       1477819793.88214
           VALUE      0.0
       Voltage_l1_to_l2__v:
         Dblogging:
           TIME       1477819263.62096
           VALUE      0.0
       Voltage_l2__v:
         Dblogging:
           TIME       1477819794.59626
           VALUE      0.0
       Voltage_l2_to_l3__v:
         Dblogging:
           TIME       1477819292.77092
           VALUE      0.0
       Voltage_l3__v:
         Dblogging:
           TIME       1477819792.44442
           VALUE      0.0
       Voltage_l3_to_l1__v:
         Dblogging:
           TIME       1477819320.89863
           VALUE      0.0
       State:
         Dblogging:
           TIME       1477818129.54986
           VALUE      Modbus_Parity_Stop:
   Readings:
     2016-10-30 10:29:24   Charge__kAh     0.000
     2016-10-30 10:24:08   CosPhi_L1__grd  0.0
     2016-10-30 10:25:12   CosPhi_L2__grd  0.0
     2016-10-30 10:25:37   CosPhi_L3__grd  0.0
     2016-10-30 10:22:30   CosPhi__grd     0.0
     2016-10-30 10:29:57   Current_Avr__A  0.0
     2016-10-30 10:28:18   Current_L1__A   0.00
     2016-10-30 10:29:55   Current_L1_demand__A 0.00
     2016-10-30 10:29:22   Current_L2__A   0.00
     2016-10-30 10:27:15   Current_L2_demand__A 0.00
     2016-10-30 10:27:16   Current_L3__A   0.00
     2016-10-30 10:28:18   Current_L3_demand__A 0.00
     2016-10-30 10:25:09   Current_Max_L1_demand__A 0.00
     2016-10-30 10:23:06   Current_Max_L2_demand__A 0.00
     2016-10-30 10:25:39   Current_Max_L3_demand__A 0.00
     2016-10-30 10:24:39   Current_Max_N_demand__A 0.00
     2016-10-30 10:28:17   Current_N__A    0.00
     2016-10-30 10:27:43   Current_N_demand__A 0.00
     2016-10-30 10:27:15   Current_Sum__A  0.00
     2016-10-30 10:01:17   Demand_Period__minutes 0
     2016-10-30 10:01:05   Demand_Time__minutes 0
     2016-10-30 10:26:13   Energy_L1_export__kWh 0.000
     2016-10-30 10:24:13   Energy_L1_import__kWh 0.000
     2016-10-30 10:25:40   Energy_L1_total__kWh 0.000
     2016-10-30 10:29:53   Energy_L2_export__kWh 0.000
     2016-10-30 10:24:40   Energy_L2_import__kWh 0.000
     2016-10-30 10:24:12   Energy_L2_total__kWh 0.000
     2016-10-30 10:23:34   Energy_L3_export__kWh 0.000
     2016-10-30 10:25:10   Energy_L3_import__kWh 0.000
     2016-10-30 10:26:44   Energy_L3_total__kWh 0.000
     2016-10-30 10:21:04   Energy_apparent__kVAh 0.000
     2016-10-30 10:13:06   Energy_export__kVArh 0.000
     2016-10-30 10:16:15   Energy_export__kWh 0.000
     2016-10-30 10:16:47   Energy_import__kWh 0.000
     2016-10-30 10:22:29   Energy_total__kVArh 0.000
     2016-10-30 10:27:42   Energy_total__kWh 0.000
     2016-10-30 10:28:19   Frequency__Hz   0.0
     2016-10-30 10:01:18   Modbus_Node_adr 0
     2016-10-30 10:02:09   Modbus_Parity_Stop
     2016-10-30 10:01:41   Modbus_Speed__baud
     2016-10-30 10:17:19   PowerFactor     0.0
     2016-10-30 10:16:46   PowerFactor_L1  0.0
     2016-10-30 10:17:52   PowerFactor_L2  0.0
     2016-10-30 10:16:17   PowerFactor_L3  0.0
     2016-10-30 10:22:03   PowerFactor_inverted 0.0
     2016-10-30 10:21:02   Power_L1__VA    0.0
     2016-10-30 10:20:00   Power_L1__VAr   0.0
     2016-10-30 10:29:23   Power_L1__W     0
     2016-10-30 10:23:03   Power_L2__VA    0.0
     2016-10-30 10:28:21   Power_L2__VAr   0.0
     2016-10-30 10:28:20   Power_L2__W     0
     2016-10-30 10:29:56   Power_L3__VA    0.0
     2016-10-30 10:28:16   Power_L3__VAr   0.0
     2016-10-30 10:28:54   Power_L3__W     0
     2016-10-30 10:21:29   Power_Max_demand__VA 0.0
     2016-10-30 10:26:42   Power_Max_demand__W 0.0
     2016-10-30 10:28:53   Power_Sum__VA   0.0
     2016-10-30 10:19:59   Power_Sum__VAr  0.0
     2016-10-30 10:29:23   Power_Sum__W    0.0
     2016-10-30 10:21:02   Power_Sum_demand__VA 0.0
     2016-10-30 10:26:12   Power_Sum_demand__W 0.0
     2016-10-30 10:01:36   Pulse_Divisor_1
     2016-10-30 10:01:11   Relay2_Energy_Type
     2016-10-30 10:01:46   System_Current__A 0.00
     2016-10-30 10:01:48   System_Password_Lock
     2016-10-30 10:01:18   System_Power__W 0
     2016-10-30 10:01:27   System_Pulse_Width__ms 0
     2016-10-30 10:01:45   System_Serial_Nr
     2016-10-30 10:01:08   System_Type
     2016-10-30 10:01:10   System_Voltage__V 0.0
     2016-10-30 10:19:57   THD_Current_L1__prz 0.0
     2016-10-30 10:21:00   THD_Current_L2__prz 0.0
     2016-10-30 10:21:29   THD_Current_L3__prz 0.0
     2016-10-30 10:24:11   THD_Current_avr__prz 0.0
     2016-10-30 10:19:58   THD_Voltage_L1_L2__prz 0.0
     2016-10-30 10:19:25   THD_Voltage_L1_N__prz 0.0
     2016-10-30 10:20:29   THD_Voltage_L2_L3__prz 0.0
     2016-10-30 10:19:55   THD_Voltage_L2_N__prz 0.0
     2016-10-30 10:21:00   THD_Voltage_L3_L1__prz 0.0
     2016-10-30 10:20:31   THD_Voltage_L3_N__prz 0.0
     2016-10-30 10:21:30   THD_Voltage_avr_LL__prz 0.0
     2016-10-30 10:18:55   THD_Voltage_avr_LN__prz 0.0
     2016-10-30 10:29:56   Voltage_Avr_L_to_L__V 0.0
     2016-10-30 10:26:12   Voltage_Avr__V  0.0
     2016-10-30 10:29:53   Voltage_L1__V   0.0
     2016-10-30 10:21:03   Voltage_L1_to_L2__V 0.0
     2016-10-30 10:29:54   Voltage_L2__V   0.0
     2016-10-30 10:21:32   Voltage_L2_to_L3__V 0.0
     2016-10-30 10:29:52   Voltage_L3__V   0.0
     2016-10-30 10:22:00   Voltage_L3_to_L1__V 0.0
   Gotreadings:
     Charge__kAh 0.000
     CosPhi_L1__grd 0.0
     CosPhi_L2__grd 0.0
     CosPhi_L3__grd 0.0
     CosPhi__grd 0.0
     Current_Avr__A 0.0
     Current_L1__A 0.00
     Current_L1_demand__A 0.00
     Current_L2__A 0.00
     Current_L2_demand__A 0.00
     Current_L3__A 0.00
     Current_L3_demand__A 0.00
     Current_Max_L1_demand__A 0.00
     Current_Max_L2_demand__A 0.00
     Current_Max_L3_demand__A 0.00
     Current_Max_N_demand__A 0.00
     Current_N__A 0.00
     Current_N_demand__A 0.00
     Current_Sum__A 0.00
     Demand_Period__minutes 0
     Demand_Time__minutes 0
     Energy_L1_export__kWh 0.000
     Energy_L1_import__kWh 0.000
     Energy_L1_total__kWh 0.000
     Energy_L2_export__kWh 0.000
     Energy_L2_import__kWh 0.000
     Energy_L2_total__kWh 0.000
     Energy_L3_export__kWh 0.000
     Energy_L3_import__kWh 0.000
     Energy_L3_total__kWh 0.000
     Energy_apparent__kVAh 0.000
     Energy_export__kVArh 0.000
     Energy_export__kWh 0.000
     Energy_import__kWh 0.000
     Energy_total__kVArh 0.000
     Energy_total__kWh 0.000
     Frequency__Hz 0.0
     Modbus_Node_adr 0
     Modbus_Parity_Stop
     Modbus_Speed__baud
     PowerFactor 0.0
     PowerFactor_L1 0.0
     PowerFactor_L2 0.0
     PowerFactor_L3 0.0
     PowerFactor_inverted 0.0
     Power_L1__VA 0.0
     Power_L1__VAr 0.0
     Power_L1__W 0
     Power_L2__VA 0.0
     Power_L2__VAr 0.0
     Power_L2__W 0
     Power_L3__VA 0.0
     Power_L3__VAr 0.0
     Power_L3__W 0
     Power_Max_demand__VA 0.0
     Power_Max_demand__W 0.0
     Power_Sum__VA 0.0
     Power_Sum__VAr 0.0
     Power_Sum__W 0.0
     Power_Sum_demand__VA 0.0
     Power_Sum_demand__W 0.0
     Pulse_Divisor_1
     Relay2_Energy_Type
     System_Current__A 0.00
     System_Password_Lock
     System_Power__W 0
     System_Pulse_Width__ms 0
     System_Serial_Nr
     System_Type
     System_Voltage__V 0.0
     THD_Current_L1__prz 0.0
     THD_Current_L2__prz 0.0
     THD_Current_L3__prz 0.0
     THD_Current_avr__prz 0.0
     THD_Voltage_L1_L2__prz 0.0
     THD_Voltage_L1_N__prz 0.0
     THD_Voltage_L2_L3__prz 0.0
     THD_Voltage_L2_N__prz 0.0
     THD_Voltage_L3_L1__prz 0.0
     THD_Voltage_L3_N__prz 0.0
     THD_Voltage_avr_LL__prz 0.0
     THD_Voltage_avr_LN__prz 0.0
     Voltage_Avr_L_to_L__V 0.0
     Voltage_Avr__V 0.0
     Voltage_L1__V 0.0
     Voltage_L1_to_L2__V 0.0
     Voltage_L2__V 0.0
     Voltage_L2_to_L3__V 0.0
     Voltage_L3__V 0.0
     Voltage_L3_to_L1__V 0.0
   Helper:
     lrecv      1477819797.44846
     lsend      1477819797.44186
   Lastread:
     h0         1477818065.19067
     h10        1477818068.04997
     h12        1477818087.46175
     h14        1477818108.71076
     h18        1477818129.54769
     h2         1477818077.32708
     h20        1477818078.03774
     h22        1477818096.83475
     h28        1477818101.97105
     h36        1477818078.7779
     h42        1477818105.84611
     h6         1477818070.20603
     h8         1477818106.55965
     h88        1477818071.64334
     i0         1477819793.8805
     i10        1477819636.5399
     i100       1477819262.88334
     i102       1477819289.8807
     i104       1477819663.59867
     i106       1477819479.60821
     i12        1477819763.993
     i14        1477819700.31974
     i16        1477819734.47152
     i18        1477819262.16538
     i2         1477819794.5951
     i20        1477819383.84226
     i200       1477819263.61882
     i202       1477819292.76437
     i204       1477819320.89762
     i206       1477819796.73774
     i22        1477819796.0279
     i224       1477819697.41824
     i234       1477819165.80173
     i236       1477819195.55681
     i238       1477819231.6708
     i24        1477819200.57283
     i240       1477819197.71142
     i242       1477819260.74269
     i244       1477819289.16
     i248       1477819135.23731
     i250       1477819451.2076
     i254       1477819323.03696
     i258       1477819795.3084
     i26        1477819701.03128
     i260       1477819635.81767
     i262       1477819698.85877
     i264       1477819509.8542
     i266       1477819386.70416
     i268       1477819539.76753
     i28        1477819696.70006
     i30        1477819006.97359
     i32        1477819072.84612
     i334       1477819198.42499
     i336       1477819229.52344
     i338       1477819260.02696
     i34        1477818977.48604
     i340       1477819290.60064
     i342       1477819662.88053
     i344       1477819349.31857
     i346       1477819453.36637
     i348       1477819480.33493
     i350       1477819510.56903
     i352       1477819573.54336
     i354       1477819793.15697
     i356       1477819414.52314
     i358       1477819540.48575
     i36        1477819448.34886
     i360       1477819452.64787
     i362       1477819604.14958
     i38        1477819512.003
     i4         1477819792.44325
     i40        1477819537.61881
     i42        1477819572.10631
     i46        1477819797.45129
     i48        1477819635.10408
     i52        1477819763.27084
     i56        1477819733.74754
     i6         1477819698.13187
     i60        1477819199.86374
     i62        1477819039.89492
     i66        1477819350.74832
     i70        1477819699.59872
     i72        1477819007.67915
     i74        1477818975.32089
     i78        1477818786.99691
     i8         1477819762.54707
     i80        1477819264.32876
     i82        1477819764.711
     i84        1477819572.82039
     i86        1477819602.72208
Attributes:
   IODev      HA_Modbus_1
   room       Modbus
   userattr   1 IODev verbose


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 30 Oktober 2016, 10:36:10
Hallo der-Lolo,

kannst du nur einen Zähler richtig abfragen ? Du fragst alle 30 sec ab, vielleicht mal auf 60 sec verändern. Die Zeitabstände zwischen den Übertragungen ist vielleicht zu kurz.
Kannst du Daten der Geräte über modbuspoll.exe abfragen. siehe einmal  hier (https://forum.fhem.de/index.php/topic,54619.msg462453.html#msg462453)
In der Beschreibung zum SDM630M steht, das ein Symbol (Telefonhörer) die Datenübertragung anzeigt. Wird es angezeigt ?

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 30 Oktober 2016, 10:37:44
ModbusZaehler2


Internals:
   DEF        2 30
   DEST
   INTERVAL   30
   IODev      HA_Modbus_1
   MODBUSID   2
   ModuleVersion 3.3.1 - 18.7.2016
   NAME       ModbusZaehler2
   NR         80
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1477820166.02507
   TRIGGERTIME_FMT 2016-10-30 10:36:06
   TYPE       ModbusSDM630M
   Helper:
     Dblog:
       Charge__kah:
         Dblogging:
           TIME       1477819977.80957
           VALUE      0.000
       Cosphi_l1__grd:
         Dblogging:
           TIME       1477819446.07156
           VALUE      0.0
       Cosphi_l2__grd:
         Dblogging:
           TIME       1477820103.09215
           VALUE      0.0
       Cosphi_l3__grd:
         Dblogging:
           TIME       1477820138.34693
           VALUE      0.0
       Cosphi__grd:
         Dblogging:
           TIME       1477819413.73163
           VALUE      0.0
       Current_avr__a:
         Dblogging:
           TIME       1477820010.94437
           VALUE      0.0
       Current_l1__a:
         Dblogging:
           TIME       1477820040.12269
           VALUE      0.00
       Current_l1_demand__a:
         Dblogging:
           TIME       1477819947.19068
           VALUE      0.00
       Current_l2__a:
         Dblogging:
           TIME       1477820073.1919
           VALUE      0.00
       Current_l2_demand__a:
         Dblogging:
           TIME       1477820104.51249
           VALUE      0.00
       Current_l3__a:
         Dblogging:
           TIME       1477820103.80036
           VALUE      0.00
       Current_l3_demand__a:
         Dblogging:
           TIME       1477819851.82869
           VALUE      0.00
       Current_max_l1_demand__a:
         Dblogging:
           TIME       1477819761.78308
           VALUE      0.00
       Current_max_l2_demand__a:
         Dblogging:
           TIME       1477819884.90056
           VALUE      0.00
       Current_max_l3_demand__a:
         Dblogging:
           TIME       1477819916.98144
           VALUE      0.00
       Current_max_n_demand__a:
         Dblogging:
           TIME       1477819725.8165
           VALUE      0.00
       Current_n__a:
         Dblogging:
           TIME       1477820043.73468
           VALUE      0.00
       Current_n_demand__a:
         Dblogging:
           TIME       1477820139.07476
           VALUE      0.00
       Current_sum__a:
         Dblogging:
           TIME       1477820042.30068
           VALUE      0.00
       Demand_period__minutes:
         Dblogging:
           TIME       1477818002.48658
           VALUE      0
       Demand_time__minutes:
         Dblogging:
           TIME       1477818007.77303
           VALUE      0
       Energy_l1_export__kwh:
         Dblogging:
           TIME       1477819914.12221
           VALUE      0.000
       Energy_l1_import__kwh:
         Dblogging:
           TIME       1477819788.8181
           VALUE      0.000
       Energy_l1_total__kwh:
         Dblogging:
           TIME       1477819978.53484
           VALUE      0.000
       Energy_l2_export__kwh:
         Dblogging:
           TIME       1477820139.78058
           VALUE      0.000
       Energy_l2_import__kwh:
         Dblogging:
           TIME       1477819854.70135
           VALUE      0.000
       Energy_l2_total__kwh:
         Dblogging:
           TIME       1477820013.07286
           VALUE      0.000
       Energy_l3_export__kwh:
         Dblogging:
           TIME       1477819759.64014
           VALUE      0.000
       Energy_l3_import__kwh:
         Dblogging:
           TIME       1477819889.20442
           VALUE      0.000
       Energy_l3_total__kwh:
         Dblogging:
           TIME       1477820041.58378
           VALUE      0.000
       Energy_apparent__kvah:
         Dblogging:
           TIME       1477819916.27204
           VALUE      0.000
       Energy_export__kvarh:
         Dblogging:
           TIME       1477820105.23943
           VALUE      0.000
       Energy_export__kwh:
         Dblogging:
           TIME       1477818876.64816
           VALUE      0.000
       Energy_import__kwh:
         Dblogging:
           TIME       1477819696.62282
           VALUE      0.000
       Energy_total__kvarh:
         Dblogging:
           TIME       1477819823.32497
           VALUE      0.000
       Energy_total__kwh:
         Dblogging:
           TIME       1477819948.12025
           VALUE      0.000
       Frequency__hz:
         Dblogging:
           TIME       1477819731.54887
           VALUE      0.0
       Modbus_node_adr:
         Dblogging:
           TIME       1477818003.20077
           VALUE      0
       Powerfactor:
         Dblogging:
           TIME       1477820043.01067
           VALUE      0.0
       Powerfactor_l1:
         Dblogging:
           TIME       1477819853.27212
           VALUE      0.0
       Powerfactor_l2:
         Dblogging:
           TIME       1477819888.48346
           VALUE      0.0
       Powerfactor_l3:
         Dblogging:
           TIME       1477819758.20145
           VALUE      0.0
       Powerfactor_inverted:
         Dblogging:
           TIME       1477819254.19235
           VALUE      0.0
       Power_l1__va:
         Dblogging:
           TIME       1477819227.32264
           VALUE      0.0
       Power_l1__var:
         Dblogging:
           TIME       1477819789.52201
           VALUE      0.0
       Power_l1__w:
         Dblogging:
           TIME       1477820137.63416
           VALUE      0
       Power_l2__var:
         Dblogging:
           TIME       1477819635.0447
           VALUE      0.0
       Power_l2__w:
         Dblogging:
           TIME       1477819979.97031
           VALUE      0
       Power_l3__va:
         Dblogging:
           TIME       1477819728.68005
           VALUE      0.0
       Power_l3__var:
         Dblogging:
           TIME       1477819725.09871
           VALUE      0.0
       Power_l3__w:
         Dblogging:
           TIME       1477820040.83604
           VALUE      0
       Power_max_demand__va:
         Dblogging:
           TIME       1477819824.05132
           VALUE      0.0
       Power_max_demand__w:
         Dblogging:
           TIME       1477820010.18094
           VALUE      0.0
       Power_sum__va:
         Dblogging:
           TIME       1477819662.11499
           VALUE      0.0
       Power_sum__var:
         Dblogging:
           TIME       1477819886.33623
           VALUE      0.0
       Power_sum__w:
         Dblogging:
           TIME       1477820077.51195
           VALUE      0.0
       Power_sum_demand__va:
         Dblogging:
           TIME       1477819792.3918
           VALUE      0.0
       Power_sum_demand__w:
         Dblogging:
           TIME       1477820136.91369
           VALUE      0.0
       System_current__a:
         Dblogging:
           TIME       1477818085.9872
           VALUE      0.00
       System_power__w:
         Dblogging:
           TIME       1477817999.6306
           VALUE      0
       System_pulse_width__ms:
         Dblogging:
           TIME       1477818051.04022
           VALUE      0
       System_voltage__v:
         Dblogging:
           TIME       1477817995.30231
           VALUE      0.0
       Thd_current_l1__prz:
         Dblogging:
           TIME       1477819132.31442
           VALUE      0.0
       Thd_current_l2__prz:
         Dblogging:
           TIME       1477819160.73672
           VALUE      0.0
       Thd_current_l3__prz:
         Dblogging:
           TIME       1477819221.80984
           VALUE      0.0
       Thd_current_avr__prz:
         Dblogging:
           TIME       1477819380.90866
           VALUE      0.0
       Thd_voltage_l1_l2__prz:
         Dblogging:
           TIME       1477819130.11162
           VALUE      0.0
       Thd_voltage_l1_n__prz:
         Dblogging:
           TIME       1477820012.36362
           VALUE      0.0
       Thd_voltage_l2_l3__prz:
         Dblogging:
           TIME       1477819191.20426
           VALUE      0.0
       Thd_voltage_l2_n__prz:
         Dblogging:
           TIME       1477820076.09263
           VALUE      0.0
       Thd_voltage_l3_l1__prz:
         Dblogging:
           TIME       1477819223.27004
           VALUE      0.0
       Thd_voltage_l3_n__prz:
         Dblogging:
           TIME       1477820136.19792
           VALUE      0.0
       Thd_voltage_avr_ll__prz:
         Dblogging:
           TIME       1477819158.57869
           VALUE      0.0
       Thd_voltage_avr_ln__prz:
         Dblogging:
           TIME       1477819979.26016
           VALUE      0.0
       Voltage_avr_l_to_l__v:
         Dblogging:
           TIME       1477819950.27259
           VALUE      0.0
       Voltage_avr__v:
         Dblogging:
           TIME       1477819977.08207
           VALUE      0.0
       Voltage_l1__v:
         Dblogging:
           TIME       1477820074.66575
           VALUE      0.0
       Voltage_l1_to_l2__v:
         Dblogging:
           TIME       1477819790.955
           VALUE      0.0
       Voltage_l2__v:
         Dblogging:
           TIME       1477820075.37184
           VALUE      0.0
       Voltage_l2_to_l3__v:
         Dblogging:
           TIME       1477819821.92101
           VALUE      0.0
       Voltage_l3__v:
         Dblogging:
           TIME       1477820073.90816
           VALUE      0.0
       Voltage_l3_to_l1__v:
         Dblogging:
           TIME       1477819852.54313
           VALUE      0.0
       State:
         Dblogging:
           TIME       1477818101.19708
           VALUE      Modbus_Parity_Stop:
   Readings:
     2016-10-30 10:32:57   Charge__kAh     0.000
     2016-10-30 10:24:06   CosPhi_L1__grd  0.0
     2016-10-30 10:35:03   CosPhi_L2__grd  0.0
     2016-10-30 10:35:38   CosPhi_L3__grd  0.0
     2016-10-30 10:23:33   CosPhi__grd     0.0
     2016-10-30 10:33:30   Current_Avr__A  0.0
     2016-10-30 10:34:00   Current_L1__A   0.00
     2016-10-30 10:32:27   Current_L1_demand__A 0.00
     2016-10-30 10:34:33   Current_L2__A   0.00
     2016-10-30 10:35:04   Current_L2_demand__A 0.00
     2016-10-30 10:35:03   Current_L3__A   0.00
     2016-10-30 10:30:51   Current_L3_demand__A 0.00
     2016-10-30 10:29:21   Current_Max_L1_demand__A 0.00
     2016-10-30 10:31:24   Current_Max_L2_demand__A 0.00
     2016-10-30 10:31:56   Current_Max_L3_demand__A 0.00
     2016-10-30 10:28:45   Current_Max_N_demand__A 0.00
     2016-10-30 10:34:03   Current_N__A    0.00
     2016-10-30 10:35:39   Current_N_demand__A 0.00
     2016-10-30 10:34:02   Current_Sum__A  0.00
     2016-10-30 10:00:02   Demand_Period__minutes 0
     2016-10-30 10:00:07   Demand_Time__minutes 0
     2016-10-30 10:31:54   Energy_L1_export__kWh 0.000
     2016-10-30 10:29:48   Energy_L1_import__kWh 0.000
     2016-10-30 10:32:58   Energy_L1_total__kWh 0.000
     2016-10-30 10:35:39   Energy_L2_export__kWh 0.000
     2016-10-30 10:30:54   Energy_L2_import__kWh 0.000
     2016-10-30 10:33:33   Energy_L2_total__kWh 0.000
     2016-10-30 10:29:19   Energy_L3_export__kWh 0.000
     2016-10-30 10:31:29   Energy_L3_import__kWh 0.000
     2016-10-30 10:34:01   Energy_L3_total__kWh 0.000
     2016-10-30 10:31:56   Energy_apparent__kVAh 0.000
     2016-10-30 10:35:05   Energy_export__kVArh 0.000
     2016-10-30 10:14:36   Energy_export__kWh 0.000
     2016-10-27 21:19:47   Energy_import__kVArh 0.000
     2016-10-30 10:28:16   Energy_import__kWh 0.000
     2016-10-30 10:30:23   Energy_total__kVArh 0.000
     2016-10-30 10:32:28   Energy_total__kWh 0.000
     2016-10-30 10:28:51   Frequency__Hz   0.0
     2016-10-30 10:00:03   Modbus_Node_adr 0
     2016-10-30 10:01:41   Modbus_Parity_Stop
     2016-10-30 10:01:24   Modbus_Speed__baud
     2016-10-30 10:34:03   PowerFactor     0.0
     2016-10-30 10:30:53   PowerFactor_L1  0.0
     2016-10-30 10:31:28   PowerFactor_L2  0.0
     2016-10-30 10:29:18   PowerFactor_L3  0.0
     2016-10-30 10:20:54   PowerFactor_inverted 0.0
     2016-10-30 10:20:27   Power_L1__VA    0.0
     2016-10-30 10:29:49   Power_L1__VAr   0.0
     2016-10-30 10:35:37   Power_L1__W     0
     2016-10-30 09:06:35   Power_L2__VA    0.0
     2016-10-30 10:27:15   Power_L2__VAr   0.0
     2016-10-30 10:32:59   Power_L2__W     0
     2016-10-30 10:28:48   Power_L3__VA    0.0
     2016-10-30 10:28:45   Power_L3__VAr   0.0
     2016-10-30 10:34:00   Power_L3__W     0
     2016-10-30 10:30:24   Power_Max_demand__VA 0.0
     2016-10-30 10:33:30   Power_Max_demand__W 0.0
     2016-10-30 10:27:42   Power_Sum__VA   0.0
     2016-10-30 10:31:26   Power_Sum__VAr  0.0
     2016-10-30 10:34:37   Power_Sum__W    0.0
     2016-10-30 10:29:52   Power_Sum_demand__VA 0.0
     2016-10-30 10:35:36   Power_Sum_demand__W 0.0
     2016-10-30 10:00:44   Pulse_Divisor_1
     2016-10-30 10:00:04   Relay2_Energy_Type
     2016-10-30 10:01:25   System_Current__A 0.00
     2016-10-30 10:01:21   System_Password_Lock
     2016-10-30 09:59:59   System_Power__W 0
     2016-10-30 10:00:51   System_Pulse_Width__ms 0
     2016-10-30 10:00:53   System_Serial_Nr
     2016-10-30 09:59:58   System_Type
     2016-10-30 09:59:55   System_Voltage__V 0.0
     2016-10-30 10:18:52   THD_Current_L1__prz 0.0
     2016-10-30 10:19:20   THD_Current_L2__prz 0.0
     2016-10-30 10:20:21   THD_Current_L3__prz 0.0
     2016-10-30 10:23:00   THD_Current_avr__prz 0.0
     2016-10-30 10:18:50   THD_Voltage_L1_L2__prz 0.0
     2016-10-30 10:33:32   THD_Voltage_L1_N__prz 0.0
     2016-10-30 10:19:51   THD_Voltage_L2_L3__prz 0.0
     2016-10-30 10:34:36   THD_Voltage_L2_N__prz 0.0
     2016-10-30 10:20:23   THD_Voltage_L3_L1__prz 0.0
     2016-10-30 10:35:36   THD_Voltage_L3_N__prz 0.0
     2016-10-30 10:19:18   THD_Voltage_avr_LL__prz 0.0
     2016-10-30 10:32:59   THD_Voltage_avr_LN__prz 0.0
     2016-10-30 10:32:30   Voltage_Avr_L_to_L__V 0.0
     2016-10-30 10:32:57   Voltage_Avr__V  0.0
     2016-10-30 10:34:34   Voltage_L1__V   0.0
     2016-10-30 10:29:50   Voltage_L1_to_L2__V 0.0
     2016-10-30 10:34:35   Voltage_L2__V   0.0
     2016-10-30 10:30:21   Voltage_L2_to_L3__V 0.0
     2016-10-30 10:34:33   Voltage_L3__V   0.0
     2016-10-30 10:30:52   Voltage_L3_to_L1__V 0.0
   Gotreadings:
     Charge__kAh 0.000
     CosPhi_L1__grd 0.0
     CosPhi_L2__grd 0.0
     CosPhi_L3__grd 0.0
     CosPhi__grd 0.0
     Current_Avr__A 0.0
     Current_L1__A 0.00
     Current_L1_demand__A 0.00
     Current_L2__A 0.00
     Current_L2_demand__A 0.00
     Current_L3__A 0.00
     Current_L3_demand__A 0.00
     Current_Max_L1_demand__A 0.00
     Current_Max_L2_demand__A 0.00
     Current_Max_L3_demand__A 0.00
     Current_Max_N_demand__A 0.00
     Current_N__A 0.00
     Current_N_demand__A 0.00
     Current_Sum__A 0.00
     Demand_Period__minutes 0
     Demand_Time__minutes 0
     Energy_L1_export__kWh 0.000
     Energy_L1_import__kWh 0.000
     Energy_L1_total__kWh 0.000
     Energy_L2_export__kWh 0.000
     Energy_L2_import__kWh 0.000
     Energy_L2_total__kWh 0.000
     Energy_L3_export__kWh 0.000
     Energy_L3_import__kWh 0.000
     Energy_L3_total__kWh 0.000
     Energy_apparent__kVAh 0.000
     Energy_export__kVArh 0.000
     Energy_export__kWh 0.000
     Energy_import__kWh 0.000
     Energy_total__kVArh 0.000
     Energy_total__kWh 0.000
     Frequency__Hz 0.0
     Modbus_Node_adr 0
     Modbus_Parity_Stop
     Modbus_Speed__baud
     PowerFactor 0.0
     PowerFactor_L1 0.0
     PowerFactor_L2 0.0
     PowerFactor_L3 0.0
     PowerFactor_inverted 0.0
     Power_L1__VA 0.0
     Power_L1__VAr 0.0
     Power_L1__W 0
     Power_L2__VAr 0.0
     Power_L2__W 0
     Power_L3__VA 0.0
     Power_L3__VAr 0.0
     Power_L3__W 0
     Power_Max_demand__VA 0.0
     Power_Max_demand__W 0.0
     Power_Sum__VA 0.0
     Power_Sum__VAr 0.0
     Power_Sum__W 0.0
     Power_Sum_demand__VA 0.0
     Power_Sum_demand__W 0.0
     Pulse_Divisor_1
     Relay2_Energy_Type
     System_Current__A 0.00
     System_Password_Lock
     System_Power__W 0
     System_Pulse_Width__ms 0
     System_Serial_Nr
     System_Type
     System_Voltage__V 0.0
     THD_Current_L1__prz 0.0
     THD_Current_L2__prz 0.0
     THD_Current_L3__prz 0.0
     THD_Current_avr__prz 0.0
     THD_Voltage_L1_L2__prz 0.0
     THD_Voltage_L1_N__prz 0.0
     THD_Voltage_L2_L3__prz 0.0
     THD_Voltage_L2_N__prz 0.0
     THD_Voltage_L3_L1__prz 0.0
     THD_Voltage_L3_N__prz 0.0
     THD_Voltage_avr_LL__prz 0.0
     THD_Voltage_avr_LN__prz 0.0
     Voltage_Avr_L_to_L__V 0.0
     Voltage_Avr__V 0.0
     Voltage_L1__V 0.0
     Voltage_L1_to_L2__V 0.0
     Voltage_L2__V 0.0
     Voltage_L2_to_L3__V 0.0
     Voltage_L3__V 0.0
     Voltage_L3_to_L1__V 0.0
   Helper:
     lrecv      1477820139.77197
     lsend      1477820139.76803
   Lastread:
     h0         1477818007.77195
     h10        1477817998.89053
     h12        1477818051.03902
     h14        1477818081.6883
     h18        1477818101.19584
     h2         1477818002.4848
     h20        1477818003.19946
     h22        1477818044.89155
     h28        1477818084.54779
     h36        1477817999.62384
     h42        1477818053.90348
     h6         1477817995.30035
     h8         1477818085.98559
     h88        1477818004.62859
     i0         1477820074.66305
     i10        1477820103.79918
     i100       1477819792.39058
     i102       1477819824.0501
     i104       1477820139.06494
     i106       1477819725.81529
     i12        1477820137.63253
     i14        1477819979.96891
     i16        1477820040.83492
     i18        1477819227.32141
     i2         1477820075.36983
     i200       1477819790.94858
     i202       1477819821.89491
     i204       1477819852.54193
     i206       1477819950.27144
     i22        1477819728.67594
     i224       1477820043.72259
     i234       1477820012.36238
     i236       1477820076.09144
     i238       1477820136.1967
     i24        1477819789.52074
     i240       1477819132.30773
     i242       1477819160.7355
     i244       1477819221.80836
     i248       1477819979.25896
     i250       1477819380.90752
     i254       1477819254.1912
     i258       1477819947.18944
     i26        1477819635.04351
     i260       1477820104.51135
     i262       1477819851.82749
     i264       1477819761.78173
     i266       1477819884.89935
     i268       1477819916.98008
     i28        1477819725.09756
     i30        1477819853.2709
     i32        1477819888.48232
     i334       1477819130.11047
     i336       1477819191.20311
     i338       1477819223.26247
     i34        1477819758.19618
     i340       1477819158.57735
     i342       1477819948.11911
     i344       1477819823.32383
     i346       1477819788.81132
     i348       1477819854.7001
     i350       1477819889.20315
     i352       1477819914.11617
     i354       1477820139.77928
     i356       1477819759.63885
     i358       1477819978.53262
     i36        1477819446.07024
     i360       1477820013.07171
     i362       1477820041.58155
     i38        1477820103.09093
     i4         1477820073.90696
     i40        1477820138.34579
     i42        1477819977.08074
     i46        1477820010.92887
     i48        1477820042.29946
     i52        1477820077.5108
     i56        1477819662.11376
     i6         1477820040.12154
     i60        1477819886.3351
     i62        1477820043.00949
     i66        1477819413.72962
     i70        1477819731.54775
     i72        1477819696.62035
     i74        1477818876.629
     i78        1477820105.23741
     i8         1477820073.18215
     i80        1477819916.27083
     i82        1477819977.80741
     i84        1477820136.912
     i86        1477820010.17981
Attributes:
   IODev      HA_Modbus_1
   poll-Energy_total__kWh 1
   room       Modbus
   userattr   1 IODev poll-Energy_total__kWh verbose


Boah - sind die Dinger lang...
Fehlt noch was? Hat jemand eine Idee was da los ist?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 30 Oktober 2016, 10:45:09
Habe "leider" kein Windows verfügbar... Intervall habe ich auf 60s geändert.
Einen Telefonhörer habe ich noch nicht entdeckt, aber die Readings werden ja zumindest namentlich angezeigt... Er muss also zumindest empfangen welche Register gelesen werden könnten.


Am ehesten glaube ich, dass durch die verschiedenen kommunikationseinstellungen probleme verursacht werden... Ich hatte gehofft die Einstellungen des ModbusZaehler1 mithilfe des Moduls vornehmen zu können. Dummerweise ist es nicht einfach für mich den ModbusZaehler2 auszuschalten, da nehme ich unserem derzeitigem Wohnraum den Strom...
Ein weg könnte sein - ModbusZaehler2 stromlos machen,
den USB adapter auf 9600 stellen und dem ModbusZaehler1 dann sagen 19200,8,E,1

Aber die set befehle lassen sich nicht passend zusammenstellen. Es gibt nur 1,2,3,4 als einstellmöglichkeiten.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 30 Oktober 2016, 11:20:01
mit dem Tool (http://www.modbusdriver.com/modpoll.html) modpoll kannst du unter Linux (x86) Daten eines Modbus auslesen.

Trenne bei einem Zähler doch einfach die A/B-Verbindung. Der Zähler kann doch weiter laufen.
An einem ModBus müssen alle Geräte die gleichen Einstellungen haben. Und an den Zähler kannst du ja einiges einstellen.
Im Log kam nur etwas vom HA_Modbus_1verbose 5  zurück. Die anderen haben nicht geantwortet, da wahrscheinlich der Bus belegt wahr.

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 30 Oktober 2016, 11:25:40
Die Modbusleitung zu lösen ist schwieriger als abzuschalten... In diesem Bereich der Verteilung ist es ganz schön eng - ich hab auch jedesmal mit dem klemmen des SDM kämpfen müssen um die drähte sicher anzuklemmen... Strom ausschalten ist einfacher.
Bleibt nur die frage was ich an set befehlen an den SDM geben muss um die Baudrate, die Parität und das StoppBit festzulegen...
Wie gesagt - die Tastenbedienung funktioniert nicht mehr wie sie sollte...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Oktober 2016, 08:13:23
Hallo der-Lolo,

wenn man das Log von HA_Modbus_1 ansieht, fällt auf, dass das Modul immer genau das Frame zurückbekommt, das es auch aussendet (01040006000291ca). Statt einem Modbus-Reply kommt der eigene Request zurück. Keine Fehlermeldung.


2016.10.30 10:04:11 5: SW: 01040006000291ca
2016.10.30 10:04:11 5: HA_Modbus_1: raw read: 0104000600
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames got: 0104000600
2016.10.30 10:04:11 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00 calc crc = 49186, read = 6 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.30 10:04:11 5: HA_Modbus_1: raw read: 0291ca
2016.10.30 10:04:11 5: HA_Modbus_1: ParseFrames got: 01040006000291ca


Das ist schon sehr seltsam.
Ich würde versuchen immer nur ein Gerät anzuschalten oder anzuklemmen, in der Hoffnung dass klar wird, welches Gerät hier einfach die Requests reflektiert...

Ich werde im Modul noch eine verbesserte Protokollierung einbauen, so dass in solchen Fällen eine entsprechende Fehlermeldung kommt.

Oder versuch doch mal alle Leitungen am USB-Adapter zu entfernen - nicht dass der Adapter selbst eine Echo-Funktion hat.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 31 Oktober 2016, 21:21:27
Hm, ich hatte noch einen Denkfehler - der Bus war an einer stelle offen...
Es schaut aber so aus als ob das problem noch immer besteht -

2016.10.31 21:14:55 5: SW: 0104000000127007
2016.10.31 21:14:55 5: HA_Modbus_1: raw read: 0104000000127007
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames got: 0104000000127007
2016.10.31 21:14:55 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00000012 calc crc = 1904, read = 1904  expect 4 from 1 for module ModbusZaehler1
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.10.31 21:14:55 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.639480113983154
2016.10.31 21:14:55 5: HA_Modbus_1: raw read: 0104244363943e4365362d4365a6cb3e90c42d0000000000000000415ace2a000000000000000048f0
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames got: 0104244363943e4365362d4365a6cb3e90c42d0000000000000000415ace2a000000000000000048f0
2016.10.31 21:14:55 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 244363943e4365362d4365a6cb3e90c42d0000000000000000415ace2a0000000000000000 calc crc = 61512, read = 61512  expect 4 from 1 for module ModbusZaehler1
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.10.31 21:14:55 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.471478939056396
2016.10.31 21:14:55 4: HA_Modbus_1: sends 010400040002300a (fcode 4 to 1, tid 0 for Voltage_L3__V (4), len 2)
2016.10.31 21:14:55 5: SW: 010400040002300a
2016.10.31 21:14:55 5: HA_Modbus_1: raw read: 01
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames got: 01
2016.10.31 21:14:55 5: HA_Modbus_1: raw read: 0400040002
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames got: 010400040002
2016.10.31 21:14:55 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0004 calc crc = 55873, read = 512 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.31 21:14:55 5: HA_Modbus_1: raw read: 300a
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames got: 010400040002300a
2016.10.31 21:14:55 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00040002 calc crc = 2608, read = 2608  expect 4 from 1 for module ModbusZaehler1
2016.10.31 21:14:55 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.10.31 21:14:55 5: HA_Modbus_1: raw read: 010404436538a0eda7
2016.10.31 21:15:25 4: HA_Modbus_1: sends 010400020002d00b (fcode 4 to 1, tid 0 for Voltage_L2__V (2), len 2)
2016.10.31 21:15:25 5: SW: 010400020002d00b
2016.10.31 21:15:25 5: HA_Modbus_1: raw read: 010400020002
2016.10.31 21:15:25 5: HA_Modbus_1: ParseFrames got: 010400020002
2016.10.31 21:15:25 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0002 calc crc = 55489, read = 512 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.10.31 21:15:25 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.10.31 21:15:25 5: HA_Modbus_1: raw read: d00b
2016.10.31 21:15:25 5: HA_Modbus_1: ParseFrames got: 010400020002d00b
2016.10.31 21:15:25 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 00020002 calc crc = 3024, read = 3024  expect 4 from 1 for module ModbusZaehler1
2016.10.31 21:15:25 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.10.31 21:15:25 5: HA_Modbus_1: raw read: 010404436543838e8e
2016.10.31 21:15:58 4: HA_Modbus_1: sends 0104000000127007 (fcode 4 to 1, tid 0 for Voltage_L1__V (0), len 18)
2016.10.31 21:15:58 5: SW: 0104000000127007


Weiteres gebastel nun nur noch wenn ich problemlos abschalten kann..
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Oktober 2016, 22:20:47
Jetzt scheint nach dem Echo auch eine echte Antwort zu kommmen. Aber das Echo ist auch noch da ...

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 01 November 2016, 08:26:34
Ok, ich habe nun nochmal die Doku des USB-Adapters gelesen, und den Dip Switch 1 auf off geschaltet.
Die antworten passen nun auch eher in die Readings...

Aber irgendwie läuft die Sache immer noch nicht rund.

2016.11.01 08:17:58 4: HA_Modbus_1: sends 01040000000cf00f (fcode 4 to 1, tid 0 for Voltage_L1__V (0), len 12)
2016.11.01 08:17:58 5: SW: 01040000000cf00f
2016.11.01 08:17:58 5: HA_Modbus_1: raw read: 0104
2016.11.01 08:17:58 5: HA_Modbus_1: ParseFrames got: 0104
2016.11.01 08:17:58 5: HA_Modbus_1: raw read: 184364c417436533ee43
2016.11.01 08:17:58 5: HA_Modbus_1: ParseFrames got: 0104184364c417436533ee43
2016.11.01 08:17:58 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364c417436533 calc crc = 48135, read = 17390 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:17:58 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:17:58 5: HA_Modbus_1: raw read: 6657083e9178640000000000000000
2016.11.01 08:17:58 5: HA_Modbus_1: ParseFrames got: 0104184364c417436533ee436657083e9178640000000000000000
2016.11.01 08:17:58 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364c417436533ee436657083e917864000000000000 calc crc = 25762, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:17:58 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:17:58 5: HA_Modbus_1: raw read: 788b
2016.11.01 08:17:58 5: HA_Modbus_1: ParseFrames got: 0104184364c417436533ee436657083e9178640000000000000000788b
2016.11.01 08:17:58 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364c417436533ee436657083e9178640000000000000000 calc crc = 35704, read = 35704  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:18:01 4: HA_Modbus_1: sends 010400020008500c (fcode 4 to 1, tid 0 for Voltage_L2__V (2), len 8)
2016.11.01 08:18:01 5: SW: 010400020008500c
2016.11.01 08:18:01 5: HA_Modbus_1: raw read: 01
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:18:01 5: HA_Modbus_1: raw read: 0410436533ee
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got: 010410436533ee
2016.11.01 08:18:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 104365 calc crc = 12008, read = 60979 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:18:01 5: HA_Modbus_1: raw read: 436657083e9191
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got: 010410436533ee436657083e9191
2016.11.01 08:18:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10436533ee436657083e calc crc = 35350, read = 37265 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:18:01 5: HA_Modbus_1: raw read: a80000000095
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got: 010410436533ee436657083e9191a80000000095
2016.11.01 08:18:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10436533ee436657083e9191a8000000 calc crc = 5466, read = 38144 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:18:01 5: HA_Modbus_1: raw read: 3b
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames got: 010410436533ee436657083e9191a800000000953b
2016.11.01 08:18:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10436533ee436657083e9191a800000000 calc crc = 15253, read = 15253  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:01 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:18:31 4: HA_Modbus_1: sends 0104000c0006b00b (fcode 4 to 1, tid 0 for Power_L1__W (12), len 6)
2016.11.01 08:18:31 5: SW: 0104000c0006b00b
2016.11.01 08:18:31 5: HA_Modbus_1: raw read: 01
2016.11.01 08:18:31 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:18:31 5: HA_Modbus_1: raw read: 040c415523e30000000000
2016.11.01 08:18:31 5: HA_Modbus_1: ParseFrames got: 01040c415523e30000000000
2016.11.01 08:18:31 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c415523e3000000 calc crc = 5564, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:31 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:18:31 5: HA_Modbus_1: raw read: 00000055d7
2016.11.01 08:18:31 5: HA_Modbus_1: ParseFrames got: 01040c415523e3000000000000000055d7
2016.11.01 08:18:31 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c415523e30000000000000000 calc crc = 55125, read = 55125  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:18:31 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:19:01 4: HA_Modbus_1: sends 01040000000271cb (fcode 4 to 1, tid 0 for Voltage_L1__V (0), len 2)
2016.11.01 08:19:01 5: SW: 01040000000271cb
2016.11.01 08:19:01 5: HA_Modbus_1: raw read: 01
2016.11.01 08:19:01 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:19:01 5: HA_Modbus_1: raw read: 04044363e68f
2016.11.01 08:19:01 5: HA_Modbus_1: ParseFrames got: 0104044363e68f
2016.11.01 08:19:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 044363 calc crc = 10280, read = 36838 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:19:01 5: HA_Modbus_1: raw read: 15da
2016.11.01 08:19:01 5: HA_Modbus_1: ParseFrames got: 0104044363e68f15da
2016.11.01 08:19:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 044363e68f calc crc = 55829, read = 55829  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:01 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:19:34 4: HA_Modbus_1: sends 010400020008500c (fcode 4 to 1, tid 0 for Voltage_L2__V (2), len 8)
2016.11.01 08:19:34 5: SW: 010400020008500c
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 01
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 041043650d93
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 01041043650d93
2016.11.01 08:19:34 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 104365 calc crc = 12008, read = 37645 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 4365df273e916676
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 01041043650d934365df273e916676
2016.11.01 08:19:34 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 1043650d934365df273e91 calc crc = 38075, read = 30310 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 00000000ea9b
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 01041043650d934365df273e91667600000000ea9b
2016.11.01 08:19:34 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 1043650d934365df273e91667600000000 calc crc = 39914, read = 39914  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:19:34 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.524160861968994
2016.11.01 08:19:34 4: HA_Modbus_1: sends 0104000a0008d1ce (fcode 4 to 1, tid 0 for Current_L3__A (10), len 8)
2016.11.01 08:19:34 5: SW: 0104000a0008d1ce
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 01
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 0410000000
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 010410000000
2016.11.01 08:19:34 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 1000 calc crc = 55629, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 0041519b360000
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 0104100000000041519b360000
2016.11.01 08:19:34 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 100000000041519b36 calc crc = 50720, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:19:34 5: HA_Modbus_1: raw read: 000000000000a414
2016.11.01 08:19:34 5: HA_Modbus_1: ParseFrames got: 0104100000000041519b360000000000000000a414
2016.11.01 08:19:34 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 100000000041519b360000000000000000 calc crc = 5284, read = 5284  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:19:35 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:20:04 4: HA_Modbus_1: sends 01040000000271cb (fcode 4 to 1, tid 0 for Voltage_L1__V (0), len 2)
2016.11.01 08:20:04 5: SW: 01040000000271cb
2016.11.01 08:20:04 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:04 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:04 5: HA_Modbus_1: raw read: 04044363bc76ef
2016.11.01 08:20:04 5: HA_Modbus_1: ParseFrames got: 0104044363bc76ef
2016.11.01 08:20:04 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 044363bc calc crc = 44841, read = 61302 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:04 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:04 5: HA_Modbus_1: raw read: 38
2016.11.01 08:20:04 5: HA_Modbus_1: ParseFrames got: 0104044363bc76ef38
2016.11.01 08:20:04 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 044363bc76 calc crc = 14575, read = 14575  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:04 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:20:33 0: Server shutdown
2016.11.01 08:20:39 1: Including fhem.cfg
2016.11.01 08:20:39 3: telnetPort: port 7072 opened
2016.11.01 08:20:40 3: WEB: port 8083 opened
2016.11.01 08:20:40 3: WEBphone: port 8084 opened
2016.11.01 08:20:40 3: WEBtablet: port 8085 opened
2016.11.01 08:20:40 2: eventTypes: loaded 352 events from ./log/eventTypes.txt
2016.11.01 08:20:40 1: Including /opt/fhem/FHEM/Presence.cfg
2016.11.01 08:20:40 1: Including /opt/fhem/FHEM/ModbusRTU.cfg
2016.11.01 08:20:40 3: Opening HA_Modbus_1 device /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0
2016.11.01 08:20:41 3: Setting HA_Modbus_1 serial parameters to 9600,8,N,1
2016.11.01 08:20:41 3: HA_Modbus_1 device opened
2016.11.01 08:20:41 3: Wago: I/O device is wago
2016.11.01 08:20:41 3: Warmlicht: I/O device is wago
2016.11.01 08:20:41 3: Kaltlicht: I/O device is wago
2016.11.01 08:20:42 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2016.11.01 08:20:42 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 16353
2016.11.01 08:20:42 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2016.11.01 08:20:43 3: tablet_ui: new ext defined infix:tablet/index.html: dir:./www/tablet:
2016.11.01 08:20:43 3: Registering HTTPSRV tablet_ui for URL /tablet/index.html   and assigned link tablet/index.html ...
2016.11.01 08:20:43 3: ModbusZaehler1: define with destination , protocol RTU
2016.11.01 08:20:43 3: ModbusZaehler1: defined with id 1, interval 30, destination HA_Modbus_1, protocol RTU
2016.11.01 08:20:43 1: Including ./log/fhem.save
2016.11.01 08:20:43 3: Opening christiansHandy device 127.0.0.1:5222
2016.11.01 08:20:43 3: Can't connect to 127.0.0.1:5222: Verbindungsaufbau abgelehnt
2016.11.01 08:20:43 3: Opening i4doris device 127.0.0.1:5222
2016.11.01 08:20:43 3: Can't connect to 127.0.0.1:5222: Verbindungsaufbau abgelehnt
2016.11.01 08:20:43 1: usb create starting
2016.11.01 08:20:44 1: usb create end
2016.11.01 08:20:44 3: Opening s3regina device 127.0.0.1:5222
2016.11.01 08:20:44 3: Can't connect to 127.0.0.1:5222: Verbindungsaufbau abgelehnt
2016.11.01 08:20:44 3: Opening s4mini device 127.0.0.1:5222
2016.11.01 08:20:44 3: Can't connect to 127.0.0.1:5222: Verbindungsaufbau abgelehnt
2016.11.01 08:20:44 3: Opening wago device 192.168.178.4:502
2016.11.01 08:20:47 3: Can't connect to 192.168.178.4:502: Keine Route zum Zielrechner
2016.11.01 08:20:47 3: Opening z1compact device 127.0.0.1:5222
2016.11.01 08:20:47 3: Can't connect to 127.0.0.1:5222: Verbindungsaufbau abgelehnt
2016.11.01 08:20:47 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2016.11.01 08:20:47 0: Featurelevel: 5.7
2016.11.01 08:20:47 0: Server started with 53 defined entities (fhem.pl:12423/2016-10-24 perl:5.020002 os:linux user:fhem pid:16353)
2016.11.01 08:20:47 4: HA_Modbus_1: sends 0104002600029000 (fcode 4 to 1, tid 0 for CosPhi_L2__grd (38), len 2)
2016.11.01 08:20:47 5: SW: 0104002600029000
2016.11.01 08:20:47 5: HA_Modbus_1: raw read: 01040442103363bae0
2016.11.01 08:20:47 5: HA_Modbus_1: ParseFrames got: 01040442103363bae0
2016.11.01 08:20:47 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0442103363 calc crc = 57530, read = 57530  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:47 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 1 readings
2016.11.01 08:20:47 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.659840106964111
2016.11.01 08:20:48 4: HA_Modbus_1: sends 01040104000a3030 (fcode 4 to 1, tid 0 for Current_L2_demand__A (260), len 10)
2016.11.01 08:20:48 5: SW: 01040104000a3030
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 041400
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 01041400
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 00000000
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 0104140000000000
2016.11.01 08:20:48 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 14000000 calc crc = 64245, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 000000
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 0104140000000000000000
2016.11.01 08:20:48 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 14000000000000 calc crc = 37458, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 403ac380
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 0104140000000000000000403ac380
2016.11.01 08:20:48 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 140000000000000000403a calc crc = 34304, read = 32963 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 410084fe3b
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 0104140000000000000000403ac380410084fe3b
2016.11.01 08:20:48 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 140000000000000000403ac380410084 calc crc = 60948, read = 15358 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 31d0b02c
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 0104140000000000000000403ac380410084fe3b31d0b02c
2016.11.01 08:20:48 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 140000000000000000403ac380410084fe3b31d0 calc crc = 60465, read = 11440 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:48 5: HA_Modbus_1: raw read: 60
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames got: 0104140000000000000000403ac380410084fe3b31d0b02c60
2016.11.01 08:20:48 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 140000000000000000403ac380410084fe3b31d0b0 calc crc = 24620, read = 24620  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:48 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 6 readings
2016.11.01 08:20:48 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.556653022766113
2016.11.01 08:20:49 4: HA_Modbus_1: sends 01040024000231c0 (fcode 4 to 1, tid 0 for CosPhi_L1__grd (36), len 2)
2016.11.01 08:20:49 5: SW: 01040024000231c0
2016.11.01 08:20:49 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:49 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:49 5: HA_Modbus_1: raw read: 0404c29bf3
2016.11.01 08:20:49 5: HA_Modbus_1: ParseFrames got: 010404c29bf3
2016.11.01 08:20:49 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 04c2 calc crc = 18627, read = 62363 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:49 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:49 5: HA_Modbus_1: raw read: 00f323
2016.11.01 08:20:49 5: HA_Modbus_1: ParseFrames got: 010404c29bf300f323
2016.11.01 08:20:49 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 04c29bf300 calc crc = 9203, read = 9203  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:49 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 7 readings
2016.11.01 08:20:49 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.644351959228516
2016.11.01 08:20:50 4: HA_Modbus_1: sends 0104000c000831cf (fcode 4 to 1, tid 0 for Power_L1__W (12), len 8)
2016.11.01 08:20:50 5: SW: 0104000c000831cf
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 04104158b63d00
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 0104104158b63d00
2016.11.01 08:20:50 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 104158b6 calc crc = 43038, read = 61 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 000000000000004281f3ab59a2
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 0104104158b63d00000000000000004281f3ab59a2
2016.11.01 08:20:50 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 104158b63d00000000000000004281f3ab calc crc = 41561, read = 41561  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 11 readings
2016.11.01 08:20:50 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.547093152999878
2016.11.01 08:20:50 4: HA_Modbus_1: sends 0104001c0006b1ce (fcode 4 to 1, tid 0 for Power_L3__VAr (28), len 6)
2016.11.01 08:20:50 5: SW: 0104001c0006b1ce
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 040c000000
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 01040c000000
2016.11.01 08:20:50 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c00 calc crc = 6469, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 003e5444fe3f80
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 01040c000000003e5444fe3f80
2016.11.01 08:20:50 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c000000003e5444fe calc crc = 30184, read = 32831 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:50 5: HA_Modbus_1: raw read: 00002986
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames got: 01040c000000003e5444fe3f8000002986
2016.11.01 08:20:50 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c000000003e5444fe3f800000 calc crc = 34345, read = 34345  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:50 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 14 readings
2016.11.01 08:20:50 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.58077597618103
2016.11.01 08:20:51 4: HA_Modbus_1: sends 0103000a000ae5cf (fcode 3 to 1, tid 0 for System_Type (10), len 10)
2016.11.01 08:20:51 5: SW: 0103000a000ae5cf
2016.11.01 08:20:51 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:51 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:51 5: HA_Modbus_1: raw read: 03144040000042c8000000
2016.11.01 08:20:51 5: HA_Modbus_1: ParseFrames got: 0103144040000042c8000000
2016.11.01 08:20:51 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 144040000042c800 calc crc = 7565, read = 0 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:20:51 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:51 5: HA_Modbus_1: raw read: 0000000000000000000000c0a0
2016.11.01 08:20:51 5: HA_Modbus_1: ParseFrames got: 0103144040000042c80000000000000000000000000000c0a0
2016.11.01 08:20:51 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 144040000042c80000000000000000000000000000 calc crc = 41152, read = 41152  expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:20:51 5: HA_Modbus_1: ParseFrames done, reply to fCode 3, 18 readings
2016.11.01 08:20:51 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.545667171478271
2016.11.01 08:20:52 4: HA_Modbus_1: sends 0103002400080407 (fcode 3 to 1, tid 0 for System_Power__W (36), len 8)
2016.11.01 08:20:52 5: SW: 0103002400080407
2016.11.01 08:20:52 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:52 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:52 5: HA_Modbus_1: raw read: 031045ce40000000000045
2016.11.01 08:20:52 5: HA_Modbus_1: ParseFrames got: 01031045ce40000000000045
2016.11.01 08:20:52 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 1045ce4000000000 calc crc = 6961, read = 17664 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:20:52 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:52 5: HA_Modbus_1: raw read: 05d00065617374f1b4
2016.11.01 08:20:52 5: HA_Modbus_1: ParseFrames got: 01031045ce4000000000004505d00065617374f1b4
2016.11.01 08:20:52 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 1045ce4000000000004505d00065617374 calc crc = 46321, read = 46321  expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:20:52 5: HA_Modbus_1: ParseFrames done, reply to fCode 3, 20 readings
2016.11.01 08:20:52 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.592164993286133
2016.11.01 08:20:53 4: HA_Modbus_1: sends 010400080002f009 (fcode 4 to 1, tid 0 for Current_L2__A (8), len 2)
2016.11.01 08:20:53 5: SW: 010400080002f009
2016.11.01 08:20:53 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:53 5: HA_Modbus_1: raw read: 040400000000fb84
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames got: 01040400000000fb84
2016.11.01 08:20:53 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0400000000 calc crc = 34043, read = 34043  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 21 readings
2016.11.01 08:20:53 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.640027046203613
2016.11.01 08:20:53 4: HA_Modbus_1: sends 01040168000471e9 (fcode 4 to 1, tid 0 for Energy_L2_total__kWh (360), len 4)
2016.11.01 08:20:53 5: SW: 01040168000471e9
2016.11.01 08:20:53 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:53 5: HA_Modbus_1: raw read: 04083fe78d50000000
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames got: 0104083fe78d50000000
2016.11.01 08:20:53 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 083fe78d5000 calc crc = 54603, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:53 5: HA_Modbus_1: raw read: 002e86
2016.11.01 08:20:53 5: HA_Modbus_1: ParseFrames got: 0104083fe78d50000000002e86
2016.11.01 08:20:53 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 083fe78d5000000000 calc crc = 34350, read = 34350  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 23 readings
2016.11.01 08:20:56 4: HA_Modbus_1: sends 01040000000cf00f (fcode 4 to 1, tid 0 for Voltage_L1__V (0), len 12)
2016.11.01 08:20:56 5: SW: 01040000000cf00f
2016.11.01 08:20:56 5: HA_Modbus_1: raw read: 01
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:20:56 5: HA_Modbus_1: raw read: 04184364b6
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got: 0104184364b6
2016.11.01 08:20:56 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 1843 calc crc = 59403, read = 46692 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:56 5: HA_Modbus_1: raw read: 8d43652fc74365
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got: 0104184364b68d43652fc74365
2016.11.01 08:20:56 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364b68d43652fc7 calc crc = 24294, read = 25923 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:56 5: HA_Modbus_1: raw read: c71c3e8f80
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got: 0104184364b68d43652fc74365c71c3e8f80
2016.11.01 08:20:56 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364b68d43652fc74365c71c3e calc crc = 53369, read = 32911 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:56 5: HA_Modbus_1: raw read: e5000000000000
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got: 0104184364b68d43652fc74365c71c3e8f80e5000000000000
2016.11.01 08:20:56 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364b68d43652fc74365c71c3e8f80e500000000 calc crc = 35287, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:56 5: HA_Modbus_1: raw read: 0000e85e
2016.11.01 08:20:56 5: HA_Modbus_1: ParseFrames got: 0104184364b68d43652fc74365c71c3e8f80e50000000000000000e85e
2016.11.01 08:20:56 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 184364b68d43652fc74365c71c3e8f80e50000000000000000 calc crc = 24296, read = 24296  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 28 readings
2016.11.01 08:20:59 4: HA_Modbus_1: sends 01040002001451c5 (fcode 4 to 1, tid 0 for Voltage_L2__V (2), len 20)
2016.11.01 08:20:59 5: SW: 01040002001451c5
2016.11.01 08:20:59 5: HA_Modbus_1: raw read: 01042843653d6743663c1b3e8fb70300000000000000004155679e
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got: 01042843653d6743663c1b3e8fb70300000000000000004155679e
2016.11.01 08:20:59 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 2843653d6743663c1b3e8fb70300000000000000004155 calc crc = 60701, read = 40551 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:59 5: HA_Modbus_1: raw read: 000000000000000042
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got: 01042843653d6743663c1b3e8fb70300000000000000004155679e000000000000000042
2016.11.01 08:20:59 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 2843653d6743663c1b3e8fb70300000000000000004155679e00000000000000 calc crc = 21340, read = 16896 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:59 5: HA_Modbus_1: raw read: 7fc3c6000000007e
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got: 01042843653d6743663c1b3e8fb70300000000000000004155679e0000000000000000427fc3c6000000007e
2016.11.01 08:20:59 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 2843653d6743663c1b3e8fb70300000000000000004155679e0000000000000000427fc3c6000000 calc crc = 15991, read = 32256 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:20:59 5: HA_Modbus_1: raw read: 26
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames got: 01042843653d6743663c1b3e8fb70300000000000000004155679e0000000000000000427fc3c6000000007e26
2016.11.01 08:20:59 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 2843653d6743663c1b3e8fb70300000000000000004155679e0000000000000000427fc3c600000000 calc crc = 9854, read = 9854  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:20:59 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 29 readings
2016.11.01 08:20:59 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.394597053527832
2016.11.01 08:21:01 4: HA_Modbus_1: sends 01030014000a85c9 (fcode 3 to 1, tid 0 for Modbus_Node_adr (20), len 10)
2016.11.01 08:21:01 5: SW: 01030014000a85c9
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 03143f80
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 0103143f80
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 14 calc crc = 65312, read = 32831 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 0000000000
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 0103143f800000000000
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 143f80000000 calc crc = 5772, read = 0 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 00447a00
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 0103143f80000000000000447a00
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 143f8000000000000044 calc crc = 26571, read = 122 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 00000000
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 0103143f80000000000000447a0000000000
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 143f80000000000000447a000000 calc crc = 58262, read = 0 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 0040000000
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 0103143f80000000000000447a00000000000040000000
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 143f80000000000000447a0000000000004000 calc crc = 22862, read = 0 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: f59a
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 0103143f80000000000000447a00000000000040000000f59a
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 143f80000000000000447a00000000000040000000 calc crc = 39669, read = 39669  expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames done, reply to fCode 3, 33 readings
2016.11.01 08:21:01 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.558937072753906
2016.11.01 08:21:01 4: HA_Modbus_1: sends 010400040028b1d5 (fcode 4 to 1, tid 0 for Voltage_L3__V (4), len 40)
2016.11.01 08:21:01 5: SW: 010400040028b1d5
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 045043663c1b3e90471b00000000000000004156be91000000
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 01045043663c1b3e90471b00000000000000004156be91000000
2016.11.01 08:21:01 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 5043663c1b3e90471b00000000000000004156be9100 calc crc = 15670, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:01 5: HA_Modbus_1: raw read: 00000000004280621b0000000000000000c27b175a0000000000
2016.11.01 08:21:01 5: HA_Modbus_1: ParseFrames got: 01045043663c1b3e90471b00000000000000004156be9100000000000000004280621b0000000000000000c27b175a0000000000
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 5043663c1b3e90471b00000000000000004156be9100000000000000004280621b0000000000000000c27b175a000000 calc crc = 61428, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: 0000003e5613393f8000003f800000c29be091
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 01045043663c1b3e90471b00000000000000004156be9100000000000000004280621b0000000000000000c27b175a00000000000000003e5613393f8000003f800000c29be091
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 5043663c1b3e90471b00000000000000004156be9100000000000000004280621b0000000000000000c27b175a00000000000000003e5613393f8000003f800000c29b calc crc = 55329, read = 37344 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: c21f45e1437e6df143651738cf39
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 01045043663c1b3e90471b00000000000000004156be9100000000000000004280621b0000000000000000c27b175a00000000000000003e5613393f8000003f800000c29be091c21f45e1437e6df143651738cf39
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 5043663c1b3e90471b00000000000000004156be9100000000000000004280621b0000000000000000c27b175a00000000000000003e5613393f8000003f800000c29be091c21f45e1437e6df143651738 calc crc = 14799, read = 14799  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 39 readings
2016.11.01 08:21:02 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.0912778377532959
2016.11.01 08:21:02 4: HA_Modbus_1: sends 010400500008f1dd (fcode 4 to 1, tid 0 for Energy_apparent__kVAh (80), len 8)
2016.11.01 08:21:02 5: SW: 010400500008f1dd
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: 0410416e
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 010410416e
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10 calc crc = 3107, read = 28225 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: 8bdf429cdd
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 010410416e8bdf429cdd
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10416e8bdf42 calc crc = 23374, read = 56732 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: f1415588
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 010410416e8bdf429cddf1415588
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10416e8bdf429cddf141 calc crc = 12637, read = 34901 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: a34519b234e6
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 010410416e8bdf429cddf1415588a34519b234e6
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10416e8bdf429cddf1415588a34519b2 calc crc = 59172, read = 58932 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:02 5: HA_Modbus_1: raw read: cc
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames got: 010410416e8bdf429cddf1415588a34519b234e6cc
2016.11.01 08:21:02 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10416e8bdf429cddf1415588a34519b234 calc crc = 52454, read = 52454  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:02 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 43 readings
2016.11.01 08:21:02 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.578243017196655
2016.11.01 08:21:03 4: HA_Modbus_1: sends 010401540014b029 (fcode 4 to 1, tid 0 for THD_Voltage_avr_LL__prz (340), len 20)
2016.11.01 08:21:03 5: SW: 010401540014b029
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 0428000000
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 010428000000
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 2800 calc crc = 6494, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 0040d0d4fe4156
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 0104280000000040d0d4fe4156
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 280000000040d0d4fe calc crc = 30071, read = 22081 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 7ae14096f1aa
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 0104280000000040d0d4fe41567ae14096f1aa
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 280000000040d0d4fe41567ae14096 calc crc = 53560, read = 43761 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 3fe78d50000000
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 0104280000000040d0d4fe41567ae14096f1aa3fe78d50000000
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 280000000040d0d4fe41567ae14096f1aa3fe78d5000 calc crc = 56797, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 0000000000000000
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 0104280000000040d0d4fe41567ae14096f1aa3fe78d500000000000000000000000
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 280000000040d0d4fe41567ae14096f1aa3fe78d50000000000000000000 calc crc = 51393, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 000000000040
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 0104280000000040d0d4fe41567ae14096f1aa3fe78d500000000000000000000000000000000040
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 280000000040d0d4fe41567ae14096f1aa3fe78d50000000000000000000000000000000 calc crc = 497, read = 16384 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:03 5: HA_Modbus_1: raw read: 96f1aa4c2a
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames got: 0104280000000040d0d4fe41567ae14096f1aa3fe78d50000000000000000000000000000000004096f1aa4c2a
2016.11.01 08:21:03 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 280000000040d0d4fe41567ae14096f1aa3fe78d50000000000000000000000000000000004096f1aa calc crc = 10828, read = 10828  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:03 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 53 readings
2016.11.01 08:21:03 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.405117034912109
2016.11.01 08:21:04 4: HA_Modbus_1: sends 010300000002c40b (fcode 3 to 1, tid 0 for Demand_Time__minutes (0), len 2)
2016.11.01 08:21:04 5: SW: 010300000002c40b
2016.11.01 08:21:04 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:04 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:04 5: HA_Modbus_1: raw read: 030442700000ef90
2016.11.01 08:21:04 5: HA_Modbus_1: ParseFrames got: 01030442700000ef90
2016.11.01 08:21:04 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 0442700000 calc crc = 37103, read = 37103  expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:04 5: HA_Modbus_1: ParseFrames done, reply to fCode 3, 54 readings
2016.11.01 08:21:04 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.592941999435425
2016.11.01 08:21:05 4: HA_Modbus_1: sends 010400c800087032 (fcode 4 to 1, tid 0 for Voltage_L1_to_L2__V (200), len 8)
2016.11.01 08:21:05 5: SW: 010400c800087032
2016.11.01 08:21:05 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:05 5: HA_Modbus_1: raw read: 041043c5be7343c6fff943c63a7443c652f5c6c2
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames got: 01041043c5be7343c6fff943c63a7443c652f5c6c2
2016.11.01 08:21:05 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 1043c5be7343c6fff943c63a7443c652f5 calc crc = 49862, read = 49862  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 58 readings
2016.11.01 08:21:05 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.540374040603638
2016.11.01 08:21:05 4: HA_Modbus_1: sends 01040006000291ca (fcode 4 to 1, tid 0 for Current_L1__A (6), len 2)
2016.11.01 08:21:05 5: SW: 01040006000291ca
2016.11.01 08:21:05 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:05 5: HA_Modbus_1: raw read: 04043e90
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames got: 0104043e90
2016.11.01 08:21:05 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 04 calc crc = 803, read = 36926 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:05 5: HA_Modbus_1: raw read: 3edd2678
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames got: 0104043e903edd2678
2016.11.01 08:21:05 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 043e903edd calc crc = 30758, read = 30758  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:05 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 58 readings
2016.11.01 08:21:05 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.658194065093994
2016.11.01 08:21:06 4: HA_Modbus_1: sends 010400e00010f030 (fcode 4 to 1, tid 0 for Current_N__A (224), len 16)
2016.11.01 08:21:06 5: SW: 010400e00010f030
2016.11.01 08:21:06 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:06 5: HA_Modbus_1: raw read: 04203e857ca700000000
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got: 0104203e857ca700000000
2016.11.01 08:21:06 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 203e857ca70000 calc crc = 8774, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:06 5: HA_Modbus_1: raw read: 0000000000000000000000004060
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got: 0104203e857ca7000000000000000000000000000000004060
2016.11.01 08:21:06 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 203e857ca700000000000000000000000000000000 calc crc = 42047, read = 24640 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:06 5: HA_Modbus_1: raw read: e90140af638840af
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got: 0104203e857ca7000000000000000000000000000000004060e90140af638840af
2016.11.01 08:21:06 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 203e857ca7000000000000000000000000000000004060e90140af6388 calc crc = 59108, read = 44864 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:06 5: HA_Modbus_1: raw read: 6388da70
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames got: 0104203e857ca7000000000000000000000000000000004060e90140af638840af6388da70
2016.11.01 08:21:06 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 203e857ca7000000000000000000000000000000004060e90140af638840af6388 calc crc = 28890, read = 28890  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:06 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 62 readings
2016.11.01 08:21:06 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.558596134185791
2016.11.01 08:21:07 4: HA_Modbus_1: sends 0104002e000c9006 (fcode 4 to 1, tid 0 for Current_Avr__A (46), len 12)
2016.11.01 08:21:07 5: SW: 0104002e000c9006
2016.11.01 08:21:07 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:07 5: HA_Modbus_1: raw read: 04183e08dd
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames got: 0104183e08dd
2016.11.01 08:21:07 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 183e calc crc = 51659, read = 56584 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:07 5: HA_Modbus_1: raw read: 273ecd4bbb0000
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames got: 0104183e08dd273ecd4bbb0000
2016.11.01 08:21:07 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 183e08dd273ecd4bbb calc crc = 35630, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:07 5: HA_Modbus_1: raw read: 0000415d3d2c0000000042809230b5aa
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames got: 0104183e08dd273ecd4bbb00000000415d3d2c0000000042809230b5aa
2016.11.01 08:21:07 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 183e08dd273ecd4bbb00000000415d3d2c0000000042809230 calc crc = 43701, read = 43701  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:07 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 66 readings
2016.11.01 08:21:07 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.52654504776001
2016.11.01 08:21:08 4: HA_Modbus_1: sends 010300060004a408 (fcode 3 to 1, tid 0 for System_Voltage__V (6), len 4)
2016.11.01 08:21:08 5: SW: 010300060004a408
2016.11.01 08:21:08 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:08 5: HA_Modbus_1: raw read: 0308435c00
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got: 010308435c00
2016.11.01 08:21:08 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 0843 calc crc = 59831, read = 92 -> mismatch! expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:08 5: HA_Modbus_1: raw read: 00412000005801
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got: 010308435c0000412000005801
2016.11.01 08:21:08 4: HA_Modbus_1: ParseFrames: fcode 3 from 1, data 08435c000041200000 calc crc = 344, read = 344  expect 3 from 1 for module ModbusZaehler1
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames done, reply to fCode 3, 68 readings
2016.11.01 08:21:08 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.608392953872681
2016.11.01 08:21:08 4: HA_Modbus_1: sends 0104001a0002500c (fcode 4 to 1, tid 0 for Power_L2__VAr (26), len 2)
2016.11.01 08:21:08 5: SW: 0104001a0002500c
2016.11.01 08:21:08 5: HA_Modbus_1: raw read: 0104040000
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got: 0104040000
2016.11.01 08:21:08 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 04 calc crc = 803, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:08 5: HA_Modbus_1: raw read: 0000fb84
2016.11.01 08:21:08 5: HA_Modbus_1: ParseFrames got: 01040400000000fb84
2016.11.01 08:21:09 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0400000000 calc crc = 34043, read = 34043  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:09 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 68 readings
2016.11.01 08:21:09 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.643968105316162
2016.11.01 08:21:09 4: HA_Modbus_1: sends 010400220002d1c1 (fcode 4 to 1, tid 0 for PowerFactor_L3 (34), len 2)
2016.11.01 08:21:10 5: SW: 010400220002d1c1
2016.11.01 08:21:10 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:10 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:10 5: HA_Modbus_1: raw read: 04043f800000f678
2016.11.01 08:21:10 5: HA_Modbus_1: ParseFrames got: 0104043f800000f678
2016.11.01 08:21:10 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 043f800000 calc crc = 30966, read = 30966  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:12 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 68 readings
2016.11.01 08:21:12 4: HA_Modbus_1: sends 010400640008b013 (fcode 4 to 1, tid 0 for Power_Sum_demand__VA (100), len 8)
2016.11.01 08:21:12 5: SW: 010400640008b013
2016.11.01 08:21:12 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:12 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:12 5: HA_Modbus_1: raw read: 0410427eeee54519ec123e86
2016.11.01 08:21:12 5: HA_Modbus_1: ParseFrames got: 010410427eeee54519ec123e86
2016.11.01 08:21:12 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10427eeee54519ec12 calc crc = 32199, read = 34366 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:12 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:12 5: HA_Modbus_1: raw read: cb7441067be4f317
2016.11.01 08:21:12 5: HA_Modbus_1: ParseFrames got: 010410427eeee54519ec123e86cb7441067be4f317
2016.11.01 08:21:12 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 10427eeee54519ec123e86cb7441067be4 calc crc = 6131, read = 6131  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:15 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 72 readings
2016.11.01 08:21:15 4: HA_Modbus_1: sends 0104014e000611e3 (fcode 4 to 1, tid 0 for THD_Voltage_L1_L2__prz (334), len 6)
2016.11.01 08:21:15 5: SW: 0104014e000611e3
2016.11.01 08:21:15 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:15 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:15 5: HA_Modbus_1: raw read: 040c0000000000000000
2016.11.01 08:21:15 5: HA_Modbus_1: ParseFrames got: 01040c0000000000000000
2016.11.01 08:21:15 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c000000000000 calc crc = 37834, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:15 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:15 5: HA_Modbus_1: raw read: 0000000095b7
2016.11.01 08:21:15 5: HA_Modbus_1: ParseFrames got: 01040c00000000000000000000000095b7
2016.11.01 08:21:15 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0c000000000000000000000000 calc crc = 46997, read = 46997  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 75 readings
2016.11.01 08:21:16 4: HA_Modbus_1: sends 0104003c00143009 (fcode 4 to 1, tid 0 for Power_Sum__VAr (60), len 20)
2016.11.01 08:21:16 5: SW: 0104003c00143009
2016.11.01 08:21:16 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:16 5: HA_Modbus_1: raw read: 0428c27b538e3e510ea0000000
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got: 010428c27b538e3e510ea0000000
2016.11.01 08:21:16 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28c27b538e3e510ea000 calc crc = 37470, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:16 5: HA_Modbus_1: raw read: 00c29c7380000000004248
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got: 010428c27b538e3e510ea000000000c29c7380000000004248
2016.11.01 08:21:16 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28c27b538e3e510ea000000000c29c738000000000 calc crc = 841, read = 18498 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:16 5: HA_Modbus_1: raw read: 036740d0d4fe0000
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got: 010428c27b538e3e510ea000000000c29c7380000000004248036740d0d4fe0000
2016.11.01 08:21:16 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28c27b538e3e510ea000000000c29c7380000000004248036740d0d4fe calc crc = 62789, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:16 5: HA_Modbus_1: raw read: 00003be560424156
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got: 010428c27b538e3e510ea000000000c29c7380000000004248036740d0d4fe000000003be560424156
2016.11.01 08:21:16 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28c27b538e3e510ea000000000c29c7380000000004248036740d0d4fe000000003be56042 calc crc = 58069, read = 22081 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:16 5: HA_Modbus_1: raw read: 5e359461
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames got: 010428c27b538e3e510ea000000000c29c7380000000004248036740d0d4fe000000003be5604241565e359461
2016.11.01 08:21:16 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28c27b538e3e510ea000000000c29c7380000000004248036740d0d4fe000000003be5604241565e35 calc crc = 24980, read = 24980  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:16 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 83 readings
2016.11.01 08:21:16 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.41467809677124
2016.11.01 08:21:17 4: HA_Modbus_1: sends 010400160002900f (fcode 4 to 1, tid 0 for Power_L3__VA (22), len 2)
2016.11.01 08:21:17 5: SW: 010400160002900f
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 0404000000
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010404000000
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0400 calc crc = 55618, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 00fb84
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 01040400000000fb84
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 0400000000 calc crc = 34043, read = 34043  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 83 readings
2016.11.01 08:21:17 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.634979963302612
2016.11.01 08:21:17 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.15368390083313
2016.11.01 08:21:17 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.150874137878418
2016.11.01 08:21:17 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.148200035095215
2016.11.01 08:21:17 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.145294904708862
2016.11.01 08:21:17 4: HA_Modbus_1: sends 010400f00014f036 (fcode 4 to 1, tid 0 for THD_Current_L1__prz (240), len 20)
2016.11.01 08:21:17 5: SW: 010400f00014f036
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 01
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 01
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 0428420eca
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 2842 calc crc = 10462, read = 51726 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 3b0000000000
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca3b0000000000
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28420eca3b000000 calc crc = 41702, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 00000000000000
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca3b000000000000000000000000
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28420eca3b00000000000000000000 calc crc = 35998, read = 0 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 404e498d41560a
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca3b000000000000000000000000404e498d41560a
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28420eca3b000000000000000000000000404e498d41 calc crc = 37890, read = 2646 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 0400000000c29a
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca3b000000000000000000000000404e498d41560a0400000000c29a
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28420eca3b000000000000000000000000404e498d41560a0400000000 calc crc = 31736, read = 39618 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 8a28000000003e
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca3b000000000000000000000000404e498d41560a0400000000c29a8a28000000003e
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28420eca3b000000000000000000000000404e498d41560a0400000000c29a8a28000000 calc crc = 52509, read = 15872 -> mismatch! expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got wrong crc and returns (maybe data is still incomplete)
2016.11.01 08:21:17 5: HA_Modbus_1: raw read: 8fdca177d5
2016.11.01 08:21:17 5: HA_Modbus_1: ParseFrames got: 010428420eca3b000000000000000000000000404e498d41560a0400000000c29a8a28000000003e8fdca177d5
2016.11.01 08:21:17 4: HA_Modbus_1: ParseFrames: fcode 4 from 1, data 28420eca3b000000000000000000000000404e498d41560a0400000000c29a8a28000000003e8fdca1 calc crc = 54647, read = 54647  expect 4 from 1 for module ModbusZaehler1
2016.11.01 08:21:18 5: HA_Modbus_1: ParseFrames done, reply to fCode 4, 90 readings
2016.11.01 08:21:18 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler1 not over, try again in 0.444178104400635
2016.11.01 08:21:18 4: HA_Modbus_1: sends 01030002000265cb (fcode 3 to 1, tid 0 for Demand_Period__minutes (2), len 2)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 01 November 2016, 14:04:39
Hallo der-Lolo,

was läuft denn noch nicht rund?
Falls Du Dich an den Debug-Meldungen störst, die bei noch nicht vollständig empfangenen Antworten wrong crc melden, das ist bei verbose 5 normal. Einfach verbose wieder auf etwas kleineres als 5 setzen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 01 November 2016, 16:38:27
Ich habe ja wie beschrieben zwei SDM zähler und noch einen Wärmemengenzähler...
Schon beim inbetrieb nehmen des zweiten zählers kam dann nichts mehr an.

Heute mittag habe ich nun neues Kabel gelegt, Cat6 jetzt anstelle von J-Y(ST)Y 2x2x0,8

Heute abend versuche ich noch den WMZ zum reden zu bringen...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 01 November 2016, 16:40:08
Hast du dem zweiten denn eine andere Adresse gegeben?

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 01 November 2016, 17:13:38
Hey Bjoernar - was macht die Geisha? ;-)

die Stromzähler geben nun sauber alles an FHEM weiter.
Den Wärmemengenzähler hab ich nun auch angeschlossen und in FHEM definiert...
Aber wie ich dem Modul nun sage welche Readings geholt werden sollen habe ich noch nicht verstanden...

Kann mir mal jemand einen schupser in die richtige Richtung geben?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 01 November 2016, 17:15:26
Ich poste später mal meine Konfiguration von den Stromzähler ... Die Geisha rennt momentan wie sie soll .....

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 02 November 2016, 07:54:28
Vielen DANK liebes Forum -
Aktuell habe ich die beiden Stromzähler @19200,8,E,1 am laufen.
Ich glaube es lag tatsächlich am Kabel, ich habe nun ein cat6 kabel zwischen den Slaves...

In der Englischen Doku des WMZ steht die letzten drei Ziffern der Seriennummer ergäben die Modbus-ID,
in der deutschen Doku wird von der Kundennummer gesprochen. Mit meiner minimal Konfig bekomme ich auf keine ID eine antwort.
Gibt es eine möglichkeit den Bus abzuscannen? Würde meine minimal Konfiguration überhaupt antworten?
Die Doku des WMZ hängt auch hier im Thread als PDF.


define WMZ ModbusAttr 35 30
attr WMZ userattr obj-h258-reading obj-h4-reading verbose
attr WMZ IODev HA_Modbus_1
attr WMZ obj-h258-reading Durchfluss
attr WMZ room Modbus
attr WMZ verbose 5
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 02 November 2016, 08:36:37
Hast du mal nur den WMZ angehängt und ggf. die Baudrate angepasst? Ich nutze nur 9600. Da ist die Verkabelung auch noch egaler. Auf was ist denn der WMZ eingestellt?

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 02 November 2016, 09:03:40
Die Einstellungen der Modbus Parameter am WMZ kann man, wenn ich alles richtig verstehe nur per optischer Schnittstelle + Software vom Hersteller beeinflussen...
Deswegen habe ich ja die Stromzähler auf 19200,8,E,1 eingestellt damit alle Geräte gleich sind.

Solo habe ich noch nicht probiert - das steht noch aus.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 02 November 2016, 23:28:14
Hallo Stefan!

Wie kann ich rausfinden wie ich die 4 Eingänge meines 4Fach relais benutzte. Die 4 Relais zu schalten ist mit ModbusAttr kein Problem. Leider gibt es keine Doku. Kein Versender liefert eine Doku. http://www.ebay.ca/itm/252486367455?rmvSB=true (http://www.ebay.ca/itm/252486367455?rmvSB=true). Preis/Leistung des Moduls ist ein Hit.

lg
Wolfgang


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 03 November 2016, 00:28:46
Hallo der-Lolo,

ich habe 2 Modbus Geräte. Einen Wechselrichter dieser läuft mit 115200 baud über eine 2 Draht-Klingelleitung ca. 40m. Alles ok.
Und einen DRT710 Stromzähler von B+G E-Tech, da habe ich auch einige Zeit gebraucht bis dieser zum laufen kam. Habe auch noch einen anderen RS485-Adapter dafür gekauft
(https://forum.fhem.de/index.php/topic,25315.msg300513.html#msg300513) und noch einen 120 Ohm Abschlußwiederstand angeschlossen, damit ging des dann.

PS:  Ist etwas Arbeit wenn du alle Werte auslesen willst.

attr PWP obj-h12-reading Actual_power
attr PWP obj-h12-expr $val / 100
attr PWP obj-h12-format %.f

attr PWP obj-h38-reading Actual_power_Einheit
attr PWP obj-h38-expr $val
attr PWP obj-h38-map 1:kW, 2:MW, 17:kWh, 18:MWh

Hier eine Beispielkonfig, ist von meinem WR.


# RS485 SolarEdge Wechselrichter
define PWP ModbusAttr 3 60 192.168.2.7:20108 RTU
attr PWP userattr dev-h-combine dev-h-defPoll obj-h100-reading obj-h101-reading obj-h103-expr obj-h103-format obj-h103-reading obj-h107-map obj-h107-reading obj-h68-expr obj-h68-reading obj-h69-expr obj-h69-reading obj-h70-expr obj-h70-reading obj-h71-reading obj-h72-reading obj-h73-reading obj-h74-reading obj-h75-reading obj-h83-reading obj-h84-expr obj-h84-reading obj-h85-expr obj-h85-reading obj-h86-expr obj-h86-reading obj-h87-expr obj-h87-reading obj-h88-expr obj-h88-reading obj-h89-expr obj-h89-reading obj-h90-expr obj-h90-reading obj-h91-expr obj-h91-reading obj-h92-expr obj-h92-reading obj-h93-expr obj-h93-format obj-h93-len obj-h93-reading obj-h93-unpack obj-h95-expr obj-h95-reading obj-h96-expr obj-h96-reading obj-h97-expr obj-h97-reading obj-h98-expr obj-h98-reading obj-h99-expr obj-h99-reading verbose
attr PWP dev-h-combine 50
attr PWP dev-h-defPoll 1
attr PWP obj-h100-reading I_DC_Leistung_W
attr PWP obj-h101-reading I_DC_Leistung_SF
attr PWP obj-h103-expr $val / 100
attr PWP obj-h103-format %.f
attr PWP obj-h103-reading Temp_Kuehler_C
attr PWP obj-h107-map 1:Aus, 2:Nachtmodus, 4:WR_An
attr PWP obj-h107-reading C_Status
attr PWP obj-h68-expr $val
attr PWP obj-h68-reading C_Geraeteadresse
attr PWP obj-h69-expr $val
attr PWP obj-h69-reading C_SunSpec_DID
attr PWP obj-h70-expr $val
attr PWP obj-h70-reading C_SunSpec_Laenge
attr PWP obj-h71-reading I_AC_Strom_A
....



pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 03 November 2016, 09:13:42
Hallo pejonp,
danke für Deine mühe - ich denke bei dem Wärmemengenzähler scheitere ich an der passenden ID.
Oder wie ich jetzt an Deiner Config erkenne an nicht gesetzten Attributen def-poll z.b.

Gibt es eigentlich irgendwo ein howto für ModbusAttr?
Soviele werte wie der Zähler anbietet brauch ich erstmal nicht - mir geht es zuerst um T1&2 Delta T und den Wasserdurchfluss und natürlich die gelieferte Wärmeenergie.
Nur so kann ich interpretieren ob die Low-Cost Wärmepumpe macht was sie soll...

Ich bin diese Woche nicht mehr in der nähe des FHEM systems - einen Zugang von aussen gibts noch nicht.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 November 2016, 12:03:05
Hallo,

Einen Modbus-Scanner hatte ich mal in einer rudimentären Form im Modul integriert. Ein Praktikant in der Firma hat daraus einen Standalone-Scanner gebaut. Den kann ich nächste Woche posten wenn ich wieder im Büro bin.

Auch für das Relais könnte der Scanner die Lösung sein.

Doku zu ModbusAttr steht im Wiki: http://www.fhemwiki.de/wiki/ModbusAttr
Im Prinzip entspricht die Konfiguration von ModbusAttr direkt dem Definitions-Hash von Modulen, die auf 98_Modbus basieren. Man kann das eine in das andere übersetzen ...

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 03 November 2016, 14:36:27
Das wäre wirklich toll wenn Du diesen Scanner hier "einhängen" könntest.
Die Doku schau ich mir an! Nächste Woche gehts weiter...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eisler am 03 November 2016, 14:44:07
Hallo,

den Modbus-Scanner könnte ich auch gebrauchen. Würde auch nichts schaden wenn er im Modul integriert wäre.

Grüße
Stephan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 03 November 2016, 20:47:20
Hallo Danke für den Tipp!

Habe mir im Internet einen Scanner runtergeladen. Allerdings für Windows.
Aber mein Problem habe ich damit gelöst.
http://freemodbus.com/download/ (http://freemodbus.com/download/)
In Fhem eingebaut wäre es sicher ein Hit. Speziell für billige Chinaprodukte ohne Anleitung.

lg
Wolfgang


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: eisler am 03 November 2016, 21:53:25
Leider Windows. Also besser in FHEM einbauen.  :)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 03 November 2016, 21:56:32
Hallo!

Leider doch nicht so toll. Folgendes: Der Scanner zeigt bei den 4 Eingängen bei "on"

E1: 01 02 0D 01 01 01 01 01 01 01 01 01 01 01 01 01 2B 36
E2: 01 02 0D 02 02 02 02 02 02 02 02 02 02 02 02 02 46 D9
E3: 01 02 0D 04 04 04 04 04 04 04 04 04 04 04 04 04 9F 47
E4: 01 02 0D 08 08 08 08 08 08 08 08 08 08 08 08 08 2E 3A

Bei off:
01 02 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 F1 AC

Meine Fhemeinträge:

#Rin1
define Digi1 ModbusAttr 1 2
attr Digi1 IODev VR400Mod
attr Digi1 dev-d-combine 5
attr Digi1 dev-d-defPoll 1
attr Digi1 obj-d1-reading Digi1
attr Digi1 room Relais
attr Digi1 stateFormat {sprintf("%.0f ", ReadingsVal($name,"Digi1",0))}

#Rin2
define Digi2 ModbusAttr 1 2
attr Digi2 IODev VR400Mod
attr Digi2 dev-d-combine 5
attr Digi2 dev-d-defPoll 1
attr Digi2 obj-d2-reading Digi2
attr Digi2 room Relais
attr Digi2 stateFormat {sprintf("%.0f ", ReadingsVal($name,"Digi2",0))}

#Rin3
define Digi3 ModbusAttr 1 2
attr Digi3 IODev VR400Mod
attr Digi3 dev-d-combine 5
attr Digi3 dev-d-defPoll 1
attr Digi3 obj-d4-reading Digi3
attr Digi3 room Relais
attr Digi3 stateFormat {sprintf("%.0f ", ReadingsVal($name,"Digi3",0))}

#Rin4
define Digi4 ModbusAttr 1 2
attr Digi4 IODev VR400Mod
attr Digi4 dev-d-combine 5
attr Digi4 dev-d-defPoll 1
attr Digi4 obj-d8-reading Digi4
attr Digi4 room Relais
attr Digi4 stateFormat {sprintf("%.0f ", ReadingsVal($name,"Digi4",0))}


Leider reagiert Fhem nur wenn der E1 geschlossen wird. Allerdings werden in Fhem dann alles 4 als geschlossen angezeigt. Bitte um Hilfe.

lg
wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 November 2016, 23:22:01
Hallo Wolfgang,

Was bedeutet die Ausgabe des Scanners denn?
Welche Register / Coils / digital inputs sind denn abgebildet?
In welchem Schalterzustand?

In jedem Fall ist aber die Definition falsch. Bei ModbusAttr definiert man ein Fhem-Gerät je Gerät mit einer Modbus-ID. Die verschiedenen Objekte dann per Attribute in dem einen Fhem-Gerät.

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 03 November 2016, 23:25:56
Hallo Stefan!
Ich definiere immer jedes Register extra. Hat aber auf die Funktion keinen Einfluss.
Nach Änderung keine Änderung der Funktion.
Hier meine Änderung in ein define.

#Rin1
define Digi1 ModbusAttr 1 2
attr Digi1 IODev VR400Mod
attr Digi1 dev-d-combine 5
attr Digi1 dev-d-defPoll 1
attr Digi1 obj-d1-reading D1
attr Digi1 obj-d2-reading D2
attr Digi1 obj-d4-reading D3
attr Digi1 obj-d8-reading D4
attr Digi1 room Relais
attr Digi1 stateFormat D1 D2 D3 D4


Bei
D1 reagiert auch D4
Bei D2 reagiert D2
D3 reagiert gar nicht
D4 reagiert D3



Digitaler Eingang 1: geschlossen
01 02 0D 01 01 01 01 01 01 01 01 01 01 01 01 01 2B 36
Digitaler Eingang 2: geschlossen
01 02 0D 02 02 02 02 02 02 02 02 02 02 02 02 02 46 D9
Digitaler Eingang 3: geschlossen
01 02 0D 04 04 04 04 04 04 04 04 04 04 04 04 04 9F 47
Digitaler Eingang 4: geschlossen
01 02 0D 08 08 08 08 08 08 08 08 08 08 08 08 08 2E 3A
Alle Digitalen Eingänge offen:
01 02 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 F1 AC

Für mich bedeutet das 02=d 1,2,4,8 die Registerwerte.

Nachtrag:Gelöst
D1=1
D2=2
D3=3
D4=4

Warum?

lg
Wolfgang


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 07 November 2016, 20:55:57
Hallo!

Habe noch eine weitere Frage.
Wie kann ich für mein 4Fach Relais die ID einstellen.
Ein Gerät hat die ID 1. Wenn ich 2 am Bus anschließe reagieren beide auf 1. Das Gerät hart keine Jumper oder Schalter.

In der Doku steht.
ID set   01 06 00 02 00 XX 1b 0a
ID read 00 03 00 02 00 XX 1b 0a

lg
Wolfgang

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 November 2016, 21:46:08
Hallo Wolfgang,

Zu Deiner vorletzten Frage:
Coils und discrete Inputs sind bei Modbus Bit-Werte, keine Register.
Ich vermute, dass Du hier einen Framedump gepostet hast (das war meine Frage zur Bedeutung der Ausgabe des Scanners):
Zitat
Digitaler Eingang 3: geschlossen
01 02 0D 04 04 04 04 04 04 04 04 04 04 04 04 04 9F 47
Das wäre dann die Antwort des Geräts auf einen Function Code 2 (Read Discrete Inputs) mit Länge 8*13 Bits (warum auch immer das so abgefragt wurde). Danach kommt die Checksummme.
01 ist vermutlich Die Id,
02 der FCode
0D die Länge der Antwort
04 das Byte in dem die ersten 8 Inputs bitweise kodiert sind

discrete Input 0 wäre dann das erste Bit, Input 1 das zweite, etc. und die Bitfolge 0100 (drittes Bit gesetzt bzw. discrete Input 3 gesetzt) ergibt dann im Protokoll die 4 als Byte.
Die ganze Kodiererei macht aber das Modul für Dich, deshalb

attr Digi1 obj-d3-reading D3



Zu Deiner zweiten Frage:

ID set   01 06 00 02 00 XX 1b 0a
ID read 00 03 00 02 00 XX 1b 0a


auch das sollen vermutlich Modbus Frames sein.
01 06 00 02 00 XX
könnte ID1, FCode 6 (write Holding Register), Adresse 0002, Wert bedeuten.

vermutlich antworten die Geräte alle auf ID0, was die zweite Zeile zum Lesen erklären könnte.
fcode 3 wäre read Holding Register ...

Mit entsprechenden Attributen kannst Du möglicherweise je ein Gerät anschließen und dann per set Befehl das passende Modbus-Frame erzeugen lassen.
Ob ich das richtig interpretiere kann ich nicht garantieren. Du musst das auf eigenes Risiko testen ;-)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 07 November 2016, 21:54:37
Danke Stefan!

Aber ich verstehe nur Bahnhof.
Ein Gerät funktioniert super, aber ich habe 2 davon.
In einer anderen Beschreibung steht folgendes. Die ID ist wie folgt zu setzen:

set01  00 06 40 00 00 01 5c 1b
set02  00 06 40 00 00 02 1c 1a

Wie könnt ich das in Fhem machen?

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 November 2016, 22:26:30
Tja, da ist natürlich die erste Frage welche Anleitung korrekt ist.

Wenn die erste stimmt und im Holding Register 2 die Modbus-Id steht, dann kannst Du das als Objekt definieren und einen Set zulassen:

attr Digi1 obj-h2-reading BusID
attr Digi1 obj-h2-set 1


Mit

set Digi1 BusID 2

Kannst Du dann möglicherweise die ID auf 2 Setzen.

Wenn Du vorher noch ein

attr Digi1 verbose 5

eingibst, siehts Du im Log, wie daraus ein Frame erstellt wird.
Wenn Du beide Geräte dabei angeschlossen lässt, stellst Du beide auf ModbusId 2 und kannst erst wieder mit Ihnen reden, wenn Du auch in der Definition von Digi1 die neue ID angibst.
Deshalb würde ich nur eines der Geräte umstellen.

Wennn die Anleitung natürlich falsch ist, oder ich das falsch interpretiere, könnte Dein Gerät auch unbrauchbar werden ...

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 07 November 2016, 23:15:16
Danke Stefan für die Mühe!

Es klappt nicht. Ich mach einfach für die beiden 4er Relais je einen Bus. Kostet mich 3 Euro für USB Stick und 2 Drähte. Ich hab mir mehrere Windows-Tools zum programmieren runtergeladen. Aber egal was ich mache die ID ist immer 1.
Wäre cool gewesen, da die Dinger 4 Relais und 4 Eingänge haben und das um 10Euro.
Die Versionen die nur Relais haben kann man per Dipp's einstellen.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 08 November 2016, 14:38:45
Hallo Stefan!  [gelöst unter Windows]
Ich kanns doch nicht lassen. Wie interpretierst du das?
Also ich hab grad mit einem Windows Tool "CAS Modbus Scanner v1.02bD"
den wert: "00 06 40 00 00 02 1c 1a" zum Gerät gesendet.
4000 = 16384 somit h16385 mit 02
Super funktioniert.  Das Gerät reagiert auf ID2.
Ich kann nun alle ID's programmieren

Leider kommt bei Fhem die Meldung: wrong Device Id
Kann das Modul nicht auf ID 0 zugreifen?


lg
Wolfgang

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 November 2016, 19:57:12
So, die letzten Tage waren einfach zu stressig, ich war auch nicht in der nähe des Systems...
Ich hänge hier mal ein list meines Wärmemengenzählers an:
Internals:
   DEF        35 30
   DEST
   INTERVAL   30
   IODev      HA_Modbus_1
   MODBUSID   35
   ModuleVersion 3.3.1 - 18.7.2016
   NAME       WMZ
   NR         83
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1478631255.16376
   TRIGGERTIME_FMT 2016-11-08 19:54:15
   TYPE       ModbusAttr
   Helper:
     lsend      1478631229.37702
   Lastread:
Attributes:
   IODev      HA_Modbus_1
   dev-h-defPoll 1
   obj-h258-reading Durchfluss
   obj-h258-showget 1
   obj-h4-showget 1
   room       Modbus
   userattr   IODev dev-h-defPoll obj-h258-reading obj-h258-showget obj-h4-reading obj-h4-showget verbose


Hätte ich denn so eine minimal Konfiguration die etwas abfragt, oder fehlt noch was?

@Stefan, hast Du mal geschaut ob Du den Scanner bekommst? Wegen der ID bin ich immer noch unsicher...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: oniT am 08 November 2016, 20:42:05
Hallo Stefan,

ich habe auf Basis von ModbusSet und ModbusTrovis5576 ein Modul erstellt. Dieses läuft mit Modbus TCP, also wie im Beispiel:


define WP ModbusAttr 1 60 192.168.1.122:502 TCP


Das Problem ist nun, dies funktioniert nur wenn zusätzlich ein Device mit dem Modul Modbus angelegt wird. Auch wenn es überhaupt kein Modbus RTU gibt und der USB Port überhaupt nicht dafür verwendet wird ist es notwendig, da fhem sonst abstürzt oder erst überhaupt nicht mehr startet.


define ModBusLine Modbus /dev/ttyUSB1@9600


Internals:
   BUSY       0
   DEF        /dev/ttyUSB1@9600,8,N,1
   DeviceName /dev/ttyUSB1@9600,8,N,1
   LASTOPEN   1478634066.47763
   NAME       rs232
   NR         38
   PARTIAL
   RAWBUFFER
   STATE      disconnected
   TYPE       Modbus
   nextOpenDelay 60
   Readings:
     2016-11-06 22:32:34   state           disconnected
Attributes:


Ist das wirklich notwendig oder irgendwo ein Fehler?

Mir ist klar, das dies bei Modbus RTU notwendig ist um das Protokoll mit Baudrate usw. usf. anzulegen. Aber bei Modbus TCP? Da nützt dies ja im Prinzip nichts.

Danke
Gruß
Tino
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 November 2016, 00:20:20
Hallo Wolfgang,

Das Modul hält bisher 0 für eine ungültige ID.
Du müsstest Deine Relais aber auch statt mit 0 mit der korrekten ID ansprechen können. 0 scheint bei den Teilen ja nur als Broadcast verwendet zu werden.

Schau doch bei Interesse mal hier: http://modbus.org/specs.php

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 November 2016, 00:26:41
Hallo Tino,

Dein Modul sollte eigentlich in der Init-Funktion dafür sorgen, dass das Basismodul geladen wird und das sollte reichen. Ich schau mal ob da noch ein Fehler drin ist...

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 November 2016, 00:29:20
Hallo der-Lolo,

Der Scanner ist in Arbeit. Ich hatte da noch ein paar Ideen, wie der Scanner auch gleich Attribute für Register anlegen könnte.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 11 November 2016, 08:19:54
Hallo Stefan

Ich hab das Ding mit 00 06 40 00 00 02 1c 1a programmiert. Das ist ID0.
Ist aber nicht so dragisch da ich eh ein Windowstool habe um es zu programmieren.  Wäre nur schön wenn diese Sperre augehoben wird.
Lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 November 2016, 21:38:05
Hallo Wolfgang,

Nur für den Fall dass wir hier aneinander vorbei geredet haben:
ID 0 ist keine gültige ID für ein Gerät sondern die Broadcast-Adresse. Das bedeutet dass ein Request an ID0 von allen am Bus angeschlossenen Geräten verarbeitet wird. In Deiner Anleitung wird deshalb auch zum Auslesen ein Request an Adresse 0 gesendet um die tatsächlich im angeschlossenen Gerät eingestellte ID abzufragen. In so einem Fall ist die eingestellte ID ja unbekannt und deshalb ist ein Broadcast die einzig sinnvolle Möglichkeit.

Mit 00 06 40 00 00 02 1c 1a hast Du für alle am Bus angeschlossenen Geräte das Holding-Register 4000 auf den Wert 2 gesetzt. Jetzt kannst Du mit dem Gerät über ID2 kommunizieren. ID0 wird nicht mehr benötigt.
Auch zum Ändern eines Geräts von ID1 auf ID2 hättest Du eigentlich über Fhem einen Request an ID1 schicken und das Register 4000 (umgerechnet in Dez) mit 2 beschreiben können.

Dennoch ist es vermutlich eine gute Idee auch Broadcasts bei Modbus per Fhem zu ermöglichen und setze das gerne auf die Wunschliste für de nächste Version :-)

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 November 2016, 22:15:48
Hallo Wolfgang,

mir ist gerade noch was aufgefallen:
Du hattest mal geschrieben

4000 = 16384 somit h16385 mit 02


Das Modbus-Modul beginnt so wie das Protokoll bei 0 mit dem Zählen.
Für die Attribute wäre das deshalb obj-h16384-...
Sonst schreibst Du in hex 4001.

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 13 November 2016, 18:12:09
Super Stefan,
Danke für die Nachricht! Ab Dienstag wird geheizt. Ich füttere DBLog also direkt mit Daten...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 13 November 2016, 18:49:23
Welche Zähler verwendest du eigentlich und was hat er gekostet? Ich habe leider damals nur einen mit Impulsausgang für die Leistung bekommen bzw. die mit Modbus waren mir viel zu teuer. Aber damit habe ich natürlich keine genaue Erfassung.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 13 November 2016, 21:12:35
Mir war der Kamstrup eigentlich auch viel zu teuer, aber ich wollte nicht ohne messbarkeit ins rennen gehen...
Was günstigeres habe ich aber auch nicht gefunden. Die mit Modbus sind wirklich wahnsinnig teuer.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 13 November 2016, 21:16:52
Aliexpress.com
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 14 November 2016, 00:38:39
Hallo,

ich nutze einen DRT710M von B+G Tech. Den gibt es dort nicht mehr.
Hier ein anderes Modell SDM530-Modbus.
http://bg-etech.de/os/product_info.php/cPath/25_28/products_id/417

Für den SDM630 (http://bg-etech.de/os/product_info.php/products_id/421) gibt es auch schon ein Modul 98_ModbusSDM630M.pm (https://forum.fhem.de/index.php/topic,25315.msg274011.html#msg274011) .

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 14 November 2016, 06:12:19
 ;)
Danke für die Info...
den Strom zähle ich auch mit zwei SDM630M - das funktioniert auch mittlerweile ohne nennenswerte probleme. Zusätzlich habe ich einen Wärmemengenzähler der Fa. Kamstrup. Im bereich Wärmemenge ist es nicht ganz so einfach einen geeigneten Zähler mit Modbus Schnittstelle auszuwählen...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 14 November 2016, 12:01:48
Hallo,

dank der minus Grade habe ich mit meinem Lüftungsanlage ein Problem.

Ich frage die Temperatur des Außenluft mit folgenden Eintrag ab:

"h217" => {
name => "REG_HC_TEMP_IN5", # internal name of this register in the hardware doc
reading => "REG_HC_TEMP_IN5", # name of the reading for this value
set => 0, # this value can be set
expr => '$val/10',
}


Das funktionier mit plus Temperaturen auch wunderbar.
Bei negativen werten bekomme ich immer sehr hohe Werte.
Den höchsten Wert den ich gefunden habe ist 6553,5C° ich vermute das hiermit dann -0,5°C gemeint sind. Also 6554-6553,5=0,5

Kann meine verutung so richtig sein?
Und wenn ja wie sorge ich dafür das die werte richtig umgewandelt werden?

Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 November 2016, 20:47:44
Hallo,

aus dem Wiki zu ModbusAttr:
Zitat
obj-[cdih][1-9][0-9]*-unpack
defines the unpack code to convert the raw data string read from the device to a reading. For an unsigned integer in big endian format this would be "n", for a signed 16 bit integer in big endian format this would be "s>" and for a 32 bit big endian float value this would be "f>". (see the perl documentation of the pack function).

in einem Modul auf Basis von 98_Modbus.pm wird entsprechend ein Hash-Eintrag mit Namen unpack vergeben. Wenn nichts angegeben ist, wird "n"angenommen (unsigned int). Besser wäre im konkreten Fall vermutlich "s" oder "s>".

Gruss 
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 14 November 2016, 21:13:35
Danke werde ich dann gleich mal testen.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: DM am 15 November 2016, 11:40:37
Hallo Stefan,

zwei kurze Fragen zum Modbus-Modul:
- kann man bei einer bestehenden Modbus-Kommunikation (RTU) nur 'mithören' (und natürlich die Reading aktualisieren) bzw. mit FHEM einen zweiten Master aufschalten?
- beim Verwenden von dev-h-defUnpack "l>" stürzt FHEM ab... Ist das nicht vorgesehen?

Grüße,
Dirk
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 16 November 2016, 20:56:56
Hallo Stefan,

bei Deinem Modul aus Post#305 habe ich ein Problem: Nach rereadcfg bleibt beim ModbusRTU das Modul mit Status "opened" stehen und macht keine Kommunikation. Bei ModbusTCP bleibt das Modul mit "disconnected" stehen. Nach einem Rechner-Reboot läuft alles wieder normal.

Ich habe jetzt wieder das alte 98_Modbus.pm (Version vom 2015-08-17) aktiviert, da habe ich das Problem nicht. (Aber leider auch kein "disable").

An was könnte das liegen?

Vielen Dank schon mal im Voraus.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 16 November 2016, 23:43:55
Hallo Dirk,

Ein passives Mitlesen ist bisher nicht vorgesehen. Da müsste erst noch einiges programmiert werden, denn einem Modbus-Frame sieht man ohne Kontext nicht an, ob es ein Request oder eine Response ist. Das erschließt sich nur aus dem Kontext. In der Response steht auch die Adresse nicht mehr drin. Die muss man aus dem vorangegangenen Request kennen. Bisher sendet das Modul Requests und hat keine Funktionen um fremde Requests zu lesen bzw. zu tracken.
Falls ich mal Langeweile habe, baue ich das vielleicht noch ein, aber ich hätte auch gar keine anderen Master zum Testen.
Als nächstes steht jetzt erst eine neue Scan-Funktion auf der Liste.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 16 November 2016, 23:47:02
Hallo Allgaeuer,

Klingt nach einem Bug. Das muss ich mir ansehen.
rereadcfg mache ich normalerweise auch nicht - eher shutdown restart.
Daher kann es schon sein, dass ich da noch etwas übersehen habe.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 17 November 2016, 20:01:57
Hallo Stefan!

Arbeite mir Modbusattr und habe auch das Problem beim -Graden. Habe
attr T_ZuA dev-h-defUnpack s>
eingebaut. Ist das so richtig. Leider oder zum Glück ist es im Moment vorbei mit der Kälte.
Bei meinem Modbus-Thermostat hat die Zeile funktioniert.


lg
Wolfgang

define T_ZuA ModbusAttr 1 60
attr T_ZuA userattr IODev dev-h-combine dev-h-defPoll dev-h-defUnpack obj-h217-expr obj-h217-reading sortby stateFormat
attr T_ZuA IODev VR400Mod
attr T_ZuA dev-h-combine 5
attr T_ZuA dev-h-defPoll 1
attr T_ZuA dev-h-defUnpack s>
attr T_ZuA group ModbusSystemair
attr T_ZuA obj-h217-expr $val/10
attr T_ZuA obj-h217-reading REG_HC_TEMP_IN5
attr T_ZuA room Modbus,Haus
attr T_ZuA sortby 04
attr T_ZuA stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"REG_HC_TEMP_IN5",0))}
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 18 November 2016, 08:13:55
Hallo,

ich habe leider auch schon wieder Probleme mit meinem Wechselrichter, es funktionierte jetzt seit ein paar Wochen nun aber leider nicht mehr:


2016.11.17 17:20:17 3: Wechselrichter1: 3 successive timeouts, trying to reconnect
2016.11.17 17:20:17 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.11.17 17:20:20 3: Can't connect to 192.168.178.21:502: Die Wartezeit für die Verbindung ist abgelaufen
2016.11.17 18:40:13 3: Wechselrichter1: 4 successive timeouts, trying to reconnect
2016.11.17 18:40:13 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.11.17 18:40:13 3: Wechselrichter1 device opened
2016.11.17 18:40:15 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.11.17 18:40:17 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.11.17 18:40:18 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.11.17 18:40:19 3: Wechselrichter1: no IODev found for Wechselrichter1


Seit dem kommt nur noch Wechselrichter1: no IODev found for Wechselrichter1

"maxTimeoutsToReconnect 3" ist gesetzt.

Was ich sehr komisch finde ist das er um 18:40:13 schreibt: 3: Wechselrichter1 device opened

1. War der WR da nicht erreichbar
2. Stand das Gerät Wechselrichter1 auf disable

Vielleicht kannst du ja weiterhelfen.

Gruß
Björnar


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 18 November 2016, 08:55:25
Hallo Bjorrnar,

das Log sieht so aus als ob die wieder auf einer alten Version bist ...
Kann es sein, dass Du ein Fhem-update gemacht hast?
Die neue Version von 98_Modbus.pm ist noch nicht eingecheckt und so hast Du vermutlich wieder eine alte Version bekommen.

Was zeigt er denn im Internal ModuleVersion an?

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 18 November 2016, 08:59:42
Hallo Wolfgang,

ob "s>" der richtige unpack-Code ist, kommt auf die Datenkodierung des entsprechenden Registers Deines Geräts an.
Das kann ich Dir nicht sagen, da hilft nur Ausprobieren.
Ich würde es aber tendentiell nicht mit dev-h-defUnpack als Default für alle Holding-Register setzen sondern nur bei den Readings, die auch entsprechende Werte enthalten mit obj-hxxx-unpack.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 18 November 2016, 09:09:20
Zitat von: StefanStrobel am 18 November 2016, 08:55:25
Hallo Bjorrnar,

das Log sieht so aus als ob die wieder auf einer alten Version bist ...
Kann es sein, dass Du ein Fhem-update gemacht hast?
Die neue Version von 98_Modbus.pm ist noch nicht eingecheckt und so hast Du vermutlich wieder eine alte Version bekommen.

Was zeigt er denn im Internal ModuleVersion an?

Gruss
    Stefan

Fuck du hast recht.
Kann ich das irgendwie unterbinden?

Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 18 November 2016, 13:33:34
Hallo,

anbei eine neue Version zum Testen.
Es gab noch einen Bug bei rereadcfg und das Modul akzeptiert nun auch Responses mit abweichender ID falls der Request an id0 (Broadcast) gesendet wurde.
Wenn ein paar Leute bestätigen, dass noch alles funktioniert, checke ich die neue Version ein.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 18 November 2016, 14:27:30
ist eingebunden.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 21 November 2016, 12:18:37
eingebunden.. Keine besonderen Vorkommnisse

Id 0 noch nicht gestestet.

klg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 21 November 2016, 12:40:47
Bei mir auch keine Probleme

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 21 November 2016, 17:51:26
Hallo Stefan,

ich habe auf einen RaspberryPi diese beiden Hinweise, die Daten werden aber angezeigt:
2016.11.21 17:33:31 1: PERL WARNING: substr outside of string at ./FHEM/98_Modbus.pm line 507.
2016.11.21 17:33:31 1: PERL WARNING: Use of uninitialized value $rest in numeric gt (>) at ./FHEM/98_Modbus.pm line 509.

in der ModBus.pm

507             $rest = substr($rest, $len * 2);    # take rest of rest starting at len*2 until the end 
508        }
509        Log3 $name, 5, "$name: ParseObj moves to next object, skip $len to $startAdr" if ($rest);

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 21 November 2016, 20:03:05
Vielen Dank für's Testen!

anbei noch mal eine neuere Version, bei der das mit $rest behoben sein sollte und auch das Logging aufgehübscht ist.
Ich hoffe, dass keine neuen Fehler reingeraten sind ...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 21 November 2016, 20:50:28
Hallo Stefan,

jetzt kommt kein Hinweis mehr. Kann auch keinen Fehler feststellen. Läuft.

Tschüß Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 24 November 2016, 19:54:45
Hallo Stefan,

bei mir ist's auch ok - keinen Fehler nach "rereadcfg" festgestellt (sowohl ModbusRTU als auch ModbusTCP).

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 24 November 2016, 21:55:13
Hallo Stefan,
der Scanner ist da jetzt aber noch nicht drin, oder?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 26 November 2016, 07:31:06
Hallo,

ich habe die neue Version jetzt eingecheckt. Der Scanner ist da noch nicht drin sondern wird zunächst hier im Forum als nächste Testversion kommen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 28 November 2016, 20:43:12
Hallo,

ich habe mal angefangen die Scan-Funktionen neu ins Modul einzubauen. Hier ist ein erster Entwurf für das Scannen von Holding-Registern.
Mit

attr MyModbusAttrDevice enableControlSet 1
set MyModbusAttrDevice scanModbusObjects h100-120

würde er die Holding-Register von 100 bis 120 anfragen und wenn eine Antwort kommt entsprechende Readings und Attribute erzeugen.

Die erzeugten Readings sehen dann z.B. so aus:

scan-h100 hex=0021, len=2, string=.!, s=8448, s>=33, S=8448, S>=33


Mit

set MyModbusAttrDevice scanModbusObjects h100-120 2

würde er jeweils 2 Register anfragen und entsprechend auch weitere Interpretationen der Daten anzeigen:

scan-h102 hex=0032012c, len=4, string=.2.,, s=12800, s>=50, S=12800, S>=50, i=12800, i>=50, I=12800, I>=50, f=1.83597581582262e-12, f>=4.59219519743886e-39


Das ganze ist noch weit entfernt von fertig, aber wer schon mal testen möchte kann das gerne tun.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 28 November 2016, 22:51:02
Hm, ich habe das ganze jetzt mal einfach so reingeworfen in meine Installation.

Im Log finde ich folgendes... Toll wäre wenn Du mir jetzt sagst das dort zumindest ein Gerät antwortet...

Achtung - reverse Logs!

2016.11.28 22:48:20 5: SW: 2303006600022296
2016.11.28 22:48:20 4: HA_Modbus_1: HandleSendQueue sends fc 3 to 35, tid 85 for  (h102), len 2)
2016.11.28 22:48:20 4: HA_Modbus_1: timeout waiting for 3 from 35, Request was 230300650002d296, last Buffer:
2016.11.28 22:48:18 5: SW: 230300650002d296
2016.11.28 22:48:18 4: HA_Modbus_1: HandleSendQueue sends fc 3 to 35, tid 128 for  (h101), len 2)
2016.11.28 22:48:18 4: HA_Modbus_1: timeout waiting for 3 from 35, Request was 2303006400028356, last Buffer:
2016.11.28 22:48:16 5: SW: 2303006400028356
2016.11.28 22:48:16 4: HA_Modbus_1: HandleSendQueue sends fc 3 to 35, tid 181 for  (h100), len 2)
2016.11.28 22:48:15 3: WMZ: Scan h from 100 to 120 len 2
2016.11.28 22:48:15 3: WMZ: Scan setVal h100-120 2, 3=120, 4=, 5=2
2016.11.28 22:48:10 4: HA_Modbus_1: timeout waiting for 3 from 35, Request was 23030102000122b4, last Buffer:
2016.11.28 22:48:08 5: SW: 23030102000122b4
2016.11.28 22:48:08 4: HA_Modbus_1: HandleSendQueue sends fc 3 to 35, tid 73 for Durchfluss (h258), len 1)
2016.11.28 22:48:08 5: HA_Modbus_1: ParseFrames got 15 readings from ParseObj
2016.11.28 22:48:07 4: HA_Modbus_1: ParseFrames got fcode 4 from 2, tid 0, values 3f18520e3fe47b15000000004393aa2c0000000043a0f03400000000c30001083f6a2f1a00000000c1be9ddc00000000424820b04413d9fc3e7ced91417747ae42a54fdf4415eee145340f27439069e6 request was for i46 (Current_Avr__A), len 40 for module ModbusZaehler2
2016.11.28 22:48:07 5: HA_Modbus_1: raw read: 45340f27439069e62a84
2016.11.28 22:48:07 5: HA_Modbus_1: ParseFrames: wait for more data (70 / 80)
2016.11.28 22:48:07 5: HA_Modbus_1: raw read: 000000004393aa2c0000000043a0f03400000000c30001083f6a2f1a00000000c1be9ddc00000000424820b04413d9fc3e7ced91417747ae42a54fdf4415eee1
2016.11.28 22:48:07 5: HA_Modbus_1: ParseFrames: wait for more data (6 / 80)
2016.11.28 22:48:07 5: HA_Modbus_1: raw read: 0204503f18520e3fe47b15
2016.11.28 22:48:07 5: SW: 0204002e0028902e
2016.11.28 22:48:07 4: HA_Modbus_1: HandleSendQueue sends fc 4 to 2, tid 29 for Current_Avr__A (i46), len 40)
2016.11.28 22:48:06 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler2 not over, try again in 0.555817127227783
2016.11.28 22:48:06 5: HA_Modbus_1: ParseFrames got 3 readings from ParseObj
2016.11.28 22:48:06 4: HA_Modbus_1: ParseFrames got fcode 4 from 2, tid 0, values 3fb00c170000000000000000 request was for i258 (Current_L1_demand__A), len 6 for module ModbusZaehler2
2016.11.28 22:48:06 5: HA_Modbus_1: raw read: 0000000000ffef
2016.11.28 22:48:06 5: HA_Modbus_1: ParseFrames: wait for more data (5 / 12)
2016.11.28 22:48:06 5: HA_Modbus_1: raw read: 040c3fb00c17000000
2016.11.28 22:48:06 5: HA_Modbus_1: raw read: 02
2016.11.28 22:48:06 5: SW: 020401020006d007
2016.11.28 22:48:06 4: HA_Modbus_1: HandleSendQueue sends fc 4 to 2, tid 9 for Current_L1_demand__A (i258), len 6)
2016.11.28 22:48:06 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler2 not over, try again in 0.234207153320312
2016.11.28 22:48:06 4: HA_Modbus_1: CheckDelay commDelay for ModbusZaehler2 not over, try again in 0.599462032318115
2016.11.28 22:48:06 5: HA_Modbus_1: ParseFrames got 3 readings from ParseObj
2016.11.28 22:48:06 4: HA_Modbus_1: ParseFrames got fcode 4 from 2, tid 0, values 439f4b870000000000000000 request was for i12 (Power_L1__W), len 6 for module ModbusZaehler2
2016.11.28 22:48:06 5: HA_Modbus_1: raw read: 02040c439f4b8700000000000000002a5c
2016.11.28 22:48:06 5: SW: 0204000c0006b038
2016.11.28 22:48:06 4: HA_Modbus_1: HandleSendQueue sends fc 4 to 2, tid 220 for Power_L1__W (i12), len 6)
2016.11.28 22:48:06 5: HA_Modbus_1: ParseFrames got 13 readings from ParseObj
2016.11.28 22:48:05 4: HA_Modbus_1: ParseFrames got fcode 4 from 101, tid 0, values 44888c6e00000000448899dd00000000c1f2474e3f7fe73f00000000bfc9989300000000424820d543d2b9ba000000003f35810642294ed943d3d24045005a8b448707c5 request was for i52 (Power_Sum__W), len 34 for module ModbusZaehler1
2016.11.28 22:48:05 5: HA_Modbus_1: raw read: 65044444888c6e00000000448899dd00000000c1f2474e3f7fe73f00000000bfc9989300000000424820d543d2b9ba000000003f35810642294ed943d3d24045005a8b448707c58c75
2016.11.28 22:46:39 3: WMZ: Scan h from 100 to 120 len 2
2016.11.28 22:46:39 3: WMZ: Scan setVal h100-120 2, 3=120, 4=, 5=2
2016.11.28 22:44:57 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/98_Modbus.pm line 719.
2016.11.28 22:43:47 3: WMZ: Scan h from 100 to 120 len 1
2016.11.28 22:43:47 3: WMZ: Scan setVal h100-120, 3=120, 4=, 5=
2016.11.28 22:43:47 1: PERL WARNING: Use of uninitialized value $5 in concatenation (.) or string at ./FHEM/98_Modbus.pm line 1694.
2016.11.28 22:43:47 1: PERL WARNING: Use of uninitialized value $4 in concatenation (.) or string at ./FHEM/98_Modbus.pm line 1694.
2016.11.28 22:42:42 3: DbRep DbRep - connected
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 29 November 2016, 19:10:48
Hallo,

irgendwie scheint das disable noch nicht zu greifen auch wenn es vielleicht nicht mehr nötig wäre.

Obwohl Wechselrichter1 seit 18:45:05 bereits auf disable steht versucht das Modul weiter eine Verbindung aufzubauen. Oder liegt das daran das noch Einträge in der Warteschlange sind?


2016.11.29 18:47:10 3: Wechselrichter1: 8 successive timeouts, setting state to disconnected
2016.11.29 18:47:12 3: Wechselrichter1: 9 successive timeouts, setting state to disconnected
2016.11.29 18:47:14 3: Wechselrichter1: 10 successive timeouts, setting state to disconnected
2016.11.29 18:47:16 3: Wechselrichter1: 11 successive timeouts, setting state to disconnected
2016.11.29 18:47:18 3: Wechselrichter1: 12 successive timeouts, setting state to disconnected
2016.11.29 18:47:20 3: Wechselrichter1: 13 successive timeouts, setting state to disconnected
2016.11.29 18:47:22 3: Wechselrichter1: 14 successive timeouts, setting state to disconnected


Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 29 November 2016, 22:25:00
Hallo Stefan!

Habe ein neues Termostat. Leider komme ich damit nicht zurecht.
In meinem Windows Programm kann ich mit
01 03 00 3B 00 00  die Temperatur auslesen
als ergebnis bekomme ich
01 03 00 3B 00 1B = ID1, Code3/h-lesen, Register 59 , 27Grad
Wenn ich in Fhem mit h59 lese bekomme ich 15104.0 Grad

Beim sollwert schreiben mit h57 kann ich mit "set Temperatur 22" den Sollwert auf 22 Grad setzten bekomme aber in Fhem kurz danach 14592 angezeigt. Irgendwie liest Fhem nicht richtig.

Laut Doku: Reading Temperatur register Adress 3BH


Wo liegt mein Fehler?
Habe den Scanner ausprobiert. Verstehe ich überhaupt nicht.

lg
Wolfgang

Hier die Doku und ein Bild von meiner Windowstestsoftware


Product Description
FL-W301 Electric room thermostat is featured by unique design and simple operation. Super-luxurious appearance, LED backlight touch keys as well as LCD display showing the room temperature, setting temperature, fan speed and time. It controls the fan speed or electrical cool and heat valve switch and ideal for places installed two or four pipes central air-condition.

Features
IR remote controllable
Three grades fan speed intelligent controlled with cooling, heating and auto mode
LED backlight control keys, easy identification even in darkness
Energy saving up to 30%

Specification
RS485 interface
Defrost (low temperature protection)
Clock, Sleep and Timer
IR remote control(optional)
Blue Backlight
Working Status: Cool, hot, wind
Technical parameters

MODBUS Operation Manual
1,MODBUS communications
Temperature controller to modify the internal registers is controlled by 485,output control.MODBUS RTU communication protocol using standard communication protocols.Serial port settings:Baud Rate
"9600", Parity bit"no",Data bits"8" Stop bits"1".

1.1Communication format
Communication machine No
Command code
Data address
communication data
CRC Check
1Byte
1Byte
2Byte
2Byte
2Byte

1.2 Communication Machine NO.
1----32

1.3 Command code
Command code
operating content
03H
Read the specified address data
06H
setting the specified address data
83H
the error returned

1.4 Communication paradigm
For example, PC sends the following command
Communication machine No
Command code
Data address
communication data
CRC Check
01H
03H
003BH
0001H
F5C7H
Command interpreter: Reading the indoor temperature, the register address 3BH
Rreturn the same command, proved successful reception and return temperature is 25 degrees.
Communication machine No
Command code
Data address
communication data
CRC Check
01H
03H
003BH
001EH
B40FH
Communication error is returned:
Communication machine No
Command code
address

CRC Check
01H
83H
03H
0131H
then resend the command until the reception was successful

2. Register address map
register address
register description
66H
Setting mode "01"cold ,"00"heater, "02", ventilation
3AH
Lock up and down keys adjustment, 0 unlock 1 lock
3BH
Room temperature
39H
setting temperature
60H
Switch control 00 shutdown,01 starting up
65H
Set the wind speed 0 low 1 medium 2 high 



Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 30 November 2016, 15:24:06
Zitat von: wthiess am 29 November 2016, 22:25:00
....
Habe ein neues Termostat. Leider komme ich damit nicht zurecht.
... Register 59 , 27Grad
Wenn ich in Fhem mit h59 lese bekomme ich 15104.0 Grad
...
Wo liegt mein Fehler?
..
Hallo wthiess,

wenn du das Register 59 auslesen möchtest musst du h58 definieren. Immer einen weniger.

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 November 2016, 15:40:26
Weis ich. Jab schon vieles probiert.

Gesendet von meinem SM-N9005 mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 November 2016, 16:21:26
meine config:
define Thermchina Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1

#ist Temperatur
define Temp_WZ ModbusAttr 1 3
attr Temp_WZ IODev Thermchina
attr Temp_WZ dev-h-combine 5
attr Temp_WZ dev-h-defPoll 1
attr Temp_WZ obj-h58-reading Temperatur
attr Temp_WZ room Modbus
attr Temp_WZ stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"Temperatur",0))}


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 November 2016, 17:05:35
Also die Werte in der Doku sind nicht -1 zu rechnen. Ich kann z.B. mit h96 das Thermostat aus oder einschalten. Allerdings die anzeige passt nicht. Angezeigt bekomme ich "24576" egal ob aus oder ein. "0 oder 1" sollte es sein. auch die Solltemperatur kann ich steuern, aber nicht abfragen.

lg
Wolfgang


Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 November 2016, 17:28:07
So jetzt hab ich mal den Scanner aktiviert
Raumtemperatur auslesen.
scan-h59
hex=3b001a, len=3, string=;.., s=59, s>=15104, S=59, S>=15104, i=59, i>=15104, I=59, I>=15104, f=, f>=
Also die Antwort = 3b 00 1a  1a wäre ja 26Grad. Aber wie stelle ich das dar?

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 30 November 2016, 21:28:49
Hallo,

Ich versuche mal ein paar Fragen in einem Post zu beantworten:
@Wolfgang:
In Deiner Konfiguration fehlt die Definition des Datentyps und der Länge. Das macht man bei ModbusAttr über den unpack-Code und Len. Beispiele sollten im Wiki stehen.
Bei Deinem Versuch mit dem Scanner wundere ich mich über Len=3. Wie hast Du den Scanner aufgerufen?
Versuch doch einfach mal h56-59 ohne Längenangabe.
Die erzeugten Readings enthalten dann auch gleich die Ausgabe für verschiedene unpack-Codes.
In Deinem Fall passt es wegen dem Len=3 nicht. 001a wäre ok, aber 3b001a ist eben nicht 26.
Vielleicht ist da aber auch noch ein Bug im neuen Modul und das 3b kommt nicht aus einem Register.

Ob 58 h58 oder h57 sein sollte kann man leider nie genau sagen, da die Hersteller mal bei 0 und mal bei 1 zu zählen beginnen. Es kommt also drauf an ...
ModbusAttr macht es so wie das Protokoll.

In jedem Fall wäre es für mich hilfreich bei Problemen einen Auschnitt aus dem Log mit verbose 5 zu sehen. Dann sehe ich was wirklich gesendet wurde und was das Fhem-Modul empfängt und daraus macht.

@Bjoernar:
Du hast recht, wenn disable gesetzt wird, lösche ich die Queue bisher nicht. Es kommen zwar keine neuen Requests mehr dazu, aber die alten werden noch abgearbeitet. Das ergänze ich noch.

@der-Lolo:
Ich mus Dich enttäuschen. Der erste Entwurf vom Scanner scannt erst die Objekteu eines bekannten Geräts.
Das Scannen auf dem Bus nach IDs kommt beim nächsten Mal mit :-)

Gruß
    Stefan




Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 30 November 2016, 21:34:45
Perfekt. Danke

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 30 November 2016, 21:49:43
Habe aber noch Wasser.
Bei mir tauchen jetzt folgende Meldungen im Log auf. Oder sind sie mir vorher nur nicht auch aufgefallen?


2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $reqLen in multiplication (*) at ./FHEM/98_Modbus.pm line 652. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $proto in string eq at ./FHEM/98_Modbus.pm line 660. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $proto in string eq at ./FHEM/98_Modbus.pm line 669. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $proto in string eq at ./FHEM/98_Modbus.pm line 680. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/98_Modbus.pm line 710. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $reqId in numeric ne (!=) at ./FHEM/98_Modbus.pm line 713. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $devAdr in numeric ne (!=) at ./FHEM/98_Modbus.pm line 713. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric ne (!=) at ./FHEM/98_Modbus.pm line 717. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value in numeric ne (!=) at ./FHEM/98_Modbus.pm line 717. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 734. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 738. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 741. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 746. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 749. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in numeric lt (<) at ./FHEM/98_Modbus.pm line 753. 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in concatenation (.) or string at ./FHEM/98_Modbus.pm line 754. 2016.11.30 21:30:16 3: MODBUS1: ParseFrames: function code not implemented 2016.11.30 21:30:16 1: PERL WARNING: Use of uninitialized value $fCode in concatenation (.) or string at ./FHEM/98_Modbus.pm line 755. 2016.11.30 21:30:16 3: MODBUS1: ParseFrames: function code not implemented
[\code]

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 November 2016, 21:59:17
Hallo Stefan
Ich habe mit len und unpack in der  Variante gespielt. Kein Erfolg. In meinem Fall muss es einfach eine Möglichkei geben vom Empfangenen Code nur den letzten Teil abzuschneiden. 3b hab ich gesendet. Kommt als Antwort mit. 001a passen. Soll nur noch dez. Dargestellt werden. In der Windowssoftware ist das auch so. Der gesendete Code kommt wieder so zurück ergänzt um den gefragten wert. siehe Anhang Modbustest.png. 3. u,. 4. Zeile. Die ersten beiden Zeilen sind Sollwert schreiben.
Die Werte h59 z.B. passen hier nicht -1.

Lg
Wolfgang

Anhang Logdatei!

#Test
define MyModbusAttrDevice ModbusAttr 1 3
attr MyModbusAttrDevice userattr IODev enableControlSet
attr MyModbusAttrDevice IODev Thermchina
attr MyModbusAttrDevice enableControlSet 1
attr MyModbusAttrDevice room Modbus



scan-h59
hex=3b0017, len=3, string=;.., s=59, s>=15104, S=59, S>=15104, i=59, i>=15104, I=59, I>=15104, f=, f>=


Also 3b 00 17 = 23Grad aktuell
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 30 November 2016, 22:42:48
Hallo Bjoernar,

Hast Du Fhem mal neu gestartet seit Du das neue Modul eingespielt hast?

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 30 November 2016, 22:52:12
Hallo Wolfgang,

Ich glaube ich verstehe jetzt wo das Problem liegt.
Die Antwort auf einen Modbus-Request mit Function Code 3 sollte so aussehen:

1 Byte im dem Function code (also 3)
1 Byte mit der Länge der Antwort in Bytes (also 2 wenn ein Register angefragt wurde)
Danach die Register-Werte
Und dann der CRC

Das ist aber nicht das was Dein Thermostat antwortet. Offenbar haben die Entwickler den Modbus-Standard nicht gelesen...
die wiederholen die Adresse wie bei der Antwort auf Function Code 6. bei Function Code 3 ist das aber nicht vorgesehen.
Siehe http://www.modbus.org/tech.php

Ich kann Dir aber ein Attribut einbauen, das das Parsing ändert damit das Modul solche falschen Antworen versteht ...

Gruß
   Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 30 November 2016, 23:04:48
Das wäre super. Danke Stefan. Wenn es läuft wird das das Thermostat fürs ganze Haus. 27Euro inkl. Versand. Habe ein Thermkon zum testen. Kostet 150 und ist echt a schmarn zum einbinden.
Lg
Wolfgang


Gesendet von meinem SM-N9005 mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 01 Dezember 2016, 07:50:55
Zitat von: StefanStrobel am 30 November 2016, 22:42:48
Hallo Bjoernar,

Hast Du Fhem mal neu gestartet seit Du das neue Modul eingespielt hast?

Gruß
   Stefan

ja hatte ich, mache ich jetzt noch mal.

Irgendwas scheint da aber mit disable noch immer nicht zu passen. Obwohl Wechselrichter1 definitiv auf disable=1 steht versucht er immer wieder zu verbinden:


2016.12.01 00:59:21 3: Wechselrichter1: trying to open connection to 192.168.178.21:502
2016.12.01 00:59:21 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.12.01 00:59:21 3: Wechselrichter1 device opened
2016.12.01 01:00:27 3: Wechselrichter1: 3 successive timeouts, setting state to disconnected
2016.12.01 01:00:27 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1)
2016.12.01 01:00:30 3: Wechselrichter1: 4 successive timeouts, setting state to disconnected
2016.12.01 01:00:32 3: Wechselrichter1: 5 successive timeouts, setting state to disconnected
2016.12.01 01:00:34 3: Wechselrichter1: 6 successive timeouts, setting state to disconnected
2016.12.01 01:00:37 3: Wechselrichter1: 7 successive timeouts, setting state to disconnected
2016.12.01 01:00:39 3: Wechselrichter1: 8 successive timeouts, setting state to disconnected
2016.12.01 01:00:41 3: Wechselrichter1: 9 successive timeouts, setting state to disconnected
2016.12.01 01:00:43 3: Wechselrichter1: 10 successive timeouts, setting state to disconnected
2016.12.01 01:00:45 3: Wechselrichter1: 11 successive timeouts, setting state to disconnected
2016.12.01 01:00:47 3: Wechselrichter1: 12 successive timeouts, setting state to disconnected
2016.12.01 01:00:49 3: Wechselrichter1: 13 successive timeouts, setting state to disconnected
2016.12.01 01:00:51 3: Wechselrichter1: 14 successive timeouts, setting state to disconnected
2016.12.01 01:00:53 3: Wechselrichter1: 15 successive timeouts, setting state to disconnected
2016.12.01 01:00:55 3: Wechselrichter1: 16 successive timeouts, setting state to disconnected
2016.12.01 01:00:57 3: Wechselrichter1: 17 successive timeouts, setting state to disconnected
2016.12.01 01:00:59 3: Wechselrichter1: 18 successive timeouts, setting state to disconnected
2016.12.01 01:01:01 3: Wechselrichter1: 19 successive timeouts, setting state to disconnected
2016.12.01 01:01:03 3: Wechselrichter1: 20 successive timeouts, setting state to disconnected
2016.12.01 01:01:05 3: Wechselrichter1: 21 successive timeouts, setting state to disconnected
2016.12.01 01:01:07 3: Wechselrichter1: 22 successive timeouts, setting state to disconnected
2016.12.01 01:01:09 3: Wechselrichter1: 23 successive timeouts, setting state to disconnected
2016.12.01 01:01:11 3: Wechselrichter1: 24 successive timeouts, setting state to disconnected
2016.12.01 01:01:13 3: Wechselrichter1: 25 successive timeouts, setting state to disconnected
2016.12.01 01:01:15 3: Wechselrichter1: 26 successive timeouts, setting state to disconnected
2016.12.01 01:01:17 3: Wechselrichter1: 27 successive timeouts, setting state to disconnected
2016.12.01 01:01:19 3: Wechselrichter1: 28 successive timeouts, setting state to disconnected
2016.12.01 01:01:21 3: Wechselrichter1: 29 successive timeouts, setting state to disconnected
2016.12.01 01:01:23 3: Wechselrichter1: 30 successive timeouts, setting state to disconnected
2016.12.01 01:01:25 3: Wechselrichter1: 31 successive timeouts, setting state to disconnected
2016.12.01 01:01:27 3: Wechselrichter1: 32 successive timeouts, setting state to disconnected
2016.12.01 01:01:29 3: Wechselrichter1: 33 successive timeouts, setting state to disconnected
2016.12.01 01:01:31 3: Wechselrichter1: 34 successive timeouts, setting state to disconnected
2016.12.01 01:01:33 3: Wechselrichter1: 35 successive timeouts, setting state to disconnected
2016.12.01 01:01:35 3: Wechselrichter1: 36 successive timeouts, setting state to disconnected
2016.12.01 02:17:42 3: Wechselrichter1: trying to open connection to 192.168.178.21:502
2016.12.01 02:17:42 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.12.01 02:17:42 3: Wechselrichter1 device opened
2016.12.01 02:18:36 3: Wechselrichter1: 3 successive timeouts, setting state to disconnected
2016.12.01 02:18:36 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1)
2016.12.01 02:18:38 3: Wechselrichter1: 4 successive timeouts, setting state to disconnected
2016.12.01 02:18:40 3: Wechselrichter1: 5 successive timeouts, setting state to disconnected
2016.12.01 02:18:42 3: Wechselrichter1: 6 successive timeouts, setting state to disconnected
2016.12.01 02:18:44 3: Wechselrichter1: 7 successive timeouts, setting state to disconnected
2016.12.01 02:18:46 3: Wechselrichter1: 8 successive timeouts, setting state to disconnected
2016.12.01 02:18:48 3: Wechselrichter1: 9 successive timeouts, setting state to disconnected
2016.12.01 02:18:50 3: Wechselrichter1: 10 successive timeouts, setting state to disconnected
2016.12.01 02:18:52 3: Wechselrichter1: 11 successive timeouts, setting state to disconnected
2016.12.01 02:18:54 3: Wechselrichter1: 12 successive timeouts, setting state to disconnected
2016.12.01 02:18:56 3: Wechselrichter1: 13 successive timeouts, setting state to disconnected
2016.12.01 02:18:58 3: Wechselrichter1: 14 successive timeouts, setting state to disconnected
2016.12.01 02:19:00 3: Wechselrichter1: 15 successive timeouts, setting state to disconnected
2016.12.01 02:19:02 3: Wechselrichter1: 16 successive timeouts, setting state to disconnected
2016.12.01 02:19:04 3: Wechselrichter1: 17 successive timeouts, setting state to disconnected
2016.12.01 02:19:06 3: Wechselrichter1: 18 successive timeouts, setting state to disconnected
2016.12.01 02:19:08 3: Wechselrichter1: 19 successive timeouts, setting state to disconnected
2016.12.01 02:19:10 3: Wechselrichter1: 20 successive timeouts, setting state to disconnected
2016.12.01 02:19:12 3: Wechselrichter1: 21 successive timeouts, setting state to disconnected
2016.12.01 02:19:14 3: Wechselrichter1: 22 successive timeouts, setting state to disconnected
2016.12.01 02:19:16 3: Wechselrichter1: 23 successive timeouts, setting state to disconnected
2016.12.01 02:19:18 3: Wechselrichter1: 24 successive timeouts, setting state to disconnected
2016.12.01 02:19:20 3: Wechselrichter1: 25 successive timeouts, setting state to disconnected
2016.12.01 02:19:22 3: Wechselrichter1: 26 successive timeouts, setting state to disconnected
2016.12.01 02:19:25 3: Wechselrichter1: 27 successive timeouts, setting state to disconnected
2016.12.01 02:19:27 3: Wechselrichter1: 28 successive timeouts, setting state to disconnected
2016.12.01 02:19:29 3: Wechselrichter1: 29 successive timeouts, setting state to disconnected
2016.12.01 02:19:31 3: Wechselrichter1: 30 successive timeouts, setting state to disconnected
2016.12.01 02:19:33 3: Wechselrichter1: 31 successive timeouts, setting state to disconnected
2016.12.01 02:19:35 3: Wechselrichter1: 32 successive timeouts, setting state to disconnected
2016.12.01 02:19:37 3: Wechselrichter1: 33 successive timeouts, setting state to disconnected
2016.12.01 02:19:39 3: Wechselrichter1: 34 successive timeouts, setting state to disconnected
2016.12.01 02:19:41 3: Wechselrichter1: 35 successive timeouts, setting state to disconnected
2016.12.01 02:19:43 3: Wechselrichter1: 36 successive timeouts, setting state to disconnected
2016.12.01 02:19:45 3: Wechselrichter1: 37 successive timeouts, setting state to disconnected
2016.12.01 03:35:55 3: Wechselrichter1: trying to open connection to 192.168.178.21:502
2016.12.01 03:35:55 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.12.01 03:35:55 3: Wechselrichter1 device opened
2016.12.01 03:36:43 3: Wechselrichter1: 3 successive timeouts, setting state to disconnected
2016.12.01 03:36:43 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1)
2016.12.01 03:36:45 3: Wechselrichter1: 4 successive timeouts, setting state to disconnected
2016.12.01 03:36:47 3: Wechselrichter1: 5 successive timeouts, setting state to disconnected
2016.12.01 03:36:49 3: Wechselrichter1: 6 successive timeouts, setting state to disconnected
2016.12.01 03:36:51 3: Wechselrichter1: 7 successive timeouts, setting state to disconnected
2016.12.01 03:36:53 3: Wechselrichter1: 8 successive timeouts, setting state to disconnected
2016.12.01 03:36:55 3: Wechselrichter1: 9 successive timeouts, setting state to disconnected
2016.12.01 03:36:57 3: Wechselrichter1: 10 successive timeouts, setting state to disconnected
2016.12.01 03:36:59 3: Wechselrichter1: 11 successive timeouts, setting state to disconnected
2016.12.01 03:37:01 3: Wechselrichter1: 12 successive timeouts, setting state to disconnected
2016.12.01 03:37:03 3: Wechselrichter1: 13 successive timeouts, setting state to disconnected
2016.12.01 03:37:06 3: Wechselrichter1: 14 successive timeouts, setting state to disconnected
2016.12.01 03:37:08 3: Wechselrichter1: 15 successive timeouts, setting state to disconnected
2016.12.01 03:37:11 3: Wechselrichter1: 16 successive timeouts, setting state to disconnected
2016.12.01 03:37:13 3: Wechselrichter1: 17 successive timeouts, setting state to disconnected
2016.12.01 03:37:15 3: Wechselrichter1: 18 successive timeouts, setting state to disconnected
2016.12.01 03:37:17 3: Wechselrichter1: 19 successive timeouts, setting state to disconnected
2016.12.01 03:37:19 3: Wechselrichter1: 20 successive timeouts, setting state to disconnected
2016.12.01 03:37:21 3: Wechselrichter1: 21 successive timeouts, setting state to disconnected
2016.12.01 03:37:23 3: Wechselrichter1: 22 successive timeouts, setting state to disconnected
2016.12.01 03:37:25 3: Wechselrichter1: 23 successive timeouts, setting state to disconnected
2016.12.01 03:37:27 3: Wechselrichter1: 24 successive timeouts, setting state to disconnected
2016.12.01 03:37:29 3: Wechselrichter1: 25 successive timeouts, setting state to disconnected
2016.12.01 03:37:31 3: Wechselrichter1: 26 successive timeouts, setting state to disconnected
2016.12.01 03:37:33 3: Wechselrichter1: 27 successive timeouts, setting state to disconnected
2016.12.01 03:37:35 3: Wechselrichter1: 28 successive timeouts, setting state to disconnected
2016.12.01 03:37:37 3: Wechselrichter1: 29 successive timeouts, setting state to disconnected
2016.12.01 03:37:39 3: Wechselrichter1: 30 successive timeouts, setting state to disconnected
2016.12.01 03:37:41 3: Wechselrichter1: 31 successive timeouts, setting state to disconnected
2016.12.01 03:37:43 3: Wechselrichter1: 32 successive timeouts, setting state to disconnected
2016.12.01 03:37:45 3: Wechselrichter1: 33 successive timeouts, setting state to disconnected
2016.12.01 03:37:47 3: Wechselrichter1: 34 successive timeouts, setting state to disconnected
2016.12.01 03:37:49 3: Wechselrichter1: 35 successive timeouts, setting state to disconnected
2016.12.01 03:37:51 3: Wechselrichter1: 36 successive timeouts, setting state to disconnected
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 01 Dezember 2016, 17:08:12
Hallo Bjoernar,

das ist seltsam.
könntest Du nochmal verbose auf 5 setzen und das Log posten?

Gruss / Thanx
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 01 Dezember 2016, 17:19:50
Mache ich ... Kann ich das Verbose Log auch in eine extra Datei schreiben ?

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 01 Dezember 2016, 17:25:32
Habe jetzt auf Verbose 5 umgestellt.
das sieht ja soweit ok aus. mal sehen was ich da morgen früh drin stehen habe...

2016.12.01 17:21:05 5: Wechselrichter1: UpdateGetSetList full object list:
h40107 h40068 h40091 h40071 h40052 h40118 h40290 h40036 h00509 h40268 h40105 h40302 h40117 h40089 h40303 h40020 h40081 h40073 h40075 h40283 h40079 h40087 h40284 h00213 h00505 h40310 h40196 h40305 h40103 h40085 h40083 h40044 h40266 h40077 h40265 h00215 h40282 h40285 h40267 h40004 h40304 h00501
2016.12.01 17:21:05 5: Wechselrichter1: UpdateSetList: setList=Modbus_Address
2016.12.01 17:21:05 5: Wechselrichter1: UpdateSetList: getList=ActiveStateCode:noArg DataModelType:noArg Energy_Day__kWh:noArg Energy_Year__kWh:noArg Energy_Total__kWh:noArg Manufacturer:noArg Device_model:noArg SW_Version_DataManager:noArg SW_Version_Inverter:noArg Serialnumber:noArg Modbus_Address:noArg Current_total__A:noArg Current_L1__A:noArg Current_L2__A:noArg Current_L3__A:noArg Voltage_L1_to_L2__V:noArg Voltage_L2_to_L3__V:noArg Voltage_L3_to_L1__V:noArg Voltage_L1__V:noArg Voltage_L2__V:noArg Voltage_L3__V:noArg Power__W:noArg Current_DC__A:noArg Voltage_DC__V:noArg Power_DC__W:noArg Operating_State:noArg Operating_State_Vendor:noArg Energy_total_AC__kWh:noArg .ScaleFactor_Current:noArg .ScaleFactor_Voltage:noArg .ScaleFactor_Power:noArg .ScaleFactor_Energy:noArg Current_String1__A:noArg Voltage_String1__V:noArg Power_String1__W:noArg Energy_total_String1__kWh:noArg Operating_State_String1:noArg Current_String2__A:noArg Voltage_String2__V:noArg Power_String2__W:noArg Energy_total_String2__kWh:noArg Operating_State_String2:noArg
2016.12.01 17:22:06 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-12-01 17:23:06 - Interval 60
2016.12.01 17:22:06 5: Wechselrichter1: GetUpdate called but device is disabled
2016.12.01 17:23:07 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-12-01 17:24:07 - Interval 60
2016.12.01 17:23:07 5: Wechselrichter1: GetUpdate called but device is disabled
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 02 Dezember 2016, 09:55:14
Hallo Stefan,

nun habe ich was im log, er fängt einfach irgendwann an trotzdem das Device abzufragen. Versteh nur nicht warum.

Das gleiche um 02:26, 03:44, 05:02 also ca. alle 80min.

[code]
2016.12.02 01:06:58 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-12-02 01:07:58 - Interval 60
2016.12.02 01:06:58 5: Wechselrichter1: GetUpdate called but device is disabled
2016.12.02 01:07:48 5: Wechselrichter1: disable attribute removed on a Modbus TCP connection
2016.12.02 01:07:48 3: Wechselrichter1: trying to open connection to 192.168.178.21:502
2016.12.02 01:07:48 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.12.02 01:07:48 4: HttpUtils url=http://192.168.178.21:502/
2016.12.02 01:07:48 3: Wechselrichter1 device opened
2016.12.02 01:07:59 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-12-02 01:08:59 - Interval 60
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate called
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate objects from attributes:
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate full object list: h00213 h00215 h00501 h00505 h00509 h40004 h40020 h40036 h40044 h40052 h40068 h40071 h40073 h40075 h40077 h40079 h40081 h40083 h40085 h40087 h40089 h40091 h40103 h40105 h40107 h40117 h40118 h40196 h40265 h40266 h40267 h40268 h40282 h40283 h40284 h40285 h40290 h40302 h40303 h40304 h40305 h40310
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h00213 => ActiveStateCode, poll = 1, last = 1480608654.62865
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request ActiveStateCode
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h00215 => DataModelType, poll = once, last = 1480586927.81585
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h00501 => Energy_Day__kWh, poll = 1, last = 1480608655.62601
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Energy_Day__kWh
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h00505 => Energy_Year__kWh, poll = 1, last = 1480608846.79685
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Energy_Year__kWh
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h00509 => Energy_Total__kWh, poll = 1, last = 1480608720.66229
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Energy_Total__kWh
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40004 => Manufacturer, poll = once, last = 1480586924.90272
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40020 => Device_model, poll = once, last = 1480586932.62794
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40036 => SW_Version_DataManager, poll = once, last = 1480586936.49519
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40044 => SW_Version_Inverter, poll = once, last = 1480586947.20682
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40052 => Serialnumber, poll = once, last = 1480586930.80025
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40068 => Modbus_Address, poll = once, last = 1480586931.71385
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40071 => Current_total__A, poll = 1, last = 1480632590.67877
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_total__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40073 => Current_L1__A, poll = 1, last = 1480608717.56065
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_L1__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40075 => Current_L2__A, poll = 1, last = 1480608840.88077
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_L2__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40077 => Current_L3__A, poll = 1, last = 1480608538.7491
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_L3__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40079 => Voltage_L1_to_L2__V, poll = 1, last = 1480608297.23014
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_L1_to_L2__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40081 => Voltage_L2_to_L3__V, poll = 1, last = 1480608350.22343
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_L2_to_L3__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40083 => Voltage_L3_to_L1__V, poll = 1, last = 1480608659.50894
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_L3_to_L1__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40085 => Voltage_L1__V, poll = 1, last = 1480608476.05502
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_L1__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40087 => Voltage_L2__V, poll = 1, last = 1480608536.9009
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_L2__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40089 => Voltage_L3__V, poll = 1, last = 1480608412.24766
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_L3__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40091 => Power__W, poll = 1, last = 1480632591.62117
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Power__W
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40103 => Current_DC__A, poll = 1, last = 1480608842.89506
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_DC__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40105 => Voltage_DC__V, poll = 1, last = 1480608724.51948
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_DC__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40107 => Power_DC__W, poll = 1, last = 1480632589.76178
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Power_DC__W
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40117 => Operating_State, poll = 1, last = 1480608838.96848
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Operating_State
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40118 => Operating_State_Vendor, poll = 1, last = 1480632588.84285
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Operating_State_Vendor
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40196 => Energy_total_AC__kWh, poll = once, last = 1480586919.12403
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40265 => .ScaleFactor_Current, poll = 1, last = 1480608848.82537
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Current
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40266 => .ScaleFactor_Voltage, poll = 1, last = 1480608844.95161
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Voltage
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40267 => .ScaleFactor_Power, poll = 1, last = 1480608847.91177
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Power
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40268 => .ScaleFactor_Energy, poll = 1, last = 1480608845.8818
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Energy
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40282 => Current_String1__A, poll = 1, last = 1480608777.45411
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_String1__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40283 => Voltage_String1__V, poll = 1, last = 1480608839.88256
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_String1__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40284 => Power_String1__W, poll = 1, last = 1480608781.30779
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Power_String1__W
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40285 => Energy_total_String1__kWh, poll = 1, last = 1480608658.58894
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Energy_total_String1__kWh
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40290 => Operating_State_String1, poll = 1, last = 1480608663.4283
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Operating_State_String1
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40302 => Current_String2__A, poll = 1, last = 1480632592.53529
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Current_String2__A
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40303 => Voltage_String2__V, poll = 1, last = 1480632593.46498
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Voltage_String2__V
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40304 => Power_String2__W, poll = 1, last = 1480608843.80816
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Power_String2__W
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40305 => Energy_total_String2__kWh, poll = 1, last = 1480608780.39529
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Energy_total_String2__kWh
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate check h40310 => Operating_State_String2, poll = 1, last = 1480608841.79637
2016.12.02 01:07:59 4: Wechselrichter1: GetUpdate will request Operating_State_String2
2016.12.02 01:07:59 5: Wechselrichter1: GetUpdate tries to combine read commands
2016.12.02 01:07:59 5: Wechselrichter1: No Combine ActiveStateCode / h00213 with Energy_Day__kWh / h00501, span 292 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Energy_Day__kWh / h00501 with Energy_Year__kWh / h00505, span 8 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Energy_Year__kWh / h00505 with Energy_Total__kWh / h00509, span 8 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Energy_Total__kWh / h00509 with Current_total__A / h40071, span 39564 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_total__A / h40071 with Current_L1__A / h40073, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_L1__A / h40073 with Current_L2__A / h40075, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_L2__A / h40075 with Current_L3__A / h40077, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_L3__A / h40077 with Voltage_L1_to_L2__V / h40079, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_L1_to_L2__V / h40079 with Voltage_L2_to_L3__V / h40081, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_L2_to_L3__V / h40081 with Voltage_L3_to_L1__V / h40083, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_L3_to_L1__V / h40083 with Voltage_L1__V / h40085, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_L1__V / h40085 with Voltage_L2__V / h40087, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_L2__V / h40087 with Voltage_L3__V / h40089, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_L3__V / h40089 with Power__W / h40091, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Power__W / h40091 with Current_DC__A / h40103, span 14 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_DC__A / h40103 with Voltage_DC__V / h40105, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_DC__V / h40105 with Power_DC__W / h40107, span 4 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Power_DC__W / h40107 with Operating_State / h40117, span 11 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Operating_State / h40117 with Operating_State_Vendor / h40118, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Operating_State_Vendor / h40118 with .ScaleFactor_Current / h40265, span 148 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine .ScaleFactor_Current / h40265 with .ScaleFactor_Voltage / h40266, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine .ScaleFactor_Voltage / h40266 with .ScaleFactor_Power / h40267, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine .ScaleFactor_Power / h40267 with .ScaleFactor_Energy / h40268, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine .ScaleFactor_Energy / h40268 with Current_String1__A / h40282, span 15 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_String1__A / h40282 with Voltage_String1__V / h40283, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_String1__V / h40283 with Power_String1__W / h40284, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Power_String1__W / h40284 with Energy_total_String1__kWh / h40285, span 3 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Energy_total_String1__kWh / h40285 with Operating_State_String1 / h40290, span 6 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Operating_State_String1 / h40290 with Current_String2__A / h40302, span 13 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Current_String2__A / h40302 with Voltage_String2__V / h40303, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Voltage_String2__V / h40303 with Power_String2__W / h40304, span 2 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Power_String2__W / h40304 with Energy_total_String2__kWh / h40305, span 3 > max 1
2016.12.02 01:07:59 5: Wechselrichter1: No Combine Energy_total_String2__kWh / h40305 with Operating_State_String2 / h40310, span 6 > max 1
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40118, len 1 / span 1 to id 1, queue has 0 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 199 for h40118 (Operating_State_Vendor), len/span 1, PDU 039cb60001
2016.12.02 01:07:59 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 199 for Operating_State_Vendor (h40118), len 1)
2016.12.02 01:07:59 5: SW: 00c70000000601039cb60001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40107, len 2 / span 2 to id 1, queue has 0 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 78 for h40107 (Power_DC__W), len/span 2, PDU 039cab0002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40091, len 2 / span 2 to id 1, queue has 1 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 42 for h40091 (Power__W), len/span 2, PDU 039c9b0002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40071, len 2 / span 2 to id 1, queue has 2 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 214 for h40071 (Current_total__A), len/span 2, PDU 039c870002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40302, len 1 / span 1 to id 1, queue has 3 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 234 for h40302 (Current_String2__A), len/span 1, PDU 039d6e0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40303, len 1 / span 1 to id 1, queue has 4 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 90 for h40303 (Voltage_String2__V), len/span 1, PDU 039d6f0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40081, len 2 / span 2 to id 1, queue has 5 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 47 for h40081 (Voltage_L2_to_L3__V), len/span 2, PDU 039c910002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40290, len 1 / span 1 to id 1, queue has 6 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 32 for h40290 (Operating_State_String1), len/span 1, PDU 039d620001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h00509, len 4 / span 4 to id 1, queue has 7 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 172 for h00509 (Energy_Total__kWh), len/span 4, PDU 0301fd0004
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40268, len 1 / span 1 to id 1, queue has 8 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 85 for h40268 (.ScaleFactor_Energy), len/span 1, PDU 039d4c0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40284, len 1 / span 1 to id 1, queue has 9 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 74 for h40284 (Power_String1__W), len/span 1, PDU 039d5c0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h00213, len 1 / span 1 to id 1, queue has 10 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 97 for h00213 (ActiveStateCode), len/span 1, PDU 0300d50001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h00505, len 4 / span 4 to id 1, queue has 11 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 237 for h00505 (Energy_Year__kWh), len/span 4, PDU 0301f90004
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40305, len 2 / span 2 to id 1, queue has 12 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 239 for h40305 (Energy_total_String2__kWh), len/span 2, PDU 039d710002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40073, len 2 / span 2 to id 1, queue has 13 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 231 for h40073 (Current_L1__A), len/span 2, PDU 039c890002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40079, len 2 / span 2 to id 1, queue has 14 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 75 for h40079 (Voltage_L1_to_L2__V), len/span 2, PDU 039c8f0002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40265, len 1 / span 1 to id 1, queue has 15 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 106 for h40265 (.ScaleFactor_Current), len/span 1, PDU 039d490001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40282, len 1 / span 1 to id 1, queue has 16 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 28 for h40282 (Current_String1__A), len/span 1, PDU 039d5a0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40285, len 2 / span 2 to id 1, queue has 17 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 96 for h40285 (Energy_total_String1__kWh), len/span 2, PDU 039d5d0002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40267, len 1 / span 1 to id 1, queue has 18 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 58 for h40267 (.ScaleFactor_Power), len/span 1, PDU 039d4b0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h00501, len 4 / span 4 to id 1, queue has 19 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 123 for h00501 (Energy_Day__kWh), len/span 4, PDU 0301f50004
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40083, len 2 / span 2 to id 1, queue has 20 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 209 for h40083 (Voltage_L3_to_L1__V), len/span 2, PDU 039c930002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40117, len 1 / span 1 to id 1, queue has 21 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 251 for h40117 (Operating_State), len/span 1, PDU 039cb50001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40089, len 2 / span 2 to id 1, queue has 22 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 199 for h40089 (Voltage_L3__V), len/span 2, PDU 039c990002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40105, len 2 / span 2 to id 1, queue has 23 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 131 for h40105 (Voltage_DC__V), len/span 2, PDU 039ca90002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40087, len 2 / span 2 to id 1, queue has 24 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 126 for h40087 (Voltage_L2__V), len/span 2, PDU 039c970002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40310, len 1 / span 1 to id 1, queue has 25 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 183 for h40310 (Operating_State_String2), len/span 1, PDU 039d760001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40075, len 2 / span 2 to id 1, queue has 26 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 253 for h40075 (Current_L2__A), len/span 2, PDU 039c8b0002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40283, len 1 / span 1 to id 1, queue has 27 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 178 for h40283 (Voltage_String1__V), len/span 1, PDU 039d5b0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40266, len 1 / span 1 to id 1, queue has 28 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 166 for h40266 (.ScaleFactor_Voltage), len/span 1, PDU 039d4a0001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40077, len 2 / span 2 to id 1, queue has 29 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 104 for h40077 (Current_L3__A), len/span 2, PDU 039c8d0002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40304, len 1 / span 1 to id 1, queue has 30 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 189 for h40304 (Power_String2__W), len/span 1, PDU 039d700001
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40103, len 2 / span 2 to id 1, queue has 31 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 80 for h40103 (Current_DC__A), len/span 2, PDU 039ca70002
2016.12.02 01:07:59 4: Wechselrichter1: Send called with h40085, len 2 / span 2 to id 1, queue has 32 requests
2016.12.02 01:07:59 4: Wechselrichter1: Send queues fc 3 to 1, tid 254 for h40085 (Voltage_L1__V), len/span 2, PDU 039c950002
2016.12.02 01:07:59 5: Wechselrichter1: raw read: 00c7000000050103020007
2016.12.02 01:07:59 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 199, values 0007 request was for h.40118 (Operating_State_Vendor), len 1 for module Wechselrichter1
2016.12.02 01:07:59 5: Wechselrichter1: ParseObj called with 0007 and start 40118
2016.12.02 01:07:59 5: Wechselrichter1: ParseObj ObjInfo for h40118: reading=Operating_State_Vendor, unpack=n, expr=, format=, map=1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby, 9:no.Fronius.Solar-Net.communication, 10:mo.communication.with.Inverter, 11:Overcurrent.identified.in.Fronius.Solar-Net-plug, 12:Inverter.update.is.being.performed, 13:AFCI.event
2016.12.02 01:07:59 5: Wechselrichter1: ParseObj unpacked 0007 with n to 37
2016.12.02 01:07:59 5: Wechselrichter1: ParseObj for Operating_State_Vendor maps value 7 with 1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby, 9:no.Fronius.Solar-Net.communication, 10:mo.communication.with.Inverter, 11:Overcurrent.identified.in.Fronius.Solar-Net-plug, 12:Inverter.update.is.being.performed, 13:AFCI.event
2016.12.02 01:07:59 4: Wechselrichter1: ParseObj for Operating_State_Vendor assigns Error.exists
2016.12.02 01:07:59 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:07:59 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.66015100479126
2016.12.02 01:08:00 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 78 for Power_DC__W (h40107), len 2)
2016.12.02 01:08:00 5: SW: 004e0000000601039cab0002
2016.12.02 01:08:00 5: Wechselrichter1: raw read: 004e0000000701030400000000
2016.12.02 01:08:00 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 78, values 00000000 request was for h.40107 (Power_DC__W), len 2 for module Wechselrichter1
2016.12.02 01:08:00 5: Wechselrichter1: ParseObj called with 00000000 and start 40107
2016.12.02 01:08:00 5: Wechselrichter1: ParseObj ObjInfo for h40107: reading=Power_DC__W, unpack=f>, expr=, format=%.1f, map=
2016.12.02 01:08:00 5: Wechselrichter1: ParseObj unpacked 00000000 with f> to 30
2016.12.02 01:08:00 5: Wechselrichter1: ParseObj for Power_DC__W does sprintf with format %.1f value is 0
2016.12.02 01:08:00 5: Wechselrichter1: ParseObj for Power_DC__W sprintf result is 0.0
2016.12.02 01:08:00 4: Wechselrichter1: ParseObj for Power_DC__W assigns 0.0
2016.12.02 01:08:00 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:00 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.618185043334961
2016.12.02 01:08:01 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 42 for Power__W (h40091), len 2)
2016.12.02 01:08:01 5: SW: 002a0000000601039c9b0002
2016.12.02 01:08:01 5: Wechselrichter1: raw read: 002a0000000701030400000000
2016.12.02 01:08:01 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 42, values 00000000 request was for h.40091 (Power__W), len 2 for module Wechselrichter1
2016.12.02 01:08:01 5: Wechselrichter1: ParseObj called with 00000000 and start 40091
2016.12.02 01:08:01 5: Wechselrichter1: ParseObj ObjInfo for h40091: reading=Power__W, unpack=f>, expr=, format=%.1f, map=
2016.12.02 01:08:01 5: Wechselrichter1: ParseObj unpacked 00000000 with f> to 30
2016.12.02 01:08:01 5: Wechselrichter1: ParseObj for Power__W does sprintf with format %.1f value is 0
2016.12.02 01:08:01 5: Wechselrichter1: ParseObj for Power__W sprintf result is 0.0
2016.12.02 01:08:01 4: Wechselrichter1: ParseObj for Power__W assigns 0.0
2016.12.02 01:08:01 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:01 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.600733995437622
2016.12.02 01:08:02 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 214 for Current_total__A (h40071), len 2)
2016.12.02 01:08:02 5: SW: 00d60000000601039c870002
2016.12.02 01:08:02 5: Wechselrichter1: raw read: 00d60000000701030400000000
2016.12.02 01:08:02 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 214, values 00000000 request was for h.40071 (Current_total__A), len 2 for module Wechselrichter1
2016.12.02 01:08:02 5: Wechselrichter1: ParseObj called with 00000000 and start 40071
2016.12.02 01:08:02 5: Wechselrichter1: ParseObj ObjInfo for h40071: reading=Current_total__A, unpack=f>, expr=, format=%.2f, map=
2016.12.02 01:08:02 5: Wechselrichter1: ParseObj unpacked 00000000 with f> to 30
2016.12.02 01:08:02 5: Wechselrichter1: ParseObj for Current_total__A does sprintf with format %.2f value is 0
2016.12.02 01:08:02 5: Wechselrichter1: ParseObj for Current_total__A sprintf result is 0.00
2016.12.02 01:08:02 4: Wechselrichter1: ParseObj for Current_total__A assigns 0.00
2016.12.02 01:08:02 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:02 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.660807847976685
2016.12.02 01:08:03 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 234 for Current_String2__A (h40302), len 1)
2016.12.02 01:08:03 5: SW: 00ea0000000601039d6e0001
2016.12.02 01:08:03 5: Wechselrichter1: raw read: 00ea00000005010302ffff
2016.12.02 01:08:03 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 234, values ffff request was for h.40302 (Current_String2__A), len 1 for module Wechselrichter1
2016.12.02 01:08:03 5: Wechselrichter1: ParseObj called with ffff and start 40302
2016.12.02 01:08:03 5: Wechselrichter1: ParseObj ObjInfo for h40302: reading=Current_String2__A, unpack=S>, expr=MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Current",0),0,20,$name,"Current_String2__A"), format=%.2f, map=
2016.12.02 01:08:03 5: Wechselrichter1: ParseObj unpacked ffff with S> to 3635353335
2016.12.02 01:08:03 5: Wechselrichter1: ParseObj for Current_String2__A evaluates 65535 with expr MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Current",0),0,20,$name,"Current_String2__A")
2016.12.02 01:08:03 5: Wechselrichter1: ParseObj for Current_String2__A does sprintf with format %.2f value is 0.00
2016.12.02 01:08:03 5: Wechselrichter1: ParseObj for Current_String2__A sprintf result is 0.00
2016.12.02 01:08:03 4: Wechselrichter1: ParseObj for Current_String2__A assigns 0.00
2016.12.02 01:08:03 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:03 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.660356998443604
2016.12.02 01:08:04 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 90 for Voltage_String2__V (h40303), len 1)
2016.12.02 01:08:04 5: SW: 005a0000000601039d6f0001
2016.12.02 01:08:04 5: Wechselrichter1: raw read: 005a000000050103020050
2016.12.02 01:08:04 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 90, values 0050 request was for h.40303 (Voltage_String2__V), len 1 for module Wechselrichter1
2016.12.02 01:08:04 5: Wechselrichter1: ParseObj called with 0050 and start 40303
2016.12.02 01:08:04 5: Wechselrichter1: ParseObj ObjInfo for h40303: reading=Voltage_String2__V, unpack=S>, expr=MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Voltage",0),0,2000,$name,"Voltage_String2__V"), format=%.0f, map=
2016.12.02 01:08:04 5: Wechselrichter1: ParseObj unpacked 0050 with S> to 3830
2016.12.02 01:08:04 5: Wechselrichter1: ParseObj for Voltage_String2__V evaluates 80 with expr MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Voltage",0),0,2000,$name,"Voltage_String2__V")
2016.12.02 01:08:04 5: Wechselrichter1: ParseObj for Voltage_String2__V does sprintf with format %.0f value is 0.8
2016.12.02 01:08:04 5: Wechselrichter1: ParseObj for Voltage_String2__V sprintf result is 1
2016.12.02 01:08:04 4: Wechselrichter1: ParseObj for Voltage_String2__V assigns 1
2016.12.02 01:08:04 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:04 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.660612106323242
2016.12.02 01:08:05 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 47 for Voltage_L2_to_L3__V (h40081), len 2)
2016.12.02 01:08:05 5: SW: 002f0000000601039c910002
2016.12.02 01:08:05 5: Wechselrichter1: raw read: 002f000000070103047fc00000
2016.12.02 01:08:05 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 47, values 7fc00000 request was for h.40081 (Voltage_L2_to_L3__V), len 2 for module Wechselrichter1
2016.12.02 01:08:05 5: Wechselrichter1: ParseObj called with 7fc00000 and start 40081
2016.12.02 01:08:05 5: Wechselrichter1: ParseObj ObjInfo for h40081: reading=Voltage_L2_to_L3__V, unpack=f>, expr=, format=%.1f, map=
2016.12.02 01:08:05 5: Wechselrichter1: ParseObj unpacked 7fc00000 with f> to 6e616e
2016.12.02 01:08:05 5: Wechselrichter1: ParseObj for Voltage_L2_to_L3__V does sprintf with format %.1f value is nan
2016.12.02 01:08:05 5: Wechselrichter1: ParseObj for Voltage_L2_to_L3__V sprintf result is nan
2016.12.02 01:08:05 4: Wechselrichter1: ParseObj for Voltage_L2_to_L3__V assigns nan
2016.12.02 01:08:05 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:05 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.621568918228149
2016.12.02 01:08:06 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 32 for Operating_State_String1 (h40290), len 1)
2016.12.02 01:08:06 5: SW: 00200000000601039d620001
2016.12.02 01:08:06 5: Wechselrichter1: raw read: 0020000000050103020003
2016.12.02 01:08:06 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 32, values 0003 request was for h.40290 (Operating_State_String1), len 1 for module Wechselrichter1
2016.12.02 01:08:06 5: Wechselrichter1: ParseObj called with 0003 and start 40290
2016.12.02 01:08:06 5: Wechselrichter1: ParseObj ObjInfo for h40290: reading=Operating_State_String1, unpack=n, expr=, format=, map=1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby
2016.12.02 01:08:06 5: Wechselrichter1: ParseObj unpacked 0003 with n to 33
2016.12.02 01:08:06 5: Wechselrichter1: ParseObj for Operating_State_String1 maps value 3 with 1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby
2016.12.02 01:08:06 4: Wechselrichter1: ParseObj for Operating_State_String1 assigns Run-up.phase
2016.12.02 01:08:06 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:06 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.661018133163452
2016.12.02 01:08:07 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 172 for Energy_Total__kWh (h00509), len 4)
2016.12.02 01:08:07 5: SW: 00ac00000006010301fd0004
2016.12.02 01:08:07 5: Wechselrichter1: raw read: 00ac0000000b01030800000000003cd1ec
2016.12.02 01:08:07 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 172, values 00000000003cd1ec request was for h.00509 (Energy_Total__kWh), len 4 for module Wechselrichter1
2016.12.02 01:08:07 5: Wechselrichter1: ParseObj called with 00000000003cd1ec and start 00509
2016.12.02 01:08:07 5: Wechselrichter1: ParseObj ObjInfo for h00509: reading=Energy_Total__kWh, unpack=Q>, expr=$val /1000, format=, map=
2016.12.02 01:08:07 5: Wechselrichter1: ParseObj unpacked 00000000003cd1ec with Q> to 33393835393030
2016.12.02 01:08:07 5: Wechselrichter1: ParseObj for Energy_Total__kWh evaluates 3985900 with expr $val /1000
2016.12.02 01:08:07 4: Wechselrichter1: ParseObj for Energy_Total__kWh assigns 3985.9
2016.12.02 01:08:07 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:07 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.64487099647522
2016.12.02 01:08:08 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 85 for .ScaleFactor_Energy (h40268), len 1)
2016.12.02 01:08:08 5: SW: 00550000000601039d4c0001
2016.12.02 01:08:08 5: Wechselrichter1: raw read: 0055000000050103020000
2016.12.02 01:08:08 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 85, values 0000 request was for h.40268 (.ScaleFactor_Energy), len 1 for module Wechselrichter1
2016.12.02 01:08:08 5: Wechselrichter1: ParseObj called with 0000 and start 40268
2016.12.02 01:08:08 5: Wechselrichter1: ParseObj ObjInfo for h40268: reading=.ScaleFactor_Energy, unpack=s>, expr=, format=%.0f, map=
2016.12.02 01:08:08 5: Wechselrichter1: ParseObj unpacked 0000 with s> to 30
2016.12.02 01:08:08 5: Wechselrichter1: ParseObj for .ScaleFactor_Energy does sprintf with format %.0f value is 0
2016.12.02 01:08:08 5: Wechselrichter1: ParseObj for .ScaleFactor_Energy sprintf result is 0
2016.12.02 01:08:08 4: Wechselrichter1: ParseObj for .ScaleFactor_Energy assigns 0
2016.12.02 01:08:08 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:08 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.696697235107422
2016.12.02 01:08:09 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 74 for Power_String1__W (h40284), len 1)
2016.12.02 01:08:09 5: SW: 004a0000000601039d5c0001
2016.12.02 01:08:09 5: Wechselrichter1: raw read: 004a00000005010302ffff
2016.12.02 01:08:09 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 74, values ffff request was for h.40284 (Power_String1__W), len 1 for module Wechselrichter1
2016.12.02 01:08:09 5: Wechselrichter1: ParseObj called with ffff and start 40284
2016.12.02 01:08:09 5: Wechselrichter1: ParseObj ObjInfo for h40284: reading=Power_String1__W, unpack=S>, expr=MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Power",0),0,7000,$name,"Power_String1__W"), format=%.0f, map=
2016.12.02 01:08:09 5: Wechselrichter1: ParseObj unpacked ffff with S> to 3635353335
2016.12.02 01:08:09 5: Wechselrichter1: ParseObj for Power_String1__W evaluates 65535 with expr MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Power",0),0,7000,$name,"Power_String1__W")
2016.12.02 01:08:09 5: Wechselrichter1: ParseObj for Power_String1__W does sprintf with format %.0f value is 655.35
2016.12.02 01:08:09 5: Wechselrichter1: ParseObj for Power_String1__W sprintf result is 655
2016.12.02 01:08:09 4: Wechselrichter1: ParseObj for Power_String1__W assigns 655
2016.12.02 01:08:09 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:09 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.660858154296875
2016.12.02 01:08:10 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 97 for ActiveStateCode (h00213), len 1)
2016.12.02 01:08:10 5: SW: 006100000006010300d50001
2016.12.02 01:08:10 5: Wechselrichter1: raw read: 0061000000050103020000
2016.12.02 01:08:10 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 97, values 0000 request was for h.00213 (ActiveStateCode), len 1 for module Wechselrichter1
2016.12.02 01:08:10 5: Wechselrichter1: ParseObj called with 0000 and start 00213
2016.12.02 01:08:10 5: Wechselrichter1: ParseObj ObjInfo for h00213: reading=ActiveStateCode, unpack=n, expr=, format=, map=1:aus, 2:AutoShutdown, 3:startet, 4:Normalbetrieb, 5:Leistungsreduktion, 6:abschalten, 7:Fehler, 8:Standby
2016.12.02 01:08:10 5: Wechselrichter1: ParseObj unpacked 0000 with n to 30
2016.12.02 01:08:10 5: Wechselrichter1: ParseObj for ActiveStateCode maps value 0 with 1:aus, 2:AutoShutdown, 3:startet, 4:Normalbetrieb, 5:Leistungsreduktion, 6:abschalten, 7:Fehler, 8:Standby
2016.12.02 01:08:10 4: Wechselrichter1: ParseObj for ActiveStateCode assigns 0
2016.12.02 01:08:10 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:10 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.624407052993774
2016.12.02 01:08:11 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 237 for Energy_Year__kWh (h00505), len 4)
2016.12.02 01:08:11 5: SW: 00ed00000006010301f90004
2016.12.02 01:08:11 5: Wechselrichter1: raw read: 00ed0000000b01030800000000003cd1ef
2016.12.02 01:08:11 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 237, values 00000000003cd1ef request was for h.00505 (Energy_Year__kWh), len 4 for module Wechselrichter1
2016.12.02 01:08:11 5: Wechselrichter1: ParseObj called with 00000000003cd1ef and start 00505
2016.12.02 01:08:11 5: Wechselrichter1: ParseObj ObjInfo for h00505: reading=Energy_Year__kWh, unpack=Q>, expr=$val /1000, format=, map=
2016.12.02 01:08:11 5: Wechselrichter1: ParseObj unpacked 00000000003cd1ef with Q> to 33393835393033
2016.12.02 01:08:11 5: Wechselrichter1: ParseObj for Energy_Year__kWh evaluates 3985903 with expr $val /1000
2016.12.02 01:08:11 4: Wechselrichter1: ParseObj for Energy_Year__kWh assigns 3985.903
2016.12.02 01:08:11 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:11 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.645101070404053
2016.12.02 01:08:12 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 239 for Energy_total_String2__kWh (h40305), len 2)
2016.12.02 01:08:12 5: SW: 00ef0000000601039d710002
2016.12.02 01:08:12 5: Wechselrichter1: raw read: 00ef00000007010304001de8bc
2016.12.02 01:08:12 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 239, values 001de8bc request was for h.40305 (Energy_total_String2__kWh), len 2 for module Wechselrichter1
2016.12.02 01:08:12 5: Wechselrichter1: ParseObj called with 001de8bc and start 40305
2016.12.02 01:08:12 5: Wechselrichter1: ParseObj ObjInfo for h40305: reading=Energy_total_String2__kWh, unpack=L>, expr=$val *10**ReadingsNum($name,".ScaleFactor_Energy",0)/1000, format=%.3f, map=
2016.12.02 01:08:12 5: Wechselrichter1: ParseObj unpacked 001de8bc with L> to 31393630313234
2016.12.02 01:08:12 5: Wechselrichter1: ParseObj for Energy_total_String2__kWh evaluates 1960124 with expr $val *10**ReadingsNum($name,".ScaleFactor_Energy",0)/1000
2016.12.02 01:08:12 5: Wechselrichter1: ParseObj for Energy_total_String2__kWh does sprintf with format %.3f value is 1960.124
2016.12.02 01:08:12 5: Wechselrichter1: ParseObj for Energy_total_String2__kWh sprintf result is 1960.124
2016.12.02 01:08:12 4: Wechselrichter1: ParseObj for Energy_total_String2__kWh assigns 1960.124
2016.12.02 01:08:12 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:12 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.661181926727295
2016.12.02 01:08:13 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 231 for Current_L1__A (h40073), len 2)
2016.12.02 01:08:13 5: SW: 00e70000000601039c890002
2016.12.02 01:08:13 5: Wechselrichter1: raw read: 00e70000000701030400000000
2016.12.02 01:08:13 4: Wechselrichter1: ParseFrames got fcode 3 from 1, tid 231, values 00000000 request was for h.40073 (Current_L1__A), len 2 for module Wechselrichter1
2016.12.02 01:08:13 5: Wechselrichter1: ParseObj called with 00000000 and start 40073
2016.12.02 01:08:13 5: Wechselrichter1: ParseObj ObjInfo for h40073: reading=Current_L1__A, unpack=f>, expr=, format=%.2f, map=
2016.12.02 01:08:13 5: Wechselrichter1: ParseObj unpacked 00000000 with f> to 30
2016.12.02 01:08:13 5: Wechselrichter1: ParseObj for Current_L1__A does sprintf with format %.2f value is 0
2016.12.02 01:08:13 5: Wechselrichter1: ParseObj for Current_L1__A sprintf result is 0.00
2016.12.02 01:08:13 4: Wechselrichter1: ParseObj for Current_L1__A assigns 0.00
2016.12.02 01:08:13 5: Wechselrichter1: ParseFrames got 1 readings from ParseObj
2016.12.02 01:08:13 4: Wechselrichter1: CheckDelay commDelay for Wechselrichter1 not over, try again in 0.660861015319824
2016.12.02 01:08:14 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 75 for Voltage_L1_to_L2__V (h40079), len 2)
2016.12.02 01:08:14 5: SW: 004b0000000601039c8f0002
2016.12.02 01:08:16 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 004b0000000601039c8f0002, last Buffer:
2016.12.02 01:08:16 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 106 for .ScaleFactor_Current (h40265), len 1)
2016.12.02 01:08:16 5: SW: 006a0000000601039d490001
2016.12.02 01:08:18 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 006a0000000601039d490001, last Buffer:
2016.12.02 01:08:18 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 28 for Current_String1__A (h40282), len 1)
2016.12.02 01:08:18 5: SW: 001c0000000601039d5a0001
2016.12.02 01:08:20 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 001c0000000601039d5a0001, last Buffer:
2016.12.02 01:08:20 3: Wechselrichter1: 3 successive timeouts, setting state to disconnected
2016.12.02 01:08:20 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1)
2016.12.02 01:08:20 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 96 for Energy_total_String1__kWh (h40285), len 2)
2016.12.02 01:08:20 5: SW: 00600000000601039d5d0002
2016.12.02 01:08:22 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00600000000601039d5d0002, last Buffer:
2016.12.02 01:08:22 3: Wechselrichter1: 4 successive timeouts, setting state to disconnected
2016.12.02 01:08:22 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 58 for .ScaleFactor_Power (h40267), len 1)
2016.12.02 01:08:22 5: SW: 003a0000000601039d4b0001
2016.12.02 01:08:24 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 003a0000000601039d4b0001, last Buffer:
2016.12.02 01:08:24 3: Wechselrichter1: 5 successive timeouts, setting state to disconnected
2016.12.02 01:08:24 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 123 for Energy_Day__kWh (h00501), len 4)
2016.12.02 01:08:24 5: SW: 007b00000006010301f50004
2016.12.02 01:08:26 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007b00000006010301f50004, last Buffer:
2016.12.02 01:08:26 3: Wechselrichter1: 6 successive timeouts, setting state to disconnected
2016.12.02 01:08:26 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 209 for Voltage_L3_to_L1__V (h40083), len 2)
2016.12.02 01:08:26 5: SW: 00d10000000601039c930002
2016.12.02 01:08:28 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00d10000000601039c930002, last Buffer:
2016.12.02 01:08:28 3: Wechselrichter1: 7 successive timeouts, setting state to disconnected
2016.12.02 01:08:28 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 251 for Operating_State (h40117), len 1)
2016.12.02 01:08:28 5: SW: 00fb0000000601039cb50001
2016.12.02 01:08:30 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00fb0000000601039cb50001, last Buffer:
2016.12.02 01:08:30 3: Wechselrichter1: 8 successive timeouts, setting state to disconnected
2016.12.02 01:08:30 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 199 for Voltage_L3__V (h40089), len 2)
2016.12.02 01:08:30 5: SW: 00c70000000601039c990002
2016.12.02 01:08:32 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00c70000000601039c990002, last Buffer:
2016.12.02 01:08:32 3: Wechselrichter1: 9 successive timeouts, setting state to disconnected
2016.12.02 01:08:32 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 131 for Voltage_DC__V (h40105), len 2)
2016.12.02 01:08:32 5: SW: 00830000000601039ca90002
2016.12.02 01:08:34 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00830000000601039ca90002, last Buffer:
2016.12.02 01:08:34 3: Wechselrichter1: 10 successive timeouts, setting state to disconnected
2016.12.02 01:08:34 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 126 for Voltage_L2__V (h40087), len 2)
2016.12.02 01:08:34 5: SW: 007e0000000601039c970002
2016.12.02 01:08:36 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007e0000000601039c970002, last Buffer:
2016.12.02 01:08:36 3: Wechselrichter1: 11 successive timeouts, setting state to disconnected
2016.12.02 01:08:36 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 183 for Operating_State_String2 (h40310), len 1)
2016.12.02 01:08:36 5: SW: 00b70000000601039d760001
2016.12.02 01:08:38 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00b70000000601039d760001, last Buffer:
2016.12.02 01:08:38 3: Wechselrichter1: 12 successive timeouts, setting state to disconnected
2016.12.02 01:08:38 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 253 for Current_L2__A (h40075), len 2)
2016.12.02 01:08:38 5: SW: 00fd0000000601039c8b0002
2016.12.02 01:08:40 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00fd0000000601039c8b0002, last Buffer:
2016.12.02 01:08:40 3: Wechselrichter1: 13 successive timeouts, setting state to disconnected
2016.12.02 01:08:40 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 178 for Voltage_String1__V (h40283), len 1)
2016.12.02 01:08:40 5: SW: 00b20000000601039d5b0001
2016.12.02 01:08:42 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00b20000000601039d5b0001, last Buffer:
2016.12.02 01:08:42 3: Wechselrichter1: 14 successive timeouts, setting state to disconnected
2016.12.02 01:08:42 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 166 for .ScaleFactor_Voltage (h40266), len 1)
2016.12.02 01:08:42 5: SW: 00a60000000601039d4a0001
2016.12.02 01:08:44 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a60000000601039d4a0001, last Buffer:
2016.12.02 01:08:44 3: Wechselrichter1: 15 successive timeouts, setting state to disconnected
2016.12.02 01:08:44 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 104 for Current_L3__A (h40077), len 2)
2016.12.02 01:08:44 5: SW: 00680000000601039c8d0002
2016.12.02 01:08:46 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00680000000601039c8d0002, last Buffer:
2016.12.02 01:08:46 3: Wechselrichter1: 16 successive timeouts, setting state to disconnected
2016.12.02 01:08:46 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 189 for Power_String2__W (h40304), len 1)
2016.12.02 01:08:46 5: SW: 00bd0000000601039d700001
2016.12.02 01:08:48 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00bd0000000601039d700001, last Buffer:
2016.12.02 01:08:48 3: Wechselrichter1: 17 successive timeouts, setting state to disconnected
2016.12.02 01:08:48 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 80 for Current_DC__A (h40103), len 2)
2016.12.02 01:08:48 5: SW: 00500000000601039ca70002
2016.12.02 01:08:50 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00500000000601039ca70002, last Buffer:
2016.12.02 01:08:50 3: Wechselrichter1: 18 successive timeouts, setting state to disconnected
2016.12.02 01:08:50 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 254 for Voltage_L1__V (h40085), len 2)
2016.12.02 01:08:50 5: SW: 00fe0000000601039c950002
2016.12.02 01:08:52 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00fe0000000601039c950002, last Buffer:
2016.12.02 01:08:52 3: Wechselrichter1: 19 successive timeouts, setting state to disconnected
2016.12.02 01:09:00 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-12-02 01:10:00 - Interval 60
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate called
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate objects from attributes:
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate full object list: h00213 h00215 h00501 h00505 h00509 h40004 h40020 h40036 h40044 h40052 h40068 h40071 h40073 h40075 h40077 h40079 h40081 h40083 h40085 h40087 h40089 h40091 h40103 h40105 h40107 h40117 h40118 h40196 h40265 h40266 h40267 h40268 h40282 h40283 h40284 h40285 h40290 h40302 h40303 h40304 h40305 h40310
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h00213 => ActiveStateCode, poll = 1, last = 1480637290.51364
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip ActiveStateCode, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h00215 => DataModelType, poll = once, last = 1480586927.81585
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h00501 => Energy_Day__kWh, poll = 1, last = 1480608655.62601
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Energy_Day__kWh
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h00505 => Energy_Year__kWh, poll = 1, last = 1480637291.42673
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Energy_Year__kWh, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h00509 => Energy_Total__kWh, poll = 1, last = 1480637287.61465
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Energy_Total__kWh, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40004 => Manufacturer, poll = once, last = 1480586924.90272
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40020 => Device_model, poll = once, last = 1480586932.62794
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40036 => SW_Version_DataManager, poll = once, last = 1480586936.49519
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40044 => SW_Version_Inverter, poll = once, last = 1480586947.20682
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40052 => Serialnumber, poll = once, last = 1480586930.80025
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40068 => Modbus_Address, poll = once, last = 1480586931.71385
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40071 => Current_total__A, poll = 1, last = 1480637282.64508
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Current_total__A, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40073 => Current_L1__A, poll = 1, last = 1480637293.47735
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Current_L1__A, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40075 => Current_L2__A, poll = 1, last = 1480608840.88077
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Current_L2__A
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40077 => Current_L3__A, poll = 1, last = 1480608538.7491
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Current_L3__A
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40079 => Voltage_L1_to_L2__V, poll = 1, last = 1480608297.23014
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_L1_to_L2__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40081 => Voltage_L2_to_L3__V, poll = 1, last = 1480637285.59411
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Voltage_L2_to_L3__V, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40083 => Voltage_L3_to_L1__V, poll = 1, last = 1480608659.50894
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_L3_to_L1__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40085 => Voltage_L1__V, poll = 1, last = 1480608476.05502
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_L1__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40087 => Voltage_L2__V, poll = 1, last = 1480608536.9009
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_L2__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40089 => Voltage_L3__V, poll = 1, last = 1480608412.24766
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_L3__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40091 => Power__W, poll = 1, last = 1480637281.71634
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Power__W, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40103 => Current_DC__A, poll = 1, last = 1480608842.89506
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Current_DC__A
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40105 => Voltage_DC__V, poll = 1, last = 1480608724.51948
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_DC__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40107 => Power_DC__W, poll = 1, last = 1480637280.75729
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Power_DC__W, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40117 => Operating_State, poll = 1, last = 1480608838.96848
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Operating_State
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40118 => Operating_State_Vendor, poll = 1, last = 1480637279.8388
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Operating_State_Vendor, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40196 => Energy_total_AC__kWh, poll = once, last = 1480586919.12403
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40265 => .ScaleFactor_Current, poll = 1, last = 1480608848.82537
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Current
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40266 => .ScaleFactor_Voltage, poll = 1, last = 1480608844.95161
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Voltage
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40267 => .ScaleFactor_Power, poll = 1, last = 1480608847.91177
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Power
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40268 => .ScaleFactor_Energy, poll = 1, last = 1480637288.6745
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request .ScaleFactor_Energy
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40282 => Current_String1__A, poll = 1, last = 1480608777.45411
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Current_String1__A
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40283 => Voltage_String1__V, poll = 1, last = 1480608839.88256
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Voltage_String1__V
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40284 => Power_String1__W, poll = 1, last = 1480637289.58915
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Power_String1__W, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40285 => Energy_total_String1__kWh, poll = 1, last = 1480608658.58894
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Energy_total_String1__kWh
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40290 => Operating_State_String1, poll = 1, last = 1480637286.69654
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Operating_State_String1, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40302 => Current_String2__A, poll = 1, last = 1480637283.55966
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Current_String2__A, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40303 => Voltage_String2__V, poll = 1, last = 1480637284.67518
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Voltage_String2__V, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40304 => Power_String2__W, poll = 1, last = 1480608843.80816
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Power_String2__W
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40305 => Energy_total_String2__kWh, poll = 1, last = 1480637292.5623
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate will skip Energy_total_String2__kWh, delay not over
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate check h40310 => Operating_State_String2, poll = 1, last = 1480608841.79637
2016.12.02 01:09:00 4: Wechselrichter1: GetUpdate will request Operating_State_String2
2016.12.02 01:09:00 5: Wechselrichter1: GetUpdate tries to combine read commands
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Energy_Day__kWh / h00501 with Current_L2__A / h40075, span 39576 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Current_L2__A / h40075 with Current_L3__A / h40077, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Current_L3__A / h40077 with Voltage_L1_to_L2__V / h40079, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_L1_to_L2__V / h40079 with Voltage_L3_to_L1__V / h40083, span 6 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_L3_to_L1__V / h40083 with Voltage_L1__V / h40085, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_L1__V / h40085 with Voltage_L2__V / h40087, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_L2__V / h40087 with Voltage_L3__V / h40089, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_L3__V / h40089 with Current_DC__A / h40103, span 16 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Current_DC__A / h40103 with Voltage_DC__V / h40105, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_DC__V / h40105 with Operating_State / h40117, span 13 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Operating_State / h40117 with .ScaleFactor_Current / h40265, span 149 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine .ScaleFactor_Current / h40265 with .ScaleFactor_Voltage / h40266, span 2 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine .ScaleFactor_Voltage / h40266 with .ScaleFactor_Power / h40267, span 2 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine .ScaleFactor_Power / h40267 with .ScaleFactor_Energy / h40268, span 2 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine .ScaleFactor_Energy / h40268 with Current_String1__A / h40282, span 15 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Current_String1__A / h40282 with Voltage_String1__V / h40283, span 2 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Voltage_String1__V / h40283 with Energy_total_String1__kWh / h40285, span 4 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Energy_total_String1__kWh / h40285 with Power_String2__W / h40304, span 20 > max 1
2016.12.02 01:09:00 5: Wechselrichter1: No Combine Power_String2__W / h40304 with Operating_State_String2 / h40310, span 7 > max 1
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40105, len 2 / span 2 to id 1, queue has 0 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 163 for h40105 (Voltage_DC__V), len/span 2, PDU 039ca90002
2016.12.02 01:09:00 4: Wechselrichter1: HandleSendQueue sends fc 3 to 1, tid 163 for Voltage_DC__V (h40105), len 2)
2016.12.02 01:09:00 5: SW: 00a30000000601039ca90002
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40117, len 1 / span 1 to id 1, queue has 0 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 158 for h40117 (Operating_State), len/span 1, PDU 039cb50001
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40089, len 2 / span 2 to id 1, queue has 1 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 93 for h40089 (Voltage_L3__V), len/span 2, PDU 039c990002
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40103, len 2 / span 2 to id 1, queue has 2 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 100 for h40103 (Current_DC__A), len/span 2, PDU 039ca70002
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40085, len 2 / span 2 to id 1, queue has 3 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 125 for h40085 (Voltage_L1__V), len/span 2, PDU 039c950002
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40304, len 1 / span 1 to id 1, queue has 4 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 231 for h40304 (Power_String2__W), len/span 1, PDU 039d700001
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40077, len 2 / span 2 to id 1, queue has 5 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 180 for h40077 (Current_L3__A), len/span 2, PDU 039c8d0002
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40266, len 1 / span 1 to id 1, queue has 6 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 111 for h40266 (.ScaleFactor_Voltage), len/span 1, PDU 039d4a0001
2016.12.02 01:09:00 4: Wechselrichter1: Send called with h40283, len 1 / span 1 to id 1, queue has 7 requests
2016.12.02 01:09:00 4: Wechselrichter1: Send queues fc 3 to 1, tid 88 for h40283 (Voltage_String1__V), len/span 1, PDU 039d5b000
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Dezember 2016, 09:38:28
Hallo Bjoernar,

die Antwort steht im Log:
Zitat
2016.12.02 01:07:48 5: Wechselrichter1: disable attribute removed on a Modbus TCP connection
Das bedeutet dass das disable-Attribut entfernt oder auf 0 gesetzt wurde.
Daher beginnt das Modul wieder mit den Abfragen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 03 Dezember 2016, 09:42:46
Werde ich mal mit ins Log aufnehmen. Komisch

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 03 Dezember 2016, 10:00:22
Guten Morgen Stefan,
wie sollte ich denn mein problem mit dem Kamstrup WMZ am besten mal anfassen?
Soll ich das Teil mal ohne weitere Bus-Teilnehmer anschliessen?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 03 Dezember 2016, 17:17:20
Am Rande:
Lange Logs sollten wegen der Lesbarkeit des gesamten Beitrags als Code oder besser als Anhang reingestellt werden. Oder bei bedarf geändert werden.
lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wopl am 03 Dezember 2016, 21:24:52
Da das irgendwie auch hiereingehört, verlink ich mal meinen Thread hier:
https://forum.fhem.de/index.php/topic,61553.0.html

Dank und Gruß,
Wolfram
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 04 Dezember 2016, 00:30:55
Hallo Stefan!
ZitatIch glaube ich verstehe jetzt wo das Problem liegt.
Die Antwort auf einen Modbus-Request mit Function Code 3 sollte so aussehen:

1 Byte im dem Function code (also 3)
1 Byte mit der Länge der Antwort in Bytes (also 2 wenn ein Register angefragt wurde)
Danach die Register-Werte
Und dann der CRC

Das ist aber nicht das was Dein Thermostat antwortet. Offenbar haben die Entwickler den Modbus-Standard nicht gelesen...
die wiederholen die Adresse wie bei der Antwort auf Function Code 6. bei Function Code 3 ist das aber nicht vorgesehen.
Siehe http://www.modbus.org/tech.php

Ich kann Dir aber ein Attribut einbauen, das das Parsing ändert damit das Modul solche falschen Antworen versteht ...
Hast du eventuell schon einen Zeitplan für die Funktion?
lg
Wolfgang

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Dezember 2016, 11:34:35
Hallo Wolfgang,

die Funktion habe ich schon eingebaut.
Ich versuche nur noch ein paar andere Bugs / Probleme zu lösen, dann poste ich ein Update.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Dezember 2016, 11:55:10
Hallo,

ich poste die aktuelle Version doch schon mal...

Neu:
- bei set-Werten werden Blanks entfernt wenn textArg nicht gesetzt ist
- Attribut dev-h-brokenFC3 für spezielle kaputte Implementationen von function code 3 (bei Wert 1 ändert sich die Interpretation der Antwort auf fc 3)
- Scanner für Modbus-IDs

Aufruf des Scanners für IDs z.B.:

set Device scanModbusId 1-7 h770

scannt IDs 1 bis 7 und versucht bei jeder Id das holding Register mit der Adresse 770 zu lesen.
Wenn eine Antwort kommt, setzt er ein Reading wie z.B.

scanId-5-Response-h770 hex=0064, len=2, string=.d, s=25600, s>=100, S=25600, S>=100

Das bedeutet, dass bei ID5 die Antwort 0064 kam.

Dokumentation fehlt noch und kommt mit dem nächsten Update ;-)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 04 Dezember 2016, 12:08:51
Hallo Stefan,
helf mir mal bitte auf die sprünge,
set Device scanModbusId 1-254 h258
auf den Modbusadapter, oder auf ein neues ModbusAttr Device ausführen?

Danke..!
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Dezember 2016, 12:17:24
Hallo,

für den Scanner am besten ein eigenes ModbusAttr Device erzeugen.
Hab gerade nochmal ein neues File hochgeladen. Im alten war noch eine lästige Debug-Meldung drin...

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 04 Dezember 2016, 12:23:08
Ok, neue Datei kopiert - ein
define WMZ ModbusAttr 3 30 ausgeführt
und ein
set WMZ scanModbusId 1-254 h258
Antwort ist:
Unknown argument scanModbusId, choose one of

ein Log dazu:
Zitat2016.12.04 12:19:02 0: Server shutdown
2016.12.04 12:19:10 2: Perfmon: ready to watch out for delays greater than one second
2016.12.04 12:19:10 1: Including fhem.cfg
2016.12.04 12:19:10 3: telnetPort: port 7072 opened
2016.12.04 12:19:10 3: WEB: port 8083 opened
2016.12.04 12:19:10 3: WEBphone: port 8084 opened
2016.12.04 12:19:10 3: WEBtablet: port 8085 opened
2016.12.04 12:19:11 2: eventTypes: loaded 406 events from ./log/eventTypes.txt
2016.12.04 12:19:11 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2016.12.04 12:19:12 3: MaxScanner MaxScanner Initialize.121 Init Done with Version 1.0.0.3 - 07.03.2016
2016.12.04 12:19:12 3: Opening ModbusRTU device /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0
2016.12.04 12:19:12 3: Setting ModbusRTU serial parameters to 19200,8,E,1
2016.12.04 12:19:12 3: ModbusRTU device opened
2016.12.04 12:19:12 3: ElEn1: defined with id 101, interval 30, destination Device ModbusRTU, protocol RTU
2016.12.04 12:19:12 3: ElEn2: defined with id 2, interval 30, destination Device ModbusRTU, protocol RTU
2016.12.04 12:19:12 1: Including ./log/fhem.save
2016.12.04 12:19:12 1: usb create starting
2016.12.04 12:19:13 3: Probing CUL device /dev/ttyAMA0
2016.12.04 12:19:13 3: Can't open /dev/ttyAMA0: Keine Berechtigung
2016.12.04 12:19:13 1: usb create end
2016.12.04 12:19:13 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth. telnetPort has no associated allowed device with password/globalpassword.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2016.12.04 12:19:13 0: Featurelevel: 5.7
2016.12.04 12:19:13 0: Server started with 23 defined entities (fhem.pl:12680/2016-11-28 perl:5.020002 os:linux user:fhem pid:862)
2016.12.04 12:19:13 1: Perfmon: possible freeze starting at 12:19:11, delay is 2.283
2016.12.04 12:19:13 3: Opening MaxCube device 192.168.178.120:62910
2016.12.04 12:19:13 3: Can't connect to 192.168.178.120:62910: Das Netzwerk ist nicht erreichbar
2016.12.04 12:19:13 2: MAXLAN_Connect: Could not connect
2016.12.04 12:19:14 1: DbLog DBLogging: DBLog_Push - DB Session dead! - Can't call method "ping" on unblessed reference at ./FHEM/93_DbLog.pm line 582.

2016.12.04 12:19:14 1: DbLog DBLogging: DBLog_Push - DB Session dead! - Can't call method "ping" on unblessed reference at ./FHEM/93_DbLog.pm line 582.

2016.12.04 12:19:14 1: DbLog DBLogging: DBLog_Push - DB Session dead! - Can't call method "ping" on unblessed reference at ./FHEM/93_DbLog.pm line 582.

2016.12.04 12:19:16 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user fhem
2016.12.04 12:19:16 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 862
2016.12.04 12:19:16 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2016.12.04 12:19:34 1: Perfmon: possible freeze starting at 12:19:25, delay is 9.824
2016.12.04 12:19:34 3: MaxScanner Temp_Wohnen Work.1023 TEMPERATURE received is assumed (Cube)
2016.12.04 12:19:34 3: MaxScanner Temp_Wohnen Work.1236  Wait at least 180 sec . after last command
2016.12.04 12:19:34 3: MaxScanner Temp_Buero Work.1023 TEMPERATURE received is assumed (Cube)
2016.12.04 12:19:34 3: MaxScanner Temp_Buero Work.1236  Wait at least 180 sec . after last command
2016.12.04 12:19:34 3: MaxScanner Temp_BadOG Work.1023 TEMPERATURE received is assumed (Cube)
2016.12.04 12:19:34 3: MaxScanner Temp_BadOG Work.1236  Wait at least 180 sec . after last command
2016.12.04 12:19:34 3: MaxScanner Temp_BadEG Work.1023 TEMPERATURE received is assumed (Cube)
2016.12.04 12:19:34 3: MaxScanner Temp_BadEG Work.1236  Wait at least 180 sec . after last command
2016.12.04 12:19:34 3: MaxScanner Temp_Schlafen Work.1023 TEMPERATURE received is assumed (Cube)
2016.12.04 12:19:34 3: MaxScanner Temp_Schlafen Work.1038 <<stage 1>> no action due open window; desi-temp before window open:12.0
2016.12.04 12:19:34 3: MaxScanner Temp_Paula Work.1023 TEMPERATURE received is assumed (Cube)
2016.12.04 12:19:34 3: MaxScanner Temp_Paula Work.1236  Wait at least 180 sec . after last command
2016.12.04 12:20:13 3: Opening MaxCube device 192.168.178.120:62910
2016.12.04 12:20:13 3: MaxCube device opened
2016.12.04 12:20:36 3: ModbusRTU: timeout waiting for fc 4 from id 101, (i52), Request was 65040034002239f9, last Buffer:
2016.12.04 12:20:53 3: WMZ: defined with id 3, interval 30, destination Device ModbusRTU, protocol RTU
2016.12.04 12:22:19 3: ModbusRTU: timeout waiting for fc 4 from id 2, (i52), Request was 02040034002231ee, last Buffer:
2016.12.04 12:25:21 3: ModbusRTU: timeout waiting for fc 4 from id 2, (i12), Request was 0204000c0006b038, last Buffer:
2016.12.04 12:26:48 3: ModbusRTU: timeout waiting for fc 4 from id 2, (i52), Request was 02040034002231ee, last Buffer:
2016.12.04 12:28:18 3: ModbusRTU: timeout waiting for fc 4 from id 2, (i104), Request was 020400680002f024, last Buffer:
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Dezember 2016, 17:44:54
Hallo der-Lolo,

da fehlt noch ein attr WMZ enableControlSet 1 um die eingebauten Set-Befehle zu erlauben.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Dezember 2016, 17:46:01
und hier nochmal ein Update.
Beim Schreiben von Coils war noch ein Fehler im Code.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 04 Dezember 2016, 19:05:37
Danke Stefan!

Attribut dev-h-brokenFC3 läuft super! :). Schön langsam werde ich zum Modbus-Fan.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 07 Dezember 2016, 10:15:51
Hallo Stefan,

ich versuche vor dem Jahresende alle meine Fehler zu beseitigen...irgendwie geligt mir das nicht so ;-)

Habe seit gestern folgende Fehler im log:


2016.12.07 08:00:00 3: MODBUS1: ParseFrames got a copy of the request sent before - looks like an echo!
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:33 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:51 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:51 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:00:51 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:35 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:35 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:35 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:35 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:35 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:35 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:51 1: Perfmon: possible freeze starting at 08:01:50, delay is 1.249
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $reqLen in multiplication (*) at ./FHEM/98_Modbus.pm line 652, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $proto in string eq at ./FHEM/98_Modbus.pm line 660, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $proto in string eq at ./FHEM/98_Modbus.pm line 669, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $proto in string eq at ./FHEM/98_Modbus.pm line 680, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/98_Modbus.pm line 710, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $reqId in numeric ne (!=) at ./FHEM/98_Modbus.pm line 713, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $devAdr in numeric ne (!=) at ./FHEM/98_Modbus.pm line 713, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric ne (!=) at ./FHEM/98_Modbus.pm line 717, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value in numeric ne (!=) at ./FHEM/98_Modbus.pm line 717, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 734, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 738, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 741, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 746, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric eq (==) at ./FHEM/98_Modbus.pm line 749, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in numeric lt (<) at ./FHEM/98_Modbus.pm line 753, <GEN23> line 54.
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in concatenation (.) or string at ./FHEM/98_Modbus.pm line 754, <GEN23> line 54.
2016.12.07 08:01:55 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 08:01:55 1: PERL WARNING: Use of uninitialized value $fCode in concatenation (.) or string at ./FHEM/98_Modbus.pm line 755, <GEN23> line 54


Hast du eine Idee woher das kommen kann?

Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 07 Dezember 2016, 13:58:24
Vielleicht hilft das ja noch weiter:

2016.12.07 13:56:32 5: MODBUS1: raw read: 28
2016.12.07 13:56:32 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 13:56:32 5: MODBUS1: ParseFrames returned error: function code  not implemented
2016.12.07 13:56:32 5: MODBUS1: raw read: 039c4900
2016.12.07 13:56:32 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 13:56:32 5: MODBUS1: ParseFrames returned error: function code  not implemented
2016.12.07 13:56:32 5: MODBUS1: raw read: 0a3db2
2016.12.07 13:56:32 3: MODBUS1: ParseFrames: function code  not implemented
2016.12.07 13:56:32 5: MODBUS1: ParseFrames returned error: function code  not implemented


Hier noch mehr logs mit Verbose 5 auf dem Modbus device


2016.12.07 15:43:37 5: MODBUS1: raw read: 47
2016.12.07 15:43:37 4: MODBUS1: ParseFrames got fcode 4 from 2, tid 0, values 433090d842580fdf441adfb3 request was for i.12 (Power_L1__W), len 6 for module AC_Allgemein
2016.12.07 15:43:37 5: MODBUS1: ParseFrames got 3 readings from ParseObj
2016.12.07 15:43:37 4: MODBUS1: CheckDelay commDelay for AC_Allgemein not over, try again in 0.656200885772705
2016.12.07 15:43:37 4: MODBUS1: HandleSendQueue sends fc 4 to 2, tid 0 for Power_Sum__W (i52), len 34)
2016.12.07 15:43:37 5: SW: 02040034002231ee
2016.12.07 15:43:37 5: MODBUS1: raw read: 02
2016.12.07 15:43:37 5: MODBUS1: raw read: 04
2016.12.07 15:43:37 5: MODBUS1: raw read: 4444
2016.12.07 15:43:37 5: MODBUS1: raw read: 55
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (0 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 72
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (1 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 7a00
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (3 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 00
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (4 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 00
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (5 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 0044
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (7 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 65
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (8 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 6d
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (9 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 5900
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (11 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 00
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (12 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 0000
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (14 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: c3
2016.12.07 15:43:37 5: MODBUS1: ParseFrames: wait for more data (15 / 68)
2016.12.07 15:43:37 5: MODBUS1: raw read: 74
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (16 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 66ca
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (18 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 3f
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (19 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 76
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (20 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 1dd2
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (22 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 00
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (23 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 0000
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (25 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 00
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (26 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: c1
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (27 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 7f95
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (29 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 58
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (30 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 00
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (31 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 0000
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (33 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 00
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (34 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 4247
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (36 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: f8
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (37 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 81
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (38 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 458e
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (40 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: fc
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (41 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 89
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (42 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 3a83
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (44 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 12
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (45 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 6f
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (46 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 4322
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (48 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: ced944
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (51 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: c8
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (52 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: c3
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (53 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 2b45
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (55 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 99
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (56 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 4cc1
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (58 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 46
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (59 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: ca
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (60 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: ae8f
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (62 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 44
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (63 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 6c
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (64 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: f15a
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (66 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: 45
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (67 / 68)
2016.12.07 15:43:38 5: MODBUS1: raw read: ee
2016.12.07 15:43:38 4: MODBUS1: ParseFrames got fcode 4 from 2, tid 0, values 4455727a0000000044656d5900000000c37466ca3f761dd200000000c17f9558000000004247f881458efc893a83126f4322ced944c8c32b45994cc146caae8f446cf15a request was for i.52 (Power_Sum__W), len 34 for module AC_Allgemein
2016.12.07 15:43:38 5: MODBUS1: ParseFrames got 13 readings from ParseObj
2016.12.07 15:43:38 4: MODBUS1: HandleSendQueue sends fc 3 to 3, tid 0 for System_Measurement_mode (h63776), len 2)
2016.12.07 15:43:38 5: SW: 0303f9200002f4bf
2016.12.07 15:43:38 5: MODBUS1: raw read: 03
2016.12.07 15:43:38 5: MODBUS1: raw read: 03
2016.12.07 15:43:38 5: MODBUS1: raw read: 04
2016.12.07 15:43:38 5: MODBUS1: raw read: 0002
2016.12.07 15:43:38 5: MODBUS1: ParseFrames: wait for more data (0 / 4)
2016.12.07 15:43:40 4: MODBUS1: timeout waiting for 3 from 3, Request was 0303f9200002f4bf, last Buffer:
2016.12.07 15:43:40 4: MODBUS1: HandleSendQueue sends fc 4 to 3, tid 0 for Energy_import__kWh (i72), len 4)
2016.12.07 15:43:40 5: SW: 030400480004703d
2016.12.07 15:43:40 5: MODBUS1: raw read: 03
2016.12.07 15:43:40 5: MODBUS1: raw read: 04
2016.12.07 15:43:40 5: MODBUS1: raw read: 08
2016.12.07 15:43:40 5: MODBUS1: raw read: 44e4
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (0 / 8)
2016.12.07 15:43:40 5: MODBUS1: raw read: 72
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (1 / 8)
2016.12.07 15:43:40 5: MODBUS1: raw read: 77
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (2 / 8)
2016.12.07 15:43:40 5: MODBUS1: raw read: 0000
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (4 / 8)
2016.12.07 15:43:40 5: MODBUS1: raw read: 00
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (5 / 8)
2016.12.07 15:43:40 5: MODBUS1: raw read: 0070a1
2016.12.07 15:43:40 4: MODBUS1: ParseFrames got fcode 4 from 3, tid 0, values 44e4727700000000 request was for i.72 (Energy_import__kWh), len 4 for module AC_LWP
2016.12.07 15:43:40 5: MODBUS1: ParseFrames got 2 readings from ParseObj
2016.12.07 15:43:40 4: MODBUS1: CheckDelay commDelay for AC_LWP not over, try again in 0.655771970748901
2016.12.07 15:43:40 4: MODBUS1: HandleSendQueue sends fc 4 to 3, tid 0 for Power__W (i12), len 2)
2016.12.07 15:43:40 5: SW: 0304000c0002b02a
2016.12.07 15:43:40 5: MODBUS1: raw read: 03
2016.12.07 15:43:40 5: MODBUS1: raw read: 04
2016.12.07 15:43:40 5: MODBUS1: raw read: 0444
2016.12.07 15:43:40 5: MODBUS1: raw read: 03
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (0 / 4)
2016.12.07 15:43:40 5: MODBUS1: raw read: 2d2d
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (2 / 4)
2016.12.07 15:43:40 5: MODBUS1: raw read: e1
2016.12.07 15:43:40 5: MODBUS1: ParseFrames: wait for more data (3 / 4)
2016.12.07 15:43:40 5: MODBUS1: raw read: f9
2016.12.07 15:43:40 4: MODBUS1: ParseFrames got fcode 4 from 3, tid 0, values 44032d2d request was for i.12 (Power__W), len 2 for module AC_LWP
2016.12.07 15:43:40 5: MODBUS1: ParseFrames got 1 readings from ParseObj


Danke und Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 Dezember 2016, 17:39:38
Hallo Bjoernar,

hast Du eventuell noch eine ältere Version am Laufen?
Aktuell wäre 3.5.4 und da sollten ein paar Dinge schon wieder behoben sein ...

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 07 Dezember 2016, 19:07:35
...bin bei 3.5.1.
Ist dann wohl bei mir untergegangen.
...
Teste ich mal.

Danke und Gruß
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 08 Dezember 2016, 20:11:46
...mit 3.5.4 sind die Fehler wieder weg.

Besten Dank für deine tolle Arbeit!
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Dezember 2016, 21:07:32
und hier nochmal ein kleines Update.
Ich hoffe jetzt sind alle bekannten Fehler draussen ...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: HenryD am 11 Dezember 2016, 18:58:51
Seit dem letzen Update hatte ich Probleme mit dem Schreiben mit Funktion 5. Lesen ging, schreiben nicht. Sowohl bei RTU als auch bei TCP. Mit dem Update von 8.12. funktioniert das wieder. SUPER - DANKE.
Ich bekomme aber eine Meldung: "Timeout reading answer". Mir ist nicht bewust, das die vorher auch da war, könnte aber sein. An welcher Schraube kann ich noch drehen, um das weg zu bekommen?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 11 Dezember 2016, 20:38:52
Hallo HenryD,

Wenn Du das Gerät bzw. bei RTU auch das physische Gerät (IO Device) auf verbose 5 setzt und das Log postest, kann ich vermutlich erkennen, wo das Problem liegt.

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: HenryD am 12 Dezember 2016, 22:30:35
Hier das Log vom RTU:
2016.12.12 22:27:20 3: ModBus: timeout waiting for fc 1 from id 2, (c4), Request was 020100040001bc38, last Buffer:
2016.12.12 22:27:22 3: ModBus: timeout waiting for fc 1 from id 2, (c1), Request was 020100010001ac39, last Buffer:
2016.12.12 22:27:24 3: ModBus: timeout waiting for fc 1 from id 2, (c5), Request was 020100050001edf8, last Buffer:
2016.12.12 22:27:26 3: ModBus: timeout waiting for fc 1 from id 2, (c3), Request was 0201000300010df9, last Buffer:
2016.12.12 22:27:57 4: ModBus: HandleSendQueue sends fc 5 to id 2, tid 1 for Einzelleuchte (c3), len 1, device Romutec (RTU), pdu 050003ff00, V 3.5.5 - 8.12.2016
2016.12.12 22:27:57 5: SW: 02050003ff007c09
2016.12.12 22:27:59 3: Romutec: Timeout2 in ReadAnswer for Einzelleuchte
2016.12.12 22:28:12 4: ModBus: HandleSendQueue sends fc 5 to id 2, tid 137 for Einzelleuchte (c3), len 1, device Romutec (RTU), pdu 0500030000, V 3.5.5 - 8.12.2016
2016.12.12 22:28:12 5: SW: 0205000300003df9
2016.12.12 22:28:14 3: Romutec: Timeout2 in ReadAnswer for Einzelleuchte
2016.12.12 22:28:14 4: ModBus: HandleSendQueue sends fc 1 to id 2, tid 143 for Innenwand (c2), len 1, device Romutec (RTU), pdu 0100020001, V 3.5.5 - 8.12.2016
2016.12.12 22:28:14 5: SW: 0201000200015c39
2016.12.12 22:28:16 3: ModBus: timeout waiting for fc 1 from id 2, (c2), Request was 0201000200015c39, last Buffer:
2016.12.12 22:28:16 4: ModBus: HandleSendQueue sends fc 1 to id 2, tid 117 for LichtFensterSeite (c0), len 1, device Romutec (RTU), pdu 0100000001, V 3.5.5 - 8.12.2016
2016.12.12 22:28:16 5: SW: 020100000001fdf9
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 13 Dezember 2016, 18:42:21
Hallo,

vielleicht könnt ihr mir ja helfen.
Ich lese meinen Wechselrichter aus und bekomme oft falsche werte.
Eine Sache habe ich vermutlich schon durch timings gelöst.

Aber ich bekomme hier immer mal wieder Werte von genau 655 und die sind dann falsch.

Kann ich irgendwie dafür sorgen das die Werte von 655 einfach verworfen werden?

expr => 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Power",0),0,7000,$name,"Power_String1__W")',

Gruß´
Björnar
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Dezember 2016, 21:41:55
Hallo HenryD,

0201000200015c39 sieht absolut korrekt aus. Function code 1 an Modbus Id 2 für Coil 2.
Wenn das Gerät nicht antwortet, scheint es nicht am gesendeten Request zu liegen.
Hat das tatsächlich mit dem alten Modul funktioniert?
Klappt es wenn Du die alte Version zurückspielst?
Oder liegt das Problem vielleicht doch an einer anderen Stelle?

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Dezember 2016, 21:45:24
Hallo Bjoernar,

Zum Ignorieren von Werten fällt mir spontan nichts ein.
Ich könnte aber noch ein optionales Attribut einbauen, mit dem man eine Ignorier-Bedingung festlegen kann. Sollte nicht schwer sein.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 13 Dezember 2016, 21:58:10
Zitat von: StefanStrobel am 13 Dezember 2016, 21:45:24
Hallo Bjoernar,

Zum Ignorieren von Werten fällt mir spontan nichts ein.
Ich könnte aber noch ein optionales Attribut einbauen, mit dem man eine Ignorier-Bedingung festlegen kann. Sollte nicht schwer sein.

Gruß
    Stefan
Das klingt gut.
Warum Fronius die Werte ab und zu zurück gibt ist mir unklar. Steht auch nichts dazu in der Doku.

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 13 Dezember 2016, 23:27:09
Sowas ist bekannt bei 1-Wire Bus bei unsauberer Verkabelung/Terminierung. Da ist es die 85 die immer wieder kommt.  Bei Modbus habe ich mit billigen Adaptern/Terminierung auch schon diverse Probleme.

Lg Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 14 Dezember 2016, 06:25:45
Mit dem WR spreche ich über TCP bei den RTU Geräten habe ich diese Probleme nicht. Also kein Terminierungsproblem

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 14 Dezember 2016, 08:10:34
...bei den DS18B20 habe ich das auch drin, hatte auch diese Probleme:

if ($1 ne "655") {...}

Kann ich das denn so in die expr einbauen?

Ich habe auch noch einen anderen Indikator dafür:
Nur wenn das reading 4 oder 5 zurückgibt macht es überhaupt Sinn die anderen Readings abzufragen.


"h40290" => { # float
# "h40280" => { # int+SF
# Start: +28, Länge: 1, enum16; String 1: Operating State
name => "1_DCSt", # internal name of this register in the hardware doc
reading => "Operating_State_String1",# name of the reading for this value
len => 1, # number of Registers this value spans
unpack => "n", # defines the translation between data in the module and in the communication frame
map => "1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby", # map to convert visible values to internal numbers (for reading and writing)
polldelay => "x1", # only poll this Value if last read is older than 5*Iteration, otherwiese getUpdate will skip it
},

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: HenryD am 15 Dezember 2016, 18:29:47
Zitat von: StefanStrobel am 13 Dezember 2016, 21:41:55
Hallo HenryD,

0201000200015c39 sieht absolut korrekt aus. Function code 1 an Modbus Id 2 für Coil 2.
Wenn das Gerät nicht antwortet, scheint es nicht am gesendeten Request zu liegen.
Hat das tatsächlich mit dem alten Modul funktioniert?
Klappt es wenn Du die alte Version zurückspielst?
Oder liegt das Problem vielleicht doch an einer anderen Stelle?

Gruß
   Stefan

Hallo Stefan,
Ich bin mir nicht sicher, ob es vorher Fehlermeldungen gab. Die Relais werden und wurden auf jeden Fall geschalten. Den alten Stand möchte ich nicht zurückspielen. Es funktioniert gerade alles so schön  ;)
Ich werde mal direkt auf dem 485er Bus mitschneiden und  schauen was da so passiert. Timeouts würde ich da ja sehen.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 16 Dezember 2016, 15:29:21
Hallo Stefan,

beim Schreiben auf Holding-Register 0 (zumindest mit Länge 1) geht FHEM in eine Endlosschleife (siehe Log-Auszug). Holding-Register 1 funktioniert. Auch mit Deiner neuesten Version vom 04.12.2016 habe ich den Fehler.

2016.12.16 13:40:35.197 5: Pressure_Meter_1_6bar: Set: key for Pressure_unit = h0000
2016.12.16 13:40:35.199 5: Pressure_Meter_1_6bar: Set: found option Pressure_unit (h0000), setVal = 6
2016.12.16 13:40:35.202 5: Pressure_Meter_1_6bar: set packed 36 with S> to 0006
2016.12.16 13:40:35.203 4: Pressure_Meter_1_6bar: Send called with h0000, len 1 / span - to id 100, queue has 0 requests
2016.12.16 13:40:35.205 4: Pressure_Meter_1_6bar: Send queues fc 6 to 100, tid 0 for h0000 (Pressure_unit), len/span 1, PDU 0600000006, force
2016.12.16 13:40:35.214 5: Pressure_Meter_1_6bar: ReadAnswer called and remaining timeout is 1.99818801879883 requested reading is Pressure_unit
2016.12.16 13:40:35.219 5: Pressure_Meter_1_6bar: ReadAnswer got: 640600000006003d
2016.12.16 13:40:35.221 3: ModbusLine1: ParseFrames got a copy of the request sent before - looks like an echo!
2016.12.16 13:40:35.223 5: Pressure_Meter_1_6bar: ParseObj called with 0006 and start 0
2016.12.16 13:40:35.225 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.226 1: PERL WARNING: Use of uninitialized value $len in addition (+) at ./FHEM/98_Modbus.pm line 509.
2016.12.16 13:40:35.228 1: PERL WARNING: Use of uninitialized value $len in multiplication (*) at ./FHEM/98_Modbus.pm line 510.
2016.12.16 13:40:35.229 1: PERL WARNING: Use of uninitialized value $len in multiplication (*) at ./FHEM/98_Modbus.pm line 511.
2016.12.16 13:40:35.230 1: PERL WARNING: Use of uninitialized value $len in concatenation (.) or string at ./FHEM/98_Modbus.pm line 516.
2016.12.16 13:40:35.231 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.232 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.234 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.235 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.236 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.237 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.240 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.241 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.242 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.243 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.245 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.246 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.247 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.249 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.251 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.252 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0
2016.12.16 13:40:35.253 5: Pressure_Meter_1_6bar: ParseObj moves to next object, skip  to h0
2016.12.16 13:40:35.254 5: Pressure_Meter_1_6bar: ParseObj has no parseInfo for h0


Ich traue mich nicht an Deinen Code ran, kannst Du bei Gelegenheit mal nachschauen.

Danke und Gruß,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: vuffiraa am 16 Dezember 2016, 17:13:41
Hallo,

ich wollte per Modbus TCP auf meinen Fronius Wechselrichter zugreifen und bin der Anleitung aus dem Thread (https://forum.fhem.de/index.php/topic,46685.msg384169.html#msg384169) gefolgt.

Leider gibt es schon mit dem ersten define ein Problem (define myMb Modbus):
2016.12.16 16:53:00 5: Cmd: >define myMb Modbus<
2016.12.16 16:53:00 5: Loading ./FHEM/98_Modbus.pm
2016.12.16 16:53:00 1: PERL WARNING: Use of uninitialized value $dev in string eq at ./FHEM/98_Modbus.pm line 221.
2016.12.16 16:53:00 3: Opening myMb device
2016.12.16 16:53:00 1: PERL WARNING: Use of uninitialized value $nameOrConf in -f at /usr/lib/x86_64-linux-gnu/perl5/5.22/Device/SerialPort.pm line 285.
2016.12.16 16:53:00 1: PERL WARNING: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.22/Device/SerialPort.pm line 312.
2016.12.16 16:53:00 3: Can't open : No such file or directory
2016.12.16 16:53:00 1: PERL WARNING: Use of uninitialized value $dev in concatenation (.) or string at ./FHEM/98_Modbus.pm line 228.
2016.12.16 16:53:00 1: define myMb Modbus:  could not be openend yet
2016.12.16 16:53:00 4: name: /fhem&fw_id=43&room=Unsorted&cmd=define+myMb+Modbus / RL:1192 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2016.12.16 16:53:00 0: Strange call for nonexistent myMb: ReadyFn
2016.12.16 16:53:00 0: Strange call for nonexistent myMb: ReadyFn
2016.12.16 16:53:01 0: Strange call for nonexistent myMb: ReadyFn

Die letzte Melduhg wiederholt sich dann im 2-3 Sekunden Takt :(

Kann mir jemand sagen, was hier schief geht und wie ich das beheben kann?

Gruß
vuffiraa
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 17 Dezember 2016, 21:39:54
Hallo vuffiraa,

der
define myMb Modbus
sollte gar nicht nötig sein und ist so eigentlich nicht vorgesehen.
Die Module wie Fronius_Modbus laden 98_Modbus.pm eigentlich automatisch.
Unabhängig davon habe ich nochmal eine neue Version angehängt, die auch bei so einer "leeren" Definition den Fehler vermeidet.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 17 Dezember 2016, 21:42:35
Hallo Allgaeuer,

Holding Register 0 solltest Du als h0 und nicht h000 definieren, sonst wird die Definition beim Parsen nicht gefunden.
Der Fehler mit der Endlosschleife resultiert daraus, ist aber auch in den neueren Versionen, die ich hier gepostet habe, schon abgefangen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 18 Dezember 2016, 15:49:00
Hallo Stefan,

wieder mal herzlichen Dank für Deine schnelle Hilfe.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 23 Dezember 2016, 17:04:31
Hallo,

anbei noch eine letzte neue Version vor Weihnachten zum Testen.
Sie beseitigt weitere kleine Fehler und falls die Version auch bei Euch fehlerfrei läuft, werde ich sie im Januar einchecken.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 23 Dezember 2016, 18:54:31
Eingespielt: Thermostate, Lüftung und Zähler laufen.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 26 Dezember 2016, 20:18:34
Hallo Stefan,

ich bekomme vermehrt Fehlermeldungen:

2016.12.25 14:29:50.057 3: ModbusLine1: timeout waiting for fc 3 from id 30, (h1108), Request was 1e03045400028684, RawBuffer:
2016.12.25 14:57:33.859 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h19026), Request was 0a034a52000272b9, RawBuffer:
2016.12.25 15:03:11.957 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h19042), Request was 0a034a62000272b6, RawBuffer:
2016.12.25 15:14:55.088 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 223983) line 1.
2016.12.25 15:51:22.459 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h19026), Request was 0a034a52000272b9, RawBuffer:
2016.12.25 16:04:01.756 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 297504) line 1.
2016.12.25 16:47:45.520 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h10873), Request was 0a032a7900049cb3, RawBuffer:
2016.12.25 16:57:44.647 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h10873), Request was 0a032a7900049cb3, RawBuffer:
2016.12.25 17:09:01.727 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h10873), Request was 0a032a7900049cb3, RawBuffer:
2016.12.25 18:55:26.071 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 549654) line 1.
2016.12.25 19:06:05.114 3: ModbusLine1: timeout waiting for fc 3 from id 30, (h1108), Request was 1e03045400028684, RawBuffer:
2016.12.25 20:04:36.689 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 649972) line 1.
2016.12.25 20:06:41.286 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 653103) line 1.
2016.12.25 20:13:37.546 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 663462) line 1.
2016.12.25 20:22:08.731 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 676100) line 1.
2016.12.25 20:28:57.585 3: ModbusLine1: timeout waiting for fc 3 from id 10, (h19026), Request was 0a034a52000272b9, RawBuffer:
2016.12.25 20:34:22.421 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 693962) line 1.


Bei der Version 2016-11-20 habe ich die Warnings nicht.
Bei der Version 2016-12-04 tauchen die Warnmeldungen jedoch auch schon auf.
Hinweis: Ich mache mehrmals pro Sekunde Modbus-Calls.

Falls Du noch mehr Angaben / Log-Auszüge brauchst, helfe ich natürlich gerne.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 27 Dezember 2016, 10:59:08
Hallo Allgaeuer,

Timeouts wurden in der früheren Version auf Loglevel 4 protokolliert. Im normalen Betrieb ohne Verbose=4 oder 5 ist das deshalb nicht aufgefallen.
In der neuen Version ist das Loglevel für solche Timeouts einstellbar, der Default-Wert steht aber jetzt auf 3. (Vielleicht sollte ich das wieder auf 4 setzen). Zum Ändern gibt es das Attribut timeoutLogLevel.

Die Warnungen wegen $val kommen vermutlich von der Auswertung einer Perl-Expression eines -Expr Attributs für ein Modbus-Objekt.
Wenn Du eine Weile Verbose auf 5 setzt, sollte sich aus dem Kontext erkennen lassen, welches Objekt / Attribut dahinter steckt.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Herjemine am 27 Dezember 2016, 11:16:20
Hallo Stefan,

kann es sein das scanModbusId mit ModbusTCP nicht geht?
Edit: sorry, hatte nicht die richtige Version, es geht  :)

Gruß Hermann
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 30 Dezember 2016, 16:39:17
Hallo Stefan,

ich suche immer noch die Ursache für mein altes Problem.
Diese Warnings
2016.12.30 14:31:13.046 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 3160463) line 1.
2016.12.30 15:43:08.922 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 3250101) line 1.
2016.12.30 16:18:59.324 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 3294573) line 1.

kommen von diesem Ausdruck
attr Electric_Meter_1 obj-h10875-expr ($val*18750 - 75)
attr Electric_Meter_1 obj-h10875-poll 1
attr Electric_Meter_1 obj-h10875-reading I_diff_B_mA


Ich kann mir keinen Reim daraus machen. Ich frage jede Sekunde diesen Wert ab, jedoch kommt der Fehler nur alle 1 bis 2 Stunden. Hast Du noch einen Tipp auf Lager?

Auf jeden Fall wünsche ich Dir und allen FHEM-Nutzern ein glückliches, erfolgreiches und vor allem ein gesundes Jahr 2017.

Viele Grüße,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 30 Dezember 2016, 21:30:10
Hallo Allgäuer,

Das finden wir auch noch.
Hast Du zufällig einen Log-Ausschnitt mit Verbose 5, in dem man den Request vor der Meldung und die Antwort des Geräts sieht?

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 31 Dezember 2016, 10:07:37
Hallo Stefan,

Deine Reaktionszeit ist rekordverdächtig.

Einen Log-Auszug möchte ich heute im Laufe des Tages erstellen. Ich melde mich dann.
Gestern Abend habe ich testweise das Attribut "dropQueueDoubles" gesetzt mit "1" und seit dem taucht das Warning wesentlich häufiger auf (ca. jede halbe Stunde).

Viele Grüße,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 31 Dezember 2016, 12:34:50
Hallo Stefan,

hier Log-Auszug. Ich vermute, dass das Problem in der Zeile 3 ist. Die unpack-Funktion liefert keinen Wert.

2016.12.31 11:37:34.743 5: Electric_Meter_1: ParseObj moves to next object, skip 2 to h10875
2016.12.31 11:37:34.747 5: Electric_Meter_1: ParseObj ObjInfo for h10875: reading=I_diff_B_mA, unpack=f>, expr=($val*18750 - 75), format=%.1f, map=
2016.12.31 11:37:34.748 5: Electric_Meter_1: ParseObj unpacked 3b9b18 with f> to
2016.12.31 11:37:34.749 5: Electric_Meter_1: ParseObj for I_diff_B_mA evaluates  with expr ($val*18750 - 75)
2016.12.31 11:37:34.751 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 4693245) line 1.
2016.12.31 11:37:34.753 5: Electric_Meter_1: ParseObj converted value to -75 using expr ($val*18750 - 75)
2016.12.31 11:37:34.754 5: Electric_Meter_1: ParseObj for I_diff_B_mA does sprintf with format %.1f value is -75
2016.12.31 11:37:34.755 5: Electric_Meter_1: ParseObj for I_diff_B_mA sprintf result is -75.0
2016.12.31 11:37:34.756 4: Electric_Meter_1: ParseObj for I_diff_B_mA assigns -75.0
2016.12.31 11:37:35.600 4: Electric_Meter_1: update timer modified: will call GetUpdate in 1.0 seconds at 2016-12-31 11:37:36 - Interval 1
2016.12.31 11:37:35.601 5: Electric_Meter_1: GetUpdate called


zum Vergleich, hier der i.o-Log-Auszug für den nächsten Call:

2016.12.31 11:37:35.671 5: Electric_Meter_1: ParseObj moves to next object, skip 2 to h10875
2016.12.31 11:37:35.673 5: Electric_Meter_1: ParseObj ObjInfo for h10875: reading=I_diff_B_mA, unpack=f>, expr=($val*18750 - 75), format=%.1f, map=
2016.12.31 11:37:35.674 5: Electric_Meter_1: ParseObj unpacked 3b9b1d3b with f> to 302e3030343733333730393135323738373932
2016.12.31 11:37:35.675 5: Electric_Meter_1: ParseObj for I_diff_B_mA evaluates 0.00473370915278792 with expr ($val*18750 - 75)
2016.12.31 11:37:35.676 5: Electric_Meter_1: ParseObj converted value to 13.7570466147736 using expr ($val*18750 - 75)
2016.12.31 11:37:35.676 5: Electric_Meter_1: ParseObj for I_diff_B_mA does sprintf with format %.1f value is 13.7570466147736
2016.12.31 11:37:35.677 5: Electric_Meter_1: ParseObj for I_diff_B_mA sprintf result is 13.8
2016.12.31 11:37:35.677 4: Electric_Meter_1: ParseObj for I_diff_B_mA assigns 13.8
2016.12.31 11:37:35.915 5: Electric_Meter_1: ParseObj called with 00000000 and start 19026, op read
2016.12.31 11:37:35.918 5: Electric_Meter_1: ParseObj ObjInfo for h19026: reading=P_sum_kW, unpack=f>, expr=($val/1000 + 0), format=%.1f, map=
2016.12.31 11:37:35.918 5: Electric_Meter_1: ParseObj unpacked 00000000 with f> to 30
2016.12.31 11:37:35.919 5: Electric_Meter_1: ParseObj for P_sum_kW evaluates 0 with expr ($val/1000 + 0)


Kannst Du damit schon was anfangen?
Ich warte gespannt auf Deine Rückmeldung.

Danke und Gruß,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 31 Dezember 2016, 16:55:34
Sieht so aus als ob Perl den Float-Wert nicht versteht ...
Muss ich mir nächstes Jahr genauer ansehen ;-)

Gruss und einen guten Rutsch!
  Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 31 Dezember 2016, 17:52:08
Hallo Stefan,

mir ist aufgefallen: im Fehlerfall stehen nur 3 Byte im Logfile als Input für die Unpack-Funktion. Im Normalfall sind es 4.
Ich logge jetzt die komplette Modbus-Sende und -Antwort-Daten mit, der Fehler ist aber noch nicht aufgetreten. Das Datenfile wird richtig groß. Ich hoffe, dass mein Editor dann die Datei noch öffnen kann.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 31 Dezember 2016, 18:49:49
Hallo Stefan,

jetzt habe ich den Fehler im Logfile. In der ersten Zeile "vermisst" FHEM ein Byte, macht aber weiter, weil die Checksumme passt. In Zeile 16+17 hat FHEM plötzlich ein Byte mit dem Wert "00" zu viel. Kann es sein, dass diese 00 noch zu dem Frame von Zeile 1 gehört?
2016.12.31 17:43:46.925 5: ModbusLine1: ParseFrames: frame seems incomplete (7 / 8) but checksum is fine ...
2016.12.31 17:43:46.925 4: ModbusLine1: ParseFrames got fcode 3 from 10, tid 0, values 3ac8c7eb3b9b3bHeaderLen 8, ActualLen 7, request was for h10873 (I_diff_A_mA), len 4 for module Electric_Meter_1
2016.12.31 17:43:46.936 1: PERL WARNING: Use of uninitialized value $val in multiplication (*) at (eval 442128) line 1.
2016.12.31 17:43:47.139 5: ModbusLine1: ParseFrames got 2 readings from ParseObj
2016.12.31 17:43:47.140 5: ModbusLine1: Profiling: Idle, before Fhem, now is 1483202627.14044, Idle started at 1483202626.90491, Fhem started at 1483202626.92356
2016.12.31 17:43:47.141 5: ModbusLine1: Profiling: add 0.216876983642578 to sum for Fhem (now is 1483202627.14044, start for Fhem was 1483202626.92356)
2016.12.31 17:43:47.143 5: ModbusLine1: Profiling: Send, before Idle, now is 1483202627.14368, Send started at 1483202626.90808, Idle started at 1483202627.14044
2016.12.31 17:43:47.144 5: ModbusLine1: Profiling: add 0.00323987007141113 to sum for Idle (now is 1483202627.14368, start for Idle was 1483202627.14044)
2016.12.31 17:43:47.145 4: ModbusLine1: HandleSendQueue sends fc 3 to id 10, tid 184 for Q_sum_kvar (h19042), len 2, device Electric_Meter_1 (RTU), pdu 034a620002, V 3.5.9 - 21.12.2016
2016.12.31 17:43:47.146 5: SW: 0a034a62000272b6
2016.12.31 17:43:47.149 5: ModbusLine1: Profiling: Wait, before Send, now is 1483202627.14964, Wait started at 1483202626.91338, Send started at 1483202627.14368
2016.12.31 17:43:47.150 5: ModbusLine1: Profiling: add 0.00595998764038086 to sum for Send (now is 1483202627.14964, start for Send was 1483202627.14368)
2016.12.31 17:43:47.154 5: ModbusLine1: Profiling: Read, before Wait, now is 1483202627.15437, Read started at 1483202626.91996, Wait started at 1483202627.14964
2016.12.31 17:43:47.155 5: ModbusLine1: Profiling: add 0.00473213195800781 to sum for Wait (now is 1483202627.15437, start for Wait was 1483202627.14964)
2016.12.31 17:43:47.156 5: ModbusLine1: raw read: 000a0304c39f5cbc7428
2016.12.31 17:43:47.156 5: ModbusLine1: ParseFrames got: 000a0304c39f5cbc7428
2016.12.31 17:43:47.158 5: ModbusLine1: ParseFrames returned error: recieved frame from unexpected Modbus Id 0, expecting fc 3 from 10 for device Electric_Meter_1
2016.12.31 17:43:47.158 5: ModbusLine1: Profiling: Idle, before Read, now is 1483202627.15871, Idle started at 1483202627.14044, Read started at 1483202627.15437
2016.12.31 17:43:47.159 5: ModbusLine1: Profiling: add 0.00434088706970215 to sum for Read (now is 1483202627.15871, start for Read was 1483202627.15437)


Im Logfile habe ich noch mehr Warnings, immer mit dem selben Muster, dass zuerst ein Byte fehlt, und danach "unbekannte" Daten gemeldet werden.

2016.12.31 13:35:38.065 5: ModbusLine1: ParseFrames: frame seems incomplete (3 / 4) but checksum is fine ...
2016.12.31 13:35:38.066 4: ModbusLine1: ParseFrames got fcode 3 from 10, tid 0, values 43d8e2HeaderLen 4, ActualLen 3, request was for h19026 (P_sum_kW), len 2 for module Electric_Meter_1
2016.12.31 13:35:38.068 1: PERL WARNING: Use of uninitialized value $val in division (/) at (eval 133212) line 1.
2016.12.31 13:35:38.221 5: ModbusLine1: ParseFrames got 1 readings from ParseObj
2016.12.31 13:35:38.222 5: ModbusLine1: Profiling: Idle, before Fhem, now is 1483187738.22262, Idle started at 1483187738.0504, Fhem started at 1483187738.06446
2016.12.31 13:35:38.223 5: ModbusLine1: Profiling: add 0.158160924911499 to sum for Fhem (now is 1483187738.22262, start for Fhem was 1483187738.06446)
2016.12.31 13:35:38.225 5: ModbusLine1: Profiling: Read, before Idle, now is 1483187738.22517, Read started at 1483187738.06155, Idle started at 1483187738.22262
2016.12.31 13:35:38.226 5: ModbusLine1: Profiling: add 0.00255393981933594 to sum for Idle (now is 1483187738.22517, start for Idle was 1483187738.22262)
2016.12.31 13:35:38.226 5: ModbusLine1: raw read: 00
2016.12.31 13:35:38.226 5: ModbusLine1: ParseFrames returned error: got data but did not send a request - ignoring


Danke für Deinen hervorragenden Support und bis zum nächsten Jahr,

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Januar 2017, 10:51:45
Hallo Allgäuer,

probier doch mal die angehängte neue Version.
Ich habe das Verhalten jetzt konfigurierbar gemacht.
Per Default wird jetzt auf vollständige Pakete gewartet, selbst wenn die CRC schon stimmt.
Wer das alte Verhalten benötigt (leider gibt es viele kaputte Modbus-Implementationen), kann per

attr myDevice dev-[cdih]-allowShortResponses 1

für einzelne Objektarten bzw. function codes auch kürzere Responses akzeptieren. In den allermeisten Fällen sollte das neue Verhalten jedoch gewünscht sein.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 03 Januar 2017, 18:00:07
Hallo Stefan,

auf dich ist Verlass.
Die Module sind aufgespielt und morgen melde ich mich wieder mit dem Testergebnis.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 04 Januar 2017, 18:45:59
Hallo Stefan,

super -> keine Warnings oder Verbindungs-Timeouts mehr mit den neuen Modulen.

Danke und Gruß,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 04 Januar 2017, 19:32:53
Bei mir läuft es auch

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 04 Januar 2017, 21:31:14
Vielen Dank für das Feedback.
Dann checke ich die Module morgen mal wieder ins SVN ein.

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Bjoernar am 04 Januar 2017, 21:45:52
...Wir haben zu danken.!

Gesendet von meinem Moto G (4) mit Tapatalk

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 05 Januar 2017, 00:14:26
Hi,

Nutzen seit über einem Jahr das Modbus-Modul und meist funktioniert es auch sehr gut. Da ich aber zunehmend Probleme mit dem Bus habe (hausgemacht, im wahrsten Sinne des Wortes), wollte ich den Bus aufteilen und über zwei serielle Schnittstellen führen.

Allerdings scheint das nicht zu funktionieren. Wenn ich einen zweiten Modbus definiere und Devices vom Typ ModbusAttr darauf umziehe und FHEM neu starte, dann hängt es entweder komplett, wenn die beiden Modbus-Definitionen direkt untereinander liegen oder aber alle Devices verwenden, trotz anderem IODev, den zuletzt definierten Modbus, was von ihrer Position in der Config abhängig ist.
Hier scheint die Verbindung mittels IODev nicht ganz sauber zu sein.

Anderes Problem:
Hat sich eigentlich jemand mal daran gemacht, für das serielle Interface mittels termios RS485 für die Interfaces einzuschalten? Zur Zeit muß ich aus FHEM noch ein extra Programm aufrufen, da meine seriellen Interfaces erst auf RS485-Modus umgeschaltet werden müssen, um die Leitungstreiber zu aktivieren.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 05 Januar 2017, 10:15:17
Hallo
Ich benütze auch 2 usb Adapter. Ohne Probleme.
Poste mal deine config. Deinen Modbus Verkabelungsplan inkl. Kabellängen und deine Hardware.

Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 05 Januar 2017, 11:41:46
Hallo tante ju,

Bitte poste doch mal ein Log bei Verbose 5 (sowohl Modbus als auch ModbusAttr) - vielleicht kann ich dann erkennen, wo das Problem mit den IODevs liegt.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 05 Januar 2017, 22:04:17
Zitat von: StefanStrobel am 05 Januar 2017, 11:41:46
Hallo tante ju,

Bitte poste doch mal ein Log bei Verbose 5 (sowohl Modbus als auch ModbusAttr) - vielleicht kann ich dann erkennen, wo das Problem mit den IODevs liegt.

Für die verbose 5 in den Devices muss ich das die Tage nochmal umbauen. Hier ein global verbose 5:

2017.01.04 22:18:11 3: Opening ModBusLine device /dev/ttySC0
2017.01.04 22:18:11 3: Setting ModBusLine serial parameters to 57600,8,N,1
2017.01.04 22:18:11 3: ModBusLine device opened
2017.01.04 22:18:11 3: TestSensor1: defined with id 1, interval 4, destination Device ModBusLine, protocol RTU
2017.01.04 22:18:11 3: KG_AZ_LichtMod1: defined with id 2, interval 5, destination Device ModBusLine, protocol RTU
2017.01.04 22:18:11 3: Opening ModbusUVT device /dev/ttyMAX0
2017.01.04 22:18:11 3: Setting ModbusUVT serial parameters to 57600,8,N,1
2017.01.04 22:18:11 3: ModbusUVT device opened
2017.01.04 22:18:11 3: EG_Tuerschild: defined with id 3, interval 4, destination Device ModbusUVT, protocol RTU
2017.01.04 22:19:57 3: KG.Schmutzsumpf.Pegel: defined with id 5, interval 30, destination Device ModbusUVT, protocol RTU


Was man sieht: Nach der Definition des zweiten Modbus sind alle Devices dem zugeordnet, was sie aber eigentlich nicht sein sollten.

Und wenn in der Config dieses so steht:
define ModBusLine Modbus /dev/ttySC0@57600
attr ModBusLine dropQueueDoubles 1
attr ModBusLine room modbus
define ModbusUVT Modbus /dev/ttyMAX0@57600
attr ModbusUVT DbLogExclude .*
attr ModbusUVT dropQueueDoubles 1
attr ModbusUVT room modbus


dann hängt sich FHEM beim öffnen des zweiten Kanals weg. Da hilft nur noch reboot.

Es müssen ein paar Devices zwischen den beiden Definitionen sein.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 05 Januar 2017, 22:55:25
Hallo Stefan!

Habe heute update gemacht. Thermostat Lüftung und Zähler laufen wie gewohnt.

Danke
Wolfgang

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 Januar 2017, 14:52:52
Hallo tante ju,

lass Dich nicht vom Log beim Starten von Fhem täuschen. Wenn der define-Befehl abgearbeitet wird, sind die Attribute noch nicht gesetzt. Deshalb sagt Fhem zunächst "defined with id 3, interval 4, destination Device ModbusUVT" auch wenn ein IODev Attribut auf ein anderes serielles Devive zeigt. Sobald dann später beim Starten das Attribut verarbeitet wird, ändert sich die Zuordnung. Bei einem längeren Log-Auszug mit verbose 5 sollte das alles deutlich werden.

Ich schau aber trotzdem mal ob ich das nicht umbauen kann, so dass hier keine verwirrenden Meldungen mehr kommen. Auch das mit Deinem Hänger ist seltsam. Hier wäre ein detailliertes Log sehr hilfreich.

Gruss / Thanx
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 06 Januar 2017, 15:13:28
Zitat von: StefanStrobel am 06 Januar 2017, 14:52:52
Hallo tante ju,

lass Dich nicht vom Log beim Starten von Fhem täuschen. Wenn der define-Befehl abgearbeitet wird, sind die Attribute noch nicht gesetzt. Deshalb sagt Fhem zunächst "defined with id 3, interval 4, destination Device ModbusUVT" auch wenn ein IODev Attribut auf ein anderes serielles Devive zeigt. Sobald dann später beim Starten das Attribut verarbeitet wird, ändert sich die Zuordnung. Bei einem längeren Log-Auszug mit verbose 5 sollte das alles deutlich werden.

Ich schau aber trotzdem mal ob ich das nicht umbauen kann, so dass hier keine verwirrenden Meldungen mehr kommen. Auch das mit Deinem Hänger ist seltsam. Hier wäre ein detailliertes Log sehr hilfreich.

Ich wollte gerade ein Log 5 posten, in dem man sieht, daß anscheinend zwischen der (falschen) define Meldung und was gemacht wird, eine Diskrepanz besteht :-) Ok, das ist bekannt. Gut zu wissen.

Mit dem Hänger gibt es kein detailliertes Log. Da steht es einfach. Hatte ach schon gesucht. Für mich sieht es so aus, als ob der Fehler in DevIo liegt.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 06 Januar 2017, 15:48:33
Ich habe gerade auch nochmal mit zwei seriellen Adaptern getestet. Beide in der fhem.cfg direkt nacheinander als Modbus definiert. Kein Problem.
Was ist denn bei Dir der letzte Eintrag im Log, bevor Fhem hängt?

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 06 Januar 2017, 16:29:52
Zitat von: StefanStrobel am 06 Januar 2017, 15:48:33
Ich habe gerade auch nochmal mit zwei seriellen Adaptern getestet. Beide in der fhem.cfg direkt nacheinander als Modbus definiert. Kein Problem.
Was ist denn bei Dir der letzte Eintrag im Log, bevor Fhem hängt?

Ist verhext. Habe die Config umgestellt und neu gestartet und kein Problem. Im heutigen Update war kein DevIO drin, nur ein Modbus update. Keine Ahnung, warum es jetzt nicht hängt. Werde aber später mal auch wieder den Bus trennen und ein Device umhängen und dann mal sehen, ob es sich wiederholt.

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 07 Januar 2017, 09:38:46
Wow, das hat lange gedauert - aber, endlich redet der WMZ Multical602 mit FHEM.
Jetzt kommen dort aber zahlen raus die ich so nicht zuordnen kann...

Kann mal jemand mit einem Zaunpfahl winken und mir erklären wie ich nun die Werte des Zählers verarbeite und interpretiere?

Danke!

Zitatscan-h256
hex=eb86, len=2, string=.., s=-30997, s>=-5242, S=34539, S>=60294
2017-01-07 09:34:33
scan-h257
hex=40b1, len=2, string=@., s=-20160, s>=16561, S=45376, S>=16561
2017-01-07 09:34:34
scan-h258
hex=0000, len=2, string=.., s=0, s>=0, S=0, S>=0
2017-01-07 09:34:35
scan-h259
hex=448a, len=2, string=D., s=-30140, s>=17546, S=35396, S>=17546
2017-01-07 09:34:36
scan-h260
hex=0a3d, len=2, string=.=, s=15626, s>=2621, S=15626, S>=2621
2017-01-07 09:34:37
scan-h261
hex=44b7, len=2, string=D., s=-18620, s>=17591, S=46916, S>=17591
2017-01-07 09:34:38
scan-h262
hex=cccd, len=2, string=.., s=-12852, s>=-13107, S=52684, S>=52429
2017-01-07 09:34:39
scan-h263
hex=409c, len=2, string=@., s=-25536, s>=16540, S=40000, S>=16540
2017-01-07 09:34:40
scan-h264
hex=3d70, len=2, string==p, s=28733, s>=15728, S=28733, S>=15728
2017-01-07 09:34:41
scan-h265
hex=41de, len=2, string=A., s=-8639, s>=16862, S=56897, S>=16862
2017-01-07 09:34:42
scan-h266
hex=5c29, len=2, string=\), s=10588, s>=23593, S=10588, S>=23593
2017-01-07 09:34:43

Internals:
   CFGFN
   DEF        35 30
   DEST
   INTERVAL   30
   IODev      ModbusRTU
   MODBUSID   35
   ModuleVersion 3.5.9 - 21.12.2016
   NAME       WMZ
   NOTIFYDEV  global
   NR         287
   NTFY_ORDER 50-WMZ
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusAttr
   Readings:
     2017-01-07 09:34:33   scan-h256       hex=eb86, len=2, string=.., s=-30997, s>=-5242, S=34539, S>=60294
     2017-01-07 09:34:34   scan-h257       hex=40b1, len=2, string=@., s=-20160, s>=16561, S=45376, S>=16561
     2017-01-07 09:34:35   scan-h258       hex=0000, len=2, string=.., s=0, s>=0, S=0, S>=0
     2017-01-07 09:34:36   scan-h259       hex=448a, len=2, string=D., s=-30140, s>=17546, S=35396, S>=17546
     2017-01-07 09:34:37   scan-h260       hex=0a3d, len=2, string=.=, s=15626, s>=2621, S=15626, S>=2621
     2017-01-07 09:34:38   scan-h261       hex=44b7, len=2, string=D., s=-18620, s>=17591, S=46916, S>=17591
     2017-01-07 09:34:39   scan-h262       hex=cccd, len=2, string=.., s=-12852, s>=-13107, S=52684, S>=52429
     2017-01-07 09:34:40   scan-h263       hex=409c, len=2, string=@., s=-25536, s>=16540, S=40000, S>=16540
     2017-01-07 09:34:41   scan-h264       hex=3d70, len=2, string==p, s=28733, s>=15728, S=28733, S>=15728
     2017-01-07 09:34:42   scan-h265       hex=41de, len=2, string=A., s=-8639, s>=16862, S=56897, S>=16862
     2017-01-07 09:34:43   scan-h266       hex=5c29, len=2, string=\), s=10588, s>=23593, S=10588, S>=23593
   Gotreadings:
     scan-h266  hex=5c29, len=2, string=\), s=10588, s>=23593, S=10588, S>=23593
   Helper:
     lrecv      1483778083.61497
     lsend      1483778083.59541
   Lastread:
     h256       1483778073.62914
     h257       1483778074.59905
     h258       1483778075.6083
     h259       1483778076.60962
     h260       1483778077.61272
     h261       1483778078.61528
     h262       1483778079.61735
     h263       1483778080.61961
     h264       1483778081.65054
     h265       1483778082.62444
     h266       1483778083.62887
Attributes:
   IODev      ModbusRTU
   dev-h-defExpr ModbusLD_ScanFormat($hash, $val)
   dev-h-defLen 1
   dev-h-defUnpack a2
   enableControlSet 1
   obj-h256-reading scan-h256
   obj-h257-reading scan-h257
   obj-h258-reading scan-h258
   obj-h259-reading scan-h259
   obj-h260-reading scan-h260
   obj-h261-reading scan-h261
   obj-h262-reading scan-h262
   obj-h263-reading scan-h263
   obj-h264-reading scan-h264
   obj-h265-reading scan-h265
   obj-h266-reading scan-h266
   room       System
   userattr   dev-h-defExpr dev-h-defLen dev-h-defUnpack enableControlSet obj-h256-reading obj-h257-reading obj-h258-reading obj-h259-reading obj-h260-reading obj-h261-reading obj-h262-reading obj-h263-reading obj-h264-reading obj-h265-reading obj-h266-reading
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 07 Januar 2017, 20:02:46
Ich würde im Datenblatt des Herstellers nachlesen.
Ist des das?
http://products.kamstrup.com/ajax/downloadFile.php?uid=548ac8cf4e0d5&display=1

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 07 Januar 2017, 20:38:47
Ja, das ist es...
Aber wirklich schlauer macht mich das noch nicht, die Zahlen die kommen haben so gar nichts mit den erwarteten Werten zu tun...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 08:39:12
Hallo der-Lolo,

laut Anleitung des Herstellers sind die meisten Objekte in einem Datenformat mit 4 Bytes bzw. 2 Registern abgelegt. Du hast aber mit Länge 1 also nur 2 Bytes je Objekt gescannt.

Ich würde jetzt einfach mal ein erstes Objekt definieren und versuchen es zu lesen.
z.B. steht ja in der Anleitung

16 0x0010 Inlet temperature T1 4 1  Values in float IEEE Float - 32 bit

allerdings steht da auch

264 0x0108 Inlet temperature T1 4 1 Values in float IEEE Float - 32 bit

etc.

Ich würde es einfach ausprobieren.
Für ModbusAttr wäre das z.B.

define WMZ ModbusAttr 35 0
attr WMZ obj-h16-reading T1a
attr WMZ obj-h16-showGet 1
attr WMZ obj-h16-unpack f>
attr WMZ obj-h16-len 2

attr WMZ obj-h264-reading T1b
attr WMZ obj-h264-showGet 1
attr WMZ obj-h264-unpack f>
attr WMZ obj-h264-len 2

falls f> nicht passt, musst Du andere denkbare unpack-Codes ausprobieren, z.B. f<.

Mit get WMZ T1a kannst Du dann einen Lesevorgang starten.

Oder Du lässt den Scanner mit Länge 2 über ein paar der Objekte laufen. Dabei werden dann automatisch verschiedene Unpack-codes ausprobiert:

set WMZ scanModbusObjects h1-24 2


Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 10:14:41
jetzt hätte ich beinahe selbst vergessen, dass auch die Länge 2 angegeben werden muss.
Ich habe gerade ein

attr WMZ obj-h-XX-len 2

ergänzt ;-)

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 11:09:39
Hm...
Ich bekomme noch nicht die erwartete Antwort - aktuell sollte T1a etwas sein wie 26,54°C
Das Einheit und auch die kommastelle nicht mitkommen mag ja sein, aber egal ob ich f> s> n oder auch N L ausprobiere - es kommt nie etwas sinnvolles raus.
Du schriebst
attr WMZ obj-h-16-reading T1a
dabei sagt mir fhem
ZitatWMZ: unknown attribute obj-h-16-reading. Type 'attr WMZ ?' for a detailed list.
wenn ich nun obj-h16 oder auch obj-h016 angebe wird es von fhem angenommen - aber wie gesagt das Ergebnis ist noch nicht korrekt.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 12:28:36
Hallo,

ja, der Bindestrich zwischen h und Adresse ist natürlich falsch.
ich korriger es gleich im obigen Post, damit ich nicht noch mehr Leute verwirre.
Führende Nullen solltest Du aber vermeiden.

wenn obj-h16 nicht die gewünschten Werte enthält, dann würde ich die alternativen Adressen ausprobieren.

oder lass doch wirklich den Scanner mit Länge 2 über die Adressen laufen und schau ob plausible Werte kommen.
Was die unpack codes angeht, so wird bei Float-Werten ein s oder n nichts bringen. f< oder f> schon eher. Siehe http://perldoc.perl.org/functions/pack.html

Probier doch mal ein set WMZ scanModbusObjects h1-300 2 und poste das Ergebnis.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 12:44:17
Erstmal Tausend Dank für Deine Hilfe!
Ich habe gerade ein "set WMZ scanModbusObjects h1-300 2" abgesetzt und poste nun ein list des WMZ

Internals:
   CFGFN
   DEF        35 0
   DEST
   INTERVAL   0
   IODev      ModbusRTU
   MODBUSID   35
   ModuleVersion 3.5.9 - 21.12.2016
   NAME       WMZ
   NOTIFYDEV  global
   NR         744
   NTFY_ORDER 50-WMZ
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusAttr
   Readings:
     2017-01-08 12:32:31   scan-h1         hex=6940b500, len=4, string=i@.., s=16489, s>=26944, S=16489, S>=26944, i=16489, i>=26944, I=16489, I>=26944, f=1.66453308149747e-38, f>=1.4560531606213e+25
     2017-01-08 12:32:40   scan-h10        hex=44bb999a, len=4, string=D..., s=-17596, s>=17595, S=47940, S>=17595, i=-17596, i>=17595, I=47940, I>=17595, f=-6.3581860794677e-23, f>=1500.80004882812
     2017-01-08 12:34:11   scan-h100       hex=00004334, len=4, string=..C4, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.81607902050018e-07, f>=2.41079387802442e-41
     2017-01-08 12:34:12   scan-h101       hex=00433400, len=4, string=.C4., s=17152, s>=67, S=17152, S>=67, i=17152, i>=67, I=17152, I>=67, f=4.79948087147564e-39, f>=6.1716323277425e-39
     2017-01-08 12:34:13   scan-h102       hex=43340012, len=4, string=C4.., s=13379, s>=17204, S=13379, S>=17204, i=13379, i>=17204, I=13379, I>=17204, f=4.04540958891307e-28, f>=180.000274658203
     2017-01-08 12:34:14   scan-h103       hex=34001200, len=4, string=4..., s=52, s>=13312, S=52, S>=13312, i=52, i>=13312, I=52, I>=13312, f=1.65311179836399e-39, f>=1.19274773169309e-07
     2017-01-08 12:34:15   scan-h104       hex=00120022, len=4, string=...", s=4608, s>=18, S=4608, S>=18, i=4608, i>=18, I=4608, I>=18, f=1.73567638804247e-18, f>=1.65308657499163e-39
     2017-01-08 12:34:16   scan-h105       hex=12002200, len=4, string=.."., s=18, s>=4608, S=18, S>=4608, i=18, i>=4608, I=18, I>=4608, f=3.12243209274406e-39, f>=4.04315865829057e-28
     2017-01-08 12:34:17   scan-h106       hex=00220000, len=4, string=.".., s=8704, s>=34, S=8704, S>=34, i=8704, i>=34, I=8704, I>=34, f=1.21969018334832e-41, f>=3.1224068693717e-39
     2017-01-08 12:34:18   scan-h107       hex=22000000, len=4, string="..., s=34, s>=8704, S=34, S>=8704, i=34, i>=8704, I=34, I>=8704, f=4.76441477870438e-44, f>=1.73472347597681e-18
     2017-01-08 12:34:19   scan-h108       hex=000000a0, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-1.0842021724855e-19, f>=2.24207754291971e-43
     2017-01-08 12:34:20   scan-h109       hex=0000a000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.46936793852786e-38, f>=5.73971850987445e-41
     2017-01-08 12:32:41   scan-h11        hex=bb999a40, len=4, string=...@, s=-26181, s>=-17511, S=39355, S>=48025, i=-26181, i>=-17511, I=39355, I>=48025, f=4.83126592636108, f>=-0.00468757748603821
     2017-01-08 12:34:21   scan-h110       hex=00a00000, len=4, string=...., s=-24576, s>=160, S=40960, S>=160, i=-24576, i>=160, I=40960, I>=160, f=5.73971850987445e-41, f>=1.46936793852786e-38
     2017-01-08 12:34:22   scan-h111       hex=a0000000, len=4, string=...., s=160, s>=-24576, S=160, S>=40960, i=160, i>=-24576, I=160, I>=40960, f=2.24207754291971e-43, f>=-1.0842021724855e-19
     2017-01-08 12:34:23   scan-h112       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:24   scan-h113       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:25   scan-h114       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:26   scan-h115       hex=00000046, len=4, string=...F, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=8192, f>=9.80908925027372e-44
     2017-01-08 12:34:27   scan-h116       hex=00004650, len=4, string=..FP, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=13287555072, f>=2.52233723578467e-41
     2017-01-08 12:34:28   scan-h117       hex=00465000, len=4, string=.FP., s=17920, s>=70, S=17920, S>=70, i=17920, i>=70, I=17920, I>=70, f=7.37195096112e-39, f>=6.45718332360876e-39
     2017-01-08 12:34:29   scan-h118       hex=46500003, len=4, string=FP.., s=20550, s>=18000, S=20550, S>=18000, i=20550, i>=18000, I=20550, I>=18000, f=3.77079686133272e-37, f>=13312.0029296875
     2017-01-08 12:34:30   scan-h119       hex=50000300, len=4, string=P..., s=80, s>=20480, S=80, S>=20480, i=80, i>=20480, I=80, I>=20480, f=2.7561859235112e-40, f>=8590721024
     2017-01-08 12:32:42   scan-h12        hex=999a4099, len=4, string=..@., s=-25959, s>=-26214, S=39577, S>=39322, i=-25959, i>=-26214, I=39577, I>=39322, f=-9.95738809868226e-24, f>=-1.59493175772251e-23
     2017-01-08 12:34:31   scan-h120       hex=00030002, len=4, string=...., s=768, s>=3, S=768, S>=3, i=768, i>=3, I=768, I>=3, f=9.40481576435478e-38, f>=2.75509291070902e-40
     2017-01-08 12:34:32   scan-h121       hex=03000266, len=4, string=...f, s=3, s>=768, S=3, S>=768, i=3, i>=768, I=3, I>=768, f=1.53476964736459e+23, f>=3.76185724975359e-37
     2017-01-08 12:34:33   scan-h122       hex=00026667, len=4, string=..fg, s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=1.08618118454817e+24, f>=2.20406031558258e-40
     2017-01-08 12:34:34   scan-h123       hex=02666740, len=4, string=.fg@, s=26114, s>=614, S=26114, S>=614, i=26114, i>=614, I=26114, I>=614, f=3.61560106277466, f>=1.69273625898776e-37
     2017-01-08 12:34:35   scan-h124       hex=666740a6, len=4, string=fg@., s=26470, s>=26215, S=26470, S>=26215, i=26470, i>=26215, I=26470, I>=26215, f=-6.67535124907208e-16, f>=2.73014802681054e+23
     2017-01-08 12:34:36   scan-h125       hex=6740a600, len=4, string=g@.., s=16487, s>=26432, S=16487, S>=26432, i=16487, i>=26432, I=16487, I>=26432, f=1.52677955700079e-38, f>=9.09756524227208e+23
     2017-01-08 12:34:37   scan-h126       hex=40a60000, len=4, string=@..., s=-22976, s>=16550, S=42560, S>=16550, i=-22976, i>=16550, I=42560, I>=16550, f=5.96392626416642e-41, f>=5.1875
     2017-01-08 12:34:38   scan-h127       hex=a6000000, len=4, string=...., s=166, s>=-23040, S=166, S>=42496, i=166, i>=-23040, I=166, I>=42496, f=2.3261554507792e-43, f>=-4.44089209850063e-16
     2017-01-08 12:34:39   scan-h128       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:40   scan-h129       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:43   scan-h13        hex=9a409951, len=4, string=.@.Q, s=16538, s>=-26048, S=16538, S>=39488, i=16538, i>=-26048, I=16538, I>=39488, f=82276728832, f>=-3.98285174092214e-23
     2017-01-08 12:34:41   scan-h130       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:42   scan-h131       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:43   scan-h132       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:44   scan-h133       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:45   scan-h134       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:46   scan-h135       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:47   scan-h136       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:48   scan-h137       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:49   scan-h138       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:50   scan-h139       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:44   scan-h14        hex=409951eb, len=4, string=@.Q., s=-26304, s>=16537, S=39232, S>=16537, i=-26304, i>=16537, I=39232, I>=16537, f=-2.53389198962957e+26, f>=4.79124975204468
     2017-01-08 12:34:51   scan-h140       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:52   scan-h141       hex=00000013, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.61558713389263e-27, f>=2.66246708221715e-44
     2017-01-08 12:34:53   scan-h142       hex=00001311, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.15962553067489e-28, f>=6.83973780436943e-42
     2017-01-08 12:34:54   scan-h143       hex=00131108, len=4, string=...., s=4864, s>=19, S=4864, S>=19, i=4864, i>=19, I=4864, I>=19, f=4.36566846951889e-34, f>=1.75098408830629e-39
     2017-01-08 12:34:55   scan-h144       hex=13110801, len=4, string=...., s=4371, s>=4881, S=4371, S>=4881, i=4371, i>=4881, I=4371, I>=4881, f=2.49915051061487e-38, f>=1.83055192315835e-27
     2017-01-08 12:34:56   scan-h145       hex=11080104, len=4, string=...., s=2065, s>=4360, S=2065, S>=4360, i=2065, i>=4360, I=2065, I>=4360, f=1.51675810377084e-36, f>=1.07288212746217e-28
     2017-01-08 12:34:57   scan-h146       hex=080104a9, len=4, string=...., s=264, s>=2049, S=264, S>=2049, i=264, i>=2049, I=264, I>=2049, f=-2.93107823168964e-14, f>=3.8825003428901e-34
     2017-01-08 12:34:58   scan-h147       hex=0104a92f, len=4, string=.../, s=1025, s>=260, S=1025, S>=260, i=1025, i>=260, I=1025, I>=260, f=3.07437658664256e-10, f>=2.43659542612864e-38
     2017-01-08 12:34:59   scan-h148       hex=04a92f9b, len=4, string=../., s=-22268, s>=1193, S=43268, S>=1193, i=-22268, i>=1193, I=43268, I>=1193, f=-1.45302726135133e-22, f>=3.97754277762182e-36
     2017-01-08 12:35:00   scan-h149       hex=a92f9b04, len=4, string=./.., s=12201, s>=-22225, S=12201, S>=43311, i=12201, i>=-22225, I=12201, I>=43311, f=3.64840938164528e-36, f>=-3.89922604837958e-14
     2017-01-08 12:32:45   scan-h15        hex=9651eb41, len=4, string=.Q.A, s=20886, s>=-27055, S=20886, S>=38481, i=20886, i>=-27055, I=20886, I>=38481, f=29.4148368835449, f>=-1.69571185929545e-25
     2017-01-08 12:35:01   scan-h150       hex=2f9b04a9, len=4, string=/..., s=-25809, s>=12187, S=39727, S>=12187, i=-25809, i>=12187, I=39727, I>=12187, f=-2.94444881616864e-14, f>=2.81976469951317e-10
     2017-01-08 12:35:02   scan-h151       hex=9b04a92f, len=4, string=.../, s=1179, s>=-25852, S=1179, S>=39684, i=1179, i>=-25852, I=1179, I>=39684, f=3.07441933022901e-10, f>=-1.09734502531656e-22
     2017-01-08 12:35:03   scan-h152       hex=04a92f9b, len=4, string=../., s=-22268, s>=1193, S=43268, S>=1193, i=-22268, i>=1193, I=43268, I>=1193, f=-1.45302726135133e-22, f>=3.97754277762182e-36
     2017-01-08 12:35:04   scan-h153       hex=a92f9b02, len=4, string=./.., s=12201, s>=-22225, S=12201, S>=43311, i=12201, i>=-22225, I=12201, I>=43311, f=2.2802558635283e-37, f>=-3.89922537075323e-14
     2017-01-08 12:35:05   scan-h154       hex=2f9b02a6, len=4, string=/..., s=-25809, s>=12187, S=39727, S>=12187, i=-25809, i>=12187, I=39727, I>=12187, f=-4.53131233622443e-16, f>=2.81962175829875e-10
     2017-01-08 12:35:06   scan-h155       hex=9b02a6fe, len=4, string=...., s=667, s>=-25854, S=667, S>=39682, i=667, i>=-25854, I=667, I>=39682, f=-1.10332687833751e+38, f>=-1.08073060491065e-22
     2017-01-08 12:35:07   scan-h156       hex=02a6fe42, len=4, string=...B, s=-23038, s>=678, S=42498, S>=678, i=-23038, i>=678, I=42498, I>=678, f=127.324234008789, f>=2.45374446068311e-37
     2017-01-08 12:35:08   scan-h157       hex=a6fe4200, len=4, string=..B., s=-346, s>=-22786, S=65190, S>=42750, i=-346, i>=-22786, I=65190, I>=42750, f=6.15249339331675e-39, f>=-1.76426798517704e-15
     2017-01-08 12:35:11   scan-h158       hex=fe420000, len=4, string=.B.., s=17150, s>=-446, S=17150, S>=65090, i=17150, i>=-446, I=17150, I>=65090, f=2.40322686631706e-41, f>=-6.44675577955684e+37
     2017-01-08 12:35:11   scan-h159       hex=42000052, len=4, string=B..R, s=66, s>=16896, S=66, S>=16896, i=66, i>=16896, I=66, I>=16896, f=137440034816, f>=32.0003128051758
     2017-01-08 12:32:46   scan-h16        hex=51eb41d4, len=4, string=Q.A., s=-5295, s>=20971, S=60241, S>=20971, i=-5295, i>=20971, I=60241, I>=20971, f=-3331506569216, f>=126302715904
     2017-01-08 12:35:11   scan-h160       hex=000052d0, len=4, string=..R., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-14092861440, f>=2.97075274436861e-41
     2017-01-08 12:35:12   scan-h161       hex=0052d000, len=4, string=.R.., s=20992, s>=82, S=20992, S>=82, i=20992, i>=82, I=20992, I>=82, f=1.91311992582253e-38, f>=7.60512702558365e-39
     2017-01-08 12:35:13   scan-h162       hex=52d00024, len=4, string=R..$, s=-12206, s>=21200, S=53330, S>=21200, i=-12206, i>=21200, I=53330, I>=21200, f=2.79320297838987e-17, f>=446677778432
     2017-01-08 12:35:14   scan-h163       hex=d00024fc, len=4, string=..$., s=208, s>=-12288, S=208, S>=53248, i=208, i>=-12288, I=208, I>=53248, f=-3.40621265703006e+36, f>=-8599629824
     2017-01-08 12:35:15   scan-h164       hex=0024fcc3, len=4, string=.$.., s=9216, s>=36, S=9216, S>=36, i=9216, i>=36, I=9216, I>=36, f=-504.28125, f>=3.39675168141875e-39
     2017-01-08 12:35:16   scan-h165       hex=24fcc300, len=4, string=$..., s=-988, s>=9468, S=64548, S>=9468, i=-988, i>=9468, I=64548, I>=9468, f=1.79983727640835e-38, f>=1.09617921835968e-16
     2017-01-08 12:35:17   scan-h166       hex=fcc30000, len=4, string=...., s=-15364, s>=-829, S=50172, S>=64707, i=-15364, i>=-829, I=50172, I>=64707, f=7.03059465521047e-41, f>=-8.09998309931433e+36
     2017-01-08 12:35:18   scan-h167       hex=c3000007, len=4, string=...., s=195, s>=-15616, S=195, S>=49920, i=195, i>=-15616, I=195, I>=49920, f=9.62987357095806e-35, f>=-128.000106811523
     2017-01-08 12:35:19   scan-h168       hex=00000734, len=4, string=...4, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.2572854757309e-07, f>=2.58399436821496e-42
     2017-01-08 12:35:20   scan-h169       hex=00073400, len=4, string=..4., s=1792, s>=7, S=1792, S>=7, i=1792, i>=7, I=1792, I>=7, f=4.77795692706361e-39, f>=6.6150255826303e-40
     2017-01-08 12:32:47   scan-h17        hex=eb41d40a, len=4, string=.A.., s=16875, s>=-5311, S=16875, S>=60225, i=16875, i>=-5311, I=16875, I>=60225, f=2.04396529944674e-32, f>=-2.34324009347433e+26
     2017-01-08 12:35:21   scan-h170       hex=07340000, len=4, string=.4.., s=13319, s>=1844, S=13319, S>=1844, i=13319, i>=1844, I=13319, I>=1844, f=1.86638942463422e-41, f>=1.35416949214728e-34
     2017-01-08 12:35:22   scan-h171       hex=34000000, len=4, string=4..., s=52, s>=13312, S=52, S>=13312, i=52, i>=13312, I=52, I>=13312, f=7.28675201448905e-44, f>=1.19209289550781e-07
     2017-01-08 12:35:23   scan-h172       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:48   scan-h18        hex=41d40a3d, len=4, string=A..=, s=-11199, s>=16852, S=54337, S>=16852, i=-11199, i>=16852, I=54337, I>=16852, f=0.0338938273489475, f>=26.5049991607666
     2017-01-08 12:32:49   scan-h19        hex=d40a3d41, len=4, string=..=A, s=2772, s>=-11254, S=2772, S>=54282, i=2772, i>=-11254, I=2772, I>=54282, f=11.8151435852051, f>=-2374932627456
     2017-01-08 12:32:32   scan-h2         hex=40b50000, len=4, string=@..., s=-19136, s>=16565, S=46400, S>=16565, i=-19136, i>=16565, I=46400, I>=16565, f=6.50202487446715e-41, f>=5.65625
     2017-01-08 12:32:50   scan-h20        hex=0a3d41b7, len=4, string=.=A., s=15626, s>=2621, S=15626, S>=2621, i=15626, i>=2621, I=15626, I>=2621, f=-1.15179082058603e-05, f>=9.11237857564462e-33
     2017-01-08 12:32:51   scan-h21        hex=3d41b700, len=4, string==A.., s=16701, s>=15681, S=16701, S>=15681, i=16701, i>=15681, I=16701, I>=15681, f=1.68292988825651e-38, f>=0.0472936630249023
     2017-01-08 12:32:52   scan-h22        hex=41b70000, len=4, string=A..., s=-18623, s>=16823, S=46913, S>=16823, i=-18623, i>=16823, I=46913, I>=16823, f=6.57391148568701e-41, f>=22.875
     2017-01-08 12:32:53   scan-h23        hex=b7000000, len=4, string=...., s=183, s>=-18688, S=183, S>=46848, i=183, i>=-18688, I=183, I>=46848, f=2.56437618971442e-43, f>=-7.62939453125e-06
     2017-01-08 12:32:54   scan-h24        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:55   scan-h25        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:36:48   scan-h256       hex=999a40b5, len=4, string=..@., s=-25959, s>=-26214, S=39577, S>=39322, i=-25959, i>=-26214, I=39577, I>=39322, f=-7.17505429292942e-07, f>=-1.59493617534358e-23
     2017-01-08 12:36:49   scan-h257       hex=40b54000, len=4, string=@.@., s=-19136, s>=16565, S=46400, S>=16565, i=-19136, i>=16565, I=46400, I>=16565, f=5.94249200285611e-39, f>=5.6640625
     2017-01-08 12:36:50   scan-h258       hex=c000448d, len=4, string=..D., s=192, s>=-16384, S=192, S>=49152, i=192, i>=-16384, I=192, I>=49152, f=-6.03980658356451e-31, f>=-2.00418400764465
     2017-01-08 12:36:51   scan-h259       hex=448d2b33, len=4, string=D.+3, s=-29372, s>=17549, S=36164, S>=17549, i=-29372, i>=17549, I=36164, I>=17549, f=3.99425204022918e-08, f>=1129.34997558594
     2017-01-08 12:32:56   scan-h26        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:36:52   scan-h260       hex=2b3344bb, len=4, string=+3D., s=13099, s>=11059, S=13099, S>=11059, i=13099, i>=11059, I=13099, I>=11059, f=-0.00299377250485122, f>=6.36889575366534e-13
     2017-01-08 12:36:53   scan-h261       hex=44bb3333, len=4, string=D.33, s=-17596, s>=17595, S=47940, S>=17595, i=-17596, i>=17595, I=47940, I>=17595, f=4.18470023078044e-08, f>=1497.59997558594
     2017-01-08 12:36:54   scan-h262       hex=33334093, len=4, string=33@., s=13107, s>=13107, S=13107, S>=13107, i=13107, i>=13107, I=13107, I>=13107, f=-2.42590501721706e-27, f>=4.17354151238669e-08
     2017-01-08 12:36:55   scan-h263       hex=409328f5, len=4, string=@.(., s=-27840, s>=16531, S=37696, S>=16531, i=-27840, i>=16531, I=37696, I>=16531, f=-2.13694447521482e+32, f>=4.59874963760376
     2017-01-08 12:36:56   scan-h264       hex=28f541d4, len=4, string=(.A., s=-2776, s>=10485, S=62760, S>=10485, i=-2776, i>=10485, I=62760, I>=10485, f=-3332166909952, f>=2.72290125017706e-14
     2017-01-08 12:36:57   scan-h265       hex=41d4ae14, len=4, string=A..., s=-11199, s>=16852, S=54337, S>=16852, i=-11199, i>=16852, I=54337, I>=16852, f=1.76532294853929e-26, f>=26.5849990844727
     2017-01-08 12:36:58   scan-h266       hex=ae1441b7, len=4, string=..A., s=5294, s>=-20972, S=5294, S>=44564, i=5294, i>=-20972, I=5294, I>=44564, f=-1.15085113066016e-05, f>=-3.37096704716711e-11
     2017-01-08 12:36:59   scan-h267       hex=41b70000, len=4, string=A..., s=-18623, s>=16823, S=46913, S>=16823, i=-18623, i>=16823, I=46913, I>=16823, f=6.57391148568701e-41, f>=22.875
     2017-01-08 12:37:00   scan-h268       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:01   scan-h269       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:57   scan-h27        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:02   scan-h270       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:03   scan-h271       hex=00000012, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=4.03896783473158e-28, f>=2.52233723578467e-44
     2017-01-08 12:37:04   scan-h272       hex=00120031, len=4, string=...1, s=4608, s>=18, S=4608, S>=18, i=4608, i>=18, I=4608, I>=18, f=1.86366833077045e-09, f>=1.65310759446859e-39
     2017-01-08 12:37:05   scan-h273       hex=00310022, len=4, string=.1.", s=12544, s>=49, S=12544, S>=49, i=12544, i>=49, I=12544, I>=49, f=1.73731751437777e-18, f>=4.49998695588936e-39
     2017-01-08 12:37:06   scan-h274       hex=00220001, len=4, string=.".., s=8704, s>=34, S=8704, S>=34, i=8704, i>=34, I=8704, I>=34, f=2.35342808201127e-38, f>=3.12240827067017e-39
     2017-01-08 12:37:07   scan-h275       hex=00010000, len=4, string=...., s=256, s>=1, S=256, S>=1, i=256, i>=1, I=256, I>=1, f=3.58732406867153e-43, f>=9.18354961579912e-41
     2017-01-08 12:37:08   scan-h276       hex=0000162b, len=4, string=...+, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=5.32907051820075e-13, f>=7.95236878504334e-42
     2017-01-08 12:37:09   scan-h277       hex=162b0000, len=4, string=.+.., s=11030, s>=5675, S=11030, S>=5675, i=11030, i>=5675, I=11030, I>=5675, f=1.54563220615027e-41, f>=1.3813269994782e-25
     2017-01-08 12:37:10   scan-h278       hex=00000468, len=4, string=...h, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=2.49340950295517e+24, f>=1.58066466775839e-42
     2017-01-08 12:37:11   scan-h279       hex=04680002, len=4, string=.h.., s=26628, s>=1128, S=26628, S>=1128, i=26628, i>=1128, I=26628, I>=1128, f=9.43380582698473e-38, f>=2.72714725264011e-36
     2017-01-08 12:32:58   scan-h28        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:12   scan-h280       hex=000248e7, len=4, string=..H., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=-9.44510190062076e+23, f>=2.09823425555676e-40
     2017-01-08 12:37:13   scan-h281       hex=48e70000, len=4, string=H..., s=-6328, s>=18663, S=59208, S>=18663, i=-6328, i>=18663, I=59208, I>=18663, f=8.29680794757438e-41, f>=473088
     2017-01-08 12:37:14   scan-h282       hex=0000002e, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=2.91038304567337e-11, f>=6.44597293589416e-44
     2017-01-08 12:37:15   scan-h283       hex=002e0000, len=4, string=...., s=11776, s>=46, S=11776, S>=46, i=11776, i>=46, I=11776, I>=46, f=1.6501690715889e-41, f>=4.2244328232676e-39
     2017-01-08 12:37:16   scan-h284       hex=00000a5f, len=4, string=..._, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=9.94394797723406e+18, f>=3.72044742278239e-42
     2017-01-08 12:37:17   scan-h285       hex=0a5f0000, len=4, string=._.., s=24330, s>=2655, S=24330, S>=2655, i=24330, i>=2655, I=24330, I>=2655, f=3.40935916370228e-41, f>=1.07370594399588e-32
     2017-01-08 12:37:18   scan-h286       hex=000008f8, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-1.10336308243865e+34, f>=3.21738127408978e-42
     2017-01-08 12:37:19   scan-h287       hex=08f90000, len=4, string=...., s=-1784, s>=2297, S=63752, S>=2297, i=-1784, i>=2297, I=63752, I>=2297, f=8.93355796976357e-41, f>=1.49861423797632e-33
     2017-01-08 12:37:20   scan-h288       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:21   scan-h289       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:59   scan-h29        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:22   scan-h290       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:37:24   scan-h291       hex=00000003, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=3.76158192263132e-37, f>=4.20389539297445e-45
     2017-01-08 12:37:25   scan-h292       hex=00030000, len=4, string=...., s=768, s>=3, S=768, S>=3, i=768, i>=3, I=768, I>=3, f=1.07619722060146e-42, f>=2.75506488473974e-40
     2017-01-08 12:37:26   scan-h293       hex=00000002, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=9.4039548065783e-38, f>=2.80259692864963e-45
     2017-01-08 12:37:27   scan-h294       hex=00020001, len=4, string=...., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=2.35113219460732e-38, f>=1.83672393614447e-40
     2017-01-08 12:37:28   scan-h295       hex=00010002, len=4, string=...., s=256, s>=1, S=256, S>=1, i=256, i>=1, I=256, I>=1, f=9.40424179250379e-38, f>=9.18382987549199e-41
     2017-01-08 12:37:29   scan-h296       hex=00020002, len=4, string=...., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=9.40452877842929e-38, f>=1.83673794912911e-40
     2017-01-08 12:37:30   scan-h297       hex=00020301, len=4, string=...., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=2.40623349230212e-38, f>=1.84748590835048e-40
     2017-01-08 12:37:31   scan-h298       hex=03010000, len=4, string=...., s=259, s>=769, S=259, S>=769, i=259, i>=769, I=259, I>=769, f=3.62936302260128e-43, f>=3.79096928140188e-37
     2017-01-08 12:37:32   scan-h299       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:33   scan-h3         hex=b5000044, len=4, string=...D, s=181, s>=-19200, S=181, S>=46336, i=181, i>=-19200, I=181, I>=46336, f=512.011047363281, f>=-4.76841023555608e-07
     2017-01-08 12:33:00   scan-h30        hex=00000012, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=4.03896783473158e-28, f>=2.52233723578467e-44
     2017-01-08 12:37:33   scan-h300       hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:01   scan-h31        hex=00001200, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.65303893084384e-39, f>=6.45718332360876e-42
     2017-01-08 12:33:02   scan-h32        hex=00120031, len=4, string=...1, s=4608, s>=18, S=4608, S>=18, i=4608, i>=18, I=4608, I>=18, f=1.86366833077045e-09, f>=1.65310759446859e-39
     2017-01-08 12:33:03   scan-h33        hex=12003100, len=4, string=..1., s=18, s>=4608, S=18, S>=4608, i=18, i>=4608, I=18, I>=4608, f=4.49996453511393e-39, f>=4.04500755103718e-28
     2017-01-08 12:33:04   scan-h34        hex=00310022, len=4, string=.1.", s=12544, s>=49, S=12544, S>=49, i=12544, i>=49, I=12544, I>=49, f=1.73731751437777e-18, f>=4.49998695588936e-39
     2017-01-08 12:33:05   scan-h35        hex=31002200, len=4, string=1."., s=49, s>=12544, S=49, S>=12544, i=49, i>=12544, I=49, I>=12544, f=3.12247553299645e-39, f>=1.86457782547222e-09
     2017-01-08 12:33:06   scan-h36        hex=00220001, len=4, string=.".., s=8704, s>=34, S=8704, S>=34, i=8704, i>=34, I=8704, I>=34, f=2.35342808201127e-38, f>=3.12240827067017e-39
     2017-01-08 12:33:07   scan-h37        hex=22000100, len=4, string="..., s=34, s>=8704, S=34, S>=8704, i=34, i>=8704, I=34, I>=8704, f=9.18831403057783e-41, f>=1.73477641553601e-18
     2017-01-08 12:33:08   scan-h38        hex=00010000, len=4, string=...., s=256, s>=1, S=256, S>=1, i=256, i>=1, I=256, I>=1, f=3.58732406867153e-43, f>=9.18354961579912e-41
     2017-01-08 12:33:09   scan-h39        hex=01000016, len=4, string=...., s=1, s>=256, S=1, S>=256, i=1, i>=256, I=1, I>=256, f=1.0339758889508e-25, f>=2.35099486735782e-38
     2017-01-08 12:32:34   scan-h4         hex=0000448d, len=4, string=..D., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-6.03971630559837e-31, f>=2.45913867504362e-41
     2017-01-08 12:33:10   scan-h40        hex=0000162a, len=4, string=...*, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.33226762955019e-13, f>=7.95096748657901e-42
     2017-01-08 12:33:11   scan-h41        hex=00162a00, len=4, string=..*., s=5632, s>=22, S=5632, S>=22, i=5632, i>=22, I=5632, I>=22, f=3.86498295158671e-39, f>=2.03544767656423e-39
     2017-01-08 12:33:12   scan-h42        hex=162a0000, len=4, string=.*.., s=10774, s>=5674, S=10774, S>=5674, i=10774, i>=5674, I=10774, I>=5674, f=1.50975896546356e-41, f>=1.37324906380874e-25
     2017-01-08 12:33:13   scan-h43        hex=2a000004, len=4, string=*..., s=42, s>=10752, S=42, S>=10752, i=42, i>=10752, I=42, I>=10752, f=1.50464030243307e-36, f>=1.13686891931725e-13
     2017-01-08 12:33:14   scan-h44        hex=00000468, len=4, string=...h, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=2.49340950295517e+24, f>=1.58066466775839e-42
     2017-01-08 12:33:15   scan-h45        hex=00046800, len=4, string=..h., s=1024, s>=4, S=1024, S>=4, i=1024, i>=4, I=1024, I>=4, f=9.55232653005855e-39, f>=4.04650154946149e-40
     2017-01-08 12:33:16   scan-h46        hex=04680002, len=4, string=.h.., s=26628, s>=1128, S=26628, S>=1128, i=26628, i>=1128, I=26628, I>=1128, f=9.43380582698473e-38, f>=2.72714725264011e-36
     2017-01-08 12:33:18   scan-h47        hex=68000248, len=4, string=h..H, s=104, s>=26624, S=104, S>=26624, i=104, i>=26624, I=104, I>=26624, f=133121.625, f>=2.41801996576893e+24
     2017-01-08 12:33:19   scan-h48        hex=000248e0, len=4, string=..H., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=-5.7648327030156e+19, f>=2.09813616466426e-40
     2017-01-08 12:33:20   scan-h49        hex=0248e000, len=4, string=.H.., s=18434, s>=584, S=18434, S>=584, i=18434, i>=584, I=18434, I>=584, f=2.05969826752814e-38, f>=1.47579642325892e-37
     2017-01-08 12:32:35   scan-h5         hex=00448e28, len=4, string=.D.(, s=17408, s>=68, S=17408, S>=68, i=17408, i>=68, I=17408, I>=68, f=1.57946572487688e-14, f>=6.29580979245711e-39
     2017-01-08 12:33:21   scan-h50        hex=48e00000, len=4, string=H..., s=-8120, s>=18656, S=57416, S>=18656, i=-8120, i>=18656, I=57416, I>=18656, f=8.04569526276737e-41, f>=458752
     2017-01-08 12:33:22   scan-h51        hex=e0000000, len=4, string=...., s=224, s>=-8192, S=224, S>=57344, i=224, i>=-8192, I=224, I>=57344, f=3.13890856008759e-43, f>=-3.68934881474191e+19
     2017-01-08 12:33:23   scan-h52        hex=0000002f, len=4, string=.../, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.16415321826935e-10, f>=6.58610278232664e-44
     2017-01-08 12:33:24   scan-h53        hex=00002f00, len=4, string=../., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=4.31626831942559e-39, f>=1.68604231227562e-41
     2017-01-08 12:33:25   scan-h54        hex=002f0000, len=4, string=./.., s=12032, s>=47, S=12032, S>=47, i=12032, i>=47, I=12032, I>=47, f=1.68604231227562e-41, f>=4.31626831942559e-39
     2017-01-08 12:33:26   scan-h55        hex=2f00000a, len=4, string=/..., s=47, s>=12032, S=47, S>=12032, i=47, i>=12032, I=47, I>=12032, f=6.16301035218571e-33, f>=1.16415460604813e-10
     2017-01-08 12:33:27   scan-h56        hex=00000a58, len=4, string=...X, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=606930418532352, f>=3.71063833353212e-42
     2017-01-08 12:33:28   scan-h57        hex=000a5800, len=4, string=..X., s=2560, s>=10, S=2560, S>=10, i=2560, i>=10, I=2560, I>=10, f=8.0851109859719e-39, f>=9.49923413384222e-40
     2017-01-08 12:33:29   scan-h58        hex=0a580000, len=4, string=.X.., s=22538, s>=2648, S=22538, S>=2648, i=22538, i>=2648, I=22538, I>=2648, f=3.15824647889527e-41, f>=1.04000216996911e-32
     2017-01-08 12:33:30   scan-h59        hex=58000008, len=4, string=X..., s=88, s>=22528, S=88, S>=22528, i=88, i>=22528, I=88, I>=22528, f=3.85190029639278e-34, f>=562950490292224
     2017-01-08 12:32:36   scan-h6         hex=448e28a4, len=4, string=D.(., s=-29116, s>=17550, S=36420, S>=17550, i=-29116, i>=17550, I=36420, I>=17550, f=-3.65496966671497e-17, f>=1137.27001953125
     2017-01-08 12:33:31   scan-h60        hex=000008ef, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-4.20899613357029e+28, f>=3.20476958791086e-42
     2017-01-08 12:33:32   scan-h61        hex=0008ef00, len=4, string=...., s=2048, s>=8, S=2048, S>=8, i=2048, i>=8, I=2048, I>=8, f=2.19515534410148e-38, f>=8.20421014505179e-40
     2017-01-08 12:33:33   scan-h62        hex=08ef0000, len=4, string=...., s=-4344, s>=2287, S=61192, S>=2287, i=-4344, i>=2287, I=61192, I>=2287, f=8.57482556289642e-41, f>=1.43842892721422e-33
     2017-01-08 12:33:34   scan-h63        hex=ef000000, len=4, string=...., s=239, s>=-4352, S=239, S>=61184, i=239, i>=-4352, I=239, I>=61184, f=3.34910332973631e-43, f>=-3.96140812571322e+28
     2017-01-08 12:33:35   scan-h64        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:36   scan-h65        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:37   scan-h66        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:38   scan-h67        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:39   scan-h68        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:40   scan-h69        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:32:37   scan-h7         hex=8e28a444, len=4, string=.(.D, s=10382, s>=-29144, S=10382, S>=36392, i=10382, i>=-29144, I=10382, I>=36392, f=1313.26733398438, f>=-2.07866897835568e-30
     2017-01-08 12:33:41   scan-h70        hex=00000003, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=3.76158192263132e-37, f>=4.20389539297445e-45
     2017-01-08 12:33:42   scan-h71        hex=00000300, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=2.75506488473974e-40, f>=1.07619722060146e-42
     2017-01-08 12:33:43   scan-h72        hex=00030000, len=4, string=...., s=768, s>=3, S=768, S>=3, i=768, i>=3, I=768, I>=3, f=1.07619722060146e-42, f>=2.75506488473974e-40
     2017-01-08 12:33:44   scan-h73        hex=03000000, len=4, string=...., s=3, s>=768, S=3, S>=768, i=3, i>=768, I=3, I>=768, f=4.20389539297445e-45, f>=3.76158192263132e-37
     2017-01-08 12:33:45   scan-h74        hex=00000002, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=9.4039548065783e-38, f>=2.80259692864963e-45
     2017-01-08 12:33:46   scan-h75        hex=00000200, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=1.83670992315982e-40, f>=7.17464813734306e-43
     2017-01-08 12:33:47   scan-h76        hex=00020001, len=4, string=...., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=2.35113219460732e-38, f>=1.83672393614447e-40
     2017-01-08 12:33:48   scan-h77        hex=02000100, len=4, string=...., s=2, s>=512, S=2, S>=512, i=2, i>=512, I=2, I>=512, f=9.18382987549199e-41, f>=9.40424179250379e-38
     2017-01-08 12:33:49   scan-h78        hex=00010002, len=4, string=...., s=256, s>=1, S=256, S>=1, i=256, i>=1, I=256, I>=1, f=9.40424179250379e-38, f>=9.18382987549199e-41
     2017-01-08 12:33:50   scan-h79        hex=01000200, len=4, string=...., s=1, s>=256, S=1, S>=256, i=1, i>=256, I=1, I>=256, f=1.83672393614447e-40, f>=2.35113219460732e-38
     2017-01-08 12:32:38   scan-h8         hex=28a444bb, len=4, string=(.D., s=-23512, s>=10404, S=42024, S>=10404, i=-23512, i>=10404, I=42024, I>=10404, f=-0.00300050713121891, f>=1.82374646932664e-14
     2017-01-08 12:33:51   scan-h80        hex=00020002, len=4, string=...., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=9.40452877842929e-38, f>=1.83673794912911e-40
     2017-01-08 12:33:52   scan-h81        hex=02000203, len=4, string=...., s=2, s>=512, S=2, S>=512, i=2, i>=512, I=2, I>=512, f=3.82035753700345e-37, f>=9.4045321415456e-38
     2017-01-08 12:33:53   scan-h82        hex=00020301, len=4, string=...., s=512, s>=2, S=512, S>=2, i=512, i>=2, I=512, I>=2, f=2.40623349230212e-38, f>=1.84748590835048e-40
     2017-01-08 12:33:54   scan-h83        hex=02030100, len=4, string=...., s=770, s>=515, S=770, S>=515, i=770, i>=515, I=770, I>=515, f=9.29144959755213e-41, f>=9.62464698328297e-38
     2017-01-08 12:33:55   scan-h84        hex=03010000, len=4, string=...., s=259, s>=769, S=259, S>=769, i=259, i>=769, I=259, I>=769, f=3.62936302260128e-43, f>=3.79096928140188e-37
     2017-01-08 12:33:56   scan-h85        hex=01000000, len=4, string=...., s=1, s>=256, S=1, S>=256, i=1, i>=256, I=1, I>=256, f=1.40129846432482e-45, f>=2.35098870164458e-38
     2017-01-08 12:33:57   scan-h86        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:58   scan-h87        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:33:59   scan-h88        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:00   scan-h89        hex=000000d7, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-140737488355328, f>=3.01279169829836e-43
     2017-01-08 12:32:39   scan-h9         hex=a444bb99, len=4, string=.D.., s=17572, s>=-23484, S=17572, S>=42052, i=17572, i>=-23484, I=17572, I>=42052, f=-1.93630705460801e-23, f>=-4.26596265571032e-17
     2017-01-08 12:34:01   scan-h90        hex=0000d70b, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=8.28149876086511e-32, f>=7.71428817595455e-41
     2017-01-08 12:34:02   scan-h91        hex=00d70b3e, len=4, string=...>, s=-10496, s>=215, S=55040, S>=215, i=-10496, i>=215, I=55040, I>=215, f=0.136562347412109, f>=1.97486646109484e-38
     2017-01-08 12:34:03   scan-h92        hex=d70b3e23, len=4, string=..>#, s=3031, s>=-10485, S=3031, S>=55051, i=3031, i>=-10485, I=3031, I>=55051, f=1.03024278230489e-17, f>=-153098991435776
     2017-01-08 12:34:04   scan-h93        hex=0b3e2300, len=4, string=.>#., s=15883, s>=2878, S=15883, S>=2878, i=15883, i>=2878, I=15883, I>=2878, f=3.23649918903856e-39, f>=3.66190000168159e-32
     2017-01-08 12:34:05   scan-h94        hex=3e230000, len=4, string=>#.., s=9022, s>=15907, S=9022, S>=15907, i=9022, i>=15907, I=9022, I>=15907, f=1.26425147451385e-41, f>=0.1591796875
     2017-01-08 12:34:06   scan-h95        hex=23000000, len=4, string=#..., s=35, s>=8960, S=35, S>=8960, i=35, i>=8960, I=35, I>=8960, f=4.90454462513686e-44, f>=6.93889390390723e-18
     2017-01-08 12:34:07   scan-h96        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:08   scan-h97        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:10   scan-h98        hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
     2017-01-08 12:34:10   scan-h99        hex=00000043, len=4, string=...C, s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=128, f>=9.38869971097627e-44
   Gotreadings:
     scan-h300  hex=00000000, len=4, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
   Helper:
     lrecv      1483875453.01631
     lsend      1483875452.99915
   Lastread:
     h1         1483875151.43415
     h10        1483875160.42747
     h100       1483875251.13349
     h101       1483875252.1337
     h102       1483875253.17342
     h103       1483875254.17459
     h104       1483875255.19821
     h105       1483875256.38022
     h106       1483875257.38301
     h107       1483875258.38354
     h108       1483875259.3855
     h109       1483875260.41619
     h11        1483875161.4303
     h110       1483875261.38849
     h111       1483875262.39093
     h112       1483875263.39124
     h113       1483875264.39247
     h114       1483875265.42423
     h115       1483875266.39588
     h116       1483875267.39744
     h117       1483875268.39877
     h118       1483875269.40051
     h119       1483875270.43212
     h12        1483875162.43176
     h120       1483875271.40396
     h121       1483875272.40552
     h122       1483875273.40582
     h123       1483875274.40762
     h124       1483875275.44051
     h125       1483875276.41077
     h126       1483875277.4114
     h127       1483875278.41296
     h128       1483875279.41441
     h129       1483875280.44795
     h13        1483875163.43396
     h130       1483875281.41681
     h131       1483875282.41806
     h132       1483875283.42013
     h133       1483875284.4207
     h134       1483875285.45345
     h135       1483875286.4249
     h136       1483875287.42578
     h137       1483875288.42741
     h138       1483875289.42878
     h139       1483875290.45903
     h14        1483875164.43711
     h140       1483875291.43132
     h141       1483875292.43276
     h142       1483875293.43419
     h143       1483875294.43568
     h144       1483875295.46416
     h145       1483875296.43874
     h146       1483875297.44041
     h147       1483875298.44155
     h148       1483875299.44305
     h149       1483875300.46912
     h15        1483875165.43881
     h150       1483875301.44541
     h151       1483875302.44791
     h152       1483875303.44841
     h153       1483875304.45009
     h154       1483875305.47468
     h155       1483875306.45327
     h156       1483875307.45533
     h157       1483875308.45689
     h158       1483875311.78863
     h159       1483875311.90943
     h16        1483875166.43162
     h160       1483875312.03048
     h161       1483875312.46184
     h162       1483875313.63053
     h163       1483875314.63228
     h164       1483875315.66525
     h165       1483875316.85347
     h166       1483875317.85544
     h167       1483875318.85778
     h168       1483875319.88126
     h169       1483875320.86193
     h17        1483875167.43338
     h170       1483875321.86119
     h171       1483875322.86026
     h172       1483875323.86238
     h18        1483875168.43493
     h19        1483875169.43719
     h2         1483875152.4052
     h20        1483875170.44931
     h21        1483875171.4511
     h22        1483875172.45462
     h23        1483875173.44485
     h24        1483875174.44625
     h25        1483875175.4475
     h256       1483875408.44768
     h257       1483875409.41775
     h258       1483875410.44884
     h259       1483875411.40833
     h26        1483875176.44958
     h260       1483875412.40965
     h261       1483875413.41125
     h262       1483875414.4123
     h263       1483875415.45368
     h264       1483875416.41433
     h265       1483875417.4164
     h266       1483875418.4188
     h267       1483875419.41839
     h268       1483875420.45865
     h269       1483875421.42223
     h27        1483875177.44986
     h270       1483875422.42355
     h271       1483875423.42529
     h272       1483875424.42604
     h273       1483875425.46423
     h274       1483875426.42901
     h275       1483875427.43008
     h276       1483875428.43082
     h277       1483875429.53824
     h278       1483875430.46471
     h279       1483875431.42851
     h28        1483875178.45244
     h280       1483875432.43035
     h281       1483875433.43222
     h282       1483875434.81467
     h283       1483875435.8074
     h284       1483875436.79325
     h285       1483875438.07752
     h286       1483875439.07848
     h287       1483875440.10029
     h288       1483875441.08355
     h289       1483875442.08595
     h29        1483875179.45336
     h290       1483875443.08758
     h291       1483875444.08918
     h292       1483875445.10849
     h293       1483875446.09379
     h294       1483875447.09665
     h295       1483875448.09731
     h296       1483875449.10066
     h297       1483875450.11604
     h298       1483875451.10455
     h299       1483875452.10725
     h3         1483875153.40664
     h30        1483875180.46819
     h300       1483875453.1087
     h31        1483875181.45676
     h32        1483875182.46049
     h33        1483875183.46139
     h34        1483875184.46281
     h35        1483875185.47332
     h36        1483875186.47537
     h37        1483875187.47739
     h38        1483875188.4789
     h39        1483875189.4822
     h4         1483875154.4099
     h40        1483875190.49587
     h41        1483875191.4975
     h42        1483875192.83786
     h43        1483875193.84082
     h44        1483875194.85508
     h45        1483875196.02147
     h46        1483875197.0237
     h47        1483875198.02584
     h48        1483875199.02772
     h49        1483875200.04368
     h5         1483875155.41804
     h50        1483875201.06024
     h51        1483875202.06101
     h52        1483875203.06246
     h53        1483875204.06367
     h54        1483875205.07774
     h55        1483875206.07979
     h56        1483875207.08117
     h57        1483875208.08298
     h58        1483875209.084
     h59        1483875210.08567
     h6         1483875156.42005
     h60        1483875211.09206
     h61        1483875212.09386
     h62        1483875213.09491
     h63        1483875214.09628
     h64        1483875215.0982
     h65        1483875216.09943
     h66        1483875217.10136
     h67        1483875218.08496
     h68        1483875219.5168
     h69        1483875220.10753
     h7         1483875157.42159
     h70        1483875221.10849
     h71        1483875222.10988
     h72        1483875223.11222
     h73        1483875224.11415
     h74        1483875225.11635
     h75        1483875226.11654
     h76        1483875227.12015
     h77        1483875228.12133
     h78        1483875229.12306
     h79        1483875230.12563
     h8         1483875158.42492
     h80        1483875231.12703
     h81        1483875232.12902
     h82        1483875233.12953
     h83        1483875234.13135
     h84        1483875235.13388
     h85        1483875236.13468
     h86        1483875237.13789
     h87        1483875238.11585
     h88        1483875239.11583
     h89        1483875240.14315
     h9         1483875159.42493
     h90        1483875241.1196
     h91        1483875242.1204
     h92        1483875243.12183
     h93        1483875244.1233
     h94        1483875245.14947
     h95        1483875246.12559
     h96        1483875247.12654
     h97        1483875248.12751
     h98        1483875250.23237
     h99        1483875250.35305
Attributes:
   IODev      ModbusRTU
   dev-h-defExpr ModbusLD_ScanFormat($hash, $val)
   dev-h-defLen 2
   dev-h-defUnpack a4
   enableControlSet 1
   obj-h1-reading scan-h1
   obj-h10-reading scan-h10
   obj-h100-reading scan-h100
   obj-h101-reading scan-h101
   obj-h102-reading scan-h102
   obj-h103-reading scan-h103
   
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 13:32:20
Erwartet hätte ich werte wie diese:
5,675 MWh - gelieferte Wärmemenge
1497m3 - Durchfluss summiert
1844h - betriebsstunden
26,49°C Vorlauftemp.
22,95°C Rücklauftemp
3,57°C Vorlauf - Rücklauf
1128 liter pro stunden - Durchfluss aktuell
4,6kW gelieferte Wärmemenge aktuell
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 08 Januar 2017, 14:15:30
Hallo Stefan,

Ein kleines Luxusproblem habe ich noch: Nach einem Reboot oder rereadcfg generiert das Reading "Statistics_Timeouts" keine Events beim Wert 0. Wenn ich z.B. durch kurzzeitiges Abstecken einen Timeout generiere, dann kommen die Events wieder wie gewohnt.
Ich logge die Timeouts mit, damit ich mitbekomme, wieviele Störungen ich auf dem  Modbus habe.

Danke und Gruß,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 08 Januar 2017, 14:33:25
Hallo der-Lolo,

Ich hatte ein ähnliches Problem. Mir den Attributen "revRegs" oder "bswapRegs" kannst Du experimentieren. Dabei solltest Du Dich zuerst auf ein Integer-Register z.B. 40 (=0x0028 - Heat Energie E1) beschränken. Als Format dann zuerst %x nehmen, dann siehst Du die einzelnen Bytes besser. Eventuell musst Du anstelle der Adresse 40 auch die 41 nehmen.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 15:28:32
Hm, danke für die Tipps - aber auch hier halte ich nicht die erwarteten Werte zurück.
revRegs und bswapRegs kannte ich auch noch gar nicht, gibt es auch nicht in der Doku oder im dropdown. erwarten die als parameter 0 oder 1 - oder was anderes?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 08 Januar 2017, 16:41:47
Hallo der-Lolo,

die Hilfe findest Du wenn Du im Browser Dein Device anschaust ganz unten mit Click auf den Link "Device specific help".
Diese Attribute haben keinen Parameter. Man kann Sie register-spezfisch setzen oder default für alle. Ich habe Dir einen kleinen Screenshot reingehängt.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 16:47:11
Hallo der-Lolo,

Irgend etwas stimmt hier überhaupt nicht...
Die Werte passen nicht zur Doku des Herstellers und sind auch in sich unsinnig.
Bei Modbus sind die Adressen immer Register-Adressen, wobei ein Register aus 2 Bytes besteht.
Wenn man jetzt zwei Register ab Adresse 46 auslist und die enthalten hex 04680002 (Register 46 enthält hex 0468 und Register 47 enthält hex 0002),
Dann müsste bein Lesen ab Register 47 etwas herauskommen, was mit hex 0002 beginnt.
In Deinem Scan enthält aber Register 47/48 hex 68000248.

Entweder der Scanner hat noch ein Problem oder Dein Gerät hat eine fehlerhafte Modbus-Implementation.
Das wäre nicht das erste mal.

Bitte prüf doch noch mal ob Du die aktuelle Version von Modbus und ModbusAttr installiert hast (wird inzwischen per update verteilt) und lass den scan nochmal mit verbose 5 für Modbus und ModbusAttr laufen.
Das dabei entstehende Log würde mich sehr interessieren.

Gruss
  Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 17:41:51
update check & update brachte tatsächlich eine neue Version von 98_Modbus & 98_ModbusAttr
jetzt ist nothing to do...
list WMZ ergibt
Internals:
   CFGFN
   DEF        35 0
   DEST
   INTERVAL   0
   IODev      ModbusRTU
   MODBUSID   35
   ModuleVersion 3.5.12 - 06.01.2017
   NAME       WMZ
   NOTIFYDEV  global
   NR         50
   NTFY_ORDER 50-WMZ
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusAttr
Attributes:
   IODev      ModbusRTU
   enableControlSet 1
   room       System
   userattr   enableControlSet verbose
   verbose    5


list ModbusRTU ergibt:
Internals:
   BUSY       0
   DEF        /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0@19200,8,E,1
   DeviceName /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03650E-if00-port0@19200,8,E,1
   FD         11
   NAME       ModbusRTU
   NR         31
   PARTIAL
   STATE      opened
   TYPE       Modbus
   Readings:
     2017-01-08 17:31:59   state           opened
   Defptr:
     101:
       DEF        101 30
       DEST
       INTERVAL   30
       IODev      ModbusRTU
       MODBUSID   101
       ModuleVersion 3.5.12 - 06.01.2017
       NAME       ElEn1
       NOTIFYDEV  global
       NR         32
       NTFY_ORDER 50-ElEn1
       PROTOCOL   RTU
       STATE      opened
       TRIGGERTIME 1483893391.85593
       TRIGGERTIME_FMT 2017-01-08 17:36:31
       TYPE       ModbusSDM630M
       Readings:
         2016-12-14 04:37:01   Charge__kAh     3816.424
         2016-12-14 04:37:01   CosPhi_L1__grd  -5.0
         2016-12-14 04:37:01   CosPhi_L2__grd  -36.6
         2016-12-14 04:37:01   CosPhi_L3__grd  0.0
         2016-12-14 04:37:01   CosPhi__grd     -5.1
         2016-12-14 04:37:01   Current_Avr__A  1.3
         2016-12-14 04:35:31   Current_L1__A   3.58
         2016-12-14 04:36:02   Current_L1_demand__A 3.58
         2016-12-14 04:35:31   Current_L2__A   0.00
         2016-12-14 04:36:02   Current_L2_demand__A 0.00
         2016-12-14 04:35:31   Current_L3__A   0.00
         2016-12-14 04:36:02   Current_L3_demand__A 0.00
         2016-12-14 04:36:02   Current_Max_L1_demand__A 8.84
         2016-12-14 04:36:02   Current_Max_L2_demand__A 13.08
         2016-12-14 04:36:02   Current_Max_L3_demand__A 403.23
         2016-12-14 04:34:02   Current_Max_N_demand__A 12.78
         2016-12-14 04:35:01   Current_N__A    3.82
         2016-12-14 04:36:31   Current_N_demand__A 3.82
         2016-12-14 04:37:01   Current_Sum__A  3.96
         2016-12-10 10:15:30   Demand_Period__minutes 0
         2016-12-10 10:15:26   Demand_Time__minutes 0
         2016-12-14 04:36:01   Energy_L1_export__kWh 0.000
         2016-12-14 04:36:01   Energy_L1_import__kWh 617.999
         2016-12-14 04:36:01   Energy_L1_total__kWh 617.999
         2016-12-14 04:36:01   Energy_L2_export__kWh 0.000
         2016-12-14 04:36:01   Energy_L2_import__kWh 166.647
         2016-12-14 04:36:01   Energy_L2_total__kWh 166.647
         2016-12-14 04:36:01   Energy_L3_export__kWh 0.000
         2016-12-14 04:36:01   Energy_L3_import__kWh 0.013
         2016-12-14 04:36:01   Energy_L3_total__kWh 0.013
         2016-12-14 04:37:01   Energy_apparent__kVAh 787.250
         2016-12-14 04:37:01   Energy_export__kVArh 62.734
         2016-12-14 04:37:01   Energy_export__kWh 0.000
         2016-12-14 04:37:01   Energy_import__kVArh 0.912
         2016-12-14 04:37:01   Energy_import__kWh 784.673
         2016-12-14 04:36:01   Energy_total__kVArh 63.645
         2016-12-14 04:36:01   Energy_total__kWh 784.659
         2016-12-14 04:37:01   Frequency__Hz   50.0
         2016-12-10 10:15:18   Modbus_Node_adr 101
         2016-12-10 10:15:19   Modbus_Parity_Stop 1stop.bit_even.parity
         2016-12-10 10:15:18   Modbus_Speed__baud 19200
         2016-12-14 04:37:01   PowerFactor     1.0
         2016-12-14 04:37:01   PowerFactor_L1  1.0
         2016-12-14 04:37:01   PowerFactor_L2  1.0
         2016-12-14 04:37:01   PowerFactor_L3  1.0
         2016-12-14 04:23:01   PowerFactor_inverted -4.9
         2016-12-14 04:37:01   Power_L1__VA    804.5
         2016-12-14 04:37:01   Power_L1__VAr   -70.3
         2016-12-14 04:37:01   Power_L1__W     801
         2016-12-14 04:37:01   Power_L2__VA    0.0
         2016-12-14 04:37:01   Power_L2__VAr   0.0
         2016-12-14 04:37:01   Power_L2__W     0
         2016-12-14 04:37:01   Power_L3__VA    0.0
         2016-12-14 04:37:01   Power_L3__VAr   0.0
         2016-12-14 04:37:01   Power_L3__W     0
         2016-12-14 04:36:31   Power_Max_demand__VA 4952.7
         2016-12-14 04:37:01   Power_Max_demand__W 4951.3
         2016-12-14 04:37:01   Power_Sum__VA   804.5
         2016-12-14 04:37:01   Power_Sum__VAr  -70.3
         2016-12-14 04:37:01   Power_Sum__W    801.4
         2016-12-14 04:36:31   Power_Sum_demand__VA 803.7
         2016-12-14 04:37:01   Power_Sum_demand__W 801.4
         2016-12-10 10:15:18   Pulse_Divisor_1 0
         2016-12-10 10:15:30   Relay2_Energy_Type 0
         2016-12-10 10:15:16   System_Current__A 10.00
         2016-12-10 10:15:18   System_Password 1000
         2016-12-10 10:15:19   System_Password_Lock locked
         2016-12-10 10:15:29   System_Power__W 6600
         2016-12-10 10:15:19   System_Pulse_Width__ms 100
         2016-12-10 10:15:29   System_Serial_Nr 6.65413870559409e+22
         2016-12-10 10:15:19   System_Type     3p4w
         2016-12-10 10:15:16   System_Voltage__V 220.0
         2016-12-14 04:23:01   THD_Current_L1__prz 42.1
         2016-12-14 04:23:01   THD_Current_L2__prz 0.0
         2016-12-14 04:23:01   THD_Current_L3__prz 0.0
         2016-12-14 04:23:01   THD_Current_avr__prz -93.8
         2016-12-14 04:23:34   THD_Voltage_L1_L2__prz 0.0
         2016-12-14 04:23:01   THD_Voltage_L1_N__prz 4.1
         2016-12-14 04:23:34   THD_Voltage_L2_L3__prz 0.0
         2016-12-14 04:23:01   THD_Voltage_L2_N__prz 4.2
         2016-12-14 04:23:34   THD_Voltage_L3_L1__prz 0.0
         2016-12-14 04:23:01   THD_Voltage_L3_N__prz 4.2
         2016-12-14 04:23:34   THD_Voltage_avr_LL__prz 0.0
         2016-12-14 04:23:01   THD_Voltage_avr_LN__prz 4.2
         2016-12-14 04:36:04   Voltage_Avr_L_to_L__V 282.3
         2016-12-14 04:37:01   Voltage_Avr__V  152.0
         2016-12-14 04:35:31   Voltage_L1__V   224.6
         2016-12-14 04:30:02   Voltage_L1_to_L2__V 390.9
         2016-12-14 04:35:33   Voltage_L2__V   226.5
         2016-12-14 04:30:02   Voltage_L2_to_L3__V 229.1
         2016-12-14 04:35:33   Voltage_L3__V   0.0
         2016-12-14 04:30:02   Voltage_L3_to_L1__V 227.5
     2:
       DEF        2 30
       DEST
       INTERVAL   30
       IODev      ModbusRTU
       MODBUSID   2
       ModuleVersion 3.5.12 - 06.01.2017
       NAME       ElEn2
       NOTIFYDEV  global
       NR         33
       NTFY_ORDER 50-ElEn2
       PROTOCOL   RTU
       STATE      opened
       TRIGGERTIME 1483893391.85665
       TRIGGERTIME_FMT 2017-01-08 17:36:31
       TYPE       ModbusSDM630M
       Readings:
         2017-01-08 17:17:47   Charge__kAh     6125.532
         2017-01-08 17:17:47   CosPhi_L1__grd  -12.2
         2017-01-08 17:17:47   CosPhi_L2__grd  -2.9
         2017-01-08 17:17:47   CosPhi_L3__grd  -30.3
         2017-01-08 17:17:47   CosPhi__grd     -4.8
         2017-01-08 17:17:47   Current_Avr__A  2.0
         2017-01-08 17:15:48   Current_L1__A   1.07
         2017-01-08 17:16:49   Current_L1_demand__A 1.86
         2017-01-08 17:15:48   Current_L2__A   4.42
         2017-01-08 17:16:49   Current_L2_demand__A 4.19
         2017-01-08 17:15:47   Current_L3__A   0.00
         2017-01-08 17:16:49   Current_L3_demand__A 0.00
         2017-01-08 17:12:51   Current_Max_L1_demand__A 25.03
         2017-01-08 17:12:51   Current_Max_L2_demand__A 5.78
         2017-01-08 17:12:51   Current_Max_L3_demand__A 0.13
         2017-01-08 17:12:59   Current_Max_N_demand__A 24.94
         2017-01-08 17:15:45   Current_N__A    4.10
         2017-01-08 17:16:47   Current_N_demand__A 4.24
         2017-01-08 17:17:47   Current_Sum__A  6.02
         2017-01-08 17:13:01   Demand_Period__minutes 60
         2017-01-08 17:12:45   Demand_Time__minutes 60
         2017-01-08 17:12:56   Energy_L1_export__kWh 0.000
         2017-01-08 17:12:56   Energy_L1_import__kWh 1207.652
         2017-01-08 17:12:56   Energy_L1_total__kWh 1207.652
         2017-01-08 17:12:56   Energy_L2_export__kWh 0.000
         2017-01-08 17:12:56   Energy_L2_import__kWh 59.371
         2017-01-08 17:13:05   Energy_L2_total__kWh 59.374
         2017-01-08 17:12:56   Energy_L3_export__kWh 0.531
         2017-01-08 17:12:56   Energy_L3_import__kWh 0.208
         2017-01-08 17:13:05   Energy_L3_total__kWh 0.739
         2017-01-08 17:17:47   Energy_apparent__kVAh 1281.316
         2017-01-08 17:17:47   Energy_export__kVArh 156.709
         2017-01-08 17:17:47   Energy_export__kWh 0.531
         2017-01-08 17:17:47   Energy_import__kVArh 28.494
         2017-01-08 17:17:47   Energy_import__kWh 1267.330
         2017-01-08 17:12:56   Energy_total__kVArh 185.195
         2017-01-08 17:12:56   Energy_total__kWh 1267.762
         2017-01-08 17:17:47   Frequency__Hz   50.0
         2017-01-08 17:12:57   Modbus_Node_adr 2
         2017-01-08 17:13:07   Modbus_Parity_Stop 1stop.bit_even.parity
         2017-01-08 17:12:57   Modbus_Speed__baud 19200
         2017-01-08 17:17:47   PowerFactor     1.0
         2017-01-08 17:17:47   PowerFactor_L1  1.0
         2017-01-08 17:17:47   PowerFactor_L2  1.0
         2017-01-08 17:17:47   PowerFactor_L3  1.0
         2017-01-08 17:12:46   PowerFactor_inverted -4.6
         2017-01-08 17:17:47   Power_L1__VA    239.7
         2017-01-08 17:17:47   Power_L1__VAr   -50.8
         2017-01-08 17:17:47   Power_L1__W     234
         2017-01-08 17:17:47   Power_L2__VA    996.7
         2017-01-08 17:17:47   Power_L2__VAr   -50.9
         2017-01-08 17:17:47   Power_L2__W     995
         2017-01-08 17:17:47   Power_L3__VA    0.0
         2017-01-08 17:17:47   Power_L3__VAr   0.0
         2017-01-08 17:17:47   Power_L3__W     0
         2017-01-08 17:12:59   Power_Max_demand__VA 5587.7
         2017-01-08 17:12:50   Power_Max_demand__W 5581.5
         2017-01-08 17:17:47   Power_Sum__VA   1236.8
         2017-01-08 17:17:47   Power_Sum__VAr  -101.0
         2017-01-08 17:17:47   Power_Sum__W    1230.0
         2017-01-08 17:12:59   Power_Sum_demand__VA 1366.1
         2017-01-08 17:17:47   Power_Sum_demand__W 1373.7
         2017-01-08 17:12:57   Pulse_Divisor_1 0
         2017-01-08 17:12:44   Relay2_Energy_Type 0
         2017-01-08 17:13:04   System_Current__A 10.00
         2017-01-08 17:12:57   System_Password 1000
         2017-01-08 17:13:07   System_Password_Lock locked
         2017-01-08 17:12:52   System_Power__W 6600
         2017-01-08 17:13:07   System_Pulse_Width__ms 100
         2017-01-08 17:12:52   System_Serial_Nr 6.65413870559409e+22
         2017-01-08 17:13:07   System_Type     3p4w
         2017-01-08 17:13:04   System_Voltage__V 220.0
         2017-01-08 17:12:46   THD_Current_L1__prz 0.0
         2017-01-08 17:12:46   THD_Current_L2__prz 45.8
         2017-01-08 17:12:46   THD_Current_L3__prz 0.0
         2017-01-08 17:12:46   THD_Current_avr__prz -703141773312.0
         2017-01-08 17:12:48   THD_Voltage_L1_L2__prz 0.0
         2017-01-08 17:12:49   THD_Voltage_L1_N__prz 6.7
         2017-01-08 17:12:48   THD_Voltage_L2_L3__prz 0.0
         2017-01-08 17:12:49   THD_Voltage_L2_N__prz 0.7
         2017-01-08 17:12:48   THD_Voltage_L3_L1__prz 0.0
         2017-01-08 17:12:49   THD_Voltage_L3_N__prz 0.7
         2017-01-08 17:12:56   THD_Voltage_avr_LL__prz 0.0
         2017-01-08 17:12:46   THD_Voltage_avr_LN__prz 1.3
         2017-01-08 17:16:46   Voltage_Avr_L_to_L__V 389.5
         2017-01-08 17:17:47   Voltage_Avr__V  224.6
         2017-01-08 17:12:50   Voltage_L1__V   224.3
         2017-01-08 17:12:53   Voltage_L1_to_L2__V 389.5
         2017-01-08 17:13:02   Voltage_L2__V   225.1
         2017-01-08 17:12:53   Voltage_L2_to_L3__V 390.5
         2017-01-08 17:13:06   Voltage_L3__V   225.2
         2017-01-08 17:12:53   Voltage_L3_to_L1__V 389.6
     35:
       CFGFN
       DEF        35 0
       DEST
       INTERVAL   0
       IODev      ModbusRTU
       MODBUSID   35
       ModuleVersion 3.5.12 - 06.01.2017
       NAME       WMZ
       NOTIFYDEV  global
       NR         50
       NTFY_ORDER 50-WMZ
       PROTOCOL   RTU
       STATE      opened
       TYPE       ModbusAttr
   Helper:
     buffer
Attributes:
   room       System
   verbose    5


System frisch gestartet um ein sauberes Logfile zu haben...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 17:48:11
Die beiden SDM sind disabled,
Es läuft noch ein Max Scanner mit 6 Thermostaten und Wunderground...
Ich hänge das Logfile als Datei an.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 19:21:08
Hallo,

offenbar hat der Hersteller hier Modbus "interpretiert" und für die Adressen < 256 Byte-Adressen zugeordnet.
So passt das auch zur Doku.
Somit würde es mich auch nicht wundern, wenn die Byte-Reihenfolge oder sogar Word-Reihenfolge für die Float-Werte abweicht.
Das ist dann ein Fall für die Attribute obj-hXX-bswapRegs und/oder obj-hXX-revRegs.
Definier das Attribut doch mal für alle in Frage kommenden T1-Objekte (z.B. h264 und h270)...

Gruss
   Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 19:33:22
Ergänzung:
Du könntest es auch global setzen:
dev-([cdih]-)*defRevRegs
dev-([cdih]-)*defBswapRegs
dann gilt es für alle Objekte und auch beim Scannen werden die Bytes / Register erst mal vertauscht.

konkret wäre das zum Beispiel
attr WMZ dev-h-defBswapRegs 1

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 19:53:37
Ok, da scheint was zu sein...
Zitatscan-h264
hex=703dd441, len=4, string=p=.A, s=15728, s>=28733, S=15728, S>=28733, i=15728, i>=28733, I=15728, I>=28733, f=26.5299987792969, f>=2.34997064335256e+29
2017-01-08 19:49:54
scan-h265
hex=d441f528, len=4, string=.A.(, s=16852, s>=-11199, S=16852, S>=54337, i=16852, i>=-11199, I=16852, I>=54337, f=2.72290125017706e-14, f>=-3332166909952
2017-01-08 19:49:55
scan-h266
hex=f528b841, len=4, string=.(.A, s=10485, s>=-2776, S=10485, S>=62760, i=10485, i>=-2776, I=10485, I>=62760, f=23.019998550415, f>=-2.13877681990109e+32
2017-01-08 19:49:56
scan-h267
hex=b8410000, len=4, string=.A.., s=16824, s>=-18367, S=16824, S>=47169, i=16824, i>=-18367, I=16824, I>=47169, f=2.35754453638007e-41, f>=-4.60147857666016e-05
2017-01-08 19:49:57

von den Werten her könnte bei 264 und 266 f=.... passen.
jetzt würde ich dann mit unpack f den einzelnen Wert bekommen, oder?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 19:57:27
so ist es :-)
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 20:00:08
leider nicht...
Zitathex=32362e37333939393937373131313832, len=16, string=26.7399997711182, s=13874, s>=12854, S=13874, S>=12854, i=13874, i>=12854, I=13874, I>=12854, f=1.03838265204104e-05, f>=1.06043023251345e-08
mit unpack f

Zitathex=2d322e3231373736333039303836313134652d3335, len=21, string=-2.21776309086114e-35, s=12845, s>=11570, S=12845, S>=11570, i=12845, i>=11570, I=12845, I>=11570, f=1.01395416507444e-08, f>=1.01283859771373e-11
mit unpack f>
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 20:13:22
Das ist noch die Scanner-Ausgabe.
Mit welchen Einstellungen kam denn vorher f=26.5299987792969?
Ist das reproduzierbar?
Wenn ja, dann kannst Du ein neues ModbusAttr Device erzeugen und dann mit obj-h264-... ein Reading erzeugen:


define WMZ ModbusAttr 35 0
attr WMZ obj-h264-reading T1
attr WMZ obj-h264-showGet 1
attr WMZ obj-h264-unpack f
attr WMZ obj-h264-len 2
attr WMZ obj-h264-revRegs 1 (falls Du das gesetzt hattest)
attr WMZ obj-h264-bswapRegs 1 (falls Du das gesetzt hattest)


die vom Scanner selbst erzeugten Attribute (dev-h-defExpr etc.) sollten hier nicht gesetzt sein!

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 20:44:29
Das schaut gut aus...
Ich schau mal ob ich die anderen Werte auch auf die art eingebunden bekomme.
Dann noch abschneiden auf zwei kommastellen und Einheiten dran...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 08 Januar 2017, 20:52:08
So, ich glaube, ich habe die Ursache der Hänger gefunden. Es ist nicht das Modbus-Modul, es ist von einem Zeitfaktor abhängig. Da es ja keine Möglichkeit in FHEM oder dem Modbus-Modul gibt, das Interface auf RS485 umzustellen, mache ich das mit einem externen Programm, welches von FHEM gestartet wird. Wenn das zufällig zusammentrifft mit dem Öffnen des Modbus-Interfaces, dann hängt es.
Habe das mit einem Delay gelöst.

Jetzt habe ich ein anderes Problem. Nach dem letzten Update will er die Daten von einem Gerät nicht wirklich lesen:
2017.01.08 20:39:57 4: ModBusLine: HandleSendQueue sends fc 1 to id 3, tid 144 for OnOff (c0), len 1, device EG_Tuerschild (RTU), pdu 0100000001, V 3.5.12 - 06.01.2017
2017.01.08 20:39:57 5: SW: 030100000001fc28
2017.01.08 20:39:57 5: ModBusLine: Profiling: Wait, before Send, now is 1483904397.62807, Wait started at 1483904397.5216, Send started at 1483904397.62553
2017.01.08 20:39:57 5: ModBusLine: Profiling: add 0.00253391265869141 to sum for Send (now is 1483904397.62807, start for Send was 1483904397.62553)
2017.01.08 20:39:57 5: ModBusLine: Profiling: Read, before Wait, now is 1483904397.63208, Read started at 1483904397.52561, Wait started at 1483904397.62807
2017.01.08 20:39:57 5: ModBusLine: Profiling: add 0.00401496887207031 to sum for Wait (now is 1483904397.63208, start for Wait was 1483904397.62807)
2017.01.08 20:39:57 5: ModBusLine: raw read: 00
2017.01.08 20:39:57 5: ModBusLine: ParseFrames got: 00
2017.01.08 20:39:57 5: ModBusLine: Profiling: Read, before Read, now is 1483904397.63757, Read started at 1483904397.63208, Read started at 1483904397.63208
2017.01.08 20:39:57 5: ModBusLine: raw read: 0301010191f0
2017.01.08 20:39:57 5: ModBusLine: ParseFrames got: 000301010191f0
2017.01.08 20:39:57 5: ModBusLine: ParseFrames returned error: recieved frame from unexpected Modbus Id 0, expecting fc 1 from 3 for device EG_Tuerschild


Wenn ich das richtig sehe, dann hat er den richtigen Frame bekommen, setzt aber irgendwie ein 0-Byte davor und dann ist der Frame eben ungültig. Das passiert nachvollziehbar und kontinuierlich mit diesem Device. Oder lese ich das log falsch?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 21:18:52
Hallo tante ju,

raw read im Log bedeutet dass die Daten von DevIO gelesen wurden.
Das wird mit älteren Versionen vom Modbus-Modul genauso sein ...
Aber Du hast in sofern recht dass das Antwort-Frame bis auf das überflüssige 00 korrekt aussieht.
Schau doch zur Sicherheit mal ob das mit einer älteren Version von DevIO und/oder Modbus auch passiert.
Hat sich vielleicht etwas an der Schnittstellenkonfiguration geändert?
Für mich sieht das nicht nach einem Software-Problem aus.
Hast Du mal einen ganz einfachen RS485-Adapter ausprobiert, den man nicht konfigurieren muss / kann?
(Z.B. Ein DA70157)

Gruß
    Stefan

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 08 Januar 2017, 21:26:19
Zitat von: StefanStrobel am 08 Januar 2017, 21:18:52
Hallo tante ju,

raw read im Log bedeutet dass die Daten von DevIO gelesen wurden.
Das wird mit älteren Versionen vom Modbus-Modul genauso sein ...
Aber Du hast in sofern recht dass das Antwort-Frame bis auf das überflüssige 00 korrekt aussieht.
Schau doch zur Sicherheit mal ob das mit einer älteren Version von DevIO und/oder Modbus auch passiert.
Hat sich vielleicht etwas an der Schnittstellenkonfiguration geändert?
Für mich sieht das nicht nach einem Software-Problem aus.
Hast Du mal einen ganz einfachen RS485-Adapter ausprobiert, den man nicht konfigurieren muss / kann?
(Z.B. Ein DA70157)

Habe keinen anderen Adapter. Allerdings ist es komisch, sieben Devices sind auf dem Modbus. Bei 6 läuft es, bei diesem nicht. Es ist ja nicht so, daß es ein systematischer Fehler ist. Es kann also nach ein wenig umstecken wieder laufen. Ich würde mich ja nicht wundern, wenn der Frame defekt wäre. Aber dieses mit der führen 0, und nun auch über einen Reboot hinweg ist schon seltsam.

Aber auch seltsam finde ich, daß die Software führende Bytes nicht "eliminieren" kann. Immerhin können das ja Artefakte von Busumschaltungen und dergleichen sein. Wäre es nicht hilfreich bei empfangenen Frames, die fehlerhaft sind, auch mal testweise den Anfang zu verschieben? Zumindest mache ich das so in meinen Modbus-Implementierungen auf den Mikrocontrollern.

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 08 Januar 2017, 21:33:35
Darf ich nochmal kurz dazwischen grätschen?
Ich habe nun das hier: Internals:
   CFGFN
   DEF        35 30
   DEST
   INTERVAL   30
   IODev      ModbusRTU
   MODBUSID   35
   ModuleVersion 3.5.12 - 06.01.2017
   NAME       WMZ
   NOTIFYDEV  global
   NR         787
   NTFY_ORDER 50-WMZ
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusAttr
   Readings:
     2017-01-08 21:28:39   Durchfluss      1152
     2017-01-08 21:26:45   Ruecklauftemperatur 23.10
     2017-01-08 21:26:50   Vorlauftemperatur 26.63
     2017-01-08 21:30:46   aktWaermeLeistung 4.700
     2017-01-08 21:30:25   gesamtDurchfluss 1508.310
     2017-01-08 21:28:49   gesamtWaermemenge 5.711
   Gotreadings:
     aktWaermeLeistung 4.700
   Helper:
     lrecv      1483907446.55535
     lsend      1483907446.5373
   Lastread:
     h256       1483907329.56603
     h258       1483907319.64838
     h260       1483907425.66531
     h262       1483907446.55789
     h264       1483907210.99511
     h266       1483907205.86859
Attributes:
   IODev      ModbusRTU
   dev-h-defBswapRegs 1
   dev-h-defPoll 1
   obj-h256-format %.3f
   obj-h256-len 2
   obj-h256-reading gesamtWaermemenge
   obj-h256-showGet 1
   obj-h256-unpack f
   obj-h258-format %.3f
   obj-h258-len 2
   obj-h258-poll 1
   obj-h258-reading Durchfluss
   obj-h258-showGet 1
   obj-h258-unpack f
   obj-h260-format %.3f
   obj-h260-len 2
   obj-h260-reading gesamtDurchfluss
   obj-h260-showGet 1
   obj-h260-unpack f
   obj-h262-format %.3f
   obj-h262-len 2
   obj-h262-reading aktWaermeLeistung
   obj-h262-showGet 1
   obj-h262-unpack f
   obj-h264-format %.2f
   obj-h264-len 2
   obj-h264-reading Vorlauftemperatur
   obj-h264-showGet 1
   obj-h264-unpack f
   obj-h266-format %.2f
   obj-h266-len 2
   obj-h266-reading Ruecklauftemperatur
   obj-h266-showGet 1
   obj-h266-unpack f
   room       System
   userattr   IODev dev-h-defBswapRegs dev-h-defPoll obj-h256-format obj-h256-len obj-h256-poll obj-h256-reading obj-h256-showGet obj-h256-unpack obj-h258-format obj-h258-len obj-h258-poll obj-h258-reading obj-h258-showGet obj-h258-unpack obj-h260-format obj-h260-len obj-h260-reading obj-h260-showGet obj-h260-unpack obj-h262-format obj-h262-len obj-h262-reading obj-h262-showGet obj-h262-unpack obj-h264-format obj-h264-len obj-h264-reading obj-h264-showGet obj-h264-unpack obj-h266-format obj-h266-len obj-h266-reading obj-h266-showGet obj-h266-unpack


Frage mich aber jetzt wie ich es hinbekomme das nun die 4 relevanten Informationen zyklisch also alle 30 sec abgefragt werden.
("Ich antworte mir mal selbst -- ein shutdown restart hilft!")

Einheiten, also °C und kW oder MWh und l/h kann ich nicht vergeben?
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 Januar 2017, 21:35:35
Zitat von: tante ju am 08 Januar 2017, 21:26:19
Aber auch seltsam finde ich, daß die Software führende Bytes nicht "eliminieren" kann. Immerhin können das ja Artefakte von Busumschaltungen und dergleichen sein. Wäre es nicht hilfreich bei empfangenen Frames, die fehlerhaft sind, auch mal testweise den Anfang zu verschieben? Zumindest mache ich das so in meinen Modbus-Implementierungen auf den Mikrocontrollern.

Das hat bisher niemand benötigt.
Einbauen kann ich das schon.
Ich pack es mal auf die Wunschliste für die nächste Version.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 10 Januar 2017, 20:32:42
Hallo der-Lolo,

das mit den Einheiten ist ja ein Thema, das im Forum seit Jahren immer wieder mal diskutiert wird.
Da es keine klare Empfehlung für Einheiten gibt und sie in Readings durchaus auch Nachteile haben,
habe ich bisher weder im Modbus-Modul noch in HTTPMOD spezielle Features für Einheiten eingebaut.
Manche Anwender verwenden aber Format-Attribute wie "%.3f kWh" oder die -Expr Attribute um Einheiten an die Readings anzuhängen.
Ich bin kein Fan davon ;-)

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: der-Lolo am 11 Januar 2017, 14:47:37
Hallo Stefan, danke Dir!
Das Logging läuft nun sehr stabil und fehlerfrei. Die Einheiten werde ich wie von Dir beschrieben, oder aber mithilfe einer readingsGroup hinzufügen. Tausend Dank für die Hilfe und die tolle Arbeit hier...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 Januar 2017, 21:33:49
Hallo tante ju,

Zitat von: tante ju am 05 Januar 2017, 00:14:26
Hat sich eigentlich jemand mal daran gemacht, für das serielle Interface mittels termios RS485 für die Interfaces einzuschalten? Zur Zeit muß ich aus FHEM noch ein extra Programm aufrufen, da meine seriellen Interfaces erst auf RS485-Modus umgeschaltet werden müssen, um die Leitungstreiber zu aktivieren.

Ich hab mir das nochmal angesehen.
Das Modbus-Modul verwendet für die Kommunikation ja Fhem DevIO. Auch das Setzen der Baudrate, Parity etc. geht vom Modbus-Modul an Devio, und dort wird Device::SerialPort verwendet um die Schnittstellen-Parameter zu setzen. Wenn wir einen Weg finden, wie man Device::SerialPort dazu bringt, ein Interface in den RS485-Modus zu bringen, ist der Rest schnell gemacht. Device::SerialPort verwendet wohl termios recht ausführlich ...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 12 Januar 2017, 21:47:26
Warum wird ein Gerät verwendet das erst in den Modus geschalten werden muss. Ein Modbus-USB Gerät kostet 2-20€-????
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: doesel am 12 Januar 2017, 21:54:27
Auch ich habe nach Update ein volles Logfile, mit minütlicher Meldung:
MyRS485: timeout waiting for fc 3 from id 1, (h63776), Request was 0103f9200002f55d, Buffer contains 0103040002
Nach mehreren erfolglosen Versuchen mit timeoutLogLevel und Verbose habe ich nunmehr eine ältere Version Modbus installiert. Nun ist Ruhe.
Doesel
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: tante ju am 12 Januar 2017, 22:43:41
Zitat von: StefanStrobel am 12 Januar 2017, 21:33:49
Ich hab mir das nochmal angesehen.
Das Modbus-Modul verwendet für die Kommunikation ja Fhem DevIO. Auch das Setzen der Baudrate, Parity etc. geht vom Modbus-Modul an Devio, und dort wird Device::SerialPort verwendet um die Schnittstellen-Parameter zu setzen. Wenn wir einen Weg finden, wie man Device::SerialPort dazu bringt, ein Interface in den RS485-Modus zu bringen, ist der Rest schnell gemacht. Device::SerialPort verwendet wohl termios recht ausführlich ...

Letztlich wird RS485 auch nur über TermIOs eingeschaltet. Das Problem ist nur, daß die Konstanten nicht in Perl definiert sind, wie zum Beispiel TIOCSERSETRS485.
Habe mal einen Artikel gesehen, in dem jemand die Konstanten in Perl definiert. Macht das ganze dann aber systemabhängig und ich finde den jetzt auch nicht wieder.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Zwiebel am 19 Januar 2017, 15:22:11
Hallo,

ich habe die gleichen Fehler wie doesel seit meinem letzten Update im fhem.log!


2017.01.19 15:13:14 3: modbus: timeout waiting for fc 4 from id 11, (i344), Request was 0b0401580002f14e, Buffer contains
2017.01.19 15:13:18 3: modbus: timeout waiting for fc 3 from id 11, (h63776), Request was 0b03f9200002f5f7, Buffer contains 0b03040002
2017.01.19 15:14:04 3: modbus: timeout waiting for fc 3 from id 21, (h63776), Request was 1503f9200002f649, Buffer contains 1503040002
2017.01.19 15:14:07 3: modbus: timeout waiting for fc 4 from id 20, (i342), Request was 14040156000412e0, Buffer contains
2017.01.19 15:14:09 3: modbus: timeout waiting for fc 3 from id 20, (h63776), Request was 1403f9200002f798, Buffer contains 1403040002


woran kann das liegen? Muß ich ein entsprechendes Attribut setzen?

viele Grüße
Zwiebel
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 19 Januar 2017, 17:56:09
Hab ich auch. Aber alles läuft.
Lg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 19 Januar 2017, 18:23:14
Hallo,

die Timeouts wurden in einer früheren Version des Modbus-Moduls nur auf Loglevel 4 protokolliert und deshalb haben die meisten Leute das gar nicht bemerkt, wenn verbose für das Modbus-Gerät wie üblich auf 3 steht.
In der neuen Version wird es per Default auf Ebene 3 protokolliert und dann sieht man es, es sei denn man setzt das Attribut timeoutLogLevel für das physische Device auf 4 (scheint im obigen Log "modbus" zu sein).

Wenn solche Timeouts nur selten auftreten würde ich mir keine Gedanken machen. Wenn es aber ständig kommt, sollte man nach der Ursache der Timeouts suchen - nicht nach dem Attribut zum Verhindern des Log-Eintrags ;-)

Nach "Buffer contains" im Log wird angezeigt, ob schon etwas empfangen wurde.
0b03040002 ist eine Modbus-Antwort von ID 11 auf function code 3, bei der nur noch wenige Bytes am Ende fehlen. Das Gerät hat also durchaus geantwortet. Ich würde mal testen ob eine Erhöhung des Timeouts die Lage verbessert.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: cotecmania am 22 Januar 2017, 11:13:37
Hi,

benutze FTUI auf einem Tablet zur Visualisierung. Alles läuft stabil und das Einzige Problem ist folgendes :

In einem SimpleChart-Widget stelle ich 2 Werte eines ModBus-Devices dar (Solar-Laderegler)
Leider funktioniert der automatische Refresh (Longpoll?) bei diesem Chart NICHT. Nur wenn ich manuell einen Reload auslöse.
Ich habe noch andere Charts mit Werten aus Nicht-Modbus-Devices, die werden regelmässig aktualisiert.

An was kann das liegen ?

Gruss
Joe
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 22 Januar 2017, 18:24:59
Hallo Joe,

leider kenne ich das Widget nicht.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 29 Januar 2017, 10:06:31
Hallo,

anbei nochmal eine neue Version mit ein paar Neuen Features zum Testen.

Neu:
- Verbindungen werden jetzt generell erst geöffnet wenn Fhem mit der Initialisierung fertig ist.
   (auch bei seriellen Verbindungen über ein Modbus IODev)
   Damit ist auch das Logging klarer und es wird auch bei mehreren seriellen Adaptern korrekt beim Öffnen angezeigt,
   über welchen Adapter die Kommunikation gehen wird. Bei einem Disable werden auch serielle Verbindungen geschlossen
- Neues Attribut skipGarbage ignoriert führende Bytes, die nicht passen (bei Antworten über serielle Verbindungen)
- Neues Attribut ignoreExpr kann bei Objekten verwendet werden um das Updaten des Readings zu verhindern,
   wenn eine Bestimmte Bedingung erfüllt ist.
- Generell kann man jetzt auch die Adressen von Objekten mit führemdem Nullen definieren.
   Das macht die Liste der Attribute etwas lesbarer,
   verlangsamt aber auch die Verarbeitung wenn es verwendet wird.
- Alle Expressions in Attributen werden jetzt bei der Auswertung so abgearbeitet,
   dass Warnings sauber und mit Kontext im Fhem log erscheinen.
- Aktualisierung der Timeouts-Statistik funktioniert jetzt auch wenn keine Timeouts aufgetreten sind
- intern wird jetzt generell isDisabled verwendet und nicht mehr nur das Attribut "disabled" geprüft

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: ak323 am 30 Januar 2017, 09:42:31
Hallo Stefan.
Basierend auf Deinem Modbus Modul (ältere Version ModbusSET) lese ich die Register meiner Waterkotte WP über RS485/RTU aus: https://forum.fhem.de/index.php/topic,52864.msg570369.html#msg570369 (https://forum.fhem.de/index.php/topic,52864.msg570369.html#msg570369)

Leider kann ich keine Register größer als 255 auslesen. Ich bekomme die im link angegebene Fehlermeldung. Ein anderer Nutzer des Moduls nutzt Modbus TCP und kann die höheren Register ohne Probleme auslesen... hast Du (oder jemand anders) vielleicht nen Tipp der mir weiterhilft !?

Danke. ak323
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 30 Januar 2017, 09:57:51
Zitat von: StefanStrobel am 29 Januar 2017, 10:06:31
Hallo,

anbei nochmal eine neue Version mit ein paar Neuen Features zum Testen.
Neu....
Hallo Stefan,

habe die neue Version seit gestern im Einsatz und bis jetzt läuft alles. Danke.
Jörg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 30 Januar 2017, 20:30:56
Hallo ak323,

die Fehlermeldung kommt vom Gerät und bedeutet, dass die Adresse nicht gültig bzw. nicht belegt ist.
Hast Du denn eine Anleitung, in der die belegten Register mit ihrer jeweiligen Bedeutung drinstehen?
Oder verwendest Du eventuell den falschen function code?
Vielleicht stehen die gesuchten Werte in input registern (function code 4) statt holding registern (function code 3)?
Oder es ist doch ein anderes Modell und hat eine geringfügig abweichende Registerbelegung.
Du könntest auch die neue Scan-Funktion ausprobieren um alle möglichen Register automatisch auszuprobieren. Ist weiter oben in diesem Thread beschrieben.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 01 Februar 2017, 18:01:52
Hallo Stefan,

bei mir läuft's ohne Probleme - Danke.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: cotecmania am 03 Februar 2017, 11:54:44
Hi,

beim Befehl set LS2024B scanModbusObjects h100-120
bekomme ich
Unknown argument scanModbusObjects ...

ModuleVersion : 3.5.12 - 06.01.2017

Was mache ich falsch ?

Joe
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 03 Februar 2017, 19:42:35
hast Du die eingebauten set-Befehle mit attr LS2024B enableControlSet 1 aktiviert?

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: cotecmania am 06 Februar 2017, 21:04:20
Ja das wars.
Hatte ich in der Commandref nicht gesehen, bzw. geht dort etwas unter im text ...
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 10 März 2017, 21:22:32
Hallo Stefan,

1. im SVN-Repository (fhem - Revision 13662: /trunk/fhem/FHEM) ist noch die Modbus-Version von Anfang Januar drin. Ist das Absicht?
2. Bei Deiner Version vom 29.01. geht bei ModbusAttr das "disable" nicht mehr. Es kommt folgende Meldung:
Zitatattribute disable is only valid for physical Modbus devices or Modbus TCP - please use this attribute for your physical IO device ModbusLine1

Sorry, das habe ich bei meinen Tests vermutlich übersehen.


Danke und viele Grüße,

Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 März 2017, 16:19:27
Hallo Allgaeuer,

ich habe die neue Version noch nicht eingecheckt.
Vorher sollte ich auch das mit dem disable noch in Ordnung bringen ;-)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mani am 12 März 2017, 17:13:45
Hallo Stefan,
habe eine Jablatron 100 Alarmanlage für die gibt es eine RS 485 Schnittstelle... kann dein Modul damit kommunizieren?
Danke MFG  Mani
AUSSCHNITT BESCHREIBUNG
"(Die Kommunikation über die serielle Schnittstelle RS-485 erfolgt
in ASCII mit einer Geschwindigkeit von 9600 baud, 8N1 (8 Datenbits,
ohne Parität, 1 Stop-Bit). Die Steuerung erfolgt über Befehle, die Syntax
ist immer wie folgt: Code Leerstelle Befehl.
Liste der Befehle:
VER Anzeige der Version des Moduls JA-121T.
HELP Anzeige der Hilfe (mögliche Befehle und Syntax-
Beispiele).
SET Scharfschalten der Bereiche: Hinter dem Befehl können
Nummern der Bereiche eingegeben werden, die scharf
geschaltet werden sollen - diese werden jeweils durch
Leerstelle getrennt. Wenn keine Spezifikation erfolgt,
wird alles scharf geschaltet.
SETP Teilscharfschalten: Hinter dem Befehl können Nummern
der Bereiche eingegeben werden, die teilscharf
geschaltet werden sollen - diese werden jeweils durch
Leerstelle getrennt. Wenn keine Spezifikation erfolgt,
werden alle Bereiche teilscharf geschaltet, die Freigabe
für das Teilscharfschalten haben.
UNSET Unscharfschalten der Bereiche: Hinter dem Befehl
können Nummern der Bereiche eingegeben werden, die
unscharf geschaltet werden sollen - diese werden jeweils
durch Leerstelle getrennt. Wenn keine Spezifikation
erfolgt, wird alles unscharf geschaltet."
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 März 2017, 17:18:13
Hallo Mani,

das ist kein Modbus sondern ein eigenes Protokoll.
Das Modbus-Modul passt hier nicht.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 12 März 2017, 18:24:37
Hallo Stefan,

Kein Problem. Ich hatte Update auf 5.8 gemacht und nicht gemerkt, dass noch das "alte" Modul drin war.
Ich bin mir nicht sicher, ob "disable" bei der 5.7 noch funktioniert hat.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 März 2017, 19:46:39
Hier ist eine neue Version zum Testen.
Das mit disable sollte wieder funktionieren und wenn es sonst keine neuen Probleme macht, werde ich die Version einchecken.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mani am 13 März 2017, 07:44:55
Hallo Stefan,

Kennst du ein Modul in Fhem was das können könnte?
Mfg Mani
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 13 März 2017, 11:01:20
@mani
Einmal nach emcd-device suchen.
Pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Allgaeuer am 13 März 2017, 20:09:49
Hallo Stefan,

sowohl "disable" als auch die Events bei "Statistics_Timeouts" habe ich explizit getestet und funktionieren. Aus meiner Sicht kannst Du die Module einchecken.

Danke und schönen Abend.

Gruß Allgäuer
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: mani am 14 März 2017, 07:23:41
@pejonp
Danke Mfg
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 14 März 2017, 09:50:33
Hallo Stefan!

Ich habe die beiden Dateien eingespielt.
Alles läuft gut. Lüftung Thermostat und Zähler.
Ich hab alle alten Logs gelöscht. Nach dem Neustart von Fhem steht im Log folgendes.
2017.03.14 09:41:23 3: VR400Mod: timeout waiting for fc 3 from id 1, (h601 / REG_FILTER_DAYS), Request was 01030259000155a1, Buffer contains 6480
2017.03.14 09:41:25 3: VR400Mod: timeout waiting for fc 3 from id 1, (h213 / T_ZuI), Request was 010300d500059431

Hat das was zu bedeuten? Es läuft alles.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 14 März 2017, 18:48:42
Hallo Wolfgang,

das bedeutet dass ein Gerät nicht innerhalb des Timeouts geantwortet hat. Das kommt schon mal vor. Früher wurde das nur mit Loglevel 4 protokolliert. Inzwischen auf Level 3, es sei denn Du setzt das Attribut timeoutLogLevel. Deshalb siehst Du das jetzt.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Fritz Muster am 07 April 2017, 22:01:56
Hallo in die Runde,

ich habe mir für meine Wärmepumpe ein eigenes Zusatzmodul geschrieben. Die Installation vom Basismodul und Zusatzmodul funktionieren soweit. Nur bekomme ich keine Register Werte in mein Modul. Im logfile steht folgendes

2017.04.07 21:59:23 3: MdbEcodan: timeout waiting for fc 4 from id 1, (i164 / WMZ_Monat_der_letzen_Messung), Request was 010400a400023028
2017.04.07 21:59:23 4: MdbEcodan: HandleSendQueue sends fc 4 to id 1, tid 138 for Temperatur_Kaeltemittel (i57), len 2, device mdbsWaermepumpe (RTU), pdu 0400390002, V 3.5.21 - 12.3.2017
2017.04.07 21:59:23 5: SW: 010400390002a1c6
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate called
2017.04.07 21:59:24 4: mdbsWaermepumpe: update timer modified: will call GetUpdate in 60.0 seconds at 2017-04-07 22:00:24 - Interval 60
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate objects from attributes:
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate full object list: d16 d21 d7 h25 h27 h28 h31 h33 h37 h38 h39 h4 h40 h5 h55 h6 h73 i163 i164 i165 i166 i26 i3 i5 i57 i59 i61 i63 i65 i80
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check d16 => Trinkwasserbereitung, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Trinkwasserbereitung
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check d21 => Speicherladepumpe, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Speicherladepumpe
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check d7 => Heizkreispumpe, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Heizkreispumpe
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h25 => Anlage_An/Aus, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Anlage_An/Aus
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h27 => Betriebsart_Brauchwasser, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Betriebsart_Brauchwasser
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h28 => Heizung_Modus, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Heizung_Modus
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h31 => Trinkwasser_Temperatur, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Trinkwasser_Temperatur
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h33 => Vorlauftemperatur_Soll, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Vorlauftemperatur_Soll
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h37 => Schaltung_Brauchwasser, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Schaltung_Brauchwasser
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h38 => An/Abwesend, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request An/Abwesend
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h39 => Brauchwasser_Status, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Brauchwasser_Status
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h4 => Slave_ID, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Slave_ID
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h40 => Heizkreis_Status, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Heizkreis_Status
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h5 => Baud_Rate, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Baud_Rate
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h55 => Vorlauftemperatur1_Soll, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Vorlauftemperatur1_Soll
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h6 => Parity_Typ, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Parity_Typ
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check h73 => Frequenz_Heizungspumpe, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Frequenz_Heizungspumpe
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i163 => WMZ_Jahr_der_letzen_Messung, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request WMZ_Jahr_der_letzen_Messung
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i164 => WMZ_Monat_der_letzen_Messung, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request WMZ_Monat_der_letzen_Messung
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i165 => WMZ_Tag_der_letzen_Messung, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request WMZ_Tag_der_letzen_Messung
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i166 => Waermemenge, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Waermemenge
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i26 => Abtauung, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Abtauung
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i3 => Firmware_Version, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Firmware_Version
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i5 => Fehler_Code, poll = once, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Fehler_Code
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i57 => Temperatur_Kaeltemittel, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Temperatur_Kaeltemittel
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i59 => Aussentemperatur, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Aussentemperatur
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i61 => Vorlauftemperatur, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Vorlauftemperatur
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i63 => Ruecklauftemperatur, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Ruecklauftemperatur
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i65 => Trinkwassertemperatur, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Trinkwassertemperatur
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate check i80 => Betriebsstunden_Heizungspumpe, poll = 1, last = 0
2017.04.07 21:59:24 4: mdbsWaermepumpe: GetUpdate will request Betriebsstunden_Heizungspumpe
2017.04.07 21:59:24 5: mdbsWaermepumpe: GetUpdate tries to combine read commands
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Trinkwasserbereitung / d16 with Speicherladepumpe / d21, span 6 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Speicherladepumpe / d21 with Heizkreispumpe / d7, span -13 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Heizkreispumpe / d7 with Anlage_An/Aus / h25, span 20 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Anlage_An/Aus / h25 with Betriebsart_Brauchwasser / h27, span 4 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Betriebsart_Brauchwasser / h27 with Heizung_Modus / h28, span 3 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Heizung_Modus / h28 with Trinkwasser_Temperatur / h31, span 5 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Trinkwasser_Temperatur / h31 with Vorlauftemperatur_Soll / h33, span 4 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Vorlauftemperatur_Soll / h33 with Schaltung_Brauchwasser / h37, span 6 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Schaltung_Brauchwasser / h37 with An/Abwesend / h38, span 3 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine An/Abwesend / h38 with Brauchwasser_Status / h39, span 3 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Brauchwasser_Status / h39 with Slave_ID / h4, span -33 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Slave_ID / h4 with Heizkreis_Status / h40, span 38 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Heizkreis_Status / h40 with Baud_Rate / h5, span -33 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Baud_Rate / h5 with Vorlauftemperatur1_Soll / h55, span 52 > max 1
2017.04.07 21:59:24 5: mdbsWaermepumpe: No Combine Vorlauftemperatur1_Soll / h55 with Parity_Typ / h6, span -47 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Parity_Typ / h6 with Frequenz_Heizungspumpe / h73, span 69 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Frequenz_Heizungspumpe / h73 with WMZ_Jahr_der_letzen_Messung / i163, span 92 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine WMZ_Jahr_der_letzen_Messung / i163 with WMZ_Monat_der_letzen_Messung / i164, span 3 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine WMZ_Monat_der_letzen_Messung / i164 with WMZ_Tag_der_letzen_Messung / i165, span 3 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine WMZ_Tag_der_letzen_Messung / i165 with Waermemenge / i166, span 3 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Waermemenge / i166 with Abtauung / i26, span -138 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Abtauung / i26 with Firmware_Version / i3, span -21 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Firmware_Version / i3 with Fehler_Code / i5, span 4 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Fehler_Code / i5 with Temperatur_Kaeltemittel / i57, span 54 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Temperatur_Kaeltemittel / i57 with Aussentemperatur / i59, span 4 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Aussentemperatur / i59 with Vorlauftemperatur / i61, span 4 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Vorlauftemperatur / i61 with Ruecklauftemperatur / i63, span 4 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Ruecklauftemperatur / i63 with Trinkwassertemperatur / i65, span 4 > max 1
2017.04.07 21:59:25 5: mdbsWaermepumpe: No Combine Trinkwassertemperatur / i65 with Betriebsstunden_Heizungspumpe / i80, span 17 > max 1
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i59, objLen 2 / reqLen 2 to id 1, op read, qlen 5
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i59 (Aussentemperatur), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h37, objLen 2 / reqLen 2 to id 1, op read, qlen 6
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h37 (Schaltung_Brauchwasser), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h38, objLen 2 / reqLen 2 to id 1, op read, qlen 7
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h38 (An/Abwesend), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with d16, objLen 1 / reqLen 1 to id 1, op read, qlen 8
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 2 to 1, for d16 (Trinkwasserbereitung), reqLen 1
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h28, objLen 2 / reqLen 2 to id 1, op read, qlen 9
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h28 (Heizung_Modus), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i5, objLen 2 / reqLen 2 to id 1, op read, qlen 10
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i5 (Fehler_Code), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h5, objLen 2 / reqLen 2 to id 1, op read, qlen 11
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h5 (Baud_Rate), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i3, objLen 2 / reqLen 2 to id 1, op read, qlen 12
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i3 (Firmware_Version), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h73, objLen 2 / reqLen 2 to id 1, op read, qlen 13
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h73 (Frequenz_Heizungspumpe), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h6, objLen 2 / reqLen 2 to id 1, op read, qlen 14
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h6 (Parity_Typ), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i26, objLen 2 / reqLen 2 to id 1, op read, qlen 15
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i26 (Abtauung), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h25, objLen 2 / reqLen 2 to id 1, op read, qlen 16
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h25 (Anlage_An/Aus), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h55, objLen 2 / reqLen 2 to id 1, op read, qlen 17
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h55 (Vorlauftemperatur1_Soll), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i65, objLen 2 / reqLen 2 to id 1, op read, qlen 18
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i65 (Trinkwassertemperatur), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h39, objLen 2 / reqLen 2 to id 1, op read, qlen 19
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h39 (Brauchwasser_Status), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i80, objLen 2 / reqLen 2 to id 1, op read, qlen 20
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i80 (Betriebsstunden_Heizungspumpe), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i63, objLen 2 / reqLen 2 to id 1, op read, qlen 21
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i63 (Ruecklauftemperatur), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h33, objLen 2 / reqLen 2 to id 1, op read, qlen 22
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h33 (Vorlauftemperatur_Soll), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h40, objLen 2 / reqLen 2 to id 1, op read, qlen 23
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h40 (Heizkreis_Status), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h4, objLen 2 / reqLen 2 to id 1, op read, qlen 24
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h4 (Slave_ID), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h27, objLen 2 / reqLen 2 to id 1, op read, qlen 25
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h27 (Betriebsart_Brauchwasser), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with d21, objLen 1 / reqLen 1 to id 1, op read, qlen 26
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 2 to 1, for d21 (Speicherladepumpe), reqLen 1
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i166, objLen 2 / reqLen 2 to id 1, op read, qlen 27
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i166 (Waermemenge), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i164, objLen 2 / reqLen 2 to id 1, op read, qlen 28
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i164 (WMZ_Monat_der_letzen_Messung), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i57, objLen 2 / reqLen 2 to id 1, op read, qlen 29
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i57 (Temperatur_Kaeltemittel), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with d7, objLen 1 / reqLen 1 to id 1, op read, qlen 30
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 2 to 1, for d7 (Heizkreispumpe), reqLen 1
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i61, objLen 2 / reqLen 2 to id 1, op read, qlen 31
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i61 (Vorlauftemperatur), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i165, objLen 2 / reqLen 2 to id 1, op read, qlen 32
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i165 (WMZ_Tag_der_letzen_Messung), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with i163, objLen 2 / reqLen 2 to id 1, op read, qlen 33
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 4 to 1, for i163 (WMZ_Jahr_der_letzen_Messung), reqLen 2
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send called with h31, objLen 2 / reqLen 2 to id 1, op read, qlen 34
2017.04.07 21:59:25 4: mdbsWaermepumpe: Send queues fc 3 to 1, for h31 (Trinkwasser_Temperatur), reqLen 2
2017.04.07 21:59:25 3: MdbEcodan: timeout waiting for fc 4 from id 1, (i57 / Temperatur_Kaeltemittel), Request was 010400390002a1c6
2017.04.07 21:59:25 4: MdbEcodan: HandleSendQueue sends fc 2 to id 1, tid 133 for Heizkreispumpe (d7), len 1, device mdbsWaermepumpe (RTU), pdu 0200070001, V 3.5.21 - 12.3.2017


Ein List meines Moduls sieht so aus

Internals:
   DEF        1 60
   DEST
   INTERVAL   60
   IODev      MdbEcodan
   MODBUSID   1
   ModuleVersion 3.5.21 - 12.3.2017
   NAME       mdbsWaermepumpe
   NOTIFYDEV  global
   NR         181
   NTFY_ORDER 50-mdbsWaermepumpe
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1491595164.7341
   TRIGGERTIME_FMT 2017-04-07 21:59:24
   TYPE       ModbusEcodanWP
   Helper:
     lsend      1491595149.6677
   Lastread:
Attributes:
   IODev      MdbEcodan
   room       KG_Heizungsraum
   userattr   1 IODev verbose
   verbose    5


Das Listing vom Modbus Modul so

Internals:
   BUSY       1
   DEF        /dev/serial/by-id//usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0@9600
   DeviceName /dev/serial/by-id//usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0@9600
   FD         26
   LASTOPEN   1491594723.91615
   NAME       MdbEcodan
   NR         172
   NTFY_ORDER 50-MdbEcodan
   PARTIAL
   REQUESTHEX 01030004000285ca
   STATE      opened
   TYPE       Modbus
   devioLoglevel 3
   nextOpenDelay 60
   QUEUE:
     HASH(0x362d420)
     HASH(0x362d558)
     HASH(0x362d690)
     HASH(0x362d7c8)
     HASH(0x362d900)
     HASH(0x362da38)
     HASH(0x362db70)
     HASH(0x362dca8)
     HASH(0x362dde0)
     HASH(0x362df18)
   Readings:
     2017-04-07 21:52:03   state           opened
   Request:
     ADR        4
     FCODE      3
     FRAME      ��
     LEN        2
     MODBUSID   1
     OPERATION  read
     PROTOCOL   RTU
     READING    Slave_ID
     TID        75
     TYPE       h
     VALUE      0
     Devhash:
       DEF        1 60
       DEST
       INTERVAL   60
       IODev      MdbEcodan
       MODBUSID   1
       ModuleVersion 3.5.21 - 12.3.2017
       NAME       mdbsWaermepumpe
       NOTIFYDEV  global
       NR         181
       NTFY_ORDER 50-mdbsWaermepumpe
       PROTOCOL   RTU
       STATE      opened
       TRIGGERTIME 1491595104.7227
       TRIGGERTIME_FMT 2017-04-07 21:58:24
       TYPE       ModbusEcodanWP
       Helper:
         lsend      1491595092.4526
       Lastread:
   Defptr:
     1:
   Helper:
     buffer
     lid        1
     lsend      1491595092.4526
Attributes:
   room       System
   verbose    5


Mein Modul und die Modbus Beschreibung der Wärmepumpe habe ich angehängt. Hat jemand einen Tipp für mich?

Grüße Fritz
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 08 April 2017, 10:46:11
Hallo,

hast Du denn schon getestet, ob die Kommunikation überhaupt funktioniert?
(z.B. mit einem einfachen Modbus-Client)
Stimmt die Modbus-Id, die seriellen Kommunikationsparameter, steht das Gerät auch auf Modbus, etc.?
Es kann auch am Adapter oder der Verkabelung etc. liegen.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 10 April 2017, 19:58:48
Hallo Stefan!

Hab wieder mal ein Problem mit einem Thermostat. Das blöde Ding zeigt alles x2 an.
Die Anzeige hab ich /2 dividiert. Passt. Aber das senden der Temperatur bekomme ich nicht hin. Hier weis ich nicht wie ich es so hinsenden soll das die angezeigte Temperatur auch eingestellt wird.
In meine Bsp. wird immer statt z.b. 20Grad nur 10 Grad gesendet.
#ist Temperatur
define Temp_Ist ModbusAttr 1 5
attr Temp_Ist IODev beca
attr Temp_Ist dev-h-combine 5
attr Temp_Ist dev-h-defPoll 1
attr Temp_Ist obj-h3-format %.1f Grad
attr Temp_Ist obj-h3-expr $val/2
attr Temp_Ist obj-h3-reading Temperatur
attr Temp_Ist room Modbus
attr Temp_Ist stateFormat Temperatur


#soll Temperatur
define Temp_Soll ModbusAttr 1 5
attr Temp_Soll IODev beca
attr Temp_Soll dev-h-combine 5
attr Temp_Soll dev-h-defPoll 1
attr Temp_Soll dev-h-defUnpack s>
attr Temp_Soll obj-h4-format %.1f Grad
attr Temp_Soll obj-h4-hint slider,5,0.5,25,1
attr Temp_Soll obj-h4-reading Temperatur
attr Temp_Soll obj-h4-set 1
attr Temp_Soll room Modbus
attr Temp_Soll stateFormat Temperatur
attr Temp_Soll webCmd Temperatur


Wie könnte ich bitte 20 Grad senden.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 10 April 2017, 22:52:36
Hallo Wolfgang,

Schau Dir mal setExpr an.

Gruß
     Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 11 April 2017, 22:20:23
Hallo Stefan

attr Temp_Soll obj-h4-setexpr $val*2

Bringt keinen Erfolg. Bewirkt nur das der Slider doppelt anzeigt. Es muss der Slider normal zum schieben sein aber der übermittelte Wert verdoppelt werden.

Lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 April 2017, 14:52:05
Hallo Wolfgang,

So wie ich das verstehe speichert Dein Gerät die Soll-Temperatur nicht als Float-Wert sondern als verdoppelter Integer-Wert. Dadurch wird eine Auflösung von 0,5 Grad erreicht.
Bei der Anzeige musst Du daher wie bei h3 auch mit obj-h4-expr $val/2 den gespeicherten Wert halbieren und beim Schreiben musst du den echten Wert mit obj-h4-setexpr $val*2 verdoppeln.

So sollte es klappen.
Falls es nicht klappt, hilft evt ein Blick ins Log mit verbose 5

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 13 April 2017, 22:09:14
Hallo Stefan!

Ich bin nun so weit das ich die Temperatur steuern kann aber leider spinnt  der Slider. Egal welche Temperatur ich einstelle der Slider springt immer auf den doppelten Wert oder auf 5Grad. Wenn ich
attr Temp_Soll obj-h4-hint 5,10,15,16,17,18,19,20,21,22,23,24,25
attr Temp_Soll obj-h4-setexpr $val*2
verwende dann gehts. Aber ich hätte gerne einen Slider.

Hier mein fhem.cfg und der log mit verbose 5. Hatte mal ein Ähnliches Problem da habe ich es mit defUnpack .... geschafft. Aber diesmal bringt das nix.
Danke für die Mühe.

lg
Wolfgang

#Thermostat China beca

define beca Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1

#ist Temperatur
define Temp_Ist ModbusAttr 1 5
attr Temp_Ist IODev beca
attr Temp_Ist dev-h-combine 5
attr Temp_Ist dev-h-defPoll 1
attr Temp_Ist group Heizung
attr Temp_Ist obj-h3-expr $val/2
attr Temp_Ist obj-h3-format %.1f Grad
attr Temp_Ist obj-h3-reading Temperatur
attr Temp_Ist room Alexa,Modbus
attr Temp_Ist stateFormat Temperatur


#soll Temperatur lesen
define Temp_sollIst ModbusAttr 1 5
attr Temp_sollIst IODev beca
attr Temp_sollIst dev-h-combine 5
attr Temp_sollIst dev-h-defPoll 1
attr Temp_sollIst group Heizung
attr Temp_sollIst obj-h4-expr $val/2
attr Temp_sollIst obj-h4-format %.1f Grad
attr Temp_sollIst obj-h4-reading Temperatur
attr Temp_sollIst room Alexa,Modbus
attr Temp_sollIst stateFormat Temperatur

#soll Temperatur schreiben
define Temp_Soll ModbusAttr 1 5
attr Temp_Soll IODev beca
attr Temp_Soll dev-h-combine 5
attr Temp_Soll dev-h-defPoll 1
attr Temp_Soll group Heizung
attr Temp_Soll obj-h4-format %.1f Grad
attr Temp_Soll obj-h4-reading Temperatur
attr Temp_Soll obj-h4-set 1
attr Temp_Soll room Alexa,Modbus
attr Temp_Soll stateFormat {sprintf("%.0f", ReadingsNum($name,"Temperatur",1) / 2)}
attr Temp_Soll webCmd Temperatur
attr Temp_Soll obj-h4-hint slider,5,0.5,25,1
attr Temp_Soll obj-h4-setexpr $val*2


2017.04.13 21:52:06 5: Temp_Ist: GetUpdate called
2017.04.13 21:52:06 4: Temp_Ist: update timer modified: will call GetUpdate in 5.0 seconds at 2017-04-13 21:52:11 - Interval 5
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate objects from attributes: h3
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate full object list: h3
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate check h3 => Temperatur, poll = 1, last = 1492113121.22767
2017.04.13 21:52:06 4: Temp_Ist: GetUpdate will request Temperatur
2017.04.13 21:52:06 5: Temp_Ist: GetUpdate tries to combine read commands
2017.04.13 21:52:06 4: Temp_Ist: Send called with h3, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.04.13 21:52:06 4: Temp_Ist: Send queues fc 3 to 1, for h3 (Temperatur), reqLen 1
2017.04.13 21:52:06 4: beca: HandleSendQueue sends fc 3 to id 1, tid 85 for Temperatur (h3), len 1, device Temp_Ist (RTU), pdu 0300030001, V 3.5.21 - 12.3.2017
2017.04.13 21:52:06 5: SW: 010300030001740a
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate called
2017.04.13 21:52:06 4: Temp_Soll: update timer modified: will call GetUpdate in 5.0 seconds at 2017-04-13 21:52:11 - Interval 5
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate objects from attributes: h4
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate full object list: h4
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate check h4 => Temperatur, poll = 1, last = 1492113121.25388
2017.04.13 21:52:06 4: Temp_Soll: GetUpdate will request Temperatur
2017.04.13 21:52:06 5: Temp_Soll: GetUpdate tries to combine read commands
2017.04.13 21:52:06 4: Temp_Soll: Send called with h4, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.04.13 21:52:06 4: Temp_Soll: Send queues fc 3 to 1, for h4 (Temperatur), reqLen 1
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate called
2017.04.13 21:52:06 4: Temp_sollIst: update timer modified: will call GetUpdate in 5.0 seconds at 2017-04-13 21:52:11 - Interval 5
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate objects from attributes: h4
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate full object list: h4
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate check h4 => Temperatur, poll = 1, last = 1492113121.28053
2017.04.13 21:52:06 4: Temp_sollIst: GetUpdate will request Temperatur
2017.04.13 21:52:06 5: Temp_sollIst: GetUpdate tries to combine read commands
2017.04.13 21:52:06 4: Temp_sollIst: Send called with h4, objLen 1 / reqLen 1 to id 1, op read, qlen 1
2017.04.13 21:52:06 4: Temp_sollIst: Send queues fc 3 to 1, for h4 (Temperatur), reqLen 1
2017.04.13 21:52:06 5: beca: raw read: 0103020030b850
2017.04.13 21:52:06 5: beca: ParseFrames got: 0103020030b850
2017.04.13 21:52:06 4: beca: ParseFrames got fcode 3 from 1, values 0030HeaderLen 2, ActualLen 2, request was for h3 (Temperatur), len 1 for module Temp_Ist
2017.04.13 21:52:06 5: Temp_Ist: ParseObj called with 0030 and start 3, op read
2017.04.13 21:52:06 5: Temp_Ist: ParseObj ObjInfo for h3: reading=Temperatur, unpack=n, expr=$val/2, format=%.1f Grad, map=
2017.04.13 21:52:06 5: Temp_Ist: ParseObj unpacked 0030 with n to hex 3438 (48)
2017.04.13 21:52:06 5: Temp_Ist: ParseObj evaluates expr for Temperatur, val=48, expr $val/2
2017.04.13 21:52:06 5: Temp_Ist: ParseObj eval result is 24
2017.04.13 21:52:06 5: Temp_Ist: ParseObj for Temperatur does sprintf with format %.1f Grad value is 24
2017.04.13 21:52:06 5: Temp_Ist: ParseObj for Temperatur sprintf result is 24.0 Grad
2017.04.13 21:52:06 4: Temp_Ist: ParseObj for Temperatur assigns 24.0 Grad
2017.04.13 21:52:06 5: Starting notify loop for Temp_Ist, 1 event(s), first is Temperatur: 24.0 Grad
2017.04.13 21:52:06 5: End notify loop for Temp_Ist
2017.04.13 21:52:06 5: beca: ParseFrames got 1 readings from ParseObj
2017.04.13 21:52:06 4: beca: HandleSendQueue sends fc 3 to id 1, tid 115 for Temperatur (h4), len 1, device Temp_Soll (RTU), pdu 0300040001, V 3.5.21 - 12.3.2017
2017.04.13 21:52:06 5: SW: 010300040001c5cb
2017.04.13 21:52:06 5: beca: raw read: 01030200123849
2017.04.13 21:52:06 5: beca: ParseFrames got: 01030200123849
2017.04.13 21:52:06 4: beca: ParseFrames got fcode 3 from 1, values 0012HeaderLen 2, ActualLen 2, request was for h4 (Temperatur), len 1 for module Temp_Soll
2017.04.13 21:52:06 5: Temp_Soll: ParseObj called with 0012 and start 4, op read
2017.04.13 21:52:06 5: Temp_Soll: ParseObj ObjInfo for h4: reading=Temperatur, unpack=S>, expr=, format=%.1f Grad, map=
2017.04.13 21:52:06 5: Temp_Soll: ParseObj unpacked 0012 with S> to hex 3138 (18)
2017.04.13 21:52:06 5: Temp_Soll: ParseObj for Temperatur does sprintf with format %.1f Grad value is 18
2017.04.13 21:52:06 5: Temp_Soll: ParseObj for Temperatur sprintf result is 18.0 Grad
2017.04.13 21:52:06 4: Temp_Soll: ParseObj for Temperatur assigns 18.0 Grad
2017.04.13 21:52:06 5: Starting notify loop for Temp_Soll, 1 event(s), first is Temperatur: 18.0 Grad
2017.04.13 21:52:06 5: End notify loop for Temp_Soll
2017.04.13 21:52:06 5: beca: ParseFrames got 1 readings from ParseObj
2017.04.13 21:52:06 4: beca: HandleSendQueue sends fc 3 to id 1, tid 201 for Temperatur (h4), len 1, device Temp_sollIst (RTU), pdu 0300040001, V 3.5.21 - 12.3.2017
2017.04.13 21:52:06 5: SW: 010300040001c5cb
2017.04.13 21:52:06 5: beca: raw read: 01030200123849
2017.04.13 21:52:06 5: beca: ParseFrames got: 01030200123849
2017.04.13 21:52:06 4: beca: ParseFrames got fcode 3 from 1, values 0012HeaderLen 2, ActualLen 2, request was for h4 (Temperatur), len 1 for module Temp_sollIst
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj called with 0012 and start 4, op read
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj ObjInfo for h4: reading=Temperatur, unpack=n, expr=$val/2, format=%.1f Grad, map=
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj unpacked 0012 with n to hex 3138 (18)
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj evaluates expr for Temperatur, val=18, expr $val/2
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj eval result is 9
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj for Temperatur does sprintf with format %.1f Grad value is 9
2017.04.13 21:52:06 5: Temp_sollIst: ParseObj for Temperatur sprintf result is 9.0 Grad
2017.04.13 21:52:06 4: Temp_sollIst: ParseObj for Temperatur assigns 9.0 Grad
2017.04.13 21:52:06 5: Starting notify loop for Temp_sollIst, 1 event(s), first is Temperatur: 9.0 Grad
2017.04.13 21:52:06 5: End notify loop for Temp_sollIst
2017.04.13 21:52:06 5: beca: ParseFrames got 1 readings from ParseObj
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 April 2017, 22:58:12
Hallo Wolfgang,

Mit der Aufteilung auf mehrere Fhem-Devices tust Du Dir keinen Gefallen. Dass das Holding-Register 4 dann auch noch von zwei Devices verwendet wird, macht die Sache noch unschöner.
Das Hauptproblem wird aber vermutlich das fehlende obj-h4-expr im Device Temp_Soll sein.
Der Slider verwendet für die Anzeige ein Reading. Das wird beim automatischen Lesen nach dem Schreiben erzeugt. Da fehlt dann aber die Division durch 2.
Einfacher, weniger redundant und effizienter wäre es wenn alles in einem gemeinsamen Device stehen würde.

Gruß
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 13 April 2017, 23:31:34
Hallo Stefan!

Geschaft Danke habs jetzt total umgebaut.
#ist Temperatur
define Temp_Ist ModbusAttr 1 5
attr Temp_Ist userattr IODev dev-h-combine dev-h-defPoll obj-h3-expr obj-h3-format obj-h3-reading stateFormat
attr Temp_Ist IODev beca
attr Temp_Ist dev-h-combine 5
attr Temp_Ist dev-h-defPoll 1
attr Temp_Ist group Heizung
attr Temp_Ist obj-h3-expr $val/2
attr Temp_Ist obj-h3-format %.1f Grad
attr Temp_Ist obj-h3-reading Temperatur
attr Temp_Ist room Alexa,Modbus
attr Temp_Ist stateFormat Temperatur


#soll Temperatur
define Temp_Soll ModbusAttr 1 5
attr Temp_Soll IODev beca
attr Temp_Soll dev-h-combine 5
attr Temp_Soll dev-h-defPoll 1
attr Temp_Soll group Heizung
attr Temp_Soll obj-h4-expr $val/2
attr Temp_Soll obj-h4-format %.1f Grad
attr Temp_Soll obj-h4-reading Temperatur
attr Temp_Soll room Alexa,Modbus
attr Temp_Soll obj-h4-hint slider,5,0.5,25,1
attr Temp_Soll obj-h4-set 1
attr Temp_Soll obj-h4-setexpr $val*2
attr Temp_Soll stateFormat {sprintf("%.1f", ReadingsNum($name,"Temperatur",1))}
attr Temp_Soll webCmd Temperatur



lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Tomsc1984 am 18 April 2017, 14:32:31
Hallo Stefan,

ich habe jetzt schon viel gelesen, aber komme einfach nicht weiter.  Ich habe ein Gerät an einem RS485 auf Wifi Adapter hängen. Wenn ich die IP in deinem Modul eingebe, bekomme ich den Satus connectet. Aber ich bekomme keinerlei Werte. Kannst du mir dabei helfen? Habe ich das Modul vielleicht falsch installiert? Es Handelt sich um pdf http://www.ecs-online.org/media/content/Bedienungsanleitung_greenController_de.pdf (http://www.ecs-online.org/media/content/Bedienungsanleitung_greenController_de.pdf). Wäre nett, denn ich komme absolut nicht weiter. Installiert habe ich fhem auf einem Raspi 3 . Version 5.8

Gruß Thomas
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 19 April 2017, 18:23:33
Hallo Thomas,

der Status "opened" bedeutet nur dass die lokale serielle Schnittstelle geöffnet ist. Ich vermute Du meinst "opened" oder?
Leider hat das keine Aussagekraft zur Verbindung mit dem abzufragenden Gerät. Es kann also sein, dass Baudrate, Parity etc. falsch sind oder dass die Modbus-ID nicht stimmt oder dass ein Problem bei der Verkabelung existiert o.ä.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 23 April 2017, 16:00:40
Hier eine neue Version für die Helios-Nutzer.
es gibt ein neues Attribut mit Namen nonPrioritizedSet. Wenn das auf 1 steht, dann wird der Modbus-Request für einen Set-Befehl nicht mehr priorisiert sondern hinten an die Request-Queue angehängt. Fhem blockiert damit auch bei einem Set und dem anschließenden Lesen nicht.

Soweit ich es verstanden habe, wird bei der Helios Modbus in einer eher unschönen Form verwendet. Statt Objekte über einzelne Register anzusprechen, wird Register 1 mit einer Objektnummer beschrieben und der Wert kann danach wieder über ein Register 1 ausgelesen werden.

Um das asynchron tun zu können, könnte man mit dem neuen Attribut viele Sets schnell in die Queue stellen.
Aber Vorsicht: durch die asynchrone Abarbeitung steht nach dem Set der gelesene Wert evt. noch nicht zur Verfügung. Der kommt erst in Fhem an, wenn der entsprechende Request tatsächlich abgearbeitet wurde.
Um dann die Werte in einzelne Readings zu bekommen, könnte man für Register 1 eine expr basteln, die selbst Reading setzt.

z.B. mit

attr PWP obj-h777-expr {if ($inCheckEval) {readingsBulkUpdate($hash, 'testReading', 3);; Log3 $name, 5, 'set reading testReading in expr'};; return $val;;}


Man beachte die doppelten Semikolons bei der Eingabe über Fhemweb. Ein einfaches Semikolon würde sonst als Ende der Eingabe gewertet.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 25 April 2017, 13:32:33
Hallo,

Ich habe eine Frage zum Status von Zusatzmodulen.

Ich verwende momentan das 98_ModbusSDM630M.pm Zusatzmodul von Roger.

Sehe hier immer bei allen die ein Zusatzmodul im Einsatz haben den STATE auf opened, bei mir ist der STATE allerdings immer ???.

Wie kann der Status des Devices abhängig davon ob die Verbindung auch funktioniert gesetzt werden?

define configDatenbank weblink cmdList configdb_info:Info:configdb+info configdb_list:List:configdb+list
attr configDatenbank room Datenbanken
attr configdb deleteimported 1
attr configdb maxversions 3
attr configdb private 1
attr global userattr DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global logdir ./log
attr global logfile %L/fhem-%Y-%m-%d.log
attr global modpath .
attr global verbose 5
define Heizung VCONTROL300 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AL00AKYZ-if00-port0 ./FHEM/89_VCONTROL300.cfg 180 kw
attr Heizung room Heizung
define logDBlong DbLog /opt/fhem/logDBlong.conf .*:.*
attr logDBlong DbLogSelectionMode Include
attr logDBlong DbLogType Current/History
attr logDBlong room Datenbanken
define logDBshort DbLog /opt/fhem/logDBshort.conf .*:.*
attr logDBshort DbLogSelectionMode Include
attr logDBshort DbLogType Current/History
attr logDBshort room Datenbanken
define Logfile FileLog %L/fhem-%Y-%m-%d.log fakelog
define ModbusAdapter Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
define StromHeizung ModbusSDM630M 1 60
attr StromHeizung userattr IODev
attr StromHeizung IODev ModbusAdapter
define telnetPort telnet 7072 global
define web FHEMWEB 8083 global
attr web stylesheetPrefix dark



Lg,
Crispyduck
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 25 April 2017, 18:33:02
Hallo Crispyduck,

Bei Modulen, die selbst eine Verbindung öffnen, wird der Status typischerweise von den DevIO-Routinen von Fhem automatisch gesetzt. Beim Modbus-Modul ist das für Deinen "ModbusAdapter" der Fall. Auch wenn ein Gerät über Modbus-TCP kommuniziert, dann kommt der Status von DevIO.
Allerdings bedeutet ein "opened" hier auch nur dass die serielle Schnittstelle geöffnet ist. Ob am anderen Ende der Leitung auch jemand erreichbar ist, bleibt unklar.

In Deinem Fall geht Dein Fhem-Gerät "Stromheizung" über das Gerät "ModbusAdapter". Deshalb setzt niemand den Status.
Üblicherweise setzt man den Status nach Belieben mit dem Attribut stateFormat. Da könnte dann zum Beispiel eine Vorlauf-Temperatur drinstehen.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 25 April 2017, 19:44:08
Hallo Stefan,

Danke, das der Status von DevIo kommt habe ich mir nachdem ich deinen code mal genauer durchgesehen habe schon gedacht.
Habe den Status jetzt auch mit stateFormat gesetzt.

So bekomme ich aber nicht mit wenn die Verbindung gestört ist.

Timeout oder falsche Antwort wird ja vom Modul erkannt, könnte man den Status auch irgendwie abhängig vom erfolgreichen pollen machen?

Oder zumindest abhängig davon ob es in einem definierten Intervall updates eines Readings gibt?

Hatte Anfangs etwas Probleme mit meinem Bus, da ich es gut gemeint habe und auf meinen 10m CAT7 Kabel brav 120Ohm Abschlusswiderstände gesetzt habe.
Ohne diese geht jetzt alles ohne Probleme.  ;)

Lg,
Crispyduck
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 25 April 2017, 20:07:19
Hallo,

Readings haben ja einen Zeitstempel. Mit einem DoIF o.ä. könntest Du sicher den Status neu setzen wenn zu lange kein Update mehr gekommen ist.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 25 April 2017, 21:17:39
Will aufgrund der Daten zur Photovoltaik Eigenverbrauchspptimierung die Warmwasserbereitung triggern und auch die Temperatur anpassen. Werde da dann die aktualität der Readings überprüfen.

Da ich wohl auch nur ein paar Readings vom Stromzähler brauche werde ich entweder das Modul von Roger anpassen oder überhaupt mit ModbusAttr arbeiten.

Hast du eventuell schon mal daran gedacht oder spricht was dagegen die Konfiguration der Register statt mit Attribute n zu definieren in ein config file auszulagern?

Dann könnte man nicht benötigte einfach auskpmmentieren. Könnte man zwar auch in der fhem.cfg, geht aber nicht bei configdb und würde wohl auch sehr unübersichtlich werden.

Nutze das auch so beim 89_VCONTROL300.pm Modul und habe mir dies jetzt auch geändert damit es auch mit configdb funktioniert.

Ich habe bei mir FHEM auf einer, eventuell mal auf mehreren RPi2 laufen und configDB als auch DBLog auf einer NAS.
Idealerweise hätte ich die RPi2 gerne mal quasi "dumm" mit einer FHEM standardconfiguration mit RO Filesystem und den Rest in der DB.
Da wäre es super für alle Module/Devices wo es einen Haufen Adressen, Register,... gibt jeweils ein cfg File in der DB zu haben.

Ist mal so eine Idee die ich mir in den Kopf gesetzt habe.

Lg
Crispyduck
Titel: Logfile Meldungen mit eigenem Modbus Modul
Beitrag von: Fritz Muster am 26 April 2017, 09:18:30
Hallo Stefan,

ich habe mir für meine Wärmepumpe ein Modul geschrieben. https://forum.fhem.de/index.php/topic,69066.msg605457.html#msg605457 (https://forum.fhem.de/index.php/topic,69066.msg605457.html#msg605457).

Funktioniert alles soweit. Allerdings habe ich im Logfile sehr häufig die Meldung

Odd number of elements in hash assignment at ./FHEM/98_Modbus.pm line 584.

Hast Du eventuell eine Idee, was das sein kann?

Danke und Grüße

Fritz
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 26 April 2017, 10:47:28
Hallo,

hätte jetzt mal drauf getippt das bei map irgendwo einmal ein , oder : zu viel ist; habe dein Modul jetzt aber 3 mal durch geschaut und hab keinen Tippfehler gefunden.
Ist in einem verbose 5 log auch nicht ersichtlich wann und wo der Fehler kommt?

Lg,
Crispyduck
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Fritz Muster am 26 April 2017, 11:20:17
@Crispyduck

Danke für den Hinweis und Deine Mühe mein Modul "durchzuackern". Mit verbose 5 das log mal zu sichten bin ich mal wieder nicht drauf gekommen. Werde ich heute abend mal angehen.

Eine Idee was das sein könnte habe ich noch. Ich habe ein Register welches 4 Statis hat (AUS/EIN/Notlauf/Testlauf). Habe aber nur 2 davon gemappt (EIN/AUS) Im Modul sieht das so aus:

"h25" => {
name => "System On/Off", # internal name of this register in the hardware doc
reading => "Anlage_Status", # name of the reading for this value
set => 1, # can be set to 1 to allow writing this value with a Fhem set-command
min => 0, # input validation for set: min value
max => 1, # input validation for set: max value
map => "0:Aus, 1:Ein, 2:Notlauf, 3:Testlauf", # map to convert visible values to internal numbers (for reading and writing)
polldelay => "x12", # only poll this Value if last read is older than 12*Iteration, otherwiese getUpdate will skip it 10s x12 --> 2 min


Oder aber stört das Leerzeichen bei 1:Manuell Ein

map => "0:Auto, 1:Manuell Ein",

Grüße Fritz
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 26 April 2017, 13:17:46
Hallo,

Problem dürfte daher kommen das sich hier ein ungerades Ergebnis für den hash ergibt.

line 584:   my %map = split (/[,: ]+/, $map);

In der Expression ist wenn ich das richtig sehe auch ein Leerzeichen für die Trennung.

Würde mal alle Leerzeichen aus den map strings raus nehmen.

Lg,
Crispyduck
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 26 April 2017, 17:18:53
Hallo,

das Leerzeichen ist das Problem.
In HTTPMOD habe ich das schon so umgebaut, dass auch Leerzeichen funktionieren. Allerdings zieht sich das an ein paar Stellen durch. Es muss dann ja auch im Web-Frontend zu einem &nbsp werden etc.
Bei Gelegenheit kann ich das ins Modbus-Modul übernehmen.

Zum Thema Konfig-Datei:
Der größte Bereich der Modbus-Module ist ja ein Hash, der den Attributen von Modbus-Attr entspricht.
Ich habe schon mal überlegt eine Translate-Funktion zu schreiben, die aus den Attributen von ModbusAttr ein neues Modul erzeugt und umgekehrt. Bisher hat mir dafür aber die Zeit gefehlt und eigentlich ist es eine Spielerei :-)

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 26 April 2017, 19:16:02
Wow, habe ich das sogar richtig erkannt.  ;)

Ja eben, spricht was dagegen so ein Modul (welche dein Modbus.pm nutzt) zu bauen was sich den Hash für deviceinfo und parsinfo aus einer z.B. Strich-Komma separierten Datei zusammen bastelt?

So ein File könnte man dann recht "komfortabel" bearbeiten und nicht benötigte Register einfach aus kommentieren.

Werde wohl ohnehin bald etwas für meinen zukünftigen StecaGrid Wechselrichter basteln müssen und könnte mich dann mal daran versuchen.

Keine Ahnung ob das so geht wie ich mir das vorstelle und ob ich das auch hin bekomme, aber sollte doch prinzipiell gehen oder?

Lg,
Crispyduck
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 26 April 2017, 20:26:27
Hallo Crispyduck,

das könnte schon funktionieren, aber ob es am Ende praktisch ist kann ich Dir nicht sagen. Vermutlich wäre der Weg über ModbusAttr schon einfacher. Ggf. könntest Du ja aus Deiner Liste einfach attr-Befehle erzeugen.
Probier es doch einfach aus :-)
Wenn es nur um das Ausblenden von Readings / Objekten geht, dann kannst Du aber auch einfach das Pollen der nicht benötigten Objekte mit Attributen verhindern bzw. mit Attributen die Einträge aus parseInfo in einem Modul überschreiben ...
In der Regel verstehen die Module ja alle auch die Attribute von ModbusAttr. Die Attribute sind dabei "stärker" als parseInfo.
In der Doku für ModbusSET habe ich explizit auch die "poll-" Attribute erwähnt. Mit attr poll-ReadingName 0 soltest Du auch bei den anderen Modbus-Modulen ein Objekt unterdrücken können ...

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 26 April 2017, 21:33:09
Hallo Stefan,

Ich werde mich sobald ich etwas Zeit habe mal daran versuchen. Hoffe das mit meinen eigentlich nicht vorhandenen Programier und Perl kenntnissen auch was dabei raus kommt.  ;)
Ich würde gerne viele Attribute vermeiden da das vorallem in der configdb schnell unübersichtlich wird.

Naja, mal schauen was daraus wird. Spätestens wenn ich was habe melde ich mich wieder hier.  :)

Lg,
Crispyduck
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Fritz Muster am 28 April 2017, 09:01:06
Zitat von: StefanStrobel am 26 April 2017, 17:18:53
das Leerzeichen ist das Problem

Wollte noch mal kurz eine Rückmeldung geben. Nachdem ich die Leerzeichen in den Map Strings entfernt habe bekomme ich die Meldungen

Odd number of elements in hash assignment at ./FHEM/98_Modbus.pm line 584.

nicht mehr.  :)

Vielen Dank!
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: holle75 am 02 Mai 2017, 22:21:53
Zitat von: StefanStrobel am 19 Januar 2017, 18:23:14
Hallo,

die Timeouts wurden in einer früheren Version des Modbus-Moduls nur auf Loglevel 4 protokolliert und deshalb haben die meisten Leute das gar nicht bemerkt, wenn verbose für das Modbus-Gerät wie üblich auf 3 steht.
In der neuen Version wird es per Default auf Ebene 3 protokolliert und dann sieht man es, es sei denn man setzt das Attribut timeoutLogLevel für das physische Device auf 4 (scheint im obigen Log "modbus" zu sein).

Wenn solche Timeouts nur selten auftreten würde ich mir keine Gedanken machen. Wenn es aber ständig kommt, sollte man nach der Ursache der Timeouts suchen - nicht nach dem Attribut zum Verhindern des Log-Eintrags ;-)

Nach "Buffer contains" im Log wird angezeigt, ob schon etwas empfangen wurde.
0b03040002 ist eine Modbus-Antwort von ID 11 auf function code 3, bei der nur noch wenige Bytes am Ende fehlen. Das Gerät hat also durchaus geantwortet. Ich würde mal testen ob eine Erhöhung des Timeouts die Lage verbessert.

Gruss
    Stefan

Hallo Stefan, habe mein Problem hier https://forum.fhem.de/index.php/topic,50196.msg629258.html#msg629258 (https://forum.fhem.de/index.php/topic,50196.msg629258.html#msg629258) geschildert, will jetzt aber kein Doppelposting machen.

Mir gehts gerade (abgesehen davon, daß ich mich über Ideen zu dem ursprünglichen Problem an dieser Stelle freuen würde) um das

attr timeoutLogLevel

habe ich es falsch verstanden? .... finde keine Beschreibung dazu und wenn ich es einsetze, wird mir mitgeteilt, dass es nicht existiert. Hatte es zur Definition meines Eaton-Zählers gepackt.

Danke und Grüße

H.

Edit: Denken, probieren und dann merken, dass es wohl zum define vom "physischen Device", bei mir ein USB Adapter gehört. .... wobei meine Stromzähler ja auch was physisches haben.
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: crispyduck am 16 Mai 2017, 13:24:38
Hallo,

hatte nun endlich mal Zeit ein bisschen an meinem Modul "ModbusCFG" zu basteln welches die config aus einem csv File ließt.

Ich habe versucht so wenig wie möglich in mein Modul einzubauen und die Funktionen des Basis Modbus Moduls von Stefan zu nutzen.

Musste zwar ein eigenes define machen um den Parameter für das cfgfile zu bekommen, rufe aus diesem dann aber wieder ModbusLD_Define auf.

Das Modul verwendet FileRead, somit funktioniert es auch mit einem cfgfile in der configDB.

Die Werte im csv config File sind durch Semikolon getrennt und können eigentlich auch mit Excel bearbeitet werden.
Ich habe zum bearbeiten CSVed verwendet. Damit lässt es sich dann auch mit fixer Spaltenbreite abspeichern.
Vor dem bearbeiten mit Excel oder CSVed empfiehlt es sich die #comments aus dem File zu löschen.

Das config File im Anhang ist für einen SDM630M Stromzähler und basiert auf dem 98_ModbusSDM630M.pm Modul von Roger.

Ein define für das Modul sieht dann folgendermaßen aus:

define Sgtromzähler ModbusCFG ./FHEM/98_ModbusSDM630M.cfg 1 60


Aus dem cfgfile werden nur Zeilen ausgewertet welche mit 1 beginnen, sollte man also einen Wert nicht abfragen wollen kann man used auf 0 setzen, oder auch einfach die Zeile aus kommentieren.

Anbei das Modul 98_ModbusCFG.pm und das config File 98_ModbusSDM630M.cfg.

Habe es absichtlich als eigenes Modul gemacht. Es ließe sich aber auch ganz leicht in das Modbus Basis Modul integrieren. Man müsste lediglich die if schleife aus meinem define und die sub ReadCFGFile einfügen.

Lg,
Crispyduck

Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 12 Juli 2017, 09:17:36
Hallo!

Bitte um Hilfe.
Ich habe bereits mehrere Modbusrelais mit 4 Relais und 4 Eingängen in Betrieb. Funktioniert einwandfrei.
Nun habe folgerndes Problem. Neue Fheminstallation, anderer Ort. Modbus funktioniert prinzipiell. Ich kann die Eingänge auslesen, aber die Relais reagieren nicht.
Das ganze am PC angeschlossen läuft einwandfrei. Den Code habe ich 1:1 vom anderen System kopiert. Der Bus ist O.k. Der Usb Adapter auch.
Alles auf neuestem Stand

lg
Wolfgang


Hier die Fhem.cfg
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global backupdir /nas/fhem/backup
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.\
telnetPort has no associated allowed device with password/globalpassword.\
\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\

attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 5
#http://help-quickfhem.jimdo.com/tutorial-1/readings/

#attr global userattr devStateIcon icon webCmd set setList sortby

define telnetPort telnet 7072 global


define WEB FHEMWEB 8083 global
attr WEB editConfig 1
attr WEB longpoll 1
attr WEB menuEntries Backup,/fhem?cmd=backup
attr WEB room hidden
attr WEB stylesheetPrefix touchpad
define allowed_WEB allowed
attr allowed_WEB validFor WEB
#attr allowed_WEB basicAuth d3RoaWVzczoyMzA1MTk2NjY2

define WEBphone FHEMWEB 8084 global
attr WEBphone room hidden
attr WEBphone stylesheetPrefix darktouchpad
define allowed_WEBphone allowed
attr allowed_WEBphone validFor WEBphone
#attr allowed_WEBphone basicAuth d3RoaWVzczoyMzA1MTk2NjY2


define WEBtablet FHEMWEB 8085 global
attr WEBtablet room hidden
attr WEBtablet stylesheetPrefix darktouchpad
define allowed_WEBtablet allowed
attr allowed_WEBtablet validFor WEBtablet
#attr allowed_WEBtablet basicAuth d3RoaWVzczoyMzA1MTk2NjY2

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate disable 1
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify Diode:Pinlevel:.*|Thermometer:.*|global:INITIALIZED usb create


#Relais
define RelaisUSB Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1

define Re ModbusAttr 1 10
attr Re IODev RelaisUSB
attr Re dev-c-combine 3
attr Re dev-c-defPoll 1
attr Re obj-c3-hint 0,1
attr Re obj-c3-reading Relais1
attr Re obj-c3-set 1
attr Re room Relais
attr Re stateFormat Relais1
attr Re webCmd Relais1



Hier der Log Verbose 5.
2017.07.12 09:08:59 5: End notify loop for Re
2017.07.12 09:08:59 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.12 09:09:03 4: Closing inactive connection WEB_192.168.25.164_50275
2017.07.12 09:09:03 4: Closing inactive connection WEB_192.168.25.164_50272
2017.07.12 09:09:03 4: Closing inactive connection WEB_192.168.25.164_50273
2017.07.12 09:09:03 4: Closing inactive connection WEB_192.168.25.164_50270
2017.07.12 09:09:09 5: Re: GetUpdate called
2017.07.12 09:09:09 4: Re: update timer modified: will call GetUpdate in 10.0 seconds at 2017-07-12 09:09:19 - Interval 10
2017.07.12 09:09:09 5: Re: GetUpdate objects from attributes: c3
2017.07.12 09:09:09 5: Re: GetUpdate full object list: c3
2017.07.12 09:09:09 5: Re: GetUpdate check c3 => Relais1, poll = 1, last = 1499843339.73505
2017.07.12 09:09:09 4: Re: GetUpdate will request Relais1
2017.07.12 09:09:09 5: Re: GetUpdate tries to combine read commands
2017.07.12 09:09:09 4: Re: Send called with c3, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.07.12 09:09:09 4: Re: Send queues fc 1 to 1, for c3 (Relais1), reqLen 1
2017.07.12 09:09:09 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -9.88652300834656
2017.07.12 09:09:09 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -9.90533208847046
2017.07.12 09:09:09 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.12 09:09:09 4: RelaisUSB: HandleSendQueue sends fc 1 to id 1, tid 8 for Relais1 (c3), len 1, device Re (RTU), pdu 0100030001, V 3.5.25 - 8.5.2017
2017.07.12 09:09:09 5: SW: 0101000300010dca
2017.07.12 09:09:09 5: RelaisUSB: raw read: 010101005188
2017.07.12 09:09:09 5: RelaisUSB: ParseFrames got: 010101005188
2017.07.12 09:09:09 4: RelaisUSB: ParseFrames got fcode 1 from 1, values 00HeaderLen 1, ActualLen 1, request was for c3 (Relais1), len 1 for module Re
2017.07.12 09:09:09 5: Re: ParseObj called with 00 and start 3, quantity 1, op read
2017.07.12 09:09:09 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.12 09:09:09 5: Re: ParseObj ObjInfo for c3: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.12 09:09:09 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.12 09:09:09 4: Re: ParseObj for Relais1 assigns 0
2017.07.12 09:09:09 5: Starting notify loop for Re, 1 event(s), first is Relais1: 0
2017.07.12 09:09:09 5: End notify loop for Re
2017.07.12 09:09:09 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.12 09:09:19 4: WEB_192.168.25.164_50271 POST /fhem?cmd=set%20Re%20Relais1%201&XHR=1&fwcsrf=csrf_514619013515132&fw_id=41; BUFLEN:0
2017.07.12 09:09:19 5: Cmd: >set Re Relais1 1<
2017.07.12 09:09:19 5: Re: Set called with Relais1 (c3), setVal = 1
2017.07.12 09:09:19 5: Re: set packed hex 31 with n to hex 0001
2017.07.12 09:09:19 4: Re: Send called with c3, objLen 1 / reqLen - to id 1, op write, qlen 0, value hex 0001
2017.07.12 09:09:19 4: Re: Send adds fc 5 to 1, for c3 (Relais1), reqLen 1, value hex 0001 at beginning of queue for immediate sending
2017.07.12 09:09:19 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -9.48293399810791
2017.07.12 09:09:19 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -9.50062203407288
2017.07.12 09:09:19 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.12 09:09:19 4: RelaisUSB: HandleSendQueue sends fc 5 to id 1, tid 14 for Relais1 (c3), len 1, device Re (RTU), pdu 050003ff00, V 3.5.25 - 8.5.2017
2017.07.12 09:09:19 5: SW: 01050003ff007c3a
2017.07.12 09:09:19 5: Re: ReadAnswer called and remaining timeout is 1.99975299835205 requested reading is Relais1
2017.07.12 09:09:19 5: Re: ReadAnswer got: 0105000300003dca
2017.07.12 09:09:19 5: RelaisUSB: ParseFrames got: 0105000300003dca
2017.07.12 09:09:19 4: RelaisUSB: ParseFrames got fcode 5 from 1, values 30HeaderLen 4, ActualLen 4, request was for c3 (Relais1), len 1 for module Re
2017.07.12 09:09:19 5: Re: ParseObj called with 30 and start 3, quantity 1, op write
2017.07.12 09:09:19 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.12 09:09:19 5: Re: ParseObj ObjInfo for c3: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.12 09:09:19 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.12 09:09:19 4: Re: ParseObj for Relais1 assigns 0
2017.07.12 09:09:19 5: Starting notify loop for Re, 1 event(s), first is Relais1: 0
2017.07.12 09:09:19 5: End notify loop for Re
2017.07.12 09:09:19 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.12 09:09:19 5: Re: ReadAnswer done, reading is Relais1, value: 0
2017.07.12 09:09:19 4: WEB: /fhem?cmd=set%20Re%20Relais1%201&XHR=1&fwcsrf=csrf_514619013515132&fw_id=41 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.12 09:09:19 5: Re: GetUpdate called
2017.07.12 09:09:19 4: Re: update timer modified: will call GetUpdate in 10.0 seconds at 2017-07-12 09:09:29 - Interval 10
2017.07.12 09:09:19 5: Re: GetUpdate objects from attributes: c3
2017.07.12 09:09:19 5: Re: GetUpdate full object list: c3
2017.07.12 09:09:19 5: Re: GetUpdate check c3 => Relais1, poll = 1, last = 1499843359.3478
2017.07.12 09:09:19 5: Re: GetUpdate will skip Relais1, delay not over
2017.07.12 09:09:19 5: Re: GetUpdate tries to combine read commands
2017.07.12 09:09:21 4: WEB_192.168.25.164_50271 POST /fhem?cmd=set%20Re%20Relais1%201&XHR=1&fwcsrf=csrf_514619013515132&fw_id=41; BUFLEN:0
2017.07.12 09:09:21 5: Cmd: >set Re Relais1 1<
2017.07.12 09:09:21 5: Re: Set called with Relais1 (c3), setVal = 1
2017.07.12 09:09:21 5: Re: set packed hex 31 with n to hex 0001
2017.07.12 09:09:21 4: Re: Send called with c3, objLen 1 / reqLen - to id 1, op write, qlen 0, value hex 0001
2017.07.12 09:09:21 4: Re: Send adds fc 5 to 1, for c3 (Relais1), reqLen 1, value hex 0001 at beginning of queue for immediate sending
2017.07.12 09:09:21 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -2.43358111381531
2017.07.12 09:09:21 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -2.45425629615784
2017.07.12 09:09:21 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.12 09:09:21 4: RelaisUSB: HandleSendQueue sends fc 5 to id 1, tid 67 for Relais1 (c3), len 1, device Re (RTU), pdu 050003ff00, V 3.5.25 - 8.5.2017
2017.07.12 09:09:21 5: SW: 01050003ff007c3a
2017.07.12 09:09:21 5: Re: ReadAnswer called and remaining timeout is 1.99985814094543 requested reading is Relais1
2017.07.12 09:09:21 5: Re: ReadAnswer got: 0105000300003dca
2017.07.12 09:09:21 5: RelaisUSB: ParseFrames got: 0105000300003dca
2017.07.12 09:09:21 4: RelaisUSB: ParseFrames got fcode 5 from 1, values 30HeaderLen 4, ActualLen 4, request was for c3 (Relais1), len 1 for module Re
2017.07.12 09:09:21 5: Re: ParseObj called with 30 and start 3, quantity 1, op write
2017.07.12 09:09:21 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.12 09:09:21 5: Re: ParseObj ObjInfo for c3: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.12 09:09:21 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.12 09:09:21 4: Re: ParseObj for Relais1 assigns 0
2017.07.12 09:09:21 5: Starting notify loop for Re, 1 event(s), first is Relais1: 0
2017.07.12 09:09:21 5: End notify loop for Re
2017.07.12 09:09:21 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.12 09:09:21 5: Re: ReadAnswer done, reading is Relais1, value: 0
2017.07.12 09:09:21 4: WEB: /fhem?cmd=set%20Re%20Relais1%201&XHR=1&fwcsrf=csrf_514619013515132&fw_id=41 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: pejonp am 12 Juli 2017, 18:21:15
Hi,

kannst du die Modbusrelais (mit 4 Relais und 4 Eingängen) untereinander tauschen um einen Hardwaredef. auszuschließen ?
Firmeware auf den Modbusrelais die gleiche ?

pejonp
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 12 Juli 2017, 19:44:08
Hallo Wolfgang,

verstehe ich es richtig, dass Du das Relais mit set Re Relais1 1 schalten willst,
was in den Modbus-Befehl 01050003ff007c3a umgewandelt wird?
(write single coil, Addresse 3, Wert 1)
Das Relais antwortet dann mit 0105000300003dca ?

Was wird denn vom PC aus gesendet und wie lautet dort die Antwort?

laut Modbus Spec sollte die Antwort anders aussehen:
ZitatThe normal response is an echo of the request, returned after the coil state has been written

Bei Dir kommt aber 0000 statt FF00 ...

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 12 Juli 2017, 23:51:43
Hallo Stefan!

Dokumentation:
The 3rd relay open
01 05 00 03 01 00 3c 5a
3 Relay Off
01 05 00 03 00 00 3d ca


Ich sehe hier FF statt 01. Das FF ist ein Fehler. 03 Ist das Relais. 01 = ein. Woher kommt das?
Fhem Wien (LOG)
        TX 01 05 00 03 FF 00 7c 3A
        RX 01 05 00 03 00 00 3D CA

Windows Relais3 ein
sende   TX 01 05 00 03 01 00 3C 5A
antwort RX 01 05 00 03 01 00 3C 5A

Windows Relais3 aus
sende   TX 01 05 00 03 00 00 3D CA
antwort RX 01 05 00 03 00 00 3D CA



lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Juli 2017, 07:46:55
Hallo Wolfgang,

das FF kommt aus der Modbus-Spezifikation (siehe http://www.modbus.org/specs.php):
Zitat
The requested ON/OFF state is specified by a constant in the Coil Value field. A value of 0XFF00 requests the coil to be ON. A value of 0X0000 requests the coil to be off. All other values are illegal and will not affect the coil.
Manche Gerätehersteller scheinen das nicht gelesen zu haben. Was für eine Software verwendest Du denn unter Windows? Die sollte eigentlich auch FF00 schicken ...
Ich Bau ein Attribut ein, mit dem man das wählen kann...

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 13 Juli 2017, 10:42:10
Hallo Stefan!

Hier die fhem.cfg und die Logdatei vom funktionierenden System.
Vieleicht findest du hier was raus. Hier ist das Relais auf ID3 und der USB-Stick heisst Zaehler.

attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global backupdir /nas/fhem/backup
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.\
telnetPort has no associated allowed device with password/globalpassword.\
\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\

attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 5
#http://help-quickfhem.jimdo.com/tutorial-1/readings/

#attr global userattr devStateIcon icon webCmd set setList sortby

define telnetPort telnet 7072 global


define WEB FHEMWEB 8083 global
attr WEB editConfig 1
attr WEB longpoll 1
attr WEB menuEntries Backup,/fhem?cmd=backup
attr WEB room hidden
attr WEB stylesheetPrefix touchpad
define allowed_WEB allowed
attr allowed_WEB validFor WEB
#attr allowed_WEB basicAuth d3RoaWVzczoyMzA1MTk2NjY2

define WEBphone FHEMWEB 8084 global
attr WEBphone room hidden
attr WEBphone stylesheetPrefix darktouchpad
define allowed_WEBphone allowed
attr allowed_WEBphone validFor WEBphone
#attr allowed_WEBphone basicAuth d3RoaWVzczoyMzA1MTk2NjY2


define WEBtablet FHEMWEB 8085 global
attr WEBtablet room hidden
attr WEBtablet stylesheetPrefix darktouchpad
define allowed_WEBtablet allowed
attr allowed_WEBtablet validFor WEBtablet
#attr allowed_WEBtablet basicAuth d3RoaWVzczoyMzA1MTk2NjY2

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate disable 1
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify Diode:Pinlevel:.*|Thermometer:.*|global:INITIALIZED usb create




#Modebus#####################################################

#Zähler und Relais
define Zaehler Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1



#Gartenbewässerung
define R2 ModbusAttr 3 60
attr R2 userattr IODev dev-c-combine dev-c-defPoll obj-c2-hint obj-c2-reading obj-c2-set stateFormat webCmd
attr R2 IODev Zaehler
attr R2 alias Beet
attr R2 dev-c-combine 5
attr R2 dev-c-defPoll 1
attr R2 group Bewässerung
attr R2 obj-c2-hint 0,1
attr R2 obj-c2-reading Relais2
attr R2 obj-c2-set 1
attr R2 room Aussenbereich,Garten
attr R2 stateFormat Relais2
attr R2 webCmd Relais2

#################################
#Sprechanlage

#GlockeWerkstadt
define R1 ModbusAttr 3 5
attr R1 userattr IODev dev-c-combine dev-c-defPoll obj-c1-hint obj-c1-reading obj-c1-set stateFormat webCmd
attr R1 IODev Zaehler
attr R1 dev-c-combine 5
attr R1 dev-c-defPoll 1
attr R1 obj-c1-hint 0,1
attr R1 obj-c1-reading Relais1
attr R1 obj-c1-set 1
attr R1 room Sprechanlage
attr R1 stateFormat Relais1
attr R1 webCmd Relais1



2017.07.13 10:36:16 5: Initializing Type Library:
2017.07.13 10:36:16 1: Including fhem.cfg
2017.07.13 10:36:16 5: Cmd: >attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride<
2017.07.13 10:36:16 5: Cmd: >attr global autoload_undefined_devices 1<
2017.07.13 10:36:16 5: Cmd: >attr global backupdir /nas/fhem/backup<
2017.07.13 10:36:16 5: Cmd: >attr global logfile ./log/fhem-%Y-%m.log<
2017.07.13 10:36:16 5: Cmd: >attr global modpath .<
2017.07.13 10:36:16 5: Cmd: >attr global motd SecurityCheck:

WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.
telnetPort has no associated allowed device with password/globalpassword.

Restart FHEM for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.
<
2017.07.13 10:36:16 5: Cmd: >attr global statefile ./log/fhem.save<
2017.07.13 10:36:16 5: Cmd: >attr global updateInBackground 1<
2017.07.13 10:36:16 5: Cmd: >attr global verbose 5<
2017.07.13 10:36:16 5: Cmd: >define telnetPort telnet 7072 global<
2017.07.13 10:36:16 5: Loading ./FHEM/98_telnet.pm
2017.07.13 10:36:16 3: telnetPort: port 7072 opened
2017.07.13 10:36:16 5: Cmd: >define WEB FHEMWEB 8083 global<
2017.07.13 10:36:16 5: Loading ./FHEM/01_FHEMWEB.pm
2017.07.13 10:36:17 3: WEB: port 8083 opened
2017.07.13 10:36:17 5: Cmd: >attr WEB editConfig 1<
2017.07.13 10:36:17 5: Cmd: >attr WEB longpoll 1<
2017.07.13 10:36:17 5: Cmd: >attr WEB menuEntries Backup,/fhem?cmd=backup<
2017.07.13 10:36:17 5: Cmd: >attr WEB room hidden<
2017.07.13 10:36:17 5: Cmd: >attr WEB stylesheetPrefix touchpad<
2017.07.13 10:36:17 5: Cmd: >define allowed_WEB allowed<
2017.07.13 10:36:17 5: Loading ./FHEM/96_allowed.pm
2017.07.13 10:36:17 5: Cmd: >attr allowed_WEB validFor WEB<
2017.07.13 10:36:17 5: Cmd: >define WEBphone FHEMWEB 8084 global<
2017.07.13 10:36:17 3: WEBphone: port 8084 opened
2017.07.13 10:36:17 5: Cmd: >attr WEBphone room hidden<
2017.07.13 10:36:17 5: Cmd: >attr WEBphone stylesheetPrefix darktouchpad<
2017.07.13 10:36:17 5: Cmd: >define allowed_WEBphone allowed<
2017.07.13 10:36:17 5: Cmd: >attr allowed_WEBphone validFor WEBphone<
2017.07.13 10:36:17 5: Cmd: >define WEBtablet FHEMWEB 8085 global<
2017.07.13 10:36:17 3: WEBtablet: port 8085 opened
2017.07.13 10:36:17 5: Cmd: >attr WEBtablet room hidden<
2017.07.13 10:36:17 5: Cmd: >attr WEBtablet stylesheetPrefix darktouchpad<
2017.07.13 10:36:17 5: Cmd: >define allowed_WEBtablet allowed<
2017.07.13 10:36:17 5: Cmd: >attr allowed_WEBtablet validFor WEBtablet<
2017.07.13 10:36:17 5: Cmd: >define Logfile FileLog ./log/fhem-%Y-%m.log fakelog<
2017.07.13 10:36:17 5: Loading ./FHEM/92_FileLog.pm
2017.07.13 10:36:17 5: Cmd: >define autocreate autocreate<
2017.07.13 10:36:17 5: Loading ./FHEM/98_autocreate.pm
2017.07.13 10:36:17 5: Cmd: >attr autocreate disable 1<
2017.07.13 10:36:17 5: Cmd: >attr autocreate filelog ./log/%NAME-%Y.log<
2017.07.13 10:36:17 5: Cmd: >define eventTypes eventTypes ./log/eventTypes.txt<
2017.07.13 10:36:17 5: Loading ./FHEM/91_eventTypes.pm
2017.07.13 10:36:17 2: eventTypes: loaded 739 events from ./log/eventTypes.txt
2017.07.13 10:36:17 5: Cmd: >define initialUsbCheck notify Diode:Pinlevel:.*|Thermometer:.*|global:INITIALIZED usb create<
2017.07.13 10:36:17 5: Loading ./FHEM/91_notify.pm
2017.07.13 10:36:17 5: Cmd: >define Zaehler Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1<
2017.07.13 10:36:17 5: Loading ./FHEM/98_Modbus.pm
2017.07.13 10:36:17 5: Cmd: >define R2 ModbusAttr 3 60<
2017.07.13 10:36:17 5: Loading ./FHEM/98_ModbusAttr.pm
2017.07.13 10:36:17 3: R2: defined with id 3, interval 60, protocol RTU
2017.07.13 10:36:17 5: Cmd: >attr R2 userattr IODev dev-c-combine dev-c-defPoll obj-c2-hint obj-c2-reading obj-c2-set stateFormat webCmd<
2017.07.13 10:36:17 5: Cmd: >attr R2 IODev Zaehler<
2017.07.13 10:36:17 5: R2: Attr IODev - using Zaehler
2017.07.13 10:36:17 5: Cmd: >attr R2 alias Beet<
2017.07.13 10:36:17 5: Cmd: >attr R2 dev-c-combine 5<
2017.07.13 10:36:17 5: Cmd: >attr R2 dev-c-defPoll 1<
2017.07.13 10:36:17 5: Cmd: >attr R2 group Bewässerung<
2017.07.13 10:36:17 5: Cmd: >attr R2 obj-c2-hint 0,1<
2017.07.13 10:36:17 5: Cmd: >attr R2 obj-c2-reading Relais2<
2017.07.13 10:36:17 5: Cmd: >attr R2 obj-c2-set 1<
2017.07.13 10:36:17 5: Cmd: >attr R2 room Aussenbereich,Garten<
2017.07.13 10:36:17 5: Cmd: >attr R2 stateFormat Relais2<
2017.07.13 10:36:17 5: Cmd: >attr R2 webCmd Relais2<
2017.07.13 10:36:17 5: Cmd: >define R1 ModbusAttr 3 5<
2017.07.13 10:36:17 3: R1: defined with id 3, interval 5, protocol RTU
2017.07.13 10:36:17 5: Cmd: >attr R1 userattr IODev dev-c-combine dev-c-defPoll obj-c1-hint obj-c1-reading obj-c1-set stateFormat webCmd<
2017.07.13 10:36:17 5: Cmd: >attr R1 IODev Zaehler<
2017.07.13 10:36:17 5: R1: Attr IODev - using Zaehler
2017.07.13 10:36:17 5: Cmd: >attr R1 dev-c-combine 5<
2017.07.13 10:36:17 5: Cmd: >attr R1 dev-c-defPoll 1<
2017.07.13 10:36:17 5: Cmd: >attr R1 obj-c1-hint 0,1<
2017.07.13 10:36:17 5: Cmd: >attr R1 obj-c1-reading Relais1<
2017.07.13 10:36:17 5: Cmd: >attr R1 obj-c1-set 1<
2017.07.13 10:36:17 5: Cmd: >attr R1 room Sprechanlage<
2017.07.13 10:36:17 5: Cmd: >attr R1 stateFormat Relais1<
2017.07.13 10:36:17 5: Cmd: >attr R1 webCmd Relais1<
2017.07.13 10:36:17 1: Including ./log/fhem.save
2017.07.13 10:36:17 5: Cmd: >setstate Logfile active<
2017.07.13 10:36:17 5: Cmd: >setstate Logfile 2017-07-01 00:00:04 linesInTheFile 0<
2017.07.13 10:36:17 5: Cmd: >setstate R1 0<
2017.07.13 10:36:17 5: Cmd: >setstate R1 2017-07-13 10:36:09 Relais1 0<
2017.07.13 10:36:17 5: Cmd: >setstate R2 0<
2017.07.13 10:36:17 5: Cmd: >setstate R2 2017-06-16 16:14:32 Relais1 0<
2017.07.13 10:36:17 5: Cmd: >setstate R2 2017-07-13 10:35:54 Relais2 0<
2017.07.13 10:36:17 5: Cmd: >setstate Zaehler opened<
2017.07.13 10:36:17 5: Cmd: >setstate Zaehler 2017-07-13 10:35:53 state opened<
2017.07.13 10:36:17 5: Cmd: >setstate allowed_WEB validFor:WEB<
2017.07.13 10:36:17 5: Cmd: >setstate allowed_WEB 2017-07-13 10:35:52 state validFor:WEB<
2017.07.13 10:36:17 5: Cmd: >setstate allowed_WEBphone validFor:WEBphone<
2017.07.13 10:36:17 5: Cmd: >setstate allowed_WEBphone 2017-07-13 10:35:52 state validFor:WEBphone<
2017.07.13 10:36:17 5: Cmd: >setstate allowed_WEBtablet validFor:WEBtablet<
2017.07.13 10:36:17 5: Cmd: >setstate allowed_WEBtablet 2017-07-13 10:35:52 state validFor:WEBtablet<
2017.07.13 10:36:17 5: Cmd: >setstate autocreate disabled<
2017.07.13 10:36:17 5: Cmd: >setstate eventTypes active<
2017.07.13 10:36:17 5: Cmd: >setstate global no definition<
2017.07.13 10:36:17 5: Cmd: >setstate initialUsbCheck active<
2017.07.13 10:36:17 5: Cmd: >setstate initialUsbCheck 2017-07-13 10:35:52 state active<
2017.07.13 10:36:17 5: Starting notify loop for global, 1 event(s), first is INITIALIZED
2017.07.13 10:36:17 5: createNotifyHash
2017.07.13 10:36:17 3: R1: Notify / Init: using Zaehler for communication
2017.07.13 10:36:17 4: R1: update timer modified: will call GetUpdate in 1.0 seconds at 2017-07-13 10:36:18 - Interval 5
2017.07.13 10:36:17 3: R2: Notify / Init: using Zaehler for communication
2017.07.13 10:36:17 4: R2: update timer modified: will call GetUpdate in 1.0 seconds at 2017-07-13 10:36:18 - Interval 60
2017.07.13 10:36:17 3: Zaehler: Notify / Init: opening connection
2017.07.13 10:36:17 4: Zaehler: trying to open connection to /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1
2017.07.13 10:36:17 3: Opening Zaehler device /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
2017.07.13 10:36:17 3: Setting Zaehler serial parameters to 9600,8,N,1
2017.07.13 10:36:17 3: Zaehler device opened
2017.07.13 10:36:17 5: Triggering initialUsbCheck
2017.07.13 10:36:17 4: initialUsbCheck exec usb create
2017.07.13 10:36:17 5: Cmd: >usb create<
2017.07.13 10:36:17 1: usb create starting
2017.07.13 10:36:18 4: ### ttyACM0: checking if it is a CUL
2017.07.13 10:36:18 3: Probing CUL device /dev/ttyACM0
2017.07.13 10:36:18 5: SW: 0a
2017.07.13 10:36:18 5: SW: 560a
2017.07.13 10:36:18 4: got wrong answer for a CUL
2017.07.13 10:36:18 4: ### ttyACM0: checking if it is a TCM_ESP3
2017.07.13 10:36:18 3: Probing TCM_ESP3 device /dev/ttyACM0
2017.07.13 10:36:18 5: SW: 5500010005700838
2017.07.13 10:36:18 4: got wrong answer for a TCM_ESP3
2017.07.13 10:36:18 4: ### ttyACM0: checking if it is a ZWDongle
2017.07.13 10:36:18 3: Probing ZWDongle device /dev/ttyACM0
2017.07.13 10:36:18 5: SW: 01030020dc06
2017.07.13 10:36:18 4: got wrong answer for a ZWDongle
2017.07.13 10:36:18 4: ### ttyACM0: checking if it is a FRM
2017.07.13 10:36:18 3: Probing FRM device /dev/ttyACM0
2017.07.13 10:36:18 5: SW: f9
2017.07.13 10:36:24 5: SW: f079f7
2017.07.13 10:36:24 4: got wrong answer for a FRM
2017.07.13 10:36:24 4: ### ttyAMA0: checking if it is a CUL
2017.07.13 10:36:24 3: Probing CUL device /dev/ttyAMA0
2017.07.13 10:36:24 5: SW: 0a
2017.07.13 10:36:24 5: SW: 560a
2017.07.13 10:36:24 4: got wrong answer for a CUL
2017.07.13 10:36:24 4: ### ttyAMA0: checking if it is a TCM_ESP3
2017.07.13 10:36:24 3: Probing TCM_ESP3 device /dev/ttyAMA0
2017.07.13 10:36:24 5: SW: 5500010005700838
2017.07.13 10:36:24 4: got wrong answer for a TCM_ESP3
2017.07.13 10:36:24 4: ### ttyAMA0: checking if it is a ZWDongle
2017.07.13 10:36:24 3: Probing ZWDongle device /dev/ttyAMA0
2017.07.13 10:36:24 5: SW: 01030020dc06
2017.07.13 10:36:24 4: got wrong answer for a ZWDongle
2017.07.13 10:36:24 4: ### ttyAMA0: checking if it is a FRM
2017.07.13 10:36:24 3: Probing FRM device /dev/ttyAMA0
2017.07.13 10:36:24 5: SW: f9
2017.07.13 10:36:30 5: SW: f079f7
2017.07.13 10:36:30 4: got wrong answer for a FRM
2017.07.13 10:36:30 4: ### ttyUSB0: checking if it is a TCM_ESP3
2017.07.13 10:36:30 3: Probing TCM_ESP3 device /dev/ttyUSB0
2017.07.13 10:36:30 5: SW: 5500010005700838
2017.07.13 10:36:30 4: got wrong answer for a TCM_ESP3
2017.07.13 10:36:30 4: ### ttyUSB0: checking if it is a TCM_ESP2
2017.07.13 10:36:30 3: Probing TCM_ESP2 device /dev/ttyUSB0
2017.07.13 10:36:30 5: SW: a55aab5800000000000000000003
2017.07.13 10:36:30 4: got wrong answer for a TCM_ESP2
2017.07.13 10:36:30 4: ### ttyUSB0: checking if it is a FHZ
2017.07.13 10:36:30 3: Probing FHZ device /dev/ttyUSB0
2017.07.13 10:36:30 5: SW: 8105044fc90185
2017.07.13 10:36:30 4: got wrong answer for a FHZ
2017.07.13 10:36:30 4: ### ttyUSB0: checking if it is a TRX
2017.07.13 10:36:30 3: Probing TRX device /dev/ttyUSB0
2017.07.13 10:36:30 5: SW: 0d00000000000000000000000000
2017.07.13 10:36:31 5: SW: 0d00000102000000000000000000
2017.07.13 10:36:31 4: got wrong answer for a TRX
2017.07.13 10:36:31 4: ### ttyUSB0: checking if it is a ZWDongle
2017.07.13 10:36:31 3: Probing ZWDongle device /dev/ttyUSB0
2017.07.13 10:36:31 5: SW: 01030020dc06
2017.07.13 10:36:31 4: got wrong answer for a ZWDongle
2017.07.13 10:36:31 4: ### ttyUSB0: checking if it is a FRM
2017.07.13 10:36:31 3: Probing FRM device /dev/ttyUSB0
2017.07.13 10:36:31 5: SW: f9
2017.07.13 10:36:36 5: SW: f079f7
2017.07.13 10:36:37 4: got wrong answer for a FRM
2017.07.13 10:36:37 4: ### ttyUSB1: checking if it is a TCM_ESP3
2017.07.13 10:36:37 3: Probing TCM_ESP3 device /dev/ttyUSB1
2017.07.13 10:36:37 5: SW: 5500010005700838
2017.07.13 10:36:37 4: got wrong answer for a TCM_ESP3
2017.07.13 10:36:37 4: ### ttyUSB1: checking if it is a TCM_ESP2
2017.07.13 10:36:37 3: Probing TCM_ESP2 device /dev/ttyUSB1
2017.07.13 10:36:37 5: SW: a55aab5800000000000000000003
2017.07.13 10:36:37 4: got wrong answer for a TCM_ESP2
2017.07.13 10:36:37 4: ### ttyUSB1: checking if it is a FHZ
2017.07.13 10:36:37 3: Probing FHZ device /dev/ttyUSB1
2017.07.13 10:36:37 5: SW: 8105044fc90185
2017.07.13 10:36:37 4: got wrong answer for a FHZ
2017.07.13 10:36:37 4: ### ttyUSB1: checking if it is a TRX
2017.07.13 10:36:37 3: Probing TRX device /dev/ttyUSB1
2017.07.13 10:36:37 5: SW: 0d00000000000000000000000000
2017.07.13 10:36:38 5: SW: 0d00000102000000000000000000
2017.07.13 10:36:38 4: got wrong answer for a TRX
2017.07.13 10:36:38 4: ### ttyUSB1: checking if it is a ZWDongle
2017.07.13 10:36:38 3: Probing ZWDongle device /dev/ttyUSB1
2017.07.13 10:36:38 5: SW: 01030020dc06
2017.07.13 10:36:38 4: got wrong answer for a ZWDongle
2017.07.13 10:36:38 4: ### ttyUSB1: checking if it is a FRM
2017.07.13 10:36:38 3: Probing FRM device /dev/ttyUSB1
2017.07.13 10:36:38 5: SW: f9
2017.07.13 10:36:43 5: SW: f079f7
2017.07.13 10:36:43 4: got wrong answer for a FRM
2017.07.13 10:36:43 4: ### ttyUSB2: checking if it is a TCM_ESP3
2017.07.13 10:36:43 4: ttyUSB2 is already used by the fhem device Zaehler
2017.07.13 10:36:43 1: usb create end
2017.07.13 10:36:43 5: End notify loop for global
2017.07.13 10:36:43 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth. telnetPort has no associated allowed device with password/globalpassword.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2017.07.13 10:36:43 0: Featurelevel: 5.8
2017.07.13 10:36:43 0: Server started with 15 defined entities (fhem.pl:14634/2017-07-03 perl:5.020002 os:linux user:fhem pid:13674)
2017.07.13 10:36:43 5: R1: GetUpdate called
2017.07.13 10:36:43 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:36:48 - Interval 5
2017.07.13 10:36:43 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:36:43 5: R1: GetUpdate full object list: c1
2017.07.13 10:36:43 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 0
2017.07.13 10:36:43 4: R1: GetUpdate will request Relais1
2017.07.13 10:36:43 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:36:43 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:36:43 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:36:43 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:36:43 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 30 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:36:43 5: SW: 030100010001ade8
2017.07.13 10:36:43 5: R2: GetUpdate called
2017.07.13 10:36:43 4: R2: update timer modified: will call GetUpdate in 60.0 seconds at 2017-07-13 10:37:43 - Interval 60
2017.07.13 10:36:43 5: R2: GetUpdate objects from attributes: c2
2017.07.13 10:36:43 5: R2: GetUpdate full object list: c2
2017.07.13 10:36:43 5: R2: GetUpdate check c2 => Relais2, poll = 1, last = 0
2017.07.13 10:36:43 4: R2: GetUpdate will request Relais2
2017.07.13 10:36:43 5: R2: GetUpdate tries to combine read commands
2017.07.13 10:36:43 4: R2: Send called with c2, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:36:43 4: R2: Send queues fc 1 to 3, for c2 (Relais2), reqLen 1
2017.07.13 10:36:43 4: Connection accepted from WEB_192.168.26.200_50011
2017.07.13 10:36:44 4: WEB_192.168.26.200_50011 GET /fhem?XHR=1&inform=type=status;filter=;since=1499934951;fmt=JSON&fw_id=951&timestamp=1499934978431; BUFLEN:0
2017.07.13 10:36:44 5: Zaehler: raw read: 030101005030
2017.07.13 10:36:44 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:36:44 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:36:44 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:36:44 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:36:44 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:36:44 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:36:44 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:36:44 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:36:44 5: createNotifyHash
2017.07.13 10:36:44 5: End notify loop for R1
2017.07.13 10:36:44 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:36:44 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:36:44 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 239 for Relais2 (c2), len 1, device R2 (RTU), pdu 0100020001, V 3.5.25 - 8.5.2017
2017.07.13 10:36:44 5: SW: 0301000200015de8
2017.07.13 10:36:44 5: Zaehler: raw read: 030101005030
2017.07.13 10:36:44 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:36:44 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c2 (Relais2), len 1 for module R2
2017.07.13 10:36:44 5: R2: ParseObj called with 00 and start 2, quantity 1, op read
2017.07.13 10:36:44 5: R2: ParseObj shortened bit string: 0 and start adr 2, quantity 1
2017.07.13 10:36:44 5: R2: ParseObj ObjInfo for c2: reading=Relais2, unpack=a, expr=, format=, map=
2017.07.13 10:36:44 5: R2: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:36:44 4: R2: ParseObj for Relais2 assigns 0
2017.07.13 10:36:44 5: Starting notify loop for R2, 1 event(s), first is Relais2: 0
2017.07.13 10:36:44 5: End notify loop for R2
2017.07.13 10:36:44 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:36:48 5: R1: GetUpdate called
2017.07.13 10:36:48 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:36:53 - Interval 5
2017.07.13 10:36:48 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:36:48 5: R1: GetUpdate full object list: c1
2017.07.13 10:36:48 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935004.23374
2017.07.13 10:36:48 4: R1: GetUpdate will request Relais1
2017.07.13 10:36:48 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:36:48 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:36:48 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:36:48 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.60801887512207
2017.07.13 10:36:48 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.92363524436951
2017.07.13 10:36:48 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:36:48 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 102 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:36:48 5: SW: 030100010001ade8
2017.07.13 10:36:48 5: Zaehler: raw read: 030101005030
2017.07.13 10:36:48 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:36:48 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:36:48 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:36:48 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:36:48 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:36:48 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:36:48 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:36:48 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:36:48 5: End notify loop for R1
2017.07.13 10:36:48 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:36:53 5: R1: GetUpdate called
2017.07.13 10:36:53 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:36:58 - Interval 5
2017.07.13 10:36:53 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:36:53 5: R1: GetUpdate full object list: c1
2017.07.13 10:36:53 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935008.96284
2017.07.13 10:36:53 4: R1: GetUpdate will request Relais1
2017.07.13 10:36:53 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:36:53 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:36:53 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:36:53 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.9022970199585
2017.07.13 10:36:53 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.92092323303223
2017.07.13 10:36:53 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:36:53 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 30 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:36:53 5: SW: 030100010001ade8
2017.07.13 10:36:53 5: Zaehler: raw read: 030101005030
2017.07.13 10:36:53 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:36:53 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:36:53 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:36:53 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:36:53 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:36:53 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:36:53 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:36:53 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:36:53 5: End notify loop for R1
2017.07.13 10:36:53 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:36:58 5: R1: GetUpdate called
2017.07.13 10:36:58 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:03 - Interval 5
2017.07.13 10:36:58 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:36:58 5: R1: GetUpdate full object list: c1
2017.07.13 10:36:58 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935013.98539
2017.07.13 10:36:58 4: R1: GetUpdate will request Relais1
2017.07.13 10:36:58 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:36:58 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:36:58 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:36:58 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.88385009765625
2017.07.13 10:36:58 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.90181827545166
2017.07.13 10:36:58 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:36:58 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 13 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:36:58 5: SW: 030100010001ade8
2017.07.13 10:36:58 5: Zaehler: raw read: 030101005030
2017.07.13 10:36:58 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:36:58 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:36:58 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:36:58 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:36:58 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:36:58 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:36:58 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:36:58 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:36:58 5: End notify loop for R1
2017.07.13 10:36:58 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:03 5: R1: GetUpdate called
2017.07.13 10:37:03 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:08 - Interval 5
2017.07.13 10:37:03 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:03 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:03 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935018.9944
2017.07.13 10:37:03 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:03 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:03 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:03 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:03 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.87854194641113
2017.07.13 10:37:03 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.9014310836792
2017.07.13 10:37:03 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:03 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 239 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:03 5: SW: 030100010001ade8
2017.07.13 10:37:03 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:04 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:04 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:04 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:04 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:04 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:04 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:04 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:04 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:04 5: End notify loop for R1
2017.07.13 10:37:04 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:08 5: R1: GetUpdate called
2017.07.13 10:37:08 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:13 - Interval 5
2017.07.13 10:37:08 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:08 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:08 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935024.0148
2017.07.13 10:37:08 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:08 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:08 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:08 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:08 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.86279916763306
2017.07.13 10:37:08 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.90200400352478
2017.07.13 10:37:08 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:08 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 120 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:08 5: SW: 030100010001ade8
2017.07.13 10:37:08 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:09 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:09 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:09 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:09 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:09 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:09 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:09 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:09 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:09 5: End notify loop for R1
2017.07.13 10:37:09 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:13 5: R1: GetUpdate called
2017.07.13 10:37:13 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:18 - Interval 5
2017.07.13 10:37:13 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:13 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:13 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935029.01685
2017.07.13 10:37:13 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:13 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:13 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:13 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:13 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.86472916603088
2017.07.13 10:37:13 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.90166115760803
2017.07.13 10:37:13 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:13 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 130 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:13 5: SW: 030100010001ade8
2017.07.13 10:37:13 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:14 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:14 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:14 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:14 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:14 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:14 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:14 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:14 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:14 5: End notify loop for R1
2017.07.13 10:37:14 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:18 5: R1: GetUpdate called
2017.07.13 10:37:18 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:23 - Interval 5
2017.07.13 10:37:18 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:18 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:18 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935034.01871
2017.07.13 10:37:18 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:18 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:18 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:18 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:18 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.86721396446228
2017.07.13 10:37:18 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.90184116363525
2017.07.13 10:37:18 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:18 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 174 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:18 5: SW: 030100010001ade8
2017.07.13 10:37:19 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:19 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:19 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:19 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:19 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:19 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:19 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:19 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:19 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:19 5: End notify loop for R1
2017.07.13 10:37:19 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:23 5: R1: GetUpdate called
2017.07.13 10:37:23 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:28 - Interval 5
2017.07.13 10:37:23 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:23 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:23 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935039.02774
2017.07.13 10:37:23 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:23 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:23 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:23 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:23 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.86209011077881
2017.07.13 10:37:23 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.90155720710754
2017.07.13 10:37:23 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:23 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 222 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:23 5: SW: 030100010001ade8
2017.07.13 10:37:24 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:24 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:24 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:24 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:24 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:24 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:24 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:24 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:24 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:24 5: End notify loop for R1
2017.07.13 10:37:24 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:28 5: R1: GetUpdate called
2017.07.13 10:37:28 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:33 - Interval 5
2017.07.13 10:37:28 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:28 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:28 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935044.03188
2017.07.13 10:37:28 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:28 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:28 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:28 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:28 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.86251091957092
2017.07.13 10:37:28 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.9019513130188
2017.07.13 10:37:28 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:28 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 33 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:28 5: SW: 030100010001ade8
2017.07.13 10:37:29 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:29 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:29 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:29 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:29 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:29 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:29 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:29 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:29 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:29 5: End notify loop for R1
2017.07.13 10:37:29 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:33 5: R1: GetUpdate called
2017.07.13 10:37:33 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:38 - Interval 5
2017.07.13 10:37:33 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:33 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:33 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935049.03465
2017.07.13 10:37:33 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:33 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:33 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:33 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:33 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.86348819732666
2017.07.13 10:37:33 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.90147614479065
2017.07.13 10:37:33 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:33 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 143 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:33 5: SW: 030100010001ade8
2017.07.13 10:37:34 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:34 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:34 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:34 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:34 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:34 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:34 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:34 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:34 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:34 5: End notify loop for R1
2017.07.13 10:37:34 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:35 4: Connection accepted from WEB_192.168.26.200_50012
2017.07.13 10:37:35 4: WEB_192.168.26.200_50012 GET /fhem?room=Aussenbereich; BUFLEN:0
2017.07.13 10:37:35 4: WEB: /fhem?room=Aussenbereich / RL:1530 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 10:37:35 4: Connection closed for WEB_192.168.26.200_50011: EOF
2017.07.13 10:37:35 4: WEB_192.168.26.200_50012 GET /fhem/pgm2/style.css?v=1499934976; BUFLEN:0
2017.07.13 10:37:35 4: WEB_192.168.26.200_50012 GET /fhem?XHR=1&inform=type=status;filter=room=Aussenbereich;since=1499935054;fmt=JSON&fw_id=51&timestamp=1499935055247; BUFLEN:0
2017.07.13 10:37:36 4: Connection accepted from WEB_192.168.26.200_50013
2017.07.13 10:37:36 4: WEB_192.168.26.200_50013 GET /fhem?room=Garten; BUFLEN:0
2017.07.13 10:37:36 4: WEB: /fhem?room=Garten / RL:1531 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 10:37:36 4: Connection closed for WEB_192.168.26.200_50012: EOF
2017.07.13 10:37:36 4: WEB_192.168.26.200_50013 GET /fhem?XHR=1&inform=type=status;filter=room=Garten;since=1499935055;fmt=JSON&fw_id=52&timestamp=1499935056286; BUFLEN:0
2017.07.13 10:37:38 4: Connection accepted from WEB_192.168.26.200_50014
2017.07.13 10:37:38 4: WEB_192.168.26.200_50014 POST /fhem?cmd=set%20R2%20Relais2%201&XHR=1&fwcsrf=csrf_149267680294838&fw_id=52; BUFLEN:0
2017.07.13 10:37:38 5: Cmd: >set R2 Relais2 1<
2017.07.13 10:37:38 5: R2: Set called with Relais2 (c2), setVal = 1
2017.07.13 10:37:38 5: R2: set packed hex 31 with n to hex 0001
2017.07.13 10:37:38 4: R2: Send called with c2, objLen 1 / reqLen - to id 3, op write, qlen 0, value hex 0001
2017.07.13 10:37:38 4: R2: Send adds fc 5 to 3, for c2 (Relais2), reqLen 1, value hex 0001 at beginning of queue for immediate sending
2017.07.13 10:37:38 5: Zaehler: handle queue check commDelay (0.1) for R2: rest -54.4117631912231
2017.07.13 10:37:38 5: Zaehler: handle queue check sendDelay (0.1) for R2: rest -54.4292252063751
2017.07.13 10:37:38 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:38 4: Zaehler: HandleSendQueue sends fc 5 to id 3, tid 111 for Relais2 (c2), len 1, device R2 (RTU), pdu 050002ff00, V 3.5.25 - 8.5.2017
2017.07.13 10:37:38 5: SW: 03050002ff002c18
2017.07.13 10:37:38 5: R2: ReadAnswer called and remaining timeout is 1.99965500831604 requested reading is Relais2
2017.07.13 10:37:38 5: R2: ReadAnswer got: 03050002ff002c18
2017.07.13 10:37:38 5: Zaehler: ParseFrames got: 03050002ff002c18
2017.07.13 10:37:38 4: Zaehler: ParseFrames got fcode 5 from 3, values 31HeaderLen 4, ActualLen 4, request was for c2 (Relais2), len 1 for module R2
2017.07.13 10:37:38 5: R2: ParseObj called with 31 and start 2, quantity 1, op write
2017.07.13 10:37:38 5: R2: ParseObj shortened bit string: 1 and start adr 2, quantity 1
2017.07.13 10:37:38 5: R2: ParseObj ObjInfo for c2: reading=Relais2, unpack=a, expr=, format=, map=
2017.07.13 10:37:38 5: R2: ParseObj unpacked 31 with a to hex 31 (1)
2017.07.13 10:37:38 4: R2: ParseObj for Relais2 assigns 1
2017.07.13 10:37:38 5: Starting notify loop for R2, 1 event(s), first is Relais2: 1
2017.07.13 10:37:38 5: createNotifyHash
2017.07.13 10:37:38 5: End notify loop for R2
2017.07.13 10:37:38 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:38 5: R2: ReadAnswer done, reading is Relais2, value: 1
2017.07.13 10:37:38 4: WEB: /fhem?cmd=set%20R2%20Relais2%201&XHR=1&fwcsrf=csrf_149267680294838&fw_id=52 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 10:37:38 5: R1: GetUpdate called
2017.07.13 10:37:38 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:43 - Interval 5
2017.07.13 10:37:38 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:38 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:38 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935054.04067
2017.07.13 10:37:38 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:38 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:38 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:38 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:38 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.85869407653809
2017.07.13 10:37:38 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.8987340927124
2017.07.13 10:37:38 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:38 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 246 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:38 5: SW: 030100010001ade8
2017.07.13 10:37:39 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:39 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:39 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:39 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:39 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:39 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:39 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:39 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:39 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:39 5: End notify loop for R1
2017.07.13 10:37:39 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:40 4: WEB_192.168.26.200_50014 POST /fhem?cmd=set%20R2%20Relais2%200&XHR=1&fwcsrf=csrf_149267680294838&fw_id=52; BUFLEN:0
2017.07.13 10:37:40 5: Cmd: >set R2 Relais2 0<
2017.07.13 10:37:40 5: R2: Set called with Relais2 (c2), setVal = 0
2017.07.13 10:37:40 5: R2: set packed hex 30 with n to hex 0000
2017.07.13 10:37:40 4: R2: Send called with c2, objLen 1 / reqLen - to id 3, op write, qlen 0, value hex 0000
2017.07.13 10:37:40 4: R2: Send adds fc 5 to 3, for c2 (Relais2), reqLen 1, value hex 0000 at beginning of queue for immediate sending
2017.07.13 10:37:40 5: Zaehler: handle queue check commDelay (0.1) for R2: rest -1.68536019325256
2017.07.13 10:37:40 5: Zaehler: handle queue check sendDelay (0.1) for R2: rest -1.7057032585144
2017.07.13 10:37:40 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:40 4: Zaehler: HandleSendQueue sends fc 5 to id 3, tid 34 for Relais2 (c2), len 1, device R2 (RTU), pdu 0500020000, V 3.5.25 - 8.5.2017
2017.07.13 10:37:40 5: SW: 0305000200006de8
2017.07.13 10:37:40 5: R2: ReadAnswer called and remaining timeout is 1.9997661113739 requested reading is Relais2
2017.07.13 10:37:40 5: R2: ReadAnswer got: 0305000200006de8
2017.07.13 10:37:40 5: Zaehler: ParseFrames got: 0305000200006de8
2017.07.13 10:37:40 4: Zaehler: ParseFrames got fcode 5 from 3, values 30HeaderLen 4, ActualLen 4, request was for c2 (Relais2), len 1 for module R2
2017.07.13 10:37:40 5: R2: ParseObj called with 30 and start 2, quantity 1, op write
2017.07.13 10:37:40 5: R2: ParseObj shortened bit string: 0 and start adr 2, quantity 1
2017.07.13 10:37:40 5: R2: ParseObj ObjInfo for c2: reading=Relais2, unpack=a, expr=, format=, map=
2017.07.13 10:37:40 5: R2: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:40 4: R2: ParseObj for Relais2 assigns 0
2017.07.13 10:37:40 5: Starting notify loop for R2, 1 event(s), first is Relais2: 0
2017.07.13 10:37:40 5: End notify loop for R2
2017.07.13 10:37:40 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:40 5: R2: ReadAnswer done, reading is Relais2, value: 0
2017.07.13 10:37:40 4: WEB: /fhem?cmd=set%20R2%20Relais2%200&XHR=1&fwcsrf=csrf_149267680294838&fw_id=52 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 10:37:43 5: R2: GetUpdate called
2017.07.13 10:37:43 4: R2: update timer modified: will call GetUpdate in 60.0 seconds at 2017-07-13 10:38:43 - Interval 60
2017.07.13 10:37:43 5: R2: GetUpdate objects from attributes: c2
2017.07.13 10:37:43 5: R2: GetUpdate full object list: c2
2017.07.13 10:37:43 5: R2: GetUpdate check c2 => Relais2, poll = 1, last = 1499935060.60116
2017.07.13 10:37:43 4: R2: GetUpdate will request Relais2
2017.07.13 10:37:43 5: R2: GetUpdate tries to combine read commands
2017.07.13 10:37:43 4: R2: Send called with c2, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:43 4: R2: Send queues fc 1 to 3, for c2 (Relais2), reqLen 1
2017.07.13 10:37:43 5: Zaehler: handle queue check commDelay (0.1) for R2: rest -3.22551798820496
2017.07.13 10:37:43 5: Zaehler: handle queue check sendDelay (0.1) for R2: rest -3.24537491798401
2017.07.13 10:37:43 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:43 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 153 for Relais2 (c2), len 1, device R2 (RTU), pdu 0100020001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:43 5: SW: 0301000200015de8
2017.07.13 10:37:43 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:43 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:43 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c2 (Relais2), len 1 for module R2
2017.07.13 10:37:43 5: R2: ParseObj called with 00 and start 2, quantity 1, op read
2017.07.13 10:37:43 5: R2: ParseObj shortened bit string: 0 and start adr 2, quantity 1
2017.07.13 10:37:43 5: R2: ParseObj ObjInfo for c2: reading=Relais2, unpack=a, expr=, format=, map=
2017.07.13 10:37:43 5: R2: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:43 4: R2: ParseObj for Relais2 assigns 0
2017.07.13 10:37:43 5: Starting notify loop for R2, 1 event(s), first is Relais2: 0
2017.07.13 10:37:43 5: End notify loop for R2
2017.07.13 10:37:43 5: Zaehler: ParseFrames got 1 readings from ParseObj
2017.07.13 10:37:43 5: R1: GetUpdate called
2017.07.13 10:37:43 4: R1: update timer modified: will call GetUpdate in 5.0 seconds at 2017-07-13 10:37:48 - Interval 5
2017.07.13 10:37:43 5: R1: GetUpdate objects from attributes: c1
2017.07.13 10:37:43 5: R1: GetUpdate full object list: c1
2017.07.13 10:37:43 5: R1: GetUpdate check c1 => Relais1, poll = 1, last = 1499935059.04365
2017.07.13 10:37:43 4: R1: GetUpdate will request Relais1
2017.07.13 10:37:43 5: R1: GetUpdate tries to combine read commands
2017.07.13 10:37:43 4: R1: Send called with c1, objLen 1 / reqLen 1 to id 3, op read, qlen 0
2017.07.13 10:37:43 4: R1: Send queues fc 1 to 3, for c1 (Relais1), reqLen 1
2017.07.13 10:37:43 5: Zaehler: handle queue check commDelay (0.1) for R1: rest -4.85701322555542
2017.07.13 10:37:43 5: Zaehler: handle queue check sendDelay (0.1) for R1: rest -4.89870810508728
2017.07.13 10:37:43 5: Zaehler: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 10:37:43 4: Zaehler: HandleSendQueue sends fc 1 to id 3, tid 219 for Relais1 (c1), len 1, device R1 (RTU), pdu 0100010001, V 3.5.25 - 8.5.2017
2017.07.13 10:37:43 5: SW: 030100010001ade8
2017.07.13 10:37:44 5: Zaehler: raw read: 030101005030
2017.07.13 10:37:44 5: Zaehler: ParseFrames got: 030101005030
2017.07.13 10:37:44 4: Zaehler: ParseFrames got fcode 1 from 3, values 00HeaderLen 1, ActualLen 1, request was for c1 (Relais1), len 1 for module R1
2017.07.13 10:37:44 5: R1: ParseObj called with 00 and start 1, quantity 1, op read
2017.07.13 10:37:44 5: R1: ParseObj shortened bit string: 0 and start adr 1, quantity 1
2017.07.13 10:37:44 5: R1: ParseObj ObjInfo for c1: reading=Relais1, unpack=a, expr=, format=, map=
2017.07.13 10:37:44 5: R1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 10:37:44 4: R1: ParseObj for Relais1 assigns 0
2017.07.13 10:37:44 5: Starting notify loop for R1, 1 event(s), first is Relais1: 0
2017.07.13 10:37:44 5: End notify loop for R1
2017.07.13 10:37:44 5: Zaehler: ParseFrames got 1 readings from ParseObj

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Juli 2017, 20:43:53
Hallo Wolfgang,

das funktionierende Relais reagiert korrekt auf den function code 5 mit FF00. das andere offenbar nicht.
Da muss wohl eine andere Firmware laufen.

Anbei eine neue Version des Modbus-Moduls. Da gibt es ein Attribut mit Namen dev-c-brokenFC5. Setz das mal auf 1, dann wird beim Setzen eines Coils entgegen der Modbus-Spec 1 als Wert und nicht FF00 gesendet. Sollte mit verbose 5 zu sehen sein.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 13 Juli 2017, 21:28:57
Hallo Stefan

Geht nicht.
attr Re dev-c-brokenFC5 1

2017.07.13 21:22:44 5: Initializing Type Library:
2017.07.13 21:22:44 1: Including fhem.cfg
2017.07.13 21:22:44 5: Cmd: >attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride<
2017.07.13 21:22:44 5: Cmd: >attr global autoload_undefined_devices 1<
2017.07.13 21:22:44 5: Cmd: >attr global backupdir /nas/fhem/backup<
2017.07.13 21:22:44 5: Cmd: >attr global logfile ./log/fhem-%Y-%m.log<
2017.07.13 21:22:44 5: Cmd: >attr global modpath .<
2017.07.13 21:22:44 5: Cmd: >attr global motd SecurityCheck:

WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.
telnetPort has no associated allowed device with password/globalpassword.

Restart FHEM for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.
<
2017.07.13 21:22:44 5: Cmd: >attr global statefile ./log/fhem.save<
2017.07.13 21:22:44 5: Cmd: >attr global updateInBackground 1<
2017.07.13 21:22:44 5: Cmd: >attr global verbose 5<
2017.07.13 21:22:44 5: Cmd: >define telnetPort telnet 7072 global<
2017.07.13 21:22:44 5: Loading ./FHEM/98_telnet.pm
2017.07.13 21:22:44 3: telnetPort: port 7072 opened
2017.07.13 21:22:44 5: Cmd: >define WEB FHEMWEB 8083 global<
2017.07.13 21:22:44 5: Loading ./FHEM/01_FHEMWEB.pm
2017.07.13 21:22:45 3: WEB: port 8083 opened
2017.07.13 21:22:45 5: Cmd: >attr WEB editConfig 1<
2017.07.13 21:22:45 5: Cmd: >attr WEB longpoll 1<
2017.07.13 21:22:45 5: Cmd: >attr WEB menuEntries Backup,/fhem?cmd=backup<
2017.07.13 21:22:45 5: Cmd: >attr WEB room hidden<
2017.07.13 21:22:45 5: Cmd: >attr WEB stylesheetPrefix touchpad<
2017.07.13 21:22:45 5: Cmd: >define allowed_WEB allowed<
2017.07.13 21:22:45 5: Loading ./FHEM/96_allowed.pm
2017.07.13 21:22:45 5: Cmd: >attr allowed_WEB validFor WEB<
2017.07.13 21:22:45 5: Cmd: >define WEBphone FHEMWEB 8084 global<
2017.07.13 21:22:45 3: WEBphone: port 8084 opened
2017.07.13 21:22:45 5: Cmd: >attr WEBphone room hidden<
2017.07.13 21:22:45 5: Cmd: >attr WEBphone stylesheetPrefix darktouchpad<
2017.07.13 21:22:45 5: Cmd: >define allowed_WEBphone allowed<
2017.07.13 21:22:45 5: Cmd: >attr allowed_WEBphone validFor WEBphone<
2017.07.13 21:22:45 5: Cmd: >define WEBtablet FHEMWEB 8085 global<
2017.07.13 21:22:45 3: WEBtablet: port 8085 opened
2017.07.13 21:22:45 5: Cmd: >attr WEBtablet room hidden<
2017.07.13 21:22:45 5: Cmd: >attr WEBtablet stylesheetPrefix darktouchpad<
2017.07.13 21:22:45 5: Cmd: >define allowed_WEBtablet allowed<
2017.07.13 21:22:45 5: Cmd: >attr allowed_WEBtablet validFor WEBtablet<
2017.07.13 21:22:45 5: Cmd: >define Logfile FileLog ./log/fhem-%Y-%m.log fakelog<
2017.07.13 21:22:45 5: Loading ./FHEM/92_FileLog.pm
2017.07.13 21:22:45 5: Cmd: >define autocreate autocreate<
2017.07.13 21:22:45 5: Loading ./FHEM/98_autocreate.pm
2017.07.13 21:22:45 5: Cmd: >attr autocreate disable 1<
2017.07.13 21:22:45 5: Cmd: >attr autocreate filelog ./log/%NAME-%Y.log<
2017.07.13 21:22:45 5: Cmd: >define eventTypes eventTypes ./log/eventTypes.txt<
2017.07.13 21:22:45 5: Loading ./FHEM/91_eventTypes.pm
2017.07.13 21:22:45 2: eventTypes: loaded 291 events from ./log/eventTypes.txt
2017.07.13 21:22:45 5: Cmd: >define initialUsbCheck notify Diode:Pinlevel:.*|Thermometer:.*|global:INITIALIZED usb create<
2017.07.13 21:22:45 5: Loading ./FHEM/91_notify.pm
2017.07.13 21:22:45 5: Cmd: >define RelaisUSB Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1<
2017.07.13 21:22:45 5: Loading ./FHEM/98_Modbus.pm
2017.07.13 21:22:45 5: Cmd: >define Re ModbusAttr 1 10<
2017.07.13 21:22:45 5: Loading ./FHEM/98_ModbusAttr.pm
2017.07.13 21:22:45 3: Re: defined with id 1, interval 10, protocol RTU
2017.07.13 21:22:45 5: Cmd: >attr Re IODev RelaisUSB<
2017.07.13 21:22:45 5: Re: Attr IODev - using RelaisUSB
2017.07.13 21:22:45 5: Cmd: >attr Re dev-c-brokenFC5 1<
2017.07.13 21:22:45 5: Cmd: >attr Re dev-c-combine 5<
2017.07.13 21:22:45 5: Cmd: >attr Re dev-c-defPoll 1<
2017.07.13 21:22:45 5: Cmd: >attr Re obj-c3-hint 0,1<
2017.07.13 21:22:45 5: Cmd: >attr Re obj-c3-reading Relais3<
2017.07.13 21:22:45 5: Cmd: >attr Re obj-c3-set 1<
2017.07.13 21:22:45 5: Cmd: >attr Re room Relais<
2017.07.13 21:22:45 5: Cmd: >attr Re stateFormat Relais3<
2017.07.13 21:22:45 5: Cmd: >attr Re webCmd Relais3<
2017.07.13 21:22:45 5: Cmd: >define Digi1 ModbusAttr 1 10<
2017.07.13 21:22:45 3: Digi1: defined with id 1, interval 10, protocol RTU
2017.07.13 21:22:45 5: Cmd: >attr Digi1 IODev RelaisUSB<
2017.07.13 21:22:45 5: Digi1: Attr IODev - using RelaisUSB
2017.07.13 21:22:45 5: Cmd: >attr Digi1 dev-d-combine 5<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 dev-d-defPoll 1<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 obj-d1-reading D1<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 obj-d2-reading D2<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 obj-d3-reading D3<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 obj-d4-reading D4<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 room Relais<
2017.07.13 21:22:45 5: Cmd: >attr Digi1 stateFormat D1 D2 D3 D4<
2017.07.13 21:22:45 1: Including ./log/fhem.save
2017.07.13 21:22:45 5: Cmd: >setstate Digi1 0 0 0 0<
2017.07.13 21:22:45 5: Cmd: >setstate Digi1 2017-07-13 21:22:41 D1 0<
2017.07.13 21:22:45 5: Cmd: >setstate Digi1 2017-07-13 21:22:41 D2 0<
2017.07.13 21:22:45 5: Cmd: >setstate Digi1 2017-07-13 21:22:41 D3 0<
2017.07.13 21:22:45 5: Cmd: >setstate Digi1 2017-07-13 21:22:41 D4 0<
2017.07.13 21:22:45 5: Cmd: >setstate Logfile active<
2017.07.13 21:22:45 5: Cmd: >setstate Re 0<
2017.07.13 21:22:45 5: Cmd: >setstate Re 2017-07-12 23:57:11 Relais1 0<
2017.07.13 21:22:45 5: Cmd: >setstate Re 2017-07-13 21:22:41 Relais3 0<
2017.07.13 21:22:45 5: Cmd: >setstate Re 2017-07-11 22:55:39 Relais7 0<
2017.07.13 21:22:45 5: Cmd: >setstate RelaisUSB opened<
2017.07.13 21:22:45 5: Cmd: >setstate RelaisUSB 2017-07-13 21:18:08 state opened<
2017.07.13 21:22:45 5: Cmd: >setstate allowed_WEB validFor:WEB<
2017.07.13 21:22:45 5: Cmd: >setstate allowed_WEB 2017-07-13 21:18:07 state validFor:WEB<
2017.07.13 21:22:45 5: Cmd: >setstate allowed_WEBphone validFor:WEBphone<
2017.07.13 21:22:45 5: Cmd: >setstate allowed_WEBphone 2017-07-13 21:18:07 state validFor:WEBphone<
2017.07.13 21:22:45 5: Cmd: >setstate allowed_WEBtablet validFor:WEBtablet<
2017.07.13 21:22:45 5: Cmd: >setstate allowed_WEBtablet 2017-07-13 21:18:07 state validFor:WEBtablet<
2017.07.13 21:22:45 5: Cmd: >setstate autocreate disabled<
2017.07.13 21:22:45 5: Cmd: >setstate eventTypes active<
2017.07.13 21:22:45 5: Cmd: >setstate global no definition<
2017.07.13 21:22:45 5: Cmd: >setstate initialUsbCheck active<
2017.07.13 21:22:45 5: Cmd: >setstate initialUsbCheck 2017-07-13 21:18:07 state active<
2017.07.13 21:22:45 5: Starting notify loop for global, 1 event(s), first is INITIALIZED
2017.07.13 21:22:45 5: createNotifyHash
2017.07.13 21:22:45 3: Digi1: Notify / Init: using RelaisUSB for communication
2017.07.13 21:22:45 4: Digi1: update timer modified: will call GetUpdate in 1.0 seconds at 2017-07-13 21:22:46 - Interval 10
2017.07.13 21:22:45 3: Re: Notify / Init: using RelaisUSB for communication
2017.07.13 21:22:45 4: Re: update timer modified: will call GetUpdate in 1.0 seconds at 2017-07-13 21:22:46 - Interval 10
2017.07.13 21:22:45 3: RelaisUSB: Notify / Init: opening connection
2017.07.13 21:22:45 4: RelaisUSB: trying to open connection to /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1
2017.07.13 21:22:45 3: Opening RelaisUSB device /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
2017.07.13 21:22:45 3: Setting RelaisUSB serial parameters to 9600,8,N,1
2017.07.13 21:22:45 3: RelaisUSB device opened
2017.07.13 21:22:45 5: Triggering initialUsbCheck
2017.07.13 21:22:45 4: initialUsbCheck exec usb create
2017.07.13 21:22:45 5: Cmd: >usb create<
2017.07.13 21:22:45 1: usb create starting
2017.07.13 21:22:45 4: ### ttyAMA0: checking if it is a CUL
2017.07.13 21:22:45 3: Probing CUL device /dev/ttyAMA0
2017.07.13 21:22:45 5: SW: 0a
2017.07.13 21:22:45 5: SW: 560a
2017.07.13 21:22:45 4: got wrong answer for a CUL
2017.07.13 21:22:45 4: ### ttyAMA0: checking if it is a TCM_ESP3
2017.07.13 21:22:45 3: Probing TCM_ESP3 device /dev/ttyAMA0
2017.07.13 21:22:46 5: SW: 5500010005700838
2017.07.13 21:22:46 4: got wrong answer for a TCM_ESP3
2017.07.13 21:22:46 4: ### ttyAMA0: checking if it is a ZWDongle
2017.07.13 21:22:46 3: Probing ZWDongle device /dev/ttyAMA0
2017.07.13 21:22:46 5: SW: 01030020dc06
2017.07.13 21:22:46 4: got wrong answer for a ZWDongle
2017.07.13 21:22:46 4: ### ttyAMA0: checking if it is a FRM
2017.07.13 21:22:46 3: Probing FRM device /dev/ttyAMA0
2017.07.13 21:22:46 5: SW: f9
2017.07.13 21:22:51 5: SW: f079f7
2017.07.13 21:22:51 4: got wrong answer for a FRM
2017.07.13 21:22:51 4: ### ttyS0: checking if it is a CUL
2017.07.13 21:22:51 3: Probing CUL device /dev/ttyS0
2017.07.13 21:22:51 3: Can't open /dev/ttyS0: Keine Berechtigung
2017.07.13 21:22:51 4: cannot open the device
2017.07.13 21:22:51 4: ### ttyUSB0: checking if it is a TCM_ESP3
2017.07.13 21:22:51 3: Probing TCM_ESP3 device /dev/ttyUSB0
2017.07.13 21:22:51 5: SW: 5500010005700838
2017.07.13 21:22:51 4: got wrong answer for a TCM_ESP3
2017.07.13 21:22:51 4: ### ttyUSB0: checking if it is a TCM_ESP2
2017.07.13 21:22:51 3: Probing TCM_ESP2 device /dev/ttyUSB0
2017.07.13 21:22:51 5: SW: a55aab5800000000000000000003
2017.07.13 21:22:52 4: got wrong answer for a TCM_ESP2
2017.07.13 21:22:52 4: ### ttyUSB0: checking if it is a FHZ
2017.07.13 21:22:52 3: Probing FHZ device /dev/ttyUSB0
2017.07.13 21:22:52 5: SW: 8105044fc90185
2017.07.13 21:22:52 4: got wrong answer for a FHZ
2017.07.13 21:22:52 4: ### ttyUSB0: checking if it is a TRX
2017.07.13 21:22:52 3: Probing TRX device /dev/ttyUSB0
2017.07.13 21:22:52 5: SW: 0d00000000000000000000000000
2017.07.13 21:22:52 5: SW: 0d00000102000000000000000000
2017.07.13 21:22:52 4: got wrong answer for a TRX
2017.07.13 21:22:52 4: ### ttyUSB0: checking if it is a ZWDongle
2017.07.13 21:22:52 3: Probing ZWDongle device /dev/ttyUSB0
2017.07.13 21:22:53 5: SW: 01030020dc06
2017.07.13 21:22:53 4: got wrong answer for a ZWDongle
2017.07.13 21:22:53 4: ### ttyUSB0: checking if it is a FRM
2017.07.13 21:22:53 3: Probing FRM device /dev/ttyUSB0
2017.07.13 21:22:53 5: SW: f9
2017.07.13 21:22:58 5: SW: f079f7
2017.07.13 21:22:58 4: got wrong answer for a FRM
2017.07.13 21:22:58 4: ### ttyUSB1: checking if it is a TCM_ESP3
2017.07.13 21:22:58 4: ttyUSB1 is already used by the fhem device RelaisUSB
2017.07.13 21:22:58 1: usb create end
2017.07.13 21:22:58 5: End notify loop for global
2017.07.13 21:22:58 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth. telnetPort has no associated allowed device with password/globalpassword.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2017.07.13 21:22:58 0: Featurelevel: 5.8
2017.07.13 21:22:58 0: Server started with 15 defined entities (fhem.pl:14634/2017-07-03 perl:5.020002 os:linux user:fhem pid:7792)
2017.07.13 21:22:58 5: Digi1: GetUpdate called
2017.07.13 21:22:58 4: Digi1: update timer modified: will call GetUpdate in 10.0 seconds at 2017-07-13 21:23:08 - Interval 10
2017.07.13 21:22:58 5: Digi1: GetUpdate objects from attributes: d3 d4 d1 d2
2017.07.13 21:22:58 5: Digi1: GetUpdate full object list: d1 d2 d3 d4
2017.07.13 21:22:58 5: Digi1: GetUpdate check d1 => D1, poll = 1, last = 0
2017.07.13 21:22:58 4: Digi1: GetUpdate will request D1
2017.07.13 21:22:58 5: Digi1: GetUpdate check d2 => D2, poll = 1, last = 0
2017.07.13 21:22:58 4: Digi1: GetUpdate will request D2
2017.07.13 21:22:58 5: Digi1: GetUpdate check d3 => D3, poll = 1, last = 0
2017.07.13 21:22:58 4: Digi1: GetUpdate will request D3
2017.07.13 21:22:58 5: Digi1: GetUpdate check d4 => D4, poll = 1, last = 0
2017.07.13 21:22:58 4: Digi1: GetUpdate will request D4
2017.07.13 21:22:58 5: Digi1: GetUpdate tries to combine read commands
2017.07.13 21:22:58 5: Digi1: Combine D1 (d1) with D2 (d2), span=2, max=5, drop read for d2
2017.07.13 21:22:58 5: Digi1: Combine D1 (d1) with D3 (d3), span=3, max=5, drop read for d3
2017.07.13 21:22:58 5: Digi1: Combine D1 (d1) with D4 (d4), span=4, max=5, drop read for d4
2017.07.13 21:22:58 4: Digi1: Send called with d1, objLen 1 / reqLen 4 to id 1, op read, qlen 0
2017.07.13 21:22:58 4: Digi1: Send queues fc 2 to 1, for d1 (D1), reqLen 4
2017.07.13 21:22:58 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:22:58 4: RelaisUSB: HandleSendQueue sends fc 2 to id 1, tid 127 for D1 (d1), len 4, device Digi1 (RTU), pdu 0200010004, V 3.5.26 - 13.7.2017
2017.07.13 21:22:58 5: SW: 0102000100042809
2017.07.13 21:22:58 5: Re: GetUpdate called
2017.07.13 21:22:58 4: Re: update timer modified: will call GetUpdate in 10.0 seconds at 2017-07-13 21:23:08 - Interval 10
2017.07.13 21:22:58 5: Re: GetUpdate objects from attributes: c3
2017.07.13 21:22:58 5: Re: GetUpdate full object list: c3
2017.07.13 21:22:58 5: Re: GetUpdate check c3 => Relais3, poll = 1, last = 0
2017.07.13 21:22:58 4: Re: GetUpdate will request Relais3
2017.07.13 21:22:58 5: Re: GetUpdate tries to combine read commands
2017.07.13 21:22:58 4: Re: Send called with c3, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.07.13 21:22:58 4: Re: Send queues fc 1 to 1, for c3 (Relais3), reqLen 1
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49930
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49931
2017.07.13 21:22:58 4: WEB_192.168.25.164_49930 GET /fhem?XHR=1&inform=type=status;filter=room=Relais;since=1499973759.203;fmt=JSON&fw_id=40&timestamp=1499973768518; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49931 GET /fhem?room=Unsorted; BUFLEN:0
2017.07.13 21:22:58 4: WEB: /fhem?room=Unsorted / RL:1849 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49932
2017.07.13 21:22:58 5: RelaisUSB: raw read: 01020100a188
2017.07.13 21:22:58 5: RelaisUSB: ParseFrames got: 01020100a188
2017.07.13 21:22:58 4: RelaisUSB: ParseFrames got fcode 2 from 1, values 00HeaderLen 1, ActualLen 1, request was for d1 (D1), len 4 for module Digi1
2017.07.13 21:22:58 5: Digi1: ParseObj called with 00 and start 1, quantity 4, op read
2017.07.13 21:22:58 5: Digi1: ParseObj shortened bit string: 0000 and start adr 1, quantity 4
2017.07.13 21:22:58 5: Digi1: ParseObj ObjInfo for d1: reading=D1, unpack=a, expr=, format=, map=
2017.07.13 21:22:58 5: Digi1: ParseObj unpacked 30303030 with a to hex 30 (0)
2017.07.13 21:22:58 4: Digi1: ParseObj for D1 assigns 0
2017.07.13 21:22:58 5: Digi1: ParseObj moves to next object, skip 1 to d2
2017.07.13 21:22:58 5: Digi1: ParseObj ObjInfo for d2: reading=D2, unpack=a, expr=, format=, map=
2017.07.13 21:22:58 5: Digi1: ParseObj unpacked 303030 with a to hex 30 (0)
2017.07.13 21:22:58 4: Digi1: ParseObj for D2 assigns 0
2017.07.13 21:22:58 5: Digi1: ParseObj moves to next object, skip 1 to d3
2017.07.13 21:22:58 5: Digi1: ParseObj ObjInfo for d3: reading=D3, unpack=a, expr=, format=, map=
2017.07.13 21:22:58 5: Digi1: ParseObj unpacked 3030 with a to hex 30 (0)
2017.07.13 21:22:58 4: Digi1: ParseObj for D3 assigns 0
2017.07.13 21:22:58 5: Digi1: ParseObj ObjInfo for d4: reading=D4, unpack=a, expr=, format=, map=
2017.07.13 21:22:58 5: Digi1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:22:58 4: Digi1: ParseObj for D4 assigns 0
2017.07.13 21:22:58 5: Starting notify loop for Digi1, 4 event(s), first is D1: 0
2017.07.13 21:22:58 5: createNotifyHash
2017.07.13 21:22:58 5: End notify loop for Digi1
2017.07.13 21:22:58 5: RelaisUSB: ParseFrames got 4 readings from ParseObj
2017.07.13 21:22:58 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:22:58 4: RelaisUSB: HandleSendQueue sends fc 1 to id 1, tid 243 for Relais3 (c3), len 1, device Re (RTU), pdu 0100030001, V 3.5.26 - 13.7.2017
2017.07.13 21:22:58 5: SW: 0101000300010dca
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49933
2017.07.13 21:22:58 4: Connection closed for WEB_192.168.25.164_49931: EOF
2017.07.13 21:22:58 4: WEB_192.168.25.164_49932 GET /fhem?room=Unsorted; BUFLEN:0
2017.07.13 21:22:58 4: WEB: /fhem?room=Unsorted / RL:1848 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:22:58 4: Connection closed for WEB_192.168.25.164_49932: EOF
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49934
2017.07.13 21:22:58 4: WEB_192.168.25.164_49933 GET /fhem?room=Unsorted; BUFLEN:0
2017.07.13 21:22:58 4: WEB: /fhem?room=Unsorted / RL:1848 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:22:58 5: RelaisUSB: raw read: 010101005188
2017.07.13 21:22:58 5: RelaisUSB: ParseFrames got: 010101005188
2017.07.13 21:22:58 4: RelaisUSB: ParseFrames got fcode 1 from 1, values 00HeaderLen 1, ActualLen 1, request was for c3 (Relais3), len 1 for module Re
2017.07.13 21:22:58 5: Re: ParseObj called with 00 and start 3, quantity 1, op read
2017.07.13 21:22:58 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.13 21:22:58 5: Re: ParseObj ObjInfo for c3: reading=Relais3, unpack=a, expr=, format=, map=
2017.07.13 21:22:58 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:22:58 4: Re: ParseObj for Relais3 assigns 0
2017.07.13 21:22:58 5: Starting notify loop for Re, 1 event(s), first is Relais3: 0
2017.07.13 21:22:58 5: End notify loop for Re
2017.07.13 21:22:58 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49935
2017.07.13 21:22:58 4: Connection closed for WEB_192.168.25.164_49933: EOF
2017.07.13 21:22:58 4: WEB_192.168.25.164_49934 GET /fhem?room=Unsorted; BUFLEN:0
2017.07.13 21:22:58 4: WEB: /fhem?room=Unsorted / RL:1848 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:22:58 4: Connection closed for WEB_192.168.25.164_49934: EOF
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /; BUFLEN:0
2017.07.13 21:22:58 4: WEB: redirecting / to /fhem
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49936
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49937
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49938
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /fhem; BUFLEN:0
2017.07.13 21:22:58 4: WEB: /fhem / RL:1443 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:22:58 4: Connection closed for WEB_192.168.25.164_49930: EOF
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49939
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /fhem/pgm2/style.css?v=1499973765; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 GET /fhem/pgm2/jquery-ui.min.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:22:58 4: Connection accepted from WEB_192.168.25.164_49940
2017.07.13 21:22:58 4: WEB_192.168.25.164_49936 GET /fhem/pgm2/jquery.min.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49936 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49940 GET /fhem/pgm2/fhemweb_fbcalllist.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49940 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49938 GET /fhem/pgm2/fhemweb.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49938 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49939 GET /fhem/pgm2/fhemweb_colorpicker.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 GET /fhem/pgm2/fhemweb_knob.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49940 GET /fhem/pgm2/fhemweb_readingsHistory.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49940 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49938 GET /fhem/pgm2/fhemweb_sortable.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49938 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49939 GET /fhem/pgm2/fhemweb_uzsu.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49936 GET /fhem/pgm2/fhemweb_readingsGroup.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49936 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 GET /fhem/pgm2/fhemweb_weekprofile.js; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 GET /fhem/images/default/icoEverything.png; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /fhem/pgm2/defaultCommon.css; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /fhem/pgm2/dashboard_style.css; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /fhem/images/default/fhemicon.png; BUFLEN:0
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 => 304 Not Modified
2017.07.13 21:22:58 4: WEB_192.168.25.164_49935 GET /fhem?XHR=1&inform=type=status;filter=;since=1499973777;fmt=JSON&fw_id=44&timestamp=1499973779995; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 GET /fhem?room=Relais; BUFLEN:0
2017.07.13 21:23:01 4: WEB: /fhem?room=Relais / RL:1511 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:23:01 4: Connection closed for WEB_192.168.25.164_49935: EOF
2017.07.13 21:23:01 4: Connection accepted from WEB_192.168.25.164_49941
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 GET /fhem/pgm2/jquery.min.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49936 GET /fhem/pgm2/jquery-ui.min.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49936 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 GET /fhem/pgm2/fhemweb.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49938 GET /fhem/pgm2/fhemweb_colorpicker.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49938 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 GET /fhem/pgm2/defaultCommon.css; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49936 GET /fhem/pgm2/fhemweb_readingsGroup.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49936 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 GET /fhem/pgm2/fhemweb_readingsHistory.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49941 GET /fhem/pgm2/fhemweb_knob.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49941 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49940 GET /fhem/pgm2/fhemweb_fbcalllist.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49940 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 GET /fhem/pgm2/fhemweb_uzsu.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49937 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49936 GET /fhem/pgm2/fhemweb_weekprofile.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49936 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 GET /fhem/pgm2/dashboard_style.css; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49938 GET /fhem/pgm2/fhemweb_sortable.js; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49938 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 GET /fhem/images/default/icoEverything.png; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 GET /fhem/images/default/fhemicon.png; BUFLEN:0
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 => 304 Not Modified
2017.07.13 21:23:01 4: WEB_192.168.25.164_49939 GET /fhem?XHR=1&inform=type=status;filter=room=Relais;since=1499973780;fmt=JSON&fw_id=46&timestamp=1499973782398; BUFLEN:0
2017.07.13 21:23:04 4: WEB_192.168.25.164_49938 POST /fhem?cmd=set%20Re%20Relais3%201&XHR=1&fwcsrf=csrf_114255326907145&fw_id=46; BUFLEN:0
2017.07.13 21:23:04 5: Cmd: >set Re Relais3 1<
2017.07.13 21:23:04 5: Re: Set called with Relais3 (c3), setVal = 1
2017.07.13 21:23:04 5: Re: set packed hex 31 with n to hex 0001
2017.07.13 21:23:04 4: Re: Send called with c3, objLen 1 / reqLen - to id 1, op write, qlen 0, value hex 0001
2017.07.13 21:23:04 4: Re: Send adds fc 5 to 1, for c3 (Relais3), reqLen 1, value hex 0001 at beginning of queue for immediate sending
2017.07.13 21:23:04 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -5.3435480594635
2017.07.13 21:23:04 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -5.36908507347107
2017.07.13 21:23:04 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:23:04 4: RelaisUSB: HandleSendQueue sends fc 5 to id 1, tid 112 for Relais3 (c3), len 1, device Re (RTU), pdu 0500030001, V 3.5.26 - 13.7.2017
2017.07.13 21:23:04 5: SW: 010500030001fc0a
2017.07.13 21:23:04 5: Re: ReadAnswer called and remaining timeout is 1.99986004829407 requested reading is Relais3
2017.07.13 21:23:04 5: Re: ReadAnswer got: 0105000300003dca
2017.07.13 21:23:04 5: RelaisUSB: ParseFrames got: 0105000300003dca
2017.07.13 21:23:04 5: RelaisUSB: ParseFrames uses fix for broken fcode 5
2017.07.13 21:23:04 4: RelaisUSB: ParseFrames got fcode 5 from 1, values 30HeaderLen 4, ActualLen 4, request was for c3 (Relais3), len 1 for module Re
2017.07.13 21:23:04 5: Re: ParseObj called with 30 and start 3, quantity 1, op write
2017.07.13 21:23:04 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.13 21:23:04 5: Re: ParseObj ObjInfo for c3: reading=Relais3, unpack=a, expr=, format=, map=
2017.07.13 21:23:04 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:23:04 4: Re: ParseObj for Relais3 assigns 0
2017.07.13 21:23:04 5: Starting notify loop for Re, 1 event(s), first is Relais3: 0
2017.07.13 21:23:04 5: createNotifyHash
2017.07.13 21:23:04 5: End notify loop for Re
2017.07.13 21:23:04 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.13 21:23:04 5: Re: ReadAnswer done, reading is Relais3, value: 0
2017.07.13 21:23:04 4: WEB: /fhem?cmd=set%20Re%20Relais3%201&XHR=1&fwcsrf=csrf_114255326907145&fw_id=46 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:23:06 4: WEB_192.168.25.164_49938 POST /fhem?cmd=set%20Re%20Relais3%201&XHR=1&fwcsrf=csrf_114255326907145&fw_id=46; BUFLEN:0
2017.07.13 21:23:06 5: Cmd: >set Re Relais3 1<
2017.07.13 21:23:06 5: Re: Set called with Relais3 (c3), setVal = 1
2017.07.13 21:23:06 5: Re: set packed hex 31 with n to hex 0001
2017.07.13 21:23:06 4: Re: Send called with c3, objLen 1 / reqLen - to id 1, op write, qlen 0, value hex 0001
2017.07.13 21:23:06 4: Re: Send adds fc 5 to 1, for c3 (Relais3), reqLen 1, value hex 0001 at beginning of queue for immediate sending
2017.07.13 21:23:06 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -1.85197305679321
2017.07.13 21:23:06 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -1.87171101570129
2017.07.13 21:23:06 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:23:06 4: RelaisUSB: HandleSendQueue sends fc 5 to id 1, tid 162 for Relais3 (c3), len 1, device Re (RTU), pdu 0500030001, V 3.5.26 - 13.7.2017
2017.07.13 21:23:06 5: SW: 010500030001fc0a
2017.07.13 21:23:06 5: Re: ReadAnswer called and remaining timeout is 1.99986410140991 requested reading is Relais3
2017.07.13 21:23:06 5: Re: ReadAnswer got: 0105000300003dca
2017.07.13 21:23:06 5: RelaisUSB: ParseFrames got: 0105000300003dca
2017.07.13 21:23:06 5: RelaisUSB: ParseFrames uses fix for broken fcode 5
2017.07.13 21:23:06 4: RelaisUSB: ParseFrames got fcode 5 from 1, values 30HeaderLen 4, ActualLen 4, request was for c3 (Relais3), len 1 for module Re
2017.07.13 21:23:06 5: Re: ParseObj called with 30 and start 3, quantity 1, op write
2017.07.13 21:23:06 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.13 21:23:06 5: Re: ParseObj ObjInfo for c3: reading=Relais3, unpack=a, expr=, format=, map=
2017.07.13 21:23:06 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:23:06 4: Re: ParseObj for Relais3 assigns 0
2017.07.13 21:23:06 5: Starting notify loop for Re, 1 event(s), first is Relais3: 0
2017.07.13 21:23:06 5: End notify loop for Re
2017.07.13 21:23:06 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.13 21:23:06 5: Re: ReadAnswer done, reading is Relais3, value: 0
2017.07.13 21:23:06 4: WEB: /fhem?cmd=set%20Re%20Relais3%201&XHR=1&fwcsrf=csrf_114255326907145&fw_id=46 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.07.13 21:23:08 5: Digi1: GetUpdate called
2017.07.13 21:23:08 4: Digi1: update timer modified: will call GetUpdate in 10.0 seconds at 2017-07-13 21:23:18 - Interval 10
2017.07.13 21:23:08 5: Digi1: GetUpdate objects from attributes: d3 d4 d1 d2
2017.07.13 21:23:08 5: Digi1: GetUpdate full object list: d1 d2 d3 d4
2017.07.13 21:23:08 5: Digi1: GetUpdate check d1 => D1, poll = 1, last = 1499973778.6172
2017.07.13 21:23:08 4: Digi1: GetUpdate will request D1
2017.07.13 21:23:08 5: Digi1: GetUpdate check d2 => D2, poll = 1, last = 1499973778.61792
2017.07.13 21:23:08 4: Digi1: GetUpdate will request D2
2017.07.13 21:23:08 5: Digi1: GetUpdate check d3 => D3, poll = 1, last = 1499973778.61856
2017.07.13 21:23:08 4: Digi1: GetUpdate will request D3
2017.07.13 21:23:08 5: Digi1: GetUpdate check d4 => D4, poll = 1, last = 1499973778.6191
2017.07.13 21:23:08 4: Digi1: GetUpdate will request D4
2017.07.13 21:23:08 5: Digi1: GetUpdate tries to combine read commands
2017.07.13 21:23:08 5: Digi1: Combine D1 (d1) with D2 (d2), span=2, max=5, drop read for d2
2017.07.13 21:23:08 5: Digi1: Combine D1 (d1) with D3 (d3), span=3, max=5, drop read for d3
2017.07.13 21:23:08 5: Digi1: Combine D1 (d1) with D4 (d4), span=4, max=5, drop read for d4
2017.07.13 21:23:08 4: Digi1: Send called with d1, objLen 1 / reqLen 4 to id 1, op read, qlen 0
2017.07.13 21:23:08 4: Digi1: Send queues fc 2 to 1, for d1 (D1), reqLen 4
2017.07.13 21:23:08 5: RelaisUSB: handle queue check commDelay (0.1) for Digi1: rest -9.72460508346558
2017.07.13 21:23:08 5: RelaisUSB: handle queue check sendDelay (0.1) for Digi1: rest -9.89878797531128
2017.07.13 21:23:08 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:23:08 4: RelaisUSB: HandleSendQueue sends fc 2 to id 1, tid 183 for D1 (d1), len 4, device Digi1 (RTU), pdu 0200010004, V 3.5.26 - 13.7.2017
2017.07.13 21:23:08 5: SW: 0102000100042809
2017.07.13 21:23:08 5: Re: GetUpdate called
2017.07.13 21:23:08 4: Re: update timer modified: will call GetUpdate in 10.0 seconds at 2017-07-13 21:23:18 - Interval 10
2017.07.13 21:23:08 5: Re: GetUpdate objects from attributes: c3
2017.07.13 21:23:08 5: Re: GetUpdate full object list: c3
2017.07.13 21:23:08 5: Re: GetUpdate check c3 => Relais3, poll = 1, last = 1499973786.09052
2017.07.13 21:23:08 4: Re: GetUpdate will request Relais3
2017.07.13 21:23:08 5: Re: GetUpdate tries to combine read commands
2017.07.13 21:23:08 4: Re: Send called with c3, objLen 1 / reqLen 1 to id 1, op read, qlen 0
2017.07.13 21:23:08 4: Re: Send queues fc 1 to 1, for c3 (Relais3), reqLen 1
2017.07.13 21:23:08 5: RelaisUSB: raw read: 01020100a188
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames got: 01020100a188
2017.07.13 21:23:08 4: RelaisUSB: ParseFrames got fcode 2 from 1, values 00HeaderLen 1, ActualLen 1, request was for d1 (D1), len 4 for module Digi1
2017.07.13 21:23:08 5: Digi1: ParseObj called with 00 and start 1, quantity 4, op read
2017.07.13 21:23:08 5: Digi1: ParseObj shortened bit string: 0000 and start adr 1, quantity 4
2017.07.13 21:23:08 5: Digi1: ParseObj ObjInfo for d1: reading=D1, unpack=a, expr=, format=, map=
2017.07.13 21:23:08 5: Digi1: ParseObj unpacked 30303030 with a to hex 30 (0)
2017.07.13 21:23:08 4: Digi1: ParseObj for D1 assigns 0
2017.07.13 21:23:08 5: Digi1: ParseObj moves to next object, skip 1 to d2
2017.07.13 21:23:08 5: Digi1: ParseObj ObjInfo for d2: reading=D2, unpack=a, expr=, format=, map=
2017.07.13 21:23:08 5: Digi1: ParseObj unpacked 303030 with a to hex 30 (0)
2017.07.13 21:23:08 4: Digi1: ParseObj for D2 assigns 0
2017.07.13 21:23:08 5: Digi1: ParseObj moves to next object, skip 1 to d3
2017.07.13 21:23:08 5: Digi1: ParseObj ObjInfo for d3: reading=D3, unpack=a, expr=, format=, map=
2017.07.13 21:23:08 5: Digi1: ParseObj unpacked 3030 with a to hex 30 (0)
2017.07.13 21:23:08 4: Digi1: ParseObj for D3 assigns 0
2017.07.13 21:23:08 5: Digi1: ParseObj ObjInfo for d4: reading=D4, unpack=a, expr=, format=, map=
2017.07.13 21:23:08 5: Digi1: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:23:08 4: Digi1: ParseObj for D4 assigns 0
2017.07.13 21:23:08 5: Starting notify loop for Digi1, 4 event(s), first is D1: 0
2017.07.13 21:23:08 5: End notify loop for Digi1
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames got 4 readings from ParseObj
2017.07.13 21:23:08 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -2.28300714492798
2017.07.13 21:23:08 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -2.30344009399414
2017.07.13 21:23:08 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:23:08 4: RelaisUSB: HandleSendQueue sends fc 1 to id 1, tid 60 for Relais3 (c3), len 1, device Re (RTU), pdu 0100030001, V 3.5.26 - 13.7.2017
2017.07.13 21:23:08 5: SW: 0101000300010dca
2017.07.13 21:23:08 5: RelaisUSB: raw read: 010101005188
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames got: 010101005188
2017.07.13 21:23:08 4: RelaisUSB: ParseFrames got fcode 1 from 1, values 00HeaderLen 1, ActualLen 1, request was for c3 (Relais3), len 1 for module Re
2017.07.13 21:23:08 5: Re: ParseObj called with 00 and start 3, quantity 1, op read
2017.07.13 21:23:08 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.13 21:23:08 5: Re: ParseObj ObjInfo for c3: reading=Relais3, unpack=a, expr=, format=, map=
2017.07.13 21:23:08 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:23:08 4: Re: ParseObj for Relais3 assigns 0
2017.07.13 21:23:08 5: Starting notify loop for Re, 1 event(s), first is Relais3: 0
2017.07.13 21:23:08 5: End notify loop for Re
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.13 21:23:08 4: WEB_192.168.25.164_49938 POST /fhem?cmd=set%20Re%20Relais3%201&XHR=1&fwcsrf=csrf_114255326907145&fw_id=46; BUFLEN:0
2017.07.13 21:23:08 5: Cmd: >set Re Relais3 1<
2017.07.13 21:23:08 5: Re: Set called with Relais3 (c3), setVal = 1
2017.07.13 21:23:08 5: Re: set packed hex 31 with n to hex 0001
2017.07.13 21:23:08 4: Re: Send called with c3, objLen 1 / reqLen - to id 1, op write, qlen 0, value hex 0001
2017.07.13 21:23:08 4: Re: Send adds fc 5 to 1, for c3 (Relais3), reqLen 1, value hex 0001 at beginning of queue for immediate sending
2017.07.13 21:23:08 5: RelaisUSB: handle queue check commDelay (0.1) for Re: rest -0.348573207855225
2017.07.13 21:23:08 5: RelaisUSB: handle queue check sendDelay (0.1) for Re: rest -0.366876125335693
2017.07.13 21:23:08 5: RelaisUSB: HandleSendQueue: finished delay checking, proceed with sending
2017.07.13 21:23:08 4: RelaisUSB: HandleSendQueue sends fc 5 to id 1, tid 212 for Relais3 (c3), len 1, device Re (RTU), pdu 0500030001, V 3.5.26 - 13.7.2017
2017.07.13 21:23:08 5: SW: 010500030001fc0a
2017.07.13 21:23:08 5: Re: ReadAnswer called and remaining timeout is 1.99976897239685 requested reading is Relais3
2017.07.13 21:23:08 5: Re: ReadAnswer got: 0105000300003dca
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames got: 0105000300003dca
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames uses fix for broken fcode 5
2017.07.13 21:23:08 4: RelaisUSB: ParseFrames got fcode 5 from 1, values 30HeaderLen 4, ActualLen 4, request was for c3 (Relais3), len 1 for module Re
2017.07.13 21:23:08 5: Re: ParseObj called with 30 and start 3, quantity 1, op write
2017.07.13 21:23:08 5: Re: ParseObj shortened bit string: 0 and start adr 3, quantity 1
2017.07.13 21:23:08 5: Re: ParseObj ObjInfo for c3: reading=Relais3, unpack=a, expr=, format=, map=
2017.07.13 21:23:08 5: Re: ParseObj unpacked 30 with a to hex 30 (0)
2017.07.13 21:23:08 4: Re: ParseObj for Relais3 assigns 0
2017.07.13 21:23:08 5: Starting notify loop for Re, 1 event(s), first is Relais3: 0
2017.07.13 21:23:08 5: End notify loop for Re
2017.07.13 21:23:08 5: RelaisUSB: ParseFrames got 1 readings from ParseObj
2017.07.13 21:23:08 5: Re: ReadAnswer done, reading is Relais3, value: 0
2017.07.13 21:23:08 4: WEB: /fhem?cmd=set%20Re%20Relais3%201&XHR=1&fwcsrf=csrf_114255326907145&fw_id=46 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip


Ich sehe das nun so. Statt (Windows) 01 05 00 03 01 00 wird nun 01 05 00 03 00 01 fc 0a
irgenwie pass es um eine Stelle nicht???

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 13 Juli 2017, 22:34:13
Aha ...

Probier doch mal testweise im Modbus-Modul in der Zeile 1288 aus 0001 ein 0100 zu machen.
Das ist der Spezial-Code Für Dein Relais ...

Gruß
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 14 Juli 2017, 00:15:44
Hallo Stefan!

ZitatProbier doch mal testweise im Modbus-Modul in der Zeile 1288 aus 0001 ein 0100 zu machen.
Das ist der Spezial-Code Für Dein Relais ...

Herzlichen Dank. Das wars.  Bitte ins update übernehmen.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 17 Juli 2017, 19:35:25
Hallo Wolfgang,

hier die neue Version.
Ich hab den Wert für das Setzen von Coils jetzt konfigurierbar gemacht.
In Deinem Fall wäre es attr MyDevice dev-c-brokenFC5 0100
Wenn noch alles andere funktioniert, würde ich die neuen Module demnächst einchecken.

Gruss
    Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: wthiess am 17 Juli 2017, 22:27:39
Hallo Stefan!

Danke für die Mühe. Schaut soweit gut aus. Lüftung Thermostat und normale Relais laufen. Das spezielle Relais habe ich auf der Baustelle vergessen. Werde es dann nächstes Wochenende testen. Aber die Vorversion mit der händischen Änderung hat gepasst.

lg
Wolfgang
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Fantomas am 25 Juli 2017, 19:35:06
Hallo Stefan,
ich versuche mich seit geraumer Zeit am Auslesen meines Solar-Wechselrichters SMA Sunny Boy 5000 SE per Modbus.
Die Verbindung bekomme ich hin, allerdings nicht die gewünschten Werte aus den Holding-Registern.
Exemplarisch möchte ich h30051 auslesen:
attr SunnyBoyMod obj-h30051-reading WRtyp
Laut SMA Doku sollte hier "8001" stehen. Ich bekomme aber "0" als reading.

Modbus register address   Short description   Type   Format   Unit   Access
30051                           Device class           U32   ENUM      RO

Habe es uch schon mit verschiedenen Längen probiert:
attr SunnyBoyMod obj-h30051-len 2

set SunnyBoyMod scanModbusObjects h30049-h30059 ergibt
scan-h30049 hex=ffff, string=.., s=-1, s>=-1, S=65535, S>=65535
scan-h30050 hex=ffff, string=.., s=-1, s>=-1, S=65535, S>=65535
scan-h30052 hex=ffff, string=.., s=-1, s>=-1, S=65535, S>=65535
scan-h30054 hex=ffff, string=.., s=-1, s>=-1, S=65535, S>=65535
scan-h30056 hex=ffff, string=.., s=-1, s>=-1, S=65535, S>=65535
scan-h30058 hex=ffff, string=.., s=-1, s>=-1, S=65535, S>=65535


#30051 ist gar nicht dabei

Laut Modbus Master Simulator (siehe Bild im Anhang) steht in Zeile 1 die besagte 8001.

Für einen Hinweis, was hier schief laufen könnte, wäre ich sehr dankbar   :)

Lieber Gruß
Thomas
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 26 Juli 2017, 15:07:37
Hallo Thomas,

mach doch mal ein

set SunnyBoyMod scanModbusObjects h30049-h30059 2

(die Zwei am Ende erzeugt Requests mit Länge 2)
und poste einen Log-Auszug mit verbose 5 während Fhem versucht auf die Adressen zuzugreifen.
Zudem wäre Deine vollständige Konfiguration (Definition und alle Attribute) für SunnyBoyMod hilfreich.

Gruss
   Stefan
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: Fantomas am 26 Juli 2017, 19:02:27
Hallo Stefan,
vielen Dank für Deine schnelle Rückmeldung.

Zitatmach doch mal ein

set SunnyBoyMod scanModbusObjects h30049-h30059 2

(die Zwei am Ende erzeugt Requests mit Länge 2)

Ich habe heute vom SMA-Support die entscheidende Information bekommen: in deren Doku steht, dass U32 "Big-Endian" bedeutet. Zusammen mit Deinem Link zur perl-unpack-Doku habe ich nun mit

attr SunnyBoyMod obj-h30051-unpack N

dieses Ergebnis erhalten:
WRtyp

hex=38303031, string=8001, s=12344, s>=14384, S=12344, S>=14384, i=12344, i>=14384, I=12344, I>=14384, f=2.56387799879576e-09, f>=4.20065516664181e-05


Nochmal vielen Dank für Deine Hilfe und für das tolle Modul  :)
Thomas
Titel: Antw:Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485
Beitrag von: StefanStrobel am 02 September 2017, 09:07:28
Da das Modul schon lange nicht mehr neu ist und der Titel auch nicht mehr passt,
mache ich diesen Thread zu und öffne einen neuen für den Support zu Modbus und neue Versionen des Moduls:

https://forum.fhem.de/index.php/topic,75638.0.html

Eine erste neue Version liegt dort auch schon.

Gruss
   Stefan