Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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.4k

2 Thermostate über einen Alias steuern

Scheduled Pinned Locked Moved Einbindung von Geräten
5 Posts 3 Posters 181 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    warhammer73
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Replies Last reply
        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
          A Former User
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #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 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            653

            Online

            32.7k

            Users

            82.4k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe