Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Verbindung zu Mobotix T25

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Verbindung zu Mobotix T25

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Dreamdancer last edited by

      Hallo zusammen, ich bin neu hier und bei iobroker 🙂
      Zwar nicht grundsätzlich neu im Thema Programmierung, aber doch mit Javascript habe ich ein Script erstellt, welches die Verbindung zwischen iobroker und einer Mobotix T25 realisiert.

      Allerdings war der Weg dorthin etwas holprig, und es würde mich freuen, wenn die Profis mal darüber sehen, und es konstruktive Kritik hagelt.
      Vielleicht kann ja auch ein anderer Neuling darauf aufbauen 🙂

      Die T25 arbeitet mit ihrerseits genannten "Netzwerkmeldungen", das heisst, sie ruft eine URL auf. Sie kann auch HTTPS Seiten aufrufen, ich habe leider keine Möglichkeit gefunden, den iobroker mit HTTPS anzusprechen, und habe daher etwas "Pseudo Sicherheit" mit einer Name/PW abfrage eingebaut, was ungesichert halt eben nur Pseudo ist. Hat hier jemand eine Idee?
      Ich hoffe der Rest meiner Absichten damit wird im Script deutlich, sonst einfach fragen 😉

      Vielen Dank an alle im Vorraus 🙂

      //
      // Mobotix Klingel Script
      // Aufruf: http://192.168.X.X:8087/setBulk?javascript.0.Input_Name=Mobotix&javascript.0.Input_Passwort=XXX8&javascript.0.Input_Klingel_EG=true
      // ACHTUNG: Bei der Aufruf URL ist darauf zu achten, das der Trigger zum Schluss kommt (&javascript.0.Input_Klingel_EG=true), da sonst bei der PW-überprüfung noch keine Daten vorhanden sind!
      //
      
      // Links zu den Datenpunkten
      const Obj1   ="knx.1.Erdgeschoss.Systemobjekte.EG_-_Klingel_Schaltimpuls_1_(Klingel)"; // Link zur Klingel EG Flur
      const Obj2   ="knx.0.Kellergeschoss.Systemobjekte.KG_-_Klingel_Flur_Schaltimpuls_1_(Klingel)"; // Link zur Klingel KG Flur
      const Obj3   ="knx.0.Kellergeschoss.Systemobjekte.KG_-_Klingel_Garage_Schaltimpuls_1_(Klingel)"; // Link zur Klingel KG Garage
      const Obj4   ="knx.2.Dachgeschoss.Systemobjekte.DG_-_Klingel_Schaltimpuls"; // Link zur Klingel DG Flur
      const Obj5   ="javascript.0.Input_Klingel_EG"; // Wurde im EG geklingelt?
      const Obj6   ="javascript.0.Input_Klingel_DG"; // Wurde im DG geklingelt?
      const Obj7   ="javascript.0.Input_Passwort"; // Übertragenes Passwort
      const Obj8   ="javascript.0.Input_Name"; // Übertragener Name
      
      // Benötigte Objekte anlegen, falls nicht vorhanden ...
      if(!existsObject(Obj5) ||!existsObject(Obj6) ||!existsObject(Obj7) ||!existsObject(Obj8)) CreateObjects();
      
      // Benötigte Variablen
      var debug   = true; // Aktiviere Debugging
      var id0     ="XXX"; // Passwort Netzwerkmeldung von Mobotix zum Abgleich
      var id1     ="Mobotix"; // Name Netzwerkmeldung von Mobotix zum Abgleich; 
      var id2     = true; // Rücksetzen aktiv
      
      // Initiierende Trigger ///////
      on({id: 'javascript.0.Input_Klingel_EG', change: "any", val: true}, function (obj) {
          var value       = obj.state.val;
          var Name        = getState(Obj8).val; // Übertragener Name
          var Password    = getState(Obj7).val; // Übertragenes Passwort
          if(value) Klingeln(Name, Password, "EG");
          if(debug && value) log('Trigger Klingel EG aktiviert!');
          if(id2) ClearStates();
      });
      on({id: 'javascript.0.Input_Klingel_DG', change: "any", val: true}, function (obj) {
          var value       = obj.state.val;
          var Name        = getState(Obj8).val; // Übertragener Name
          var Password    = getState(Obj7).val; // Übertragenes Passwort
          if(debug && value) log('Trigger Klingel DG aktiviert!');
          if(value) Klingeln(Name, Password, "DG");
          if(id2) ClearStates();
      });
      //////////////////////////////
      
      // Script starten /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      function Klingeln(Name, Password, Etage) {
          if(debug)log('Skriptanlauf ...');
          // Abfrage Übertragener Name
      
          // Abfrage, ob Eingegebener Name und Passwort korrekt ...
          if( id1 == Name && id0 == Password){
          if(debug)log('Name und PW korrekt');
              if(Etage=="EG"){
              // Klingeln im EG
              if(debug)log('Klingeln im EG');
              //setState(Obj1, true);
              //setState(Obj2, true);
              //setState(Obj3, true);
              }else if(Etage=="DG"){
              if(debug)log('Klingeln im DG');
              // Klingeln im DG
              //setState(Obj4, true);
              }else{
              if(debug)log('Klingeln Gescheitert, keine Etagenangabe!');
              }
          }else{
          if(debug)log('Unerlaubter Zugriff auf das Script der Mobotix Verbindung!');
          if(debug)log('Name SOLL:' + id1 + ' Name IST:' + Name);
          if(debug)log('PW SOLL:' + id0 + ' PW IST:' + Password);
          }
      }
      ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      
      // Variablen am Ende wieder leeren!
      function ClearStates(){
          setStateDelayed(Obj5, false, 2000 );
          setStateDelayed(Obj6, false, 2000 );
          setStateDelayed(Obj7, '', 2000 );
          setStateDelayed(Obj8, '', 2000 );
      }
      
      function CreateObjects(){
          // Eingangsvariablen anlegen, falls nicht vorhanden
          if(!existsObject('javascript.0.Input_Klingel_EG')){
              createState('javascript.0.Input_Klingel_EG', 
                  {
                  def: 'false', 
                  type: 'boolean', 
                  name: 'Eingang von Mobotix, es wurde im EG geklingelt wurde!'
                  }
              );
          }
      
          if(!existsObject('javascript.0.Input_Klingel_DG')){
              createState('javascript.0.Input_Klingel_DG', 
                  {
                  def: 'false', 
                  type: 'boolean', 
                  name: 'Eingang von Mobotix, es wurde im DG geklingelt wurde!'
                  }
              );
          }
      
          if(!existsObject('javascript.0.Input_Name')){
              createState('javascript.0.Input_Name', 
                  {
                  def: 'false', 
                  type: 'string', 
                  name: 'Eingang von Mobotix, Übergabewert Anmeldename!'
                  }
              );
          }
      
          if(!existsObject('javascript.0.Input_Passwort')){
              createState('javascript.0.Input_Passwort', 
                  {
                  def: 'false', 
                  type: 'string', 
                  name: 'Eingang von Mobotix, Übergabewert Anmeldepasswort!'
                  }
              );
          }
      }
      
      1 Reply Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing last edited by

        ich würde die Variablen sprechend benennen, dann ist der Code deutlich einfacher zu lesen und zu verstehen.

        1 Reply Last reply Reply Quote 0
        • D
          Dreamdancer last edited by

          @Dreamdancer sagte in Verbindung zu Mobotix T25:

          Also statt :

          const Obj1 ="knx.1.Erdgeschoss.Systemobjekte.EG_-Klingel_Schaltimpuls_1(Klingel)"; // Link zur Klingel EG Flur

          so :

          const Klingel_Flur_EG ="knx.1.Erdgeschoss.Systemobjekte.EG_-Klingel_Schaltimpuls_1(Klingel)"; // Link zur Klingel EG Flur

          ?

          1 Reply Last reply Reply Quote 0
          • htrecksler
            htrecksler Forum Testing last edited by

            Genau, und ich habe mir die Kameldeklaration angewöhnt.
            Ist aber Geschmackssache...
            Also...

            cLampeWohnen

            Das kleine c sagt mir dann, daß es sich um "const" handelt.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            631
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            2
            4
            555
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo