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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Alarmanlage mit erweiterten Funktionen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    309

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

[Vorlage] Alarmanlage mit erweiterten Funktionen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
39 Beiträge 6 Kommentatoren 3.6k Aufrufe 8 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • L looxer01

    @sigi234
    kannst du mir deine Scenario Definition zeigen ?

    sigi234S Online
    sigi234S Online
    sigi234
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #24

    @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

    @sigi234
    kannst du mir deine Scenario Definition zeigen ?

    Screenshot (1188).png

    Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Immer Daten sichern!

    L 1 Antwort Letzte Antwort
    0
    • sigi234S sigi234

      @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

      @sigi234
      kannst du mir deine Scenario Definition zeigen ?

      Screenshot (1188).png

      L Offline
      L Offline
      looxer01
      schrieb am zuletzt editiert von looxer01
      #25

      @sigi234
      das funktioniert erst wenn du die Filter (mindestens 1 ) erstellt hast und mindestens 1 Scenario mit Filter erstellt hast.

      Ich habe jetzt eine Meldung eingebaut, die eine Note für diesen Fall rauswirft

      sigi234S 1 Antwort Letzte Antwort
      0
      • L looxer01

        @sigi234
        das funktioniert erst wenn du die Filter (mindestens 1 ) erstellt hast und mindestens 1 Scenario mit Filter erstellt hast.

        Ich habe jetzt eine Meldung eingebaut, die eine Note für diesen Fall rauswirft

        sigi234S Online
        sigi234S Online
        sigi234
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #26

        @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

        @sigi234
        das funktioniert erst wenn du die Filter (mindestens 1 ) erstellt hast und mindestens 1 Scenario mit Filter erstellt hast.

        Ich habe jetzt eine Meldung eingebaut, die eine Note für diesen Fall rauswirft

        Screenshot (1189).png

        Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Immer Daten sichern!

        L 1 Antwort Letzte Antwort
        0
        • sigi234S sigi234

          @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

          @sigi234
          das funktioniert erst wenn du die Filter (mindestens 1 ) erstellt hast und mindestens 1 Scenario mit Filter erstellt hast.

          Ich habe jetzt eine Meldung eingebaut, die eine Note für diesen Fall rauswirft

          Screenshot (1189).png

          L Offline
          L Offline
          looxer01
          schrieb am zuletzt editiert von looxer01
          #27

          @sigi234
          ja, das ist leider keine userfreundliche GUI
          Tueren musst du in Hochkomma setzen, also 'Tueren'

          Bei Ausschluss von Tueren muss es dann so gehen: '-Tueren'

          ohne Hochkomma erwarte javasscript, dass es eine definierte variable mit Namen Tueren gibt.

          Hinweis: mir ist gerade ein Fehler aufgefallen, dass beim Aufruf der View mit den Räumen Seiteneffekte in VIS auftreten können.
          Falls das bei dir der Fall ist, dann habe ich schon den Fix

          vG Looxer

          sigi234S 1 Antwort Letzte Antwort
          0
          • L looxer01

            @sigi234
            ja, das ist leider keine userfreundliche GUI
            Tueren musst du in Hochkomma setzen, also 'Tueren'

            Bei Ausschluss von Tueren muss es dann so gehen: '-Tueren'

            ohne Hochkomma erwarte javasscript, dass es eine definierte variable mit Namen Tueren gibt.

            Hinweis: mir ist gerade ein Fehler aufgefallen, dass beim Aufruf der View mit den Räumen Seiteneffekte in VIS auftreten können.
            Falls das bei dir der Fall ist, dann habe ich schon den Fix

            vG Looxer

            sigi234S Online
            sigi234S Online
            sigi234
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #28

            @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

            Hinweis: mir ist gerade ein Fehler aufgefallen, dass beim Aufruf der View mit den Räumen Seiteneffekte in VIS auftreten können.
            Falls das bei dir der Fall ist, dann habe ich schon den Fix

            Arbeite mit VIS2

            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Immer Daten sichern!

            L 1 Antwort Letzte Antwort
            0
            • sigi234S sigi234

              @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

              Hinweis: mir ist gerade ein Fehler aufgefallen, dass beim Aufruf der View mit den Räumen Seiteneffekte in VIS auftreten können.
              Falls das bei dir der Fall ist, dann habe ich schon den Fix

              Arbeite mit VIS2

              L Offline
              L Offline
              looxer01
              schrieb am zuletzt editiert von
              #29

              @sigi234

              @sigi234 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

              Arbeite mit VIS2

              ist mir bekannt ;) - wie gesagt - sag Bescheid. In diesem Fall lade ich den Fix asap hoch

              sigi234S 1 Antwort Letzte Antwort
              0
              • L looxer01

                @sigi234

                @sigi234 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

                Arbeite mit VIS2

                ist mir bekannt ;) - wie gesagt - sag Bescheid. In diesem Fall lade ich den Fix asap hoch

                sigi234S Online
                sigi234S Online
                sigi234
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #30

                @looxer01

                Kann man {0_userdata.0.Alarm.Status.HTML_Alarmmeldung_Historie} auf xxx Zeilen beschränken?

                Screenshot (1191).png

                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Immer Daten sichern!

                L 1 Antwort Letzte Antwort
                0
                • L looxer01

                  Hi,
                  seit einigen Monaten bastele ich an einem Projekt um mein Haus elektronisch abzusichern. Sicherheit treibt mich schon seit längerem um. Das Anwesenheitssimulationsscript, die Einbindung einiger Kameras rund ums Haus sind einige Beispiele. Jetzt kommt hinzu eine doch recht umfassende Alarmanlagen installation. Das Script dazu richtet sich or allem an Nutzer mit hoeherem Anspruch an einer solchen Anlage im ioBroker Umfeld. Im Folgenden teile ich was ich dazu an Hardware nutze und auch die Details des Scriptes.
                  Was Hardware angeht, so nutze ich überwiegend Homematic. Das Script ist aber nicht nur auf Homematic ausgerichtet. Alles was in ioBroker geht, sollte auch mit dem Script gehen.

                  Meine ausgewählte Hardware:


                  Bei der Hardware habe ich mich hauptsächlich an Homematic orientiert mit folgenden Komponenten

                  • Bewegungsmelder
                  • Fenstersensoren
                  • Homematic Alarmsirenen ASIR
                  • Homematic Rauchmelder
                  • Homematic Wasermelder
                  • Keypad
                  • Schlossantrieb
                  • ELV Statusboard "ELV-SH-SB8" fuer Status und Steuerung

                  weitere Komponenten

                  • Wandtablet
                  • VIS Steuerung
                  • Wasermelder
                  • Rauchmelder

                  Komponenten noch in der Anschaffung

                  • Glasbruchsensoren

                  • weitere Melder und Fenstersensoren

                  • Keypad
                    Zum Keypad kann ich sagen, dass ich ganz ok damit bin. (wobei ich einen Fingerprintsensor schon vermisse) Es funktioniert gut und laesst sich direkt mit dem Tuerschloss direkt verbinden.
                    Das ist auf Jeden Fall ein plus. Es soll ja in Kürze auch eine festere Verbindung zur Doorbird geben. Da weiß ich aber noch nicht wie das genau läuft.
                    Das Keypad ist ja auch keine riesige Anschaffung und lässt sich leicht verbauen. Das ist anders mit der Doorbird. Also Doorbird mal nach hinten gestellt

                  Was gut funktioniert:

                  • natürlich auf und zuschließen

                  • Alarm scharf beim zuschließen

                  • alarm unscharf beim aufschließen

                  • Direktverbindung zum ELV StatusBoard (komme ich weiter unten noch drauf)
                    Was nicht so schön ist.

                  • Verarbeitung - halt Kunststoff

                  • kein Fingerprint

                  • Der Homematic Türschloßantrieb.
                    Hier musste ich ersteinmal den Schließzylinder tauschen. Das müssen wahrscheinlich die meißten.
                    Es gibt auch gute Videos im Netz, die den Einbau beschreiben - kein Hexenwerk
                    Bei den Maßen muß man halt ein wenig aufpassen. 10mm sollte der Zylinder schon hinausschauen.
                    Notöffnung ist ein Muss (aufschließen von außen während der Schlüssel steckt)
                    Ansonsten war der Einbau easy.

                  • Das ElV Status Board

                  Es ist ein Bausatz. Das vorneweg. Es muß nicht gelötet werden und der Zusammenbau gestaltet sich einfach.
                  Aber das mag jeder anders empfinden. Auch hier gibt es Videos im Netz.
                  Ein bischen schwieriger ist das einstellen der LED Farben ( aber auch das empfand ich als einfach)

                  Was macht das Board im Kontext der Alarmanlage. Ich habe 8 LEDs und 8 Hardwareschalter je LED einer.
                  Diese habe ich folgendermaßen belegt

                  • Alarmanlage scharf/unscharf - ein Druck und die Anlage ist von innen scharf
                  • Einbruchsmeldung - bei Druck kann diese quittiert werden
                  • geoeffnet Meldung (wenn ein Fenstersensor etc meldet, dass noch etwas geoeffnet im Haus ist)
                  • Sabotage Meldung (zusatzinfo zur Einbruchsmeldung)
                  • Stoerungs Meldung (wenn komponenten nicht erreichbar sind)
                  • Rauch Meldung
                  • Wasser Meldung
                  • und einen Schalter, den ich STILL nenne, Damit können laufende Sirenen etc, still geschaltet werden

                  Diese Belegung ist natürlich variabel. aber so ist sie bei mir eingerichet

                  Zum Board selber.

                  • macht nicht wirklich einen hochwertigen Eindruck - ist aber akzeptabel
                  • es braucht ein Netzteil, somit nicht ganz ortsunabhängig
                  • es tut was es soll. Bei mir fristet es das Dasein im Schlafzimmer (macht wohl am meisten Sinn)

                  status_board.jpg

                  und da das Ganze nichts ohne Software macht, habe ich mich umgeschaut.
                  Es gibt einen Alarmadapter und ein nicht mehr gewartetes script.
                  Beides hat, für das was ich mir vorstellte, nicht gepasst. Also kommt ein neues Script hinzu, das mittlerweile im Einsatz ist.

                  Konzept des Scriptes:

                  Dann das Script. Ich muß sagen, dass die Komplexität doch sehr groß ist. Das liegt natürlich daran, dass ich es flexibel haben wollte.
                  Leicht anpassbar an neue Komponenten und Situation.

                  hier ein paar features (bei weitem nicht komplett

                  • Zunächst wird die Raumsituation beschrieben und in einer Tabelle hinterlegt.
                    Die Sensoren werden zugeordnet zu Räumen.
                    Also Raum: Wohnzimmer,
                    RaumType ist innen,
                    zuodnung der Sensoren zu GeräteTypen je Raum (Bewegung, Fenster, Türen, Rollladen, Glasbruch, Rauch, Wasser)

                  • Dann werden Sichten bzw Filter auf die Räume gelegt (auch in einer Tabelle)
                    Eine Sicht kann z.B. alle innenliegenden Räume aber ohne das Gästezimmer sein

                  • Die Sichten werden dann Scenarios zugeordnet
                    Scenario Schlafen bekommt dann vielleicht die reine InnenSicht (eine Sicht ohne Schlafzimmerfenster wäre hilfreich)
                    Scenario Gäste bekommt eine Sicht nur innen aber ohne Gästezimmer.

                  Die Scenarios können einzeln aktiviert und deaktiviert werden. Den Sencarios sind auch Alarme zugeordnet.
                  Wenn ein Scenario ein Alarmauslöser ist, dann werden die Hardwarekomponenten direkt angesprochen z.B. die ASIR Sirene (quasi Nativ)

                  Dabei muß man sich erstmal gedanklich einfinden. Das geht aber schnell.

                  Weitere Features

                  • Verbindung zum Servicemeldungsscript (nutzt einfach dessen ressourcen für Sabotage Alarm und UnreachAlarm)
                  • Umfassende Protokollierung in JSON und HTML
                  • externe protokollierung zusätzlich
                  • native Einbindung des Statusboards
                  • native Einbindung der Alarmsirene ASIR
                  • umfassende Meldungen an die bekannten services (email, telegram, whatsapp etc etc) das ganze einstellbar
                  • automatische Berücksichtigung von Abwesenheiten (z.B. Aktivierung/Dekativierung von Scenarios
                  • automatische Berücksichtigung bei anwesenden Gaesten (z.B. Aktivierung/Dekativierung von Scenarios
                  • etc. etc.

                  Die 5 wichtigsten Schritte beim Einstellen des Scriptes

                  Vorgehensweise bei der Anpassung des Scriptes auf die eigenen Bedürfnisse
                  Der Einstellungsbereich enthält Einstellungssklassen

                  • Bitte Anpassen
                  • optional
                  • nicht ändern

                  Somit sollte der Fokus zunächst auf "Bitte Anpassen" gelegt werden.
                  Hierzu zählen die folgenden Tabellen

                  1. raumDefinition mit folgenden Feldern:
                  Raumbezeichnung - kann frei vergeben werden
                  Type: - kann frei vergeben werden. Es macht Sinn z.B. nach innen und aussen zu unterscheiden
                  Position - kann frei vergeben werden. Es macht Sinn z.B. nach Stockwerk zu unterscheiden OG, UG, KG
                  Gerätetypen: Bewegung: [], Fenster: [], Tueren: [], Rollladen: [], Glasbruch: [], Wasser: [],
                  Die Gerätetypen müssen nicht enthalten sein, wenn sie für einen Raum nicht benötigt werden
                  Wenn sie hinzugefügt werden können einfach die zugehörigen datenpunkte hinzugefügt werden

                  Wichtig ist:

                  • Die geschweiften und eckigen Klammern müssen genauso im Kontext erhalten bleiben
                  • Komma müssen nach jeder Felddefinition gesetzt werden

                  Beispiel

                  const raumDefinition = {
                      Wohnzimmer: { Type: "innen", Position: "oben", 
                          Fenster: [],
                          Tueren: ['hm-rpc.1.0000DD89B7xxx8.1.STATE'], // Terrassentuere
                  		
                      },
                      Kueche: { Type: "innen", Position: "oben", 
                          Fenster: ['hm-rpc.1.003660Cxxx05D0.1.STATE','hm-rpc.1.003660C993BEF6.1.STATE'], // Fenstersensor Kueche links und rechts
                      },
                  };
                  

                  2. Die Filter (Sichten) Definition. Die Filter beziehen sich auf die eingestellte raumDefinition

                  Felder:
                  Filtername: kann frei vergeben werden
                  raumTyp: bezieht sich auf raumDefinition Type - muss übereinstimmen ( ein leeres Feld heißt alle typen)
                  raumPosition: bezieht sich auf raumDefinition Position und muss übereinstimmen ( ein leeres Feld heißt alle Positionen)
                  geraetetypen: bezieht sich auf raumDefinition Gerätetypen (Fenster,Melder etc) und muss übereinstimmen ( ein leeres Feld heißt alle Gerätetypen)
                  raeume: bezieht sich auf raumDefinition Raumname (Wohnzimmer etc) und muss übereinstimmen ( ein leeres Feld heißt alle Raumnamen)
                  Datenpunkte: bezieht sich auf raumDefinition auf die zugeordneten Datenpunkte und muss übereinstimmen ( ein leeres Feld heißt alle Datenpunkte)

                  Grundsätzlich können für jedes Feld Ausschlüsse gemacht werden. Erlaubt sind minus (-) und Doppelminus (--)
                  Minus heißt Ausschluss aus dem später zugeordneten Scenario was auch bedeutet, dass dieser Datenpunkt bei einem zweiten aktiven scenario wieder zugeordnet werden könnte
                  Doppelminus heißt genereller Ausschluss auch wenn dieser Datenpunkt bei einem zweiten aktiven scenario zugeordnet wurde

                  Es sollten immer alle Felder vorhanden sein (anders als bei der raumDefinition).

                  Beispiel:

                  let  FilterDefinition = {
                      Schlafen: {
                          raumTyp: ['innen'],                                 // Raumtypen (z. B. innen, aussen) als Array oder keine Angabe = alle
                          raumPosition: [],                                   // Positionen (z. B. oben, unten oder ErsterStock,ZweiterStock,DritterStock) als Array oder keine Angabe = alle
                          geraetetypen: [],                                   // Geraetegruppen (z. B. Bewegung, Fenster, etc.) oder keine Angabe = alle
                          raeume: [],                                         // Einzelraeume bei keiner Angabe werden alle Raeume verwendet
                          Datenpunkte: ['-hm-rpc.1.003660C9A62C5D.1.STATE','-hm-rpc.1.0000D709954526.1.STATE']   // Schlafzimmerfenster und Elternbadfenster ausgeschlossen (Lueftung)
                      },
                      Abwesend: {
                          raumTyp: ['innen'],                                 
                          raumPosition: [],                     
                          geraetetypen: [],               
                          raeume: [],
                          Datenpunkte: []                                    
                      },
                  	
                  

                  3. Scenarios

                  Scenarios lösen am Ende Alarme aus. Mehrere Filter können einem Scenario zugeordnet werden. Auch mehrere Aktionen (Alerts) können zugeordnet werden.
                  Jedes Scenario lässt sich aktivieren oder deaktivieren.
                  Wenn mehrere Scenarios aktiviert sind und ein Datenpunkt mehreren Scenarios zugeordnet wurden, dann bestimmt die Priorität welches Scenario als Alarm ausgeführt wird
                  Es lassen sich maximal 99 Scenarios definieren

                  const scenarioDefinition = { 
                      Scenario01: { name: "Schlafen",               Prio: 6,  Filter: ['Schlafen'],                                  Alert: ['FlashSchlafzimmerEIN',"FlashStandard1EIN"] },  
                      Scenario02: { name: "Abwesend",               Prio: 5,  Filter: ["Abwesend"],                                  Alert: ["SireneASIR2EIN","Licht_OG"] },
                      Scenario03: { name: "Garage",                 Prio: 10, Filter: ["Garage"],                                    Alert: ['FlashSchlafzimmerEIN'] }, 
                      Scenario04: { name: "Urlaub",                 Prio: 6,  Filter: ['Urlaub'],                                    Alert: [] }, 
                      Scenario05: { name: "Haustiere",              Prio: 7,  Filter: ['Haustiere'],                                 Alert: [] },  
                      Scenario06: { name: "Gaeste",                 Prio: 4,  Filter: ["Gaeste"],                                    Alert: ["FlashSchlafzimmerEIN"] }, 
                      Scenario07: { name: "frei",                   Prio: 8,  Filter: [],                                            Alert: [] },
                      Scenario08: { name: "Stoerung",               Prio: 9,  Filter: ['Stoerung'],                                  Alert: [] },  // Filter ist bei Stoerung  immer = Stoerung
                      Scenario09: { name: "Gefaehrdet",             Prio: 3,  Filter: ['HochRisiko'],                                Alert: ["SireneASIR2EIN","Licht_Hoch_Risiko_Aussen"] },  
                      Scenario10: { name: "Wasser",                 Prio: 2,  Filter: ['Wasser'],                                    Alert: ["SireneASIR2EIN"] },  
                      Scenario11: { name: "Rauch",                  Prio: 1,  Filter: ['Rauch'],                                     Alert: ["SireneASIR1EIN","SireneASIR2EIN"] },  
                  };
                  	
                  

                  4. Direkte Ansteuerung von hardware im Alarmfall (Alert im Scenario)

                  die Namen der AusgabeDevices können frei vergeben werden.
                  Es gibt aber fest verdrahtete Devices.

                  1. HMIP_ASIR steuert diese Homematic Komponente direkt an (Es müssen mehrere Datenpunkte gleichzeitig gesetzt werden, damit der Alarm ausgelöst wird)
                  2. Datenpunkt_Standard: Hier wird ein Datenpunkt eingetragen, der reagiern soll Angaben sind auch zu machen beim Aktivierungswert, Rückstellwert, Dauer und Delay
                    (beispielsweise können hier Lichter geschaltet werden oder andere nicht-Homatic Sirenen etc.) was auch immer
                  3. Datenpunkt_Flash ist ein Datenpunkt bei dem man eine Lampe mit einer Frequenz blinken lassen kann. Nutze ich z.B. für das Schlafzimmer als stillen Alarm für die Scenarien wo ich nicht
                    gleich die Sirenen laufen lassen möchte
                    anzugebende Werte: der entsprechende Datenpunkt, Aktivierungswert, Wiederholungen (Anzahl - nicht zu viele verwenden), Frequenz in ms (Abstand zwischen zwei an/aus Schaltungen, Startdelay in ms

                  Die hier genutzten Geräte können über den STILL Datenpunkt alle komplett auf push ausgeschaltet werden

                  Beispiele

                  const  AlertAusgabeDevices = {
                      SireneASIR1EIN:{ Device: "HMIP-ASIR",				// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: true,  // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.00246269903296.",
                          AkustikSelectionDP: "3.ACOUSTIC_ALARM_SELECTION", valueTon: 2,
                          Duration_UnitDP: "3.DURATION_UNIT", valueUnit: 0, // 0 = sekunde
                          Duration_ValueDP: "3.DURATION_VALUE", valueDuration: 100,
                          OpticalSelectionDP: "3.OPTICAL_ALARM_SELECTION" , valueOpt: 1,
                          Startdelay: 1000,
                      },
                      SireneASIR1AUS:{ Device: "HMIP-ASIR",				// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: false,// true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.00246269903296.",
                          AkustikSelectionDP: "3.ACOUSTIC_ALARM_SELECTION", valueTon: 0,
                          Duration_UnitDP: "3.DURATION_UNIT", valueUnit: 0, // 0 = sekunde
                          Duration_ValueDP: "3.DURATION_VALUE", valueDuration: 0,
                          OpticalSelectionDP: "3.OPTICAL_ALARM_SELECTION" , valueOpt: 0,
                          Startdelay: 1000,
                      },
                      SireneASIR2EIN:{    Device: "HMIP-ASIR",			// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: true,// true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.002462699037EF.",
                          AkustikSelectionDP: "3.ACOUSTIC_ALARM_SELECTION", valueTon: 2,
                          Duration_UnitDP: "3.DURATION_UNIT", valueUnit: 0, // 0 = sekunde
                          Duration_ValueDP: "3.DURATION_VALUE", valueDuration: 100,
                          OpticalSelectionDP: "3.OPTICAL_ALARM_SELECTION" , valueOpt: 1,
                          Startdelay: 1000
                      },
                      SireneASIR2AUS:{    Device: "HMIP-ASIR",			// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: false,// true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.002462699037EF.",
                          AkustikSelectionDP: "3.ACOUSTIC_ALARM_SELECTION", valueTon: 0,
                          Duration_UnitDP: "3.DURATION_UNIT", valueUnit: 0, // 0 = sekunde
                          Duration_ValueDP: "3.DURATION_VALUE", valueDuration: 0,
                          OpticalSelectionDP: "3.OPTICAL_ALARM_SELECTION" , valueOpt: 0,
                          Startdelay: 1000
                      },
                      Standard1Ein:{  Device: "Datenpunkt_Standard",		// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: true, // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.00351F298A58E3.3.STATE",    		/*Licht WZ Terrassentuere Ausgang:2 STATE*/
                          Aktivierungswert: true, 						// true/false 1/100 was auch immer gesetzt werden soll
                  		Rueckstellwert:	false,							// Rueckstellwert wird gesetzt wenn die Dauer abgelaufen ist. Keine Funktion wenn Dauer = null ist
                  		Dauer: 100000,									// in ms - null ohne Auschaltung
                          Startdelay: 0,									// in ms
                  		
                      },
                      Standard1Aus:{  Device: "Datenpunkt_Standard",		// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: false, // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.00351F298A58E3.3.STATE",    		/*Licht WZ Terrassentuere Ausgang:2 STATE*/
                          Aktivierungswert: false, 						// true/false 1/100 was auch immer gesetzt werden soll
                      },
                      FlashStandard1EIN:{  Device: "Datenpunkt_Flash",	// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: true, // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.00351F298A58E3.3.STATE",    		/*Licht WZ Terrassentuere Ausgang:2 STATE*/
                          Aktivierungswert: true, 						// true/false 1/100 was auch immer gesetzt werden soll
                          Wiederholung: true,
                          AnzahlWiederholungen: 4,
                          Frequenz: 1000,     // achtung das sind millisekunden
                      },
                      FlashStandard1AUS:{  Device: "Datenpunkt_Flash",	// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: false, // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.00351F298A58E3.3.STATE",    		/*Licht WZ Terrassentuere Ausgang:2 STATE*/
                          Aktivierungswert: false, 						// true/false 1/100 was auch immer gesetzt werden soll
                          Wiederholung: false,
                          AnzahlWiederholungen: 4,
                          Frequenz: 1000,     // achtung das sind millisekunden
                      },
                      FlashSchlafzimmerEIN:{  Device: "Datenpunkt_Flash",	// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: true, // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.003AE0C9A8F157.3.STATE",    		/*Licht WZ Terrassentuere Ausgang:2 STATE*/
                          Aktivierungswert: true, 						// true/false 1/100 was auch immer gesetzt werden soll
                          Wiederholung: true,
                          AnzahlWiederholungen: 4,
                          Frequenz: 1000,     							// achtung das sind millisekunden
                      },
                      FlashSchlafzimmerAUS:{  Device: "Datenpunkt_Flash",	// Device darf nicht veraendert werden. Die Logik der nachfolgenden Felder wird anhand des Device abgearbeitet - hart verdrahtet
                          Zustand: false, // true = ein - false = aus		// Dieser Zustand wird nicht gesetzt, bedeutet Geraet ein-oder Ausschalten. Der zu setzende Wert wird weiter unten bestimmt
                          DP: "hm-rpc.1.003AE0C9A8F157.3.STATE",    		/*Licht WZ Terrassentuere Ausgang:2 STATE*/
                          Aktivierungswert: false, 						// true/false oder 1/0  100/0 zulaessig
                          Wiederholung: false,
                          AnzahlWiederholungen: 4,
                          Frequenz: 1000,     							// achtung das sind millisekunden
                      },
                  }
                  

                  5. Definition von Schaltgruppen.

                  Schaltgruppen können für Scenario-Alerts aber auch bei Alarmaktivierung / Alarmdeaktivierung ausgelöst werden
                  einzustellendwe Felder: Datenpunkt der geschaltet werden soll. Wert der zur Schaltung genutzt werden soll, Delay in sekunden, Dauer in Sekunden

                  Beispiel:

                  const Schaltgruppen = {
                      Licht_OG: [
                          { Datenpunkt: 'hm-rpc.1.00351F29xxxxE3.3.STATE', Wert: true, Delay: 0.1, Dauer: null },     // WZ Licht Terrasse Verzoegerung in sekunden // Dauer in  sekunden // null = endlos
                          { Datenpunkt: 'hm-rpc.1.0008E0C9xxxxB0.4.LEVEL', Wert: 100,  Delay: 0.1, Dauer: 600 }     // WZ Esszimmertisch Dimmer// Feld Dauer: danach wird auf Ausgangswert zurueckgesetzt
                      ],
                      Licht_Hoch_Risiko_Aussen: [ 
                          { Datenpunkt: 'hm-rpc.1.0008A0C9xxxxx6.1.STATE', Wert: true, Delay: 0.05, Dauer: 600 }, // Licht Kinderbad
                          { Datenpunkt: 'hm-rpc.1.0008A0C9xxxx50.1.STATE', Wert: true, Delay: 0.1, Dauer: 600 },  // Licht aussen Nordseite
                          { Datenpunkt: 'hm-rpc.1.0008A269xxxx47.1.STATE'/*Licht Hobbyraum Status:1 STATE*/, Wert: true, Delay: 150, Dauer: 600 }, 
                          { Datenpunkt: 'hm-rpc.1.0025A0C9xxxx63.10.STATE'/*Kelleraktor 5 Maschinenraum PoolHalle:10 STATE*/, Wert: true, Delay: 0.2, Dauer: 600 }, 
                          { Datenpunkt: 'hm-rpc.1.0025A0C9Axxx70.18.STATE'/*Keller Aktor 1 Aktor Licht Steinterasse:18 STATE*/, Wert: true, Delay: 0.25, Dauer: 600 }, 
                      ]
                  };
                  

                  Die optionalen Einstellungen

                  Messenging

                  Es können die wichtigsten messenging services genutzt werden um kurzNachrichten oder verlängerte Nachrichten an die verschiedenen
                  services zu senden. Je MessageType und Service kann entschieden werden, ob eine Nachricht gesendet werden soll, ob die Kurzversion
                  oder Langversion versendet werden soll und welche Instanz genutzt werden soll.
                  Falls mehrere Instanzen für einen Service gleichzeitig genutzt werden sollen, kann die entsprechende Instanz hinzugefügt werden soll

                  Als Nachrichtenservice kann auch eine Sprachnachricht versendet werden. (SayIt - Adapter)
                  Vorraussetzung ist, dass der jeweilige ioBroker Adapter für den jeweiligen Service installiert und konfiguriert ist.

                      const services =               ['email',    'whatsApp',     'Signal',  'Telegram',    'Pushover', 'Pushsafer', 'Sprache',];
                      const MessengerScope = {
                      'Rauch':                        [true,        true,           false,      false,          false,      false,       false,   ],
                      'Einbruch':                     [true,        false,          false,      false,          false,      false,       false,   ],  
                      'Wasser':                       [true,        true,           false,      false,          false,      false,       false,   ],
                      'Sabotage':                     [false,       false,          false,      false,          false,      false,       false,   ], 
                      'Stoerung':                     [false,       false,          false,      false,          false,      false,       false,   ],
                      'Alarm_Scharf':                 [true,        false,          false,      false,          false,      false,       false,   ],
                      'Alarm_Unscharf':               [true,        false,          false,      false,          false,      false,       false,   ],
                      'ScenarioAktiviert':            [true,        false,          false,      false,          false,      false,       false,   ],
                      'ScenarioDeaktiviert':          [true,        false,          false,      false,          false,      false,       false,   ],    
                      'Alarm_Still_Geschaltet':       [false,       false,          false,      false,          false,      false,       false,   ],
                      'Fallback':                     [false,       false,          false,      false,          false,      false,       false,   ],  // Fallback nicht loeschen. wird genutzt, wenn keine andere Definition gemacht worden ist
                      }
                      const MessengerInstanz =        [0,             0,               0,          0,              0,         0,           0,     ]; // Instanz des Messengers
                      const TextTypeKurz      =       [false,       true,           true,       true,           true,       true,        true,     ]; // bei true wird der Kurztext gesendet - sonst der Langtext
                  
                  
                  

                  Nutzung eines oder mehrerer ELV ELV-SH-SB8 Statusboard

                  es können beliebig viele Statusboards eingebunden werden. na ja, 2 machen vielleicht sinn für 2 Etagen oder eines für Statusanzeige und eines zur ScenarioAktivierung/Deaktivierung
                  Die Statusboards und deren Status wird nicht mit dem Status ersetzt, was auch möglich gewesen wäre, vielmehr wird der Status synchronisiert mit dem jeweiligen Statuspunkt des Scriptes

                  const ControlDevices = [ { 
                          DeviceID: "StatusBoard1",
                          Device: "ELV-SH-SB8",
                          DP: "hm-rpc.1.004FE3CxxxxsEAx.",
                          LED1: DP_Alarmaktivierung,    DP_2ndPart1 : "10.STATE",   // Meldungsanzeige und Aktivierung/Deaktivierung erfolgt durch die entsprechenden Datenpunkte
                          LED2: DP_Einbruchsmeldung,    DP_2ndPart2 : "14.STATE",   // manuellAenderbar true laesst es zu den Alarm ueber das Board auszuschalten // dann werden auch alle AkustikGeraete Sirenen ausgeschaltet
                          LED3: DP_GeoeffnetMeldung,    DP_2ndPart3 : "18.STATE",   // DP und DP_2ndPart entspricht dem genauen Datenpunkt jeder LED
                          LED4: DP_Sabotagemeldung,     DP_2ndPart4 : "22.STATE",   
                          LED5: DP_Stoerungsmeldung,    DP_2ndPart5 : "26.STATE",  
                          LED6: DP_Rauchmeldung,        DP_2ndPart6 : "30.STATE",  
                          LED7: DP_Wassermeldung,       DP_2ndPart7 : "34.STATE",   // ausgeschaltet werden aber nicht die Schaltgruppen
                          LED8: DP_Still,               DP_2ndPart8 : "38.STATE",   // laufende Alarmgeraete (Sirenen etc) werden ausgeschaltet
                      },
                      { 
                          DeviceID: "StatusBoard2",
                          Device: "ELV-SH-SB8",
                          DP: "hm-rpc.1.004FE3C00005xxx.",
                          LED1: "Scenario01Aktiv",      DP_2ndPart1 : "10.STATE",     // Szenarioschaltung fuer StatusBoard2
                          LED2: "Scenario02Aktiv",      DP_2ndPart2 : "14.STATE",  
                          LED3: "Scenario03Aktiv",      DP_2ndPart3 : "18.STATE",  
                          LED4: "Scenario03Aktiv",      DP_2ndPart4 : "22.STATE",  
                          LED5: "Scenario05Aktiv",      DP_2ndPart5 : "26.STATE",  
                          LED6: "Scenario06Aktiv",      DP_2ndPart6 : "30.STATE",  
                          LED7: "Scenario07Aktiv",      DP_2ndPart7 : "34.STATE",         // Szenarioschaltung fuer StatusBoard2
                          LED8: "Scenario08Aktiv",      DP_2ndPart8 : "38.STATE",  
                      }
                  ];
                  
                  

                  Einstellungen zur Definition wann ein Alarm erfolgt

                  Die Interpretation ob ein Alarm vorliegt hängt vom jeweiligen Datenpunkt ab. Das kann dediziert eingestellt werden
                  In den meisten Fällen reicht eine allgemeine Einstellung: true, 1, 100 etc.

                  Sollte ein datenpunkt aber eine andere Logik verfolgen, dann kann ein expliziter Auslösewert für diesen Datenpunkt eignestellt werden

                  const AlarmAusloesungswerte = [
                      { op: '==', wert: true },                                                                // nur true zulaessig   - bitte beibehalten
                      { op: '>', wert: 0 },                                                                    // groesser als 0        - bitte beibehalten
                      { range: { min: 1, max: 2 } },                                                           // Beispiel range  
                      {exception: {dpAusnahme:'hm-rpc.1.000F1D8xxxx02D.1.MOTION', wert: false}},               // je Datenpunkt mit ausnahmen, z.B. fuer Garagentorsensor ist false = geoeffnet  - Beispiel
                      {exception: {dpAusnahme:"hm-rpc.1.0047E40xxxxx88.1.LOCK_STATE", wert: 2}},               // hmip-dld unlocked = 2
                  
                  ];
                  
                  

                  Verzögerung bei Alarmaktivierung

                  Die Anzahl von Sekunden von der Anfrage zur Aktivierung (Scharfschaltung) bis zur tatsächlichen Aktivierung des Alarmes kann eingestellt werden.
                  Während dieser Zeit, kann der Alarm trotzdem wieder unscharf geschaltet werden. Die Wartezeit wird dann abgebrochen

                  const AKTIVIERUNGSDELAY_SECONDS = 5;
                  

                  Aktionen bei Scharf/Unscharfschaltung

                  Bei Scharf/Unscharfschaltung koennen Schaltgruppen zur Ausführung definiert werden. Es können beliebig viele Schaltgruppen eingetragen werden, die dann zur Ausführung kommen

                  
                  const AktionenNachScharfSchaltung = []          // hier koennen die keys aus der Tabelle der Schaltgruppen eingetragen werden zB. ["Licht_OG","Licht_UG"] also mehrere bei Bedarf
                  
                  const AktionenNachUnscharfSchaltung = []          // hier koennen die keys aus der Tabelle der Schaltgruppen eingetragen werden zB. ["Licht_OG","Licht_UG"] also mehrere bei Bedarf
                  
                  
                  

                  Reaktion bei An/Abwesenheit

                  const anwesenheit      = 'javascript.0.AnwesenheitsTracking.JemandDa'   // bitte anpassen falls Anwesenheitstracking genutzt wird
                  const AbwesenheitScenarioAktivierung = ["Scenario02Aktiv"]; 
                  
                  

                  Gaeste Management

                  Ich nutze ein Flag, welches auf true geschaltet wird, wenn Übernachtungsgäste im haus sind.
                  Damit werden Rollladensteuerung und Heizungsverhalten beeinflußt. Dieses Flag nutze ich nun auch für die Alarmanlageneinstellung
                  Dabei wird dann z.B. der Gästebereich aus für die alarmierung ausgeschlossen. Die Alarmierung läuft dann still und nicht über die Sirenen
                  es koennen mehrere Scenarios angegeben werden, ein fuehrendes minus dreht den wert um - aus true wird false (Ausschluss). Das Scenario wird also deaktiviert

                  // Die Funktion GAESTE Management wird nur aktiviert, wenn es den Datenpunkt zum Gaeste-Flag gibt
                  const GaesteFlag    = "javascript.0.Steuerungsflags.Gaeste"
                  
                  // das hier angegebene scenario wird bei Anwesenheit von Gaesten (Uebernachtung) aktiviert und deaktiviert
                  const GaesteScenarioAktivierung = ["Scenario06Aktiv"];
                  
                  

                  Protokollierung

                  Die wichtigsten Statusänderungen und Alarme werden in ein Protokoll im JSON Format geschrieben. Dieses kann dann z.B. mit VIS angezeigt werden (beispielsweise mit dem inventwo Adapter

                  Ein Schedule ist standardmäßig eingestellt um z.B. Monatlich eine Bereinigung der History durchzuführen. Das vermeidet auf die Dauer technische Probleme mit zu großen Datenpunkten
                  Dabei kann eingestellt werden, wieviel Tage in der History erhalten bleiben soll. Bei 0 wird alles gelöscht.

                  const ScheduleAktiv = true;                         // Bei "false" wird der schedule nicht durchlaufen. Manuelles Loeschen kann ueber den Datenpunkt id_Button_Refresh_Historie (Button) moeglich
                  const scheduleTimeClearSMTexte = "2 0 1 * *";       // am 1. tag des monats um 00:02 morgens sollen alle Alarmmeldungen des Monats geloescht werden id_History_VerbleibendeTage und aktive bleiben erhalten
                  // const scheduleTimeClearSMTexte = "58 23 * * 0";  // alternative Sonntags um 23:58 Uhr sollen alle Alarmmeldungen der Woche im datenpunkt der Protokoll-Texte geloescht werden 
                  
                  
                  

                  Schreiben des Protokolls in eine CSV Datei

                  Die History kann auf Wunsch in eine externe Datei geschrieben. Diese dient dann zur Langzeitspeicherung dieser Daten

                      const ProkollExtern = true
                      const PathProkollExtern = "/opt/iobroker/log/AlarmMeldungen.csv";               // Pfad und Dateiname des externen Logs
                  //  const PathProkollExtern = "/iobroker/log/AlarmMeldungen.csv";                   // Pfad fuer Windows/  iobroker ist der angenommene iobroker home-pfad
                  
                  

                  HTML Datenpunkte

                  Auf Wunsch kann auch ein HTML Code erzeugt werden, der eine fast identische Darstellung erzeugen kann, z.B. mit dem HTML Basic Widget aus VIS.
                  HTML kann für verschiedene Visualiserungstools genutzt werden. Inventwo hat meines Wissens nach zur Zeit noch Probleme mit Vis2. Die HTML Anzeige ist dabei eine perfekte Alternative.

                  Dabei kann das Aussehen wie Farben Zellgrössen angepasst werden. Auch Spalten können abgewählt werden

                  // sinnvoll wenn inventwo nicht fuer die visualisierung genutzt werden kann 
                  const UpdateHTML_Datenpunkte = true // bei true werden die Datenpunkte automatisch angelegt und bei false wieder geloescht
                  
                  const id_HTML_Alarmmeldung_Aktuell  = statusPath   + "HTML_Alarmmeldung_Aktuell"     // Empfehlung: nicht aendern
                  const id_HTML_Alarmmeldung_Historie = statusPath   + "HTML_Alarmmeldung_Historie"    // Empfehlung: nicht aendern
                  
                  
                  const HTML_TableWidthsAndStyles = {
                      // Definition der Spaltenbreiten in CSS-Einheiten
                      columnWidths: {
                          datum: '95px',        // Breite fuer Datum/Uhrzeit-Spalte
                          alarmtype: '70px',   // Breite fuer Alarmtyp-Spalte
                          raum: '90px',         // Breite fuer Raum-Spalte
                          deviceType: '80px',  // Breite fuer Geraetetyp-Spalte
                          scenario: '50px',    // Breite fuer Szenario-Spalte
                          deviceName: '150px',  // Breite fuer Geraetebezeichnung
                          deviceId: '50px',     // Breite fuer Geraete-ID
                          message: '210px',     // Breite fuer Nachrichtenspalte
                          quittiert: '95px'    // Breite fuer Quittierungsspalte
                      },
                      
                      // Visuelle Stileinstellungen fuer die Tabelle
                      styles: {
                          // Basistypografie
                          fontSize: '10px',             // Allgemeine Schriftgroesse
                          
                          // Kopfzeilenstil
                          headerColor: '#333333',       // Hintergrundfarbe der Kopfzeile
                          headerTextColor: 'white',     // Textfarbe der Kopfzeile
                          
                          // Zeilenstile (Zebra-Pattern)
                          evenRowColor: '#4e5049',      // Hintergrundfarbe gerade Zeilen
                          oddRowColor: '#333333',       // Hintergrundfarbe ungerade Zeilen
                          evenRowTextColor: 'white',    // Textfarbe gerade Zeilen
                          oddRowTextColor: 'white',     // Textfarbe ungerade Zeilen
                          
                          // Rahmeneinstellungen
                          borderColor: '#000000',       // Farbe der Tabellenraender
                          borderWidth: '1px',           // Staerke der Rahmenlinien
                          useBorders: true,             // Soll Rahmen anzeigen? (true/false)
                          
                          // Zellenlayout
                          cellPadding: '5px'           // Innenabstand der Tabellenzellen
                      },
                      
                      // Texte fuer die Tabellenkopfzeilen
                      headerTexts: {
                          datum: 'Datum/Uhrzeit',      // ueberschrift Datumsspalte
                          alarmtype: 'Alarmtyp',       // ueberschrift Alarmtyp
                          raum: 'Raum',                // ueberschrift Raum
                          deviceType: 'Geraetetyp',     // ueberschrift Geraetetyp
                          scenario: 'Szenario',        // ueberschrift Szenario
                          deviceName: 'Geraetebez.',    // ueberschrift Geraetebezeichnung (abgekuerzt)
                          deviceId: 'Geraete-ID',       // ueberschrift Geraete-ID
                          message: 'Nachricht',        // ueberschrift Nachrichteninhalt
                          quittiert: 'Quittiert seit'  // ueberschrift Quittierungsstatus
                      },
                      
                      // Konfiguration der Spaltensichtbarkeit - ein oder ausblenden
                      columns: {
                          datum: { visible:       true },
                          alarmtype: { visible:   true },
                          raum: { visible:        true },
                          deviceType: { visible:  true },
                          scenario: { visible:    true },
                          deviceName: { visible:  true },
                          deviceId: { visible:    true },
                          message: { visible:     true },
                          quittiert: { visible:   true }
                      }
                  
                  };
                  
                  

                  Übersicht über die Geräte je Raum, die aktiv bzw inaktiv sind und welchse Scenarios mit diesem Verknüpft sind.

                  Standardmäßig wird ein HTML code erzeugt, der eine Liste der der Geräte/Räume anzeigt.
                  Dies ist insbesondere hilfreich um zu überprüfen, ob die Einstellungen dem gewünschten Ergebnis entsprechen.

                  Die Liste kann ebenfalls im Detail mit Größen, Style und scope Einstellungen versehen werden

                  const HTML_Raumzuordnungen_WidthAndStyles = {
                      columnWidths: {
                          raum: '90px',   scenario: '150px',  deviceType: '100px',  
                      },
                      styles: {
                          fontSize: '10px',             
                          headerColor: '#333333',       
                          headerTextColor: 'white',     
                          evenRowColor: '#4e5049',      
                          oddRowColor: '#333333',       
                          evenRowTextColor: 'white',    
                          oddRowTextColor: 'white',     
                          borderColor: '#000000',       
                          borderWidth: '1px',           
                          useBorders: true,             
                          cellPadding: '5px'           
                      },
                      headerTexts: {
                          raum: 'Raum',   scenario: 'Szenarien',   deviceType: 'Geraetetyp'    
                      },
                      columns: {raum: { visible: true },scenario: { visible: true }, deviceType: { visible: true }
                      }
                  };
                  
                  

                  Integration von Sabotage und Stoerungsmeldungen (Unreach) aus dem Servicemeldungs-Script

                  Homematic Sabotagemeldungen und Stoerungsmeldungen werden anders gemeldet als z.B. die Aktivierung eines Sensors und haben ihre eigene Komplexität
                  Wer diese Meldungen integrieren möchte kann dies über das Servicemeldungs-Script erreichen.
                  Dies geschieht über die JSON Datei des Scriptes die dann eingelesen und ausgewertet werden kann.

                  Link zum Script: https://forum.iobroker.net/topic/77816/vorlage-servicemeldungen-volume2

                  // Wer das Servicemeldungsscript nutzt kann damit verbinden und Sabotage oder Unreach als Alarm melden
                  const SM_CountSabotage  = 'javascript.0.ServicemeldungenVol2.Anzahl_SABOTAGE'   // bitte Pfad ggf anpassen falls das Servicemeldungsscript genutzt wird
                  const SM_CountUnreach   = 'javascript.0.ServicemeldungenVol2.Anzahl_UNREACH'    // bitte Pfad ggf  anpassen falls das Servicemeldungsscript genutzt wird
                  const SM_Meldungen_JSON = 'javascript.0.ServicemeldungenVol2.JSONAktuelleSM'    // bitte Pfad ggf  anpassen falls das Servicemeldungsscript genutzt wird
                  
                  
                  

                  Autoconfirm Servicemeldungen

                  Servicemeldungen können automatisch bestätigt werden. Hingegen müssen Einbruch, Wasser, Rauchmeldungen manuell quittiert werden.
                  eine Manuelle Quittierung ist auch für Servicemeldungen möglich, kann also eingestellt werden.
                  Anmerkung: Geoeffnet-Meldungen werden immer automatsch deaktiviert, wenn alles geschlossen ist

                  const ServiceMeldungSabotageAutoConfirm =  true;    // Wenn die Sabotage aufgehoben wird, dann wird die der SabotageDatenpunkt automatisch zurueckgesetzt bei true
                  const ServiceMMeldungStoerungAutoConfirm =  true;   // Wenn die Stoerung aufgehoben wird, dann wird die der StoerungsDatenpunkt automatisch zurueckgesetzt bei true
                  
                  
                  

                  ein paar fehlen noch

                  Script und Views findet ihr hier:

                  Das Script hat netto ca 2000 Zeilen. (ohne Kommentar-und Leerzeilen)
                  AlarmAdv Script:
                  AlarmAdv_V1-00.txt

                  JSON View. Die Tabellen greifen auf die JSON Datenpunkte zu.
                  Der View beinhaltet Widgets aus dem Material Design und Inventwo Adapter
                  AlarmViewJson.txt

                  HTML. Die Tabellen greifen auf die HTML Datenpunkte zu:
                  Der View beinhaltet Widgets aus dem Material Design Adapter.
                  AlarmViewHTML.txt

                  Debugging-Hinweise:

                  Bitte beachtet, dass ihr bei Fehler das Debug Protokoll mitlaufen lasst.
                  Der DebugLevel sollte dabei mindestens auf 2 stehen. 3 könnte auch notwendig werden
                  Es wird viele Zeilen geben. Ihr könnte auch in eine CSV Datei schreiben und dann hier im Thread posten.

                  //DEBUGGING----OPTIONAL-----------------------------------------------------------------------------------------------------------------------------
                  const debugLevel = 1 ;     // Empfehlung = 1
                  const SystemLog = false;  // schreib das Sytemprotokoll in ein externes log (sollte normalerweise deaktviert sein  nur bei Problemen verwenden)        
                  const PathSystemLog = "/opt/iobroker/log/Alarmscript.csv";             // Pfad und Dateiname des externen Logs 
                  //const PathSMLog = "/iobroker/log/Alarmscript.csv";            // Pfad des externen logs fuer Windows/  iobroker ist der angenommene iobroker home-pfad
                  
                  

                  vG Looxer

                  ScreenShot der Protokollierung

                  Alarmanlage_adv.png

                  sigi234S Online
                  sigi234S Online
                  sigi234
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #31

                  @looxer01

                  Das begreife ich noch nicht

                  Screenshot (1192).png

                  Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Immer Daten sichern!

                  L 1 Antwort Letzte Antwort
                  0
                  • sigi234S sigi234

                    @looxer01

                    Kann man {0_userdata.0.Alarm.Status.HTML_Alarmmeldung_Historie} auf xxx Zeilen beschränken?

                    Screenshot (1191).png

                    L Offline
                    L Offline
                    looxer01
                    schrieb am zuletzt editiert von
                    #32

                    @sigi234
                    ich weiß nicht, ob es da Unterschiede gibt zwischen VIS1 und VIS2
                    das ist ja ein HTML Basic Widget. Dementsprechend entscheidet die Höhe des Widgets über die Anzahl der Zeilen.

                    oder verstehe ich was falsch ?

                    sigi234S 1 Antwort Letzte Antwort
                    0
                    • L looxer01

                      @sigi234
                      ich weiß nicht, ob es da Unterschiede gibt zwischen VIS1 und VIS2
                      das ist ja ein HTML Basic Widget. Dementsprechend entscheidet die Höhe des Widgets über die Anzahl der Zeilen.

                      oder verstehe ich was falsch ?

                      sigi234S Online
                      sigi234S Online
                      sigi234
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #33

                      @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

                      @sigi234
                      ich weiß nicht, ob es da Unterschiede gibt zwischen VIS1 und VIS2
                      das ist ja ein HTML Basic Widget. Dementsprechend entscheidet die Höhe des Widgets über die Anzahl der Zeilen.

                      oder verstehe ich was falsch ?

                      Jupp, geht nur bei Table Widgets

                      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                      Immer Daten sichern!

                      L 1 Antwort Letzte Antwort
                      0
                      • sigi234S sigi234

                        @looxer01

                        Das begreife ich noch nicht

                        Screenshot (1192).png

                        L Offline
                        L Offline
                        looxer01
                        schrieb am zuletzt editiert von
                        #34

                        @sigi234
                        die Scenarien ist das was du an der oberfläche aktivieren oder deaktivieren kannst.
                        Die Zuordnung eines Filters ist wichtig. Damit wird der Scope der zu überwachenden Räume/Geräte eingestellt.

                        Dann erfolgt die Festlegung wie die Alarmierung erfolgen soll (Alert)

                        Die Prio ist dann noch on top und entscheidet welches Scenario gewählt werden soll, wenn ein Geräte mehreren Scenarien zugordnet ist.

                        Mach erst mal 1 oder 2 Scenarien

                        Beispiel:
                        z.B. Nachtruhe oder so. Dann ordnest du deine ganzen innen Sensoren zu. (Filter "innen")
                        evt macht es Sinn beim Filter einige Datenpunkte auszuschliessen. (z.B. möchte man ja die Fenster im Schlafzimmer ggf geöffnet lassen)

                        1. Scenario könnte das "Abwesend Scenario sein" auch könnte der Filter auf innen stehen. Diesmal ohne Ausschluss,

                        Das 2. Scenario sollte eine höhere Priorität haben. Dann wird es vorangig selektiert, wenn es denn akiviert ist.
                        Somit sind auch die Schlafzimmerfenster alle eingeschlossen bei Abwesenheit.

                        muss man etwas drüber nachdenken. Die Möglichkeiten sind sehr umfassend. Das soll eben eine gute Grundlage für mehr Automatisierung sein

                        vG Looxer

                        1 Antwort Letzte Antwort
                        0
                        • sigi234S sigi234

                          @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

                          @sigi234
                          ich weiß nicht, ob es da Unterschiede gibt zwischen VIS1 und VIS2
                          das ist ja ein HTML Basic Widget. Dementsprechend entscheidet die Höhe des Widgets über die Anzahl der Zeilen.

                          oder verstehe ich was falsch ?

                          Jupp, geht nur bei Table Widgets

                          L Offline
                          L Offline
                          looxer01
                          schrieb am zuletzt editiert von
                          #35

                          @sigi234
                          aber du hast das doch schon für die Servicemeldungen gemacht ?

                          sigi234S 1 Antwort Letzte Antwort
                          0
                          • L looxer01

                            @sigi234
                            aber du hast das doch schon für die Servicemeldungen gemacht ?

                            sigi234S Online
                            sigi234S Online
                            sigi234
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #36

                            @looxer01 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

                            @sigi234
                            aber du hast das doch schon für die Servicemeldungen gemacht ?

                            Ja, ist schon lange aus, ich mach mal eine Pause.:grinning:

                            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Immer Daten sichern!

                            1 Antwort Letzte Antwort
                            0
                            • Rene55R Offline
                              Rene55R Offline
                              Rene55
                              schrieb am zuletzt editiert von
                              #37

                              @looxer01 Ich hab jetzt diesen Thread (ich denke aufmerksam) gelesen und bin daran sehr interessiert. Trotz aller Spoiler habe ich kein Script gefunden. Hab ich das im starken Sonnenschein übersehen, oder ist es noch nicht soweit?

                              Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                              ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                              Wetterstation: Froggit WH3000SE V1.6.6

                              NegaleinN 1 Antwort Letzte Antwort
                              0
                              • Rene55R Rene55

                                @looxer01 Ich hab jetzt diesen Thread (ich denke aufmerksam) gelesen und bin daran sehr interessiert. Trotz aller Spoiler habe ich kein Script gefunden. Hab ich das im starken Sonnenschein übersehen, oder ist es noch nicht soweit?

                                NegaleinN Offline
                                NegaleinN Offline
                                Negalein
                                Global Moderator
                                schrieb am zuletzt editiert von
                                #38

                                @rene55 sagte in [Vorlage] Alarmanlage mit erweiterten Funktionen:

                                übersehen

                                ccc7314b-558b-4dff-aba3-52371cda6930-image.png

                                ° Node.js: 20.17.0 NPM: 10.8.2
                                ° Proxmox, Ubuntu 22.04.3 LTS
                                ° Fixer ---> iob fix

                                1 Antwort Letzte Antwort
                                0
                                • Rene55R Offline
                                  Rene55R Offline
                                  Rene55
                                  schrieb am zuletzt editiert von
                                  #39

                                  @negalein Oh mann, ich sollte die Sonnenbrille ausziehen und den Monitor heller machen.
                                  Gefunden - Danke.

                                  Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                                  ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                                  Wetterstation: Froggit WH3000SE V1.6.6

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


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  380

                                  Online

                                  32.5k

                                  Benutzer

                                  81.7k

                                  Themen

                                  1.3m

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

                                  • Du hast noch kein Konto? Registrieren

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