Rollladen DPT5.001

Begonnen von th1984, 06 Juni 2016, 15:57:46

Vorheriges Thema - Nächstes Thema

th1984

Hallo in die Runde,

ich habe neuerdings alles auf KNX umbestellt, allerdings hab ich heute gemerkt das einiges doch nicht so toll (oder sagen wir korrekt) läuft wie es sollte.

Problem 1:

Wann immer ich im Web auf Pos1, oder Pos 2 klicke, wird die falsche Position angefahren. In meinem Beispiel habe ich 30 % definiert, angefahren wird immer 29 %. Oder meine zweite Position ist 50 % und angefahren werden immer 49 %. Woran liegt das, was mache ich falsch?

Problem 2:

Wenn ich mit der Maus über das Icon fahre hat es mir in der Vergangenheit immer den Prozentwert angezeigt in der der Rollladen gerade positioniert war. Also zum Beispiel 0%. Jetzt steht da: "0%20%25". Der erste Wert ist der Richtige aber das Ende mit "20%25" ist da immer angehängt. Ist das ein Fehler meinerseits?

Meine Definition:

define Kinderzimmer_Rolladen KNX 2/2/13:dpt5.001 2/2/12:dpt1 2/2/14:dpt1 2/2/22:dpt5.001
attr Kinderzimmer_Rolladen IODev KNX
attr Kinderzimmer_Rolladen alias OG_Kinderzimmer
attr Kinderzimmer_Rolladen devStateIcon 100.*:fts_shutter_100 1\d.*:fts_shutter_10 2\d.*:fts_shutter_20 3\d.*:fts_shutter_30 4\d.*:fts_shutter_40 5\d.*:fts_shutter_50 6\d.*:fts_shutter_60 7\d.*:fts_shutter_70 8\d.*:fts_shutter_80 9\d.*:fts_shutter_90 \d.*:fts_window_2w on:fts_shutter_manual off:fts_shutter_manual
attr Kinderzimmer_Rolladen eventMap /value 100% g4:Ab/on g3:Stop/value 0% g4:Auf/value 30% g4:Pos1/value 50% g4:Pos2
attr Kinderzimmer_Rolladen group Rolladen
attr Kinderzimmer_Rolladen room OG_Kinderzimmer,Zentral_Rolladen
attr Kinderzimmer_Rolladen webCmd Ab:Stop:Auf:Pos1:Pos2


Tipps werden dankbar angenommen ;-)
vg Thomas

Andi291

Servus!

Mach mal step-by-step.

Probiere:
define test KNX 2/2/22:dpt5.001

set test value 30
set test value 50


Und poste das Ergebnis.

Grüße, Andi

th1984

Servus Andi,

danke für deinen tollen Vorschlag, da wäre ich wieder nicht drauf gekommen das Ding mal einfach einfach zu testen  :D

Ergebnis auf "set test value 30": "29 %"
Ergebnis auf "set test value 50": "49 %"

Damit lässt sich ein Problem identifizieren, verstehen tue ich es aber auch nicht: das Attribut devStateIcon. Lösche ich es, stimmt zumindest die Anzeige in % (wenngleich der falsche Wert da steht). Füge ich das allerdings wieder ein wird dahinter wieder das "20%25" angehängt. Auch bei dem neu angelegten test Device mit nur dem devStateIcon gleiches Ergebnis....

Ich werde mich heute Abend nochmal mit dem devStatIcon bemühen, jetzt wo ich weiß wo ich suchen muss.

Danke vorab
Thomas

Andi291

OK - also mit dem devstateicon Problem kann ich nicht weiterhelfen. Meine Kompetenz endet bei befülltem state :-)

Wenn Du jetzt die 29% hast, schaut das so aus, als sendet das Rollo-Gerät 29% raus.

Was spricht denn der ETS-Busmonitor?
Was kommt auf 2/2/13 an (bitte separates Device anlegen)?

Ich vermute generell ein Problem bei der Zuordnung zwischen Telegram und Icon. Um das aufzulösen, musst Du Dir wirklich im ETS-Monitor alle Telegramme ansehen und chronologisch versuchen nachzubauen.

Du solltest Dir auch mal die Attribute stateRegex und stateCmd ansehen. Für genau solche komplexen Fälle hab ich die eingeführt.

Grüße, Andi

th1984

#4
Ich bin bisher nicht wirklich weiter gekommen mit dem DevStateIcon Problem, aber das wird sich dann auch noch irgendwann finden. Bezüglich den falschen % Werten: Es ist irgendwo ein Umrechnungsfehler oder Rundungsfehler wenn ich mir das so anschaue:

