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

[Beantwortet] [V4.0 IP5] Wie kann man den Taupunkt in einer Custom-Logik berechnen?

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

ThomasD
Reactions:
Beiträge: 212
Registriert: So Sep 09, 2018 9:16 am
Hat sich bedankt: 323 Mal
Danksagung erhalten: 76 Mal

#51

Beitrag von ThomasD »

Hallo,

ich habe auch schon mal angefangen die Logic zu modifzieren.

Bild

Ohne Hysterese macht die auch was sie soll. Allerdings habe ich vermutlich noch einen Logik Fehler bei der Berechnung der Hysterese, weil sich der Alarm nicht wieder deaktiviert.

Gruß
Thomas
WIREGATE V1.4.0
PBM unlimited mit 67 Slaves
TWS 2600 #174 REBOOT jederzeit möglich
TWS 2600 #572

Ersteller
hans4711
Reactions:
Beiträge: 124
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 40 Mal
Danksagung erhalten: 65 Mal

#52

Beitrag von hans4711 »

Hallo @ThomasD ,
welche Funktion haben die beiden Ausgänge?
Wenn ich dich richtig verstanden habe möchtest du nur ein true/false ob der berechnete Taupunkt > dem vorgegebenen Taupunkt ist?
3500 XL ID:1339

ThomasD
Reactions:
Beiträge: 212
Registriert: So Sep 09, 2018 9:16 am
Hat sich bedankt: 323 Mal
Danksagung erhalten: 76 Mal

#53

Beitrag von ThomasD »

Hallo,

ich verwende folgendes:

Code: Alles auswählen

	  //Taupunktalarm
	  ["CalcFormula",["$taupunkt","$TaupunktAlarmTemperatur"], "$TPA", "$FormelTPA"],
	  ["CalcFormula",["$TPA","$Hysterese"],"$Unterschwelle","$FormelHysterese"],
	  ["Comparator" , "$TPA" , "$TaupunktAlarm" ,["$Unterschwelle","$temp"]]

Code: Alles auswählen

	//Formel zur Berechnung offset & Hysterese TaupunktalarmTemperatur
	["$FormelTPA","string","X1+X2"],
	["$FormelHysterese","string","X1-X2"],
Wobei ich mir nicht sicher bin ob die Hysterese Berechnung stimmt. Ohne Hysterese, sprich $Unterschwelle, schaltet der Alarm True/False usw.

Gruß
Thomas
WIREGATE V1.4.0
PBM unlimited mit 67 Slaves
TWS 2600 #174 REBOOT jederzeit möglich
TWS 2600 #572

Ersteller
hans4711
Reactions:
Beiträge: 124
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 40 Mal
Danksagung erhalten: 65 Mal

#54

Beitrag von hans4711 »

Ich habe gestern abend schon mal angefangen die Funktion einzubauen, ich hoffe das ich es heute abend schaffe sie zu finalisieren. Bei mir gibt es aber dann nur einen Alarmausgang, daher die Frage für was bei dir die beiden Ausgänge sind?
3500 XL ID:1339

ThomasD
Reactions:
Beiträge: 212
Registriert: So Sep 09, 2018 9:16 am
Hat sich bedankt: 323 Mal
Danksagung erhalten: 76 Mal

#55

Beitrag von ThomasD »

Ich dachte die eingestellte Taupunktalarmtemperatur und halt den Alarm auszugeben. Wie gesagt ohne hysterese geht’s auch. Da schaltet der Ausgang.
WIREGATE V1.4.0
PBM unlimited mit 67 Slaves
TWS 2600 #174 REBOOT jederzeit möglich
TWS 2600 #572

Ersteller
hans4711
Reactions:
Beiträge: 124
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 40 Mal
Danksagung erhalten: 65 Mal

#56

Beitrag von hans4711 »

Ich schaue mal was ich heute abend hin bekomme
3500 XL ID:1339

ThomasD
Reactions:
Beiträge: 212
Registriert: So Sep 09, 2018 9:16 am
Hat sich bedankt: 323 Mal
Danksagung erhalten: 76 Mal

#57

Beitrag von ThomasD »

Hallo @hans4711 ,

ich habe das jetzt nochmal etwas modifiziert, da ich einen Denkfehler drin hatte.
Jetzt schaltet der Taupunktalarm innerhalb der Regeln.
Vielleicht kannst du mal drüber schauen.

