Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Projekt] Alarmanlage mit mehreren Alarmstufen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Projekt] Alarmanlage mit mehreren Alarmstufen

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User last edited by Bluefox

      Ich hatte kurze Zeit Loxone im Einsatz bis ich vor kurzem auf iobroker gewechselt bin.

      Da mir die Loxone App recht gut gefallen hat hab ich mal versucht die Funktionen und die Anzeige der Alarmanlage nachzubilden.

      Dabei ist folgendes entstanden kleines Projekt was ich hier gerne teilen möchte.

      Es sind 6 Alarmierungsstufen vorhanden.

      Jede Stufe kann verzögert ausgelöst werden.

      Es lassen sich beliebig viele Sensoren in Gruppen zusammenfassen.

      Sie ist über Enums(Funktion) möglich.

      Über Profile lassen sich beliebige Sensorengruppen mit Alarmierungsstufen inkl Verzögerungen kombinieren.

      (Das auswerten der Alarme ist nicht enthalten, es kann einfach anhand der entsprechenden States z.B. eine Sirene aktiviert oder eine Nachricht verschickt werden)

      Die Anzeige ist mit Hilfe des Material Style von Uhula.

      Dies ist mein erstes Projekt mit iobroker.

      Ich bin daher froh über Feedback und Ideen zur Verbesserung.

      Demnächst sollen folgende Funktionen hinzukommen:

      • Verzögerte Aktivierung

      • Stiller Modus //erledigt

      • Automatische Aktivierung beim Verlassen //erledigt

      • Pineingabe zur Deaktivierung

      • Prüfung aller Sensoren beim Aktivieren

      Mobil sieht die aktuelle Version so aus:
      2986_screenshot_mobil.png

      Dazu werden ein paar States benötigt:

      //Input
      createState('alarm.in.enable', {
          read: true, 
          write: true, 
          desc: "Is used to arm the system, but cannot be used to disarm it.", 
          type: "string"
      });
      createState('alarm.in.disable', {
          read: true, 
          write: true, 
          desc: "Turns off the activated outputs and disarms the alarm system.", 
          type: "boolean"
      });
      createState('alarm.in.stop', {
          read: true, 
          write: true, 
          desc: "Can be used to stop the alarm.", 
          type: "boolean"
      });
      
      //Output
      createState('alarm.out.state', 0, {
          read: true, 
          write: false, 
          desc: "Returns the current state of the system,", 
          type: "number", 
          min:  '0',
          max:  '3',
          states: '0:Disabled;1:Armed;2:Alarm triggered',
          def: 0
      });
      createState('alarm.out.profile',  {
          read: true, 
          write: false, 
          desc: "Name of current profile", 
          type: "string"
      });
      createState('alarm.out.alarm', {
          read: true, 
          write: false, 
          desc: "Alarm", 
          type: "boolean"
      });
      createState('alarm.out.alarm_silent', {
          read: true, 
          write: false, 
          desc: "Silent alarm", 
          type: "boolean"
      });
      createState('alarm.out.alarm_sound', {
          read: true, 
          write: false, 
          desc: "Sound alarm", 
          type: "boolean"
      });
      createState('alarm.out.alarm_strobe', {
          read: true, 
          write: false, 
          desc: "Strobe alarm", 
          type: "boolean"
      });
      createState('alarm.out.alarm_intern', {
          read: true, 
          write: false, 
          desc: "Internal alarm", 
          type: "boolean"
      });
      createState('alarm.out.alarm_extern', {
          read: true, 
          write: false, 
          desc: "External alarm", 
          type: "boolean"
      });
      createState('alarm.out.alarm_mail', {
          read: true, 
          write: false, 
          desc: "Mail alarm", 
          type: "boolean"
      });
      createState('alarm.out.log', {
          read: true, 
          write: false, 
          desc: "List with last sensors.", 
          type: "string"
      });
      createState('alarm.out.last_sensor', {
          read: true, 
          write: false, 
          desc: "Tells you which sensor has been activated. The output gives the room, name, date and time.", 
          type: "string"
      });
      

      Und die eigentliche Logik befindet sich hier:

      /* 
       
      multi channel burglar alarm - v 0.01
      
      features:
      - six different alarm channels
      - delayed alarm action
      - delayed sensor check
      - alarmlog
      - define settings as profil
      
      changelog:
       29.09.2017 initial version
       01.10.2017 restructered with revealing module pattern 
       03.10.2017 profiles added for alarm channels and sensor groups
       
      */
      
      var ALARM = (function () {
          
          //Settings
          var instance = 'javascript.0.';
          var maxLogEntries = 5;
          
          //Internal states
          var enable = false;
          var state = 0;
          var alarm = false;
          var alarmDelay;
          var alarmTimer = {};
          var alarmLog = [];
          var sensorDelay;
          var sensorTimer = {};
          
          //Sensors
          var selFacade = $('state[state.id=javascript.0.*](functions=facade)');
          selFacade.on(function(obj) {
              _checkSensor(obj,'facade');
          });
          var selMotion = $('state[state.id=javascript.0.*](functions=motion)');
          selMotion.on(function(obj) {
              _checkSensor(obj,'motion');
          });
          
          function _checkSensor(obj, group){
              if(sensorDelay[group] === 0){
                  _check(obj);
              }else if(sensorDelay[group] > 0){
                  setTimeout(_check,(sensorDelay[group]*1000),obj);
              }
              log('checkSensor group:'+group);
          }
          
          function _loadSettings(profile){
              switch(profile) {
                  case 'silent':
                      sensorDelay = {motion:0,facade:0};
                      alarmDelay = {silent:0};
                      break;
                  case 'night':
                      sensorDelay = {facade:0};
                      alarmDelay = {silent:0,intern:60,extern:60};
                      break;
                  case 'full':
                      sensorDelay = {motion:0,facade:0};
                      alarmDelay = {silent:0,sound:30,strobe:30,intern:60,extern:60,mail:120};
                      break;
                  case 'presence':
                      sensorDelay = {motion:0,facade:0};
                      alarmDelay = {silent:0,sound:30,strobe:30,intern:60,extern:60,mail:120};
                      break;
                  case 'auto':
                      sensorDelay = {motion:0,facade:0};
                      alarmDelay = {silent:0,sound:30,strobe:30,intern:60,extern:60,mail:120};
                      break;
                  default:
                      profile = 'default';
                      sensorDelay = {motion:0,facade:0};
                      alarmDelay = {silent:0,sound:30,strobe:30,intern:60,extern:60,mail:120};
              }
              setState(instance+'alarm.out.profile', profile, true);
              log('loadSettings profile:'+profile);
          }
          function _enable(profil){
              enable = true;
              state = 1;
              _resetAlarm();
              _loadSettings(profil);
              log('enable');
          }
          function _disable(){
              enable = false;
              state = 0;
              _resetAlarm();
              _resetAlarmTimer();
              log('disable');
          }
          function _stop(){
              state = 1;
              _resetAlarm();
              log('stop');
          }
          function _resetAlarmTimer(){
              for (var elem in alarmTimer) {
                  clearTimeout(alarmTimer[elem]);
                  alarmTimer[elem] = null;
              }
              log('resetAlarmTimer');
          }
          function _resetAlarm(){
              alarm = false;
              setState(instance+'alarm.out.state', state, true);
              setState(instance+'alarm.out.alarm', false, true);
              setState(instance+'alarm.out.alarm_silent', false, true);
              setState(instance+'alarm.out.alarm_sound', false, true);
              setState(instance+'alarm.out.alarm_strobe', false, true);
              setState(instance+'alarm.out.alarm_intern', false, true);
              setState(instance+'alarm.out.alarm_extern', false, true);
              setState(instance+'alarm.out.alarm_mail', false, true);
              _resetAlarmTimer();
              log('resetAlarm state:'+state);
          }
          function _startAlarm(elem){
              alarm = true;
              setState(instance+'alarm.out.alarm_'+elem, true, true);
              setState(instance+'alarm.out.state', 3, true);
              log('startAlarm elem:'+elem);
          }
          function _check(obj){
              if(obj.state.val && enable){
                  for (var elem in alarmDelay) {
                      if(alarmDelay[elem] === 0){
                          _startAlarm(elem);
                      } else if(!alarmTimer[elem]){
                              alarmTimer[elem] = setTimeout(_startAlarm,(alarmDelay[elem]*1000),elem);
                      }
                      log('startAlarms elem'+elem+':'+alarmDelay[elem]);
                  }
                  _logSensor(obj);
                  log('alarm triggered by sensor '+obj.common.name);
              }
              log('check obj:'+obj.common.name);
          }
          function _logSensor(obj){
              var time = (new Date()).toLocaleDateString()+' '+(new Date()).toLocaleTimeString();
              var sensor = obj.common.name;
              var room = getObject(obj.id, 'rooms').enumNames[0];
              alarmLog.push(time+' '+sensor+' '+room);
              alarmLog.splice(maxLogEntries);
              setState(instance+'alarm.out.log', alarmLog.join('<br>'), true);
              setState(instance+'alarm.out.last_sensor', time+' '+sensor+' '+room, true);
          }
          
          _loadSettings();
          
          return {
              enable: _enable,
              disable: _disable,
              stop: _stop
          };
      
      })();
      
      on({id:'javascript.0.alarm.in.enable', change:'any'}, function(obj){
          ALARM.enable(obj.state.val);
          log('on: in.enable val:'+obj.state.val);
      });
      on({id:'javascript.0.alarm.in.disable', change:'any'}, function(obj){
          ALARM.disable();
          log('on: in.disable');
      });
      on({id:'javascript.0.alarm.in.stop', change:'any'}, function(obj){
          ALARM.stop();
          log('on: in.stop');
      });
      on('javascript.0.presence', function(obj){
          var state = getState('javascript.0.alarm.out.state').val;
          var profile = getState('javascript.0.alarm.out.profile').val;
          if(profile == 'auto'){
              if(obj.state.val && state > 0){
                  setState('javascript.0.alarm.in.disable', true, true);
              }else{
                  setState('javascript.0.alarm.in.enable', 'auto', true);
              }
          }
      });
      

      Um auf die einzelnen Alarme zu reagieren habe ich mir ein weiteres Skript angelegt.

      Die Alarme könne aber auch in jedem beliebigen Skript abgefragt werden.

      on('javascript.0.alarm.out.alarm_mail', function(obj){
          var sensor = getState('javascript.0.alarm.out.last_sensor');
          sendTo('telegram.0', 'alarm triggered by '+sensor);
      });
      
      on('javascript.0.alarm.out.alarm_sound', function(obj){
          setState('zwave.0.NODE1.SWITCH_BINARY.Switch_1', obj.state.val);
          if(obj.state.val){
              setTimeout(function(){setState('zwave.0.NODE1.SWITCH_BINARY.Switch_1', false)},120*1000);
          }
          log('sirene state:'+obj.state.val);
      });
      
      on('javascript.0.alarm.out.alarm_strobe', function(obj){
          $('state[state.id=zwave.0.*](functions=light)').each(function(id,i) {
              setState(id,obj.state.val);
          });
          log('strobe state:'+obj.state.val);
      });
      

      Und zu guter Letzt noch der exportierte card View:

      {
        "settings": {
          "style": {
            "background_class": "",
            "color": "rgb(255,255,255)",
            "background-color": ""
          },
          "theme": "redmond",
          "sizex": "",
          "sizey": "",
          "gridSize": "8",
          "useAsDefault": false,
          "snapType": 2,
          "class": ""
        },
        "widgets": {
          "e00001": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": true,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "html": "Alarmanlage",
              "class": "mdui-title"
            },
            "style": {
              "left": "8px",
              "top": "8px",
              "width": "auto",
              "height": "auto",
              "z-index": 2
            },
            "widgetSet": "basic"
          },
          "e00002": {
            "tpl": "tplStatefulImage8",
            "data": {
              "oid": "javascript.0.alarm.out.state",
              "g_fixed": false,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "count": "3",
              "src_0": "/vis.0/main/disabled.png",
              "src_1": "/vis.0/main/enabled.png",
              "src_2": "/vis.0/main/enabled.png",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "src_3": "/vis.0/main/alarm.png"
            },
            "style": {
              "left": "calc((100% - 200px)/2)",
              "top": "65px",
              "width": "200px",
              "height": "200px",
              "z-index": "3"
            },
            "widgetSet": "basic"
          },
          "e00003": {
            "tpl": "tplJquiButtonState",
            "data": {
              "oid": "javascript.0.alarm.in.enable",
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": true,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "buttontext": "Silent",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "class": "mdui-flatbutton mdui-grey-bg mdui-white",
              "value": "silent",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "16px",
              "top": "376px",
              "z-index": "1",
              "width": "calc(25% - 13px)",
              "height": "50px",
              "border-width": "2px",
              "border-color": "red",
              "border-style": "solid",
              "opacity": ""
            },
            "widgetSet": "jqui"
          },
          "e00004": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": true,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "html": "Alarm log:",
              "class": "mdui-label",
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide"
            },
            "style": {
              "left": "16px",
              "top": "432px",
              "width": "auto",
              "height": "auto",
              "z-index": "2"
            },
            "widgetSet": "basic"
          },
          "e00005": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": true,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": true,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "html": "{javascript.0.alarm.out.log}",
              "class": "mdui-value"
            },
            "style": {
              "left": "16px",
              "top": "448px",
              "width": "calc(100% - 32px)",
              "height": "100px",
              "z-index": "2",
              "opacity": ""
            },
            "widgetSet": "basic"
          },
          "e00006": {
            "tpl": "tplJquiButtonState",
            "data": {
              "oid": "javascript.0.alarm.in.stop",
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": true,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "3",
              "visibility-groups-action": "hide",
              "buttontext": "Alarm quittieren",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "class": "mdui-flatbutton mdui-grey-bg mdui-white",
              "value": "true",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "16px",
              "top": "321px",
              "z-index": "2",
              "width": "calc(100% - 32px)",
              "height": "50px",
              "border-width": "2px",
              "border-color": "red",
              "border-style": "solid"
            },
            "widgetSet": "jqui"
          },
          "e00007": {
            "tpl": "tplJquiButtonState",
            "data": {
              "oid": "javascript.0.alarm.in.disable",
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": true,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": ">",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "buttontext": "Deaktivieren",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "class": "mdui-flatbutton mdui-grey-bg mdui-white",
              "value": "true",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "16px",
              "top": "376px",
              "z-index": "3",
              "width": "calc(100% - 32px)",
              "height": "50px",
              "border-width": "2px",
              "border-color": "red",
              "border-style": "solid",
              "opacity": ""
            },
            "widgetSet": "jqui"
          },
          "e00008": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": true,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": ">",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "html": "Profile <b>{javascript.0.alarm.out.profile}</b> is active",
              "class": "mdui-label",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "16px",
              "top": "288px",
              "width": "calc(100% - 32px)",
              "height": "auto",
              "z-index": "2",
              "text-align": "center"
            },
            "widgetSet": "basic"
          },
          "e00009": {
            "tpl": "tplJquiButtonState",
            "data": {
              "oid": "javascript.0.alarm.in.enable",
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": true,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "buttontext": "Night",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "class": "mdui-flatbutton mdui-grey-bg mdui-white",
              "value": "night",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "calc(25% + 10px)",
              "top": "376px",
              "z-index": "1",
              "width": "calc(25% - 13px)",
              "height": "50px",
              "border-width": "2px",
              "border-color": "red",
              "border-style": "solid",
              "opacity": ""
            },
            "widgetSet": "jqui"
          },
          "e00010": {
            "tpl": "tplJquiButtonState",
            "data": {
              "oid": "javascript.0.alarm.in.enable",
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": true,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "buttontext": "Full",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "class": "mdui-flatbutton mdui-grey-bg mdui-white",
              "value": "full",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "calc(50% + 4px)",
              "top": "376px",
              "z-index": "1",
              "width": "calc(25% - 13px)",
              "height": "50px",
              "border-width": "2px",
              "border-color": "red",
              "border-style": "solid",
              "opacity": ""
            },
            "widgetSet": "jqui"
          },
          "e00011": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": true,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "html": "DISABLED",
              "class": "mdui-value",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "16px",
              "top": "136px",
              "width": "calc(100% - 32px)",
              "height": "auto",
              "z-index": "4",
              "text-align": "center"
            },
            "widgetSet": "basic"
          },
          "e00012": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": true,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "html": "Choose profile for activation:",
              "class": "mdui-label",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "16px",
              "top": "353px",
              "width": "calc(100% - 32px)",
              "height": "auto",
              "z-index": "2",
              "text-align": "left"
            },
            "widgetSet": "basic"
          },
          "e00013": {
            "tpl": "tplJquiButtonState",
            "data": {
              "oid": "javascript.0.alarm.in.enable",
              "g_fixed": true,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": true,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "0",
              "visibility-groups-action": "hide",
              "buttontext": "Presence",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "class": "mdui-flatbutton mdui-grey-bg mdui-white",
              "value": "presence",
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "calc(75% - 2px)",
              "top": "376px",
              "z-index": "1",
              "width": "calc(25% - 13px)",
              "height": "50px",
              "border-width": "2px",
              "border-color": "red",
              "border-style": "solid",
              "opacity": ""
            },
            "widgetSet": "jqui"
          },
          "e00014": {
            "tpl": "tplShapes",
            "data": {
              "g_fixed": false,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "3",
              "visibility-groups-action": "hide",
              "svgType": "circle",
              "strokeColor": "",
              "fill": "#E24D4D",
              "strokeWidth": "5",
              "scaleWidth": "1",
              "scaleHeight": "1",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "calc((100% - 250px)/2)",
              "top": "30px",
              "width": "250px",
              "height": "250px",
              "z-index": "2"
            },
            "widgetSet": "basic"
          },
          "e00015": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": false,
              "g_visibility": true,
              "g_css_font_text": false,
              "g_css_background": true,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "visibility-cond": "==",
              "visibility-val": "3",
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "visibility-oid": "javascript.0.alarm.out.state"
            },
            "style": {
              "left": "0px",
              "top": "0px",
              "width": "100%",
              "height": "100%",
              "z-index": "1",
              "background-color": "#6B2828"
            },
            "widgetSet": "basic"
          }
        },
        "name": "cardAlarm",
        "filterList": []
      }
      
      1 Reply Last reply Reply Quote 0
      • T
        tempestas last edited by

        Sieht sehr gut aus, gefällt

        1 Reply Last reply Reply Quote 0
        • Meistertr
          Meistertr Developer last edited by

          Hi, habe es gerade getestet, in dem script ist ein fehler function diable() gibt es nicht

          habe den view noch etwas angepasst, damit er sich automatisch der größe anpasst

          ! ````
          {
          "settings": {
          "style": {
          "background_class": ""
          },
          "theme": "redmond",
          "sizex": "",
          "sizey": "",
          "gridSize": "8",
          "useAsDefault": false,
          "snapType": 2,
          "class": ""
          },
          "widgets": {
          "e00001": {
          "tpl": "tplHtml",
          "data": {
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "refreshInterval": "0",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "html": "Alarmanlage",
          "class": "mdui-title"
          },
          "style": {
          "left": "8px",
          "top": "8px",
          "width": "198px",
          "height": "auto",
          "z-index": 2
          },
          "widgetSet": "basic"
          },
          "e00002": {
          "tpl": "tplStatefulImage8",
          "data": {
          "oid": "javascript.0.alarm.out.state",
          "g_fixed": false,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "refreshInterval": "0",
          "count": "3",
          "src_0": "/vis.0/main/disabled.png",
          "src_1": "/vis.0/main/enabled.png",
          "src_2": "/vis.0/main/enabled.png",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "src_3": "/vis.0/main/alarm.png"
          },
          "style": {
          "left": "calc((100% - 200px)/2)",
          "top": "50px",
          "width": "200px",
          "height": "200px",
          "z-index": "3"
          },
          "widgetSet": "basic"
          },
          "e00003": {
          "tpl": "tplHtml",
          "data": {
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "refreshInterval": "0",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "html": "Bewegungsmelder",
          "class": "mdui-label"
          },
          "style": {
          "left": "16px",
          "top": "408px",
          "width": "auto",
          "height": "auto",
          "z-index": "2"
          },
          "widgetSet": "basic"
          },
          "e00004": {
          "tpl": "tplJquiButtonState",
          "data": {
          "oid": "javascript.0.alarm.in.enable",
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": true,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "buttontext": "{sensor:javascript.0.alarm.enable;(sensor==="true") ? "Deaktivieren" : "Aktivieren"}",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "class": "mdui-flatbutton mdui-grey-bg mdui-white",
          "value": "true"
          },
          "style": {
          "left": "16px",
          "top": "350px",
          "z-index": "3",
          "width": "calc(100% - 32px)",
          "height": "50px",
          "border-width": "2px",
          "border-color": "red",
          "border-style": "solid",
          "opacity": ""
          },
          "widgetSet": "jqui"
          },
          "e00005": {
          "tpl": "tplJquiButtonState",
          "data": {
          "oid": "javascript.0.alarm.in.no_motion",
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": true,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "buttontext": "",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "class": "mdui-flatbutton",
          "value": "true"
          },
          "style": {
          "left": "calc(100% - 76px)",
          "top": "408px",
          "z-index": "3",
          "width": "60px",
          "height": "32px",
          "border-width": "2px",
          "border-color": "red",
          "border-style": "solid"
          },
          "widgetSet": "jqui"
          },
          "e00006": {
          "tpl": "tplHtml",
          "data": {
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "refreshInterval": "0",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "html": "Letzter Sensor:",
          "class": "mdui-label"
          },
          "style": {
          "left": "16px",
          "top": "432px",
          "width": "118px",
          "height": "16px",
          "z-index": "2"
          },
          "widgetSet": "basic"
          },
          "e00007": {
          "tpl": "tplHtml",
          "data": {
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "refreshInterval": "0",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "html": "{javascript.0.alarm.out.text}",
          "class": "mdui-value"
          },
          "style": {
          "left": "16px",
          "top": "448px",
          "width": "calc(100% - 32px)",
          "height": "46px",
          "z-index": "2"
          },
          "widgetSet": "basic"
          },
          "e00008": {
          "tpl": "tplJquiButtonState",
          "data": {
          "oid": "javascript.0.alarm.in.stop",
          "g_fixed": true,
          "g_visibility": true,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": true,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": "3",
          "visibility-groups-action": "hide",
          "buttontext": "Alarm quittieren",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "class": "mdui-flatbutton mdui-grey-bg mdui-white",
          "value": "true",
          "visibility-oid": "javascript.0.alarm.out.state"
          },
          "style": {
          "left": "16px",
          "top": "295px",
          "z-index": "2",
          "width": "calc(100% - 32px)",
          "height": "50px",
          "border-width": "2px",
          "border-color": "red",
          "border-style": "solid"
          },
          "widgetSet": "jqui"
          },
          "e00009": {
          "tpl": "tplValueBoolCheckbox",
          "data": {
          "oid": "javascript.0.alarm.no_motion",
          "g_fixed": true,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": false,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false,
          "html_append": "<label for="&quot;w00607_checkbox&quot;"><label>",
          "class": "mdui-switch",
          "html": "Switches Beispiele",
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide"
          },
          "style": {
          "left": "calc(100% - 70px)",
          "top": "408px",
          "width": "48px",
          "height": "30px",
          "z-index": "2"
          },
          "widgetSet": "basic"
          },
          "e00010": {
          "tpl": "tplHtml",
          "data": {
          "g_fixed": false,
          "g_visibility": false,
          "g_css_font_text": false,
          "g_css_background": true,
          "g_css_shadow_padding": false,
          "g_css_border": false,
          "g_gestures": false,
          "g_signals": false,
          "visibility-cond": "==",
          "visibility-val": 1,
          "visibility-groups-action": "hide",
          "refreshInterval": "0",
          "signals-cond-0": "==",
          "signals-val-0": true,
          "signals-icon-0": "/vis/signals/lowbattery.png",
          "signals-icon-size-0": 0,
          "signals-blink-0": false,
          "signals-horz-0": 0,
          "signals-vert-0": 0,
          "signals-hide-edit-0": false,
          "signals-cond-1": "==",
          "signals-val-1": true,
          "signals-icon-1": "/vis/signals/lowbattery.png",
          "signals-icon-size-1": 0,
          "signals-blink-1": false,
          "signals-horz-1": 0,
          "signals-vert-1": 0,
          "signals-hide-edit-1": false,
          "signals-cond-2": "==",
          "signals-val-2": true,
          "signals-icon-2": "/vis/signals/lowbattery.png",
          "signals-icon-size-2": 0,
          "signals-blink-2": false,
          "signals-horz-2": 0,
          "signals-vert-2": 0,
          "signals-hide-edit-2": false
          },
          "style": {
          "left": "8px",
          "top": "40px",
          "width": "calc(100% - 16px)",
          "height": "218px",
          "z-index": "1",
          "background-color": "{sensor:javascript.0.alarm.out.state;(sensor==3) ? "#F44336" : ""}"
          },
          "widgetSet": "basic"
          }
          },
          "name": "card_alarm",
          "filterList": []
          }</label></label>

          
          könntest du auch noch die Bilder hochladen?
          1 Reply Last reply Reply Quote 0
          • ?
            A Former User last edited by

            Hi,

            die drei Bilder habe ich oben hinzugefügt.

            Wo soll der Fehler im Skript mit der fehlenden Funktion diable genau sein?

            1 Reply Last reply Reply Quote 0
            • Uhula
              Uhula last edited by

              Sehr gute Basis für eine eigene Erweiterung. Ich weiß nicht, ob die Scripte automatisch einen eigenen Namespace erhalten, würde aber trotzdem alle Variablen und Funktionen des Scripts trotzdem in einem eigenen Namespace/Object kapseln. Dieses kann hilfreich sein, um die Gruppierung zu erkennen und/oder Namenskonflikte zu verhindern. Es gibt n Möglichkeiten einen solchen Namensraum zu erzeugen, ein Beispiel, bei dem auch lokale Funktionen / Variable möglich sind (Module Pattern):

              ! var ALARM = (function () { // ----- // Variable // ----- ! var instance = 'javascript.0.'; var selWindow = $('state[state.id=javascript.0.*](functions=window)'); var isSubtreeModified = false; var DatetimeInterval = false; ! ... ! // ----- // rein lokale Funktionen von ALARM // ----- function _check(obj){ ... } ! // ----- // Funktionen die auch von außen erreichbar sein sollen // ----- function _resetAlarm(state) { ... } ! function _enable(){ ... _resetAlarm( 1 ); } ! function _disable(){ ... } ! ... ! // ----- // Bekanntgabe lokaler Funktionen für Zugriff von außen // ----- ! return { enable: _enable, disable: _disable, resetAlarm : _resetAlarm }; ! })(); ! Aufruf dann mit : ALARM.enable(); ALARM.resetAlarm(1); Die internen Funktionen müssen natürlich nicht mit einem "_" beginnen, ich habe mir das aber so angewöhnt. !
              Ansonsten freut es mich, dass der Material Design Style genutzt wird - wirkt wie eine native App.

              1 Reply Last reply Reply Quote 0
              • ?
                A Former User last edited by

                Vielen Dank an Meistertr und Uhula, ich habe die Anregungen in die Skripte mit aufgenommen und im ersten Post Skripte mit den aktuellen ausgetauscht.

                Nachdem ich mir das Modul Pattern angesehen hab, finde ich den Code nun viel strukturierter. Danke für das Feedback

                1 Reply Last reply Reply Quote 0
                • ?
                  A Former User last edited by

                  Demnächst sollen folgende Funktionen hinzukommen:

                  • Verzögerte Aktivierung

                  • Stiller Modus

                  • Automatische Aktivierung beim Verlassen

                  • Pineingabe zur Deaktivierung

                  • Prüfung aller Sensoren beim Aktivieren

                  Hat noch jemand Ideen zur Funktionserweiterung die hilfreich sind?

                  1 Reply Last reply Reply Quote 0
                  • Uhula
                    Uhula last edited by

                    "Normale" Alarmanlagen unterscheiden weniger nach Sensoren, sondern eher nach Meldelinien, in denen dann die einzelnen Sensoren gruppiert werden können. Der Sinn dahinter ist, dass sich über die Meldelinien dann leicht verschiedene "Scharf" Zustände realisieren lassen.

                    Bsp:

                    Meldelinie 1 : Alle Sensoren zur Außenhautabsicherung (Fenster, Türen, …)

                    Meldelinie 2 : Alle Sensoren zur Innenabsicherung Keller / EG (Bewegungsmelder)

                    Meldelinie 3 : Alle Sensoren zur Innenabsicherung OG (Bewegungsmelder)

                    Es sollten mehrere Scharf-Zustände wählbar sein, z.B. "Deaktiviert", "Unscharf", "Abwesend laut", "Abwesend still", "Anwesend1", "Anwesend2 (Nacht)". Selbst im "Unscharf" Zustand ist die Alarmanlage noch aktiv und überwcht durch Ping zB Geräte um deren Ausfälle via Push/Mail melden zu können.

                    Je Scharf-Zustand muss festgelegt werden können:

                    • welche Meldelinien gehören dazu (Abwesend : Meldelinie 1 + 2 + 3, Anwesend1 : Meldelinie 1, Anwesend2: Meldelinie 1 + 2)

                    • welche Alarmgeber werden getriggert, inkl. Alarmverzögerung (Bsp: 30 sec interner Alarm Schlafzimmer, dann 30 sec interner Alarm, dann extern)

                    • Scharf/Unscharf Verzögerung

                    • ...

                    Je Meldelinie muss festgelegt werden können:

                    • welche Scharf-Zustände sie verhindern, wenn sie eine aktive Meldung haben (Fenster geöffnet).

                    • ob sie direkt oder verzögert (in [sec]) auslösen sollen

                    • …

                    Je Sensor muss festgelegt werden können:

                    • zu welcher Meldelinie er gehört

                    • welche Scharf-Zustände er verhindert, wenn er eine aktive Meldung hat (Fenster geöffnet); oder :"wie Meldelinie"

                    • ob er direkt oder verzögert (in [sec]) auslösen sollen; oder :"wie Meldelinie"

                    • wieviele "Meldungsgründe" vorliegen müssen, bis eine aktive Meldung erfolgt (Bsp: Bewegungsmelder 2 innerhalb von 20 sek); ist wichtig um die Fehlalarme zu minimieren

                    • …

                    Sind alles nur Vorschläge, die meine 20 Jahre alte Hardware-Alarmanlage (Konfiguration über DIP-Schalter) konnte und die so auch in Benutzung waren. Aber, wenn man dann die eierlegende Wollmilchsau erschaffen hat, muss man sehr darauf achten, dass die Konfiguration simpel und logisch verständlich bleibt, sonst werden Dritte diese nicht nutzen wollen/können.

                    Viel Spaß und Erfolg! 😉

                    1 Reply Last reply Reply Quote 0
                    • T
                      tempestas last edited by

                      @nisio:

                      Demnächst sollen folgende Funktionen hinzukommen:

                      • Verzögerte Aktivierung

                      • Stiller Modus

                      • Automatische Aktivierung beim Verlassen

                      • Pineingabe zur Deaktivierung

                      • Prüfung aller Sensoren beim Aktivieren

                      Hat noch jemand Ideen zur Funktionserweiterung die hilfreich sind? `

                      Alarmlog.

                      1 Reply Last reply Reply Quote 0
                      • Dutchman
                        Dutchman Developer Most Active Administrators last edited by

                        @tempestas:

                        Alarmlog. `

                        was meinst du damit ? wen man de alarm status per history aufnimmt kan man diesen ueber eine tabelle wiedergeben

                        beispiel:

                        979_history_log.jpg

                        1 Reply Last reply Reply Quote 0
                        • T
                          tempestas last edited by

                          @Dutchman:

                          @tempestas:

                          Alarmlog. `

                          was meinst du damit ? wen man de alarm status per history aufnimmt kan man diesen ueber eine tabelle wiedergeben `

                          wollte die Liste nur vervollständigen.

                          Meinen tue ich aber so etwas:

                          http://forum.iobroker.net/download/file … &mode=view

                          in diesem Beispiel hatte ich noch keine Sortierung drin

                          Edit: ich sehe aber gerade, das war / ist schon enthalten mit "Letzter Sensor".

                          1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User last edited by

                            @Uhula:

                            "Normale" Alarmanlagen unterscheiden weniger nach Sensoren, sondern eher nach Meldelinien, in denen dann die einzelnen Sensoren gruppiert werden können. Der Sinn dahinter ist, dass sich über die Meldelinien dann leicht verschiedene "Scharf" Zustände realisieren lassen.

                            Bsp:

                            Meldelinie 1 : Alle Sensoren zur Außenhautabsicherung (Fenster, Türen, …)

                            Meldelinie 2 : Alle Sensoren zur Innenabsicherung Keller / EG (Bewegungsmelder)

                            Meldelinie 3 : Alle Sensoren zur Innenabsicherung OG (Bewegungsmelder)

                            Es sollten mehrere Scharf-Zustände wählbar sein, z.B. "Deaktiviert", "Unscharf", "Abwesend laut", "Abwesend still", "Anwesend1", "Anwesend2 (Nacht)". Selbst im "Unscharf" Zustand ist die Alarmanlage noch aktiv und überwcht durch Ping zB Geräte um deren Ausfälle via Push/Mail melden zu können.

                            Je Scharf-Zustand muss festgelegt werden können:

                            • welche Meldelinien gehören dazu (Abwesend : Meldelinie 1 + 2 + 3, Anwesend1 : Meldelinie 1, Anwesend2: Meldelinie 1 + 2)

                            • welche Alarmgeber werden getriggert, inkl. Alarmverzögerung (Bsp: 30 sec interner Alarm Schlafzimmer, dann 30 sec interner Alarm, dann extern)

                            • Scharf/Unscharf Verzögerung

                            • ...

                            Je Meldelinie muss festgelegt werden können:

                            • welche Scharf-Zustände sie verhindern, wenn sie eine aktive Meldung haben (Fenster geöffnet).

                            • ob sie direkt oder verzögert (in [sec]) auslösen sollen

                            • …

                            Je Sensor muss festgelegt werden können:

                            • zu welcher Meldelinie er gehört

                            • welche Scharf-Zustände er verhindert, wenn er eine aktive Meldung hat (Fenster geöffnet); oder :"wie Meldelinie"

                            • ob er direkt oder verzögert (in [sec]) auslösen sollen; oder :"wie Meldelinie"

                            • wieviele "Meldungsgründe" vorliegen müssen, bis eine aktive Meldung erfolgt (Bsp: Bewegungsmelder 2 innerhalb von 20 sek); ist wichtig um die Fehlalarme zu minimieren

                            • …

                            Sind alles nur Vorschläge, die meine 20 Jahre alte Hardware-Alarmanlage (Konfiguration über DIP-Schalter) konnte und die so auch in Benutzung waren. Aber, wenn man dann die eierlegende Wollmilchsau erschaffen hat, muss man sehr darauf achten, dass die Konfiguration simpel und logisch verständlich bleibt, sonst werden Dritte diese nicht nutzen wollen/können.

                            Viel Spaß und Erfolg! 😉 `

                            Vielen Dank für die vielen Ideen, da bin ich erstmal etwas beschäftigt. freu

                            Die Übersichtlichkeit finde ich auch sehr wichtig. Daher frage ich mich ob es nicht ab einem gewissen Punkt sinnvoller ist lieber mehrere Varianten/Instanzen der Alarmanlage anzulegen anstatt alles in eine Alarmanlage reinzukonfigurieren.

                            1 Reply Last reply Reply Quote 0
                            • ?
                              A Former User last edited by

                              Vielen Dank nochmals für die vielen Ideen @Uhula

                              Ich möchte insbesondere die Einfachheit im Vordergrund behalten.

                              Da die Kombination aus Meldelinie, Scharf-Zustand, Sensor, Verzögerung schnell unkontrollierbar wird habe ich mal ausprobiert diese Kombinationen als Profile abgebildet.

                              Mit den Profilen lassen sich Meldelinien und Alarmkanäle aktivieren, bzw mit einer Verzögerung versehen.

                              Ein erster Vorgeschmack schon mal vorab.

                              Ich habe noch nicht ausgiebig getestet und auch noch die Widgets nicht angepasst, daher sind bestimmt noch Fehler drin 🙂

                              Meint ihr die Nutzung der Profil ist ein guter Einsatz um Einfachheit und gleichzeitig Flexibilität abzubilden.

                              ! ````
                              /*

                              multi channel burglar alarm - v 0.01

                              ! features:

                              • six different alarm channels
                              • delayed alarm action
                              • delayed sensor check
                              • alarmlog
                              • define settings as profil

                              ! changelog:
                              29.09.2017 initial version
                              01.10.2017 restructered with revealing module pattern
                              03.10.2017 profiles added for alarm channels and sensor groups

                              */

                              ! var ALARM = (function () {

                              //Settings
                              var instance = 'javascript.0.';
                              var maxLogEntries = 5;
                              
                              //Internal states
                              var enable = false;
                              var state = 0;
                              var alarm = false;
                              var alarmDelay;
                              var alarmTimer = {};
                              var alarmLog = [];
                              var sensorDelay;
                              var sensorTimer = {};
                              
                              //Sensors
                              var selFacade = $('state[state.id=javascript.0.*](functions=facade)');
                              selFacade.on(function(obj) {
                                  _checkSensor(obj,facade);
                              });
                              var selMotion = $('state[state.id=javascript.0.*](functions=motion)');
                              selMotion.on(function(obj) {
                                  _checkSensor(obj,motion);
                              });
                              
                              function _checkSensor(obj, group){
                                  if(sensorDelay.group === 0){
                                      _check(obj);
                                  }else if(sensorDelay.group > 0){
                                      setTimeout(_check,(sensorDelay.group*1000),obj);
                                  }
                                  log('checkSensor group:'+group);
                              }
                              
                              function _loadSettings(profil){
                                  switch(profil) {
                                      case 'silent':
                                          sensorDelay = {motion:0,facade:0};
                                          alarmDelay = {silent:0};
                                          break;
                                      case 'night':
                                          sensorDelay = {door:0};
                                          alarmDelay = {silent:0,intern:60,extern:60};
                                          break;
                                      case 'full':
                                          sensorDelay = {motion:0,facade:0};
                                          alarmDelay = {silent:0,sound:30,strobe:30,intern:60,extern:60,mail:120};
                                          break;
                                      default:
                                          sensorDelay = {motion:0,facade:0};
                                          alarmDelay = {silent:0,sound:30,strobe:30,intern:60,extern:60,mail:120};
                                  }
                              }
                              function _enable(profil){
                                  enable = true;
                                  state = 1;
                                  _resetAlarm();
                                  _loadSettings(profil);
                                  log('enable');
                              }
                              function _disable(){
                                  enable = false;
                                  state = 0;
                                  _resetAlarm();
                                  _resetAlarmTimer();
                                  log('disable');
                              }
                              function _stop(){
                                  state = 1;
                                  _resetAlarm();
                                  log('stop');
                              }
                              function _resetAlarmTimer(){
                                  for (var elem in alarmTimer) {
                                      clearTimeout(alarmTimer[elem]);
                                      alarmTimer[elem] = null;
                                  }
                                  log('resetAlarmTimer');
                              }
                              function _resetAlarm(){
                                  alarm = false;
                                  setState(instance+'alarm.out.state', state, true);
                                  setState(instance+'alarm.out.log', '', true);
                                  setState(instance+'alarm.out.alarm', false, true);
                                  setState(instance+'alarm.out.alarm_silent', false, true);
                                  setState(instance+'alarm.out.alarm_sound', false, true);
                                  setState(instance+'alarm.out.alarm_strobe', false, true);
                                  setState(instance+'alarm.out.alarm_intern', false, true);
                                  setState(instance+'alarm.out.alarm_extern', false, true);
                                  setState(instance+'alarm.out.alarm_mail', false, true);
                                  _resetAlarmTimer();
                                  log('resetAlarm state:'+state);
                              }
                              function _startAlarm(elem){
                                  alarm = true;
                                  setState(instance+'alarm.out.alarm_'+elem, true, true);
                                  setState(instance+'alarm.out.state', 3, true);
                                  log('startAlarm elem:'+elem);
                              }
                              function _check(obj){
                                  if(obj.state.val && enable){
                                      for (var elem in alarmDelay) {
                                          if(alarmDelay[elem] === 0){
                                              _startAlarm(elem);
                                          } else if(!alarmTimer[elem]){
                                                  alarmTimer[elem] = setTimeout(_startAlarm,(alarmDelay[elem]*1000),elem);
                                          }
                                          log('startAlarms elem'+elem+':'+alarmDelay[elem]);
                                      }
                                      _logSensor(obj);
                                      log('alarm triggered by sensor '+obj.common.name);
                                  }
                              }
                              function _logSensor(obj){
                                  var time = (new Date()).toLocaleDateString()+' '+(new Date()).toLocaleTimeString();
                                  var sensor = obj.common.name;
                                  var room = getObject(obj.id, 'rooms').enumNames[0];
                                  alarmLog.push(time+' '+sensor+' '+room);
                                  alarmLog.splice(maxLogEntries);
                                  setState(instance+'alarm.out.log', alarmLog.join('
                              

                              '), true);
                              setState(instance+'alarm.out.last_sensor', time+' '+sensor+' '+room, true);
                              }

                              _loadSettings();
                              
                              return {
                                  enable: _enable,
                                  disable: _disable,
                                  stop: _stop
                              };
                              

                              ! })();
                              ! on({id:'javascript.0.alarm.in.enable', change:'any'}, function(obj){
                              ALARM.enable(obj.state.val);
                              log('on: in.enable val:'+obj.state.val);
                              });
                              on({id:'javascript.0.alarm.in.disable', change:'any'}, function(obj){
                              ALARM.disable();
                              log('on: in.disable');
                              });
                              on({id:'javascript.0.alarm.in.stop', change:'any'}, function(obj){
                              ALARM.stop();
                              log('on: in.stop');
                              });

                              
                              Angepasste States:
                              
                              >! ````
                              //Input
                              createState('alarm.in.enable', {
                                  read: true, 
                                  write: true, 
                                  desc: "Is used to arm the system, but cannot be used to disarm it.", 
                                  type: "string"
                              });
                              createState('alarm.in.disable', {
                                  read: true, 
                                  write: true, 
                                  desc: "Turns off the activated outputs and disarms the alarm system.", 
                                  type: "boolean"
                              });
                              createState('alarm.in.stop', {
                                  read: true, 
                                  write: true, 
                                  desc: "Can be used to stop the alarm.", 
                                  type: "boolean"
                              });
                              >! //Output
                              createState('alarm.out.state', 0, {
                                  read: true, 
                                  write: false, 
                                  desc: "Returns the current state of the system,", 
                                  type: "number", 
                                  min:  '0',
                                  max:  '3',
                                  states: '0:Disabled;1:Armed with motion sensors;2:Alarm triggered',
                                  def: 0
                              });
                              createState('alarm.out.alarm', {
                                  read: true, 
                                  write: false, 
                                  desc: "Alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.alarm_silent', {
                                  read: true, 
                                  write: false, 
                                  desc: "Silent alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.alarm_sound', {
                                  read: true, 
                                  write: false, 
                                  desc: "Sound alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.alarm_strobe', {
                                  read: true, 
                                  write: false, 
                                  desc: "Strobe alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.alarm_intern', {
                                  read: true, 
                                  write: false, 
                                  desc: "Internal alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.alarm_extern', {
                                  read: true, 
                                  write: false, 
                                  desc: "External alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.alarm_mail', {
                                  read: true, 
                                  write: false, 
                                  desc: "Mail alarm", 
                                  type: "boolean"
                              });
                              createState('alarm.out.log', {
                                  read: true, 
                                  write: false, 
                                  desc: "List with last sensors.", 
                                  type: "string"
                              });
                              createState('alarm.out.last_sensor', {
                                  read: true, 
                                  write: false, 
                                  desc: "Tells you which sensor has been activated. The output gives the room, name, date and time.", 
                                  type: "string"
                              });
                              
                              1 Reply Last reply Reply Quote 0
                              • ?
                                A Former User last edited by

                                Die neue Version mit Profilen und ein paar Umbauten hab ich im ersten Post hinterlegt.

                                Ich hab auch die Anzeige noch etwas angepasst Aufgrund der Profile.

                                Ebenfalls ist am Ende des Skripts eine Minimallösung wie ich bei mir die Automatische Aktivierung/Deaktivierung anhand von Anwesenheit gelöst habe über das Profil 'auto'.

                                Viel Spaß beim ausprobieren

                                1 Reply Last reply Reply Quote 0
                                • A
                                  andy6d last edited by

                                  Hallo, bin gerade dabei das Script von nisio einzubinden.

                                  Blöde Frage, wo und wie mache ich das? :shock:

                                  Sorry fange gerade mit dem Thema an und komme einfach nicht darauf.

                                  Habe es als eigenen Ordner unter Scripts am laufen aber da passiert rein gar nichts. Weiter fehlt mir der Bezug auf die "eigene" Anlage Melder usw. Vielleicht kann mir da jemand kurz auf die Sprünge helfen :roll:

                                  Achso in Zeile 177 und 178 steht alram drin, sollte bestimmt alarm heißen.

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    Blackeye last edited by

                                    Hi,

                                    auch ich wäre um ein paar Tipps dankbar. Habe noch nie Dinge importiert.

                                    Gesendet von iPhone mit Tapatalk Pro

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      Blackeye last edited by

                                      Hi,

                                      Kann mir sagen wie ich den Card View importieren kann? Mit den png Dateien weiß ich ach nicht wohin.

                                      Und was muss ich noch machen wenn ich alles importiert habe? Profile kenne ich nicht, bin noch neu in IoBroker.

                                      Danke

                                      Lars

                                      1 Reply Last reply Reply Quote 0
                                      • ?
                                        A Former User last edited by

                                        @andy6d:

                                        Hallo, bin gerade dabei das Script von nisio einzubinden.

                                        Blöde Frage, wo und wie mache ich das? :shock:

                                        Sorry fange gerade mit dem Thema an und komme einfach nicht darauf.

                                        Habe es als eigenen Ordner unter Scripts am laufen aber da passiert rein gar nichts. Weiter fehlt mir der Bezug auf die "eigene" Anlage Melder usw. Vielleicht kann mir da jemand kurz auf die Sprünge helfen :roll:

                                        Achso in Zeile 177 und 178 steht alram drin, sollte bestimmt alarm heißen. `

                                        Zeile #177 und #178 habe ich angepasst, Danke für den Hinweis.

                                        Benötigt wird der Javascript Adapter "ioBroker.javascript".

                                        Ich habe zwei Skripte unter dem Ordner Common angelegt.

                                        Das erste beinhaltet die States und das zweite Skript die eigentliche Logik. Die Skripte sind auch im Beitrag #1 enthalten.

                                        Beide Skripte müssen aktiviert sein (grünes Symbol).

                                        Eigene Melder lassen sich beliebig hinzufügen.

                                        Dazu muss nur in Zeile #35+ ein neuer Selektor angelegt werden.

                                        Wenn dazu eine neue Sensorgruppe (motion, facade, neu1, neu2) benutzt werden soll, dann muss diese noch hinzugefügt werden in der Funktionen _loadSettings und dort einem der Profile als sensorDelay zugeordnet. Ansonsten laufen die neuen Melder ins Leere.

                                        Hilft das weiter?

                                        Gerne weitere Fragen stellen…

                                        1 Reply Last reply Reply Quote 0
                                        • ?
                                          A Former User last edited by

                                          @Blackeye:

                                          Hi,

                                          Kann mir sagen wie ich den Card View importieren kann? Mit den png Dateien weiß ich ach nicht wohin.

                                          Und was muss ich noch machen wenn ich alles importiert habe? Profile kenne ich nicht, bin noch neu in IoBroker.

                                          Danke

                                          Lars `

                                          Die Visualisierung basiert komplett auf dem Material Design von Uhula.

                                          Dort sind auch alle Infos zu Cards zu finden.

                                          Importieren kann man die Card View im Vis Editor unter dem Tab "Views" gibt es dazu einen Button "Import View"

                                          Die png Dateien liegen bei mir im root des Vis projects, z.B. /vis.0/main/

                                          Man kann dazu den File Manager im Vis Editor verwenden.

                                          Profile sind innerhalb des Skripts mit der Logik.

                                          Damit lassen sich Melder gruppieren und zu verschiedenen Alarmlevel kombinieren, z.B.:

                                          • Nachts Aussenhaut überwachen und stillen Alarm auslösen

                                          • Tagsüber nur Sabotagealarm aktivieren

                                          • Voller Alarm bei Abwesenheit

                                          -…

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            Blackeye last edited by

                                            Hi,

                                            Danke für die wirklich schon mal große Hilfe. :idea:

                                            Aber wie klappt das mit den Gruppen? Geht das automatisch nach starten des Scripts? Bei mir werden nämlich nur die Schalter angelegt.

                                            @nisio:

                                            @Blackeye:

                                            Hi,

                                            Kann mir sagen wie ich den Card View importieren kann? Mit den png Dateien weiß ich ach nicht wohin.

                                            Und was muss ich noch machen wenn ich alles importiert habe? Profile kenne ich nicht, bin noch neu in IoBroker.

                                            Danke

                                            Lars `

                                            Die Visualisierung basiert komplett auf dem Material Design von Uhula.

                                            Dort sind auch alle Infos zu Cards zu finden.

                                            Importieren kann man die Card View im Vis Editor unter dem Tab "Views" gibt es dazu einen Button "Import View"

                                            Die png Dateien liegen bei mir im root des Vis projects, z.B. /vis.0/main/

                                            Man kann dazu den File Manager im Vis Editor verwenden.

                                            Profile sind innerhalb des Skripts mit der Logik.

                                            Damit lassen sich Melder gruppieren und zu verschiedenen Alarmlevel kombinieren, z.B.:

                                            • Nachts Aussenhaut überwachen und stillen Alarm auslösen

                                            • Tagsüber nur Sabotagealarm aktivieren

                                            • Voller Alarm bei Abwesenheit

                                            -… `

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            898
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            32
                                            138
                                            28069
                                            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