[Gelöst] ModbusAttr lesen und schreiben von einzelnen Bits (Coils)

Begonnen von Rewe2000, 30 März 2023, 19:19:14

Vorheriges Thema - Nächstes Thema

Rewe2000

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
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

der-Lolo

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



StefanStrobel

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

Rewe2000

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

Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Rewe2000

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

Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

der-Lolo

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!

Aurel_B

#6
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 :-)

Rewe2000

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
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

StefanStrobel

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

Aurel_B

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.

Rewe2000

#10
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

Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Aurel_B

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?

Rewe2000

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
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky