Seite 1 von 1

Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: Sa Nov 07, 2020 8:33 pm
von koend
Hallo,

eine Folgefrage zur im Post viewtopic.php?f=24&t=1887&p=20286#p20286 beschriebenen Situation.

Kurze Beschreibung:
- Custom Logic mit cron triggert 0 0 20 14,28 * * ein Telegramm auf GA 3/0/0 (siehe unten)
- Ein Wiregate script ist darauf subscribed und sendet eine Mail.

Die Probleme:
0) Mehr als Hintergrund: Seit März hatte ich die Mails nicht mehr empfangen, was mir heute auffiel. Im Logikeditor sah ich eine Meldung zum neuen Synxtax (oder so), das habe ich gerade mal ausgeführt. Immerhin triggert die Logik jetzt wieder.

1) Wie im ersten Post beschrieben, erhalte ich wieder vier Mails anstelle von einer.
Nachdem ich damals den Cron-Syntax angepasst habe, war das Problem verschwunden.

Göran schrieb damals: "Ich vermute das diese GA vom plug-In-Container nicht KNX-konform mit einem ACK beantwortet wird, daher sendet der TWS an seinem KNX-KO dieses Telegramm erneut."

Haben Änderungen an der Logik-Engine bzw. am Wiregate-Container stattgefunden die dies erklären können?

Wie kann ich das wiregate script anpassen und ein ACK senden?

Vielen Dank für die Hilfe und viele Grüße

Koen


Der Logik-Baustein:

Code: Alles auswählen

{
  "levels": [
    "CRONTRIGGER_1_1",
    "CRONTRIGGER_2_1",
    "$VAR<In>0",
    "$Out"
  ],
  "modules": [
    [
      "Cron",
      "CRONTRIGGER_1_1",
      0,
      0,
      "CRONTRIGGER_2_1"
    ],
    [
      "Break",
      []
    ],
    [
      "And",
      [
        "$VAR<In>0"
      ],
      "$Out"
    ]
  ],
  "inputPorts": [],
  "outputPorts": [
    {
      "name": "Output",
      "description": "OUT",
      "mnemonic": "$Out",
      "triggerType": "t",
      "type": "boolean",
      "optional": false,
      "multiple": false
    }
  ]
}

{
  "Level": [
    true,
    "0 0 20 14,28 * *",
    true,
    false
  ],
  "LevelTypes": [
    "boolean",
    "string",
    "boolean",
    "boolean"
  ],
  "Module": [
    [
      "Cron",
      1,
      0,
      0,
      2
    ],
    [
      "Break",
      []
    ],
    [
      "And",
      [
        3
      ],
      4
    ]
  ],
  "Input": [],
  "Output": [
    [
      "Output",
      4,
      "t",
      "OUT"
    ]
  ],
  "mnemonicMap": {
    "CRONTRIGGER_1_1": {
      "mnemonic": "CRONTRIGGER_1_1",
      "dataType": "boolean",
      "initialValue": true,
      "index": 0
    },
    "CRONTRIGGER_2_1": {
      "mnemonic": "CRONTRIGGER_2_1",
      "dataType": "string",
      "initialValue": "0 0 20 14,28 * *",
      "index": 1
    },
    "$VAR<In>0": {
      "mnemonic": "$VAR<In>0",
      "dataType": "boolean",
      "initialValue": true,
      "index": 2
    },
    "$Out": {
      "mnemonic": "$Out",
      "dataType": "boolean",
      "initialValue": false,
      "index": 3
    }
  },
  "expandedCodePortsIn": [],
  "expandedCodePortsOut": [
    {
      "name": "Output",
      "description": "OUT",
      "mnemonic": "$Out",
      "triggerType": "t",
      "type": "boolean",
      "optional": false,
      "multiple": false
    }
  ]
}

Re: Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: Sa Nov 07, 2020 9:22 pm
von gbglace
Ich bin nicht gut im Verlinken von anderen Beiträgen, aber diese Woche gab es eigentlich nur einen Thread wo wir uns intensiv mit dem ACK-Verhalten des TWS beschäftigt haben.

Alle Telegramme die irgendwie durch die HW des TWS den Weg auf den KNX-Bus finden werden nicht vom TWS mit einem ACK versehen. Also auch nicht von Container an Container auch wenn man glauben würde der eine Container ist ja ein anderes Gerät. Am TP-Bus sitzt aber nur ein Control-Chip welcher das primär steuert und der ist eben der gleiche aus dem Das Telegram rausgeht und dann schreibt er eben kein ACK.

Dieser Chip ist aber auch so gebaut das er einfach alles was er nicht selbst gesendet hat ACK, das soll auch ein aktueller neuer Standard sein. Aber offensichtlich hat kein anderes TP-Gerät diese Generation Chip verbaut, so dass kein anderes gerät am TP-Bus ein ACK sendet. denn sowas muss nicht ei gerät sein welches auch selbst die gesendete GA benötigt.

Insofern ja deswegen kommen die Telegramme dann 4-mal aus dem einen Container weil dieser Chip am TP-Bus eben nicht sich selbst ein ACK gibt.

Re: Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: Sa Nov 07, 2020 9:31 pm
von eib-eg
Hallo @gbglace

Meintest du den ?
viewtopic.php?f=21&t=2438&start=80#p27389

Re: Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: So Nov 08, 2020 7:31 am
von gbglace
Jawoll, :handgestures-salute:

Re: Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: So Nov 08, 2020 2:58 pm
von koend
Vielen Dank für die schnelle Erklärung!

Was sind Lösungsmöglichkeiten?
1) In das Script einen Zähler einbauen und nur z.B. eine Mail pro Minute verschicken?

2) Kann das Skript ein ACK senden? Würde das überhaupt schnell genug reagieren?

3) ???

Vielen Dank und viele Grüße

Koen

Re: Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: So Nov 08, 2020 3:02 pm
von StefanW
Hi,
koend hat geschrieben: So Nov 08, 2020 2:58 pm2) Kann das Skript ein ACK senden? Würde das überhaupt schnell genug reagieren?
Ganz kurz, da wenig Zeit: Nein und Nein.


lg

Stefan

Re: Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Verfasst: So Nov 15, 2020 9:56 pm
von koend
Hallo,

hier der Quelltext für's rate limiting:

Code: Alles auswählen

my $time = time();
my $last = $plugin_info{$plugname.'_last'};

if ($debugUpdateRRDs) {
	plugin_log($plugname,'last call:    '.$last."\n");
	plugin_log($plugname,'current time: '.$time."\n");
	plugin_log($plugname,'difference:   '.($time-$last)."\n");
}

if (($time - $last) < 0.1)  {

	if ($debugUpdateRRDs) {
		plugin_log($plugname,'Stopping script execution'."\n");
	}
}
else {
	if ($debugUpdateRRDs) {
		plugin_log($plugname,'Execute script normally'."\n");
	}
Viele Grüße

Koen