Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Jalousien/Astro Script/Blockly

    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

    Jalousien/Astro Script/Blockly

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

      Hallo zusammen, erstmal möchte ich mich bedanken, an allen die so eine tolle Software entwickelt haben!!!
      Ich habe hier in 2-3 Tagen mit ioBroker hinbekommen, dass ich in OpenHAB niemals geschafft hätte.

      Wollte folgendes Umsetzen:
      Elektrische Jalousie auf/zu und hoch/runter fahren, und das mit Alexa. Dabei sollte auf/zu jeweils 5% hoch oder runter fahren.
      Hab das jetzt so umgesetzt:

      Shelly 2.5 in der Jalousie.
      Folgende Adapter installiert:

      • Alexa2
      • Shelly
      • IoT Assistants
      • Script Engine

      Habe nun folgende Objekte hinzugefügt:
      Unbenannt.PNG

      Und folgende Objekte durch den Shelly Adapter gefunden:
      Unbenannt.PNG

      Habe nun im IoT Adapter folgende Geräte erstellt:
      Unbenannt.PNG
      Der erste ist direkt die Position des Shelly Objekts, der zweite der Benutzerdefinierte.

      Dann habe ich bei Alexa eine Routine erstellt die bei dem Kommando "Alexa, Jalousie Couch auf" das Gerät "Jalousie Couch steuern" einschaltet und noch eine Routine umgekehrt für "Alexa, Jalousie Couch zu".
      Als nächstes folgendes Script geschrieben (Ich programmiere Beruflich ABB Roboter und privat Arduinos/ESP2866, aber Java war absolutes neuland für mich.):

      on({id:"0_userdata.0.Alexa_Geräte.Jalousie_Couch.steuern"},function(obj){
          var wert;
          if (getState("0_userdata.0.Alexa_Geräte.Jalousie_Couch.steuern").val == true)
              wert = getState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position").val + 5;
              else if (getState("0_userdata.0.Alexa_Geräte.Jalousie_Couch.steuern").val == false) {
                  wert = getState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position").val -5;
              }
          setState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position",wert);
      });
      

      So funktioniert alles genau so, wie ich es will. Ich werde noch "stop" hinzufügen, ich würde nur gern von euch wissen, ob es da noch elegantere Lösungen für so etwas gibt und vorallem ob der Java Code so gut ist, oder ob da noch Verbesserungspotenzial steckt.
      Die Funktion on() kann doch bestimmt direkt auf "true" und "false" prüfen, nur hab ich noch nicht richtig gerafft wie.
      Hab das alles nie gelernt und bin erst privat auf Arduino also C++ und seid einem Jahr mit ABB Rapid Code(ähnlich wie C++ aber simpler).
      In OpenHAB hab ich die Art der Programmierung der "rules" nie so richtig gerafft. Hier über Java fühle ich mich zumindest schonmal deutlich mehr "zuhause".

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

        @darki sagte in Verbessungspotental am Script bzw. Vorgehensweise:

        Die Funktion on() kann doch bestimmt direkt auf "true" und "false" prüfen

        Ja, aber da beide Werte (false/true) ausgewertet werden, macht es im Trigger keinen Sinn. Vereinfachung:

        var wert = getState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position").val;
        on({id:"0_userdata.0.Alexa_Geräte.Jalousie_Couch.steuern"},function(obj){
            if (obj.state.val) wert += 5;
            else  wert -= 5;
            if(wert < 0) wert = 0;
            if(wert > 100) wert = 100; 
            setState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position", wert);
        });
        
        1 Reply Last reply Reply Quote 0
        • D
          darki last edited by

          Ja funktioniert genauso gut.
          Ich werde mich wohl mal in Javascript einlesen müssen.
          Ansonsten ist die Vorgehensweise so nicht grundlegend falsch?

          paul53 J.A.R.V.I.S. 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @darki last edited by

            @darki sagte:

            Vorgehensweise so nicht grundlegend falsch?

            Nein, sie hat doch funktioniert.

            1 Reply Last reply Reply Quote 0
            • J.A.R.V.I.S.
              J.A.R.V.I.S. Developer @darki last edited by

              @darki was du noch ändern könntest wäre var mit let bzw. const zu ersätzen, da var eingentlich nicht mehr verwendet wird.

              Und falls du deine Wertzuweisung noch ein bisschen kürzer machen möchtest kannst du dir die geänderte Zeile unten einmal anschauen.

              Wenn die Vorgehensweise funktioniert, dann ist sie nicht falsch. Mitunter wirst du aber vielleicht nach einer Zeit merken, dass es auch einfacher oder eleganter geht.

              let wert = getState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position").val;
              
              on({id:"0_userdata.0.Alexa_Geräte.Jalousie_Couch.steuern"}, function(obj) {
              
                  wert = obj.state.val ? wert + 5 : wert - 5;
                  
                  if(wert < 0) wert = 0;
              
                  if(wert > 100) wert = 100; 
              
                  setState("shelly.0.SHSW-25#10FB0A#1.Shutter.Position", wert);
              
              });
              
              1 Reply Last reply Reply Quote 0
              • D
                darki last edited by

                @J-A-R-V-I-S said in Verbessungspotental am Script bzw. Vorgehensweise:

                Wenn die Vorgehensweise funktioniert, dann ist sie nicht falsch. Mitunter wirst du aber vielleicht nach einer Zeit merken, dass es auch einfacher oder eleganter geht.

                Deswegen frage ich ja 😉
                Da kommen noch einige Jalousien dazu.
                Zudem noch ein haufen Rollos und später Dimmer.
                Wenn meine Lampen fertig sind, auch ein haufen WS2812b Strpies mit ESP8266 gesteuert durch MQTT.
                Ich muss ehrlich zugeben, das ioBroker zwar deutlich schlechter beschrieben/dokumentiert ist als OpenHAB.
                Aber ich hab es deutlich schneller gerafft.

                Wenn ich in ein paar Tagen immer noch so überzeugt bin, werde ich wohl gerne was spenden.

                Auch die Community scheint deutlich hilfsbereiter zu sein.

                ♥

                1 Reply Last reply Reply Quote 0
                • D
                  darki last edited by

                  Hab jetzt noch Astro hinzugefügt, diesmal mit Blockly.

                  Unbenannt.PNG

                  Leider funktioniert das so nicht.
                  Heute morgen wurden die Jalousien nicht geöffnet.
                  Abends sollen alle runterfahren, ausser die Terasse, die soll auf 60% runter und dann kurz darauf auf 65% um zu zu fahren.

                  Längen und Breitengrad sind eingetragen, automatisch nachdem ich Land und Stadt eingegeben habe.
                  Habe ich was vergessen?

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    darki @darki last edited by

                    @darki
                    Hat sich erledigt. Hatte die Richtungen falsch.

                    1 Reply Last reply Reply Quote 0
                    • X
                      xbow42 last edited by

                      wenn du mal 15 Prozent fahren willst musst du ja 3x Alexa anquatschen.
                      Mir ist es lieber ich kann eine gewünschte Position direkt anfahren.
                      ich habe im iot-Adapter den Datenpunkt meinen DP "shelly.0.SHSW-25#00815D#1.Shutter.Position" eingetragen mit Smartnamen "Rollladen Vitrinenfenster".
                      -> Alexa, suche Geräte
                      -> Alexa, schalte Rollladen Vitrinenfenster auf 15 Prozent" -> OK

                      Ein Script werde ich nur für die speziellen Aufgaben anlegen.
                      z.B bei den Rollläden wo die Fenster nach außen öffnen um zu verhindern dass der Laden die Fenster rammt, oder für die Terrrassentür(Haustierpippigehmodus, Aussperrschutz für Astroautomatik wenn wir im Garten sind), dynamische Verschattung bei Sonneneinstahlung.

                      Gruß Michael

                      1 Reply Last reply Reply Quote 0
                      • D
                        darki last edited by darki

                        Jein, also ich benutzte mehrere Kommandos.
                        Mit "Auf/Zu" fahre ich jeweils 5 vom aktuellen wert.
                        Wenn ich "hoch/runter" benutze, dann fährt alles 25% hoch bzw runter. Das funktioniert einfach durch verknüpfen des "Position" werts mit einem IoT Gerät.
                        Kommando "ganz hoch/runter" fährt dann komplett.

                        Hier die Konfiguration:
                        Unbenannt.PNG

                        Unbenannt.PNG

                        Jalousie Küche (Position) wirkt direkt auf die Position in %. Kommando "hoch/runter" sind wohl automatisch 25% und "ganz hoch/runter" dann jeweilt komplett.
                        Jalousie Küche steuern ist der oben genannte Script und wird in Alexa mit Routinen durch "Auf/Zu" ausgelöst.
                        Jalousie Küche stop setzt mit dem Kommando "Jalousie Küche stop" das Shelly element "pause" aus.

                        Wobei das Kommando "Jalousie Küche stop" wohl auch direkt das Gerät "Jalousie Küche" steuert. Da muss ich mir noch was einfallen lassen.
                        Insgesammt funktioniert das so schon ganz gut.

                        1 Reply Last reply Reply Quote 0
                        • X
                          xbow42 last edited by

                          danke für die Erklärung! hoch/runter werde ich dann auch nutzen.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          901
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          blockly javascript
                          4
                          11
                          1332
                          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