Homematic Wired - HMW-IO-12-Sw7-DR - Einige Änderungen im Kanal nicht möglich

Begonnen von Peter666, 16 März 2017, 23:17:37

Vorheriges Thema - Nächstes Thema

Peter666

Homematic Wired - HMW-IO-12-Sw7-DR - Einige Änderungen im Kanal nicht möglich / mit Fehlermeldung

Ich habe folgenden Wiki-Artikel gelesen, um mich mit dem HMW-IO-12-Sw7-DR vertraut zu machen:
https://wiki.fhem.de/wiki/HMW-IO-12-Sw7-DR_Wired_RS485_I/O-Modul_12_Eing%C3%A4nge_7_Ausg%C3%A4nge

Zitat
get config all
liest den gesamten benutzten EEprom aus, zu je 16 Byte Blöcken. Das erfolgreiche Auslesen (erkennbar am ACK des Readings ... )
ist voraussetzung, um die Konfiguration der Ein-, und Ausgänge (pushbutton, switch, long_press_time usw setzen zu können).

Das Auslesen funktionierte bei mir nur mit:
get HMW_IO_12_Sw7_DR_ABC0123456 config all

Die vielen ACKs erschienen. Vorraussetzungen erfüllt.

-> Versuche ich nun über die GUI im Eingangs-Kanal zB einen der obenen 3 Variablen zu ändern
input_locked
input_type
long_press_time

... und drücke anschliessend den Button "Save Config", dann kommt entweder eine Fehlermeldung als Popup mit dem Text "hm485.js?1489524571.88736 line 54:
TypeError: submitBtn is undefined" oder es folgt eine weisse Seite. In jedem Fall wird keiner der der geänderten Werte festgeschrieben.

Handelt es sich hierbei um einen bekannten Fehler oder habe ich etwas übersehen?
Gibt es evtl. einen Workaround?

Gruss
Peter

Thorsten Pferdekaemper

Zitat von: Peter666 am 16 März 2017, 23:17:37
Das Auslesen funktionierte bei mir nur mit:
get HMW_IO_12_Sw7_DR_ABC0123456 config all
Das sollte eigentlich beim Anlegen des Geräts bzw. beim Start von FHEM automatisch passieren. Allerdings schadet ein "get config all" im Zweifelsfall auch nichts. Man sollte nur immer Warten, bís das Reading configStatus (wieder) auf "OK" steht.

Zitat
... und drücke anschliessend den Button "Save Config", dann kommt entweder eine Fehlermeldung als Popup mit dem Text "hm485.js?1489524571.88736 line 54:
TypeError: submitBtn is undefined"
Da ist tatsächlich ein Problemchen in hm485.js. Das sollte in der nächsten Version nicht mehr passieren, aber es wird noch eine Weile dauern, bis ich die freigeben kann. Als Umgehungslösung kannst Du in Deiner FHEMWEB-Instanz das Attribut confirmJSError auf 0 setzen.

Zitat
oder es folgt eine weisse Seite.
Das hatte ich auch ein paar Mal, konnte es aber nicht reproduzieren. Ich glaube auch nicht, dass das was mit HM485 zu tun hat, eher mit FHEMWEB selbst. Ich glaube, dass bei mir ein update mit anschließendem Neustart von FHEM geholfen.
Vielleicht hat es auch was mit den csrf-Problemen zu tun. Du kannst auch mal testweise in Deiner FHEMWEB-Instanz das Attribut csrfToken auf none setzen.
In jedem Fall, wenn Du das Problem nach einem Update noch hast, dann am besten einen Thread im FHEMWEB-Bereich aufmachen.

Zitat
In jedem Fall wird keiner der der geänderten Werte festgeschrieben.
Das ist wahrscheinlich ein Folgefehler von der Sache mit der weißen Seite. Auch hier wieder: Das ganze geht nur, wenn configStatus auf OK steht. Manchmal muss man auch ein paar Sekunden warten (oder einen Browser-Refresh machen), um die neuen Werte zu sehen.
Außerdem funktioniert z.B. Chrome meist besser als Internet Explorer.