2016.06.08 11:39:06 4: WEB_192.168.1.5_59838 POST /fhem&detail=test&dev.settest=test&cmd.settest=set&arg.settest=value&val.settest=50; BUFLEN:0
2016.06.08 11:39:06 5: Cmd: >set test value 50<
2016.06.08 11:39:06 5: enter set test: hash: HASH(0x243af40), attributes: test, value, 50
2016.06.08 11:39:06 5: set test: model: dpt5.001, GAD: 2/2/22, GAD hex: 2216, gno: 1
2016.06.08 11:39:06 5: check value: 50, gno: 1
2016.06.08 11:39:06 5: check value: 50, gno: 1, model: dpt5.001, pattern: (?^:[+-]?\d{1,3})
2016.06.08 11:39:06 5: encode value: 50, gno: 1
2016.06.08 11:39:06 5: encode model: dpt5.001, code: dpt5, value: 50
2016.06.08 11:39:06 5: encode normalized value: 127.5
2016.06.08 11:39:06 5: encode model: dpt5.001, code: dpt5, value: 127.5, numval: 127.5, hexval: 007f
2016.06.08 11:39:06 5: sending Cw2216007f
2016.06.08 11:39:06 5: encode_eibd dst: 2216 apci: 2 datalen: 2 data: 0 127
2016.06.08 11:39:06 5: SendGroup: dst: 2216, msg: 4630 0 128 127

2016.06.08 11:39:06 5: sendRequest: 0027121600807f

2016.06.08 11:39:06 5: set test: cmd: value, value: 50, translated: 007f
2016.06.08 11:39:06 5: decode value: 007f, gno: 1
2016.06.08 11:39:06 5: decode model: dpt5.001, code: dpt5, value: 007f
2016.06.08 11:39:06 5: decode model: dpt5.001, code: dpt5, value: 007f, numval: 127, state: 49 %
2016.06.08 11:39:06 5: Triggering test (2 changes)
2016.06.08 11:39:06 5: Starting notify loop for test, first event setG1: 49 %
2016.06.08 11:39:06 5: Notify from Device: test recieved
2016.06.08 11:39:06 4: DbLog_ParseEvent calling external DbLog_splitFn for type: KNX
2016.06.08 11:39:06 5: splitFn - enter, attributes: setG1: 49 %
2016.06.08 11:39:06 5: splitFn - READING: setG1, VALUE: 49, UNIT: %
2016.06.08 11:39:06 5: DbLog: logging of Device: test , Type: KNX , Event: setG1: 49 % , Reading: setG1 , Value: 49 , Unit: %
2016.06.08 11:39:06 4: DbLog_ParseEvent calling external DbLog_splitFn for type: KNX
2016.06.08 11:39:06 5: splitFn - enter, attributes: 49 %
2016.06.08 11:39:06 5: splitFn - READING: state, VALUE: 49, UNIT: %
2016.06.08 11:39:06 5: DbLog: logging of Device: test , Type: KNX , Event: 49 % , Reading: state , Value: 49 , Unit: %
2016.06.08 11:39:06 5: exit set


Eventuell nutze ich nur den falschen DPT? Wobei in der ETS exakt der drinsteht. Was ich jetzt nicht ganz verstehe warum der Wert 50 in 127,5 umgewandelt wird um dann auf 127 gerundet zu werden. Speziell auch warum hier abgerundet wird? Ist das eventuell schon der Wurm, sodass ich mir ein stateRegex sparen kann?

ETS Log kann ich mir eventuell heute abend ziehen, wobei ich glaube das Log aus FHEM reicht hier schon oder?

Und ich bin gerade draufgekommen beim DevStateIcon Problem: "20%25" sind ja die HEX Werte für Leerzeichen und Prozentzeichen, also genau das was eh im State steht. da kann mir dann das stateRegex helfen  :D hoff ich halt.

Andi291

Abend!

Im decode-Teil habe ich die Zahlen per %d formatiert. Das widerum resultiert in nicht passierender Rundung.

Probier mal den Anhang.

Und ja, stateRegex müsste helfen.

th1984

Mahlzeit!

Und schon funktioniert es! Danke für deine Mühe.... Muss ich das KNX Modul jetzt vom Update ausnehmen?

Andi291

Theoretisch ja. Praktisch nein. Ich check den fix zeitnah ein.