[Gelöst] "Unerwarteter Fehler" bei Custom Logik (war falsche Variablendeklaration)

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Antworten

Ersteller
simon2k
Reactions:
Beiträge: 7
Registriert: Do Mär 07, 2019 9:16 am
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

"Unerwarteter Fehler" bei Custom Logik (war falsche Variablendeklaration)

#1

Beitrag von simon2k »

Hallo zusammen,

habe endlich ein wenig Zeit gefunden und mich ebenfalls an einer Custom Logik versucht.

Die Anforderung an die Logik ist eigentlich recht simpel:
Meine 3 Phasen des Kochfeldes sind an einem Strommessaktor angeschlossen. Wird nun an einer Phase Leistung gefordert, will ich ein Bit für "Kochfeld aktiv" generieren.

Hier meine Logik dazu:

Code: Alles auswählen

/**
 * New custom logic
 *
 * 
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00",
    "Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
  },
  "Input": [
   ["IA1","Analogwert 1","$IA1","c"],
   ["IA2","Analogwert 2", "$IA2","c"],
   ["IA3","Analogwert 3", "$IA3","c"]
  ],
  "Output": [
  ["Out","Schaltstatus","$Out","a"]
  ],
  "Level": [
   ["$IA1","float",0],
   ["$SW1","$float",20],
   ["$IA2","float",0],
   ["$SW2","$float",20],
   ["$IA3","float",0],
   ["$SW3","$float",20],
   ["$L1_eingeschaltet","$bool",false],
   ["$L2_eingeschaltet","$bool",false],
   ["$L3_eingeschaltet","$bool",false],
   ["$Out","bool",false]
  ],
  "Module": [
  ["Comparator","$IA1","$L1_eingeschaltet","$SW1"],
  ["Comparator","$IA2","$L2_eingeschaltet","$SW2"],
  ["Comparator","$IA3","$L3_eingeschaltet","$SW3"],
  ["Or",["$L1_eingeschaltet","$L2_eingeschaltet","$L3_eingeschaltet"],"$Out"]
  ]
}
Leider kommt beim Speichern der Logik immer ein "unerwarteter Fehler" aber ohne weitere Information! :roll:
Ist das korrekt, dass bei der Variablendeklaration unter "Level" bei Ein- und Ausgängen kein $ vor den Datentyp gestellt wird?
So stehts auf jeden Fall mal im Codebeispiel in der KB?
Könnt ihr mir vielleicht helfen das Problem zu finden?

Dankeschön!

Gruß,
Simon
Zuletzt geändert von StefanW am Mi Feb 12, 2020 12:24 pm, insgesamt 3-mal geändert.
TWS 950Q ID:286, VPN offen, Reboot erlaubt

Ersteller
simon2k
Reactions:
Beiträge: 7
Registriert: Do Mär 07, 2019 9:16 am
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

#2

Beitrag von simon2k »

Ich habs gefunden!
Es war die Variablendeklaration!
Der Datentyp muss immer ohne "$" angegeben werden! :doh:
EIne qualifizierte Fehlermeldung wäre an dieser Stelle natürlich auch nicht ganz schlecht gewesen! :lol:
Bitte korrigieren unter app.php/kb/viewarticle?a=115#Kopiervorlage

Gruß,
Simon
TWS 950Q ID:286, VPN offen, Reboot erlaubt

Robert_Mini
Reactions:
Beiträge: 2509
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 619 Mal
Danksagung erhalten: 1194 Mal

#3

Beitrag von Robert_Mini »

Danke - korrigiert!

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / Wiregate-Fan

Robert_Mini
Reactions:
Beiträge: 2509
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 619 Mal
Danksagung erhalten: 1194 Mal

#4

Beitrag von Robert_Mini »

Nachtrag: das ist generell ein giftiger Fehler mit den $-Zeichen.
Insbesondere Variablen-Name ohne $ in einem Module/Input/Output...

Was mit grad noch einfällt:
Für deinen Fall genügt eine OR-Logik + Eingangsmodifizierer Schwellwert Über - fertig!

Dennoch gut mal an so einem Bsp. an Custom Logiken heranzugehen!
Die Fehlersuche ist da noch überschaubar - im Problemfall ggf. zeilenweise auskommentieren, bis der Fehler weg ist.

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / Wiregate-Fan

gbglace
Reactions:
Beiträge: 1736
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 608 Mal
Danksagung erhalten: 646 Mal

#5

Beitrag von gbglace »

Nichts gegen den positiven Übungseffekt am TES-LE. Aber dennoch mal anders gefragt, warum dafür eine Logik im TWS? Die Strommessaktoren haben doch eigentlich alle auch Schwellwertschalter oder hast die schon für anderes in Verwendung? Einfach die drei Kanäle mit Schwellwert abfragen in ein einfaches ODER, welches womöglich auch noch im Aktor selbst abbildbar ist und schon ist die Sache KNX-only fertig.
Grüße
Göran

-- --Timberwolf 2600 Velvet Red-- -- TWS #225 / VPN aktiv / Reboot OK

Ersteller
simon2k
Reactions:
Beiträge: 7
Registriert: Do Mär 07, 2019 9:16 am
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

#6

Beitrag von simon2k »

Danke an alle!
KNX only ist natürlich immer die Lösung der Wahl wenn es möglich ist! Aufgrund meiner Interesse am Logik Editor habe ich darüber aber nicht einmal nachgedacht! Werde es deshalb umstellen und dieses Experiment als Übung abhaken. :-D
Der Tipp mit ODER und die Eingänge mit Schwellwert ist auch nicht schlecht und machts auch einfacher.

Gruß,
Simon
TWS 950Q ID:286, VPN offen, Reboot erlaubt

Robert_Mini
Reactions:
Beiträge: 2509
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 619 Mal
Danksagung erhalten: 1194 Mal

#7

Beitrag von Robert_Mini »

simon2k hat geschrieben: Mi Feb 12, 2020 9:24 am Der Tipp mit ODER und die Eingänge mit Schwellwert ist auch nicht schlecht und machts auch einfacher.
Das muss man ins Gefühl bekommen.
Vieles geht mit den richtigen Grundbausteinen sehr einfach.
Zb. Bettiebsstundenzähler + Schwellwert Helligkeit => Sonnenstunden pro Tag o.ä.

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / Wiregate-Fan
Antworten

Zurück zu „Logikengine & Logik-Editor“