KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[Frage] [V4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Informationen und Diskussionen über Logik-Engine und Logik-Editor
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

Ersteller
avater
Reactions:
Beiträge: 58
Registriert: Sa Apr 02, 2022 12:19 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 8 Mal

[V4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

#1

Beitrag von avater »

Hallo zusammen,

ich würde gerne einen Logikeingang nicht nur intern verwenden, sondern den Eingangswert auch wieder auf einen Ausgang legen. Allerdings gibt das immer beim Speichern der Logik einen Fehler mit Aufforderung zum Reload.

Wie bekomme ich also den Eingangswert auch wieder nach außen? Der Eingangswert kommt aus der Visu und soll auch wieder in die Visu gesetzt werden, damit der Wert auch in allen Instanzen ankommt.

Die Logik funktioniert ansonsten:

Code: Alles auswählen

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00"
  },
  "Input": [
	["PV-Einspeisung", "", "$PV", "c"],
	["Nachtabsenkung unterhalb von", "", "$BoundLOW", "c"],
	["Tagbetrieb oberhalb von", "", "$BoundHIGH", "c"],
	["Temperatur Nacht", "", "$TempLOW", "c"],
	["Temperatur Tag", "", "$TempHIGH", "c"]
  ],
  "Output": [
	["Solltemperatur HBX", "", "$Temp", "c"],
	["Modus Tag/Nacht", "", "$Modus", "c"]
	//["Temperatur Nacht", "", "$TempLOW", "c"],  // <-- den Wert auf Ausgang?
	//["Temperatur Tag", "", "$TempHIGH", "c"]    // <-- den Wert auf Ausgang?
  ],
  "Level": [
	["$PV", "float", 0],
	["$BoundLOW", "int", 1500],
	["$BoundHIGH", "int", 3000],
	["$TempHIGH", "float", 21.0],
	["$TempLOW", "float", 18.0],
	["$Modus", "bool", false],
	["$Formula", "string", "X1?X2:X3"],
	["$Temp", "float", 18.0]
  ],
  "Module": [
      ["Comparator","$PV","$Modus",["$BoundLOW","$BoundHIGH"]],
      ["CalcFormula",["$Modus", "$TempHIGH", "$TempLOW"], "$Temp", "$Formula"]
  ]
}
Viele Grüße
Arne
Zuletzt geändert von Parsley am Di Mai 27, 2025 9:51 am, insgesamt 1-mal geändert.
Viele Grüße!
Arne

TWS 3500 XL #1458 mit KNX, 1-Wire (PBM #1139), HTTP-API, MQTT, Modbus
Support-VPN aktiv, Neustart nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#2

Beitrag von Robert_Mini »

Am einfachsten mit einem Latch, dessen Trigger immer True ist und TriggerOption 0.

Code: Alles auswählen

["Latch","$TempLOW","$TempLOW_out","$KonstTrue",0]
Output natürlich auf $TempLOW_out ändern und $KonstTrue definieren.

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#3

Beitrag von gbglace »

Aber wozu einen Eingangswert ohne jedwede Transformation auf einen Output geben?

Wozu die Logik da als Durchlauferhitzer benutzen, nur um dem einen anderen Namen zu geben?

Im Dispatcher steht das Eingangsobjekt doch ebenso jedem anderen beliebigen Nutzer zur Verfügung?
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
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

Ersteller
avater
Reactions:
Beiträge: 58
Registriert: Sa Apr 02, 2022 12:19 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 8 Mal

#4

Beitrag von avater »

Der Use Case ist, dass der Eingangswert von Unterschiedlichen Lieferanten stammen kann, und eine Änderung beim einen auch zum anderen propagiert werden soll.

Ursprünglich hatte ich die Beobachtung gemacht, dass ein durch den Nutzer gesetzter Wert aus der Visu nicht in andere Visu-Instanzen übernommen wurde. Bei näherer Betrachtung funktioniert das aber wohl doch automatisch, da hatte ich wohl einen Effekt im System.

Mag mir noch jemand erläutern, was der technische Hintergrund ist, dass ein Eingang nicht einfach direkt auf einen Ausgang gelegt werden kann?
Viele Grüße!
Arne

TWS 3500 XL #1458 mit KNX, 1-Wire (PBM #1139), HTTP-API, MQTT, Modbus
Support-VPN aktiv, Neustart nach Rücksprache

Ersteller
avater
Reactions:
Beiträge: 58
Registriert: Sa Apr 02, 2022 12:19 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 8 Mal

#5

Beitrag von avater »

Robert_Mini hat geschrieben: Mo Mai 26, 2025 11:43 pm Am einfachsten mit einem Latch, dessen Trigger immer True ist und TriggerOption 0.

Code: Alles auswählen

