Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. nvd126

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    N
    • Profile
    • Following 0
    • Followers 0
    • Topics 13
    • Posts 68
    • Best 5
    • Groups 1

    nvd126

    @nvd126

    7
    Reputation
    31
    Profile views
    68
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    nvd126 Follow
    Starter

    Best posts made by nvd126

    • [VIS] Cleane HTML-Mobile VIS ohne Scrollen

      Hallo,

      aufgrund einer nachfrage in der FB-Gruppe möchte ich hier euch meine Mobile VIS zur Verfügung stellen.
      Meine Anforderungen und Gedanken waren:

      • KEIN Scrollen am Handy

      • maximal 3 "Klicks" bis ein Element gesteuert wird.

      • Alle möglichen Informationen / Optionen sollen vorhanden sein. Aber es soll nur das sichtbar sein, was man auch explizit sehen will.

      Meine Vorgehensweise:
      Ich habe mir vier Haupt-Views erstellt. In diesen habe ich ein HTML-Widget erstellt. Den Code für das HTML-Widget habe ich mir im WWW zusammengesucht (CodePen & w3schools sei Dank).
      Aufgrund der Einfachheit habe ich der Navbar händisch die Active-Class gegeben.
      Unterhalb der NAV-Bar sind immer HTML Accordions angeordnet. Manchmal ist eines per Default geöffnet. Das wiederum schließt sich, nachdem man das nächste Accordion angeklickt hat. Nur so erreiche ich auch, dass ich nicht scrollen muss.
      Teilweise sind in den Accordions Tabellen enthalten, oder auch andere Views eingefügt via. Embed. In diesen anderen Views habe ich für jeden Raum die Buttons platziert und via. Embed eingefügt.
      Die Statistiken sind mit Float gemacht und ebenfalls via. Embed eingefügt.

      Nun mal etwas Code des HTML-Widgets auf meiner Hauptseite. Hier sind alle relevanten Sachen, welche ich verwende, enthalten zum Nachbauen. Die Accordions, die Tabellen, die NAV-Bar.
      Wer es schnell einmal testen möchte:
      Vis Öffnen -> HTML Widget einfügen -> beim HTML-Widget unter CSS Allgemein die Position auf "relative", den Wert "width" und "height" auf 100% stellen. Dann noch den CSS-Code in den CSS-Tab einfügen und zu guter letzt noch den HTML-Code in das HTML-Widget einfügen.

      <!-- Add icon library -->
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
      <div class="icon-bar">
        <a class="active" href="#01_Home"><i class="fa fa-info"></i></a>
        <a href="#02_Haus"><i class="fa fa-home"></i></a>
        <a href="#03_Statistik"><i class="fa fa-line-chart"></i></a>
        <a href="#04_Technik"><i class="fa fa-server"></i></a>
      </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
      <!--/////////////////////////////////////////////////////////////////////////-->
      <div class="tab">
          <input type="radio" class="accordion" id="rd24" checked="true" name="rd">
          <label class="tab-label" for="rd24">Allgemein</label>
          <div class="tab-content">
              <table id="customers">
                  <tr>
                      <td>Letzte Anwesenheit:</td>
                      <td>{DATENPUNKT}</td>
                  </tr>
                  <tr>
                      <th colspan="2" align=left>Witterung</th>
                  </tr>
                  <tr>
                      <td>Außentemperatur</td>
                       <td>{DATENPUNKT}</td>
                  </tr>
                  <tr>
                      <td>Relative Luftfeuche</td>
                      <td>{DATENPUNKT}</td>
                  </tr>
                  <tr>
                      <td>Relative Luftfeuche</td>
                       <td>{DATENPUNKT}</td>
                  </tr>
                  <tr>
                      <th colspan="2" align=left>Energiezähler</th>
                  </tr>
                  <tr>
                      <td>Stromzählerstand</td>
                      <td>{DATENPUNKT}</td>
                  </tr>
                  <tr>
                      <td>Wasserzählerstand</td>
                      <td>{DATENPUNKT}</td>
                  </tr>
                  <tr>
                      <th  colspan="2" align=left>Müllkalender</th>
                  </tr>
                  <tr>
                      <td>{DATENPUNKT}</td>
                      <td>{DATENPUNKT}</td>
                  </tr>
              </table>
          </div>
      </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
      <!--/////////////////////////////////////////////////////////////////////////-->
      <div class="col">
          <div class="tabs">
              <!--/////////////////////////////////////////////////////////////////////////-->
              <div class="tab">
                  <input type="radio" class="accordion" id="rd23" name="rd">
                  <label class="tab-label" for="rd23">To-Do Liste</label>
                  <div class="tab-content">
                      <embed type="text/html" src="/vis/index.html#99_Todo" width="100%" height="415">
                  </div>
              </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
      <!--/////////////////////////////////////////////////////////////////////////-->
            <div class="tab">
                  <input type="radio" class="accordion" id="rd20" name="rd">
                  <label class="tab-label" for="rd20">Stromverbrauch und Kosten</label>
                  <div class="tab-content">
                      <table id="customers">
                          <tr>
                              <th colspan="1">Zeitraum</th>
                              <th colspan="1">Verbrauch kWh</th>
                              <th colspan="1">Kosten €</th>
                          </tr>
                          <tr>
                              <td align=right>Heute:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Gestern:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Diese Woche</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letzte Woche:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Dieser Monat:</td>
                              <td align=center>{DATENPUNKT}</td> 
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letzter Monat:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Dieses Quartal:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letztes Quartal:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Dieses Jahr:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letztes Jahr:</td>
                              <td align=center>{DATENPUNKT}</td> 
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                      </table>
                  </div>
              </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
              <div class="tab">
                  <input type="radio" class="accordion" id="rd21" name="rd">
                  <label class="tab-label" for="rd21">Wasserverbrauch und Kosten</label>
                  <div class="tab-content">
                      <table id="customers">
                          <tr>
                              <th colspan="1">Zeitraum</th>
                              <th colspan="1">Verbrauch m³</th>
                              <th colspan="1">Kosten € </th>
                          </tr>
                          <tr>
                              <td align=right>Heute:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Gestern:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Diese Woche</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letzte Woche:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Dieser Monat:</td>
                              <td align=center>{DATENPUNKT}</td> 
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letzter Monat:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Dieses Quartal:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letztes Quartal:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Dieses Jahr:</td>
                              <td align=center>{DATENPUNKT}</td>
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                          <tr>
                              <td align=right>Letztes Jahr:</td>
                              <td align=center>{DATENPUNKT}</td> 
                              <td align=center>{DATENPUNKT}</td>
                          </tr>
                      </table>
                  </div>
              </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
              <div class="tab">
                  <input type="radio" class="accordion" id="rd22" name="rd">
                  <label class="tab-label" for="rd22">Platzhalter</label>
                  <div class="tab-content">
                        <font color=white> Noch keinen Verwendungszweck hierfür gefunden... :(</font>    
                  </div>
              </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
          </div>
        </div>
      

      Nun noch die dazugehörige CSS:

      body {
        background-color: #404040;
      }
      /*
      Nachfolgend NAV-BAR
      */
       .icon-bar {
        width: 100%;
        background-color: #555;
        overflow: auto;
      }
      
      .icon-bar a {
        float: left;
        text-align: center;
        width: 25%; 
        padding: 12px 0;
        transition: all 0.3s ease;
        color: white;
        font-size: 25px;
      }
      
      .icon-bar a:hover {
        background-color: #000;
      }
      
      .active {
        background-color: #04AA6D;
      }
      
      /* 
      Nachfolgend alle Accordions 
      */
      
      input.accordion {
        position: absolute;
        opacity: 0;
        z-index: -1;
      }
      
      /* Accordion styles */
      .tabs {
        border-radius: 8px;
        overflow: hidden;
        box-shadow: 0 4px 4px -2px rgba(0, 0, 0, 0.5);
      }
      .tab {
        width: 100%;
        color: white;
        overflow: hidden;
      }
      .tab-label {
        display: flex;
        justify-content: space-between;
        padding: 1em;
        background: #2c3e50;
        font-weight: bold;
        cursor: pointer;
          border: 1px solid #FFFFFF;
          border-width:  1px 0 0 0;
        /* Icon */
      }
      .tab-label:hover {
        background: #1a252f;
      }
      .tab-label::after {
        content: "\276F";
        width: 1em;
        height: 1em;
        text-align: center;
        transition: all 0.35s;
      }
      .tab-label-kleiner {
        display: flex;
        justify-content: space-between;
        padding: 0.4em;
        background: #2c3e50;
        font-weight: bold;
        cursor: pointer;
          border: 1px solid #FFFFFF;
          border-width:  1px 0 0 0;
        /* Icon */
      }
      .tab-label-kleiner:hover {
        background: #1a252f;
      }
      .tab-label-kleiner::after {
        content: "\276F";
        width: 1em;
        height: 1em;
        text-align: center;
        transition: all 0.35s;
      }
      .tab-content {
        max-height: 0;
        padding: 0 0em;
        color: #2c3e50;
        background: #404040;
        transition: all 0.35s;
      }
      .tab-content-mittig {
        max-height: 0;
        padding: 0 1em;
        color: #2c3e50;
        background: #404040;
        transition: all 0.35s;
      }
      .tab-close {
        display: flex;
        justify-content: flex-end;
        padding: 1em;
        font-size: 0.75em;
        background: #2c3e50;
        cursor: pointer;
      }
      .tab-close:hover {
        background: #1a252f;
      }
      input:checked + .tab-label {
        background: #1a252f;
      }
      input:checked + .tab-label-kleiner {
        background: #1a252f;
      }
      input:checked + .tab-label::after {
        transform: rotate(90deg);
      }
      input:checked + .tab-label-kleiner::after {
        transform: rotate(90deg);
      }
      input:checked ~ .tab-content {
        max-height: 100vh;
        padding: 0em;
      }
      input:checked ~ .tab-content-mittig {
        max-height: 100vh;
        padding: 1em;
      }
      
      /* 
      Nachfolgend die Tabellen
      */
      #customers {
        font-family: Arial, Helvetica, sans-serif;
        border-collapse: collapse;
        width: 100%;
        color: white;
      }
      
      #customers td, #customers th {
        border: 1px solid #ddd;
        padding: 6px;
      }
      
      #customers tr:nth-child(even){background-color: #404040;}
      
      #customers tr:hover {background-color: #ddd;}
      
      #customers th {
        padding-top: 8px;
        padding-bottom: 8px;
        background-color: #2c3e50;
        color: white;
      }
      
      

      Anmerkung:
      tab-label-kleiner ist sinnvoll für zweizeilige "Überschriften" eines Accordions. Siehe Bild 2 bei mir.
      tab-content-mittig ist bei der mobilen Ansicht fast immer sinnvoll, um nicht wertvollen Platz an den kleinen Bildschirmen zu verlieren innerhalb der Accordions.

      Außerdem hier noch ein paar Bilder
      VIS1.PNGVIS2.PNGVIS3.PNGVIS4.PNG

      Falls noch wer einfache Ideen bzgl. HTML-Buttons hat würde ich mich freuen... [am besten Ein Beispiel mit HTML-Code, CSS Code ggf. JS Code sowie einer kleinen Anleitung wie der Datenpunkt damit nun gesteuert wird und wie hier der Status am Button dargestellt wird, würde ich mich mächtig freuen. Die Websocket Doku sorgte für eine kleine Kernschmelze in meinem Kopf 😞 ]

      Falls es noch Fragen gibt gerne Fragen, für bessere Ideen was die Farben angeht bin ich übrigens auch offen .

      posted in Praktische Anwendungen (Showcase)
      N
      nvd126
    • RE: Adapter "smartmeter"

      @homoran

      Ich habe zwei USB-Geräte an meinem Server angeschlossen. Hatte ursprünglich mal das Problem, dass die nach einem Neustart zwischen ttyUSB0 und ttyUSB1 hin und her getauscht sind. Musste dann immer händisch einstellen, welcher Port was ist. Das nervte. Hatte dann es so gemacht, dass ich anhand des Gerätenamens oder ID eine feste Zuordnung mache und nach einem Neustart keine Probleme da sind. Für den IR-Lesekopf ist es dann "stromzahler" ohne ä, da Angst vor Sonderzeichen wie ä ö ü.

      @apollon77 und @Homoran
      Letztlich scheint der Port wohl irgendwie Blockiert gewesen zu sein. Hatte (bevor ich mit der Fehlersuche grade anfangen wollte) den Container entfernt und geupdatet und dann ging es sofort auf Anhieb. Denke weniger das es an einem Update lag, sondern durch einen Neustart...(wobei ich den Container selbst zuvor schon neu gestartet hatte...) komisch jedenfalls. Aber es funktioniert nun. 🙂

      posted in ioBroker Allgemein
      N
      nvd126
    • RE: VIS: Neuladen (?) abschalten

      @djmarc75 Die beiden Punkte sind aufgetaucht, nachdem ich pure Websockets aktiviert habe.
      Aber auch vorher, wo ich das noch nicht umgestellt hatte, gab es die selbe Problematik.

      Kann es vielleicht auch etwas mit dem folgenden Inhalt der "socket.io.js" zu tun haben?

              options.pongTimeout       = parseInt(options.pongTimeout,       10) || 60000; // Timeout for answer for ping (pong)
              options.pingInterval      = parseInt(options.pingInterval,      10) || 5000;  // Ping interval
              options.connectTimeout    = parseInt(options.connectTimeout,    10) || 3000;  // connection request timeout
              options.authTimeout       = parseInt(options.authTimeout,       10) || 3000;  // Authentication timeout
              options.connectInterval   = parseInt(options.connectInterval,   10) || 1000;  // Interval between connection attempts
              options.connectMaxAttempt = parseInt(options.connectMaxAttempt, 10) || 5;     // Every connection attempt the interval increasing at options.connectInterval till max this number
      

      @dos1973
      Hier ein Beispiel eines Meisterwerkes ohne JS.
      https://codepen.io/raubaca/pen/PZzpVe
      Ich nutze die rechte Version davon.

      posted in Visualisierung
      N
      nvd126
    • Was passiert wenn man Websockets erzwingt?

      Hallo,

      ich habe noch nicht ganz verstanden - trotz recherche - was der Unterschied zwischen dem socket.io Adapter ohne Websockets erzwingen zu mit Websockets erzwingen.
      Was ändert sich genau an der Kommunikation wenn man das umstellt?
      Was muss man so grob ändern wenn man eine funktionierende Kommunikation ohne erzwungene Websockets hat?
      Gibt's vor oder Nachteile?

      Danke 🙂

      posted in ioBroker Allgemein
      N
      nvd126
    • VIS: Bindingbegrenzung deaktivieren

      Hallo,

      wie kann ich diese Begrenzung von 50 pro Widget ändern bzw. deaktivieren?
      Es läuft mit 50 alles super flott und flüssig, brauche jedoch mehr.

      Danke.

      posted in Visualisierung
      N
      nvd126

    Latest posts made by nvd126

    • [Beispiel/How-To] Komplett eigene Visualisierung

      Hallo,

      neulich habe ich meine in VIS bestehende HTML-Visualisierung etwas umgebaut, sodass ich endlich nicht mehr in VIS & Co. arbeiten muss. Ich rufe alle Datenpunkte selbstständig ab.
      Ich habe meinen Code etwas verkürzt um ein Beispiel zu geben für meine Küche. Dort habe ich Licht, welches ich wie folgt schalte: 0%, 25%, 50%, 75%, 100%. Die Steckdosen und Anschlüsse schalte ich nur um - ist ein und der selbe Button der je nach Zustand Ein oder Aus anzeigt (CSS-Classe wird geändert). Notwendig für das ganze ist der Socketio-Adapter OHNE erzwungene Websockets. Achtet auch darauf, dass ihr euch die conn.js organisiert ausm Github und sie anständig im Head verlinkt.

      Hier das Beispiel:

      <head>
      	<meta name="apple-mobile-web-app-capable" content="yes">
      	<meta name="viewport" content="width=device-width, initial-scale=1.0">
      	<link rel="stylesheet" href="css/style.css">
      	<link rel="stylesheet" href="css/skalierung.css">
      	<script type="text/javascript" src="js/conn.js"></script>
      	<script type="text/javascript" src="http://IP-ADRESSE:8084/socket.io/socket.io.js"></script>
      </head>
      <body>
      <!--////////////////////////////////////////////////////////////////////////////
      Nachfolgend der Teil, welcher die Daten von IOB holt und auch hingibt. Datapoints ist 
      für Lesevorgänge. Datapoints2 ist für alles was geschrieben werden muss (=Schalten/dimmen).
      /////////////////////////////////////////////////////////////////////////////-->
      	<script type="text/javascript">
      	const dataPoints = {
      	// Beleuchtung
      		"javascript.0.Kuchentext": { elementId: "Kuchentext", value: null },
      		"knx.0.Obergeschoss.Status.DA1_A_Kuche_Dimmwert": { elementId: "Kuche_Hauptlicht_Dimmwert", value: null },
      		"knx.0.Obergeschoss.Status.DA1_B_Kuche_Tischlicht_Dimmwert": { elementId: "Kuche_Tischlicht_Dimmwert", value: null },
      	// Steckdosen
      		"knx.0.Obergeschoss.Status.SA_A_E_Herd_schalten_status": { elementId: "Kuche_Herd_schalten_status", value: null },
      		"knx.0.Obergeschoss.Status.WL_C_Spuehlmaschine_schalten_status": { elementId: "Kuche_Spuhlmaschine_schalten_status", value: null },
      		"knx.0.Obergeschoss.Status.SA_D_Steckdosen_Kuche_schalten_status": { elementId: "Kuche_Steckdosen_schalten_status", value: null },
      	// Zeiten 
      		"javascript.0.SA_A_E_Herd_schalten_status": { elementId: "Herd_schalten_status", value: null },
      		"javascript.0.WL_C_Spuehlmaschine_schalten_status": { elementId: "Spuehlmaschine_schalten_status", value: null },
      		"javascript.0.SA_D_Steckdosen_Kuche_schalten_status": { elementId: "Steckdosen_Kuche_schalten_status", value: null },
      	};
      
      	const dataPoints2 = {
      	// Beleuchtung
      		"knx.0.Obergeschoss.Beleuchtung.DA1_A_Kuche_Licht_absolut_dimmen": { elementId: "Kuche_Hauptlicht_dimmen", value: null },
      		"knx.0.Obergeschoss.Beleuchtung.DA1_B_Kuche_Tischlicht_absolut_dimmen": { elementId: "Kuche_Tischlicht_dimmen", value: null },
      	// Steckdosen
      		"knx.0.Obergeschoss.Anschlüsse.SA_A_E_Herd_schalten": { elementId: "Kuche_Herd_schalten", value: null },
      		"knx.0.Obergeschoss.Anschlüsse.WL_C_Spuehlmaschine_schalten": { elementId: "Kuche_Spuhlmaschine_schalten", value: null },
      		"knx.0.Obergeschoss.Anschlüsse.SA_D_Steckdosen_Kuche_schalten": { elementId: "Kuche_Steckdosen_schalten", value: null },
      
      	};
      
      	// Funktion zum Setzen eines neuen Werts für einen Datenpunkt
      	function setDataPoint(id, newValue) {
      		if (id in dataPoints2) {
      			servConn.setState(id, newValue, function(error) {
      				if (error) {
      					console.error('Error setting state for ' + id + ': ', error);
      				} else {
      					console.log('Set state for ' + id + ' to ' + newValue);
      					dataPoints2[id].value = newValue;
      					let element = document.getElementById(dataPoints2[id].elementId);
      					if (element) {
      						element.innerHTML = newValue;
      						console.log('Updated element ' + dataPoints2[id].elementId + ' with new value: ' + newValue);
      					} else {
      						console.error('Element with ID ' + dataPoints2[id].elementId + ' not found.');
      					}
      				}
      			});
      		} else {
      			console.error('DataPoint with ID ' + id + ' not found.');
      		}
      	}
      
      	document.addEventListener("DOMContentLoaded", function() {
      		servConn.namespace = 'mobile.0';
      		servConn._useStorage = false;
      
      		servConn.init({
      			name: 'mobile.0', 
      			connLink: 'http://IP-ADRESSE:8084>',
      			socketSession: ''
      		}, {
      			onConnChange: function (isConnected) {
      				if (isConnected) {
      					console.log('connected');
      					Object.keys(dataPoints).forEach(id => {
      						servConn.getStates(id, (error, states) => {
      							if (error) {
      								console.error('Error fetching state for ' + id + ': ', error);
      							} else if (states[id]) {
      								dataPoints[id].value = states[id].val; // Wert speichern
      								console.log('Fetched state for ' + id + ': ' + dataPoints[id].value);
      
      								let element = document.getElementById(dataPoints[id].elementId);
      								if (element) {
      									element.innerHTML = dataPoints[id].value;
      									console.log('Updated element ' + dataPoints[id].elementId + ' with value: ' + dataPoints[id].value);
      								} else {
      									console.error('Element with ID ' + dataPoints[id].elementId + ' not found.');
      								}
      							} else {
      								console.error('State for ' + id + ' not found.');
      							}
      						});
      					});
      				} else {
      					console.log('disconnected');
      				}
      			},
      			onRefresh: function () {
      				window.location.reload();
      			},
      			onUpdate: function (id, state) {
      				setTimeout(function () {
      					if (id in dataPoints) {
      						dataPoints[id].value = state.val; // Aktualisieren des Werts bei Änderungen
      						console.log('NEW VALUE of ' + id + ': ' + dataPoints[id].value);
      
      						let element = document.getElementById(dataPoints[id].elementId);
      						if (element) {
      							element.innerHTML = dataPoints[id].value;
      							console.log('Updated element ' + dataPoints[id].elementId + ' with new value: ' + dataPoints[id].value);
      						} else {
      							console.error('Element with ID ' + dataPoints[id].elementId + ' not found.');
      						}
      					}
      				}, 0);
      			},
      			onError: function (err) {
      				window.alert('Cannot execute ' + err.command + ' for ' + err.arg + ', because of insufficient permissions', 'Insufficient permissions', 'alert', 600);
      			}
      		});
      	});
      	</script>
      <!--////////////////////////////////////////////////////////////////////////////
      Navigationsbar
      /////////////////////////////////////////////////////////////////////////////-->
      	<div class="icon-bar">
      		<a href="home.html"><img class="navicon" src="img/home.png"></a>
      		<a class="active" href="haus.html"><img class="navicon" src="img/haus.png"></a>
      		<a href="statistik.html"><img class="navicon" src="img/statistik.png"></a>
      		<a href="technik.html"><img class="navicon" src="img/technik.png"></a>
      	</div>
      <!--////////////////////////////////////////////////////////////////////////////
      Licht Dimmen und Steckdosen schalten für die Küche
      /////////////////////////////////////////////////////////////////////////////-->
          <div class="col">
              <div class="tabs">
                  <div class="tab">
                      <input type="radio" class="accordion" id="rd2" name="rd">
                      <label class="tab-label-kleiner" for="rd2"><div id="Kuchentext"></div></label>
                      <div class="tab-content">
                          <table id="tab_haus">
      <!--/////////////////////////////////-->
      						<tr>
      							<td colspan=2><b>Hauptbeleuchtung</b><br>
      								<div class="button-group">
      									<button id="Kuche_Hauptlicht_0" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_A_Kuche_Licht_absolut_dimmen', 0)">
      										AUS
      									</button>
      									<button id="Kuche_Hauptlicht_25" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_A_Kuche_Licht_absolut_dimmen', 25)">
      										25%
      									</button>
      									<button id="Kuche_Hauptlicht_50" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_A_Kuche_Licht_absolut_dimmen', 50)">
      										50%
      									</button>
      									<button id="Kuche_Hauptlicht_75" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_A_Kuche_Licht_absolut_dimmen', 75)">
      										75%
      									</button>
      									<button id="Kuche_Hauptlicht_100" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_A_Kuche_Licht_absolut_dimmen', 100)">
      										EIN
      									</button>
      								</div>
      							</td>
      						</tr>
      <!--/////////////////////////////////-->
      						<tr>
      							<td colspan=2><b>Tischlicht</b><br>
      								<div class="button-group">
      									<button id="Kuche_Tischlicht_0" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_B_Kuche_Tischlicht_absolut_dimmen', 0)">
      										AUS
      									</button>
      									<button id="Kuche_Tischlicht_25" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_B_Kuche_Tischlicht_absolut_dimmen', 25)">
      										25%
      									</button>
      									<button id="Kuche_Tischlicht_50" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_B_Kuche_Tischlicht_absolut_dimmen', 50)">
      										50%
      									</button>
      									<button id="Kuche_Tischlicht_75" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_B_Kuche_Tischlicht_absolut_dimmen', 75)">
      										75%
      									</button>
      									<button id="Kuche_Tischlicht_100" type="checkbox" class="button button__outline" onclick="setDimmen('knx.0.Obergeschoss.Beleuchtung.DA1_B_Kuche_Tischlicht_absolut_dimmen', 100)">
      										EIN
      									</button>
      								</div>
      							</td>
      						</tr>
      <!--/////////////////////////////////-->
      						<tr>
      							<td>
      								<b> Herd und Backofen </b><br><div class="timeklein" id="Herd_schalten_status"></div>
      							</td>
      						 	<td>
      								<button id="Herd_und_Backofen" type="checkbox" class="einzel-button einzel-button__outline" onClick="schalten('Herd_und_Backofen')"></button>
      								<label></label>
      							</td>
      						</tr>
      <!--/////////////////////////////////-->
      						<tr>
      							<td>
      								<b>Spühlmaschine</b><br><div class="timeklein" id="Spuehlmaschine_schalten_status"></div>
      							</td>
      							<td>
      								<button id="Spuhlmaschine" type="checkbox" class="einzel-button einzel-button__outline" onClick="schalten('Spuhlmaschine')"></button>
      								<label></label>
      							</td>
      						</tr>
      <!--/////////////////////////////////-->
      						<tr>
      							<td>
      								<b>Steckdosen</b><br><div class="timeklein" id="Steckdosen_Kuche_schalten_status"></div>
      							</td>
      							<td>
      								<button id="Kuche_Steckdosen" type="checkbox" class="einzel-button einzel-button__outline" onClick="schalten('Kuche_Steckdosen')"></button>
      								<label></label>
      							</td>
      						</tr>
      <!--/////////////////////////////////-->
      					</table>
      				</div>
      			</div>
              </div>
          </div>
      
      	 <script>
      	///////////////////////////////////////////////////////////////////////////////////////
      	// Nachfolgend die Funktion um das Licht dimmen zu können
      	///////////////////////////////////////////////////////////////////////////////////////
      	function setDimmen(lichtID, value) {
      		setDataPoint(lichtID, value);
      	}
      	///////////////////////////////////////////////////////////////////////////////////////
      	// Statusanzeige der Beleuchtung
      	///////////////////////////////////////////////////////////////////////////////////////
      	setInterval(function() {
      		const areas = [
      			{prefix: "Kuche_Hauptlicht", valuePath: "knx.0.Obergeschoss.Status.DA1_A_Kuche_Dimmwert"},
      			{prefix: "Kuche_Tischlicht", valuePath: "knx.0.Obergeschoss.Status.DA1_B_Kuche_Tischlicht_Dimmwert"},
      		];
      		areas.forEach(area => {
      			// Alle Klassen zurücksetzen
      			document.querySelectorAll(`[id^="${area.prefix}"]`).forEach(function(element) {
      				element.className = element.className.replace("--primary:active", "").replace("button__outline", "").trim();
      				element.style.backgroundColor = ""; // Hintergrundfarbe zurücksetzen
      			});
      			
      			// Klassen basierend auf dem Dimmwert hinzufügen
      			[0, 25, 50, 75, 100].forEach(value => {
      				let element = document.getElementById(`${area.prefix}_${value}`);
      				if (dataPoints[area.valuePath].value == value) {
      					element.className += " --primary:active";
      					if (value === 0) {
      						element.style.backgroundColor = "#04AA6D";
      					}
      				} else {
      					element.className += " button__outline";
      				}
      			});
      		});
      	}, 1000); // 1000 Millisekunden entsprechen 1 Sekunde
      	/////////////////////////////////////////////////////////////////////////////////////////
      	// Funktion um Buttons bzw. Anschlüsse schalten zu können
      	///////////////////////////////////////////////////////////////////////////////////////
      	function schalten(componentFunction) {
      		const components = {
      		'Herd_und_Backofen': 'knx.0.Obergeschoss.Anschlüsse.SA_A_E_Herd_schalten',
      		'Kuche_Steckdosen': 'knx.0.Obergeschoss.Anschlüsse.SA_D_Steckdosen_Kuche_schalten',
      		'Spuhlmaschine': 'knx.0.Obergeschoss.Anschlüsse.WL_C_Spuehlmaschine_schalten',
      		};
      		const component = components[componentFunction];
      		this.servConn._socket.emit('getStates', component, (error, states) => {
      			const currentValue = states[component].val;
      			this.servConn._socket.emit('setState', component, !currentValue);
      		});
      	}
      	/////////////////////////////////////////////////////////////////////////////////////////
      	// Statusanzeige der Buttons
      	///////////////////////////////////////////////////////////////////////////////////////
      	function updateAllDeviceStatuses() {
      		const devices = [
      			{ id: 'knx.0.Obergeschoss.Status.SA_A_E_Herd_schalten_status', elementId: 'Herd_und_Backofen' },
      			{ id: 'knx.0.Obergeschoss.Status.SA_D_Steckdosen_Kuche_schalten_status', elementId: 'Kuche_Steckdosen' },
      			{ id: 'knx.0.Obergeschoss.Status.WL_C_Spuehlmaschine_schalten_status', elementId: 'Spuhlmaschine' },
      		];
      
      		devices.forEach(device => {
      			const status = dataPoints[device.id].value;
      			const element = document.getElementById(device.elementId);
      
      			if (element) {
      				if (status === false) {
      					element.style.backgroundColor = "#04AA6D";
      					element.innerHTML = "Aus";
      				} else if (status === true) {
      					element.style.backgroundColor = "#dd5800";
      					element.innerHTML = "Ein";
      				} else {
      					// unexpected value handling
      				}
      			} else {
      				// element not found handling
      			}
      		});
      	}
      
      	// Status beider Geräte jede Sekunde aktualisieren
      	setInterval(updateAllDeviceStatuses, 1000);
      	/////////////////////////////////////////////////////////////////////////////////////////
      	</script>
      </body>
      

      Bei Fragen fragt ruhig.

      posted in Visualisierung
      N
      nvd126
    • RE: Was passiert wenn man Websockets erzwingt?

      Danke für die Antworten. Ohne Websocket erzwingen scheint es für mich sinnvoller zu sein bzgl. Visualisierung.
      Hab nämlich mein Binding-Monster aka Visualisierung aus der Vis raus geholt und eigenständig aufgesetzt und es funktioniert schnell und fehlerfrei.

      Hatte gelesen das empfohlen wird nur noch die Websockets zu nutzen. Ist das nur ein Tipp oder weil alles andere später nicht mehr unterstützt wird?

      posted in ioBroker Allgemein
      N
      nvd126
    • Was passiert wenn man Websockets erzwingt?

      Hallo,

      ich habe noch nicht ganz verstanden - trotz recherche - was der Unterschied zwischen dem socket.io Adapter ohne Websockets erzwingen zu mit Websockets erzwingen.
      Was ändert sich genau an der Kommunikation wenn man das umstellt?
      Was muss man so grob ändern wenn man eine funktionierende Kommunikation ohne erzwungene Websockets hat?
      Gibt's vor oder Nachteile?

      Danke 🙂

      posted in ioBroker Allgemein
      N
      nvd126
    • RE: VIS2 - Warum geht "var variable = {Datenpunkt}" nicht?

      @codierknecht Danke für die Antwort.
      Ich möchte den Wert des Objektes in einer JS-Variable speichern. Ist das bei VIS2 nicht mehr möglich?

      posted in Visualisierung
      N
      nvd126
    • VIS2 - Warum geht "var variable = {Datenpunkt}" nicht?

      Hallo,

      brauche für meine Visualisierung unbedingt die Werte aus Objekten im HTML-Widget (und da innerhalb von Scripten). Mir werden die Werte nicht mal in der Konsole angezeigt.

      Beispiel:

      var Buro_Hauptlicht_Dimmwert = {knx.0.Obergeschoss.Status.DA2_A_Buro_Dimmwert};
      

      Zum Debuggen hab ich mal folgendes eingegeben:

      console.log("Buro_Hauptlicht_Dimmwert:", Buro_Hauptlicht_Dimmwert);
      console.log("Buro_Hauptlicht_Dimmwert2:", {knx.0.Obergeschoss.Status.DA2_A_Buro_Dimmwert});
      

      In der Konsole erscheint folgendes:

      Buro_Hauptlicht_Dimmwert: undefined
      Buro_Hauptlicht_Dimmwert2: undefined
      

      Warum ist das so? In VIS1 ging es noch so.
      Was muss ich ändern?

      Danke

      posted in Visualisierung
      N
      nvd126
    • RE: Adapter "smartmeter"

      @homoran

      Ich habe zwei USB-Geräte an meinem Server angeschlossen. Hatte ursprünglich mal das Problem, dass die nach einem Neustart zwischen ttyUSB0 und ttyUSB1 hin und her getauscht sind. Musste dann immer händisch einstellen, welcher Port was ist. Das nervte. Hatte dann es so gemacht, dass ich anhand des Gerätenamens oder ID eine feste Zuordnung mache und nach einem Neustart keine Probleme da sind. Für den IR-Lesekopf ist es dann "stromzahler" ohne ä, da Angst vor Sonderzeichen wie ä ö ü.

      @apollon77 und @Homoran
      Letztlich scheint der Port wohl irgendwie Blockiert gewesen zu sein. Hatte (bevor ich mit der Fehlersuche grade anfangen wollte) den Container entfernt und geupdatet und dann ging es sofort auf Anhieb. Denke weniger das es an einem Update lag, sondern durch einen Neustart...(wobei ich den Container selbst zuvor schon neu gestartet hatte...) komisch jedenfalls. Aber es funktioniert nun. 🙂

      posted in ioBroker Allgemein
      N
      nvd126
    • RE: Adapter "smartmeter"

      Hallo,

      habe gestern einen neuen Stromzähler bekommen und auch sofort freigeschaltet mit dem PIN.

      Es ist ein DD3 2R06 ETA - 0DZ1. Leider bekomme ich es nicht zum laufen.
      Vorher hat alles hervorragend mit dem alten Zähler funktioniert.

      Also ich habe einen Weidmann IR-Lese/Schreibkopf.
      Wenn ich schaue was so an Daten ankommt mit

      docker exec iobroker cat /dev/stromzahler
      

      erhalte ich folgendes (Auszug der ganzen Daten):

      
      1-0:1.8.0*255.7.0*255(000218.86*W)
      1-0:76.7107
      
      1-0:0.0.00:2.8.0*255(000001.17000000*kWh0008.39*W)
      1-0::0.0.0*255(1EBZ.7.0*255(000384.5(001C0104)
      0-055(SERIENNUMMER:36.7.0*255(00)
      0-0:96.8.0*22682423)
      1-0:155(000156.57*W)4)
      !
      
      

      Also der Lesekopf erfasst die Daten und im iOBroker sind sie Verfügbar im Container. Im Log zum Adapter sehe ich folgendes:

      
      smartmeter.1
      2025-01-15 10:36:42.789	debug	SET MESSAGE TIMEOUT TIMER: 120000
      
      smartmeter.1
      2025-01-15 10:36:42.788	debug	SERIALPORT OPEN
      
      smartmeter.1
      2025-01-15 10:36:42.786	debug	CREATE SERIALPORT: 9600 7 1 even
      
      smartmeter.1
      2025-01-15 10:35:42.785	debug	SCHEDULE NEXT RUN IN 60s
      
      smartmeter.1
      2025-01-15 10:35:42.785	debug	SERIALPORT CLOSE
      
      smartmeter.1
      2025-01-15 10:35:42.783	debug	Transport Reset!! Restart = true
      
      smartmeter.1
      2025-01-15 10:35:42.782	debug	Error: No or too long answer from Serial Device after last request.
      
      smartmeter.1
      2025-01-15 10:35:42.782	warn	No or too long answer from Serial Device after last request.
      
      smartmeter.1
      2025-01-15 10:35:42.781	debug	Error: No or too long answer from Serial Device after last request.
      
      smartmeter.1
      2025-01-15 10:35:42.780	debug	MESSAGE TIMEOUT TRIGGERED
      
      smartmeter.1
      2025-01-15 10:33:42.785	silly	States system redis pmessage system.adapter.smartmeter.1.logLevel/system.adapter.smartmeter.1.logLevel:{"val":"silly","ack":true,"ts":1736933622776,"q":0,"from":"system.adapter.smartmeter.1","lc":1736929803744}
      
      smartmeter.1
      2025-01-15 10:33:42.782	debug	connected set to false
      
      smartmeter.1
      2025-01-15 10:33:42.780	debug	SET MESSAGE TIMEOUT TIMER: 120000
      
      smartmeter.1
      2025-01-15 10:33:42.779	debug	SERIALPORT OPEN
      
      smartmeter.1
      2025-01-15 10:33:42.776	debug	CREATE SERIALPORT: 9600 7 1 even
      
      smartmeter.1
      2025-01-15 10:33:42.775	debug	SmartmeterObis options: {"debug":2,"protocol":"D0Protocol","transport":"SerialResponseTransport","requestInterval":"60","transportSerialPort":"/dev/stromzahler","transportSerialBaudrate":9600,"transportSerialDataBits":7,"transportSerialStopBits":1,"transportSerialParity":"even","transportSerialMessageTimeout":null,"protocolD0WakeupCharacters":0,"obisFallbackMedium":1}
      
      smartmeter.1
      2025-01-15 10:33:42.762	info	starting. Version 3.4.0 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v16.20.2, js-controller: 5.0.19
      

      Hab die Forenbeiträge schon durchsucht und auch im Internet geschaut und einiges ausprobiert aber leider keine Lösung gefunden.

      Weiß noch wer weiter?

      Danke und LG

      posted in ioBroker Allgemein
      N
      nvd126
    • RE: VIS2: Invalid pattern on subscribe - VIS1 läuft problemlos

      @oliverio Hallo und danke für die Antwort. Etwas spät aber nun hab ich wieder Zeit für das Ganze 🙂
      Die Problematik konnte es nicht wirklich lösen.

      Ich habe hier mal den gesamten relevanten Code (mit den Änderungen) für mein Büro. Alle anderen Räume sind gleich angelegt.

      <head>
          <script>
      // Büro
          var Buro_Hauptlicht_dimmen = 'knx.0.Obergeschoss.Beleuchtung.DA2_A_Buro_Licht_absolut_dimmen';
          var Buro_Hauptlicht_Dimmwert = {knx.0.Obergeschoss.Status.DA2_A_Buro_Dimmwert};
      
      ///////////////////////////////////////////////////////////////////////////////////////
      // Büro - Statusanzeige
      ///////////////////////////////////////////////////////////////////////////////////////
                  if (Buro_Hauptlicht_Dimmwert == 0) {
                      document.getElementById("Buro_Hauptlicht_0").className += ":--primary:active";
                      document.getElementById("Buro_Hauptlicht_0").style.backgroundColor = "#04AA6D";
                  } else {
                      // Dies wird für alle anderen Dimmwerte ausgeführt
                      document.getElementById("Buro_Hauptlicht_0").className += ":--primary:active";
                      document.getElementById("Buro_Hauptlicht_0").style.backgroundColor = "#04AA6D";
                  }
                  if (Buro_Hauptlicht_Dimmwert == 25) {
                      document.getElementById("Buro_Hauptlicht_25").className += "--primary:active";
                  }
                  if (Buro_Hauptlicht_Dimmwert == 50) {
                      document.getElementById("Buro_Hauptlicht_50").className += "--primary:active";
                  }
                  if (Buro_Hauptlicht_Dimmwert == 75) {
                      document.getElementById("Buro_Hauptlicht_75").className += "--primary:active";
                  }
                  if (Buro_Hauptlicht_Dimmwert == 100) {
                      document.getElementById("Buro_Hauptlicht_100").className += "--primary:active";
                  }
      ///////////////////////////////////////////////////////////////////////////////////////
      // Büro - Licht schalten
      ///////////////////////////////////////////////////////////////////////////////////////
      function Buro_Hauptlicht_0(){
      	vis.setValue(Buro_Hauptlicht_dimmen,0);
      }
      function Buro_Hauptlicht_25(){
      	vis.setValue(Buro_Hauptlicht_dimmen,25);
      }
      function Buro_Hauptlicht_50(){
      	vis.setValue(Buro_Hauptlicht_dimmen,50);
      }
      function Buro_Hauptlicht_75(){
      	vis.setValue(Buro_Hauptlicht_dimmen,75);
      }
      function Buro_Hauptlicht_100(){
      	vis.setValue(Buro_Hauptlicht_dimmen,100);
      }
      /////////////////////////////////////////////////////////////////////////////////////////
      /////////////////////////////////////////////////////////////////////////////////////////
      </script>
      </head>
      <body>
      <!-- Add icon library -->
      <div class="icon-bar">
          <a href="#01_Home" onclick="deleteSession()"><img class="navicon" src="icon/home.png"></a>
          <a class="active" href="#02_Haus" onclick="deleteSession()"><img class="navicon" src="icon/haus.png"></a>
      <!--  <a class="active" href="#02_Haus"><img class="navicon" src="icon/haus.png"></a> -->
          <a href="#03_Statistik" onclick="deleteSession()"><img class="navicon" src="icon/statistik.png"></a>
          <a href="#04_Technik" onclick="deleteSession()"><img class="navicon" src="icon/technik.png"></a>
      </div>
      <!--/////////////////////////////////////////////////////////////////////////-->
          <div class="col">
              <div class="tabs">
      <!--////////////////////////////////////////////////////////////////////////////
      Büro
      /////////////////////////////////////////////////////////////////////////////-->
                  <div class="tab">
                      <input type="radio" class="accordion" id="rd1" name="rd">
                      <label class="tab-label-kleiner" for="rd1">{javascript.0.Burotext}</label>
                      <div class="tab-content">
                          <table id="tab_haus">
                              <tr>
                                  <td colspan=2><b>Hauptbeleuchtung</b><br>
                                      <div class="button-group">
                                          <button  id="Buro_Hauptlicht_0" type="checkbox" class="button button__outline" onClick="Buro_Hauptlicht_0(this.value)">
                                            AUS
                                          </button>
                                          <button id="Buro_Hauptlicht_25" type="checkbox" class="button button__outline" onClick="Buro_Hauptlicht_25(this.value)">
                                            25%
                                          </button>
                                          <button id="Buro_Hauptlicht_50" type="checkbox" class="button button__outline" onClick="Buro_Hauptlicht_50(this.value)">
                                            50%
                                          </button>
                                           <button id="Buro_Hauptlicht_75" type="checkbox" class="button button__outline" onClick="Buro_Hauptlicht_75(this.value)">
                                            75%
                                          </button>
                                           <button id="Buro_Hauptlicht_100" type="checkbox" class="button button__outline" onClick="Buro_Hauptlicht_100(this.value)">
                                            EIN
                                          </button>
                                      </div>
                                  </td>
                              </tr>
                          </table>
                      </div>
                  </div>
      

      Ansonsten hab ich noch ein Script drin, welches dafür sorgt, dass mir beim Reload die Akkordions nicht zuklappen.

                  // Löschen bei Seitenwechsel
                      function deleteSession(){
                          sessionStorage.clear();
                          console.log("Haus: Wird gelöscht bei Seitenwechsel!");
                      }
                  // Checkbox bei Reload aktivieren
                      if (sessionStorage.length == 1) {
                          document.getElementById(sessionStorage.key(0)).checked = true;
                      }
                  // Speichern der einzelnen Accordion-Checkboxes
                      function active1(){
                          sessionStorage.clear();
      	                var checkbox = document.getElementById("rd1");
                          sessionStorage.setItem("rd1", checkbox.checked = true);
                          }
      
      posted in Visualisierung
      N
      nvd126
    • RE: VIS2: Invalid pattern on subscribe - VIS1 läuft problemlos

      Hallo,

      gibt es wirklich niemanden (Entwickler usw.) welcher hier eine Idee hat?

      Wie gesagt. In VIS1 funktioniert es 1:1 ohne Probleme. Wenn ich den selben Code in VIS2 einfüge, bekomme ich massenweise Fehler (siehe Log), der Browser fängt an zu hängen....

      host.iobroker 2024-05-15 08:08:05.541	warn	host.iobroker-Server States 127.0.0.1:50990 Error from InMemDB: Error: The pattern "vis.setValue(Wohnzimmer_Hauptlicht_dimmen,0)" is not a valid ID pattern at Object.pattern2RegEx (/opt/iobroker/node_modules/@iobroker/js-controller-common/src/lib/common/tools.ts:2470:15) at StatesInMemoryServer.handleSubscribe (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/inMemFileDB.ts:324:59) at StatesInMemoryServer._subscribeForClient (/opt/iobroker/node_modules/@iobroker/db-states-file/src/lib/states/statesInMemFileDB.js:258:14) at RedisHandler.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-jsonl/src/lib/states/statesInMemServerRedis.js:395:26) at RedisHandler.emit (node:events:517:28) at RedisHandler.emit (node:domain:489:12) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/redisHandler.ts:209:37) at processImmediate (node:internal/timers:476:21)
      
      host.iobroker 2024-05-15 08:08:05.539	warn	host.iobroker-Server States 127.0.0.1:50990 Error from InMemDB: Error: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,25)" is not a valid ID pattern at Object.pattern2RegEx (/opt/iobroker/node_modules/@iobroker/js-controller-common/src/lib/common/tools.ts:2470:15) at StatesInMemoryServer.handleSubscribe (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/inMemFileDB.ts:324:59) at StatesInMemoryServer._subscribeForClient (/opt/iobroker/node_modules/@iobroker/db-states-file/src/lib/states/statesInMemFileDB.js:258:14) at RedisHandler.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-jsonl/src/lib/states/statesInMemServerRedis.js:395:26) at RedisHandler.emit (node:events:517:28) at RedisHandler.emit (node:domain:489:12) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/redisHandler.ts:209:37) at processImmediate (node:internal/timers:476:21)
      
      host.iobroker 2024-05-15 08:08:05.538	warn	host.iobroker-Server States 127.0.0.1:50990 Error from InMemDB: Error: The pattern "vis.setValue(Kuche_Tischlicht_dimmen,100)" is not a valid ID pattern at Object.pattern2RegEx (/opt/iobroker/node_modules/@iobroker/js-controller-common/src/lib/common/tools.ts:2470:15) at StatesInMemoryServer.handleSubscribe (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/inMemFileDB.ts:324:59) at StatesInMemoryServer._subscribeForClient (/opt/iobroker/node_modules/@iobroker/db-states-file/src/lib/states/statesInMemFileDB.js:258:14) at RedisHandler.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-jsonl/src/lib/states/statesInMemServerRedis.js:395:26) at RedisHandler.emit (node:events:517:28) at RedisHandler.emit (node:domain:489:12) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/redisHandler.ts:209:37) at processImmediate (node:internal/timers:476:21)
      
      host.iobroker 2024-05-15 08:08:05.537	warn	host.iobroker-Server States 127.0.0.1:50990 Error from InMemDB: Error: The pattern "vis.setValue(Kuche_Tischlicht_dimmen,0)" is not a valid ID pattern at Object.pattern2RegEx (/opt/iobroker/node_modules/@iobroker/js-controller-common/src/lib/common/tools.ts:2470:15) at StatesInMemoryServer.handleSubscribe (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/inMemFileDB.ts:324:59) at StatesInMemoryServer._subscribeForClient (/opt/iobroker/node_modules/@iobroker/db-states-file/src/lib/states/statesInMemFileDB.js:258:14) at RedisHandler.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-jsonl/src/lib/states/statesInMemServerRedis.js:395:26) at RedisHandler.emit (node:events:517:28) at RedisHandler.emit (node:domain:489:12) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/redisHandler.ts:209:37) at processImmediate (node:internal/timers:476:21)
      
      host.iobroker 2024-05-15 08:08:05.537	warn	host.iobroker-Server States 127.0.0.1:50990 Error from InMemDB: Error: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,25)" is not a valid ID pattern at Object.pattern2RegEx (/opt/iobroker/node_modules/@iobroker/js-controller-common/src/lib/common/tools.ts:2470:15) at StatesInMemoryServer.handleSubscribe (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/inMemFileDB.ts:324:59) at StatesInMemoryServer._subscribeForClient (/opt/iobroker/node_modules/@iobroker/db-states-file/src/lib/states/statesInMemFileDB.js:258:14) at RedisHandler.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-jsonl/src/lib/states/statesInMemServerRedis.js:395:26) at RedisHandler.emit (node:events:517:28) at RedisHandler.emit (node:domain:489:12) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/redisHandler.ts:209:37) at processImmediate (node:internal/timers:476:21)
      
      host.iobroker 2024-05-15 08:08:05.536	warn	host.iobroker-Server States 127.0.0.1:50990 Error from InMemDB: Error: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,25)" is not a valid ID pattern at Object.pattern2RegEx (/opt/iobroker/node_modules/@iobroker/js-controller-common/src/lib/common/tools.ts:2470:15) at StatesInMemoryServer.handleSubscribe (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/inMemFileDB.ts:324:59) at StatesInMemoryServer._subscribeForClient (/opt/iobroker/node_modules/@iobroker/db-states-file/src/lib/states/statesInMemFileDB.js:258:14) at RedisHandler.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-jsonl/src/lib/states/statesInMemServerRedis.js:395:26) at RedisHandler.emit (node:events:517:28) at RedisHandler.emit (node:domain:489:12) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-base/src/lib/redisHandler.ts:209:37) at processImmediate (node:internal/timers:476:21)
      
      
      web.0 2024-05-15 08:08:21.556	error	Invalid pattern on subscribe: The pattern "vis.setValue(Wohnzimmer_Hauptlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.556	error	Invalid pattern on subscribe: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,50)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Tischlicht_dimmen,75)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Tischlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,50)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.555	error	Invalid pattern on subscribe: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,50)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:21.554	error	Invalid pattern on subscribe: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.585	error	Cannot subscribe "vis.setValue(Wohnzimmer_Hauptlicht_dimmen,0)": Error The pattern "vis.setValue(Wohnzimmer_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.584	error	Cannot subscribe "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,75)": The pattern "io.vis.setValue(Schlafzimmer_Hauptlicht_dimmen,75)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.584	error	Cannot subscribe "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,25)": Error The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.584	error	Cannot subscribe "vis.setValue(Kuche_Tischlicht_dimmen,100)": Error The pattern "vis.setValue(Kuche_Tischlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.584	error	Cannot subscribe "vis.setValue(Kuche_Tischlicht_dimmen,0)": Error The pattern "vis.setValue(Kuche_Tischlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.584	error	Cannot subscribe "vis.setValue(Kuche_Hauptlicht_dimmen,75)": The pattern "io.vis.setValue(Kuche_Hauptlicht_dimmen,75)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.584	error	Cannot subscribe "vis.setValue(Kuche_Hauptlicht_dimmen,25)": Error The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.583	error	Cannot subscribe "vis.setValue(Buro_Hauptlicht_dimmen,75)": The pattern "io.vis.setValue(Buro_Hauptlicht_dimmen,75)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.583	error	Cannot subscribe "vis.setValue(Buro_Hauptlicht_dimmen,25)": Error The pattern "vis.setValue(Buro_Hauptlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.532	error	Invalid pattern on subscribe: The pattern "vis.setValue(Wohnzimmer_Hauptlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.531	error	Invalid pattern on subscribe: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.531	error	Invalid pattern on subscribe: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,50)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.531	error	Invalid pattern on subscribe: The pattern "vis.setValue(Schlafzimmer_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.531	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Tischlicht_dimmen,75)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.531	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Tischlicht_dimmen,25)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.530	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.530	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,50)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.530	error	Invalid pattern on subscribe: The pattern "vis.setValue(Kuche_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.530	error	Invalid pattern on subscribe: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,100)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.529	error	Invalid pattern on subscribe: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,50)" is not a valid ID pattern
      
      web.0 2024-05-15 08:08:05.529	error	Invalid pattern on subscribe: The pattern "vis.setValue(Buro_Hauptlicht_dimmen,0)" is not a valid ID pattern
      
      posted in Visualisierung
      N
      nvd126
    • RE: VIS2: Invalid pattern on subscribe - VIS1 läuft problemlos

      Hat keiner eine Idee? ☹️

      posted in Visualisierung
      N
      nvd126
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo