Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Wert von Somfy IO Temperatursensor in K lesen und in neues Objekt in °C schreiben

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wert von Somfy IO Temperatursensor in K lesen und in neues Objekt in °C schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      ronny82 last edited by

      Hallo zusammen,

      ich bin Neuling bei ioBroker und auch mit Javascript.

      Folgende Problemstellung:

      Mein Somy IO Temperatursensor, den ich über FHEM in ioBroker eingebunden habe liefert den Temperaturwert nur in °K. Ich möchte diesen nun also per Javascript in °C umrechnen und in ein neues Objekt zurückschreiben um diesen dann per Alexa abfragen zu können.

      Auslesen mit JS funktioniert:

      var tempK = getState("fhem.0.tahoma_11319490.TemperatureState");

      Mit createState kann ich auch einen neuen State anlegen:

      createState('tempC', 1, {name: 'WohnzimmerTemp', unit: '°C'});

      Würde nun gerne bei Änderung des Temperaturwertes das Script starten und den °C Wert in den neue State schreiben und verwende hierzu "on"

      __// On change

      //on('fhem.0.tahoma_11319490.TemperatureState', function (obj) {__

      Die Funktion setState funktioniert leider auch noch nicht:

      setState('tempC', getState("fhem.0.tahoma_11319490.TemperatureState")-273, true/ack/);

      Kann mir hier jemand dazu helfen?

      Vielen Dank!

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        const idTempK = 'fhem.0.tahoma_11319490.TemperatureState';
        const idTempC = 'javascript.' + instance + '.tempC';
        
        // Skriptstart
        setState(idTempC, getState(idTempK).val - 273.1, true);
        
        // Triggern bei Wertänderung
        on(idTempK, function(dp) {
           setState(idTempC, dp.state.val - 273.1, true);
        });
        
        1 Reply Last reply Reply Quote 0
        • R
          ronny82 last edited by

          Hallo

          danke für die schnelle Antwort. Das Script funktioniert soweit und gibt die Temperatur in °C das Objekt "tempC" zurück.

          Besteht die Möglichkeit den Temperaturwert auf 1 Nachkommastelle zu runden, z.B. 20.1°C?

          Im Cloud Adapter wird das Objekt "tempC" unterschiedlich zu dem Objekt aus FHEM (ursprünglicher Wert in Kelvin) erkannt, dadurch kann der Wert mit Alexa nicht abgefragt werden. Wie kann hier die Geräteart geändert werden, vgl. Bild im Anhang.

          Danke im Voraus!

          MfG Ronny
          4404_cloud_adapter_temperatur.png

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @ronny82:

            Besteht die Möglichkeit den Temperaturwert auf 1 Nachkommastelle zu runden, z.B. 20.1°C? `

               setState(idTempC,  Math.round(10 * (dp.state.val - 273.1)) / 10, true);
            
            
            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            698
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            2
            4
            703
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo