Ankündigung

Einklappen
Keine Ankündigung bisher.

homebridge-knx 0.3.0 alpha (Apple HomeKit interface)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Da hänge ich mich mal kurz mit dran.
    Habe noch nicht ganz verstanden, wie man einen Raffstore steuert. Habe es auch so wie hier gezeigt implementiert. Aber die Lammelen lassen sich nicht steuern.
    Ich kann nur die Höhe des Behangs steuern. Also z.B. Fahren den Raffstore auf 50%. Die Lamellen nehmen nach der Fahrt die Position "komplett geöffnet" ein. Das ist extrem unschön.
    Aktor ist ein ABB. Gibts hierfür ne Lösung?

    Code:
            {
                "DeviceName": "Jalousie Küche",
                "Services": [
                    {
                        "ServiceType": "WindowCovering",
                        "Handler": "WindowCoveringTilt",
                        "ServiceName": "Jalousie Küche",
                        "Characteristics": [
                            {
                                "Type": "TargetPosition",
                                "Set": [
                                    "3/3/90" ===> GA: Jalousie Position anfahren
                                ],
                                "Listen": [
                                    "3/3/90" ===> GA: Jalousie Position anfahren
                                ],
                                "DPT": "DPT5"
                            },
                            {
                                "Type": "CurrentPosition",
                                "Listen": [
                                    "3/1/92" ===> GA: Jalousie Position
                                ],
                                "DPT": "DPT5"
                            },
                            {
                                "Type": "PositionState"
                            },
                            {
                                "Type": "TargetHorizontalTiltAngle",
                                "Set": [
                                    "3/3/91" ===> GA: Lamellen Position anfahren
                                ],
                                "Listen": [
                                    "3/3/91" ===> GA: Lamellen Position anfahren
                                ],
                                "DPT": "DPT5"
                            },
                            {
                                "Type": "CurrentHorizontalTiltAngle",
                                "Listen": [
                                    "3/1/93" ===> GA: Lamellen Position
                                ],
                                "DPT": "DPT5"
                            }
                        ],
                        "KNXObjects": [
                            {
                                "Type": "ShutterMove",
                                "Listen": "3/0/92", ===> GA: Jalousie fahren
                                "DPT": "DPT1"
                            }
                        ],
                        "KNXReadRequests": [
                            "3/1/92", ===> GA: Jalousie Position
                            "3/1/93" ===> GA: Lamellen Position
                        ],
                        "LocalConstants": {
                            "ninetyDegRotation": "false"
                        }
                    }]
            }
    Zuletzt geändert von McEgg; 29.12.2019, 15:09.
    Ciao Jochen

    Kommentar


      felixpause:

      Hallo Felix,

      vielen Dank für die Hilfe.

      Habe es gerade implementiert und es scheint im ersten Test zu funktionieren. Wie heißt denn der Siri Befehl um die Lamellen auf einen bestimmten Prozentwert (Winkel) zu verstellen?
      Siri hat meine benutzen Begriffe nicht verstanden. :-)

      Vielen Dank für die Hilfe nochmal!

      Viele Grüße
      Steffen

      Kommentar


        pioneersteffen: Den Siri Befehl für die Lamellen habe ich leider auch nicht herausfinden können. Konnte auch bei Google nichts finden. Das scheint noch zu fehlen.
        McEgg: Das Verhalten mit den offenen Lamellen habe ich bei mir auch beobachtet. Die Lamellenposition bleibt unverändert wenn die Höhe verändert wird. Da sie in offener Position bei 0% sind, sind sie auch bei geschlossener Position bei 0%. Eigentlich soweit logisch. Nur sind wir es gewohnt, dass sie normalerweise beim schließen auf 100% wechseln. Bei dem Handler arbeiten wir ja jetzt aber mit der absoluten Position im Aktor während am Taster mit Auf/Ab gearbeitet wird.

        Kommentar


          felixpause
          D.h. Jalousien sind quasi nicht per Homebridge zu steuern, da man diese damit nicht zu bekommt? Oder hast du es anders gelöst?
          Ciao Jochen

          Kommentar


            Zitat von knxmelon Beitrag anzeigen
            Hallo, da meine MDT Rolladen Aktoren mit dem Gira Handler nicht richtig gelaufen sind, habe ich einen eigenen implementiert. Code und Eintrag für knx_config.json anbei. Habe es noch nicht besonders ausführlich getestet - bei mir läufts jedenfalls.
            Die Datei MDTRollingShutterActuator.js muss im addins Verzeichnis des homebridge-knx modules abgelegt werden. Bei mir: /usr/local/lib/node_modules/homebridge-knx/lib/addins

            Gruß Jan
            Danke, dass du dein addin geteilt hast. Ich hab bei mir das Problem gehabt, dass beim drauftippen zu Schließen immer auf 99% gefahren wurde. Auch wenn es damit theoretisch zu ist wurde es weiterhin als 1% geöffnet angezeigt. Ich hab deshalb im onHKValueChange zwei Zeilen bei mir angepasst (siehe Kommentar dazu im Code).

            Code:
            // felixpause: es wird nirgends durch newValue geteilt
            //if (newValue == 0) newValue = 1; //schmutzig, Division durch 0 vermeiden
            
            switch (field){
            case "TargetPosition":
            
            // felixpause: ich fahre auch bei weniger als 10 Unterschied die neue Position an.
            //Rolladen soll neues Ziel anfahren, aber nur wenn die neue Position sich von der alter um mehr als 10% unterscheidet.
            //if (Math.abs(oldValue - newValue)>10) this.myAPI.knxWrite("TargetPosition", 255-(Math.round(newValue*10)/10/100*255), "DPT5");
            
            this.myAPI.knxWrite("TargetPosition", 255-(newValue/100*255), "DPT5");
            break;
            case "HoldPosition":
            this.myAPI.knxWrite("HoldPosition", 1, "DPT1");
            break;
            } //switch

            Kommentar


              Zitat von McEgg Beitrag anzeigen
              felixpause
              D.h. Jalousien sind quasi nicht per Homebridge zu steuern, da man diese damit nicht zu bekommt? Oder hast du es anders gelöst?
              Du musst die Lamellen manuell auch auf 100% setzen. Den Slider gibt es ja dazu in der Home App. Nur das Siri Kommando dafür kenne ich nicht.

              Das Problem liegt an der Stelle ja eher daran, dass wir mit der absoluten Position im Aktor arbeiten und der Aktor die Lamellenposition nicht verändert. Man müsste also im Handler anpassen, dass wenn die Position auf 100% gesetzt wird, auch die Lamellen auf 100% gesetzt werden. Ich weiß allerdings nichts ob das andere Nebeneffekte hat.

              Kommentar


                Naja, da das Ziel ist alles per Sprache zu steuern, ist es natürlich unschön, dass man dann nochmal manuell in der App die Lamellen nachstellen muss.
                Ich habe außerdem gerade mal nachgeschaut. Das Device ist wie oben abgebildet angelegt. Ich habe allerdings nur einen Slider zum Hoch- und Runterfahren. Da ist kein weiterer für die Lamellen. Woran liegt das? Oder bin ich blind?
                Ciao Jochen

                Kommentar


                  Zitat von McEgg Beitrag anzeigen
                  Naja, da das Ziel ist alles per Sprache zu steuern, ist es natürlich unschön, dass man dann nochmal manuell in der App die Lamellen nachstellen muss.
                  Ich habe außerdem gerade mal nachgeschaut. Das Device ist wie oben abgebildet angelegt. Ich habe allerdings nur einen Slider zum Hoch- und Runterfahren. Da ist kein weiterer für die Lamellen. Woran liegt das? Oder bin ich blind?
                  Das ist tatsächlich etwas versteckt. Du musst lange auf das Objekt klicken. Danach siehst du den Slider den du vermutlich bereits angesprochen hast. Wenn du nun aber neben den Slider einfach nochmal nach unten scrollst kommst du auf die Detailansicht wo du auch Raum, Favoritenansicht, etc. anpassen kannst. Und dort ist oben dann der Slider für den Lamellenwinkel.

                  Ich muss dir recht geben: alles andere als schön. Ich bin auch am überlegen ob ich einen neuen Handler dazu schreiben soll.

                  Andere Idee: Lamellen und Behanghöhe als separate Objekte...

                  Kommentar


                    Ah danke. Das ist wirklich nicht schön gemacht. Funktioniert bei mir auch nicht wirklich gut. Naja, mal schauen.
                    Das mit den zwei Objekten ist auch ne Idee. Wäre zumindest ein Workaround. Nicht besonders elegant, aber würde bestimmt gehen.
                    Ein neuer Handler hört sich auch gut an. Wenn du Zeit hast und der Aufwand net zu groß ist... ich teste ihn gerne.
                    Ciao Jochen

                    Kommentar


                      Hm, jetzt habe ich gerade das nächste Problem mit der Jalousie. Jetzt fährt die Jalousie auf einmal die falsche Position an.

                      Aktuelle Konfiguration:
                      Code:
                                      {
                                          "ServiceType": "WindowCovering",
                                          "Handler": "WindowCoveringTilt",
                                          "ServiceName": "Jalousie Küche",
                                          "Characteristics": [
                                              {
                                                  "Type": "TargetPosition",
                                                  "Set": [
                                                      "3/3/90"
                                                  ],
                                                  "Listen": [
                                                      "3/3/90"
                                                  ],
                                                  "DPT": "DPT5"
                                              },
                                              {
                                                  "Type": "CurrentPosition",
                                                  "Listen": [
                                                      "3/1/92"
                                                  ],
                                                  "DPT": "DPT5"
                                              },
                                              {
                                                  "Type": "PositionState"
                                              },
                                              {
                                                  "Type": "TargetHorizontalTiltAngle",
                                                  "Set": [
                                                      "3/3/91"
                                                  ],
                                                  "Listen": [
                                                      "3/3/91"
                                                  ],
                                                  "DPT": "DPT5"
                                              },
                                              {
                                                  "Type": "CurrentHorizontalTiltAngle",
                                                  "Listen": [
                                                      "3/1/93"
                                                  ],
                                                  "DPT": "DPT5"
                                              }
                                          ],
                                          "KNXObjects": [
                                              {
                                                  "Type": "ShutterMove",
                                                  "Listen": "3/0/92",
                                                  "DPT": "DPT1"
                                              }
                                          ],
                                          "KNXReadRequests": [
                                              "3/1/92",
                                              "3/1/93"
                                          ],
                                          "LocalConstants": {
                                              "ninetyDegRotation": "false"
                                          }
                                      }
                      Wenn ich sage, dass auf 80% gefahren werden soll, wird auf 20% gefahren. Sage ich 30%, wird auf 70% gefahren usw.
                      Wie kann das denn sein?
                      Im Log steht das (nach dem Befehl "fahre 30% an"):
                      Code:
                      Jan 03 21:58:42 debian homebridge[4325]: INFO: onHKValueChange(TargetPosition, 66, 30)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.getValue(CurrentPosition)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] Returning HomeKitValue
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] Returning HomeKitValue of 66
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(PositionState,0)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: INFO: onHKValueChange after calc (178.5)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.knxWrite(TargetPosition,178.5,DPT5)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: INFO: onKNXValueChange(TargetPosition, 30, 178)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.getValue(CurrentPosition)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] Returning HomeKitValue
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] Returning HomeKitValue of 66
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.getValue(CurrentPosition)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] Returning HomeKitValue
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] Returning HomeKitValue of 66
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(PositionState,0)
                      
                      Jan 03 21:58:42 debian homebridge[4325]: [3.1.2020, 21:58:42] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(TargetPosition,30.196078431372555)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: INFO: onKNXValueChange(CurrentPosition, 66.27450980392157, 178)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(CurrentPosition,30.196078431372555)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(PositionState,2)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.getValue(CurrentPosition)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] Returning HomeKitValue
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] Returning HomeKitValue of 30
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(TargetPosition,30)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: INFO: onKNXValueChange(CurrentPosition, 30.196078431372555, 178)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(CurrentPosition,30.196078431372555)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(PositionState,2)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.getValue(CurrentPosition)
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] Returning HomeKitValue
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] Returning HomeKitValue of 30
                      
                      Jan 03 21:58:53 debian homebridge[4325]: [3.1.2020, 21:58:53] [homebridge-knx.KNX] WindowCoveringTilt->customServiceAPI.setValue(TargetPosition,30)
                      Im Gruppenmonitor in der ETS kommen auch 70% an. An welcher Stelle wird der Befehl also verdreht???
                      Hab schon die knx_config.json neu eingespielt (ohne Keys), die config.json geändert und die Bridge neu in der App eingefügt. Hilft alles nichts...
                      Ciao Jochen

                      Kommentar


                        Das liegt am Handler, der muss das drehen.... Apple positioniert seit je her die Jalousien verkehrt.
                        Mfg Micha
                        Ich sage ja nicht, das wir alle dummen Menschen loswerden müssen, aber könnten wir nicht einfach alle Warnhinweise entfernen und den Dingen ihren Lauf lassen?

                        Kommentar


                          Und wie bring ich den dazu? Wie gesagt, ich bilde mir ein, dass das die letzten Tage mal ging und ich eigentlich nur die Probleme mit den Lamellen hatte....
                          Ciao Jochen

                          Kommentar


                            Hab den Handler auch mal geändert:

                            Code:
                            //newValue = 100 - knxValue*100 / 255;
                            newValue = knxValue*100 / 255;
                            Allerdings ändert sich am Verhalten nichts. Verstehe ich nicht.
                            Is der Handler irgendwo gecached?
                            Ciao Jochen

                            Kommentar


                              Hi,
                              nur eine ganz einfache Frage, zu der ich meinte, irgendwo mal eine Antwort gefunden zu haben, ab sie leider nicht mehr finde:

                              "ServiceType": "Switch",
                              "ServiceName": "Tor",
                              "Characteristics": [
                              {
                              "Type": "On",
                              "Set": [
                              "9/1/0"
                              ],
                              "Listen": [
                              "9/1/0"

                              Kann ich hier auch irgendwo mit angeben, dass IMMER nur ein "EIN" (bzw. 1) via Homebridge zum KNX geschickt wird?

                              Gruß
                              Tobi
                              Grüße
                              tobihoby

                              Kommentar


                                Dafür gibt es den Handler "OneWaySwitch"

                                Kommentar

                                Lädt...
                                X