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. Skripten / Logik
  4. JavaScript
  5. Jalousien/Astro Script/Blockly

NEWS

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

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

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

Jalousien/Astro Script/Blockly

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptblockly
11 Beiträge 4 Kommentatoren 1.5k 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 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".

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #2

    @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);
    });
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • D Offline
      D Offline
      darki
      schrieb am zuletzt editiert von
      #3

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

      paul53P J.A.R.V.I.S.J 2 Antworten Letzte Antwort
      0
      • D darki

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

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #4

        @darki sagte:

        Vorgehensweise so nicht grundlegend falsch?

        Nein, sie hat doch funktioniert.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • D darki

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

          J.A.R.V.I.S.J Offline
          J.A.R.V.I.S.J Offline
          J.A.R.V.I.S.
          Developer
          schrieb am zuletzt editiert von
          #5

          @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 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            darki
            schrieb am zuletzt editiert von
            #6

            @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.

            :hearts:

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              darki
              schrieb am zuletzt editiert von
              #7

              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 Antwort Letzte Antwort
              0
              • D darki

                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 Offline
                D Offline
                darki
                schrieb am zuletzt editiert von
                #8

                @darki
                Hat sich erledigt. Hatte die Richtungen falsch.

                1 Antwort Letzte Antwort
                0
                • X Offline
                  X Offline
                  xbow42
                  schrieb am zuletzt editiert von
                  #9

                  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 Antwort Letzte Antwort
                  0
                  • D Offline
                    D Offline
                    darki
                    schrieb am zuletzt editiert von darki
                    #10

                    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 Antwort Letzte Antwort
                    0
                    • X Offline
                      X Offline
                      xbow42
                      schrieb am zuletzt editiert von
                      #11

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

                      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

                      935

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      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