UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[Problem] Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

Alle Fragen rund um den WireGate Server
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
koend
Reactions:
Beiträge: 31
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 16 Mal
Danksagung erhalten: 7 Mal

Script wird mehrmals getriggert/im KNX Monitor unsichtbare GA

#1

Beitrag 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
    }
  ]
}
<TWS details removed by Privady Badger> ;)

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#2

Beitrag 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.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

eib-eg
Reactions:
Beiträge: 442
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1457 Mal
Danksagung erhalten: 235 Mal

#3

Beitrag von eib-eg »

Hallo @gbglace

Meintest du den ?
viewtopic.php?f=21&t=2438&start=80#p27389
TW 2600_99 seit 1.1.2018 / VPN zu

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#4

Beitrag von gbglace »

Jawoll, :handgestures-salute:
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
koend
Reactions:
Beiträge: 31
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 16 Mal
Danksagung erhalten: 7 Mal

#5

Beitrag 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
<TWS details removed by Privady Badger> ;)

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#6

Beitrag 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
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Ersteller
koend
Reactions:
Beiträge: 31
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 16 Mal
Danksagung erhalten: 7 Mal

#7

Beitrag 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
<TWS details removed by Privady Badger> ;)
Antworten

Zurück zu „WireGate Server“