Ankündigung

Einklappen
Keine Ankündigung bisher.

Zustandsautomaten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • callidomus
    antwortet
    Hallo Benedikt,

    Ich habe die Diskussion, zu dem GPL Verstoß von Edomi, in dessen Forum getragen: #15

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • sailorcm
    antwortet
    Zitat von gaert Beitrag anzeigen
    1. Der Sourcecode der Logikbausteine ist frei verfügbar
    2. Wer sagt denn, dass GPL = öffentlicher Sourcecode bedeutet?
    Die GPL ... GPL3 (Siehe "Lizenzhinweis.txt in install/EDOMI/var/edomi-backups/_public ) besagt gleich im zweiten Abschnitt:

    "When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things."

    Hast du die GPL überhaupt schon mal gelesen?

    MfG

    Einen Kommentar schreiben:


  • Krukie83
    antwortet
    Ich sag mal so...danke Waldemar !

    Nee, mal im ernst ! Vielen dank für diese ausführliche Erklärung, das hat mich ein ganzes stück weiter gebracht !

    Gruß
    Jörg

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Jörg,

    dafür sind wir ja da - um zu helfen:

    Zitat von Krukie83 Beitrag anzeigen
    Wofür genau brauche ich den Item Selektor, und was für einen Einfluss hat der Item Selektor ? Brauche ich den zwingend ?
    Ein Zustandsautomat (StateMachine, im weiteren als SM bezeichnet) braucht immer ein Item, das dessen Zustand speichert. Abstrakt gesehen "hängt" die ganze SM an diesem Item. Auch alle relativen Item-Adressen innerhalb der SM gehen von diesem Item aus. Insofern: Ja, Du brauchst es zwingend!
    Ein tolles Feature vom Markus SM ist die Möglichkeit, die GLEICHE SM an mehrere Items zu hängen. Technisch gibt es dann mehrere Instanzen, die alle gleich definiert sind. Beispiel: Eine Veschattungs-SM, die bei mir an 17 Rolladen-Items hängt. Dies ist der Grund, warum es ein Item-Selektor ist (also etwas, was mehrere Items referenzieren kann). Würde man nur eine SM an ein Item gebunden werden können, würde eine "normale" Item-Referenz reichen. Mit dem Feature, 1 SM an viele Items binden zu können, muss es da einen Item-Selektor geben (über den man natürlich auch ein einzelnes Item auswählen kann).

    Zitat von Krukie83 Beitrag anzeigen
    Müssen das zwingend alle Beteiligten Items rein oder kann mann dafür auch einen Dummy anlegen ?
    Die Items im Item-Selektor sind NICHT die, die in den Zuständen vorkommen, falls Du das gedacht hast. Wie oben beschrieben, für die meisten einfachen Aufgaben steht da genau ein Item, das den Zustand der SM hält.

    Zitat von Krukie83 Beitrag anzeigen
    Und was für einen Einfluss hat der Wert dem ich einen Zustand geben kann ?
    Normalerweise hat das Item, an dem die SM "hängt", als Wert den Namen des Zustandes. Wenn Du also Zustände mit den Namen "Morgen", "Mittag", "Abend" hast, würde das Item für die SM vom Typ string sein müssen und diese Werte annehmen, wenn die SM in dem entsprechenden Zustand ist.
    Nehmen wir aber an, dass Du die SM an ein Item hängst, dass eine Dunstabzugshaube steuert, und die Dunstabzugshaube braucht Zahlen (int) im Bereich von 0-4. Jetzt gibt es die Möglichkeit, die Namen der Zustände "0", "1", "2", "3" und "4" zu nennen. Das ist aber nicht besonders sprechend. Besser lesbar wäre z.B. "Turbo", "Schnell", "Normal", "Langsam", "Aus". Das sind aber keine Werte, die Du an den Aktor schicken kannst. Also bietet Marcus direkt ein "Mapping" an. Du kannst dem Zustand einen Wert zuweisen, und dann wird dieser Wert in das Item, an dem die SM "hängt", eingetragen. Im obigen Beispiel würde man also dem Zustand "Schnell" den Wert 3 zuweisen, "Aus" die 0 etc. und dann würde immer noch alles funktionieren und man hätte gut lesbare Zustände.
    Lesbare Zustände sind deswegen interessant, weil man in der SM selbst wieder auf Zustände referenzieren kann, und da ist ein Text besser zu verstehen als eine Zahl. Vor allem wenn man nach ein paar Monaten wieder was an der SM ändern will, ist Klartext immer vorzuziehen.
    Ein anderer Vorteil vom Mapping über Werte ist, dass man mehr Zustände haben kann als Werte. Im obigen Beispiel könnte ich z.B. einen Zustand "Pause" einführen, der auch den Wert 0 trägt (Dunstabzugshaube geht aus), der ist aber im Gegensatz zu "Aus" so eingestellt, dass er nach 2 Minuten wieder verlassen wird (ok, ist etwas an der Haaren herbeigezogen, es soll nur die Möglichkeit aufzeigen).

    Zitat von Krukie83 Beitrag anzeigen
    Ganz allgemein tue ich mich noch ein bisschen schwer mit den Automaten, was aber glaube ich an meiner Denkweise liegt
    Frag ruhig, ich glaube ich habe die SM sehr gut verstanden und helfe gerne. Eigentlich sind die SM deswegen relativ einfach, weil man nur eine Folge von Regeln formulieren muss und alles funktioniert dann...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi Jörg,

    die Antworten würde mich auch interessieren.


    Wofür genau brauche ich den Item Selektor, und was für einen Einfluss hat der Item Selektor ?

    aus der Hilfe

    "Jeder Zustandsautomat wird mit einem Item verknüpft. Dieses Item nimmt dabei den Wert des aktuellen Zustandes an. Dies funktioniert auch in die andere Richtung, über setzen des Itemwertes kann man den aktiven Zustand des Automaten wählen."

    Ich interpretiere wenn das Falsch ist bitte korrigieren.

    Über das Itemselektor verbindest du dem Zustandautomaten mit einem bestimmten Item. Über diese Item kannst du von aussen den Zustand setzten (wird bei KNX Szenen benutzt) damit kann dann also ein bestimmter Zustand angewählt werden.

    Ein Zustand kann aber auch durch erfüllen einer Eintrittsbedingungen erreicht werden. Dann wird das Selektortem mit dem Wert gesetzt. (wenn es eine Wert gibt) was drinn steht wenn keiner gesetzt ist weiss ich nicht.

    Viele Grüsse
    Jürgen

    Einen Kommentar schreiben:


  • Krukie83
    antwortet
    Hi,

    ja hab mir beide heute noch mal angeguckt. Hat auch ein bisschen geholfen, aber bei dem Item Selektor bin ich damit auch nicht weiter gekommen...

    Gruß
    Jörg

    Einen Kommentar schreiben:


  • Stereofeld
    antwortet
    Hi Jörg,

    hast du die Videos schon gesehen? Mir ist nach dem Anschauen einiges klarer gewesen.

    Gruß
    Thomas

    Einen Kommentar schreiben:


  • Krukie83
    antwortet
    Guten Morgen zusammen,

    ich spiele jetzt schon ein paar Tage immer mal wieder mit dem Zustandsautomaten rum, allerdings gibt es so ein paar Dinge die ich noch nicht so richtig verstanden habe.

    Wofür genau brauche ich den Item Selektor, und was für einen Einfluss hat der Item Selektor ? Brauche ich den zwingend ? Müssen das zwingend alle Beteiligten Items rein oder kann mann dafür auch einen Dummy anlegen ?

    Und was für einen Einfluss hat der Wert dem ich einen Zustand geben kann ?

    Ganz allgemein tue ich mich noch ein bisschen schwer mit den Automaten, was aber glaube ich an meiner Denkweise liegt

    Gruß
    Jörg

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Zitat von mumpf Beitrag anzeigen
    Code:
    Zustand Tag:
    enter:
    condition PM == 1
    condition IstTag == 1
    action Licht 1
    action Dimmen 100
    Zustand Nacht:
    enter:
    condition PM == 1
    condition IstTag == 0
    action Licht 1
    action Dimmen 30
    Zustand Aus:
    enter:
    condition PM == 0
    action Licht 0
    Ist es das was Du willst?
    Hi Waldemar,

    ja ich will aber auch Werte auch noch anlernen. Da muss dann halt nur noch eine Stateitem vergeben werden und an den stellen wo ich lernen will noch ein learn rein. So werde ich das mal ausprobieren.

    VG
    Jürgen

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Jürgen,

    ich schlage hier den Weg über ein Item vor.

    Code:
    [meinitem]
        type = num
        timer = time=22:00 value=1 | time=06:00 value=0
    Und dann bei der Szene das Item als Wert verwenden.

    Alternativ könnte man da auch etwas über eine Logik machen, ich finde das so aber transparenter.

    Bis bald

    ​​​​​​​Marcus

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Jürgen,

    ich verstehe immer noch nicht wirklich, was Du willst. Hier mal ein Vorschlag für einen Zustandsautomaten (Pseudocode):

    Code:
    Zustand Tag:
    enter:
        condition PM == 1
        condition IstTag == 1
        action Licht 1
        action Dimmen 100
    Zustand Nacht:
    enter:
        condition PM == 1
        condition IstTag == 0
        action Licht 1
        action Dimmen 30
    Zustand Aus:
    enter:
        condition PM == 0
        action Licht 0
    Ist es das was Du willst?

    Gruß, Waldemar




    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi,
    ich habe ein gerät was nur 2 Ein Bit Szenen hat. Szene Aus / Szene An. Die Szene an möchte ich jetzt bei Tag/Nacht umschaltung auf andere Werte programmieren. Ohne diese aufzurufen.

    VG
    Jürgen

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Jürgen,

    ich verstehe die Anforderung nicht. Entweder Du hast einen programmierten Wert, dann setze ihn einfach oder Du hast einen zu lernenden, dann schreibst Du "learn" rein.

    Schreib doch mal, was Du genau möchtest, dann finden wir schon eine Lösung.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Hi,

    ich würde gerne bei einem PM der keine Tag Nacht umschaltung da einwenig pimpen. Kann man die Szenespeicher auch programmatisch anlernen?

    Viele Grüsse
    Jürgen

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo,

    die Basis-Dokumentation ist online. Feedback dazu gerne per Mail oder PN.

    https://docs.callidomus.com/de/Zustandsautomaten/

    Nächster Schritt: Beispiele

    Bis bald

    Marcus

    Einen Kommentar schreiben:

Lädt...
X