["Latch","$TempLOW","$TempLOW_out","$KonstTrue",0]
Output natürlich auf $TempLOW_out ändern und $KonstTrue definieren.

lg
Robert
Hallo Robert,

damit habe ich das gleiche Problem - ich kann nicht speichern. Wo hat sich da noch ein Fehler versteckt?

Code: Alles auswählen

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00"
  },
  "Input": [
	["PV-Einspeisung", "Positiven Wert für positive Schwellen nutzen (ggf. invertieren)!", "$PV", "c"],
	["Nachtabsenkung unterhalb von", "", "$BoundLOW", "c"],
	["Tagbetrieb oberhalb von", "", "$BoundHIGH", "c"],
	["Temperatur Nacht", "", "$TempLOW", "c"],
	["Temperatur Tag", "", "$TempHIGH", "c"]
  ],
  "Output": [
	["Solltemperatur HBX", "", "$Temp", "c"],
	["Modus Tag/Nacht", "", "$Modus", "c"],
	["Temperatur Nacht", "", "$TempLOW_out", "c"],
	["Temperatur Tag", "", "$TempHIGH_out", "c"]
  ],
  "Level": [
	["$PV", "float", 0],
	["$BoundLOW", "int", 1500],
	["$BoundHIGH", "int", 3000],
	["$TempHIGH", "float", 21.0],
	["$TempLOW", "float", 18.0],
	["$TempHIGH_out", "float", 21.0],
	["$TempLOW_out", "float", 18.0],
	["$Modus", "bool", false],
	["$Formula", "string", "X1?X2:X3"],
	["$Temp", "float", 18.0],
	["$KonstTrue", "bool", true]
  ],
  "Module": [
      ["Comparator","$PV","$Modus",["$BoundLOW","$BoundHIGH"]],
	  ["CalcFormula",["$Modus", "$TempHIGH", "$TempLOW"], "$Temp", "$Formula"],
	  ["Latch","$TempLOW","$TempLOW_out","$KonstTrue",0],
	  ["Latch","$TempHIGH","$TempHIGH_out","$KonstTrue",0]
  ]
}
Viele Grüße!
Arne

TWS 3500 XL #1458 mit KNX, 1-Wire (PBM #1139), HTTP-API, MQTT, Modbus
Support-VPN aktiv, Neustart nach Rücksprache

Cepheus73
Reactions:
Beiträge: 193
Registriert: Sa Aug 11, 2018 11:36 pm
Wohnort: München
Hat sich bedankt: 458 Mal
Danksagung erhalten: 126 Mal

#6

Beitrag von Cepheus73 »

Eine Variablenname darf nicht ein Substring eines anderen Variablennamens sein.
TempLow und TempLOW_out ist so ein Fall.
TW 2600 #178 + TW 3500 #1704 - VPN offen, Zugriff jederzeit
EFH, KNX, 1-Wire, DALI, Wiregate,
CometVisu (TW Docker-Container), Mobotix T25, Logiken für Licht- und Rolladensteuerung
1-Wire-Ventilaktoren + Logiken für Gartenbewässerung

Ersteller
avater
Reactions:
Beiträge: 58
Registriert: Sa Apr 02, 2022 12:19 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 8 Mal

#7

Beitrag von avater »

Cepheus73 hat geschrieben: Di Mai 27, 2025 8:51 am Eine Variablenname darf nicht ein Substring eines anderen Variablennamens sein.
Oha, na da werde ich Zukunft wieder drüber stolpern.

... aber ich kann es immer noch nicht speichern :think:

Code: Alles auswählen

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00"
  },
  "Input": [
	["PV-Einspeisung", "Positiven Wert für positive Schwellen nutzen (ggf. invertieren)!", "$PV", "c"],
	["Nachtabsenkung unterhalb von", "", "$BoundLOW", "c"],
	["Tagbetrieb oberhalb von", "", "$BoundHIGH", "c"],
	["Temperatur Nacht", "", "$TempLOW_in", "c"],
	["Temperatur Tag", "", "$TempHIGH_in", "c"]
  ],
  "Output": [
	["Solltemperatur HBX", "", "$TargetTemp", "c"],
	["Modus Tag/Nacht", "", "$Modus", "c"],
	["Temperatur Nacht", "", "$TempLOW_out", "c"],
	["Temperatur Tag", "", "$TempHIGH_out", "c"]
  ],
  "Level": [
	["$PV", "float", 0],
	["$BoundLOW", "int", 1500],
	["$BoundHIGH", "int", 3000],
	["$TempHIGH_in", "float", 21.0],
	["$TempLOW_in", "float", 18.0],
	["$TempHIGH_out", "float", 21.0],
	["$TempLOW_out", "float", 18.0],
	["$Modus", "bool", false],
	["$Formula", "string", "X1?X2:X3"],
	["$TargetTemp", "float", 18.0],
	["$KonstTrue", "bool", true]
  ],
  "Module": [
      ["Comparator","$PV","$Modus",["$BoundLOW","$BoundHIGH"]],
	  ["CalcFormula",["$Modus", "$TempHIGH_in", "$TempLOW_in"], "$TargetTemp", "$Formula"],
	  ["Latch","$TempLOW_in","$TempLOW_out","$KonstTrue",0],
	  ["Latch","$TempHIGH_in","$TempHIGH_out","$KonstTrue",0]
  ]
}
Viele Grüße!
Arne

