Seite 1 von 3
Haustürstatus (0-3dez) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 9:51 pm
von tger977
Hallo ihr Logikexperten,
ich versuche mich gerade mal mit den ersten Schritten im Logikeditor und stolpere gerade über folgende Logik die ich im Logikprozessor sehr einfach abbilden konnte:
Code: Alles auswählen
HaustuerUG => {receive=>['4/1/0','4/1/1'], transmit=>'0/0/12',
translate => sub{
if ($input->[0]==0 && $input->[1]==0) {
return 0;}; # Tür zu, unverschlossen
if ($input->[0]==1 && $input->[1]==0) {
return 1;}; # Tür offen, unverschlossen
if ($input->[0]==0 && $input->[1]==1) {
return 2;}; # Tür zu + abgeschlossen
if ($input->[0]==1 && $input->[1]==1) {
return 3;}; # Tür offen + abgeschlossen
}, execute_only_if_input_defined=>1,reply_to_read_requests=>1, transmit_on_startup=>1, debug=>1 },
Es darum aus zwei Reedkontakten (offen/zu und verschlossen/unverschlossen) einen Haustürstatus in einer neuen GA abbzubilden (Status 0-4dez, siehe Kommentaren oben im Code).
Muss ich da nun wirklich x Einzellogiken mit OR und AND und Schwellwertschaltern zusammenklicken?
Wäre um Hinweise dankbar wie man sowas am besten angeht... Sorry, aber da steh ich echt auf dem Schlauch, mit einer Programmiersprache wär das (für mich!) nach 2min erledigt gewesen, hier rätsel ich nun schon ein paar Minuten drüber wie ich es am besten angehen soll.
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:06 pm
von tger977
also ich hab nun mal etwas gespielt. Mit 4x AND und mit der Mappingfunktion in den AND's dachte ich geht das vielleicht, aber wohl leider doch nicht, da man dann sowohl für true als auch false ein mappingwert eingeben muss. Ich möchte aber nur eine Aktion auf dem Ausgang wenn true kommt, das false soll immer einfach ignoriert werden. Aber ich habe gesehen dazu gibt es schon einen FR...
Hat sonst noch jemand eine Idee?
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:08 pm
von Dragonos2000
Ähm...wie kommst Du auf 0-4? Wenn ich Deinen Code richtig interpretiere kommt da nur 0-3 raus. Ich würde das so implementieren:
Code: Alles auswählen
{
"Level": [
["$input_A","bool",false],
["$input_B","bool",false],
["$Zwei","integer",2],
["$Output","integer",0]
],
"Module": [
["Polynomial","$Zwei","$Output",["$input_A","$input_B"]]
],
"Input": [
["Eingang 1","Input 0","$input_A","c"],
["Eingang 2","Input 1","$input_B","c"]
],
"Output": [
["Output","Ergebnis","$Output","c"]
]
}
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:14 pm
von tger977
ja, das war falsch. Nur 0-3...
puh, also das o.g. Codestück muss nun als Customlogik verwendet werden, oder?
Und wie lese ich den Code oben nun bzw. wie funktioniert das genau mit der Polynomial Funktion?

Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:22 pm
von Dragonos2000
Genau, den Code einfach in eine Custom Logik kopieren.
Der Abschnitt "Level" definiert quasi die verwendeten Variablen, der Abschnitt "Input" definiert, welche Variablen als Eingang verwendet werden und wie diese angezeigt werden sollen; analog dazu der Abschnitt "Output".
Im Abschnitt "Module" wird die eigentliche Logik abgebildet.
Die Funktion "Polynomial" berechnet den Funktionswert eines Polynoms wie folgt (aus der KB):
f(x)=A0 + A1 * X + A2 * X^2 + ... + An * X^n
["Polynomial", "$Variable_X", "Ergebnis",["$A0", "$A1", "$A2", ..., "$An]]
Die Variable X habe ich definiert über "$Zwei" im Abschnitt "Level" und den Initialisierungswert "2".
"$Output" ist das Ergebnis der Berechnung.
Verwendet werden nur die Koeffizienten A0 und A1 (in eckigen Klammern)
Es steht dort also für die Polynomialfunktion:
$Output = $input_A + $input_B*$Zwei
bzw.:
$Output = $input_A + $input_B*2
Ich hoffe, ich konnte es rüberbringen.
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:23 pm
von tger977
magic...
Es funktioniert, nur ich weiss nicht warum...
Danke, Jochen! Wenn mir nun noch jemand das erklären kann damit ich das für die Zukunft selbst hinbekomme wär das weltklasse.
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:26 pm
von tger977
ok, danke für die Erklärung! So langsam dämmert es...
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:27 pm
von Dragonos2000
Braucht ein bisschen, muss sich erst setzen. Das ging mir am Anfang genauso. Aber wenn man es verinnerlicht hat, ist es wirklich mächtig.
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:30 pm
von Dragonos2000
Re: Haustürstatus (0-4) in Abhängigkeit von zwei Reeds als Logik abbilden
Verfasst: Sa Aug 31, 2019 11:42 pm
von tger977
dann noch eine Frage: Mit der o.g. Logik im Logikprozessor habe ich diese Logik immer auch bei Systemstart direkt ausführen können (Option transmit_on_startup=>1). Geht das mit dem TW auch daß er bei einem Neustart einmalig alle Eingänge per read liest und die Logik ausführt, so daß am Output direkt nach Start auch ein aktueller Wert (z.B. in der Visu) steht?