Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Verbindung zu Mobotix T25

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    522

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Verbindung zu Mobotix T25

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 2 Kommentatoren 645 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    Dreamdancer
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • htreckslerH Offline
      htreckslerH Offline
      htrecksler
      Forum Testing
      schrieb am zuletzt editiert von
      #2

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

      Gruss Hermann

      ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        Dreamdancer
        schrieb am zuletzt editiert von
        #3

        @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 Antwort Letzte Antwort
        0
        • htreckslerH Offline
          htreckslerH Offline
          htrecksler
          Forum Testing
          schrieb am zuletzt editiert von
          #4

          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.

          Gruss Hermann

          ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          846

          Online

          32.5k

          Benutzer

          81.8k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe