Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [gelöst] Anwesenheitskontrolle über WLan zur Comet Dect Ansteuerung an FritzBox 6490

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Anwesenheitskontrolle über WLan zur Comet Dect Ansteuerung an FritzBox 6490

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

      Hallo,

      Javascript arbeitet mit sogenannten triggern / Auslösern.

      Die können eben ein Schedule sein, der alle x Minuten ausgeführt wird oder auch eine Änderung eines Zustands, auf den gelauscht wird.

      Wenn Zustand geändert –> tue, was in der Funktion steht. Das wäre die "on" function.

      Für deine Zwecke reicht das bzw ist geeigneter, denn du musst ja nicht alle 5 Minuten prüfen, ob dein Junior da ist sondern willst, dass wenn er da ist, die Heizung angepasst wird und ebenso, wenn er weggeht.

      Skript passe ich dir morgen gerne an

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

        Ah, so funktioniert das also.

        Ok, dann habe ich noch ein kleines Problem. Das wird vermutlich bei schedule bleiben müssen, weil die Thermostate alle 15 Minuten in ihre ursprüngliche Programmierung zurückfallen. Somit muss ich scheinbar den Wert immer neu einschreiben.

        Kann ich eigentlich den Wert auch auf eine Solltemperatur ändern?

        Ich denke das ich in der Wohnung ebenso absenken werde, aber dort will ich nicht auf ganze Nachtabsenkung runter sondern nur auf 20°C (ja, ja, die Frauen)

        Das habe ich eventuell so gebastelt:

        var idAnwesenheit = "tr-064.0.devices.XXXXXX-S6-edge.active"/*active*/;   
        var idAnwesenheit = "id:tr-064.0.devices.XXXXXP8.active"/*active*/;
        var idAnwesenheit = "id:tr-064.0.devices.XXXXXXMobil.active"/*active*/;
        var idTarget =  "fritzdect.0.Comet_119600XXX280.targettemp"/*Target Temp*/;   //Wohnzimmer
        var idComfy = "fritzdect.0.Comet_119600XXX280.comfytemp";
        var idNight = "fritzdect.0.Comet_119600XXX280.nighttemp";
        var idLow = "20";
        
        schedule = schedule(compareTime('05:45', '22:00', "between", null), function () {
        schedule('*/5 * * * *', function () {
          if( getState(idAnwesenheit).val)       // ein "Zielergebnis" muss nicht explizit genannt werden, denn  if(xy) testet xy auf true
        
            setState(idTarget, getState(idComfy).val);  // bei nur einer Folgeaktion müssen keine {} gesetzt werden
        
          else   
        
             setState(idTarget, 20 );
        
          });
        });
        
        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by

          Hallo Chaot,

          eventuell schreibst du mir nochmal genau, worum es geht:

          sind es zwei Wohnungen? Oder eine? Das ist mir gerade nicht klar.

          Du hast Thermostaten, die grundsätzlich in einem definierten "auto" Modus laufen, richtig? Die sind von AVM? Die kenne ich nicht.

          Anstatt alle 5 Minuten ggf. den auto Modus zu überschreiben kann man den bestimmt durch manuellen Modus ersetzen, und dann z.B. ab 22:45h auf Auto stellen.

          Dazu müsste ich mal einen Screenshot der States eines Thermostaten sehen.

          Schreib mir gerne nochmal Stück für Stück auf, was wie laufen soll (mit welchen Personen, soll es je nach Person anders reagieren? Wenn ja, überschreibt z.B. Anwesenheit der Ehefrau die Anwesenheit des Juniors (falls Junior auch ein paar Grad kälter verträgt, als die holde Maid?)). Aktuell hast du jetzt ja drei Anwesenheiten definiert (nehme an du, Ehefrau, Kind); soll es egal sein, wer da ist hinsichtlich Temperatur, oder unterscheidet sich das?

          Mit dem Skripten kann ich dir gerne helfen, allerdings bin ich kein "Heizungsguru", denn bei uns läuft die FBH einfach über die die Einstellungen am Boiler, ich passe also nicht dauernd an.

          Dein Code hat ein paar Fehler; die kann ich aber leider nicht komplett bereinigen, solange ich nicht weiß, was genau du möchtest, siehe meine Fragen oben.

          Ich schreibe dir aber als Kommentar mal ein paar Hinweise in den Code.

          
          */ Hinweis 1: du hast dreimal die gleiche Variable (Nummern habe ich nun hinzugefügt) und hast ihr drei Werte zugewiesen. Damit wäre idAnweseheit immer nur bezogen auf XXXXXMobil, als letztem zugewiesenen Wert. Daher habe ich drei Variablen draus gemacht */
          
          var idAnwesenheit1 = "tr-064.0.devices.XXXXXX-S6-edge.active"/*active*/;   
          var idAnwesenheit2 = "id:tr-064.0.devices.XXXXXP8.active"/*active*/;				
          var idAnwesenheit3 = "id:tr-064.0.devices.XXXXXXMobil.active"/*active*/;
          var idTarget =  "fritzdect.0.Comet_119600XXX280.targettemp"/*Target Temp*/;   //Wohnzimmer
          var idComfy = "fritzdect.0.Comet_119600XXX280.comfytemp";
          var idNight = "fritzdect.0.Comet_119600XXX280.nighttemp";
          var idLow = 20;						// Anführungszeichen bedeuten String, wahrscheinlich funktioniert das auch, ein Integer sollte aber passender sein							
          
          schedule('*/5 * * * *', function () {
            if(  ((getState(idAnwesenheit1).val || getState(idAnwesenheit2).val || getState(idAnwesenheit3).val )) && compareTime('05:45', 22:00', 'between') )        // wenn mindestens einer von euch da ist und es zwischen den Uhrzeiten ist, dann.....
          
              setState(idTarget, getState(idComfy).val);  // bei nur einer Folgeaktion müssen keine {} gesetzt werden
          
            else   
          
               setState(idTarget, idLow);
          
            });
          });
          
          
          1 Reply Last reply Reply Quote 0
          • Chaot
            Chaot last edited by

            Ah! Danke schön. Das mit den 3 Variablen ist mir zwar aufgefallen, aber ich hatte keine Idee zur Lösung.

            Tatsächlich handelt es sich in meinen Beiträgen um 2 verschiedene Thermostate bzw. Räume.

            oben habe ich versucht noch ein Zeitfenster einzugeben in dem der Thermostat per script gesteuert wird.

            In dem zweiten Block wird ein anderer Raum gesteuert. Das ist unser Wohnraum (ähnl. Loft). Dort soll die Heizung bei Anwesenheit von einem der 3 Telefone gesteuert werden.

            Da habe ich ebenfalls versucht ein Zeitfenster zu schreiben````
            schedule = schedule(compareTime('05:45', '22:00', "between", null), function ()

            aber scheinbar hast du das als Fehlerhaft erkannt und rausgeworfen. (Danke schön).
            
            Zu deinen Fragen:
            
            Es handelt sich um eine Wohnung mit 2 Thermostaten die gesteuertwerden sollen. Es gibt zwar noch weitere Räume, aber die können auf der "groben" Grundsteuerung bleiben.
            
            Dabei handelt es sich um Comet DECT Thermostate [https://www.amazon.de/gp/product/B00TA5 … UTF8&psc=1](https://www.amazon.de/gp/product/B00TA5DF2Q/ref=oh_aui_search_detailpage?ie=UTF8&psc=1) die an einer Fritzbox angeschlossen sind.
            
            Die Box ist eine Kabeldeutschland 6490 auf der es nicht möglich ist andere Firmware aufzuspielen.
            
            Ich habe bisher noch keine Möglichkeit gefunden die Thermostate über die Box auf einen manuellen Modus zu schalten. Es ist zwar möglich am Thermostat manuell eine Temperatur einzustellen. Diese wird aber nach spätestens 15 Minuten wieder mit der Solltemperatur überschrieben.
            
            In der Fritzbox ist grundsätzlich nur die Zeitsteuerung vorgesehen.
            
            Bei der Anwesenheit Junior soll ein Thermostat im Zimmer und der Wohnraum geschaltet werden.
            
            Bei Anwesenheit der beiden anderen Telefone soll dann nur der Wohnraum geschaltet werden.
            
            Allerdings dauert es recht lange den Wohnraum auf die Komforttemperatur zu bringen wenn er auf Nachtabsenkung war. von daher dachte ich das es reichen würde den Thermostat nur auf 19 oder20 Grad abzusenken
            [5779_dect1.jpg](/assets/uploads/files/5779_dect1.jpg)
            1 Reply Last reply Reply Quote 0
            • Chaot
              Chaot last edited by

              Ich habe das script von dir ausprobiert. Irgendwie zeigt der mir den Bereich hier als Fehlerhaft an:

              schedule('*/5 * * * *', function () {
                if(  ((getState(idAnwesenheit1).val || getState(idAnwesenheit2).val || getState(idAnwesenheit3).val )) && compareTime('05:45', 22:00', 'between') )        // wenn mindestens einer von euch da ist und es zwischen den Uhrzeiten ist, dann.....
              
                  setState(idTarget, getState(idComfy).val);  // bei nur einer Folgeaktion müssen keine {} gesetzt werden
              
                else   
              
                   setState(idTarget, idLow);
              
                });
              });
              

              Ich kann aber nicht erkennen was da falsch sein sollte.

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

                Ich denke mal ich hab's:

                var idAnwesenheit1 = "tr-064.0.devices.Galaxy-S6-edge.active"/*active*/;                 
                var idAnwesenheit2 = "id:tr-064.0.devices.G***-P8.active"/*active*/;
                var idAnwesenheit3 = "id:tr-064.0.devices.B****Mobil.active"/*active*/;
                var idTarget =  "fritzdect.0.Comet_1196****8280.targettemp"/*Target Temp*/;   //Wohnzimmer
                var idComfy = "fritzdect.0.Comet_1196****8280.comfytemp";
                var idNight = "fritzdect.0.Comet_1196****8280.nighttemp";
                var idLow = "20";                      
                
                schedule('*/5 * * * *', function () {
                  if(  ((getState(idAnwesenheit1).val || getState(idAnwesenheit2).val || getState(idAnwesenheit3).val )) && compareTime('05:45', '22:00', "between", null) )  
                
                    setState(idTarget, getState(idComfy).val);  
                
                  else   
                
                     setState(idTarget, idLow);
                
                });
                

                Zumindest läuft so das script ohne meckern.

                Morgen werde ich mal die Telefone aus dem Netz nehmen und sehen was passiert.

                1 Reply Last reply Reply Quote 0
                • T
                  tempestas last edited by

                  oh,

                  ja da hatte ich wohl ein }); gedoppelt ausversehen. Sowas passiert mir dauernd, wenn ich sachen nur im Forum tippe…

                  Lass hören, ob es geht.

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

                    Soweit ich sehe scheint das bisher zu funktionieren.

                    Zumindest sehe ich im Log das die SetTemp an die Thermostate gehen und das das Thermostat die Temperatur entsprechend setzt.

                    Ich danke dir nochmals für deine Hilfe.

                    Mal sehen ob ich jetzt meine Aquariumbeleuchtung von der seltsamen "Energenie" Steckdosenleiste nehme und die durch Sonoff S20 ersetze. Das finde ich komfortabler und sicherer (Die Verarbeitung der Leiste ist furchtbar). Aber da werden nur 3 Zeitschaltungen eingesetzt die recht einfach zu machen sein sollten.

                    Dank deiner Hilfe traue ich mir das jetzt zu so langsam auf die Reihe zu kriegen und mich doch etwas in die Scriptsprache einzuarbeiten. 😉

                    Übrigens: Der ursprüngliche Fehler in deinem Script war ein vergessenes " ' " vor der 22:00 Uhr Einstellung.

                    Basti97 1 Reply Last reply Reply Quote 0
                    • Chaot
                      Chaot last edited by

                      Dank der Hilfe von tempestas hier noch der Vollständigkeit halber die funktionierenden Scripte:

                      Für einen Raum:

                      var idAnwesenheit1 = "tr-064.0.devices.Telefon1.active"/*active*/; 
                      var idTarget = "fritzdect.0.Comet_119600001272.targettemp"/*Target Temp*/;
                      var idComfy = "fritzdect.0.Comet_119600001272.comfytemp";
                      var idNight = "fritzdect.0.Comet_119600001272.nighttemp";
                      
                      schedule('*/5 * * * *', function () {
                        if(  (getState(idAnwesenheit1).val) && compareTime('05:45', '22:00', "between", null)  )    
                      
                          setState(idTarget, getState(idComfy).val);  
                      
                        else   
                      
                           setState(idTarget, getState(idNight).val); 
                      
                      });
                      

                      Mit 3 Überwachten Telefonen:

                      ` > var idAnwesenheit1 = "tr-064.0.devices.Telefon1.active"/active/;

                      var idAnwesenheit2 = "tr-064.0.devices.Telefon2.active"/active/;

                      var idAnwesenheit3 = "tr-064.0.devices.Telefon3.active"/active/;

                      var idTarget = "fritzdect.0.Comet_119600008280.targettemp"/Target Temp/; //Wohnzimmer

                      var idComfy = "fritzdect.0.Comet_119600008280.comfytemp";

                      var idNight = "fritzdect.0.Comet_119600008280.nighttemp";

                      schedule('*/5 * * * *', function () {

                      if( ((getState(idAnwesenheit1).val || getState(idAnwesenheit2).val || getState(idAnwesenheit3).val )) && compareTime('05:45', '22:00', "between", null) )

                      setState(idTarget, getState(idComfy).val);

                      else

                      setState(idTarget, getState(idNight).val);

                      }); `

                      Nochmals meinen ausdrücklichen Dank an tempestas der mich sehr weit bei dieser Anwesenheitskontrolle unterstützt hat.

                      1 Reply Last reply Reply Quote 0
                      • Basti97
                        Basti97 Most Active @Chaot last edited by

                        @Chaot Ich habe gerade gelesen. Das du auch eine Energenie Steckdose besitzt. Hast du die in iob integrieren können. Ich habe bis jetzt das überhaupt noch nicht hinbekommen.

                        Chaot 1 Reply Last reply Reply Quote 0
                        • Chaot
                          Chaot @Basti97 last edited by

                          @Basti97 Ich habe die komische Steckdose schon vor längerer Zeit entfernt. Die hat auch über USB nie so richtig funktioniert wie ich das wollte.
                          Aktuell habe ich mir für das Aquarium aus einem Brüstungskanal, mehreren Relais und einem WemosD1 mini eine eigene Steckdosenleiste gebaut.
                          Der Wemos betätigt dabei die Steckdosen einzeln:
                          Heizung
                          Licht Tag
                          Licht Mondschein
                          Belüftung
                          und zusätzlich ohne Relais die Pumpe.
                          Außerdem hängen am Wemos noch zwei Temperatursensoren für Wasser und Pumpentemperatur.
                          Geschaltet wird dann über Scripte im ioBroker.

                          Das zweite Aquarium habe ich gleich bei der Einrichtung auf 12V umgebaut und dort alles nur mit Wemos und SonoffSV gesteuert. Da sind gar keine Steckdosen mehr im Einsatz.

                          Basti97 2 Replies Last reply Reply Quote 0
                          • Basti97
                            Basti97 Most Active @Chaot last edited by

                            @Chaot Danke ich habe die Lan Steckdose und bekomme diese auch nicht in iob. Das komische an der Steckdose ist, dass diese ohne Netzwerkanschluss überhaupt nicht funktioniert. Der behält nicht mal seine eigene Uhrzeit da er über einen Server die Uhrzeit immer abrufen will. Sobald man den Haken heraus macht kann man nur ein Datum bis 2010 einstellen.🙄 Damals war das meine erste Steckdose die ich hatte. Wenn ich das gewusst hätte🙄 dann hätte ich sie nicht gekauft.
                            Deine Lösung muss ich mir mal genauer ansehen das klingt interessant. Hast du eine fertige Relaismodul benutzt?

                            1 Reply Last reply Reply Quote 0
                            • Basti97
                              Basti97 Most Active @Chaot last edited by

                              @Chaot Hast du eine "richtige Tageslichtsimulation" für das Aquarium gebaut bzw programmiert. Das wäre auch noch ein Traum für mich.

                              Chaot 1 Reply Last reply Reply Quote 0
                              • Chaot
                                Chaot @Basti97 last edited by

                                @Basti97 Tageslichtsimulation habe ich noch nicht. Das werde ich mir mal in Ruhe zusammenkleben. Ich denke da an WS2812 die dann über den WLed Adapter gesteuert werden.
                                https://github.com/iobroker-community-adapters/ioBroker.wled/blob/master/README.md
                                https://github.com/Aircoookie/WLED
                                Aber das ist ein Projekt das ich in aller Ruhe umsetzen möchte um es so realitätsnah wie möglich zu schaffen.
                                Vorstufe habe ich beim Aquarium 2 angefangen. Dort ist die Tageslichbeleuchtung aus 6 x 1 m LED Stripes erstellt die einzeln geschaltet werden.

                                Ob du fertige Relaismodule verwendest hängt hauptsächlich von deinen handwerklichen Fähigkeiten ab. Ich habe das Löten gelernt und habe mir deshalb einzelne Relais gekauft die ich dann einzeln verlötet habe.
                                Nochmals würde ich diese Steckdosenleistenlösung allerdings nicht mehr so umsetzen. Das zweite Aquarium kann ich wesentlich genauer steuern und es ist auch kein sonderlicher Mehraufwand.
                                Da ich die Preise von fertigen Lichtbalken schlicht unverschämt finde baue ich mir meine Beleuchtung eben selbst. Vorzugsweise mit Bauteilen aus dem großen Land.

                                Basti97 1 Reply Last reply Reply Quote 0
                                • Basti97
                                  Basti97 Most Active @Chaot last edited by

                                  @Chaot Genau ganz besonders die Lichtbalken von Juwel die sind ganz schön teuer. Ich plane die Lichtleisten mit RGB SMD Leds verscheinlich die 10W Chips. Zusätzlich mit weißen und blauen Leds als Tagesbeleuchtung und Nacht/ bzw Mondlicht.
                                  Die ganzen anderen (außer Temperatur, Helligkeit, Futterautomat, Co2 Sensor, Erschütterungssensor gehen über ein ESP) alles andere über eine Logo8.

                                  Hast du Wled auch noch wo anders in benutz?
                                  Mir fehlen die Inspirationen für die bis wie ich diese aufbauen kann.

                                  Chaot 1 Reply Last reply Reply Quote 0
                                  • Chaot
                                    Chaot @Basti97 last edited by

                                    @Basti97 Ich habe die WS2812 als Deckenbelechtung, in verschiedenen Dekolampen und auch als Thermometerdisplay im Einsatz. Dadurch das ich die so genau mit der Lichtfarbe regeln kann sehe ich die besser für die Tageslichsimulation geeignet als die RGB Streifen.
                                    Bei meinem 120cm Becken werde ich die LEDs hinter einer Plexiglasplatte (matt) verarbeiten und diese dann gleichzeitig als Deckel verwenden. Da habe ich bisher ein LED Panel mit 120 cm im Einsatz und das funktioniert recht gut. Ich muss es lediglich alle 2-3 Wochen putzen weil sich dort Algen ansetzen wo der Lüfter hochkommt.
                                    Wie ich die Lampe dann im Endeffekt aufbaue habe ich mir noch keine richtigen Gedanken gemacht. Ich stelle mir das bisher so vor wie in den Paneelen:
                                    Plexiplatte 1 mm matt
                                    Plexiplatte 8 - 10 mm matt die seitlich mit LEDs bestückt ist
                                    Alufolie (als Reflektor) eventuell Spiegelfolie die auch nicht sonderlich teuer ist
                                    Deckel (Blech oder Bastelplatte)
                                    Das Ganze in einem Alurahmen der mir die nötige Stabilität gibt und an dem ich dann ein Scharnier befestigen kann um den Deckel hochzuklappen.
                                    Die Deckelvariante muss ich sowieso verwenden weil meine Stachelaale bei der Jagd auch jetzt schon mal gegen den Deckel knallen.
                                    Die untere Plexiplatte mit 1mm wird zwar nicht zwingend benötigt, aber die habe ich als "Opferplatte" geplant die nach einiger Zeit so verkalkt ist das sie sich nicht mehr gut reinigen lässt und dann getauscht wird.

                                    Basti97 1 Reply Last reply Reply Quote 0
                                    • Basti97
                                      Basti97 Most Active @Chaot last edited by

                                      @chaot Bist du in der zwischen Zeit weitergekommen mit der Tageslichtsimulation. Ich irgendwie nicht die Übergänge sind bei mir noch zu "hart" und das Blockly auch zu kompliziert. Ich weiß nicht ob man das mit einer Schleife oder Zähler flüssiger hinbekommt. Bis jetzt habe ich die Einzelnen Farben mit einen Blockly gemacht.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      867
                                      Online

                                      31.9k
                                      Users

                                      80.3k
                                      Topics

                                      1.3m
                                      Posts

                                      4
                                      29
                                      3242
                                      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