! noch nicht ausgiebig getestet !

Code: Alles auswählen

/**
 * Logik zum Berechnen des Taupunkts. Der Taupunkt ist ein guter Wert um Aussenluft und Innenluft miteinander zu vergleichen um zu prüfen ob Lüften zur Feuchtigkeitsreduktion sinnvoll ist.
 * Die Entstehtung der Logik wurde hier besprochen:https://forum.timberwolf.io/viewtopic.php?f=24&t=4725
 * Die Formeln wurden von folgendem Post abgeleitet: http://dl8aap.koch-carsten.de/2020/07/taupunkt-berechnen/
 * Erklärung der Variablen aus der ursprünglichen Formel
 * var t = temperature;
* var r = humidity;
* var tp = 0.000;
* // Konstante
* var mw = 18.016; //Molekulargewicht des Wasserdampfes (kg/kmol)
* var gk = 8314.3; // universelle Gaskonstante (J/(kmol*K))
* var t0 = 273.15; // Absolute Temperatur von 0 °C (Kelvin)
* var tk = t + t0; // Temperatur in Kelvin
 
* Temp größer gleich 0 Grad:
*     a = 7.5;
*     b = 237.3;
* Temp kleiner 0 Grad:
*     a = 7.6;
*     b = 240.7;
*
* V2: Integration Berechnung absoute Luftfeuchtigkeit in g/m3
* Formel wurde hier entnommen: https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "2.0",
    "Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
  },
  "Input": [
    ["Temperatur","Temperatur des zu berechnenden Raumes","$temp","c" ],
    ["Luftfeuchtigkeit","Luftfeuchtigkeit des zu berechnenden Raumes","$feuchte","c" ],
	["Referenz Temperatur","Temperaturbezug für Taupunkt z.B. Fussbodentemperatur","$RefTemp","c" ],
	["Offset TPA","Offeset zum Taupunkt für Alarm","$TaupunktAlarmTemperatur","c" ],
	["Hysterese TPA","Hysterese","$Hysterese","c"]
  ],
  "Output": [
    ["Taupunkt","Berechneter Taupunkt","$taupunkt","a"],
    ["Absolute Luftfeuchtigkeit","Berechnete Absolute Luftfeuchtigkeit in g/m3","$absfeuchte","a"],
	["TPA Temp.","Taupunkt Alarm Temperatur","$TPA","a"],
	//Unterschwelle nur für DEBUGGING
	//["Unterschwelle (Temp).","Anzeige Unterschwelle nur Temporär","$Unterschwelle","a"],
	["Taupunktalarm","Taupunktalarm Ausgabe","$TaupunktAlarm","c"]
  ],
  "Level": [
      //Ein-Ausgänge
    ["$temp","float",0.0],
    ["$feuchte","float",0.0],
    ["$taupunkt","float",0.0],
    ["$absfeuchte","float",0.0],
    ["$RefTemp","float",0.0],
	["$TaupunktAlarmTemperatur","float",0.0],
	["$TaupunktAlarm","bool",false],
	["$Hysterese","float",0.0],
	
	
    
    //Formeln
    ["$formelinbenutzung","string","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"], //Reservierung des Speicherplatzes, sonst werden nur 14 Zeichen reserviert
    
    //Formel jeweils einmal mit den Konstanten für Temperaturen >0 Grad, und einmal für Temperaturen <0 Grad    
    //var sdd = 6.1078 * Math.pow(10, (a*t)/(b+t));
    ["$formel1plus","string","6.1078 * 10^((7.5*X1)/(237.3+X1))"],
    ["$formel1minus","string","6.1078 * 10^((7.6*X1)/(240.7+X1))"],
    
    //var dd = sdd * (r/100);
    ["$formel2plus","string","X1 * (X2/100)"],
    ["$formel2minus","string","X1 * (X2/100)"],
    
    //var af = Math.pow(10,5) * mw/gk * dd/tk;
    ["$formel3plus","string","10^5 * 18.016/8314.3 * X1/(X2 + 273.15)"],
    ["$formel3minus","string","10^5 * 18.016/8314.3 * X1/(X2 + 273.15)"],

    //var v = Math.log10(dd/6.1078);
    ["$formel4plus","string","log10(X1/6.1078)"],
    ["$formel4minus","string","log10(X1/6.1078)"],
    
    //tp = Math.round( ((b*v) / (a-v))*100)/100;
    ["$formel5plus","string","((237.3*X1) / (7.5-X1))*100/100"],
    ["$formel5minus","string","((240.7*X1) / (7.6-X1))*100/100"],
    
    //Formel zur Berechnung der abs. Feuchte
    ["$formelabsfeuchte","string","(6.112 * exp((17.67 * X1)/(X1+243.5)) * X2 * 18.02)/((273.15+X1) * 100 * 0.08314)"],
	
	//Formel zur Berechnung offset TaupunktalarmTemperatur
	["$FormelTPA","string","X1+X2"],
	["$FormelHysterese","string","X1+X2"],
    
    //Variablen für die Berechnungen
    ["$schwellwert","float",0.0],
    ["$schwellwertueberschreitung","bool",false],
    ["$schwellwertueberschreitungint","integer",0],
    ["$sdd","float",0.0],
    ["$dd","float",0.0],
    ["$af","float",0.0],
    ["$v","float",0.0],
	["$TPA","float",0.0],
	["$Unterschwelle","float",0.0]
	
  ],
  
  "Module": [
      //Comparator, prüft ob die Temp postiv oder negativ ist, True bei Plusgraden, False bei Minusgraden
      ["Comparator" , "$temp" , "$schwellwertueberschreitung" , "$schwellwert"],

      //Formel 1
      ["Multiplexer", ["$formel1minus", "$formel1plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$temp"], "$sdd", "$formelinbenutzung"],

      //Formel 2
      ["Multiplexer", ["$formel2minus", "$formel2plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$sdd","$feuchte"], "$dd", "$formelinbenutzung"],

      //Formel 3
      ["Multiplexer", ["$formel3minus", "$formel3plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$dd","$temp"], "$af", "$formelinbenutzung"],

      //Formel 4
      ["Multiplexer", ["$formel4minus", "$formel4plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$dd"], "$v", "$formelinbenutzung"],
      
      //Formel 5      
      ["Multiplexer", ["$formel5minus", "$formel5plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$v"], "$taupunkt", "$formelinbenutzung"],
      
      //Abs. Feuchte
      ["CalcFormula",["$temp","$feuchte"], "$absfeuchte", "$formelabsfeuchte"],

	  //Taupunktalarm
	  ["CalcFormula",["$taupunkt","$TaupunktAlarmTemperatur"], "$TPA", "$FormelTPA"],
	  ["CalcFormula",["$TPA","$Hysterese"],"$Unterschwelle","$FormelHysterese"],
	  ["Comparator" , "-$RefTemp" , "$TaupunktAlarm" ,["-$Unterschwelle","-$TPA"]]
      
  ]
}
Bild

Gruß
Thomas
Zuletzt geändert von ThomasD am Di Jul 30, 2024 8:29 am, insgesamt 1-mal geändert.
WIREGATE V1.4.0
PBM unlimited mit 67 Slaves
TWS 2600 #174 REBOOT jederzeit möglich
TWS 2600 #572

Ersteller
hans4711
Reactions:
Beiträge: 124
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 40 Mal
Danksagung erhalten: 65 Mal

#58

Beitrag von hans4711 »

Hallo @ThomasD,

ich habe die Logik getestet, funktioniert bei mir einwandfrei. Ich habe mal noch den Text und die Version angepasst.

Hier jetzt die offizielle Version 3:

Code: Alles auswählen

/**
 * Logik zur Berechnung von Taupunkt und absoluter Luftfeuchtigkeit. Zusätzlich kann ein Taupunktalarm anhand eines Referenzwerts ausgegeben werden.
 * Anwendungsfälle: 
      * Lüftung zur Reduktion von Feuchtigkeit im Haus durch Vergleich von Aussenluft und Raumluft
      * Alarm wenn in einem Raum der Taupunkt über die Raumtemperatur steigt und damit Kondensat entstehen kann, dazu auf den Eingang "Referenztemperatur" die Raumtemperatur hinzufügen. Über Offset TPA kann der Alarm schon z.B. 2 Kelvin vor erreichen des Taupunkts ausgelöst werden. Um ein "Zappeln" bei leichten Änderungen nahe am Taupunkt zu vermeiden kann eine Hysterese zum Ausschalten des Taupunktalarms vorgegeben werden.
* 
*
 * Die Entstehtung der Logik wurde hier besprochen:https://forum.timberwolf.io/viewtopic.php?f=24&t=4725
 * Die Formeln wurden von folgendem Post abgeleitet: http://dl8aap.koch-carsten.de/2020/07/taupunkt-berechnen/
 * Die Logikerweiterung um den Taupunktalarm wurde vom User ThomasD entwickelt
*
*
 * Erklärung der Variablen aus der ursprünglichen Formel
 * var t = temperature;
* var r = humidity;
* var tp = 0.000;
* // Konstante
* var mw = 18.016; //Molekulargewicht des Wasserdampfes (kg/kmol)
* var gk = 8314.3; // universelle Gaskonstante (J/(kmol*K))
* var t0 = 273.15; // Absolute Temperatur von 0 °C (Kelvin)
* var tk = t + t0; // Temperatur in Kelvin
 
* Temp größer gleich 0 Grad:
*     a = 7.5;
*     b = 237.3;
* Temp kleiner 0 Grad:
*     a = 7.6;
*     b = 240.7;
*
* V2: Integration Berechnung absoute Luftfeuchtigkeit in g/m3
* Formel wurde hier entnommen: https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/
* V3: Integration eines Taupunktalarms durch den User ThomasD
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "2.0",
    "Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
  },
  "Input": [
    ["Temperatur","Temperatur des zu berechnenden Raumes","$temp","c" ],
    ["Luftfeuchtigkeit","Luftfeuchtigkeit des zu berechnenden Raumes","$feuchte","c" ],
	["Referenz Temperatur","Temperaturbezug für Taupunkt z.B. Fussbodentemperatur","$RefTemp","c" ],
	["Offset TPA","Offeset zum Taupunkt für Alarm","$TaupunktAlarmTemperatur","c" ],
	["Hysterese TPA","Hysterese","$Hysterese","c"]
  ],
  "Output": [
    ["Taupunkt","Berechneter Taupunkt","$taupunkt","a"],
    ["Absolute Luftfeuchtigkeit","Berechnete Absolute Luftfeuchtigkeit in g/m3","$absfeuchte","a"],
	["TPA Temp.","Taupunkt Alarm Temperatur","$TPA","a"],
	//Unterschwelle nur für DEBUGGING
	//["Unterschwelle (Temp).","Anzeige Unterschwelle nur Temporär","$Unterschwelle","a"],
	["Taupunktalarm","Taupunktalarm Ausgabe","$TaupunktAlarm","c"]
  ],
  "Level": [
      //Ein-Ausgänge
    ["$temp","float",0.0],
    ["$feuchte","float",0.0],
    ["$taupunkt","float",0.0],
    ["$absfeuchte","float",0.0],
    ["$RefTemp","float",0.0],
	["$TaupunktAlarmTemperatur","float",0.0],
	["$TaupunktAlarm","bool",false],
	["$Hysterese","float",0.0],
	
	
    
    //Formeln
    ["$formelinbenutzung","string","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"], //Reservierung des Speicherplatzes, sonst werden nur 14 Zeichen reserviert
    
    //Formel jeweils einmal mit den Konstanten für Temperaturen >0 Grad, und einmal für Temperaturen <0 Grad    
    //var sdd = 6.1078 * Math.pow(10, (a*t)/(b+t));
    ["$formel1plus","string","6.1078 * 10^((7.5*X1)/(237.3+X1))"],
    ["$formel1minus","string","6.1078 * 10^((7.6*X1)/(240.7+X1))"],
    
    //var dd = sdd * (r/100);
    ["$formel2plus","string","X1 * (X2/100)"],
    ["$formel2minus","string","X1 * (X2/100)"],
    
    //var af = Math.pow(10,5) * mw/gk * dd/tk;
    ["$formel3plus","string","10^5 * 18.016/8314.3 * X1/(X2 + 273.15)"],
    ["$formel3minus","string","10^5 * 18.016/8314.3 * X1/(X2 + 273.15)"],

    //var v = Math.log10(dd/6.1078);
    ["$formel4plus","string","log10(X1/6.1078)"],
    ["$formel4minus","string","log10(X1/6.1078)"],
    
    //tp = Math.round( ((b*v) / (a-v))*100)/100;
    ["$formel5plus","string","((237.3*X1) / (7.5-X1))*100/100"],
    ["$formel5minus","string","((240.7*X1) / (7.6-X1))*100/100"],
    
    //Formel zur Berechnung der abs. Feuchte
    ["$formelabsfeuchte","string","(6.112 * exp((17.67 * X1)/(X1+243.5)) * X2 * 18.02)/((273.15+X1) * 100 * 0.08314)"],
	
	//Formel zur Berechnung offset TaupunktalarmTemperatur
	["$FormelTPA","string","X1+X2"],
	["$FormelHysterese","string","X1+X2"],
    
    //Variablen für die Berechnungen
    ["$schwellwert","float",0.0],
    ["$schwellwertueberschreitung","bool",false],
    ["$schwellwertueberschreitungint","integer",0],
    ["$sdd","float",0.0],
    ["$dd","float",0.0],
    ["$af","float",0.0],
    ["$v","float",0.0],
	["$TPA","float",0.0],
	["$Unterschwelle","float",0.0]
	
  ],
  
  "Module": [
      //Comparator, prüft ob die Temp postiv oder negativ ist, True bei Plusgraden, False bei Minusgraden
      ["Comparator" , "$temp" , "$schwellwertueberschreitung" , "$schwellwert"],

      //Formel 1
      ["Multiplexer", ["$formel1minus", "$formel1plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$temp"], "$sdd", "$formelinbenutzung"],

      //Formel 2
      ["Multiplexer", ["$formel2minus", "$formel2plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$sdd","$feuchte"], "$dd", "$formelinbenutzung"],

      //Formel 3
      ["Multiplexer", ["$formel3minus", "$formel3plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$dd","$temp"], "$af", "$formelinbenutzung"],

      //Formel 4
      ["Multiplexer", ["$formel4minus", "$formel4plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$dd"], "$v", "$formelinbenutzung"],
      
      //Formel 5      
      ["Multiplexer", ["$formel5minus", "$formel5plus"],"$formelinbenutzung","$schwellwertueberschreitung"],
      ["CalcFormula",["$v"], "$taupunkt", "$formelinbenutzung"],
      
      //Abs. Feuchte
      ["CalcFormula",["$temp","$feuchte"], "$absfeuchte", "$formelabsfeuchte"],

	  //Taupunktalarm
	  ["CalcFormula",["$taupunkt","$TaupunktAlarmTemperatur"], "$TPA", "$FormelTPA"],
	  ["CalcFormula",["$TPA","$Hysterese"],"$Unterschwelle","$FormelHysterese"],
	  ["Comparator" , "-$RefTemp" , "$TaupunktAlarm" ,["-$Unterschwelle","-$TPA"]]
      
  ]
}
@Parsley Könntest du bitte auf der ersten Seite nochmal auf diesen Post verlinken? Hier wird noch auf den Post 37 Version 2 verlinkt. Vielen Dank
Zuletzt geändert von hans4711 am Di Jul 30, 2024 8:42 pm, insgesamt 1-mal geändert.
3500 XL ID:1339
Benutzeravatar

Parsley
Reactions:
Beiträge: 683
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 792 Mal
Danksagung erhalten: 426 Mal

#59

Beitrag von Parsley »

Moin
Soeben erledigt. 8-)
Gruß Parsley

Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)
Timberwolf Server 3500XL #1705 (VPN offen, reboot nach Absprache)
Bitte WIKI lesen.

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

#60

Beitrag von StefanW »

Hallo Hans,
hans4711 hat geschrieben: Di Jul 30, 2024 8:40 pmHier jetzt die offizielle Version 3:
Merci. Tolle Arbeit.

Hier die (inoffizielle) grafische Darstellung des künftigen Logik-Editors (hat Deinen Code eingelesen, Positionierung natürlich von Hand, ist noch Pre-Alpha Version, kann noch fehlerhaft sein, da nicht alle Module "drin" sind):


Bild


Geplant ist das mit der V5 im Winter. Wird jedoch nur mit einer V 5 Lizenz freigeschaltet werden, ist nicht Bestandteil freier Updates. Wer uns bei so einer aufwändigen Entwicklung unterstützen will, kauft bitte einen Wartungsvertrag für Lizenzen.


lg

Stefan
Zuletzt geändert von StefanW am Mi Jul 31, 2024 4:12 pm, insgesamt 2-mal geändert.
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.
Antworten

Zurück zu „Logikengine & Logik-Editor“