Gruß,
    Thorsten
FUIP

Peter666

Zitat
Da ist tatsächlich ein Problemchen in hm485.js. Das sollte in der nächsten Version nicht mehr passieren, aber es wird noch eine Weile dauern, bis ich die freigeben kann.

Du bist also der Mann hinter HM485.js :)

Ich habe mir nochmal etwas Mühe gegeben, den Fehler nachzustellen, evtl. hilft es ja was.

Die Fehlermeldung "hm485.js?1489784123.15186 line 54: TypeError: submitBtn is undefined" tritt auch noch nach einem "update" und anschliessendem "shutdown restart" auf.

Reproduzierbar bei einem gepeerten und ungepeerten Tastereingang sowie auch bei den Ausgängen meines HMW_IO_12_Sw7_DR.

Die weisse Seite kommt dann, wenn ich den Fehler mit drücken auf "OK" bestätige und anschliessend "SAVE CONFIG" betätige.
Ich sehe dann für einen Sekundenbruchteil noch eine Popup-Fehlermeldung, kann jedoch den Inhalt nicht erkennen.
Einen Wimpernschlag später ist dann der Hintergrund weiss.

- Nochmal weiter probiert -
Die weisse Seite erscheint auch, wenn ich ohne etwas zu ändern direkt auf "SAVE CONFIG" drücke.
Der Fehler tritt auf bei allen Ein-/ und Ausgängen beim Betätigen von "SAVE CONFIG" des HMW-IO-12-Sw7-DR.
Andere Aktoren habe ich nicht, daher kann ich nur für den HMW-IO-12-Sw7-DR sprechen.

- Attribute angepasst -
Ich habe mal die folgenden beiden Attribute gesetzt, die Fehlersituation bleibt jedoch bestehen:
attr WEB confirmJSError 0 # Unterdrückt die Fehlermeldung, weisse Seite erscheint, evtl. geänderte Werte werden nicht festgeschrieben
attr WEB csrfToken none  # keine erkennbaren Auswirkungen

- Verwendeter Browser -
Ich verwende "Pale Moon" und Firefox, das Verhalten ist jeweils gleich.


-- In der Hoffnung dass es weiterhilft: hier ein log mit globalem verbose 5 --
Meine Interaktionen jeweils mit #-Präfix

2017.03.17 22:58:04 4: Connection accepted from WEB_192.168.178.76_21104
2017.03.17 22:58:04 4: WEB_192.168.178.76_21104 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2017-03.log; BUFLEN:0

# Push-Button auf Switch, sonst nicht, KEIN "SAVE CONFIG"
# Es erschent der Popup-Fehler "hm485.js?1489787846.42219 line 54: TypeError: submitBtn is undefined"

2017.03.17 22:58:05 4: WEB_192.168.178.76_21104 GET /fhem/FileLog_logWrapper?XHR=1&inform=type=status;filter=;since=1489787883;fmt=JSON&fw_id=54×tamp=1489787891777; BUFLEN:0
2017.03.17 22:58:19 5: HM485_LAN: HM485_LAN_Write TX: 106
2017.03.17 22:58:19 5: SW: fd026a4b
2017.03.17 22:58:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 106 Cmd: 97
2017.03.17 22:58:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (106) 00 AliveStatus: 00
2017.03.17 22:58:39 5: HM485_LAN: HM485_LAN_Write TX: 107
2017.03.17 22:58:39 5: SW: fd026b4b
2017.03.17 22:58:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 107 Cmd: 97
2017.03.17 22:58:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (107) 00 AliveStatus: 00
2017.03.17 22:58:59 5: HM485_LAN: HM485_LAN_Write TX: 108
2017.03.17 22:58:59 5: SW: fd026c4b
2017.03.17 22:58:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 108 Cmd: 97
2017.03.17 22:58:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (108) 00 AliveStatus: 00
2017.03.17 22:59:19 5: HM485_LAN: HM485_LAN_Write TX: 109
2017.03.17 22:59:19 5: SW: fd026d4b
2017.03.17 22:59:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 109 Cmd: 97
2017.03.17 22:59:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (109) 00 AliveStatus: 00
2017.03.17 22:59:30 4: Connection accepted from WEB_192.168.178.76_21108
2017.03.17 22:59:30 4: WEB_192.168.178.76_21108 GET /fhem/pgm2/images/ui-bg_glass_65_ffffff_1x400.png; BUFLEN:0
2017.03.17 22:59:34 4: Connection closed for WEB_192.168.178.76_21104: EOF
2017.03.17 22:59:39 4: WEB_192.168.178.76_21108 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2017-03.log; BUFLEN:0

# Kein ERROR im Log erkennbar
# Jetzt "SAVE CONFIG" (Switch ist noch im pull-down hinterlegt)
# Kurze Pupup-Fehlermeldung, direkt gefolgt von weisser Seite

2017.03.17 22:59:39 5: HM485_LAN: HM485_LAN_Write TX: 110
2017.03.17 22:59:39 5: SW: fd026e4b
2017.03.17 22:59:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 110 Cmd: 97
2017.03.17 22:59:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (110) 00 AliveStatus: 00
2017.03.17 22:59:40 4: WEB_192.168.178.76_21108 GET /fhem/FileLog_logWrapper?XHR=1&inform=type=status;filter=;since=1489787978;fmt=JSON&fw_id=55×tamp=1489787986837; BUFLEN:0
2017.03.17 22:59:59 5: HM485_LAN: HM485_LAN_Write TX: 111
2017.03.17 22:59:59 5: SW: fd026f4b
2017.03.17 22:59:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 111 Cmd: 97
2017.03.17 22:59:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (111) 00 AliveStatus: 00
2017.03.17 23:00:19 5: HM485_LAN: HM485_LAN_Write TX: 112
2017.03.17 23:00:19 5: SW: fd02704b
2017.03.17 23:00:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 112 Cmd: 97
2017.03.17 23:00:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (112) 00 AliveStatus: 00
2017.03.17 23:00:39 5: HM485_LAN: HM485_LAN_Write TX: 113
2017.03.17 23:00:39 5: SW: fd02714b
2017.03.17 23:00:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 113 Cmd: 97
2017.03.17 23:00:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (113) 00 AliveStatus: 00
2017.03.17 23:00:59 5: HM485_LAN: HM485_LAN_Write TX: 114
2017.03.17 23:00:59 5: SW: fd02724b
2017.03.17 23:00:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 114 Cmd: 97
2017.03.17 23:00:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (114) 00 AliveStatus: 00
2017.03.17 23:01:19 5: HM485_LAN: HM485_LAN_Write TX: 115
2017.03.17 23:01:19 5: SW: fd02734b
2017.03.17 23:01:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 115 Cmd: 97
2017.03.17 23:01:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (115) 00 AliveStatus: 00
2017.03.17 23:01:39 5: HM485_LAN: HM485_LAN_Write TX: 116
2017.03.17 23:01:39 5: SW: fd02744b
2017.03.17 23:01:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 116 Cmd: 97
2017.03.17 23:01:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (116) 00 AliveStatus: 00
2017.03.17 23:01:59 5: HM485_LAN: HM485_LAN_Write TX: 117
2017.03.17 23:01:59 5: SW: fd02754b
2017.03.17 23:01:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 117 Cmd: 97
2017.03.17 23:01:59 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (117) 00 AliveStatus: 00
2017.03.17 23:02:19 5: HM485_LAN: HM485_LAN_Write TX: 118
2017.03.17 23:02:19 5: SW: fd02764b
2017.03.17 23:02:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 118 Cmd: 97
2017.03.17 23:02:19 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (118) 00 AliveStatus: 00
2017.03.17 23:02:39 5: HM485_LAN: HM485_LAN_Write TX: 119
2017.03.17 23:02:39 5: SW: fd02774b
2017.03.17 23:02:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: MsgId: 119 Cmd: 97
2017.03.17 23:02:39 5: HM485_LAN: HM485_LAN_parseIncommingCommand: Alive: (119) 00 AliveStatus: 00
2017.03.17 23:02:51 4: Connection accepted from WEB_192.168.178.76_21125
2017.03.17 23:02:51 4: WEB_192.168.178.76_21125 POST /fhem&detail=HMW_IO_12_Sw7_DR_NEQ0891176_01&dev.setHMW_IO_12_Sw7_DR_NEQ0891176_01=HMW_IO_12_Sw7_DR_NEQ0891176_01&cmd.setHMW_IO_12_Sw7_DR_NEQ0891176_01=set&arg.setHMW_IO_12_Sw7_DR_NEQ0891176_01=config&val.setHMW_IO_12_Sw7_DR_NEQ0891176_01=input_locked+0+input_type+0+long_press_time+1.00+&input_locked=0&input_type=0&long_press_time=1.00&submit.HM485.config=Save+Config; BUFLEN:0
2017.03.17 23:02:51 3: FHEMWEB WEB CSRF error:  ne csrf_103845645964482. For detals see the csrfToken FHEMWEB attribute
2017.03.17 23:02:51 4: WEB: /fhem&detail=HMW_IO_12_Sw7_DR_NEQ0891176_01&dev.setHMW_IO_12_Sw7_DR_NEQ0891176_01=HMW_IO_12_Sw7_DR_NEQ0891176_01&cmd.setHMW_IO_12_Sw7_DR_NEQ0891176_01=set&arg.setHMW_IO_12_Sw7_DR_NEQ0891176_01=config&val.setHMW_IO_12_Sw7_DR_NEQ0891176_01=input_locked+0+input_type+0+long_press_time+1.00+&input_locked=0&input_type=0&long_press_time=1.00&submit.HM485.config=Save+Config / RL:20 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2017.03.17 23:02:51 4: Connection closed for WEB_192.168.178.76_21103: EOF
2017.03.17 23:02:59 4: WEB_192.168.178.76_21125 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2017-03.log; BUFLEN:0


Gruss
Peter

Peter666

Ich muss mich korrigieren, folgender Workaround funktioniert und lässt mich die Änderungen speichern:


attr WEB csrfToken none


Der Trick war im Anschluss noch ein "shutdown restart" durchzuführen. Danach greift die Änderung.
Ich vermute daher, dass generell Attribute von FHEMWEB erst nach einem restart greifen.

Die Popup-Fehlermeldung erscheint weiterhin, allerdings werden die Werte jetzt festgeschrieben.

Funktionierte im Test mit dem Wechsel der Variable input_type "pushbutton" auf "switch"
Funktioniert ebenfalls bei der Änderung eines peersettings. Hier liess sich ohne "attr WEB csrfToken none" auch nichts festschreiben. Es erschien bei den peer-Settings allerding keine Popup-Fehlermeldung, sonder eine leere Seite.


Thorsten Pferdekaemper

Hi,
zur Klarstellung: Das sind zwei unabhängige Sachen: Einmal das Popup und zum Zweiten die Probleme beim Speichern. Beide haben nichts miteinander zu tun.
Das Popup ist nur nervig. Wenn man es mit "Ok" bestätigt dürfte es weiter nichts ausmachen. Man kann es aber mit confirmJSError abschalten.
Ein ganz anderes Problem und unabhägig vom Popup sowie confirmJSError ist das andere Problem. Das wiederum bekommt man vorerst ggf. mit csrfToken none in den Griff. Warum man da einen Neustart braucht weiß ich nicht. Das hat wiederum nichts mit HM485 zu tun.
Gruß,
   Thorsten
FUIP