Hallo,
ich mache die ersten Versuche mit dem Modul ModbusAttr um Daten zwischen Fhem und einer WAGO 750-880 Steuerung auszutauschen. Bei Analogwerten klappt das schon ganz gut, ich habe aber noch keinen Plan wie ich da einzelne Bits lesen oder schreiben kann.
Könnt ihr mir da eventuell mit einem Beispiel auf die Sprünge helfen wo ich sehe wie das mit ModbusAttr funktioniert. Ich habe schon viel in den letzten Tagen gelesen, aber ohne gutes Englisch habe ich da einige Hürden zu überwinden.
Was mir nicht klar ist, in meiner WAGO Steuerung kann ich von Datenwörtern (16 Bit) einzelne Bits beschreiben oder lesen. Wie muss ich das in ModbusAttr schreiben, wenn ich z.B. nur einzelne Bits eines Registers (16 Bit) lesen oder beschreiben will.
Mein bisheriges Modul als List:
Internals:
DEF 1 5 192.168.50.30:502 TCP
DeviceName 192.168.50.30:502
EXPECT idle
FD 23
FUUID 642441c3-f33f-7df9-a17f-068daa352408b603
IODev WAGO_Modbus
Interval 5
LASTOPEN 1680103042.26512
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.4.14 - 30.1.2023
NAME WAGO_Modbus
NOTIFYDEV global
NR 593
NTFY_ORDER 50-WAGO_Modbus
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
eventCount 6937
nextOpenDelay 60
Helper:
DBLOG:
EntnahmeZisterne:
DBLogging:
TIME 1680195464.58767
VALUE 272745
WindwertGewaechshaus:
DBLogging:
TIME 1680195884.49131
VALUE 2.04
OLDREADINGS:
QUEUE:
READ:
BUFFER
READINGS:
2023-03-30 19:04:44 EntnahmeZisterne 272745
2023-03-30 18:57:44 EntnahmeZisterne_qbm 272.745
2023-03-30 19:04:44 Fehlernummer_WAGO 0
2023-03-30 19:04:14 Hoflampe_Garage_leuchtet 0
2023-03-30 19:04:14 Hoflampe_Himbeeren_leuchtet 0
2023-03-30 19:04:54 MW256_lesen 0000000000010000
2023-03-30 19:04:44 WindwertGewaechshaus 2.04
2023-03-30 19:04:49 Windwert_Max_Gewaechshaus 31.25
2023-03-29 17:17:22 state opened
REMEMBER:
lid 1
lname WAGO_Modbus
lrecv 1680195894.41506
lsend 1680195894.41439
defptr:
WAGO_Modbus 1
gotReadings:
MW256_lesen 0000000000010000
hmccu:
lastRead:
c256 1680187892.91153
h12544 1680195894.41594
h256 1680189595.67711
i256 1680189585.88124
i270 1680195884.49092
i271 1680195889.52914
i276 1680195884.5934
i402 1680195884.69664
Attributes:
DbLogExclude .*
DbLogInclude EntnahmeZisterne,WindwertGewaechshaus
devStateIcon opened:rc_WEB@green disconnected:rc_WEB@red
event-min-interval EntnahmeZisterne:600,WindwertGewaechshaus:600
event-on-change-reading .*
group Kommunikation
icon it_network
obj-h12544-poll 1
obj-h12544-reading MW256_lesen
obj-h12544-unpack B*
obj-i270-expr $val / 100
obj-i270-format %.2f
obj-i270-poll 1
obj-i270-polldelay 15
obj-i270-reading WindwertGewaechshaus
obj-i271-expr $val / 100
obj-i271-format %.2f
obj-i271-poll 1
obj-i271-polldelay 60
obj-i271-reading Windwert_Max_Gewaechshaus
obj-i276-poll 1
obj-i276-polldelay 10
obj-i276-reading Fehlernummer_WAGO
obj-i402-len 2
obj-i402-poll 1
obj-i402-polldelay 10
obj-i402-reading EntnahmeZisterne
obj-i402-revRegs 1
obj-i402-unpack N
room WAGO
userReadings EntnahmeZisterne_qbm:EntnahmeZisterne.* {sprintf("%.3f",ReadingsNum($name,"EntnahmeZisterne",0)/1000)},
Hoflampe_Garage_leuchtet:MW256_lesen.* {substr(ReadingsNum($name, "MW256_lesen", 0),13,1)},
Hoflampe_Himbeeren_leuchtet:MW256_lesen.* {substr(ReadingsNum($name, "MW256_lesen", 0),12,1)}
Das Register um welches es geht, erhalte ich bisher im Reading obj-h12544-reading "MW256_lesen" als Binärwert. Da es mir bisher nicht gelungen ist direkt einzelne Bits zu lesen, habe ich mir mit userreadings beholfen, zum lesen würde dies ja funktionieren aber wenn ich so Bits von Fhem aus beschreiben will, habe ich da meine Probleme.
Hinweis:
Um das Merkerword 256 in der WAGO lesen zu können muss ich bei der Adressierung über Modbus 12288 dazurechnen (deshalb die Adresse 12544).
Ich hoffe ihr könnt mir ein Beispiel nennen wo ich sehen und verstehen kann wie ich mein Ziel ohne Umwege erreiche.
Gruß Reinhard
Entschuldige Rewe2000,
aber warum benutzt Du nicht das passende Modul um die kommunikation mit der 750-880 ins FHEM zu integrieren?
ChrisD hat einen Servertype "Wago" als Attribut in sein Modul integriert. Um bits & Bytes brauchst Du Dir wenn Du das nutzt keine Gedanken machen ;)
Schau mal hier - eine kurze Beschreibung welche in Deine Richtung zielt:
https://forum.fhem.de/index.php?topic=12655.msg296036#msg296036
Hallo Reinhard,
wenn Du es mit ModbusAttr machen möchtest, dann musst Du statt einem holding register ein coil verwenden.
obj-c1234-...
Coils entsprechen dann einzelnen Bits.
Gruss
Stefan
Hallo Stefan,
entweder habe ich einen Knoten im Gehirn oder ich denke zu sehr in Richtung SPS.
Dass ich Coils direkt mit ModbusAttr lesen/schreiben kann, das war mir nach lesen der Doku schon klar.
Wo ich aber überhaupt keinen Plan habe ist, welche Adresse muss ich nach dem "obj-c....." angeben, damit ich ein bestimmtes Bit z.B. aus dem Register obj-h12544 lesen kann, welches ich aktuell als Beispiel mit holding Register lese.
Attribute:
obj-h12544-poll 1
obj-h12544-reading MW256_lesen
obj-h12544-unpack B*
Mit obj-h12544 lese ich ein 16Bit Word aus der Steuerung und stelle dies als Binärwert im Reading MW256_lesen für Testzwecke zur Verfügung.
Reading:
MW256_lesen 0000000000100000 2023-03-31 20:05:31
Mit dem userreading kann ich mir das Bit 2 des MW256+12288 als Reading über ein userreading bilden (12288 muss zum MW addiert werden WAGO spezifisch) :
userreading:
userReading Hoflampe_Garage_leuchtet:MW256_lesen.* {substr(ReadingsNum($name, "MW256_lesen", 0),13,1)}
Ich hole mir somit das Bit 2 (das 3. von rechts der Bitreihe) aus dem Merkerword das klappt bisher.
Was ich aber nicht hinbekomme, ist die Adressierung von "obj-c....", damit ich z.B. das Bit 2 als Coil direkt lesen/schreiben kann.
In der SPS adressiere ich das Bit 2 ja mit MWxxx.2 aber bei der Adressierung in ModbusAtrr gibt es ja nur Ganzzahlen.
Entweder denke ich da total verkehrt oder es ist ganz einfach und ich hab es nur noch nicht geschnallt.
Eventuell kannst du mich ein wenig erhellen bei diesem Problem. Ich suche schon Tagelang in Fhem und mit Google aber leider ohne den entscheidenden Durchbruch.
Gruß Reinhard
Hallo der-Lolo,
danke für den Hinweis auf das Modul von ChrisD, die Module habe ich aktuell schon in Verwendung und diese laufen auch zu meiner vollsten Zufriedenheit.
Der Hintergrund war folgender. Von Zeit zu Zeit forste ich mein Fhem durch um ein wenig aufzuräumen, da wollte ich zumindest auch ModbusAttr von stefanStrobel auf meine WAGO ansetzen da ich viele Relaiskontakte hier mit Readings und nicht als einzelne Module abbilden muss. Auch will ich gerne meine Modbus Anbindung mit verschiedenen Modulen kennenlernen, wenn es irgendwann Probleme gibt, dann soll die Umstellung ja flott vonstatten gehen. Jetzt habe ich die Möglichkeit in aller Ruhe auch andere Möglichkeiten kennenzulernen und die Daten werden trotzdem noch für die SQL-Datenbank empfangen.
Ein anderer Grund war auch die Aktualisierung der Module von ChrisD, ich hatte diese nicht mit "update add" in Fhem eingebunden und somit wurden diese nie aktualisiert und es war keinerlei Hilfe vorhanden. Das alles habe ich jetzt angepasst und somit kommen beide Möglichkeiten für mich in Frage.
Mich hat aber jetzt der Ehrgeiz gepackt und ich möchte auch verstehen, wie ich Coils in der WAGO mit ModbusAttr adressieren und dann auch lesen und schreiben kann.
Beide Maintainer haben da großartige Arbeit geleistet, beide Varianten laufen nun bei mir schon mehrere Jahre (ModbusAttr für E3DC Stromspeicher und ModbusTCPServer für WAGO) ohne nur ein einziges Problem.
Gruß Reinhard
Super - na dann hab ich nichts gesagt, mir war nicht klar das Du dich eher ausprobierst, habe mich nur. gefragt warum Du dir das leben so schwer machst ;)
Ich habe auch beide Module im Einsatz - Strom, Wärmemenge, Wechselrichter, Akku frage ich mit Stefans Modul ab.
Bei Wago ist der Komfort jedoch meiner meinung nach riesig, ich habe auch die 880 und steuere damit das ganze Haus - sehr performant das Teil. Eine weitere 842 habe ich dediziert für den Pool verbaut, aber auch eher weil die Steuerung eher dezentral in der Garage sitzt.
Ein hoch auf unsere Modbus Spezialisten ChrisD und StefanStrobel!
Hallo Reinhard,
wenn ich das richtig verstehe, so stellt deine Wago 16bit Holding Register bereit wo jedes einzelne Bit eine Bedeutung haben kann? Das ist etwas komisch implementiert, dafür sind eigentlich Coils da. Mit Coils denke ich wirst du aber nicht weiterkommen, die verwenden einen völlig anderen Function Code (siehe z.B. Wikipedia). Du kannst zwar bei Modbusattr den Function Code übersteuern, ob das sinnvoll ist wage ich zu bezweifeln.
Schau dir mal die expr/setexpr und bitwise Perl Operatoren an. Ich bin da leider überhaupt nicht sattelfest und mache das jeweils durch "trial and error". Ich glaube, so etwas sollte funktionieren um den Wert des 3bits zu erhalten:
attr foo expr ($val >> 3) & 0b1;
Oder du maskierst alle anderen Bits weg
attr foo expr &0b0000000000000100
Und erhälst dann als Wert entweder 4 oder 0. Dann kannst du dir das mit der "map" Funktion auf den gewünschten Wert mappen.
Beides ungetestet :-)
Hallo ansguru,
vielen Dank für den Tipp.
Wenn ich diesen richtig verstanden habe, so müsste ich für jedes BIT ein attr expr setzen.
Aktuell lese ich mir die einzelnen Bits als Readings über attr userreadings wie folgt aus, damit könnte ich leben.
attr <Device> userReadings
MX303_15:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),0,1)},
MX303_14:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),1,1)},
MX303_13:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),2,1)},
MX303_12:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),3,1)},
MX303_11:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),4,1)},
MX303_10:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),5,1)},
MX303_09:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),6,1)},
MX303_08:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),7,1)},
MX303_07:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),8,1)},
MX303_06:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),9,1)},
MX303_05:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),10,1)},
MX303_04:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),11,1)},
MX303_03:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),12,1)},
MX303_02:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),13,1)},
MX303_01:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),14,1)},
MX303_00:MX303_Modbus.* {substr(ReadingsNum($name, "MX303_Modbus", 0),15,1)}
Problematischer wird aber das schreiben von einzelnen Bits, diese muss ich ja zwingend einzeln in das Register "stempeln" um die anderen Bits nicht zu verändern. Aktuell habe ich mich mit substr() versucht (vorerst in ein temporäres userReading zum testen) grundsätzlich klappt auch das, ist aber doch sehr umständlich.
MX303_neu { ReadingsNum($name,"MX303_15",0).ReadingsNum($name,"MX303_14",0).ReadingsNum($name,"MX303_13",0).ReadingsNum($name,"MX303_12",0).substr(ReadingsVal($name,"MX303_Modbus","0000000000000000"),4,12) }
Aktuell werden bei mir die 4 linken Bits von Fhem geschrieben und von der WAGO gelesen, die 12 rechten Bits von WAGO geschrieben und von Fhem gelesen.
Sollte ich einen ähnlichen Weg beschreiten, so muss ich mir unbedingt in der WAGO getrennte Register (Word) zum lesen und schreiben anlegen, sonst wird es zu komplex.
Ich hoffe immer noch dass es für das lesen/schreiben von Coils zur WAGO (siehe Beitrag#3) mit ModbusAttr einen einfacheren Weg gibt und jemand mich da erleuchtet. Auch habe ich in der Perl Doku keine Funktion gefunden um einzelne Bits in einem 16 Bit String einfach zu ersetzen, die einzige Idee welche ich hatte war substr().
Entweder stelle ich mich da nur zu blöd an, denn auch bei SIEMENS ist doch eine Bitweise Adessierung von Registern notwendig.
Gruß Reinhard
Hallo,
reicht es nicht aus für MX0.0 12288, für MX0.1 12289, für MX0.2 12290 etc. als Adresse des coils zu nehmen?
Also die MX-Adresse * 16 + Bitnummer?
Gruß
Stefan
Stimmt, du kannst ja nur 1 setexpr pro Register definieren und ein Register nicht mehrmals -> Das wird sehr umständlich, userReadings ist sicherlich ein Ansatz. Eine weitere Option: du definierst eine eigene Funktion in myutils und verwendest dann diese. Aber es bleibt ein Gebastel.
Wenn du die Coils so wie Stefan geschrieben hat direkt ansprechen könntest wäre es um ein vielfaches eleganter.
Hallo Stefan,
genau das war die Lösung, in den Tiefen des Handbuchs zu meinem Controller waren die Modbusregister für das lesen mit FC1 und FC2 aufgeführt. Wenn ich diese Register verwende, dann kann ich die Coils auch lesen.
Für den 750-880'er Controller wären dies die Bereiche %MX0...%MX1279.15 (NOVRAM 2 kB retain memory) zu lesen mit Modbusregister 12288...32767.
Somit sieht mein ModbusAttr Device nun wie folgt aus (als Raw definiton):
defmod WAGO_Modbus ModbusAttr 1 5 192.168.50.30:502 TCP
attr WAGO_Modbus DbLogExclude .*
attr WAGO_Modbus DbLogInclude EntnahmeZisterne,WindwertGewaechshaus,ZisterneFuellstand
attr WAGO_Modbus devStateIcon opened:rc_WEB@green disconnected:rc_WEB@red
attr WAGO_Modbus event-min-interval EntnahmeZisterne:600,WindwertGewaechshaus:600,ZisterneFuellstand:600
attr WAGO_Modbus event-on-change-reading state,EntnahmeZisterne,EntnahmeZisterne_qbm,Fehlernummer_WAGO,Hoflampe_Garage_leuchtet,Hoflampe_Himbeeren_leuchtet,MX256_lesen,MX303_Modbus,WindwertGewaechshaus,ZisterneFuellstand:5
attr WAGO_Modbus group Kommunikation
attr WAGO_Modbus icon it_network
attr WAGO_Modbus obj-c17136-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17136-poll 1
attr WAGO_Modbus obj-c17136-reading MX303Bit00
attr WAGO_Modbus obj-c17137-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17137-poll 1
attr WAGO_Modbus obj-c17137-reading MX303Bit01
attr WAGO_Modbus obj-c17138-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17138-poll 1
attr WAGO_Modbus obj-c17138-reading MX303Bit02
attr WAGO_Modbus obj-c17139-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17139-poll 1
attr WAGO_Modbus obj-c17139-reading MX303Bit03
attr WAGO_Modbus obj-c17140-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17140-poll 1
attr WAGO_Modbus obj-c17140-reading MX303Bit04
attr WAGO_Modbus obj-c17141-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17141-poll 1
attr WAGO_Modbus obj-c17141-reading MX303Bit05
attr WAGO_Modbus obj-c17142-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17142-poll 1
attr WAGO_Modbus obj-c17142-reading MX303Bit06
attr WAGO_Modbus obj-c17143-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17143-poll 1
attr WAGO_Modbus obj-c17143-reading MX303Bit07
attr WAGO_Modbus obj-c17144-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17144-poll 1
attr WAGO_Modbus obj-c17144-reading MX303Bit08
attr WAGO_Modbus obj-c17145-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17145-poll 1
attr WAGO_Modbus obj-c17145-reading MX303Bit09
attr WAGO_Modbus obj-c17146-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17146-poll 1
attr WAGO_Modbus obj-c17146-reading MX303Bit10
attr WAGO_Modbus obj-c17147-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17147-poll 1
attr WAGO_Modbus obj-c17147-reading MX303Bit11
attr WAGO_Modbus obj-c17148-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17148-reading MX303Bit12
attr WAGO_Modbus obj-c17148-set 1
attr WAGO_Modbus obj-c17149-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17149-reading MX303Bit13
attr WAGO_Modbus obj-c17149-set 1
attr WAGO_Modbus obj-c17150-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17150-reading MX303Bit14
attr WAGO_Modbus obj-c17150-set 1
attr WAGO_Modbus obj-c17151-map 0:aus, 1:ein
attr WAGO_Modbus obj-c17151-reading MX303Bit15
attr WAGO_Modbus obj-c17151-set 1
attr WAGO_Modbus obj-h12544-poll 1
attr WAGO_Modbus obj-h12544-polldelay 25
attr WAGO_Modbus obj-h12544-reading MX256_lesen
attr WAGO_Modbus obj-h12544-unpack B*
attr WAGO_Modbus obj-i259-poll 1
attr WAGO_Modbus obj-i259-polldelay 10
attr WAGO_Modbus obj-i259-reading ZisterneFuellstand
attr WAGO_Modbus obj-i270-expr $val / 100
attr WAGO_Modbus obj-i270-format %.2f
attr WAGO_Modbus obj-i270-poll 1
attr WAGO_Modbus obj-i270-polldelay 15
attr WAGO_Modbus obj-i270-reading WindwertGewaechshaus
attr WAGO_Modbus obj-i271-expr $val / 100
attr WAGO_Modbus obj-i271-format %.2f
attr WAGO_Modbus obj-i271-poll 1
attr WAGO_Modbus obj-i271-polldelay 60
attr WAGO_Modbus obj-i271-reading Windwert_Max_Gewaechshaus
attr WAGO_Modbus obj-i276-poll 1
attr WAGO_Modbus obj-i276-polldelay 10
attr WAGO_Modbus obj-i276-reading Fehlernummer_WAGO
attr WAGO_Modbus obj-i402-len 2
attr WAGO_Modbus obj-i402-poll 1
attr WAGO_Modbus obj-i402-polldelay 10
attr WAGO_Modbus obj-i402-reading EntnahmeZisterne
attr WAGO_Modbus obj-i402-revRegs 1
attr WAGO_Modbus obj-i402-unpack N
attr WAGO_Modbus room WAGO
attr WAGO_Modbus userReadings EntnahmeZisterne_qbm:EntnahmeZisterne.* {sprintf("%.3f",ReadingsNum($name,"EntnahmeZisterne",0)/1000)},\
Hoflampe_Garage_leuchtet:MX256_lesen.* {substr(ReadingsNum($name, "MX256_lesen", 0),13,1)},\
Hoflampe_Himbeeren_leuchtet:MX256_lesen.* {substr(ReadingsNum($name, "MX256_lesen", 0),12,1)}
setstate WAGO_Modbus opened
setstate WAGO_Modbus 2023-04-03 20:05:03 EntnahmeZisterne 272745
setstate WAGO_Modbus 2023-04-03 19:58:48 EntnahmeZisterne_qbm 272.745
setstate WAGO_Modbus 2023-04-03 20:05:03 Fehlernummer_WAGO 0
setstate WAGO_Modbus 2023-04-03 20:04:53 Hoflampe_Garage_leuchtet 0
setstate WAGO_Modbus 2023-04-03 20:04:53 Hoflampe_Himbeeren_leuchtet 0
setstate WAGO_Modbus 2023-04-03 20:04:53 MX256_lesen 0000000000010000
setstate WAGO_Modbus 2023-04-03 20:05:11 MX303Bit00 ein
setstate WAGO_Modbus 2023-04-03 20:05:11 MX303Bit01 aus
setstate WAGO_Modbus 2023-04-03 20:05:11 MX303Bit02 ein
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit03 aus
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit04 ein
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit05 aus
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit06 ein
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit07 aus
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit08 ein
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit09 aus
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit10 ein
setstate WAGO_Modbus 2023-04-03 20:05:12 MX303Bit11 aus
setstate WAGO_Modbus 2023-04-03 20:02:59 MX303Bit12 ein
setstate WAGO_Modbus 2023-04-03 20:02:47 MX303Bit14 ein
setstate WAGO_Modbus 2023-04-03 20:03:09 MX303Bit15 aus
setstate WAGO_Modbus 2023-04-03 20:04:57 WindwertGewaechshaus 1.32
setstate WAGO_Modbus 2023-04-03 20:05:03 Windwert_Max_Gewaechshaus 20.83
setstate WAGO_Modbus 2023-04-03 20:05:03 ZisterneFuellstand 11027
setstate WAGO_Modbus 2023-04-03 19:58:08 state opened
Ich hoffe das kann auch jemand benötigen.
Danke euch allen für das Mitdenken.
[b]Ein Problem habe ich jedoch noch:[/b]
Alle Coils, egal ob diese gelesen oder geschrieben werden, tauchen bei mir im Event monitor nicht auf. Die Readings im Modul ändern sich nur, wenn ich auf den Header des Device klicke oder im Browser den aktualisieren Button drücke. Mir kommt es fast so vor als wenn in Fhem keine Events generiert werden, die Modbuskommunikation scheint aber schon stabil zu laufen.
Da wird es aktuell auch problematisch ein notify oder doif auf diese Readings ansetzen?
Habe ich da noch vergessen ein Attribut zu setzen oder passen andere Werte nicht?
Gruß Reinhard
Freut mich zu hören, dass das mit den Coils geklappt hat! Auf die Schnelle: du hast event-min-interval und event-on-change-reading gesetzt. Was passiert, wenn du die beiden temporär entfernst?
Hallo ansgru
wahrscheinlich war ich vor Freude über den Erfolg so blind, dass ich überhaupt nicht mehr an das event-on-change-reading gedacht, sondern nur den Fehler in den Attributen gesucht habe.
Danke für den Hinweis.
Gruß Reinhard