UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

Logikbausteine gegen Programmierung

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
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

Logikbausteine gegen Programmierung

#1

Beitrag von Zugschlus »

Hallo,

ich würde mich gerne für eine irgendwie geartete Skriptingschnittstelle stark machen. Je mehr ich mich mit dem Logikeditor beschäftige, desto mehr Siegel bekommt das Buch für mich. Das hat ein Elektroingeineur designt, der den Umgang mit Gattern und Logikelementen aus seiner Arbeit kennt. Ich bin aber nun Informatiker, und wenn ich mir eine Funktion ausmale, dann kommt da automatisch erstmal Pseudocode in einer imperativen Programmiersprache heraus.

Und dann breche ich mir einen ab um dieses Programm in der vom Logik-Editor angebotenen "Hardware" umzusetzen und scheitere meistens kläglich.

Wäre es nicht doch möglich, den sicher zahlreich vorhandenen Programmierfuzzis unter den Timberwolf-Anwendern eine Schnittstelle bereitzustellen, die es ihnen ermöglicht, die Anweisungen an den Timberwolf in der ihnen vertrauten Form zu formuleren anstelle haufenweise Hirnschmalz in die Konvertierung zur "Ingenieurs-Denke" investieren zu müssen?

Mal ganz abgesehen davon, dass damit dann auch Konstrukte wie "nimm diese Logik für die Eingabe-Objekte x, y, z und w", und lege das Ergebnis auf die Objekte x', y', z' und w' abhängig vom Eingabeobjekt" möglich werden, wofür man heute eine Vielzahl identischer Logiken bräuchte.

Grüße
Marc
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

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

#2

Beitrag von StefanW »

Hallo Marc,
Zugschlus hat geschrieben: So Jan 19, 2020 7:25 pmDas hat ein Elektroingeineur designt, der den Umgang mit Gattern und Logikelementen aus seiner Arbeit kennt.
Ja, weil das so die Vorgabe war. Die Zielgruppe der Elektriker / Integratoren denkt bei Logik in Gattern. Damit sind Logiken sehr einfach und vor allem funktionieren diese dann auch. Da einfache und klare Bausteine miteinander verbunden werden.

Zugschlus hat geschrieben: So Jan 19, 2020 7:25 pmWäre es nicht doch möglich, den sicher zahlreich vorhandenen Programmierfuzzis unter den Timberwolf-Anwendern eine Schnittstelle bereitzustellen, die es ihnen ermöglicht, die Anweisungen an den Timberwolf in der ihnen vertrauten Form zu formuleren anstelle haufenweise Hirnschmalz in die Konvertierung zur "Ingenieurs-Denke" investieren zu müssen?
Dafür gibt es Docker und den vorbereiteten WireGate-Plugin-Container.

In PERL ist das sofort und auf der Stelle nutzbar. Die API des eibd gibt es nach meiner Kenntnis auch für zig andere Programmiersprachen in fertig, es sollte also nicht schwer sein, den fertigen Docker-Container anzupassen.

Ansich ist alles da, ein eibd/knxd als API zum KNX und die Container für die Laufzeitumgebung für jede beliebige Programmiersprache auf dem Planeten die unter dem Kernel läuft. Das ist maximale Freiheit für jeden Entwickler.

Würden wir irgendwas vorgeben, würde immer jemand schreien "ich mag nicht PERL" oder "ich mag nicht Python" oder "ich mag nicht Go" oder "könnt ihr nicht die aktuellere Version unterstützen".

==> Darum: Ihr habt den fertigen Docker Container von uns bekommen mit PERL als Scripting Engine. Wem das nicht gefällt, kann ihn umbauen. Aber an sich ist alles da.


Zugschlus hat geschrieben: So Jan 19, 2020 7:25 pmMal ganz abgesehen davon, dass damit dann auch Konstrukte wie "nimm diese Logik für die Eingabe-Objekte x, y, z und w", und lege das Ergebnis auf die Objekte x', y', z' und w' abhängig vom Eingabeobjekt" möglich werden, wofür man heute eine Vielzahl identischer Logiken bräuchte.
Bis das läuft, hat man auch die Vielzahl identischer Logiken geklickt oder als Custom-Logik angepasst.


lg

Stefan
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.
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

#3

Beitrag von Zugschlus »

Hallo Stefan,

danke für die blitzartige Antwort!
StefanW hat geschrieben: So Jan 19, 2020 8:08 pm
Zugschlus hat geschrieben: So Jan 19, 2020 7:25 pmWäre es nicht doch möglich, den sicher zahlreich vorhandenen Programmierfuzzis unter den Timberwolf-Anwendern eine Schnittstelle bereitzustellen, die es ihnen ermöglicht, die Anweisungen an den Timberwolf in der ihnen vertrauten Form zu formuleren anstelle haufenweise Hirnschmalz in die Konvertierung zur "Ingenieurs-Denke" investieren zu müssen?
Dafür gibt es Docker und den vorbereiteten WireGate-Plugin-Container.
Gibt es dafür (aktuelle) Doku? Mir erschien der WireGate-Plugin-Container aufgrund seines Namens ausschließlich als "Altlasten-Retter" gedacht. Ist der ausdrücklich auch für uns Programmierfuzzis für die Implementierung neuer funktionen gedacht? Wird er auf absehbare Zeit weiter gepflegt werden oder fällt der unter den Tisch, sobald die Wiregate-Altnutzer alle migriert haben?
StefanW hat geschrieben: So Jan 19, 2020 8:08 pm Ansich ist alles da, ein eibd/knxd als API zum KNX und die Container für die Laufzeitumgebung für jede beliebige Programmiersprache auf dem Planeten die unter dem Kernel läuft. Das ist maximale Freiheit für jeden Entwickler.
Wenn das auf absehbare Zeit so bleibt, dokumentiertes Feature ist und es vielleicht auch rudimentären Support für diejenigen Neuuser gibt, die ein Wiregate nie in Betrieb gesehen haben, ist das eine feine Lösung.
StefanW hat geschrieben: So Jan 19, 2020 8:08 pm
Zugschlus hat geschrieben: So Jan 19, 2020 7:25 pmMal ganz abgesehen davon, dass damit dann auch Konstrukte wie "nimm diese Logik für die Eingabe-Objekte x, y, z und w", und lege das Ergebnis auf die Objekte x', y', z' und w' abhängig vom Eingabeobjekt" möglich werden, wofür man heute eine Vielzahl identischer Logiken bräuchte.
Bis das läuft, hat man auch die Vielzahl identischer Logiken geklickt oder als Custom-Logik angepasst.
Bei einer Custom-Logik hätte ich eine Art Template, die ich nur einmal ändern muss, wenn ich das schon zwanzig Mal instanziiert habe und dann einen fehler finde? Oder müsste ich dann dieselbe Änderung n-mal manuell ausführen?

Grüße
Marc
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

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

#4

Beitrag von StefanW »

Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmGibt es dafür (aktuelle) Doku?
Nur was in der KB steht.

Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmMir erschien der WireGate-Plugin-Container aufgrund seines Namens ausschließlich als "Altlasten-Retter" gedacht.
Ja, dafür haben wir den implementiert. weil wir den Kunden das versprochen haben.

Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmIst der ausdrücklich auch für uns Programmierfuzzis für die Implementierung neuer funktionen gedacht?
Er kann dafür benutzt werden. Insbesondere auch um modernere Scriptsprachen damit nutzen zu können. Es gibt die eibd API für mehrere Programmiersprachen.

Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmWird er auf absehbare Zeit weiter gepflegt werden oder fällt der unter den Tisch, sobald die Wiregate-Altnutzer alle migriert haben?
Ich kann dazu keine Versprechen abgeben. Wir werden sehen, wie die Nutzung sich entwickelt.

Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmWenn das auf absehbare Zeit so bleibt, dokumentiertes Feature ist und es vielleicht auch rudimentären Support für diejenigen Neuuser gibt, die ein Wiregate nie in Betrieb gesehen haben, ist das eine feine Lösung.
Wenn wir was wissen, tragen wir gerne was bei, aber das gehört nicht zu den supporteten Features. Wir haben früher jahrelang die Fehler im Plugin-Code von Kunden gesucht, das ist nicht mehr zu bezahlen.

Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmBei einer Custom-Logik hätte ich eine Art Template, die ich nur einmal ändern muss, wenn ich das schon zwanzig Mal instanziiert habe und dann einen fehler finde? Oder müsste ich dann dieselbe Änderung n-mal manuell ausführen
Nun, Du hast das Template (es ist ein json File) das dann in zwanzig Logiken eingetragen ist. Wenn Du das änderst, gehst Du in die zwanzig Logiken und kopierst das neue json drüber, das geht in unter einer halben Stunde. Die restliche Einstellungen bleibend davon unberührt.


