FHEM sendet immer 2x auf Bus

Begonnen von Pool_Boy, 12 Februar 2015, 11:17:46

Vorheriges Thema - Nächstes Thema

Pool_Boy

Hallo Freunde,

ich habe leider das Problem dass wenn ich aus dem FHEM versuche einen Befehl auf den Bus zu senden (z.b. EIB_2101 auf on) dass dieser Befehl immer 2 mal auf den Bus geschickt wird.

Kann das vielleicht daran liegen dass diese über fronthem mit SmartVisu gekoppelt sind?

Event monitor:

2015-02-12 11:13:49 EIB EIB_2101 on
2015-02-12 11:13:49 EIB EIB_2101 on
2015-02-12 11:13:57 EIB EIB_2101 off
2015-02-12 11:13:57 EIB EIB_2101 off


fhem.cfg

define EIB_2101 EIB 2101
attr EIB_2101 IODev KNX
attr EIB_2101 room EIB
define FileLog_EIB_2101 FileLog ./log/EIB_2101-%Y.log EIB_2101
attr FileLog_EIB_2101 logtype text
attr FileLog_EIB_2101 room EIB

herrmannj

Hi,

ich denke nein, aber im Zweifel kannst Du das doch rausfinden indem Du sv ausschaltest (im Browser, device steht auf disconnected)

vg
jörg

aliate

Ich habe das gleiche "Problem", aber nicht nur beim Schalten über fhem.
Wenn ich beispielsweise über einen Wandtaster das Licht schalte werden ebenfalls zwei identische Events im EventMonitor angezeigt. Evtl. handelt es sich hier um eine reine Darstellungssache in fhem?

Das Ganze stört mich aber überhaupt nicht, da es die Funktion (bisher) in keinster Weise beeinträchtigt und mein System extrem zuverlässig läuft.

landlingerg

#3
Hallo,

Habe auch in den letzten Tagen festgestellt das über Fhem ausgelöste Knx Events immer doppelt im Event Monitor angezeigt werden.
Wenn ich einen Knx Taster betätige dann wird das Ereignis nur einmal angezeigt.

Ich verwende einen Raspberry auf welchem Eibd und Fhem installiert ist.
Die Settings für eibd und fhem Tul habe ich aus diversen Foren.

Habe bereits versucht eibd unterschiedlich zu konfigurieren.... Leider ohne Erfolg.
Ich vermute jedoch das im fhem Source irgendwie 2 Ereignisse produziert werden.

Schnipsel aus meinem Logfile
2015.03.31 21:08:44 2: EIB set Raff_EG_EIBRaff on
2015.03.31 21:08:44 2: EIB Raff_EG_EIBRaff on


Schnipsel aus dem Event Monitor
Events (Filter:.*):
2015-03-31 21:08:44 EIB Raff_EG_EIBRaff Ab
2015-03-31 21:08:44 EIB Raff_EG_EIBRaff Ab



Zusatz:
Habe gerade nochmals mit eibd und ETS4 mitgeloggt und wenn FHEM ein KNX Event doppelt abschickt dann wird dieses nur einmal im ETS4 und eibd vbusmonitor1 angezeigt!

Sg
Günther

smurfix

ZitatDie Settings für eibd und fhem Tul habe ich aus diversen Foren.
So grundsätzlich (auch wenn es in diesem Fall wahrscheinlich nicht zur Lösung beiträgt): Bitte sowas gleich konkret mit reinschreiben!

landlingerg

Zitat von: smurfix am 27 April 2015, 10:15:13
So grundsätzlich (auch wenn es in diesem Fall wahrscheinlich nicht zur Lösung beiträgt): Bitte sowas gleich konkret mit reinschreiben!


Ich verstehe nicht ganz was dieser Eintrag hier bringen soll?
Vielleicht kannst mich ja aufklären damit ich dir folgen kann.

sg
Günther

smurfix

Ist das so schwierig?
eibd/knxd hat einen Berg Optionen, die dessen Verhalten in interessanter Weise beeinflussen können.
Wenn jemand dafür qualifizierte Hilfestellung haben will, dann ist es wichtig, mit dazuzuschreiben, mit welchen Flags das Teil gestartet wurde.

NB: nachdem ich mir den knxd ein bisschen genauer angesehen habe, nehme ich das "wahrscheinlich" zurück und sage zum Verhalten dieses Programms ohne nähere Informationen vorsichtshalber gar nichts.

erwin

Ich hab da eine Theorie.....

es entstehen immer 2 Events:
1) das set command - wenn du z.B. auf der FHEM Oberfläche irgendeinen command auslöst.
2) "das echo"  - der EIBD schickt dein command auf den BUS, aber auch übers LAN zurück an FHEM.

Du kannst das auch ausprobieren: falls du eine Aktor über einen "realen KNX-Taster" schaltest, kommt nur EIN event....
N.B. Falls es allerdings die KNX-Gruppenadresse nicht gibt am BUS, wirst du 4 events sehen, weil (ich vermute es ist der EIBD, es könnte aber auch der KNX-Taster sein) da offensichtlich Wiederholungen passieren, falls kein KNX-Ack kommt. 

Das FHEM EIB Modul sendet niemals ein Ack, dieser Teil des codes ist auskommentiert....
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Andi291

Hallo,

da kann ich Erwin nur beipflichten - verhält sich in meiner Anlage ebenso.

Ein Event von Außen (Taster) - nur ein Event. Ein Event vom FHEM - zwei Events (also senden und Echo).
Lässt sich (denke ich) auch nicht unterbinden. Du müsstest den eibd ja zwingen, das zuletzt gesendete Telegramm für einen Zeitraum "x" nicht mehr zu empfangen - würdest im Zweifelsfall also auch "externe" Telegramme im Zeitraum "x" verlieren. Das mag für Deine Applikation nicht so wichtig sein, für andere aber schon :-)

Passt die Antwort für Dich?

Grüße, Andi

erwin

Hi Andi,

ich hab zu diesem Thema einen Fix, der zwar nicht die Wiederholungen verhindert, (was ich auch völlig falsch finde), aber unterscheidbar macht.
Unter anderem zwei zusätzliche readings : set_GAx und get_GAx ... und zusätzlich noch völlig kompatibel zum bisherigen Stand ist.
Ich möchte jedoch abwarten, bis du deine version eingecheckt hast und dann die Änderungen vorschlagen - Ich hoffe du bist einverstanden!

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

smurfix

Zitat von: Andi291 am 16 Mai 2015, 20:38:46
Ein Event von Außen (Taster) - nur ein Event. Ein Event vom FHEM - zwei Events (also senden und Echo).
Lässt sich (denke ich) auch nicht unterbinden. Du müsstest den eibd ja zwingen, das zuletzt gesendete Telegramm für einen Zeitraum "x" nicht mehr zu empfangen
Die Frage ist, wieso hier jemand das zuletzt gesendete Telegramm überhaupt nochmal empfängt.

KNX ist ein Bus. Ein Bus-Teilnehmer will seine soeben gesendeten Telegramme nicht selbst sehen.

Eigentlich geht das in Perl so:
use Socket qw(IPPROTO_IP IP_MULTICAST_LOOP);
setsockopt($socket, IPPROTO_IP, IP_MULTICAST_LOOP, pack("C",0));

Andi291

Hallo Erwin,

meine Änderungen sind seit gestern online  ;D

Sollten regulär über Update kommen...

Grüße, Andi