Ankündigung

Einklappen
Keine Ankündigung bisher.

LinKNX: Tipps, Tricks und Beispiele

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

    #16
    Da ich seit ein paar Tagen ein kleines Skript erfolgreich nutze, um mehr oder weniger automatisch eine linKNX mit mehreren Instanzen zu starten, habe ich es unter Code-Schnipsel gepostet.

    Vielleicht kann es noch jemand gebrauchen und wenn es Verbesserungsvorschläge gibt, immer her damit...

    Kommentar


      #17
      condition ohne value=...

      Letztens kam eine Frage, wie man eine linknx-rule definiert, die auf jede Wertänderung reagiert.

      Die kurze Antwort:
      Code:
          <object id="SomeValue" type="5.xxx" gad="11/5/11" flags="cwts" init="5">Ein beliebiger Beispielwert</object>
          ...
          <rule id="ChangeAtAnyValue">
            <condition type="object" id="SomeValue" trigger="true"/>
            <actionlist type="if-true">
              <action .../>
            </actionlist>
          </rule>
      Die lange Antwort:
      Damit es richtig funktioniert, spielt sowohl das s-Flag in der Objektdefinition wie auch der if-true type der actionlist eine Rolle.
      Das s-Flag bewirkt, dass wirklich jeder Wert, auch ein sich wiederholender gleicher Wert (z.B. der Initialwert 5), der dem Objekt zugewiesen wird, auch wirklich die conditions für dieses Objekt triggert. Ohne s-Flag würden sich wiederholende Werte die condition nicht triggern.

      Eine rule ist nach dem Start von linknx erstmal im Zustand false (ab 0.0.1.31 kann man das in der rule-definition aber übersteuern). Eine condition ohne value wird beim erstbesten trigger auf jeden Fall true, egal durch welchen Wert getriggert wurde. Bis hierhin wäre es noch egal, ob es eine on-true oder eine if-true actionlist gibt, die würden auf jeden Fall ausgeführt werden. Allerdings gibt es ja nichts, was diese Rule wieder auf false setzt, sie bleibt true, weil auch jeder neue Trigger der condition diese nur (wieder) auf true setzen kann. Eine on-true actionlist wird aber nur ausgeführt, wenn die rule von false auf true geht, also einen Zustandswechsel macht. Dies passiert nur beim ersten mal. Die if-true actionlist wird aber immer ausgeführt, wenn die rule vor irgendwas nach true evaluiert, also auch von true nach true. Somit nach jedem triggern.

      Aus dem oben geschriebenen kann man 4 (mehr oder minder Sinnvolle) Fälle ableiten:
      1. Mit s-Flag und if-true
        Egal welcher Wert kommt, action wird immer ausgeführt
      2. ohne s-Flag und if-true
        Nur wenn ein anderer Wert als der aktuelle kommt, wird die action ausgeführt
      3. mit s-Flag und on-true
        Egal welcher Wert kommt, action wird genau einmal beim ersten setzen des Wertes ausgeführt
      4. ohne s-Flag und on-true
        Nur wenn ein anderer Wert als der aktuelle kommt, wird die action genau einmal ausgeführt


      So, hoffe damit habe ich alle Klarheiten beseitigt

      Gruß, Waldemar

      P.S.: Das s-Flag ist gleich dem (veralteten) f-Flag

      P.P.S.: Fragen und Diskussionen bitte in https://knx-user-forum.de/knx-eib-fo...beispiele.html
      OpenKNX www.openknx.de

      Kommentar


        #18
        Grundgerüst eines Config-Files

        Hi,

        hier mal ein Beispiel einer config, ich habe einige Kommentare dran geschrieben, hoffe es hilft beim Einstieg...

        Code:
        <?xml version="1.0" encoding="utf-8"?>
        <!-- Dies soll ein Gerüst für eine Beispielkonfig sein und so den Einstieg in linknx etwas erleichtern -->
        <!-- Das erspart einem aber nicht, das linknx-wiki und die entsprechende Doku zu lesen  -->
        <!-- (http://sourceforge.net/apps/mediawiki/linknx/index.php?title=Main_Page) -->
        <config>
          <!-- XML-Kommentare sind erlaubt und werden ignoriert -->
          <!-- Die config besteht aus 4 Sektionen -->
          <objects>
            <!-- Die objects-section beschreibt alle objekte, die in linknx verwendet werden -->
            <object id="Test" type="8.xxx" gad="11/0/1" init="persist" >Testobjekt</object>
          </objects>
        
          <rules>
            <!-- Die rules-section beschreibt das Verhalten der Logik anhand von Regeln -->
            <rule id="TestRule">
              <condition type="..." ... trigger="true"/>
              <actionlist>
                <action type="..." .../>
              </actionlist>
              <actionlist type="on-false">
                <action type="..." .../>
              </actionlist>
            </rule>
          </rules>
        
          <services>
            <!-- Die services-section definiert alle externen services, die man nutzen will -->
            <smsgateway type="clickatell" user="xyz" pass="xxx" api_id="123456" /> <!-- Verschicken von SMS -->
            <emailserver type="smtp" host="hostname" from="absender" login="username" pass="password"/> <!-- e-mail versand -->
            <xmlserver type="inet" port="1028" /> <!-- Port, unter dem linknx selbst als xml-server erreichbar ist -->
            <knxconnection url="ip:localhost" /> <!-- eibd adresse -->
            <persistence type="file" path="/var/www/linknx/persist" logpath="/var/www/linknx"/> <!-- Pfaddefinitionen für Persistenz- und Logfiles -->
            <exceptiondays> <!-- Feiertage im Jahr, hier im Beispiel fuer Baden-Wuerttemberg -->
              <!-- Neujahr -->
              <date day="1" month="1" />
              <!-- Hl. 3 Könige -->
              <date day="6" month="1" />
              <!-- Tag der Arbeit -->
              <date day="1" month="5" />
              <!-- Tag der Deutschen Einheit -->
              <date day="3" month="10" />
              <!-- Allerheiligen -->
              <date day="1" month="11" />
              <!-- Heiligabend -->
              <date day="24" month="12" />
              <!-- 1. Weihnachtstag -->
              <date day="25" month="12" />
              <!-- 2. Weihnachtstag -->
              <date day="26" month="12" />
        
              <!-- Karfreitag -->
              <date day="29" month="3" year="2013" />
              <!-- Ostermontag -->
              <date day="1" month="4" year="2013" />
              <!-- Christi Himmelfahrt -->
              <date day="9" month="5" year="2013" />
              <!-- Pfingstmontag -->
              <date day="20" month="5" year="2013" />
              <!-- Fronleichnahm -->
              <date day="30" month="5" year="2013" />
        
              <!-- Karfreitag -->
              <date day="18" month="4" year="2014" />
              <!-- Ostermontag -->
              <date day="21" month="4" year="2014" />
              <!-- Christi Himmelfahrt -->
              <date day="29" month="5" year="2014" />
              <!-- Pfingstmontag -->
              <date day="9" month="6" year="2014" />
              <!-- Fronleichnahm -->
              <date day="19" month="6" year="2014" />
        
              <!-- Karfreitag -->
              <date day="3" month="4" year="2015" />
              <!-- Ostermontag -->
              <date day="6" month="4" year="2015" />
              <!-- Christi Himmelfahrt -->
              <date day="14" month="5" year="2015" />
              <!-- Pfingstmontag -->
              <date day="25" month="5" year="2015" />
              <!-- Fronleichnahm -->
              <date day="4" month="6" year="2015" />
            </exceptiondays>
            <location lon="laengengrad" lat="breitengrad"/> <!-- Geolocation für Sonnenauf- und Sonnenuntergangsbestimmung -->
            <ioports>
              <!-- Portdefinitionen fuer den Zugriff auf externe Geraete -->
              <!-- hierbei muss man beachten, dass ein port, der von einem Gerät Daten empfangen soll, mit permanent="true" definiert wird -->
              <!-- wenn linknx nur senden soll, dann reicht auch ein permanent="false" -->
              <ioport id="fhem"   type="tcp" host="127.0.0.1" port="7072" permanent="true"  /> <!-- fhem-Kommandos werden schneller abgearbeitet, wenn man den port mit permanent offen laesst -->
              <ioport id="speech" type="tcp" host="127.0.0.1" port="5678" permanent="false" /> <!-- Senden an Sprachausgabe -->
              <ioport id="lirc"   type="tcp" host="127.0.0.1" port="8765" permanent="true"  /> <!-- Empfang von lirc-codes -->
            </ioports>
          </services>
          <!-- logging in 2 Variationen, die 2. nur, wenn Log4cpp von linknx unterstuetzt wird -->
          <!--<logging format="simple" level="WARN"/>-->
          <logging output="/var/www/linknx/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2"/>
        </config>
        Gruß, Waldemar

        P.S.: Fragen und Diskussionen bitte in https://knx-user-forum.de/knx-eib-fo...beispiele.html
        OpenKNX www.openknx.de

        Kommentar


          #19
          einga.conf -&gt; linknx xml

          Im Moment pflege ich ja meine eibga.conf und versuche, da alles abzuleiten. Aus der ETS exportiere ich diese nicht, geht aber wohl auch.
          Hier ein Script, was mit Angabe der eibga.conf die object id Zeilen aus der linknx.xml erzeugt. Die Ausgabe ist umleitbar (> out.xml).

          Gruß

          Code:
          #!/usr/bin/perl
          
          # packages in ubuntu:
          # libxml-generator-perl
          # libconfig-inifiles-perl
          
          use strict;
          use warnings;
          
          use Data::Dumper;
          use Config::IniFiles;
          use XML::Generator;
          
          sub convert_to_xml
          {
              my ($cfg) = @_;
          
              my @result;
          
              foreach my $section ($cfg->Sections) {
          	my $gad = $section;
          
          	my $text = $cfg->val($section, 'name');
          	my $id = $text;
          	$id =~ tr/[A-Z] -/[a-z]__/;
          
          	my $X = XML::Generator->new();
          	push @result, $X->object({id => $id,
          				  type => $cfg->val($section, 'DPTSubId'),
          				  gad => $gad,
          				  log => 'true',
          				  init => 'request',
          				 }, $text);
              }
              return @result;
          }
          
          sub usage()
          {
              print STDERR <<EOF;
          Usage: $0 ini file
          
          Convert ini-style file given as first parameter and output a XML
          representation of it.
          EOF
          }
          
          if (@ARGV == 0) {
              usage();
              exit(1);
          }
          
          my $config = Config::IniFiles->new(-file => $ARGV[0])
            or die "Failed to read file $ARGV[0]: $!";
          
          # One string entry for each section in input
          my @result = convert_to_xml($config);
          print join("\n", @result), "\n";
          Derzeit zwischen Kistenauspacken und Garten anlegen.
          Baublog im Profil.

          Kommentar


            #20
            255 in % umrechnen

            Hallo zusammen,

            erstmal klasse Thread, ich lerne und lerne

            Meine Frage geht eigentlich mehr in Richtung knxweb - Vlt. sollten wir dafür auch so einen Thread eröffnen- ich versuche es trotzdem mal hier. Wenn nicht gewünscht bitte verschieben.

            Ich bin derzeit dabei meine Dimmaktoren im knxweb abzubilden und möchte aus dem Wert 0-255 vom Aktor natürlich gerne einen Prozentwert machen. Geht die Umrechnung irgendwie in knxweb oder muss ich eine Umweg über linknx und scripting gehen?

            Grüße
            Gunnar

            Kommentar


              #21
              Zitat von greentux Beitrag anzeigen
              Im Moment pflege ich ja meine eibga.conf und versuche, da alles abzuleiten. Aus der ETS exportiere ich diese nicht, geht aber wohl auch.
              Hier ein Script, was mit Angabe der eibga.conf die object id Zeilen aus der linknx.xml erzeugt. Die Ausgabe ist umleitbar (> out.xml).

              Gruß
              Danke dafür!
              Auf dem WireGate benötigt es vorher noch ein:
              Code:
              apt-get install libconfig-inifiles-perl libxml-generator-perl
              Ansonsten ein paar Probleme die man aber bestimmt fixen kann bzw. schnell mit dem Editor hinbekommt:

              Im Netz hab ich die supportet object-types gefunden. Der DPT 9.001 muss also durch 9.xxx ersetzt werden - sonst startet linknx nicht.

              Code:
              1.001 Switch
              3.007 Dimming
              3.008 Blinds
              5.xxx UInt (8bit)
              5.001 Scaling
              5.003 Angle
              6.xxx Signed (8bit)
              7.xxx Uint (16bit)
              8.xxx Signed (16bit)
              9.xxx Value  (floating 16bit)
              10.001 Time
              11.001 Date
              12.xxx Uint (32bit)
              13.xxx Signed (32bit)
              14.xxx Value32
              16.000 String
              20.102 HeatingMode
              Weiterhin nochmal per RegEx prüfen ob man keine Sonderseichen/Umlaute drin hat. Ein "ä" ist unkritisch - ein "ß" bringt linknx zum abkacheln ohne Fehlermeldung.

              Grüße
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                #22
                Also Du willst, das die DPT automatisch so angepasst oder übernommen werden, das sie dieser Tabelle genügen?
                Derzeit zwischen Kistenauspacken und Garten anlegen.
                Baublog im Profil.

                Kommentar


                  #23
                  Ja, weil ich das per Hand machen musste. Ansonsten kachelt linknx beim ersten Start mit einem "unsupported DPT" als letzten Log-Eintrag einfach ab. Bei einem weiteren Start wird dann garnichts mehr ins Log geschrieben.

                  Sonderzeichen bringen linknx aber gleich zum abkacheln ohne Jeglichen Log-Eintrag.

                  Hier ist das Problem reproduzierbar. Vielleicht mag das jemand anderes mal testen?
                  Umgezogen? Ja! ... Fertig? Nein!
                  Baustelle 2.0 !

                  Kommentar


                    #24
                    Zitat von JuMi2006 Beitrag anzeigen
                    Sonderzeichen bringen linknx aber gleich zum abkacheln...
                    Hoi

                    Das kann ich so bestätigen. Wenn ich Webinhalte aus XML in knxweb anzeigen möchte zieht es den Stecker sobalt ein UTF8 Umlaut dabei ist.
                    Grüsse Bodo
                    Fragen gehören ins Forum, und nicht in mein Postfach;
                    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                    Kommentar


                      #25
                      Bezüglich der DPTs hätte ich meinen Beitrag gern editiert, geht leider nicht.

                      Hier der Auszug aus dem Wiki von Linknx:SourceForge.net: Object Definition section - linknx

                      Code:
                      The "type" parameter can be one of
                      1.001: switching (on/off) (EIS1)
                      3.007: dimming (control of dimmer using up/down/stop) (EIS2)
                      3.008: blinds (control of blinds using close/open/stop)
                      5.xxx: 8bit unsigned integer (from 0 to 255) (EIS6)
                      5.001: scaling (from 0 to 100%)
                      5.003: angle (from 0 to 360°)
                      6.xxx: 8bit signed integer (EIS14)
                      7.xxx: 16bit unsigned integer (EIS10)
                      8.xxx: 16bit signed integer
                      9.xxx: 16 bit floating point number (EIS5)
                      10.001: time (EIS3)
                      11.001: date (EIS4)
                      12.xxx: 32bit unsigned integer (EIS11)
                      13.xxx: 32bit signed integer
                      14.xxx: 32 bit IEEE 754 floating point number
                      16.000: string (max 14 ASCII chars restricted to ASCII codes 0..127) (EIS15)
                      16.001: string (max 14 ASCII chars in range 0..255)
                      20.102: heating mode (auto/comfort/standby/night/frost)
                      28.001: variable length string object
                      29.xxx: signed 64bit value
                      Umgezogen? Ja! ... Fertig? Nein!
                      Baustelle 2.0 !

                      Kommentar


                        #26
                        Das Multistart-Skript für linKNX habe ich etwas überarbeitet. Die neue Version ist hier zu finden: https://knx-user-forum.de/287877-post2.html

                        linKNX läuft bei mir mit teilweise sechs Instanzen seit über drei Monaten auf dem Wiregate ohne Probleme.

                        Kommentar


                          #27
                          Szenen speichern als 8Bit und 1-Bit mittels Linknx

                          Weil's an anderer Stelle schon diskutiert wird - hier mal ein Beispiel, wie man Szenen speichern (und verwalten) kann:

                          In Linknx unter rules (die Object Definition habe ich mir mal gespart):

                          Code:
                          <!-- LZ Zentral 1/3/100 -->
                              <rule id="LZZentralAllesAn">
                                <condition type="object" id="1_3_100_LZZentral" value="0" trigger="true" />
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_0_LZRaumpanel" value="0" />
                          		 <action type="set-value" id="1_3_1_LZTS2plusEZ" value="0" />
                          		 <action type="set-value" id="1_3_2_LZKueche" value="0" />
                          		 <action type="set-value" id="1_3_10_LZTagNacht" value="2" />		 
                                </actionlist>
                              </rule>	
                          	
                          	<rule id="LZZentralAllesAus">
                                <condition type="object" id="1_3_100_LZZentral" value="1" trigger="true" />
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_0_LZRaumpanel" value="2" />
                          
                          		 <action type="set-value" id="1_3_2_LZKueche" value="2" />
                          		 <action type="set-value" id="1_3_10_LZTagNacht" value="4" />		 
                                </actionlist>
                              </rule>	
                          	
                              <rule id="LZZentralGuteNacht">
                                <condition type="object" id="1_3_100_LZZentral" value="2" trigger="true" />
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_0_LZRaumpanel" value="8" />
                          
                          		 <action type="set-value" id="1_3_2_LZKueche" value="2" />
                          		 <action type="set-value" id="1_3_10_LZTagNacht" value="1" />		 
                                </actionlist>
                              </rule>	
                          	
                              <rule id="LZZentralWZEZKuecheaus">
                                <condition type="object" id="1_3_100_LZZentral" value="3" trigger="true" />
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_0_LZRaumpanel" value="2" />
                          
                          		 <action type="set-value" id="1_3_2_LZKueche" value="2" />
                           
                                </actionlist>
                              </rule>	
                            
                            <rule id="LZZentralGehen">
                                <condition type="object" id="1_3_100_LZZentral" value="4" trigger="true" />
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_0_LZRaumpanel" value="2" />
                          		 <action type="set-value" id="1_3_2_LZKueche" value="8" />
                          		 
                          		 
                                </actionlist>
                              </rule>	
                          	
                          	
                          	
                          <!-- LZZentral 1-bit>		
                              <rule id="Aufruf_LZ_Zentral_AllesAn">
                                <condition type="or" trigger="true">
                                  <condition type="object" id="1_7_100_LZZentralAllesAn1Bit" value="on" trigger="true" />
                                  <condition type="object" id="1_7_100_LZZentralAllesAn1Bit" value="off" trigger="true"/>
                                </condition>
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_100_LZZentral" value="0" />
                                </actionlist>
                              </rule>
                          
                              <rule id="Aufruf_LZ_Zentral_AllesAus">
                                <condition type="or" trigger="true">
                                  <condition type="object" id="1_7_101_LZZentralAllesAus1Bit" value="on" trigger="true" />
                                  <condition type="object" id="1_7_101_LZZentralAllesAus1Bit" value="off" trigger="true"/>
                                </condition>
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_100_LZZentral" value="1" />
                                </actionlist>
                              </rule>
                          
                              <rule id="Aufruf_LZ_Zentral_GuteNacht">
                                <condition type="or" trigger="true">
                                  <condition type="object" id="1_7_102_LZZentralGuteNacht1Bit" value="on" trigger="true" />
                                  <condition type="object" id="1_7_102_LZZentralGuteNacht1Bit" value="off" trigger="true"/>
                                </condition>
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_100_LZZentral" value="2" />
                                </actionlist>
                              </rule>
                          
                              <rule id="Aufruf_LZ_Zentral_WZEZKuecheaus">
                                <condition type="or" trigger="true">
                                  <condition type="object" id="1_7_103_LZZentralWZEZKuecheaus1Bit" value="on" trigger="true" />
                                  <condition type="object" id="1_7_103_LZZentralWZEZKuecheaus1Bit" value="off" trigger="true"/>
                                </condition>
                                <actionlist type="if-true">
                                   <action type="set-value" id="1_3_100_LZZentral" value="3" />
                                </actionlist>
                              </rule>
                          Bei dem Aufrufen der 8-Bit Werte wird über "if-true" auch bei mehrmaligem Auslösen die Szene ausgeführt. Beim 1-bit Aufruf habe ich die "1" und "0" abgefangen (geht wahrscheinlich auch einfacher).

                          Die Dokumentation mache ich dann über ein Word-Dokument (hier als Ausschnitt angehängt). Da sind alle Szenen (auch die meines Raumpanels und der TS2) mit abgelegt, so dass ich da die Übersicht behalte. Szenen rufe ich bei Bedarf auch kaskadiert auf (also Zentral-Szenen rufen einzelne Szenen der Räume auf).

                          Ich hoffe, das hilft den Anfängern - und die Profis steinigen mich nicht

                          Viele Grüße,

                          Stefan
                          Angehängte Dateien
                          Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                          Kommentar


                            #28
                            Sonnenstandberechnung für Beschattung

                            Code:
                              <rule id="sueden_on">
                               <condition type="timer" trigger="true">
                                <at type="noon" wdays="1234567" offset="-2h" />
                               </condition>
                               <actionlist>
                                <action type="set-value" id="var_sueden" value="1" />
                                <action type="set-value" id="var_osten" value="0" />
                              </actionlist>
                              </rule>
                            
                              <rule id="sueden_off">
                               <condition type="timer" trigger="true">
                                <at type="noon" wdays="1234567" offset="2h" />
                               </condition>
                               <actionlist>
                                <action type="set-value" id="var_sueden" value="0" />
                                <action type="set-value" id="var_westen" value="1" />
                               </actionlist>
                              </rule>
                            In Abhängigkeit der Ausrichtung des Gebäudes läßt sich mit Hilfe eines Lichtsensors die Beschattung steuern.

                            Westen wird bei Sonnenaufgang gesetzt, Osten bei Sonnenuntergand gelöscht.

                            Speichern der Variablen z.B. über GA 12/7
                            CometVisu 0.10.2 (0.11.0 im Test), EIBD auf RaspberryPi A, sowie auf SYNOLOGY DSM 6.2 nativ mit linknx.

                            Kommentar


                              #29
                              LinKNX ist nicht tot

                              Wie bei vielen anderen Nutzern verrichtet auch bei mir LinKNX stabile Dienste im Hintergrund. Die Beispiele im Forum helfen nicht nur bei der Problemlösung, sondern geben auch Inspiration.

                              Darum zur Wiederbelebung des Threads zwei Beispiele zum time-counter. Im Vergleich zu anderen Beispielen hier eine sehr einfache Funktion, welche auch im LinKNX-Wiki sehr gut beschrieben ist. Aber vielleicht bietet es ja jemandem Hilfe bei der Umsetzung anderer Ideen.

                              Beispiel 1) Wenn ich dusche bevor die Rollos hochfahren, soll das Rollo in Lüftungsposition - die musste ich zum Lüften nämlich per Knopfdruck bewegen. Das Licht geht per Bewegungsmelder an, ich möchte nicht, dass bei jeder Bewegung am Morgen die Rollos fahren, darum müssen die Bedingungen Licht an und Rollos unten für mindestens drei Minuten an bleiben...

                              Code:
                              <!--OG Bad: Rollo in Lüftungsposition-->
                              <rule id="BadRolloLueften">
                              	<condition type="time-counter" threshold="3m" reset-delay="1m">
                              		<condition type="and">
                              			<condition type="object" id="og_bad_rückmeldung_höhe" value="255" />
                              			<condition type="object" id="og_db_dusche_e_a_status" trigger="true" value="on" />
                              		</condition>
                              	</condition>
                              	<actionlist>
                              		<action type="set-value" id="og_bad_position" value="150" />
                              	</actionlist>
                              </rule>
                              Beispiel 2) Per iButtons am intelligenten Schlüsselbrett setze ich pro Person eine 1 oder 0 auf der jeweiligen Anwesenheitsadresse. Sind alle Schlüssel für 10 Sekunden weg, wird die Anwesenheit zentral ausgeschaltet. Ist einer der Schlüssel für 5 Sekunden da, wird die Anwesenheit wieder angeschaltet. Die Anwesenheit triggert wiederum Alarmanlage, Anwesenheitssimulation, Heizungs- / Rollosteurung ... aber das sind andere Regeln :-)

                              Code:
                              <rule id="Zentral_Anwesend">
                              	<condition type="time-counter" threshold="10" reset-delay="5">
                              		<condition type="and">
                              			<condition type="object" id="x_anwesend" trigger="true" value="off" />
                              			<condition type="object" id="y_anwesend" trigger="true" value="off" />
                              			<condition type="object" id="z_anwesend" trigger="true" value="off" />
                              		</condition>
                              	</condition>
                              	<actionlist>
                              		<action type="set-value" id="zentral_anwesend" value="off" />
                              	</actionlist>
                              	<actionlist type="on-false">
                              		<action type="set-value" id="zentral_anwesend" value="on" />
                              	</actionlist>
                              </rule>

                              Kommentar


                                #30
                                Alarm Schaltung

                                Hallo zusammen


                                Ich bin im Bereich xml noch ein völliger Anfänger :-( Ich denke es gibt viele Wege wie ich and und und or
                                zusammen hängen kann.

                                Meine Idee ist eine Art Alarmanlage, so möchte ich über den Taster im Zimmer aktivieren. Ich möchte alle BM im Haus zusammen fassen, dass wenn einer der BM in der Nacht anspricht und der Taster im Zimmer auf ein steht, das Licht im Zimmer eingeschalten wird oder evtl. sogar alle 3 sec. ein und wieder aus schalten.

                                Ich habe mal was versucht komme aber nicht richtig weiter. Kann mir evtl. jemand etwas unter die Arme greiffen ;-)

                                 
                                Gruss
                                Reto

                                 
                                 
                                <rule id="Alarm">
                                <condition type="or">
                                <condition type="object" id="BW-Garage" value="1" trigger="true"/>
                                <condition type="object" id="Entre" value="1" trigger="true"/>
                                <condition type="object" id="Keller" value="1" trigger="true"/>
                                </condition>
                                <actionlist type="if-true">
                                <action type="set-value" id="Alarm" value="1"/>
                                </actionlist>
                                </rule>
                                -----------------------------
                                <rule id="Alarm">
                                <condition type="and">
                                <condition type="object" id="Alarm" value="1" trigger="true"/>
                                <condition type="object" id="Taster-Alarm-activ" value="1"/>
                                </condition>
                                <actionlist type="if-true">
                                <action type="set-value" id="Licht-Elter-on" value="1"/>
                                </actionlist>
                                </rule>

                                Kommentar

                                Lädt...
                                X