Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Temparatur Umzug Fhem

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Temparatur Umzug Fhem

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @nolimitek last edited by paul53

      @nolimitek
      Nicht mit Strings "true" / "false" schalten, sondern mit Logikwerten wahr / falsch.
      Es fehlt die Hysterese von 0,4 K (FHEM).

      N 1 Reply Last reply Reply Quote 0
      • N
        nolimitek @paul53 last edited by nolimitek

        @paul53 Danke für die schnelle Antwort.

        Auch mit wahr oder falsch geht es leider nicht .
        Schaltet ein aber nicht aus

        Wie kann ich denn die Hysterese in Blockly nachbilden ?

        Da habe ich dafür noch nichts gefunden

        Danke

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

          @nolimitek sagte:

          Wie kann ich denn die Hysterese in Blockly nachbilden ?

          Blockly_temp.JPG

          @nolimitek sagte:

          InfrarotBadezimmer ist ein Sonoff Basic

          Ist "state_switch" vom Typ "boolean" ?

          N 1 Reply Last reply Reply Quote 0
          • N
            nolimitek @paul53 last edited by

            @paul53 Was meinst mit boolean ?

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

              @nolimitek sagte:

              Was meinst mit boolean ?

              Schau mal in die Eigenschaften des Objektes "state_switch" (Tab "Objekte", Bleistift rechts): Unter Allgemein: Steht bei Art "Logikwert" (boolean) oder "Zeichenkette" (string) ?

              N 1 Reply Last reply Reply Quote 0
              • N
                nolimitek @paul53 last edited by

                @paul53 steht switch . Ist aber derzeit alles vom Fhem Connector

                lg

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

                  @nolimitek sagte:

                  steht switch

                  Das ist die Rolle, nicht der Typ (Art).

                  @nolimitek sagte in Temparatur Umzug Fhem:

                  Ist aber derzeit alles vom Fhem Connector

                  Davon habe ich keine Ahnung.
                  Du solltest Alias-Datenpunkte verwenden, damit später der Umstieg leichter ist (keine Änderung in Skripten / Vis erforderlich)

                  N paul53 2 Replies Last reply Reply Quote 0
                  • N
                    nolimitek @paul53 last edited by

                    @paul53 Ah Sorry da steht Logikwerk

                    lg

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

                      @nolimitek sagte:

                      da steht Logikwerk

                      Dann sollte mit wahr und falsch (Blockly) geschaltet werden.

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

                        @paul53 sagte:

                        Alias-Datenpunkte verwenden

                        Mit folgendem Script kann man Alias-Datenpunkte erzeugen, indem die IDs, der Name, ... angepasst werden und das Script dann kurz gestartet wird:

                        // Original-Datenpunkt
                        const idOrigin = 'fhem.0.'; // ID eingeben !
                        // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                        // Bei Nicht-Verwendung Leerstring '' zuweisen
                        const idRead = '';
                         
                        // Alias-Datenpunkt
                        const idAlias = 'Bad.Heizung.Infrarot';
                        var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                        
                        // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                        nameAlias = 'Infrarotheizung Badezimmer';
                        desc = 'per Script erstellt';
                        // typeAlias = 'boolean'; // oder 'number'
                        // read = "val == 'ON' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
                        // write = "val ? 'ON' : 'OFF'";
                        // role = 'value';
                        // min = 0; // nur Zahlen
                        // max = 100; // nur Zahlen
                        // unit = '%'; // nur für Zahlen
                        // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                        custom = []; // verhindert doppelte Ausführung von history, ...
                        // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
                        // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
                        
                        // Ab hier nichts ändern !!
                        function createAlias(idDst, idSrc, idRd) {
                           if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                           else {
                              var obj = {};
                              obj.type = 'state';
                              obj.common = getObject(idSrc).common;
                              obj.common.alias = {};
                              if(idRd) {
                                  obj.common.alias.id = {};
                                  obj.common.alias.id.read = idRd;
                                  obj.common.alias.id.write = idSrc;
                                  obj.common.read = true;
                              } else obj.common.alias.id = idSrc;
                              if(typeAlias) obj.common.type = typeAlias;
                              if(obj.common.read !== false && read) obj.common.alias.read = read;
                              if(obj.common.write !== false && write) obj.common.alias.write = write;
                              if(nameAlias) obj.common.name = nameAlias;
                              if(role) obj.common.role = role;
                              if(desc) obj.common.desc = desc;
                              if(obj.common.type == 'number') {
                                 if(min !== undefined) obj.common.min = min;
                                 if(max !== undefined) obj.common.max = max;
                                 if(unit) obj.common.unit = unit;
                              } else {
                                 if(obj.common.min !== undefined) delete obj.common.min;
                                 if(obj.common.max !== undefined) delete obj.common.max;
                                 if(obj.common.unit) delete obj.common.unit;
                              }
                              if(states) obj.common.states = states;
                              if(custom && obj.common.custom) obj.common.custom = custom;
                              obj.native = {};
                              setObject(idDst, obj, function() {
                                 if(idRd) setState(idRd, getState(idRd).val, true);
                                 else setState(idSrc, getState(idSrc).val, true); 
                              });
                              if(raum && existsObject('enum.rooms.' + raum)) {
                                 let obj = getObject('enum.rooms.' + raum)
                                 obj.common.members.push(idDst);
                                 setObject('enum.rooms.' + raum, obj);
                              }
                              if(gewerk && existsObject('enum.functions.' + gewerk)) {
                                 let obj = getObject('enum.functions.' + gewerk)
                                 obj.common.members.push(idDst);
                                 setObject('enum.functions.' + gewerk, obj);
                              }
                           } 
                        }
                         
                        createAlias('alias.0.' + idAlias, idOrigin, idRead);
                        
                        N 1 Reply Last reply Reply Quote 0
                        • N
                          nolimitek @paul53 last edited by

                          @paul53

                          Ich hab jetzt sicherheitshalber den sonoff adapter installiert und den sonoff direkt per mqtt verbunden
                          folgendes blockly
                          17cb7cd7-9ef7-49f1-8ec6-ece948f47f5b-image.png

                          schaltet ein aber nicht mehr aus . Ich verstehe das nicht

                          Wenn ich das Blockly so mache
                          8a3d010c-9ff9-41c3-a8e9-628ae89de4c1-image.png

                          Dann schaltet er egal immer mit wahr und nie mit falsch ??

                          Hat jemand eine Idee

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

                            @nolimitek sagte:

                            Hat jemand eine Idee

                            Bau mal eine Log-Ausgabe ein:

                            Blockly_temp.JPG

                            Lässt sich der Aktor im Tab "Objekte" schalten ?

                            N 1 Reply Last reply Reply Quote 0
                            • N
                              nolimitek @paul53 last edited by

                              @paul53 ja kann ich schalten
                              Das kommt dabei rauß

                              22.12.2020, 17:53:52.013	[info ]: javascript.0 (4229) Stop script script.js.debug
                              22.12.2020, 17:53:52.024	[info ]: javascript.0 (4229) Start javascript script.js.debug
                              22.12.2020, 17:53:52.031	[info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.temperature, timerId=undefined) => {"val":"21.1","ack":true,"ts":1608655982096,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655982096}
                              22.12.2020, 17:53:52.032	[info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.desiredTemperature, timerId=undefined) => {"val":"13.5","ack":true,"ts":1608655945660,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655944150}
                              22.12.2020, 17:53:52.032	[info ]: javascript.0 (4229) script.js.debug: Temparatur:21.1Grad13.5
                              22.12.2020, 17:53:52.032	[info ]: javascript.0 (4229) script.js.debug: registered 0 subscriptions and 0 schedules
                              22.12.2020, 17:54:45.610	[info ]: javascript.0 (4229) Stop script script.js.debug
                              22.12.2020, 17:54:45.622	[info ]: javascript.0 (4229) Start javascript script.js.debug
                              22.12.2020, 17:54:45.634	[info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.temperature, timerId=undefined) => {"val":"21.1","ack":true,"ts":1608655982096,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655982096}
                              22.12.2020, 17:54:45.634	[info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.desiredTemperature, timerId=undefined) => {"val":"5.0","ack":false,"ts":1608656079906,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1608656079906}
                              22.12.2020, 17:54:45.635	[info ]: javascript.0 (4229) script.js.debug: Temparatur:21.1Grad5.0
                              22.12.2020, 17:54:45.635	[info ]: javascript.0 (4229) script.js.debug: registered 0 subscriptions and 0 schedules
                              
                              N paul53 2 Replies Last reply Reply Quote 0
                              • N
                                nolimitek @nolimitek last edited by

                                gerade nochmals mit dem blockly probiert
                                b847c9b2-8fec-49a1-94d1-4894ec98badd-image.png

                                egal ob ich das Terhmostat rauf oder runter schalte es wird immer eingeschaltet

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

                                  @nolimitek sagte:

                                  Das kommt dabei rauß

                                  Wenn der Sollwert so niedrig ist (13,5 / 5,0 °C) muss der Aktor auf wahr schalten, denn Deine Aktion ist falsch herum. Richtig:
                                  Ist > Soll --> falsch

                                  EDIT: Liefert FHEM Zahlen? Bitte mittels Modifikation der Log-Ausgabe prüfen:

                                  Blockly_temp.JPG

                                  N 2 Replies Last reply Reply Quote 0
                                  • N
                                    nolimitek @paul53 last edited by

                                    @paul53 wenn ich
                                    Richtig: Ist > Soll --> falsch mache un dich den wert von zb 5 Grad auf 24 Grad erhöhe als mehr als die Ist Temparatur schaltet er auf off.

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      nolimitek @paul53 last edited by

                                      @paul53 said in Temparatur Umzug Fhem:

                                      @nolimitek sagte:

                                      Das kommt dabei rauß

                                      Wenn der Sollwert so niedrig ist (13,5 / 5,0 °C) muss der Aktor auf wahr schalten, denn Deine Aktion ist falsch herum. Richtig:
                                      Ist > Soll --> falsch

                                      EDIT: Liefert FHEM Zahlen? Bitte mittels Modifikation der Log-Ausgabe prüfen:

                                      Blockly_temp.JPG

                                      18:19:38.861	info	javascript.0 (4229) Start javascript script.js.debug
                                      18:19:38.868	info	javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.temperature, timerId=undefined) => {"val":"21.1","ack":true,"ts":1608655982096,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655982096}
                                      18:19:38.868	info	javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.desiredTemperature, timerId=undefined) => {"val":"6.0","ack":true,"ts":1608657576366,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608657576366}
                                      18:19:38.868	info	javascript.0 (4229) script.js.debug: Temparatur:stringGradstring
                                      18:19:38.869	info	javascript.0 (4229) script.js.debug: registered 0 subscriptions and 0 schedules
                                      
                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @nolimitek last edited by

                                        @nolimitek
                                        Mit Strings kann es nicht funktionieren. Man muss in Zahlen wandeln:

                                        Blockly_temp.JPG

                                        N 1 Reply Last reply Reply Quote 0
                                        • N
                                          nolimitek @paul53 last edited by

                                          @paul53 Wennst mir jetzt noch kurz schreiben könntest wo ich den Block "setze .... auf" finde.
                                          Seh langsam nichts mehr 🙂

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

                                            @nolimitek sagte:

                                            wo ich den Block "setze .... auf" finde.

                                            Unter "Variablen" müssen erst die 3 Variablen ist, soll, ein erstellt werden. Dann wird dort auch "setze auf" angeboten.

                                            N 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            901
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            23
                                            1201
                                            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