ModbusAttr - latest Update (27.11.2016)

Begonnen von wopl, 27 November 2016, 17:54:22

Vorheriges Thema - Nächstes Thema

wopl

Hallo allerseits,
seit dem letzten Update ist meine Modbus-Kommunikation lahmgelegt.

Ich bekomme die Fehlermeldung:
ParseFrames got a copy of the request sent before - looks like an echo

Hat irgend jemand auch das Problem? Ich tue mich gerade ein wenig schwer mit der Fehlersuche - zumal ich in meiner Docker-Umgebung nicht "unmittelbar" auf einen alten Zustand zurücksetzen kann.

Ich mache das Problem hier einfach mal öffentlich. Vielleicht gibt's ja auch ohne weitere Details schon erste Ideen.
Dank und Gruß,
Wolfram

Update: Ich habe das "98_Modbus.pm" vom 26.11. wieder eingespielt, und schon funktioniert meine Kommunikation wieder. Wie im Betreff angegeben benutze ich das Modul "98_ModbusAttr.pm" für meine Kommunikation.
Haussteuerung mit 300 Devices, Kopplung mit Wago SPS, InfluxDB (Grafana), HomeMatic, Tinkerforge (Fensterkontakte), SmartMeter, Heizungsüberwachung/-logging... Installation in QNAP NAS Docker container vollautomatisiert mit Ansible und GITlab

wopl

Hier nun die Details:


define Wago880 ModbusAttr 1 30 172.20.80.4:502 TCP
attr Wago880 dev-d-defPoll 1
attr Wago880 room SPS
attr Wago880 obj-h771-reading buero_data
attr Wago880 obj-h771-set 1
attr Wago880 obj-c6403-reading buero_trigger
attr Wago880 obj-c6403-set 1


Die SPS übernimmt bei "raising edge" von "buero_trigger" den Dimm-Wert und gibt ihn an den Dimmer (wird von der SPS gesteuert) weiter.
Das plcflag unterscheidet, ob der Event von FHEM oder der SPS kommt. Wenn der Event von der SPS kommt, muß er nicht zur SPS übertragen werden (ansonsten hätten wir einen Loop). Das plcflag wird von der SPS gesetzt, wenn von dort ein Kommando kommt.

Die Kommunikation von der SPS zum FHEM läuft über HTTP.


define Dimmer_Buero dummy
attr Dimmer_Buero room Licht,Buero,SPS
attr Dimmer_Buero group Licht
attr Dimmer_Buero webCmd off:25:on:80
attr Dimmer_Buero eventMap /off:0/25:25/on:50/80:80/
attr Dimmer_Buero fp_obergeschoss 275,539,0,Buero
attr Dimmer_Buero devStateIcon 0:off:50 50:on:0 .*:dim50%:0
attr Dimmer_Buero userattr plcflag
attr Dimmer_Buero plcflag false

# react on Dimmer_Buero
# only transmit status to PLC, if PLC is not origin of change (plcflag)
define actOn_Buero_Val notify Dimmer_Buero.* {\
  Log 1, "--> Dimmer_Buero $EVENT -->";; \
  if (AttrVal ("Dimmer_Buero", "plcflag", "true") eq "true") { \
    Log 1, ("<-- Dimmer_Buero reset plcflag $EVENT -->\n");;\
    fhem (" \
      attr Dimmer_Buero plcflag false \
    ") \
  } else { \
    Log 1, ("<-- Dimmer_Buero event $EVENT -->\n");;\
    fhem (" \
      set Wago880 buero_trigger 0;; \
      set Wago880 buero_data $EVENT;; \
      set Wago880 buero_trigger 1;; \
      sleep 3;; set Wago880 buero_trigger 0 \
    ") \
  } \
}


Soweit lief alles bis vor zwei Tagen problemlos mit ca. einem Dutzend Geräten.


