Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Hilfe beim Erstellen eigener Logiken

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

    - √ - Hilfe beim Erstellen eigener Logiken

    Hallo,

    motiviert durch einen anderen Thread versuche ich mir gerade eine eigene RTR widget zu schreiben.
    Die Rückmeldung der Betriebsart kommt über ein 1 byte HVAC Objekt.
    Da ich gerne eine Klartext Meldung haben möchte, versuche ich mir gerade ein String Item anzulegen und über eine Logik mit Text zu befüllen.

    Folgendes hab ich in der item.conf deklariert:

    Code:
    [EG]
        [[Buero]]
             [[[Temperatur]]]
                [[[[modus]]]]
                    type = num
                    knx_dpt = 20
                    knx_init = 5/2/64
    	  [[[[txtmodus]]]]
    		type = str
    Dann eine Logik geschrieben:

    Code:
    #!/usr/bin/env python
    #
    logger.info(hex(sh.EG.Buero.Temperatur.modus()))
    value = sh.EG.Buero.Temperatur.modus()
    if (value == 34) :
    	sh.EG.Buero.Temperatur.txtmodus('Standby')
    	logger.info('Heizungsmodus Buero: Standby')
    elif (value == 33) :
    	sh.EG.Buero.Temperatur.txtmodus('Komfort')
    	logger.info('Heizungsmodus Buero: Komfort')
    elif (value == 36) :
    	sh.EG.Buero.Temperatur.txtmodus('Nachtabsenkung')
    	logger.info('Heizungsmodus Buero: Nacht')
    elif (value == 40) :
        sh.EG.Buero.Temperatur.txtmodus('Frostschutz')
    	logger.info('Heizungsmodus Buero: Frostschutz')
    else :
        logger.error('Fehler Rueckmeldeobjekt Heizung')
    Auszug logic.conf

    Code:
    [rtr_message]
    	filename = rtr_message.py
    	watch_item = EG.Buero.Temperatur.modus()
    Führt aber zu einem Fehler:

    Code:
    2013-08-11 22:06:24,881 SmartHome.py WARNING  Exception: unexpected indent (rtr_message.py, line 16) -- logic.py:generate_bytecode:111
    Irgend etwas mache ich beim Aufruf von txtmodus falsch. Woran liegt das?

    #2
    Hi,

    Zitat von firefox Beitrag anzeigen
    Code:
    2013-08-11 22:06:24,881 SmartHome.py WARNING  Exception: unexpected indent (rtr_message.py, line 16) -- logic.py:generate_bytecode:111
    Irgend etwas mache ich beim Aufruf von txtmodus falsch. Woran liegt das?

    indent steht für Einrückung. Du verwendest für die gleiche Verschachtelungstiefe unterschiedlich viele Leerzeichen/Tabs. Oder Du mischt Tabs und Leerzeichen.

    Ergänzung: Er sagt auch das ist in Zeile 16. Das ist bei dem "logger.info('Heizungsmodus Buero: Frostschutz')"

    Bis bald

    Marcus

    Kommentar


      #3
      Ok, danke für den Denkanstoß. Gelöst.

      Die Werte kommen jetzt soweit ich das beurteilen kann richtig an.

      Code:
      2013-08-11 23:17:59,544 rtr_message  DEBUG    EG.Buero.Temperatur.txtmodus = Standby via Logic None -- item.py:_update:219
      Wenn ich das Item jetzt in der smartVisu mit basic.value abfrage, wird aber nichts angezeigt. Kommt nur ------

      Muss ich dem item noch einen Datentyp verpassen? knx_dpt = 16 hab ich schon versucht, das klappt nicht.

      Kommentar


        #4
        Hilfe beim Erstellen eigener Logiken

        wie hast du das widget genau definiert?

        EDIT: hast du bei dem Item das visu Attribut angegeben (visu=yes)?
        Mit freundlichen Grüßen
        Niko Will

        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

        Kommentar


          #5
          Hmpf, das hatte ich vergessen.
          Alles klar. Funktioniert wunderbar jetzt.

          Ok, vielleicht noch abschließend eine Frage.
          Wie validiert man den Python Code am einfachsten? Dann wären vorgenannte Fragen ja vermeidbar.

          Kommentar


            #6
            - √ - Hilfe beim Erstellen eigener Logiken

            Validieren? Das visu Attribut ist ja nicht Pflicht... ein Validator müsste also irgendwoher erstmal wissen, das du das Item in der Visu verwenden willst. Hier hätte aber das Log von sh.py im Debug mode gereicht. Da wäre nämlich drin gestanden, dass die Visu ein ungültiges Item angefragt hat. So merk ich immer recht schnell, das ich das visu Attribut vergessen habe
            Mit freundlichen Grüßen
            Niko Will

            Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
            - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

            Kommentar


              #7
              ich meinte das vorangegangene problem. Einfach Pyhon Script oder Format Fehler.

              Hier hätte aber das Log von sh.py im Debug mode gereicht. Da wäre nämlich drin gestanden, dass die Visu ein ungültiges Item angefragt hat.
              Edit:
              Ok, jetzt seh ich es auch. Lag wohl an der Uhrzeit.

              Kommentar


                #8
                Ich nutze auf dem Mac z.B. Komodo Edit ... das Stichwort für die Editor-Feature-Suche ist "Syntax-Highlighting".

                Syntax highlighting - Wikipedia, the free encyclopedia
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  ich verwende notepad++. Trotz syntax highlighting sieht man aber die fehler nicht unbedingt.

                  Für mich ist Python neu. Ich wusste z.B. nicht, dass es keine switch - case Anweisung gibt. Das hat das syntax highlighting aber nicht bemängelt. Ebenfalls ist das indent Problem erst klar geworden nachdem ich die die Steuerzeichen eingeschaltet habe.

                  Die Validierung hab ich zwischenzeitlich hinbekommen. Mit EasyEclipse und PyDev geht das, dazu wird halt eine lokale Installation von Python fällig.

                  Danke @all.

                  Kommentar


                    #10
                    Hallo Thomas,

                    Syntax-Higlight langt in der Tat nicht aus um Fehler zu finden.

                    Was mir bei der Entwicklung sehr hilft ist flake8.

                    Code:
                    pip install flake8
                    flake8 logik.py
                    Ich habe es mir in den Editor integriert, so das es jedes mal läuft wenn ich eine py Datei absichere. Siehe:

                    https://knx-user-forum.de/smarthome-...g-mit-vim.html


                    Bis bald

                    Marcus

                    Kommentar


                      #11
                      Also mein Komodo zeigt mir Indents auch ohne irgendwelche Zusatzmodule an ... "check-spelling" haben die meisten die die Syntax-Highlighting haben ja auch mit an Board ... ein vernünftiger Editor sollte für solche Aufgaben schon gewählt werden.
                      Umgezogen? Ja! ... Fertig? Nein!
                      Baustelle 2.0 !

                      Kommentar

                      Lädt...
                      X