Ankündigung

Einklappen
Keine Ankündigung bisher.

HS Logik Generator und Debugger

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

    HS/FS HS Logik Generator und Debugger

    EDIT:
    https://github.com/knxuf/HS-Logikdebugger/

    ## 2.021 * PREEXEC für hsb hinzugefügt
    ## * TagList.GrpListAll hinzugefügt
    ## * iko Standalone + Attribute wie name,endpoint_description ...
    ##
    ## 2.020 * fix _hslparser 5012 regex include spaces
    ##
    ## 2.019 * hsl20 Support
    ##
    ## 2.018 * füge diverse interne Funktionen hinzu
    ##
    ## 2.017 * entferne --register
    ##
    ## 2.016 * XXXXXXXXXXXXXXXXXXXXX
    ## * XXXXXXXXXXXXXXXXXXXXX
    ##
    ## 2.015 * 'names' zeigt jetzt SN and Timer
    ## * colorama Unterstützung für farbliche Ausgabe
    ## * Überprüfung der Zeilenende auf Kommentarzeichen #
    ## * Timer ON[x] erhällt Wert der Formel
    ## * fix AC wurde teilweise zu früh auf 0 gesetzt
    ## * 'timer' zeigt jetzt ohne Parameter die verfügbaren an
    ## * 'timer [x]' führt die Logik Berechnung bei aktivem autorun auch aus
    ## * 'print' und 'import' als Befehl direkt ohne exec möglich
    ## * 'formel' zeigt die Formelzeilen und dekodierten Base64 Bytecode
    ## * Syntax Highlighting
    ## * Homeserver Variablen können an der Debugkonsole auch verkürzt als en1= oder en2= etc gesetzt werden
    ## * removed import popen2
    ##
    ## 2.014 * interne IP
    ##
    ## 2.013 * diverse HS interne Objekte hinzugefügt
    ## * überwachung von AC[x] auf änderungen
    ## * __import__ gegen Funktion ausgetauscht um hs interne Module zu imitieren
    ## * KO Gateway Verbindung timeout geändert
    ## * eingaben string-decode um zum Beispiel bei EN[1]="d100=1\x03" das Steuerzeichen hex 03 zu senden
    ## * Fix Ausgang beim internen schreiben über SetWert des iko
    ## * --register nun je Python Version (Debug 2.4/Debug 2.6)
    ##
    ## 2.012 * runTime je Formelzeile
    ## * --register zum registrieren der Debug Erweiterung für .hsl Dateien
    ##
    ## 2.011 * Name von TimerThreads entsprechend dem OC
    ##
    ## 2.010 * Bugfix 'names'
    ##
    ## 2.009 * 'connect' zum manuellen verbinden aus dem Debugger
    ## * EN[1]=$IKO$1/0/100 aus dem debugger heraus
    ## * Bugfix .config nicht aus dem Installationspfad geladen beim Rechtsklick aus hsl
    ##
    ## 2.008 * Timer laufen automatisch bei autorun
    ## * Bugfixes beim Beenden
    ## * globals werden nicht mehr an die Formel übergeben
    ## * Zeilenummer beim Bedingungstest
    ## * Autorun per .config default und pro LogikID
    ## * Autorun override per Befehlszeile -a 1|0
    ##
    ## 2.007 * Bugfixes KO-Gateway
    ## * AutoRun
    ##
    ## 2.006 * KO-Gateway für Ein/ausgänge
    ##
    ## 2.005 * Anzeige auf SystemCodepage angepasst, sodass Umlaute angezeigt werden
    ## * Option -n zum erstellen von .LGT Dateien aus .hsl
    ## * Kontrollen für EI bei nicht startetenden Bausteinen
    ## * Kontrolle auf Remanente Speicher bei nicht Remanenten Baustein
    ## * Kontrolle der Timer Anzahl
    ##
    ## 2.004 * BugFixes _defline
    ## * einige Dacom Bausteine (z.B. Codeschloss) haben keine gültige Definition
    ##
    ## 2.003 * 'names' zeigen jetzt auch die derzeitigen Werte
    ## * LogikGen.config hinzugefügt
    ## * Ausgang von intern beschreiben
    ## * Ausgaben auf Deutsch
    ##
    ## 2.002 * Parse Error in der 5001er Zeile
    ## * einige interne HS Klassen hinzugfügt
    ## * Timer ON/OC werden unterstützt
    ##
    ## 2.001 * Initial Release
    ##

    Parameter zum Aufruf des Scripts
    Code:
            -d (--debug) startet den Debugger (immer benutzen)
            -i xxxxx_logik.hsl (--import=) importiert eine .hsl Datei
            -o logik.hsb (--open=) läd eine .hsb Datei
            -a [0|1] (--autorun=) startet die Ausführung automatisch (ohne run)
            -l logfile.txt (--log=) schreibt die Ausgabe des Programms in eine Textdatei
    Folgende Befehle können im Debugger verwendet werden

    Code:
    'quit' oder 'exit' zum beenden
    'save' generiert ein .hsb File aus der aktuellen Logik
    'build' generiert ein .hsl File aus der aktuellen Logik
    'show' um die Variablen anzuzeigen
    'names [suchstring ... mit ! negiert]' zeigt die Namen der Ein-/Ausgänge/Speicher an
    'files [-t (filetype) /-s (Größe)] [suchstring]' zeigt den Inhalt des ExtDatUrl (/opt) an
    'cat Filename zeigt den Inhalt des unter ExtDatUrl (/opt) liegen Files an
    'formel [linenumber] zeigt die Formeln an
    'run' um die Logik auszuführen
    'autorun [0/1]' autorun ein/aus
    'debug [0/1]' schaltet Debugmeldungen ein/aus
    'timer 1' lässt Timer OC[1]/ON[1] ablaufen
    'connect' verbinden zum definierten KO Gateway
    'disconnect' verbinden zum definierten KO Gateway trennen
    'exec code' ausführen von python Code innerhalb der Logik
      -- print und import können auch ohne vorangestelltes exec ausgeführt werden
    'EN[1]=23' um Eingang 1 den Wert 23 zu setzen
      -- es können EI,EN,SN,AN,ON sowie EC,SC,AC,OC als auch EA,SA,AA
      -- geändert werden. Bei den ersten wird automatisch das jeweilige xC gesetzt
      -- kann auch mit en1= abgekürzt werden
    Neues Format für Bausteine, (.hsb )
    Um mehrzeiligen Bytecode zu nutzen
    Code:
    5012|0|"EI"|"@BYTECODE@"|""|0|0|0|0
    @BYTECODESTART@
    AN[1]="test"
    AC[1]=1
    @BYTECODEEND@

    um aus einer .hsl ein .hsb File zu machen
    Code:
    python LogikGen.py -d -i 12345_MeineLogik.hsl -a 0
    und dann in der Konsole
    save eingeben
    Die .hsb enthällt folgende Variablen zur Steuerung des Erstellungsverhalten
    LOGIKDEBUG=1
    # Debug aktiv (heißt .. im Quelltext wird überall ###DEBUG### entfernt .. wenn also eine Zeile ###DEBUG###console_debug("sometext") irgendwo steht wird der code ausgeführt
    LOGIKDEBUG=-1
    # Debug wird entfernt, die Zeile die mit ###DEBUG### startet wird komplett entfernt

    LOGIKDEBUG=0
    # ###NODEBUG### wird falls vorhanden ausgeführt, damit kann z.B. zum Testen einen ###DEBUG### und eine ###NODEBUG### Zeile eingetragen werden die dann je nach Bedarf ausgeführt wird

    LOGIKCOMPILE=1 Base64
    LOGIKCOMPILE=2 Base64/ZLIB
    LOGIKCOMPILE=3 Bytecode
    LOGIKCOMPILE=4 Bytecode/ZLIB

    Viel Spaß damit.

    PS:
    Wem es nützt .. https://www.paypal.com/cgi-bin/websc...=VY33EH7CBR6LW
    Zuletzt geändert von NilsS; 26.09.2018, 07:04.
    Nils
    xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

    #2
    Hey Nils!

    Coole Sache!!!

    Ich habe noch eine Kleinigkeit zu "meckern": Kommentare am Ende der 5001-Defintion führen z.B. zu einem Fehler beim Parsen, da dann das letzte Split-Element keine Zahl ist.
    Evtl. könnte man die Kommentare ja generell zunächst entfernen...

    Ich habe mich aber noch nicht tiefer mit dem Debugger beschäftigt. Das kommt noch ;-)
    Gruß, Marc

    Kommentar


      #3
      Hallo NilsS,
      toll endlich ein Debuger.
      Noch eine Anregung: Belegung der Ein- und Ausgänge uber eine mitladbare Textdatei.
      Gruß Marko

      Kommentar


        #4
        Version 2.002

        Update
        2.002
        #####
        * Parse Error 5001er Line
        * added some internal HS classes
        * added Timer ON/OC
        2.001
        #####
        * Initial Release

        So sieht das aus wenn man mal z.B. den Baustein dasOertliche debugged
        LogikDebugger.PNG
        Nils
        xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

        Kommentar


          #5
          Zitat von marko Beitrag anzeigen
          Noch eine Anregung: Belegung der Ein- und Ausgänge uber eine mitladbare Textdatei.
          config Datei ist schon in vorbereitung
          Nils
          xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

          Kommentar


            #6
            Version 2.003

            2.003
            * 'names' zeigen jetzt auch die derzeitigen Werte
            * LogikGen.config hinzugefügt
            * Ausgang von intern beschreiben
            * Ausgaben auf Deutsch

            2.002
            * Parse Error in der 5001er Zeile
            * einige interne HS Klassen hinzugfügt
            * Timer ON/OC werden unterstützt
            2.001
            * Initial Release
            Nils
            xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

            Kommentar


              #7
              Version 2.004

              2.004
              * BugFixes _defline
              * einige Dacom Bausteine (z.B. Codeschloss) haben keine gültige Definition
              * Demo LogikGen.config File hinzugefügt
              2.003
              * 'names' zeigen jetzt auch die derzeitigen Werte
              * LogikGen.config hinzugefügt
              * Ausgang von intern beschreiben
              * Ausgaben auf Deutsch

              2.002
              * Parse Error in der 5001er Zeile
              * einige interne HS Klassen hinzugfügt
              * Timer ON/OC werden unterstützt
              2.001
              * Initial Release



              Um Eingänge vorzubelgen, im LogikGen.config File eine Sektion mit der Baustein ID anlegen und dann einfach die Variable mit Doppelpunkt vom Wert getrennt eintragen.
              Nils
              xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

              Kommentar


                #8
                Wer die Datei LogikGen.py und LogikGen.config nach c:\python24 kopiert,
                kann das angehängte REG ausführen um dann per Rechtklick jede hsl Datei "Debug" zu können


                Also noch mal Schritt für Schritt

                1. Python 2.4 installieren
                * http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi
                * einfach alles so durch klicken
                2. LogikGen.py und LogikGen.config nach c:\python24 kopieren
                3. Register_HSL_Debug.reg doppelklicken und einfügen in die Registrierung bestätigen
                4. Im Explorer den Logikordner des Experten aufrufen
                5. hsl Datei rechtsklicken und auf debug klicken
                6. run eingeben um die Logik im (EI=1) durchlaufen zu lassen
                7. z.B. EN[1]=25 um die Werte an Eingänge zu legen (EC wird dann automatisch gesetzt)
                8. die Logik wird NICHT automatisch mit dem Wert rechnen, sondern erst nach einem weiteren run Befehl
                9. names zeiget Namen und Werte der Ein/Ausgänge
                10. show zeigt alle Variablen
                11. mit exit oder quit kann man den Debugger verlassen
                Angehängte Dateien
                Nils
                xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

                Kommentar


                  #9
                  Nur am Rande: Kommentare am Zeilenende führten aber im HS dann irgendwo anders (nicht bei 5001) zu Problemen, wenn ich mich recht entsinne..

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #10
                    Hallo Nils

                    Super Sache. Danke, Holger
                    ECMACOM GmbH
                    Konzeption, Planung, Implementation, Unterhalt
                    www.ecmacom.ch
                    www.knxshop4u.ch

                    Kommentar


                      #11
                      Wenns Wünsche,Kritik,Bugs .... gibt ... sagt einfach Bescheid.


                      PS: Wer bitte hat denn die Version 2.002alpha noch geladen wo die 2.004alpha 3 Posts weiter unten ist ??
                      Nils
                      xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

                      Kommentar


                        #12
                        Hallo Nilss,
                        wie binde ich die config-Datei ein.
                        Gruß Marko

                        Kommentar


                          #13
                          was meinst du mit einbinden ?

                          einfach im gleichen Ordner wie die LogikGen.py und darin z.B.

                          Code:
                          [10101]
                          EN[1]:"Das ist immer E1"
                          EN[2]:5
                          Nils
                          xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

                          Kommentar


                            #14
                            Hallo NilsS,
                            mit deinem Baustein das Örtliche geht es.
                            wenn ich einen anderen Baustein versuche werden die Vorbelegungen nicht angezeigt.
                            Was muß ich ändern:

                            [12273]
                            name:dasOertliche
                            EN[1]:"021956020"


                            Gruß Marko

                            Kommentar


                              #15
                              damit die LogikID erkannt wird, muss der Dateiname der hsl stimmen.

                              5StelligeID_Name.hsl
                              Nils
                              xxAPI² - HTML5 Client für den Gira Homeserver (Status: Beta / Visuclient = 80% / xxAPI¹ Funktionen = 100% / zusätzlich: Slider/Drehknöpfe/Balken/mausnahe Popups/.... ) - Installation: Logikbaustein nach Start Triggern / Startlink auf der Debugseite

                              Kommentar

                              Lädt...
                              X