Seite 1 von 1

Schalter zu Szene Konvertierung mit Prio-Eingang V1.0

Verfasst: So Aug 08, 2021 2:25 pm
von Dragonos2000
Da ich einen Hang dazu habe, alle Logiken in monolithischen Custom-Logiken abzubilden statt mehrere Bausteine zu verknüpfen, haben sich bei mir mit der Zeit einige kleine und große Custom-Logiken für teils recht spezielle Problemstellungen angesammelt. Da manche Anwender mit den Custom-Logiken nicht so recht warm werden, werd ich diese Bausteine sukzessive ins Forum einstellen, sobald ich sie in eine der Allgemeinheit zumutbare Form gebracht habe.
Viele Wege führen nach Rom und wahrscheinlich ist vieles sehr spezifisch für mein Setup oder meine Vorstellungen, aber vielleicht kann ja trotzdem der ein oder andere davon profitieren.

Der Anfang macht ein Baustein, mit dem ich aus zwei binären Eingängen (Schalter) verschieden Szenen auslöse, wobei einer der Eingänge priorisiert ist.
Anwendungsfall bei mir die Küche: Die Unterschrankbeleuchtung ist sowohl Ambiente (dann gedimmt) oder Arbeitsbeleuchtung (volle Helligkeit), was ich über Szenen steuere. Dabei wollte ich, dass zwischen der Arbeitsbeleuchtung und Ambientebeleuchtung über Szenen gewechselt wird und ich sich zwischenzeitliche Veränderungen (ich habe was in der Küche mit Arbeitsbeleuchtung gemacht, zwischenzeitlich ist die Ambientebeleuchtung insgesamt ausgeschaltet worden) nicht unerwünscht beeinflussen.

Logikverhalten:
Prio InputStd InputOutput
00Off Scene
----------------------------------------
01Std Scene
----------------------------------------
10Prio Scene
----------------------------------------
11Prio Scene
----------------------------------------

Code: Alles auswählen

/**##################################
Scene based priority switch V1.0
##################################*/
{
  "Level": [
	["$I_InputPrio","bool",false],
	["$I_InputStd","bool",false],
	["$P_PrioScene","integer",0],
	["$P_StdScene","integer",0],
	["$P_OffScene","integer",0],
	["$O_Scene","integer",0],
	["$Selector","integer",0],
	["$Formula","string","X1-1"],
	["$PrioScene","integer",0],
	["$StdScene","integer",0],
	["$OffScene","integer",0],
	["$VAR<Inhibit?>","bool",false]
  ],
  "Output": [
	["Scene Out","Priorized scene output","$O_Scene","c"]
  ],
  "Module": [
	["Break",["$VAR<Inhibit?>"]],
	["BinaryMultiplexer",["$I_InputStd","$I_InputPrio"],"$Selector"],
	["CalcFormula",["$P_PrioScene"], "$PrioScene", "$Formula"],
	["CalcFormula",["$P_StdScene"], "$StdScene", "$Formula"],
	["CalcFormula",["$P_OffScene"], "$OffScene", "$Formula"],
	["Multiplexer",["$OffScene","$StdScene","$PrioScene","$PrioScene"],"$O_Scene","$Selector"]
  ],
  "Input": [
	["Prio Input","Priorized switch input", "$I_InputPrio","a"],
	["Std Input","Standard switch input", "$I_InputStd","a"],
	["Priority scene","Scene number to send when priority input on", "$P_PrioScene","u"],
	["Standard scene","Scene number to send when only standard input on", "$P_StdScene","u"],
	["Off scene","Scene number to send to switch off", "$P_OffScene","u"],
	["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ],
  "_Meta": {
	"Icon": "",
	"Version": "1.0",
	"_description": "Scene based priority switch"
  }
}
/** Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") 
die unter https://wrgt.news/TOLL zum Download zur Verfügung steht. */