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. Visualisierung
  4. Status lesen und Status setzen in unterschiedlichen Objekten

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Status lesen und Status setzen in unterschiedlichen Objekten

Geplant Angeheftet Gesperrt Verschoben Visualisierung
8 Beiträge 2 Kommentatoren 477 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.
  • D Offline
    D Offline
    drloksoft
    schrieb am zuletzt editiert von
    #1

    Hallo Ihr lieben,

    ich möchte gerne meine Klimaanlage mit Iobroker steuern. Es gibt keinen direkten Adapter für Fujitsu Airstage Geräte, daher nehme ich dne Airstage Adapter für Home Assistant und versuche über den HASS Adapter HA mit Iobroker VIS zu steuern. Grundsätzlich funktioniert das ganz gut. Allerdings gibt es bei der Steuerung der Klimaanlage eine kleine Hürde, über die ich nicht komme, denn das schreiben von Werten funktioniert in einer anderen Variable, als die Statusanzeige der Werte.

    Mit dem Widget "Radio button (steps)" kann ich eine Leiste mit buttons erstellen, die in der Iobroker Variable "hass.0.entities.climate.106838462bc1.set_hvac_mode" den Modus der Klimaanlage setzt. Modus sind: "Off, Dry, Cool, Auto, Heat". Der Wert wird dann durch den HASS Adapter and Home Assistant übergeben, wo er dann durch den Airstage Adapter an die Klimaanlage übergeben wird.Die Variable hass.0.entities.climate.106838462bc1.set_hvac_mode dient allerdings nur als trigger. Den aktuellen Status sehe ich in der Variable hass.0.entities.climate.106838462bc1.state.

    Soweit funktioniert das ganz gut und solange ich alles mit Iobroker steuere, sehe ich den zuletzt gestzten Wert auch in hass.0.entities.climate.106838462bc1.set_hvac_mode und sehe die Buttons im "richtigen" Zustand. Wenn nun jemand mit einer Funkfernbedienung den Status verändert, bleibt der Zustand in hass.0.entities.climate.106838462bc1.set_hvac_mode noch auf dem von Iobroker gesetzten Wert, obwohl sich der Zustand in hass.0.entities.climate.106838462bc1.state geändert hat.

    Nun möchte ich, dass die Radio-Buttons den aktuellen Status aus hass.0.entities.climate.106838462bc1.state anzeigen, aber beim drücken das Objekt hass.0.entities.climate.106838462bc1.set_hvac_mode ändern.

    Ach ja, hass.0.entities.climate.106838462bc1.state ist natürlich schreibgeschützt, daher kann ich den aus Iobroker heraus nicht setzen.

    Hat dazu jemand eine Idee?
    Kann ich die Logik in VIS umsetzen, oder muss ich ein JavaScript schreiben, welches auf Änderungen von hass.0.entities.climate.106838462bc1.state achtet und diesen Zustand dann in hass.0.entities.climate.106838462bc1.set_hvac_mode setzt?

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • D drloksoft

      Hallo Ihr lieben,

      ich möchte gerne meine Klimaanlage mit Iobroker steuern. Es gibt keinen direkten Adapter für Fujitsu Airstage Geräte, daher nehme ich dne Airstage Adapter für Home Assistant und versuche über den HASS Adapter HA mit Iobroker VIS zu steuern. Grundsätzlich funktioniert das ganz gut. Allerdings gibt es bei der Steuerung der Klimaanlage eine kleine Hürde, über die ich nicht komme, denn das schreiben von Werten funktioniert in einer anderen Variable, als die Statusanzeige der Werte.

      Mit dem Widget "Radio button (steps)" kann ich eine Leiste mit buttons erstellen, die in der Iobroker Variable "hass.0.entities.climate.106838462bc1.set_hvac_mode" den Modus der Klimaanlage setzt. Modus sind: "Off, Dry, Cool, Auto, Heat". Der Wert wird dann durch den HASS Adapter and Home Assistant übergeben, wo er dann durch den Airstage Adapter an die Klimaanlage übergeben wird.Die Variable hass.0.entities.climate.106838462bc1.set_hvac_mode dient allerdings nur als trigger. Den aktuellen Status sehe ich in der Variable hass.0.entities.climate.106838462bc1.state.

      Soweit funktioniert das ganz gut und solange ich alles mit Iobroker steuere, sehe ich den zuletzt gestzten Wert auch in hass.0.entities.climate.106838462bc1.set_hvac_mode und sehe die Buttons im "richtigen" Zustand. Wenn nun jemand mit einer Funkfernbedienung den Status verändert, bleibt der Zustand in hass.0.entities.climate.106838462bc1.set_hvac_mode noch auf dem von Iobroker gesetzten Wert, obwohl sich der Zustand in hass.0.entities.climate.106838462bc1.state geändert hat.

      Nun möchte ich, dass die Radio-Buttons den aktuellen Status aus hass.0.entities.climate.106838462bc1.state anzeigen, aber beim drücken das Objekt hass.0.entities.climate.106838462bc1.set_hvac_mode ändern.

      Ach ja, hass.0.entities.climate.106838462bc1.state ist natürlich schreibgeschützt, daher kann ich den aus Iobroker heraus nicht setzen.

      Hat dazu jemand eine Idee?
      Kann ich die Logik in VIS umsetzen, oder muss ich ein JavaScript schreiben, welches auf Änderungen von hass.0.entities.climate.106838462bc1.state achtet und diesen Zustand dann in hass.0.entities.climate.106838462bc1.set_hvac_mode setzt?

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

      @drloksoft
      Bau Dir einen Alias, der beide States zusammenfasst.
      Ist bei Homematic ähnlich.

      b62b7fab-4bef-4c27-ab92-c3d1d02e6a64-image.png

      "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

      D 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @drloksoft
        Bau Dir einen Alias, der beide States zusammenfasst.
        Ist bei Homematic ähnlich.

        b62b7fab-4bef-4c27-ab92-c3d1d02e6a64-image.png

        D Offline
        D Offline
        drloksoft
        schrieb am zuletzt editiert von
        #3

        @codierknecht super, danke! Ich gucke es mir an!

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          drloksoft
          schrieb am zuletzt editiert von drloksoft
          #4

          Um den Spaß zu erhöhen benötigt der AirStage Adapter in HASS einen string-json wert. Wenn ich den Wert durch das ioBroker VIS-2 Material Thermostat Widget setze, erhalte ich die Fehlermeldung:"Please make sure to provide a stringified JSON as value to set relevant fields! Please refer to the Readme for details!". Also schreibe ich nun den Wert aus dem Widget in ein anderes Objekt, welches ich manuell erstellt habe "javascript.0.AirConControl.WohnzimmerSetTemp" und greife den Wert mit einem JavaScript ab, um ihn dann als string-json in das Fujitsu Airstage Objekt des HASS zu schreiben.

          Falls das mal jemand benötigt, hier das Script:

          on({id: 'javascript.0.AirConControl.WohnzimmerSetTemp', change: "any"}, function (obj) {
              const targetTemperature = obj.state.val;
              
              // Prüfen, ob der Wert gültig ist
              if (typeof targetTemperature === 'number' && !isNaN(targetTemperature)) {
                  const jsonString = JSON.stringify({ temperature: targetTemperature });
                  
                  // JSON-String in den Home Assistant Datenpunkt schreiben
                  setState('hass.0.entities.climate.106838462bc1.set_temperature', jsonString, (err) => {
                      if (err) {
                          console.error("Fehler beim Schreiben der Temperatur:", err);
                      } else {
                          console.log(`Temperatur erfolgreich auf ${targetTemperature} gesetzt.`);
                      }
                  });
              } else {
                  console.warn("Ungültiger Temperaturwert:", targetTemperature);
              }
          });
          
          CodierknechtC 1 Antwort Letzte Antwort
          0
          • D drloksoft

            Um den Spaß zu erhöhen benötigt der AirStage Adapter in HASS einen string-json wert. Wenn ich den Wert durch das ioBroker VIS-2 Material Thermostat Widget setze, erhalte ich die Fehlermeldung:"Please make sure to provide a stringified JSON as value to set relevant fields! Please refer to the Readme for details!". Also schreibe ich nun den Wert aus dem Widget in ein anderes Objekt, welches ich manuell erstellt habe "javascript.0.AirConControl.WohnzimmerSetTemp" und greife den Wert mit einem JavaScript ab, um ihn dann als string-json in das Fujitsu Airstage Objekt des HASS zu schreiben.

            Falls das mal jemand benötigt, hier das Script:

            on({id: 'javascript.0.AirConControl.WohnzimmerSetTemp', change: "any"}, function (obj) {
                const targetTemperature = obj.state.val;
                
                // Prüfen, ob der Wert gültig ist
                if (typeof targetTemperature === 'number' && !isNaN(targetTemperature)) {
                    const jsonString = JSON.stringify({ temperature: targetTemperature });
                    
                    // JSON-String in den Home Assistant Datenpunkt schreiben
                    setState('hass.0.entities.climate.106838462bc1.set_temperature', jsonString, (err) => {
                        if (err) {
                            console.error("Fehler beim Schreiben der Temperatur:", err);
                        } else {
                            console.log(`Temperatur erfolgreich auf ${targetTemperature} gesetzt.`);
                        }
                    });
                } else {
                    console.warn("Ungültiger Temperaturwert:", targetTemperature);
                }
            });
            
            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von Codierknecht
            #5

            @drloksoft
            Das ginge auch ohne Script, indem man im Alias eine passende Konvertierung einrichtet ;-)

            Ich persönlich würde eigene States auch unter 0_userdata.0 anlegen. Dieser Namespace ist eigens dafür gemacht.

            "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

            D 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @drloksoft
              Das ginge auch ohne Script, indem man im Alias eine passende Konvertierung einrichtet ;-)

              Ich persönlich würde eigene States auch unter 0_userdata.0 anlegen. Dieser Namespace ist eigens dafür gemacht.

              D Offline
              D Offline
              drloksoft
              schrieb am zuletzt editiert von
              #6

              @codierknecht danke für die Tipps. Hast Du einen Tipp wo ich herausfinden kann, wie ich die Konvertierung zu schreiben habe? Ich finde es nicht. :expressionless:

              CodierknechtC 1 Antwort Letzte Antwort
              0
              • D drloksoft

                @codierknecht danke für die Tipps. Hast Du einen Tipp wo ich herausfinden kann, wie ich die Konvertierung zu schreiben habe? Ich finde es nicht. :expressionless:

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

                @drloksoft sagte in Status lesen und Status setzen in unterschiedlichen Objekten:

                Hast Du einen Tipp wo ich herausfinden kann, wie ich die Konvertierung zu schreiben habe?

                Zum Beispiel so:

                2af92fd1-4200-4b72-ad6e-397ed5648d57-grafik.png

                Ich habe also einen Alias vom Typ "Zahl".
                Der guckt im Beispiel auf 2 States. Einer vom Typ "Zahl", der den aktuellen Wert liefert und einen vom Typ "Json", in den beim Schreiben ein Json geschrieben wird.
                JSON.stringify({temperature: val}).

                Falls beim Lesen auch Json kommt, könnte da statt val auch das Json geparst werden. Also sowas wie JSON.parse(val).temperature.

                Den Alias kann man dann wunderbar visualisieren:

                f27af71e-e82a-492a-a3a3-7471ef1ba54c-grafik.png

                "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

                D 1 Antwort Letzte Antwort
                0
                • CodierknechtC Codierknecht

                  @drloksoft sagte in Status lesen und Status setzen in unterschiedlichen Objekten:

                  Hast Du einen Tipp wo ich herausfinden kann, wie ich die Konvertierung zu schreiben habe?

                  Zum Beispiel so:

                  2af92fd1-4200-4b72-ad6e-397ed5648d57-grafik.png

                  Ich habe also einen Alias vom Typ "Zahl".
                  Der guckt im Beispiel auf 2 States. Einer vom Typ "Zahl", der den aktuellen Wert liefert und einen vom Typ "Json", in den beim Schreiben ein Json geschrieben wird.
                  JSON.stringify({temperature: val}).

                  Falls beim Lesen auch Json kommt, könnte da statt val auch das Json geparst werden. Also sowas wie JSON.parse(val).temperature.

                  Den Alias kann man dann wunderbar visualisieren:

                  f27af71e-e82a-492a-a3a3-7471ef1ba54c-grafik.png

                  D Offline
                  D Offline
                  drloksoft
                  schrieb am zuletzt editiert von
                  #8

                  @codierknecht AAAH! Das ist ja einfacher, als ich dachte. DANKESCHÖÖN!

                  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

                  920

                  Online

                  32.4k

                  Benutzer

                  81.5k

                  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