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

[Implemented] Universeller Zustandsautomat

Hier bitte Eure Diskussionen und Feature Requests zu neuen Logikmodulen und Funktionen des Logik-Editors
Benutzeravatar

Chris M.
Reactions:
Beiträge: 1190
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 234 Mal
Danksagung erhalten: 853 Mal
Kontaktdaten:

#11

Beitrag von Chris M. »

supernode hat geschrieben: Fr Aug 24, 2018 10:44 pm Sollte es mehr tabellarisch werden hatten wir ja das Thema FSM/LUT im KNX UF auch schon diskutiert. Damit lassen sich so einfache State-Machines ja auch realisieren. Meiner Meinung nach oft auch übersichtlicher als graphisch.
Ich kann mir nicht vorstellen, das eine Tabellenlösung übersichtlicher ist als eine grafische (wenn die nicht bewusst unleserlich gemalt wurde).
Auch meine Erfahrung mit Source-Dokumentation von riesigen Software-Produkten (mehrere 10.000 Seiten!) zeigt, dass die Zustandsautomaten grafisch dokumentiert werden.
supernode hat geschrieben: Fr Aug 24, 2018 11:32 pm Dabei sollte man auf jeden Fall auch auf das Debugging achten, d.h. Breakpoints auf einzelne Zustände oder eben Zeilen im obigen Beispiel setzen und schrittweise ausführen.
Ich befürchte wir haben unterschiedliche Vorstellungen von einem Zustandsautomaten: ich wüsste nicht wie sich Breakpoints mit einem Zustandsautomaten verheiraten lassen. Entweder bin ich in dem einen Zustand - oder in einem anderen. Eine Pause dazwischen gibt es nicht.

Eine Pause-Taste die den aktuellen Zustand einfriert macht dagegen viel Sinn (war es das was Du mit einem Breakpoint haben wolltest?), genau so wie die Möglichkeit beim Entwickeln einen Zustandsübergang zu erzwingen, so wie eine Live-Anzeige welcher Zustand aktuell gültig ist.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

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

#12

Beitrag von StefanW »

Nein Jochen, wir sind rein Tabellarisch orientiert unterwegs, weil ich das für wesentlich einfacher halte (jeder kann Excel) als grafische Objekte wie in einem Schnittmuster herumzuschieben.

Seh Dir den 1-Wire Geräteeditor an. Der ist tabellarisch und dabei außerordentlich mächtig. Was da in einer Zeile steht, braucht bei manchen grafischen Editoren eine ganze Seite mit 15 Boxen. Das ist nicht wirklich übersichtlich, es sieht lediglich "toll" aus, aber man braucht eigentlich viel zu lange um das für einen wichtige zu finden und zu verstehen.

Es gibt nichts plazsparenderes wie eine Tabelle. Unsere Editoren sind alle ähnlich aufgebaut und zu bedienen. Hat man mal das Konzept der Suche und des Filters und des Sortierens erfasst - insbesondere die MAcht der TAGs - dann hat man es total leicht, immer einen Überblick über die passende Funktionengruppe zu haben, daher bleiben wir bei Zeilen und Zellen.

Bitte also die Ideen in der Hinsicht State Maschine so weiterentwickeln... (Muss noch klick machen bei mir, vielleicht kann man mir das als Abfolge eines nächtlichen Rasensprenges mit Umschalten nach Zeit, Regenmesser, Bodenfeuchtefühler und mehreren nacheinander zu schaltenden Ventilen erklären)?


lg

Stefan
Zuletzt geändert von StefanW am Sa Aug 25, 2018 12:23 am, insgesamt 1-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.
Benutzeravatar

Chris M.
Reactions:
Beiträge: 1190
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 234 Mal
Danksagung erhalten: 853 Mal
Kontaktdaten:

#13

Beitrag von Chris M. »

StefanW hat geschrieben: Sa Aug 25, 2018 12:22 am Nein Jochen, wir sind rein Tabellarisch orientiert unterwegs, weil ich das für wesentlich einfacher halte (jeder kann Excel) als grafische Objekte wie in einem Schnittmuster herumzuschieben.
Dann hast Du nur eine neue textuelle Programmiersprache geschaffen die nicht mal effizient per Texteditor zu programmieren ist...

StefanW hat geschrieben: Sa Aug 25, 2018 12:22 am Es gibt nichts plazsparenderes wie eine Tabelle.
Platz sparen ist beim Programmieren eine komplett falsche Optimierungsrichtung!
Code ist wesentlich schneller geschrieben als man ihn lesen kann. Das ist der Fluch des Programmierens! Wenn Du nach einem Jahr nachvollziehen willst, was Du damals geschrieben hast und warum, dann dauert das ca. 10x so lange wie das Schreiben.
Kommentare im Code helfen nur bedingt, denn Kommentieren ist eine Kunst die erst gelernt und gemeistert werden will.

Von daher muss das Ziel und die Optimierungsrichtung die sein, es so leicht wie möglich zu machen zu verstehen, was damals programmiert wurde und wieso. Egal wie viel Platz das braucht.
(Natürlich hilft es, wenn es kompakt ist und auf eine Seite passt. Wenn dadurch aber die Verständlichkeit leidet war's kontraproduktiv)

StefanW hat geschrieben: Sa Aug 25, 2018 12:22 am Bitte also die Ideen in der Hinsicht State Maschine so weiterentwickeln... (Muss noch klick machen bei mir, vielleicht kann man mir das als Abfolge eines nächtlichen Rasensprenges mit Umschalten nach Zeit, Regenmesser, Bodenfeuchtefühler und mehreren nacheinander zu schaltenden Ventilen erklären)?
Die Möglichkeit für Tabellen sind hier sehr mühsam, daher stark minimal das Beispiel:
Tabelle 1: Zustände:

Code: Alles auswählen

Nr| Name    | Aktion
---+--------+-------
 1 | Aus    | Sende alle Ventile ZU
 2 | Vorne  | Sende Ventil vorne AUF
 3 | Hinten | Sende Ventil vorne ZU + hinten AUF

Tabelle 2: Zustandsübergänge

Code: Alles auswählen

  | Init | 1 | 2 | 3
--+------+---+---+---
1 | A    | - | B | C
2 | -    | D | - | -
3 | -    | - | E | -

Bedingungen für die Zustandsübergänge:
A: Immer
B: Not-Aus-Paket kommt gerade über den Bus rein
C: Not-Aus-Paket kommt gerade über den Bus rein ODER Timer>30Min
D: (aktuelle Uhrzeit>3 Uhr UND Bodenfeuchte<x% UND Regenmesser=kein Regen) ODER (Paket Erzwinge Bewässern wird gerade vom Taster gesendet)
E: Timer>30Min
(Für's Verständnis wichtig: ein Zustandsautomat hat immer einen Zustand und reagiert auf Events. )
Zuletzt geändert von StefanW am Sa Aug 25, 2018 4:19 pm, insgesamt 2-mal geändert.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

supernode
Reactions:
Beiträge: 64
Registriert: So Aug 12, 2018 7:39 am
Hat sich bedankt: 10 Mal
Danksagung erhalten: 29 Mal

#14

Beitrag von supernode »

Für kleine FSMs mit wenig States und Übergängen bzw. Übergangsbedingungen sehe ich auch vorteile bei der graphischen Beschreibung. Auch zu Dokumentationszwecken wo Leute einen Überblick über das System erhalten sollen.
Wird eine FSM größer so herrscht dort schnell die Unübersichtlichkeit. Da ist es für mich (!) deutlich übersichtlicher das textuell/tabellarisch zu sehen.

Ich komme aus der programmierbaren Logik-Ecke und da sind FSMs sehr wohl getaktet und reagieren nicht unmittelbar auf Events. Ein "immer" ist in einigen Branchen demnach nicht korrekt. Aus System-Sicht ist das was du schreibt aber schon in Ordnung, da geht man weniger auf diese Details von Zeitabläufen und Synchronität ein.

Breakpoints ließen sich wohl realisieren wenn bei der Berechnung eines Zustands, was bei Änderungen an den Eingängen, im periodischen Raster (getaktete FSM) oder nach einem Wechsel eines Zustands geschieht die Abarbeitung anhält. Auch ließe sich auf bestimmte Eingangs-Kombination oder Werten von Ausgängen triggern.
Ein Einfrieren ließe sich ja auch über Breakpoint bzw. die Anhaltefunktion realisieren. Das sollte dann natürlich nur die eine FSM anhalten und nicht die ganze Logic Engine. Auch ein Trace/History wäre hilfreich um zu sehen wieso man in einem Zustand gelandet ist oder woher man kam. Eine Live-Anzeige wird schwierig wenn man häufige Zustandsübergänge hat.

Noch eine Ergänzung: vieleicht sollte man FSMs und LUTs, so wie ichs oben im vorherigen Post beschrieben habe, auch auseinanderhalten. Mit LUTs kann man FSMs realisieren, aber es ist nicht deren Kernaufgabe. Eigentlich sinds ja auch nicht mal LUTs sondern eine Art if-elsif-Zweige

Hinzugefügt nach 20 Minuten 12 Sekunden:
Beispiel: Wir schalten um 3 Uhr ein und und um 5 aus. Wenn eine Bewegung erkannt wird schalten wir unmittelbar aus.
Zwischen einschalten der Ventile 1 und 2 vergehen 5 Minuten. Alles sollte man sich als Tabelle vorstellen, links die Eingänge, rechts die Ausgänge.
Dann pro Zeile ein Fall der bei der Ausführung analysiert wird. Zeilen weiter oben haben höhrere Priorität.

Eingänge:
- R (Reset, bool) -> Neustart
- B (Bewegungsmelder, bool) -> Abschalten
- T (Timer, Event, Jede Minute)
- U (Aktuelle Uhrzeit)

Lokal genutzte Variablen oder Realisiert über externen Feedback (Ein- und Ausgänge)
- ST (State, string, Default: "off")

Ausgänge:
- V1 (Ventil 1, bool)
- V2 (Ventil 1, bool)

Legende:
X = don't care
- = keine Zuweisung
E = Event

Tabelle:
Zeile 1 (Reset-Fall, Abschalten):
Eingangsfilter: ST = X, R = true, B = X, T = X, U = X
Ausgangszuweisung: ST = "off", V1 = false, V2 = false

Zeile 2 (Bewegungsmelder):
Eingangsfilter: ST = "on" OR "on_delay",R = false, B = true, T = X, U = X
Ausgangszuweisung: ST = "off", V1 = false, V2 = false

Zeile 3 (einschalten):
Eingangsfilter: ST = "off", R = 0, B = true, T = E, U = 3uhr
Ausgangszuweisung: ST = "on_delay", V1 = true, V2 = false

Zeile 4 (einschaltverzögerung):
Eingangsfilter: ST = "on_delay", R = false, B = false, T = E, U = 3uhr 5 minuten
Ausgangszuweisung: ST = "on", V1 = true, V2 = true

Zeile 5 (abschalten, Fängt die Fälle der inaktiven Zeit):
Eingangsfilter: ST = "on", R = false, B = false, T = E, (U > 5uhr) OR (U < 3uhr)
Ausgangszuweisung: ST = "off", V1 = false, V2 = false


Ich hoffe man verstehts einigermaßen. So spät am Abend ist das schon eine Meisterleistung :-)
Zuletzt geändert von supernode am Sa Aug 25, 2018 1:19 am, insgesamt 1-mal geändert.
TWS 2600 ID:172, VPN offen, Reboot erlaubt

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

#15

Beitrag von StefanW »

StefanW hat geschrieben: Sa Aug 25, 2018 12:22 amDann hast Du nur eine neue textuelle Programmiersprache geschaffen die nicht mal effizient per Texteditor zu programmieren ist...
ähh, doch. Unsere Logiken können sehr wohl auch mit einem Texteditor programmiert werden. Nennt sich "Custom" und nimmt beliebig komplexe Verschaltungen in Textform auf.

StefanW hat geschrieben: Sa Aug 25, 2018 12:22 amPlatz sparen ist beim Programmieren eine komplett falsche Optimierungsrichtung!
Für einen Programmierer womöglich nicht, aber für einen Elektriker der eine handvoll Logikfunktionen realisieren will ist es sehr hilfreich, das strukturiert zusehen. Zumindest ist das unser Gedanke.

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.

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#16

Beitrag von Dragonos2000 »

Lassen wir uns überraschen, was Ihr Euch ausgedacht habt...
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#17

Beitrag von Dragonos2000 »

@StefanW
Um das Thema nochmal aufzugreifen: Im Zusammenspiel mit dem angekündigten universellen Objekteditor/Dispatcher (Ihr nennt das DOS, glaube ich), wird da einschöner Schuh draus und viele Alltragsprobleme lassen sich elegant lösen. Ich denke da allein schon an die Beschattungssteuerung oder Szenensteuerung. Ich sehe enormes Potential. Habt Ihr da noch weiter drauf rumgedacht in den letzten Monaten?

Wenn ich mir die Votings ansehe muss ich zugeben, dass es nicht so wichtig zu sein oder ist in Vergessenheit geraten.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

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

#18

Beitrag von StefanW »

Wir haben über eine Menge nachgedacht, aber das ist nicht alles so einfach das immer zu beschreiben.

Schaut Euch mal das Gehaue und Gesteche im KNXUF an. Da weden auch Dinge, die ich irgendwann mal sagte dass ich darüber nachdenke oder als möglicherweise realisierbar habe erscheinen lassen, mir nun als gebrochene Versprechen (etwas vereinfacht dargestellt) angehängt.

Selbst dass wir die wöchentlichen Fortentwicklung unseres Kataloges mit Euch geteilt haben (zefix, andere teilen täglich Ihre Katzenfotos auf Instagramm...) wird mir heute negativ ausgelegt.

Ich muss mir daher überlegen, wie ich auftrete und was ich noch sagen soll über unsere Gedanken und was nicht. Mein derzeitiger Eindruck ist, weniger sagen ist besser.

Daher bitte ich um Verständnis, wenn ich mich in Fragen zu unseren internen Planungen und Gedanken eher zurückhaltend äußere.

lg

Stefan
Zuletzt geändert von StefanW am Sa Jan 19, 2019 1:13 pm, insgesamt 1-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.

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#19

Beitrag von Dragonos2000 »

Ist in Ordnung, Stefan.
Falls gewünscht, können wir uns gerne mal offline über meine Gedanken zum ein oder anderen FR von mir austauschen. Denn entweder seh nur ich die Potentiale, oder habe ne falsche Vorstellung.
Bemerkung am Rande: Ein bestimmter Thread im KNXUF k*tzt mich mega an und es ist beschämend, wie eine Handvoll Leute Stimmung machen (vor Allem geduldeter maßen), anders denkende Diffamieren und keine Ruhe geben. Irgendeiner fängt immer wieder an...
Zuletzt geändert von Dragonos2000 am Sa Jan 19, 2019 1:32 pm, insgesamt 3-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

FabKNX
Reactions:
Beiträge: 478
Registriert: Mi Aug 15, 2018 7:50 pm
Wohnort: LK Heilbronn
Hat sich bedankt: 684 Mal
Danksagung erhalten: 247 Mal

#20

Beitrag von FabKNX »

Dragonos2000 hat geschrieben: Sa Jan 19, 2019 1:28 pm Ist in Ordnung, Stefan. ...
Bemerkung am Rande: Ein bestimmter Thread im KNXUF k*tzt mich mega an und es ist beschämend, wie eine Handvoll Leute Stimmung machen (vor Allem geduldeter maßen), anders denkende Diffamieren und keine Ruhe geben. Irgendeiner fängt immer wieder an...
Sehe ich ähnlich. Aus meiner beschränkten Sicht solltest du die Trolle in dem thread einfach schreiben lassen und gar nicht mehr oder nur sehr kurz antworten. Du hast doch echt alles gesagt. Es wird doch ehh nicht angenommen.

Bin schon am überlegen, wie man auch dort wie wieder etwas mehr technische Themen ins Rollen bringen kann. Ohne diese Trolle.

Ich denke mit den neuen Sensoren (Bodenfeuchte z.B.) kann das wieder gelingen.
VG Fabian
TWS 2500
timberwolf138, VPN offen, Reboot jederzeit
follow me on Instagram: https://www.instagram.com/meinsommer_diy/
Antworten

Zurück zu „Feature Requests & Diskussionen Timberwolf Logik (Module & Editor)“