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. Einsteigerfragen
  4. Einbindung von Geräten
  5. 2 Thermostate über einen Alias steuern

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

2 Thermostate über einen Alias steuern

Geplant Angeheftet Gesperrt Verschoben Einbindung von Geräten
5 Beiträge 3 Kommentatoren 181 Aufrufe 3 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.
  • W Offline
    W Offline
    warhammer73
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich möchte gern die Thermostate in einem Raum über einen gemeinsamen Alias DP steuern.
    Gibt es dafür eine einfache Möglichkeit?

    Für den Boost Modus der Thermostate habe ich mir mal ein Script gebastelt, das soweit den Zweck erfüllt:

    on({id: "bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, change: "ne"}, async function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode").val == true) {
        setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, true);
      } else {
        setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, false);
      }
      console.log(('Boost Mode wurde gesetzt auf:' + String((obj.state ? obj.state.val : ""))));
    });
    on({id: "bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, change: "ne"}, async function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode").val == true) {
        setState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, true);
      } else {
        setState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, false);
      }
      console.log(('Boost Mode wurde gesetzt auf:' + String((obj.state ? obj.state.val : ""))));
    });
    

    Problem dabei:
    Wenn das Script nicht läuft, funktioniert das ganze natürlich nicht.

    Gibt es also eine andere Möglichkeit sowas zu machen, oder gibt es alternativ die Möglichkeit aus einem anderen Script heraus zu überwachen ob ein Script läuft und es ggf. neu zu starten?

    Danke!

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • W warhammer73

      Hallo,

      ich möchte gern die Thermostate in einem Raum über einen gemeinsamen Alias DP steuern.
      Gibt es dafür eine einfache Möglichkeit?

      Für den Boost Modus der Thermostate habe ich mir mal ein Script gebastelt, das soweit den Zweck erfüllt:

      on({id: "bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode").val == true) {
          setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, true);
        } else {
          setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, false);
        }
        console.log(('Boost Mode wurde gesetzt auf:' + String((obj.state ? obj.state.val : ""))));
      });
      on({id: "bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode").val == true) {
          setState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, true);
        } else {
          setState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, false);
        }
        console.log(('Boost Mode wurde gesetzt auf:' + String((obj.state ? obj.state.val : ""))));
      });
      

      Problem dabei:
      Wenn das Script nicht läuft, funktioniert das ganze natürlich nicht.

      Gibt es also eine andere Möglichkeit sowas zu machen, oder gibt es alternativ die Möglichkeit aus einem anderen Script heraus zu überwachen ob ein Script läuft und es ggf. neu zu starten?

      Danke!

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #2

      @warhammer73 sagte in 2 Thermostate über einen Alias steuern:

      Wenn das Script nicht läuft, funktioniert das ganze natürlich nicht.

      Und warum läuft das Script nicht?
      Scripte mit Triggern müssen immer laufen!
      Kurze Erklärung dazu:
      Wenn Du das Script startest, siehst Du im Log sinngemäß ... 0 Schedules 2 Subscriptions ...
      Das heisst, dass mit dem Start des Scriptes zwei Ereignisbehandlungen an die Änderung der Datenpunkte gebunden wurden. Die beiden Trigger haben quasi die Änderungen der beiden DP "abonniert" und möchten gerne darauf reagieren. Das können sie natürlich nur, solange das Script auch läuft.

      Außderdem:
      Dein Trigger reagiert auf bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode.
      Dessen Wert musst Du nicht nochmal mit getState() lesen - der Wert steht in value zur Verfügung.

      Das Ganze kann man also deutlich vereinfachen (hier nur beispielhaft an einem der beiden Trigger):

      on({id: "bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode", change: "ne"}, async function (obj) {
        var value = obj.state.val;
        setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode", value);
        console.log('Boost Mode wurde gesetzt auf: ' + String(value));
      

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      W 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @warhammer73 sagte in 2 Thermostate über einen Alias steuern:

        Wenn das Script nicht läuft, funktioniert das ganze natürlich nicht.

        Und warum läuft das Script nicht?
        Scripte mit Triggern müssen immer laufen!
        Kurze Erklärung dazu:
        Wenn Du das Script startest, siehst Du im Log sinngemäß ... 0 Schedules 2 Subscriptions ...
        Das heisst, dass mit dem Start des Scriptes zwei Ereignisbehandlungen an die Änderung der Datenpunkte gebunden wurden. Die beiden Trigger haben quasi die Änderungen der beiden DP "abonniert" und möchten gerne darauf reagieren. Das können sie natürlich nur, solange das Script auch läuft.

        Außderdem:
        Dein Trigger reagiert auf bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode.
        Dessen Wert musst Du nicht nochmal mit getState() lesen - der Wert steht in value zur Verfügung.

        Das Ganze kann man also deutlich vereinfachen (hier nur beispielhaft an einem der beiden Trigger):

        on({id: "bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode", change: "ne"}, async function (obj) {
          var value = obj.state.val;
          setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode", value);
          console.log('Boost Mode wurde gesetzt auf: ' + String(value));
        
        W Offline
        W Offline
        warhammer73
        schrieb am zuletzt editiert von
        #3

        @codierknecht
        ... weil XY passiert ist. Warum auch immer wird z.B. dieses Script unregelmässig beendet. Nicht tragisch, war eh nur ein Test ob es geht oder nicht aber für die reine Temperaturregelung sollte es schon zuverlässig funktionieren. Also braucht es (Wenn es denn wirklich nur per Script zu lösen ist) irgend eine Möglichkeit zyklisch zu kontrollieren ob das Script noch läuft und die Möglichkeit es wieder zu starten.

        Ok, wieder was gelernt. Danke. :)

        ? CodierknechtC 2 Antworten Letzte Antwort
        0
        • W warhammer73

          @codierknecht
          ... weil XY passiert ist. Warum auch immer wird z.B. dieses Script unregelmässig beendet. Nicht tragisch, war eh nur ein Test ob es geht oder nicht aber für die reine Temperaturregelung sollte es schon zuverlässig funktionieren. Also braucht es (Wenn es denn wirklich nur per Script zu lösen ist) irgend eine Möglichkeit zyklisch zu kontrollieren ob das Script noch läuft und die Möglichkeit es wieder zu starten.

          Ok, wieder was gelernt. Danke. :)

          ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #4

          @warhammer73 sagte in 2 Thermostate über einen Alias steuern:

          Also braucht es (Wenn es denn wirklich nur per Script zu lösen ist) irgend eine Möglichkeit zyklisch zu kontrollieren ob das Script noch läuft und die Möglichkeit es wieder zu starten.

          Moin,

          es gibt noch den Szenen Adapter, der eigentlich für solche Sachen gedacht ist.

          VG
          Bernd

          1 Antwort Letzte Antwort
          0
          • W warhammer73

            @codierknecht
            ... weil XY passiert ist. Warum auch immer wird z.B. dieses Script unregelmässig beendet. Nicht tragisch, war eh nur ein Test ob es geht oder nicht aber für die reine Temperaturregelung sollte es schon zuverlässig funktionieren. Also braucht es (Wenn es denn wirklich nur per Script zu lösen ist) irgend eine Möglichkeit zyklisch zu kontrollieren ob das Script noch läuft und die Möglichkeit es wieder zu starten.

            Ok, wieder was gelernt. Danke. :)

            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @warhammer73 sagte in 2 Thermostate über einen Alias steuern:

            Warum auch immer wird z.B. dieses Script unregelmässig beendet

            Das sollte natürlich auf keinen Fall passieren.
            Darum macht es sicher Sinn, hier zunächst nach der Ursache zu forschen.
            Ist das das einzige Script, das plötzlich auf die Bretter geht?
            Steht etwas im Log, mit dem man hier auf Ursachenforschung gehen könnte?

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            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

            467

            Online

            32.7k

            Benutzer

            82.4k

            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