Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Hilfe beim Erstellen eigener Logiken

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

  • JuMi2006
    antwortet
    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.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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.

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    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

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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.

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    - √ - 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

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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.

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hilfe beim Erstellen eigener Logiken

    wie hast du das widget genau definiert?

    EDIT: hast du bei dem Item das visu Attribut angegeben (visu=yes)?

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • firefox
    hat ein Thema erstellt - √ - Hilfe beim Erstellen eigener Logiken

    - √ - 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?
Lädt...
X