TWS 3500 XL #1458 mit KNX, 1-Wire (PBM #1139), HTTP-API, MQTT, Modbus
Support-VPN aktiv, Neustart nach Rücksprache
Benutzeravatar

jensgulow
Reactions:
Beiträge: 473
Registriert: Fr Apr 19, 2019 4:37 pm
Wohnort: Leipzig
Hat sich bedankt: 75 Mal
Danksagung erhalten: 206 Mal

#8

Beitrag von jensgulow »

Könnte es an der Formel liegen?

Code: Alles auswählen

["$Formula", "string", "X1?X2:X3"]
Du willst hier doch sicherlich etwas überprüfen...also sollte für X1 auch eine Bedingung festgelegt sein (z.B. X1<1 o.ä.)
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
genutzt? -> TWS, KNX, 1-wire, MQTT, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#9

Beitrag von gbglace »

avater hat geschrieben: Di Mai 27, 2025 8:31 am Der Use Case ist, dass der Eingangswert von Unterschiedlichen Lieferanten stammen kann, und eine Änderung beim einen auch zum anderen propagiert werden soll.
Ist zwar etwas OT aber der Dispatcher unterstützt das ja auch an jedem anderen Konsumenten.
Es gibt da ja nicht die Einschränkung das nur ein Objekt an einen Eingang verbunden werden kann.
Es ist da wie im KNX, eine GA kann an mehrere KO Verbunden werden und an ein KO (vorallem als Eingang) können mehrere GA verbunden werden.
avater hat geschrieben: Di Mai 27, 2025 8:31 am Mag mir noch jemand erläutern, was der technische Hintergrund ist, dass ein Eingang nicht einfach direkt auf einen Ausgang gelegt werden kann?
Vermeidung von Bedienfehlern, wenn so ein Eingang auch Trigger für die Logik ist hast direkt eine Endlosschleife gebaut.
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
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

Ersteller
avater
Reactions:
Beiträge: 58
Registriert: Sa Apr 02, 2022 12:19 pm
Hat sich bedankt: 22 Mal
Danksagung erhalten: 8 Mal

#10

Beitrag von avater »

@jensgulow
Nein, an der Formel liegt es nicht, die Logik funktioniert, solange ich die beiden extra Ausgänge weglasse.

Die Formel setzt einen Binärwert auf Float-Werte um, daher kann ich einfach prüfen ob "X1", also nicht Null ist (äquivalent zu X1>0 oder X1==1).

@gbglace
Nehmen wir an, ich hätte zwei unabhängige Widgets (also verschiedene Profile), die beide den Wert einstellen können, die aber den aktuellen Wert natürlich beide korrekt anzeigen sollen und der Wert nicht anderweitig gespeichert oder zur Verfügung gestellt wird. Dann brauchen die jeweils einen Eingang mit dem aktuellen Wert.
Das wollte ich mit Ausgang der Logik lösen (rote Verbindungen).
Das ginge aber bei näherer Überlegung wohl auch direkt zwischen den Widgets (blaue Verbindungen).

Bild

Ich finde es "natürlicher", wenn der Wert von der Logik zur Verfügung gestellt wird, denn die braucht ihn und macht damit ja auch etwas (nur verändert sie ihn halt nicht).

Mag aber sein, dass ich da ein entscheidendes Konzept noch nicht verstanden habe.
gbglace hat geschrieben: Di Mai 27, 2025 1:48 pm Vermeidung von Bedienfehlern, wenn so ein Eingang auch Trigger für die Logik ist hast direkt eine Endlosschleife gebaut.
Müsste für eine solche Endlosschleife nicht umgekehrt der Ausgang mit dem Eingang verbunden werden?
Zuletzt geändert von avater am Di Mai 27, 2025 2:31 pm, insgesamt 1-mal geändert.
Viele Grüße!
Arne

TWS 3500 XL #1458 mit KNX, 1-Wire (PBM #1139), HTTP-API, MQTT, Modbus
Support-VPN aktiv, Neustart nach Rücksprache
Antworten

Zurück zu „Logikengine & Logik-Editor“