Ankündigung

Einklappen
Keine Ankündigung bisher.

Fensterkontakte inkl. gekippt (Logik)

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

  • magiczambo
    antwortet
    Ok danke.

    Habe gerade noch ne kleine Blockade:

    Ich brauchte eine Kombination aus einer Schalt GA und einem Temperatur Sensor.

    Hatte mir das so in der Art vorgestellt:

    Code:
    Diverses:
        Dusche_Heizung:
            Schalten:
                type: num
                knx_dpt: 1
                knx_send: 1/1/60
                knx_listen: 1/4/60
                visu_acl: rw
                enforce_updates: yes
                eval: 1 if sh...trigger() == 1 else 0
                eval_trigger:
                  - ..trigger
    
            temp:
                ow_addr: 28.9C37F2040000
                ow_sensor: T
                type: num
                visu: 'yes'
                sqlite: 'yes'
                knx_send: 2/1/11
                knx_reply: 2/1/11
                knx_dpt: 9
                visu_acl: rw
                enforce_updates: yes
            trigger:
                # Wird wahr, wenn die Temperatur über 26 Grad wird und falsch, wenn nicht.
                type: num
                enforce_updates: yes
                eval: 0 if sh...temp() > 26  else 1
                eval_trigger:
                  - ..temp
                  - ..Schalten
    Ich will das quasi so habe, dass wenn ich die Duschheizung einschalte und Temp > x Grad ist, dass die wieder ausgeschalten wird ansonsten eingeschalten bleibt. Zugleich sollte die Heizung ausgeschalten werden wenn die Temperatur im Velauf X Grad übersteigt. Leider habe ich wohl nen Knoten im Kopf.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    natürlich, das geht, dafür sind die Items da. Jedes Item kann eine beliebige Kombi der beschriebenen Attribute haben und die lösen dann auch das beschriebene Verhalten aus. Also in Deinem Beispiel
    Code:
    knx_dpt: 1
    knx_send: 1/1/1
    würde dann eine 1 schreiben, wenn die Temperatur erreicht worden ist. Wobei man in den Fällen, in den shNG.py der Wertelieferant ist, wohl eher
    Code:
    knx_dpt: 1
    knx_status: 1/1/1
    knx_reply: 1/1/1
    nehmen würde, dann kann das Item auch über knx gelesen werden.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Andere Frage. Kann ich in diesem Beispiel aus dem Wiki:
    Code:
     
     # items/sensor.yaml Temperatur:     Trigger:         # Wird wahr, wenn die Temperatur über 20 Grad wird und falsch, wenn nicht.         type: bool         eval: 1 if sh.Temperatur() > 20 else 0         eval_trigger: Temperatur
    dem Trigger auch gleich eine GA mit geben?
    Also das bei erreichen einer Temperatur eine GA geschrieben wird? Oder muss ich das separat machen?

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Msinn : Danke für deinen Beitrag, auch wenn ich schon alles mittels Copy & Paste; Suchen & Ersetzen absolut gemacht habe . Aber für die Zukunft ist das natürlich schicker.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    mumpf Danke, so was passiert wenn man unter Zeitdruck ist...

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Zu beachten ist, dass im eval_trigger wo ja ein sh. vorangestellt werden muss dann 3 Punkte stehen, also sh...v()
    Hi Martin,

    kleiner Tippfehler: Oben muss statt "eval_trigger" ein "eval" stehen, dann stimmt es.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Hier das Beispiel zur Nutzung der relativen Item Adressierung:

    Im ersten Schritt habe ich die Item Struktur etwas angepasst (noch ohne relative Adressierung), so dass der Raum nur noch in einem Item Namen vorkommt:
    Code:
    Test:
        Buero:
            v:
                type: num
                knx_dpt: 1
                knx_cache: 4/1/5
                visu_acl: rw
    
            g:
                type: num
                knx_dpt: 1
                knx_cache: 4/1/6
                visu_acl: rw
    
            zu:
                type: bool
                enforce_updates: yes
                eval: True if sh.Test.Buero.v() == 1 and sh.Test.Buero.g() == 1 else False
                eval_trigger:
                  - Test.Buero.g
                  - Test.Buero.v
    
            gekippt:
                type: bool
                enforce_updates: yes
                eval: True if sh.Test.Buero.g() == 1 and sh.Test.Buero.v() == 0 else False
                eval_trigger:
                  - Test.Buero.g
                  - Test.Buero.v
    
            offen:
                type: bool
                enforce_updates: yes
                eval: True if sh.Test.Buero.g() == 0 and sh.Test.Buero.v() == 0 else False
                eval_trigger:
                  - Test.Buero.g
                  - Test.Buero.v
    Nun können die absoluten Referenzen (Test.Buero) durch die relative Referenz auf ein Geschwister-Item (..sister) angepasst werden Dabei wird aus Test.Buero.v ..v.
    Zu beachten ist, dass im eval wo ja ein sh. vorangestellt werden muss dann 3 Punkte stehen, also sh...v()

    Code:
    Test:
        Buero:
            v:
                type: num
                knx_dpt: 1
                knx_cache: 4/1/5
                visu_acl: rw
    
            g:
                type: num
                knx_dpt: 1
                knx_cache: 4/1/6
                visu_acl: rw
    
            zu:
                type: bool
                enforce_updates: yes
                eval: True if sh...v() == 1 and sh...g() == 1 else False
                eval_trigger:
                  - ..g
                  - ..v
    
            gekippt:
                type: bool
                enforce_updates: yes
                eval: True if sh...g() == 1 and sh...v() == 0 else False
                eval_trigger:
                  - ..g
                  - ..v
    
            offen:
                type: bool
                enforce_updates: yes
                eval: True if sh...g() == 0 and sh...v() == 0 else False
                eval_trigger:
                  - ..g
                  - ..v
    Nun kann der gesamte Block unterhalb von Buero: unter einen anderen Raum kopiert werden, ohne dass nachfolgend noch etwas angepasst werden muss.
    Zuletzt geändert von bmx; 26.10.2017, 11:11.

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Zitat von bmx Beitrag anzeigen

    Ja es gibt eine praktische Sache: Alles markieren, TAB drücken, SHIFT + TAB drücken und alle Tabs sind durch Leerzeichen ersetzt.
    Das bringt aber nur was, wenn die vorher gezeigten Einstellungen gemacht wurden, also der Haken gesetzt ist ?! Was er im Standard nicht ist.
    Zitat von bmx Beitrag anzeigen
    Die Syntax zur yaml 1.1 Spezifikation findest Du hier: http://yaml.org/spec/1.1/#id891751 und das in SmartHomeNG Yaml Dateien keine Leerzeichen erlaubt sind, findest Du hier: https://github.com/smarthomeNG/smart...guration-Files
    Ja danke ich habe schon erwähnt, dass es im Wiki drin steht. Passt für mich.
    Zitat von bmx Beitrag anzeigen
    Der Doppelpunkt, der einem Sektions-/Key-Namen folgt, kann direkt nach diesem Namen folgen. Er muss jedoch von einem Leerzeichen gefolgt werden
    Stimmt das mit dem Leerzeichen? Habe ich meines Erachtens nichts drin bei mir!

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Zitat von magiczambo Beitrag anzeigen
    Den habe ich benutzt Notepad++. Aber jetzt darf ich alles mit Blanks füllen. Naja weiteres Lehrgeld

    Außer ich finde eine Möglichkeit, dass zu konvertieren!
    Ja es gibt eine praktische Sache: Alles markieren, TAB drücken, SHIFT + TAB drücken und alle Tabs sind durch Leerzeichen ersetzt.

    Die Syntax zur yaml 1.1 Spezifikation findest Du hier: http://yaml.org/spec/1.1/#id891751 und das in SmartHomeNG Yaml Dateien keine Leerzeichen erlaubt sind, findest Du hier: https://github.com/smarthomeNG/smart...guration-Files

    Zitat von wiki
    Wichtig ist dabei folgendes:
    • In YAML Dateien sind keine TABs erlaubt. Es müssen Leerzeichen verwendet werden.
    • Im Gegensatz zu Item**.conf** Dateien, bei denen die Struktur durch die Anzahl eckiger Klammern um den Sektions(Item)-Namen bestimmt wird, wird die Struktur einer YAML Datei durch Einrückungen bestimmt.
    • Der Doppelpunkt, der einem Sektions-/Key-Namen folgt, kann direkt nach diesem Namen folgen. Er muss jedoch von einem Leerzeichen gefolgt werden

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Zitat von mumpf Beitrag anzeigen
    Hi,
    also bei mir macht notepad++ nicht nur Syntaxhighlighting
    Grundsätzlich macht Notepad++ Syntaxhighlighting sowie Komfortfunktionen, a la einklappen/aufklappen usw.
    Zitat von mumpf Beitrag anzeigen
    sondern unterstützt Sprachspezifika, in diesem Fall werden aus jedem Tab 4 Spaces gemacht und Du hast keine Tabs im Dokument. Eben nochmal ausprobiert - passt.
    Naja das muss man aber explizit einstellen, Standard ist das nicht. D.h. man muss Wissen, dass man das für yaml ändern muss.

    Hier der Standard:



    Einstellungen_2017-10-26_07-00-13.png

    Und YAML steht auf "Standard verwenden"

    Einstellungen_2017-10-26_06-59-41.png

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    also bei mir macht notepad++ nicht nur Syntaxhighlighting, sondern unterstützt Sprachspezifika, in diesem Fall werden aus jedem Tab 4 Spaces gemacht und Du hast keine Tabs im Dokument. Eben nochmal ausprobiert - passt.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Zitat von mumpf Beitrag anzeigen

    Hi, benutzen heißt nicht nur tippen, sondern von den Features profitieren:
    Ja das Syntaxhighlighting ist an. Ich kann mit den Tools schon umgehen. BTW: Es ist in der Doku erwähnt, dass keine TABs benutzt werden dürfen, also alles gut. Wobei ich mich schon Frage wie sinnvoll ist ein Standard der von Einrückung "lebt" aber keine TABS zulässt. Aber das ist völlig losgelöst von shNG.






    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von magiczambo Beitrag anzeigen
    Den habe ich benutzt Notepad++.
    Hi, benutzen heißt nicht nur tippen, sondern von den Features profitieren:
    notepad-language.PNG

    Ich finde, hier sind alle sehr nett und versuchen Dir zu helfen, Dein Ton wird aber immer rauer... Es sind nicht immer die anderen schuld, der Fehler sitzt auch mal vor dem Bildschirm.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Sipple :

    thx

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Hast Du noch Interesse an einem Beispiel mit relativer Item Adressierung oder möchtest Du weiter schimpfen?

    Einen Kommentar schreiben:

Lädt...
X