Ankündigung

Einklappen
Keine Ankündigung bisher.

Schaltaktor über linknx auf Wiregate temperaturabhängig steuern

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Schaltaktor über linknx auf Wiregate temperaturabhängig steuern

    Hallo,

    so nun ist es so weit das Wiregate steht bei mir und nun häng ich schon bei der ersten vermutlich "simplen" Logik...
    Problem: ich weiss erst garnicht wie ich anfangen soll... Leider hab ich weder im Forum noch über Google ein passendes Beispiel oder besser noch eine deutsche linknx-Anleitung gefunden.

    Vielleicht könnt ihr mir ja bei meiner ersten kleinen Logik behilflich sein?

    Was ich möchte:
    einen Schaltaktor schalten, wenn die Temperatur eines ans Wiregate angeschlossenen 1-Wire-Fühlers unter eine bestimmte Temperatur gefallen ist

    Zuerst muss ich wohl ein Objekt anlegen und dann die gad(Gruppenadresse des Kanals vom Schaltaktor) definieren
    Code:
    <?xml version="1.0" ?>
    <config>
    
      <objects>
      <!-- temperaturabhaengig schalten -->
        <object id="temp_switch"            gad="x/x/x"  type="1.001">Temperaturabh&auml;gig schalten</object>
      </objects>
    aber dann?
    wie bekomme ich die Temperatur ins linknx und wie muss ich dies in <rule> <condition> <action> definieren?


    PS: Unter "
    Systemstart- und Herunterfahren-Dienste" im Wiregate kann ich sehen das eibd und linknx beim Start gestartet werden, muss also nur die linknx.xml und die TPUART richtig konfiguriert werden und linknx sendet dann auch gleich auf den Bus?

    PPS: ist es im Hinblick auf makkis Andeutungen z.B.
    hier oder hier überhaupt sinnvoll noch auf linknx zu setzten oder sollte ich gleich was "gescheites" nehmen?
    cu Yfkt5A
    DALI(ABB DG/S1.1), KODI Odroid, TrueNAS, Zehnder ComfoAir 200 L Luxe
    microk8s-Cluster: HomeAssistant, MusicAssistant, mosquitto, TVHeadend, jellyfin

    #2
    Guten Abend,

    zu linknx kann ich nichts sagen, da mir unbekannt, werden sich sicher andere dazu melden.

    Zitat von nEiMi Beitrag anzeigen
    PPS: ist es im Hinblick auf makkis Andeutungen z.B. hier oder hier überhaupt sinnvoll noch auf linknx zu setzten oder sollte ich gleich was "gescheites" nehmen?
    Nun, es ist was in Arbeit durch die Community, konkret durch Forenmember die eine Open-Source Logikengine entwickeln. Ebenso soll es eine Visu geben, die unter dem Namen Cometvisu entwickelt wird, mit dem Wiregate als Referenzplattform. Dazu dann jeweils noch Editoren, so dass es eigentlich 4 Projekte sind plus Doku usw. Einen festen Zeitplan gibt es nicht, es ist fertig wenn es fertig ist. Nach meiner Einschätzung wird die Visu eher fertig werden als die Logikengine, aber Zeitplanungen sind schwierig, weil der überwiegende Anteil freiwillig erbracht wird.

    Linknx ist dagegen nun mal vorhanden und verfügbar. Bevor Du also ewig wartest, bis irgendwann dann was neues fertig wird, nimm für bestehende Aufgabenstellungen lieber das bestehende - das gilt aber grundsätzlich für jede Projektierung technischer Systeme.


    LG

    Stefan

    Kommentar


      #3
      Zitat von nEiMi Beitrag anzeigen
      Vielleicht könnt ihr mir ja bei meiner ersten kleinen Logik behilflich sein?

      Was ich möchte:
      einen Schaltaktor schalten, wenn die Temperatur eines ans Wiregate angeschlossenen 1-Wire-Fühlers unter eine bestimmte Temperatur gefallen ist
      Hoi Christian

      Linknx ist was gescheites.
      Nur muss es valides xml sein. Eine Klammer vergessen und es funzt nicht.

      linknx.xml
      Code:
      <?xml version="1.0" ?>
      <config>
        <objects>
        <!-- Temperaturen -->
          <object id="temp_au"             gad="x/x/x"  type="9.xxx" init="persist">Temp. Aussen</object>
      
        <!-- Licht schalten -->
          <object id="schalten_1"          gad="x/x/x"  type="1.001">Schalten</object>
        </objects>
        <rules>
          <rule id="schalten_bei_temp">
            <condition type="time-counter" threshold="3600" reset-delay="1">
              <condition type="object" id="temp_au" op="gt" value="25.0" trigger="true" />
            </condition>
            <actionlist>
              <action type="set-value" id="schalten_1" value="on" />
            </actionlist>
          </rule>
        </rules>
        <services>
          <knxconnection url="ip:x.x.x.x" />
          <xmlserver type="inet" port="1028" />
          <location lon="x.xxxx" lat="xx.xxxx" />
          <persistence type="file" path="/etc/linknx/persist" />
          <smsgateway type="clickatell" user="xxx" pass="xxx" api_id="123456" />
          <exceptiondays>
            <date day="1"  month="1"  /> <!-- Neujahrstag -->
            <date day="2"  month="1"  /> <!-- Berchtoldstag -->
            <date day="1"  month="5"  /> <!-- Tag der Arbeit -->
            <date day="1"  month="8"  /> <!-- Nationalfeiertag Schweiz -->
            <date day="25" month="12" /> <!-- Weihnachtstag -->
            <date day="26" month="12" /> <!-- Stephanstag -->
          </exceptiondays>
        </services>
      </config>
      Bei diesem Code ist "gt" greater than also genau das falsche für Dich.
      Ich muss erst suchen was kleiner gleich heisst, ahh hab's: "lt" less than

      siehe: http://sourceforge.net/apps/mediawik...ion%27s_Syntax

      Und es gibt eine Hysterese, das heisst erst nach 3600 sec. über 25° wird geschaltet.

      Die Gruppenadressen x/x/x musst Du selber wissen bei Dir, einmal vom Temp.-Fühler und einmal vom Schaltaktor.

      mit xmlconnection ist der eibd gemeint, könnte mit localhost funzen???

      Das wars.

      Die linknx muss gestoppt werden und dann wieder gestartet. Mit /etc/init.d/linknx stop und /etc/init.d/linknx stop oder restart
      Und natürlich muss sie die obige linknx.xml finden und abarbeiten.
      Das steht alles im /etc/init.d/linknx
      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


        #4
        Danke für die schnellen Antworten

        @StefanW: da ich das Ganze sehr kurzfristig brauche wirds wohl per linknx realisiert...
        es war mir schon bewusst, dass die Visu und Logikengine von Freiwilligen erstellt wird und daher keine Zusage über den Zeitpunkt der Fertigstellung möglich ist. Meine Frage zielte eher darauf ab, ob die neue Engine dann z.B. auf Perl basiert und es jetzt schon empfehlenswert ist Perl zu verwenden und per Plugin einzubinden.

        @Bodo: ein schwarzer Fleck ist nun schon hell...
        hatte nen Denkfehler und wollte die Temperatur quasi direkt übers WG einbinden, aber man geht hier den Weg übern Bus.
        WG -> eibd -> linknx
        also einfach die Gruppenadresse verwenden die bei "Sensoren / Werte konfigurieren" definiert wurde

        Aber jetzt die Interpretation der Syntax:
        Code:
         <object id="temp_au"             gad="x/x/x"  type="9.xxx" init="persist">Temp. Aussen</object>
        
          <!-- Licht schalten -->
            <object id="schalten_1"          gad="x/x/x"  type="1.001">Schalten</object>
          </objects>
        hier werden wohl id´s mit den Gruppenadressen verknüpft
        für was stehen aber die xxx hinter der 9. bei type?
        Code:
          <rules>
            <rule id="schalten_bei_temp">
              <condition type="time-counter" threshold="300" reset-delay="1">
                <condition type="object" id="temp_au" op="lt" value="25.0" trigger="true" />
              </condition>
        was mir hier noch nicht ganz klar ist:
        wenn hier die, im Wiki sogenannte, Kindbedingung 300 Sekunden lang zutrifft, dann wird der trigger auf true gesetzt?
        für was ist der reset-delay?
        Code:
               <actionlist>
                <action type="set-value" id="schalten_1" value="on" />
              </actionlist>
            </rule>
          </rules>
        hier wird dann wenn die obige Bedingung zutrifft, der wert von "schalten_1" auf "on" gesetzt und da diese oben in Objects mit einer GA verknüpft ist auf den Bus gesendet.

        Muss ich dann eigentlich auch irgendwann mal z.B. per
        Code:
        <actionlist type="on-false">
        wieder auf "off" setzen?


        @OFFTOPIC:
        • für die spätere Beschattung

        woher bekomme ich meine Azimut und Elevation?
        Code:
        <location lon="x.xxxx" lat="xx.xxxx" />
        • Feiertage

        gibts ne Möglichkeit "dynamische Feiertage" wie z.B. Pfingsten oder Ostern zu berechnen?
        Code:
        <exceptiondays>
              <date day="1"  month="1"  /> <!-- Neujahrstag -->
              <date day="2"  month="1"  /> <!-- Berchtoldstag -->
              <date day="1"  month="5"  /> <!-- Tag der Arbeit -->
              <date day="1"  month="8"  /> <!-- Nationalfeiertag Schweiz -->
              <date day="25" month="12" /> <!-- Weihnachtstag -->
              <date day="26" month="12" /> <!-- Stephanstag -->
            </exceptiondays>
        cu Yfkt5A
        DALI(ABB DG/S1.1), KODI Odroid, TrueNAS, Zehnder ComfoAir 200 L Luxe
        microk8s-Cluster: HomeAssistant, MusicAssistant, mosquitto, TVHeadend, jellyfin

        Kommentar


          #5
          Weder Cometvisu (Frontend ECMA aka Javascript, Backends PHP, C) noch Logikengine (Python) haben/werden/sind in Perl.. Aber die Plugins werden deshalb sicher nicht sterben, schon alleine aus Bestandsschutz und weil man damit IMHO manche Dinge trotzdem einfacher und mit weniger tiefen Know-How machen kann..

          Für so komplexe Logiken wie ein Schwellwertschalter aber evtl. auch mal hier gucken

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

          Kommentar


            #6
            Zitat von nEiMi Beitrag anzeigen
            für was stehen aber die xxx hinter der 9. bei type?
            Das ist so definiert, es soll wohl für alle Datentypen 9.bla gelten.
            SourceForge.net: Configuration - linknx
            SourceForge.net: Object Definition Syntax - linknx
            Zitat von nEiMi Beitrag anzeigen
            was mir hier noch nicht ganz klar ist:
            wenn hier die, im Wiki sogenannte, Kindbedingung 300 Sekunden lang zutrifft, dann wird der trigger auf true gesetzt?
            für was ist der reset-delay?
            keine Ahnung, ist copy paste.
            Zitat von nEiMi Beitrag anzeigen
            Muss ich dann eigentlich auch irgendwann mal z.B. per ... wieder auf "off" setzen?
            ja so ist es.
            Zitat von nEiMi Beitrag anzeigen
            woher bekomme ich meine Azimut und Elevation?
            Code:
            <location lon="x.xxxx" lat="xx.xxxx" />
            das stellt linknx zur Verfügung, wenn Du deine Koordinaten eingibst.
            Code:
                <rule id="cur_time_date">
                  <condition type="timer" trigger="true">
                    <every>900</every>
                  </condition>
                  <actionlist>
                    <action type="set-value" id="cur_time" value="now" />
                    <action type="set-value" id="cur_date" value="now" />
                  </actionlist>
                </rule>
            
                <rule id="es_ist_Tag">
                  <condition type="timer" trigger="true">
                    <at type="sunrise" wdays="1234567" />
                  </condition>
                  <actionlist>
                    <action type="set-value" id="tag" value="on" />
                    <action type="set-value" id="led" value="off" />
                    <action type="shell-cmd" cmd="/etc/ow/sendurl.pl Die%20Sonne%20ist%20gerade%20aufgegangen" />
                    <action type="shell-cmd" cmd="/etc/ow/prowl.pl -apikey=xxxxxxxxxxx -event=KNX -notification=Die_Sonne_ist_gerade_aufgegangen" />
                    <action type="shell-cmd" cmd="wget -q http://user:pw@x.x.x.x/admin/cgi-bin/ipc_send?show_msg_box%20Die%20Sonne%20ist%20gerade%20aufgegangen" />
                    <action delay="60" type="shell-cmd" cmd="wget -q http://user:pw@x.x.x.x/admin/cgi-bin/ipc_send?menu_collapse" />
                  </actionlist>
                </rule>
            
                <rule id="es_ist_Nacht">
                  <condition type="timer" trigger="true">
                    <at type="sunset" wdays="1234567" />
                  </condition>
                  <actionlist>
                    <action type="set-value" id="tag" value="off" />
                    <action type="set-value" id="led" value="on" />
                    <action type="shell-cmd" cmd="/etc/ow/sendurl.pl Die%20Sonne%20ist%20gerade%20untergegangen" />
                    <action type="shell-cmd" cmd="/etc/ow/prowl.pl -apikey=xxxxxxx -event=KNX -notification=Die_Sonne_ist_gerade_untergegangen" />
                    <action type="shell-cmd" cmd="wget -q http://user:pw@x.x.x.x/admin/cgi-bin/ipc_send?show_msg_box%20Die%20Sonne%20ist%20gerade%20untergegangen" />
                  </actionlist>
                </rule>
            Zitat von nEiMi Beitrag anzeigen
            gibts ne Möglichkeit "dynamische Feiertage" wie z.B. Pfingsten oder Ostern zu berechnen?
            Keine Ahnung, wenn Du das umsetzt, sag' mir bescheid.
            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


              #7
              Sorry, das ich mich erst jetzt wieder melde -> Stress am Bau

              Letzten Sonntag hab ich das Ganze schon getestet nach etwas Anlaufschwierigkeiten, weil das Script nicht funktionierte weil der Ordner
              Code:
              /etc/linknx/persist
              nicht vorhanden war.
              Für was ist der eigenlich gut?

              Heute hab ich nochmals getestet und etwas an der Zeit justiert(von 300 auf 30) und es läuft nun mit folgendem Script:

              linknx.xml
              Code:
              <?xml version="1.0" ?>
              <config>
                <objects>
                
                <!-- Temperaturen -->
                  <object id="Temperatur_Kaminofen_Wassertasche"             gad="6/3/55"  type="9.xxx" init="persist">Temperatur Kaminofen Wassertasche</object>
              
                <!-- Umwälzpumpe Kaminofen Aus -->
                  <object id="Umwaelzpumpe_Kaminofen_Aus"          gad="6/1/1"  type="1.001">Umwälzpumpe Kaminofen Aus</object>
                </objects>
                
                <rules>
                  <rule id="Umwaelzpumpe_Kaminofen_Aus">
                    <condition type="time-counter" threshold="30" reset-delay="1">
                      <condition type="object" id="Temperatur_Kaminofen_Wassertasche" op="lt" value="65.0" trigger="true" />
                    </condition>
                    <actionlist>
                      <action type="set-value" id="Umwaelzpumpe_Kaminofen_Aus" value="on" />
                    </actionlist>
                    <actionlist type="on-false">
                      <action type="set-value" id="Umwaelzpumpe_Kaminofen_Aus" value="off" />
                  </actionlist>
                  </rule>
                </rules>
                
                <services>
                  <knxconnection url="ip:localhost" />
                  <xmlserver type="inet" port="1028" />
                  <location lon="12.0468" lat="48.4723" />
                  <persistence type="file" path="/etc/linknx/persist" />
                  <smsgateway type="clickatell" user="xxx" pass="xxx" api_id="123456" />
                  <exceptiondays>
                    <date day="1"  month="1"  /> <!-- Neujahrstag -->
                    <date day="2"  month="1"  /> <!-- Berchtoldstag -->
                    <date day="1"  month="5"  /> <!-- Tag der Arbeit -->
                    <date day="1"  month="8"  /> <!-- Nationalfeiertag Schweiz -->
                    <date day="25" month="12" /> <!-- Weihnachtstag -->
                    <date day="26" month="12" /> <!-- Stephanstag -->
                  </exceptiondays>
                </services>
              </config>
              Vielleicht noch ein Zusatz:
              Der Schaltaktor ist auf Öffner parametriert, quasi als Sicherheitsfunktion falls die Logik ausfällt läuft die Pumpe ständig.

              Verbesserungsvorschläge sind willkommen.
              cu Yfkt5A
              DALI(ABB DG/S1.1), KODI Odroid, TrueNAS, Zehnder ComfoAir 200 L Luxe
              microk8s-Cluster: HomeAssistant, MusicAssistant, mosquitto, TVHeadend, jellyfin

              Kommentar


                #8
                Zitat von nEiMi Beitrag anzeigen
                ... weil der Ordner
                Code:
                /etc/linknx/persist
                nicht vorhanden war.
                Für was ist der eigenlich gut?
                Hoi Christian

                Der Ordner beherbergt die Zustände der Variablen die den Zusatz init="persist" haben.
                Wenn linknx neu startet liest es einfach diese gespeicherten Daten aus, anstatt den BUS totzufragen.

                Manche Werte kommen auch erst nach einer längeren Zeit vom Bus.
                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

                Lädt...
                X