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. Homematic –> MODBUS, MODBUS --> Homematic

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    850

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Homematic –> MODBUS, MODBUS --> Homematic

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
2 Beiträge 1 Kommentatoren 580 Aufrufe
  • Ä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.
  • M Offline
    M Offline
    mguenther
    schrieb am zuletzt editiert von
    #1

    Tag zusammen - ich bin zu doof und brauch mal wieder Hilfe…

    Folgendes:

    Ich hatte https://forum.iobroker.net/viewtopic.php?f=21&t=13479 bereits einmal eine Frage zum Datenabgleich HM und MODBUS gestellt und hat auch alles wunderbar geklappt. Ich steuere meine Lüftung über MODBUS und die Berechnung erfolgt über HomeMatic. Soweit auch so gut. Ich hatte mich gewundert, warum ich hin und wieder Fehler im LOG mit MODBUS hatte, Thema wurde https://forum.iobroker.net/viewtopic.php?f=20&t=13214, gelöst ist es nicht ganz.

    Eine Quelle der Fehler habe ich bis jetzt ausfindig gemacht. Es liegt an unserer Lüftung selber. An unserer Lüftung ist ein Bedienfeld, an dem ich die Vorheizstufe und die Lüftungsintensität einstellen kann. Die Idee ist jetzt und auch der Wunsch meines weiblichen Wesens, dass die Lüftungseinstellungen, die an der Fernbedienung eingestellt werden, für mind. eine Stunde ausgeführt werden. Und wenn ich genau das mache und die Fernbedienung nutze, dann hängt sich der MODBUS Adapter auf und ich muss ihn jedes Mal neustarten. Das mache ich bis jetzt mit diesem Skript:

    on({id: 'hm-rega.0.35587'/*Lueftung_Eingabe_manuell*/, change: "any"}, function (Lueftungstest) {
        if (getState("hm-rega.0.35587").val)
            {
            var obj = getObject("system.adapter.modbus.0");
            obj.common.enabled = false;  // Adapter einschalten
            setObject("system.adapter.modbus.0", obj);
            }
        else
            {
            var obj = getObject("system.adapter.modbus.0");
            obj.common.enabled = true;  // Adapter einschalten
            setObject("system.adapter.modbus.0", obj);
            }
        }
    )
    

    Die Variable "hm-rega.0.35587" ist eine Variable, die ich mir in HM ("Lueftung_Eingabe_manuell") setze, sobald ich einen Wert manuel in der Lüftung setze (quasi bei Eingabe über die Fernbedienung).
    6305_hm_manuwert_modbus.png
    Der Screenshot zeigt das HM Programm und das darin enthaltene Skript folgendermaßen aus:

    real Heizwert_manu = dom.GetObject("Lueftung_Heizstufe_manu").Value();
    real Heizwert = dom.GetObject("Lueftung_Heizstufe").Value();
    real L_Stufe_manu = dom.GetObject("Lueftung_Stufe_manu").Value();
    real L_Stufe = dom.GetObject("Lueftung_Stufe").Value();
    boolean Manuell = dom.GetObject("Lueftung_Eingabe_manuell").Value();
    if (Heizwert_manu != Heizwert) {
    	Heizwert=Heizwert_manu;
    	Manuell = true;
    }
    if (L_Stufe_manu != L_Stufe) {
    	L_Stufe=L_Stufe_manu;
    	Manuell = true;
    }
    dom.GetObject("Lueftung_Heizstufe").State(Heizwert );
    dom.GetObject("Lueftung_Stufe").State(L_Stufe );
    dom.GetObject("Lueftung_Eingabe_manuell").State(Manuell );
    

    Damit die Datenübergabe aus IoBroker MODBUS an HM funktioniert anbei noch das Skript in IoBroker:

    /*Lueftungstemperatur von MODBUS an HomeMatic Lueftung_Temp1*/
    const idSrc1 = "modbus.0.holdingRegisters.214_REG_HC_TEMP_IN2";
    const idDst1 = "hm-rega.0.31793";
    /*Lueftungstemperatur von MODBUS an HomeMatic Lueftung_Temp4*/
    const idSrc2 = "modbus.0.holdingRegisters.213_REG_HC_TEMP_IN1";
    const idDst2 = "hm-rega.0.31794";
    /*Lueftungstemperatur von HomeMatic Lueftung_Stufe an MODBUS*/
    const idSrc3 = "hm-rega.0.31807";
    const idDst3 = "modbus.0.holdingRegisters.100_REG_FAN_SPEED_LEVEL";
    /*Lueftungstemperatur von MODBUS an HomeMatic Lueftung_Stufe_manu*/
    const idSrc4 = "modbus.0.holdingRegisters.100_REG_FAN_SPEED_LEVEL";
    const idDst4 = "hm-rega.0.35699";
    /*Lueftungstemperatur von HomeMatic Lueftung_Heizstufe an MODBUS*/
    const idSrc5 = "hm-rega.0.32784";
    const idDst5 = "modbus.0.holdingRegisters.206_REG_HC_TEMP_LVL";
    /*Lueftungstemperatur von MODBUS an HomeMatic Lueftung_Heizstufe_manu*/
    const idSrc6 = "modbus.0.holdingRegisters.206_REG_HC_TEMP_LVL";
    const idDst6 = "hm-rega.0.35549";
    
    var val1 = Math.round(getState(idSrc1).val);
    var val2 = Math.round(getState(idSrc2).val);
    
    setState(idDst1, val1); 
    setState(idDst2, val2); 
    on(idSrc1, function(dp) {
       var val = Math.round(dp.state.val);
       if(val != val1) {
          setState(idDst1, val);
          val1 = val;
       }   
    });
    on(idSrc2, function(dp) {
       var val = Math.round(dp.state.val);
       if(val != val2) {
          setState(idDst2, val);
          val2 = val;
       }   
    });
    setState(idDst3, getState(idSrc3).val); // Scriptstart
    on(idSrc3, idDst3); // Aktualisierung bei Wertänderung
    setState(idDst4, getState(idSrc4).val); // Scriptstart
    on(idSrc4, idDst4); // Aktualisierung bei Wertänderung
    setState(idDst5, getState(idSrc5).val); // Scriptstart
    on(idSrc5, idDst5); // Aktualisierung bei Wertänderung
    setState(idDst6, getState(idSrc6).val); // Scriptstart
    on(idSrc6, idDst6); // Aktualisierung bei Wertänderung
    

    Das klappt aber leider eben genau nicht wie gewünscht. Wenn ich manuell etwas ändere, dann springt zwar die Variable "Lueftung_Eingabe_manuell" auf wahr, so soll es auch sein. Wenn aber der berechnete Wert sich ändert (die Variable "Lueftung_Stufe" bzw. "Lueftung_Heizstufe"), ändert sich dann ja quasi auch der MODBUS-Registereintrag und damit wieder die Variable "Lueftung_Eingabe_manuell" (erst wahr, dann falsch). Das hat zur Folge, dass dann auch bei den berechneten ständig der Modbusadapter gestoppt und wieder (mit einer Pause von 1h) gestartet wird. Das soll er aber gar nicht.

    Wisst ihr, was ich meine? Wie kann ich das lösen? Ich bin mir nicht so sicher, ob es ein HM oder ein IoBroker Logik-Problem bei mir ist.

    Quasi soll bei manueller Eingabe der Modbus Adapter gestoppt und gestartet werden, die Werte 1h genutzt werden und dann wieder die in HM berechneten….

    danke

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      mguenther
      schrieb am zuletzt editiert von
      #2

      da ich mir nicht sicher bin, ob ich ein Logik-Problem bei IoBroker habe oder eben einen Denkfehler in HomeMatic, habe ich mal auch dort im Forum einen Thread eröffnet. Hier ist der Link:

      https://homematic-forum.de/forum/viewto … 19&t=43483

      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

      682

      Online

      32.6k

      Benutzer

      82.1k

      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