Seite 1 von 3

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

Verfasst: Mo Mai 26, 2025 10:44 pm
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

Re: [V 4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Verfasst: Mo Mai 26, 2025 11:43 pm
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

Re: [V 4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Verfasst: Di Mai 27, 2025 6:44 am
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?

Re: [V 4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Verfasst: Di Mai 27, 2025 8:31 am
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?

Re: [V 4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Verfasst: Di Mai 27, 2025 8:38 am
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]
  ]
}

Re: [V 4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Verfasst: Di Mai 27, 2025 8:51 am
von Cepheus73
Eine Variablenname darf nicht ein Substring eines anderen Variablennamens sein.
TempLow und TempLOW_out ist so ein Fall.

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

Verfasst: Di Mai 27, 2025 12:58 pm
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]
  ]
}

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

Verfasst: Di Mai 27, 2025 1:45 pm
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.ä.)

Re: [V 4.5 IP6] Logikeingang direkt auch als Ausgang nutzen?

Verfasst: Di Mai 27, 2025 1:48 pm
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.

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

Verfasst: Di Mai 27, 2025 2:27 pm
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?