2016.11.27 15:55:41 0: Server shutdown
2016.11.27 15:55:43 5: Initializing Type Library:
2016.11.27 15:55:43 1: Including /opt/fhem/fhem_main.cfg
2016.11.27 15:55:43 5: Cmd: >attr global motd none<
2016.11.27 15:55:43 5: Cmd: >attr global logfile /opt/fhem/log/fhem-%Y-%m.log<
2016.11.27 15:55:43 5: Cmd: >attr global modpath .<
2016.11.27 15:55:43 5: Cmd: >attr global uniqueID /opt/fhem/FHEM/FhemUtils/uniqueID<
2016.11.27 15:55:43 5: Cmd: >attr global statefile /opt/fhem/log/fhem.save<
2016.11.27 15:55:43 5: Cmd: >define telnetPort telnet 7072 global<
2016.11.27 15:55:43 5: Loading ./FHEM/98_telnet.pm
2016.11.27 15:55:43 3: telnetPort: port 7072 opened
2016.11.27 15:55:43 5: Cmd: >attr global verbose 5                  # "normal" verbosity (min 1, max 5)<
2016.11.27 15:55:43 3: Valid value for verbose are 0,1,2,3,4,5
2016.11.27 15:55:43 3: WEB: port 8083 opened

2016.11.27 15:55:44 1: Including ./fhem_plc.cfg
2016.11.27 15:55:44 3: Wago880: defined with id 1, interval 30, destination 172.20.80.4:502, protocol TCP
2016.11.27 15:55:44 1: Including ./fhem_plc_dimmer.cfg
2016.11.27 15:55:52 1: configfile: Valid value for verbose are 0,1,2,3,4,5
2016.11.27 15:55:52 3: Wago880: trying to open connection to 172.20.80.4:502
2016.11.27 15:55:52 3: Opening Wago880 device 172.20.80.4:502
2016.11.27 15:55:52 0: Featurelevel: 5.7
2016.11.27 15:55:52 0: Server started with 229 defined entities (fhem.pl:12596/2016-11-17 perl:5.020002 os:linux user:root pid:61)
2016.11.27 15:55:52 3: Wago880 device opened
2016.11.27 15:59:02 1: --> Dimmer_Buero 80 -->
2016.11.27 15:59:02 1: <-- Dimmer_Buero event 80 -->

2016.11.27 15:59:02 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 15:59:02 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 15:59:02 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 15:59:05 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 16:09:31 1: --> Dimmer_Buero 50 -->
2016.11.27 16:09:31 1: <-- Dimmer_Buero reset plcflag 50 -->

2016.11.27 16:22:07 1: --> Dimmer_Buero 0 -->
2016.11.27 16:22:07 1: <-- Dimmer_Buero event 0 -->

2016.11.27 16:22:07 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 16:22:07 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 16:22:07 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!
2016.11.27 16:22:10 3: Wago880: ParseFrames got a copy of the request sent before - looks like an echo!



Aufgefallen ist mir der Fehler, da ich das Licht zwar einmal einschalten, nicht jedoch ausschalten oder auf einen anderen Dim-Wert setzen konnte. Bis zum Wechsel des Modbus-Moduls vor zwei Tagen gabs hier keinerlei Probleme.

Vielleicht hat Stefan oder jemand anderes eine Idee.
Dank für Eure Zeit, hier reinzuschauen.
Gruß Wolfram
Haussteuerung mit 300 Devices, Kopplung mit Wago SPS, InfluxDB (Grafana), HomeMatic, Tinkerforge (Fensterkontakte), SmartMeter, Heizungsüberwachung/-logging... Installation in QNAP NAS Docker container vollautomatisiert mit Ansible und GITlab

StefanStrobel

Hallo Wolfram,

bitte nimm doch mal die letzte Version aus dem Forum (FHEM Forum » FHEM » Sonstiges » Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485), setzte verbose auf 5:

attr Wago880 verbose 5

und poste dann das Log - am besten im Bereich FHEM Forum » FHEM » Sonstiges oder gleich im oben genannten Thread.
Bei verbose 5 wird alles was gesendet und empfangen / interpretiert wird protokolliert und dann sollte erkennbar sein, wo das Problem liegt.

Grus / Thanx
    Stefan

wopl

Hallo Stefan,
im Log bei 20:42.12 siehst Du, daß ich den Dimmer Büro auf 50% setze. Um 20:43:13 setze ich ihn wieder auf 0%. Habe Dein letzes Modul 98_Modbus.pm vom 28.12. eingebunden (das aus dem Forum). die SPS reagiert nicht darauf.

Aus dem Logfile kann ich leider nicht ersehen, was hier schief läuft. Dank für jede Hilfe.
Gruß Wolfram
Haussteuerung mit 300 Devices, Kopplung mit Wago SPS, InfluxDB (Grafana), HomeMatic, Tinkerforge (Fensterkontakte), SmartMeter, Heizungsüberwachung/-logging... Installation in QNAP NAS Docker container vollautomatisiert mit Ansible und GITlab

StefanStrobel

Hallo Wolfram,

Im Log fallen mir mehrere Dinge auf:

1) Du hast im Define eine Poll-Schleife definiert, so dass alle 30 Sekunden für alle definierten Objekte geprüft wird, ob sie abgefragt werden müssen.

define Wago880 ModbusAttr 1 30 172.20.80.4:502 TCP

Gleichzeitig hast Du mit

attr Wago880 dev-d-defPoll 1

definiert, dass alle descrete inputs automatisch gepollt werden. Es sind aber keine Definiert. Für die Holding-Register und die Coils ist Poll auf 0.
Das erzeugt ordentlich überflüssige Systemlast und viele Log-Aufrufe.

2) In der letzten Zeile Deiner Notify-Definition rufst Du ein set mit dem Wert "1 " auf (Entscheidend ist das Blank nach der 1.)

sleep 3;; set Wago880 buero_trigger 0 \

das führt dazu, dass der Befehl nicht ausgeführt wird und im Log erscheint:

2016.12.03 20:42:15 3: Wago880: Set: Value 0
is not numeric and textArg not specified

Die Kommunikation per Modbus scheint sonst problemlos zu funktionieren. Alle gesendeten Requests werden fehlerfrei beantwortet.
Vermutlich fehlt nur der letzte Set-Befehl.
Kurzfristig kannst Du einfach mal das Blank entfernen.
In der nächsten Version werde ich dann Blanks im Modul entfernen, wenn textArg nicht angegeben ist.

Gruss
   Stefan

wopl

Hallo Stefan,
Dank für Deine Anmerkungen.

Kann ich beim define das Intervall auf 0 setzen, um keine Polls mehr zu haben? Ansonsten setze ich es auf einen großen Wert: 3600 oder so.

dev-d-defPoll hab ich nun ausgeklammert

Auf die Idee mit dem Blank wäre ich nie im Leben gekommen. Ist im Quellcode bei mir bereits geändert. Ich hab gesehen, daß auch Du da angepasst hast.

Trotzdem funktioniert es bei mir noch nicht. Ich glaube, den Fehler ein wenig eingegrenzt zu haben:
Ich kann meine coils mit "set Wago880 buero_trigger 1" setzen, klappt prima.
ABER: "set Wago880 buero_trigger 0" funktioniert nicht. Auch nicht in der FHEM Oberfläche. Kannst Du da bitte noch mal drüber schaun?
Oder sollte ich da besser mit true/false anstatt 0/1 arbeiten?

Dank und Gruß,
Wolfram
Haussteuerung mit 300 Devices, Kopplung mit Wago SPS, InfluxDB (Grafana), HomeMatic, Tinkerforge (Fensterkontakte), SmartMeter, Heizungsüberwachung/-logging... Installation in QNAP NAS Docker container vollautomatisiert mit Ansible und GITlab

StefanStrobel

Hallo Wolfram,

da war tatsächlich noch ein Fehler im Modul, der sich bei der letzten Umstrukturierung eingeschlichen hat. Ich habe gerade eine neue Version unter Sonstiges gepostet.

Gruss
   Stefan

StefanStrobel

Ergänzung:
Wenn Du das Intervall beim Define auf 0 setzt, ist sind die automatischen Polls deaktiviert.

Gruss
    Stefan

wopl

Ja prima, somit scheint mein Problem gelöst. Erster Versuch und Test war erfolgreich.

Dank Dir Stefan.
Wann wird das Modul offiziell mit der normalen Update-Prozedur verfügbar sein?

Gruß Wolfram
Haussteuerung mit 300 Devices, Kopplung mit Wago SPS, InfluxDB (Grafana), HomeMatic, Tinkerforge (Fensterkontakte), SmartMeter, Heizungsüberwachung/-logging... Installation in QNAP NAS Docker container vollautomatisiert mit Ansible und GITlab