lg

Stefan
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.
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

#5

Beitrag von Zugschlus »

StefanW hat geschrieben: Mo Jan 20, 2020 12:17 am
Zugschlus hat geschrieben: So Jan 19, 2020 8:30 pmBei einer Custom-Logik hätte ich eine Art Template, die ich nur einmal ändern muss, wenn ich das schon zwanzig Mal instanziiert habe und dann einen fehler finde? Oder müsste ich dann dieselbe Änderung n-mal manuell ausführen
Nun, Du hast das Template (es ist ein json File) das dann in zwanzig Logiken eingetragen ist. Wenn Du das änderst, gehst Du in die zwanzig Logiken und kopierst das neue json drüber, das geht in unter einer halben Stunde. Die restliche Einstellungen bleibend davon unberührt.
Das find ich allerdings keine schöne Lösung.

Grüße
Marc
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#6

Beitrag von Robert_Mini »

Zugschlus hat geschrieben: Mo Jan 20, 2020 7:27 am Das find ich allerdings keine schöne Lösung.
Ich finde das trotzdem praxisgerecht, weil:
- Man testet zumindest noch an einem Baustein mit inkl. Bus, wäre jeder Baustein instanziert, müsste man einen deaktivieren
- beim Aktualisieren des Codes bleiben Verknüpfungen erhalten, d.h. das geht je Logik in deutlich << 1 Minute.

Den Wunsch nach einer Array Struktur an Ein-/Ausgängen gab es schon gelegentlich. Ist aber komplex und auch hinsichtlich Doktormode und Grafana schwierig.

Auch die Anwendungsfälle sind überschaubar: RTR und Jalousien. Und Hand auf’s Herz: wie oft findet man Fehler bzw. erweitert man solch Logiken wirklich?

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Sensej
Reactions:
Beiträge: 901
Registriert: So Aug 12, 2018 9:12 am
Hat sich bedankt: 112 Mal
Danksagung erhalten: 240 Mal

#7

Beitrag von Sensej »

Zugschlus hat geschrieben: Mo Jan 20, 2020 7:27 am
StefanW hat geschrieben: Mo Jan 20, 2020 12:17 am Nun, Du hast das Template (es ist ein json File) das dann in zwanzig Logiken eingetragen ist. Wenn Du das änderst, gehst Du in die zwanzig Logiken und kopierst das neue json drüber, das geht in unter einer halben Stunde. Die restliche Einstellungen bleibend davon unberührt.
Das find ich allerdings keine schöne Lösung.

Grüße
Marc
Guten Morgen zusammen,
vielleicht kann man das später, wenn die Programmierer Zeit haben, um eine weitere Logik-Funktion "kopieren in" erweitern.

"kopieren in" -> Liste aller Logiken im System -> Logiken auswählen -> Button kopieren -> Warnung, dass der alte Code überschrieben wird -> Code kopieren und speichern


MfG Juri
Zuletzt geändert von Sensej am Mo Jan 20, 2020 10:21 am, insgesamt 1-mal geändert.
TWS 2400 ID: 69 + PBM ID: 728 + TP-UART, VPN offen, Reboot erlaubt
Benutzeravatar

MeisterLampe
Reactions:
Beiträge: 81
Registriert: Di Dez 18, 2018 8:17 am
Wohnort: Braunschweig
Hat sich bedankt: 35 Mal
Danksagung erhalten: 35 Mal

#8

Beitrag von MeisterLampe »

Würde mir ganz genauso gehen und bin daher auch ein Befürworter einer Programmierung mittels Hochsprache/Skriptsprache. Hiermit könnte man ganz einfach einen Zustandsautomaten erstellen. An Übersichtlichkeit mMn nicht zu überbieten und auch Standard für Logiken in SPSen...
Grüße
Philipp
Viele Grüße Philipp
Timberwolf Server 2600 | ID:246 | VPN offen

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

#9

Beitrag von StefanW »

Liebe Foristen,

ich verstehe Euch ja, aber bitte versteht uns auch.

Wir haben das Im WireGate Server und da haben wir eine Menge erlebt:

- Wilde Scripte die den Server lahmgelegt haben und wir mussten dann das finden (und der Kunde weigerte sich dann den Extra Support zu zahlen)

- Kunden, die sich beklagen, dass ihr Script nicht geht und - weil immer die anderen Schuld sind - wurde dann rumgejammert im Forum, mancher gab sich "verzweifelt", der mangelnde oder in einem solchen Fall kostenbehaftete Support wurde bemängelt, wir wurden auch erpresst "bringt das in Ordnung oder ich schreibe schlecht über dich" (nein, wir lassen uns nicht erpressen, kassieren dann aber auch negative Threads).

- Es wird über die mangelnde Dokumentation der Script-Engine geschimpft.

Kurz: Bitte macht mir konstruktive Vorschläge, wie man das WIRKLICH lösen kann und sich ALLE Kunden auch daran halten. Aber bei dem, was wir an Anspruchshaltung adressiert bekommen haben, leitet sich daraus die Regel ab, "Wenn Du ein Feature machst, dann muss es komplett durchdacht und perfekt sein, sonst wir es immer unzufriedene Kunden geben und Du musst es 15 Jahre unterstützen"-

Wir würden gerne an manchen Stellen mehr an Features geben, aber wenn wir es nicht excellent machen können, scheitern wir an der perfektionistischen Anspruchshaltung einzelner - und das verhindert am Ende eine Menge. Diejenigen, die sogern mit Daumen Runter und Punktabzug wegen Kleinigkeiten bei Bewertungen agieren, mögen sich auch Gedanken machen, wie sich das auf die Motivation auswirkt.

Also, bitte versteht uns auch und wenn Ihr eine Scriptengine haben wollt, dann diskutiert bitte ausgereifte Vorschläge, die alle Belange berücksichtigen und präsentiert dann einen ausgereiften Feature Request.

Stefan
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.
Benutzeravatar

MeisterLampe
Reactions:
Beiträge: 81
Registriert: Di Dez 18, 2018 8:17 am
Wohnort: Braunschweig
Hat sich bedankt: 35 Mal
Danksagung erhalten: 35 Mal

#10

Beitrag von MeisterLampe »

StefanW hat geschrieben: Mi Jan 29, 2020 9:37 am - Wilde Scripte die den Server lahmgelegt haben und wir mussten dann das finden (und der Kunde weigerte sich dann den Extra Support zu zahlen)
Ich dachte, das habt ihr mit eurer aktuellen Architektur verhindert, dass dies auch beim TWS passiert, da kein Zugriff mehr auf root möglich ist?
StefanW hat geschrieben: Mi Jan 29, 2020 9:37 am - Kunden, die sich beklagen, dass ihr Script nicht geht und - weil immer die anderen Schuld sind - wurde dann rumgejammert im Forum, mancher gab sich "verzweifelt", der mangelnde oder in einem solchen Fall kostenbehaftete Support wurde bemängelt, wir wurden auch erpresst "bringt das in Ordnung oder ich schreibe schlecht über dich" (nein, wir lassen uns nicht erpressen, kassieren dann aber auch negative Threads).
Beschweren sich die Kunden auch, wenn etwas an Logikbausteinen falsch eingestellt ist und die Logik dann nicht geht? Ist für mich kein Unterschied zu einem eigenen Script.


Eine Möglichkeit wäre wie jetzige Customlogiken. Es gibt einen Baustein, bei welchem beliebig viele Ein- und Ausgänge aus dem Dispatcher genutzt werden können. Bei einer Änderung einer der Ein- und Ausgänge wird der Baustein gerechnet oder wenn eine Init-Bedingung "true" ist. Bis hierher ist es exakt dasselbe wie mit einem Customlogik-Baustein. Jetzt ist der Unterschied, dass mit einer Programmier-/Skriptsprache eurer Wahl (etwas C-ähnliches, SCL, PHP etc. die "Standard" Elemente if then else > < mathematische operanden sind ja überall gleich) in dem Baustein programmiert werden kann.

@Zugschlus bin ich hier so weit weg von deinen Vorstellungen?
Viele Grüße Philipp
Timberwolf Server 2600 | ID:246 | VPN offen
Antworten

Zurück zu „Logikengine & Logik-Editor“