Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] geofency ändert Home status nicht

    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] geofency ändert Home status nicht

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

      Hallo,

      ich nutze schon eine weile den Geofancy Adapter. Dieser funktioniert auch einwandfrei. Danke dafür.

      Ich bekomme aber die Funktion "Home" nicht hin. Sie ändert sich einfach nicht…

      576_geofancy_2.png

      Im Adapter selbst habe ich unter "Home Zu_Hause_SH1" angegeben.

      Was ist denn daran falsch?

      Gruß Sven

      1 Reply Last reply Reply Quote 0
      • S
        Sven2013 last edited by

        Hallo Leute,

        bin ich der einzige dem es so geht? Wie habt ihr das denn hinbekommen, das unter Home Anwesende auftauchen?

        Lg Sven

        Gesendet von iPhone mit Tapatalk

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

          Hi Sven,

          ich kann Dir nur den Gutfall melden, auch wenn dich die Datenpunkte nicht nutze:

          327_geofency.jpg

          Die Schreibweise vom Ort "daheim" muss in der App und im Adapter 100% stimmen.

          Eventuell werden nur "0","1",… als User akzeptiert und nicht "Sven"?

          Du kannst mit einem kleinen Skript die Datenpunkte, die Du benötigst, selbst anlegen.

          Gruß

          Michael

          1 Reply Last reply Reply Quote 0
          • S
            Sven2013 last edited by

            Hallo Michael,

            vielen Dank. Die Adaptereinstellung ist aus dem Datenpunkt kopiert, somit kann kein Rechtschreibfehler vorliegen.

            Kannst du mir so eins Script für die Datenpunkte als Beispiel einmal vorgeben? Ich habe leider keine Ahnung von Script. Ich kann nur zusammenkoppelten aus anderen Scripten. Meistens funktioniert es dann. Allerdings fehlt mir hier die Grundlage.

            Das wäre echt sehr nett von dir.

            Gruß Sven

            Gesendet von iPhone mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • S
              Sven2013 last edited by

              Hallo Michael,

              Mein Anliegen hat sich erledigt. Ich habe grade dein Script zu dem Thema gefunden. Meine Suchbegriffe waren vorher wohl schlecht gewählt.

              Danke ,

              Gruß Sven

              Gesendet von iPhone mit Tapatalk

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

                Wie heissen denn Deine Geofency User?

                Du hast einmal "sven" und einmal "Vi". Gibt es noch mehr?

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

                  Probier mal:

                  ! ```
                  `var geofencyUser = ["sven","Vi"];
                  var geofencyHome = "Home Zu_Hause_SH1";
                  ! // In welchem Pfad sollen in der Javascript Instanz die Datenpunkte angelegt werden. String mit "." am Ende.
                  var dpPfad = "geofency" + ".";
                  ! // Datenpunktnamen
                  var idAnzahlDaheim = dpPfad + "anzahlDaheim";
                  var idAnwesend = dpPfad + "anwesend";
                  var idListeDaheim = dpPfad + "listeDaheim";
                  ! // Umgebungsparameter
                  var instanz = "javascript." + instance + ".";
                  var geofencyPfad = "geofency.0.";
                  var scriptOn = name.replace("script.js",instanz + "scriptEnabled");
                  ! function dpAnlegen() {
                  ! // einfach angelegte Datenpunkte
                  // -----------------------------
                  //createState(dpPfad + 'datenpunktName',"Test");
                  ! // ausführlich beschriebene Datenpunkte
                  // ------------------------------------
                  createState(idAnzahlDaheim, 0, { // Datenpunktname ohne Leerzeichen und Sonderzeichen, wie er in den Objekten angelegt wird
                  name: 'Anzahl Geofency User daheim', // Lesbarer Name des Datenpunkts
                  desc: 'Anzahl Geofency User daheim', // Beschreibung des Datenpunkts
                  type: 'number', // Bescreibung des Typ, wie: number, string, boolean
                  unit: '' // Einheit, wenn benötigt
                  });
                  ! createState(idAnwesend, null, { // Datenpunktname ohne Leerzeichen und Sonderzeichen, wie er in den Objekten angelegt wird
                  name: 'Geofency User daheim', // Lesbarer Name des Datenpunkts
                  desc: 'Geofency User daheim, Booelean', // Beschreibung des Datenpunkts
                  type: 'boolean', // Bescreibung des Typ, wie: number, string, boolean
                  unit: '' // Einheit, wenn benötigt
                  });
                  ! createState(idListeDaheim, "", { // Datenpunktname ohne Leerzeichen und Sonderzeichen, wie er in den Objekten angelegt wird
                  name: 'Liste Geofency User daheim', // Lesbarer Name des Datenpunkts
                  desc: 'Liste Geofency User daheim, Booelean', // Beschreibung des Datenpunkts
                  type: 'string', // Bescreibung des Typ, wie: number, string, boolean
                  unit: '' // Einheit, wenn benötigt
                  });
                  !
                  }
                  ! function getStateSec (dp) {
                  if (getState(dp)) {
                  return getState(dp);
                  }
                  log("Skript versucht nicht vorhandenen Datenpunkt zu lesen: " + dp,"warn");
                  log("Skript wird angehalten und muss manuell wieder gestartet werden","warn");
                  log(scriptOn);
                  setState(scriptOn,false); // Skript wird gestoppt
                  }
                  ! function geofencyStatus() {
                  var dp, status;
                  var listeDaheim = [];
                  var anzahlDaheim = 0;
                  var anwesend = false;

                  for (var i = 0; i < geofencyUser.length; i++) {
                      dp = geofencyPfad + geofencyUser[i] + "." + geofencyHome + ".entry";
                      status = getStateSec(dp).val;
                      if((status === true) || (status == "1")) {
                          log(dp + ": " + status);
                          anzahlDaheim++;
                          listeDaheim.push(geofencyUser[i]);
                          anwesend = true;
                      }
                  }
                  log("AnzahlDaheim:" + anzahlDaheim);
                  setState(idAnzahlDaheim,anzahlDaheim);
                  setState(idAnwesend,anwesend);
                  setState(idListeDaheim,JSON.stringify(listeDaheim));
                  

                  }

                  ! function onAnlegen() {
                  ! /*
                  on({id: 'xxx' ,change:'ne'}, function (obj) {
                  // was soll bei Datenpunktänderung passieren
                  });
                  */
                  for (var i = 0; i < geofencyUser.length; i++) {
                  var dp = geofencyPfad + geofencyUser[i] + "." + geofencyHome + ".entry";
                  on({id: dp ,change:'ne'}, function (obj) {
                  geofencyStatus();
                  });
                  }
                  ! }
                  ! function main() {
                  geofencyStatus();
                  }
                  ! dpAnlegen(); // erst die notwendigen Datenpunkte anlegen
                  setTimeout(onAnlegen, 500); // dann die Subscriptions setzen
                  setTimeout(main, 1000); // dann das Hauptprogramm starten` [/i][/i][/i]

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

                    @Sven2013:

                    Mein Anliegen hat sich erledigt. Ich habe grade dein Script zu dem Thema gefunden. Meine Suchbegriffe waren vorher wohl schlecht gewählt. `

                    Oh… den Post habe ich gar nicht gesehen.

                    Jetzt hast Du ein Post höher noch ein anderes Skript, welches:

                    • die Anzahl der Anwesenden zählt

                    • die Namen der Anwesenden aufführt

                    • true bei Anwesenheit setzt

                    Welches Skript meintest Du denn?

                    1 Reply Last reply Reply Quote 0
                    • S
                      Sven2013 last edited by

                      Hallo Michael,

                      vielen Dank für deine Arbeit. Ich habe aktuell nur den Nutzer "Sven" und 2 Orte die dazu gehören.

                      1 Ort: Zu_Hause_SH1

                      2 Ort: Vi

                      var geofencyUser    = ["sven",];
                      var geofencyHome    = "Zu_Hause_SH1";
                      var geofencyHome    = "Vi";
                      
                      

                      muss ich sonst noch etwas ändern?

                      Ich hatte deinen Post: http://forum.iobroker.net/viewtopic.php … ipt#p27934 gefunden.

                      Gruß Sven

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

                        Die Zeile musst Du löschen:

                        var geofencyHome    = "Vi";
                        

                        Allerdings steht "Vi" bei Dir im Baum so, als wenn es kein Ort, sondern ein weitere Anwender wäre.

                        Wenn Du nur einen User hast, dann brauchst Du gar kein Skript 😉

                        Dann reicht der Datenpunkt:

                        geofency.0.sven.Zu_Hause_SH1.entry

                        Wenn da eine "1" drin steht bist Du daheim, bei "0" unterwegs.

                        1 Reply Last reply Reply Quote 0
                        • S
                          Sven2013 last edited by

                          Ok, es funktioniert mit deinem Script einwandfrei.

                          Doch ich nötige ein Script, da ich jetzt wo das funktioniert noch Benutzer hinzufügen werde.

                          Mein Plan ist es, das ich darüber die komplette Anwesenheit regeln möchte.

                          z.B.

                          niemand zu Hause - Telefone auf Handy umgeleitet

                          alle zu Hause - Lichtsteuerung - anders als wenn nur ich zu Hause bin

                          usw…

                          Danke nochmal dafür.

                          Gruß Sven

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

                            @Sven2013:

                            Ok, es funktioniert mit deinem Script einwandfrei.

                            Doch ich nötige ein Script, da ich jetzt wo das funktioniert noch Benutzer hinzufügen werde. `

                            Genau das macht das Skript.

                            Du musst in der Zeile:

                            var geofencyUser    = ["sven"];
                            
                            

                            Alle Geofency User eintragen, z.B.:

                            var geofencyUser    = ["sven","Maria","monika","bernd"];
                            
                            

                            Und die Datenpunkte sollten so gefüllt werden, wie Du es benötigst.

                            Wenn es bei einem User noch keine Meldung für daheim gegeben hat, gibt es den Datenpunkt nicht und das Skript würde mit einer Warnung gestoppt. Ich habe Dir deswegen unten eine neue Version eingestellt, die sich dann nicht beenden sollte.

                            Du musst nur darauf achten, dass bei allen Geofency Nutzern in der App "Zu Hause SH1" als Ort eingestellt ist. Der Name ist wichtig.

                            Wenn Du unterschiedliche Bezeichnung für "daheim" an den unterschiedlichen handys verwenden willst, muss das Skript dafür erweitert werden.

                            Die neue Version vom Skript:

                            ! ```
                            `var geofencyUser = ["sven"]; // Hier den Namen aller User eintragen
                            var geofencyHome = "Zu_Hause_SH1";
                            ! // In welchem Pfad sollen in der Javascript Instanz die Datenpunkte angelegt werden. String mit "." am Ende.
                            var dpPfad = "geofency" + ".";
                            ! // Datenpunktnamen
                            var idAnzahlDaheim = dpPfad + "anzahlDaheim";
                            var idAnwesend = dpPfad + "anwesend";
                            var idListeDaheim = dpPfad + "listeDaheim";
                            ! // Umgebungsparameter
                            var instanz = "javascript." + instance + ".";
                            var geofencyPfad = "geofency.0.";
                            var scriptOn = name.replace("script.js",instanz + "scriptEnabled");
                            ! function dpAnlegen() {
                            ! // einfach angelegte Datenpunkte
                            // -----------------------------
                            //createState(dpPfad + 'datenpunktName',"Test");
                            ! // ausführlich beschriebene Datenpunkte
                            // ------------------------------------
                            createState(idAnzahlDaheim, 0, { // Datenpunktname ohne Leerzeichen und Sonderzeichen, wie er in den Objekten angelegt wird
                            name: 'Anzahl Geofency User daheim', // Lesbarer Name des Datenpunkts
                            desc: 'Anzahl Geofency User daheim', // Beschreibung des Datenpunkts
                            type: 'number', // Bescreibung des Typ, wie: number, string, boolean
                            unit: '' // Einheit, wenn benötigt
                            });
                            ! createState(idAnwesend, null, { // Datenpunktname ohne Leerzeichen und Sonderzeichen, wie er in den Objekten angelegt wird
                            name: 'Geofency User daheim', // Lesbarer Name des Datenpunkts
                            desc: 'Geofency User daheim, Booelean', // Beschreibung des Datenpunkts
                            type: 'boolean', // Bescreibung des Typ, wie: number, string, boolean
                            unit: '' // Einheit, wenn benötigt
                            });
                            ! createState(idListeDaheim, "", { // Datenpunktname ohne Leerzeichen und Sonderzeichen, wie er in den Objekten angelegt wird
                            name: 'Liste Geofency User daheim', // Lesbarer Name des Datenpunkts
                            desc: 'Liste Geofency User daheim, Booelean', // Beschreibung des Datenpunkts
                            type: 'string', // Bescreibung des Typ, wie: number, string, boolean
                            unit: '' // Einheit, wenn benötigt
                            });
                            !
                            }
                            ! function getStateSec (dp) {
                            if (getState(dp)) {
                            return getState(dp);
                            }
                            log("Skript versucht nicht vorhandenen Datenpunkt zu lesen: " + dp,"warn");
                            // log("Skript wird angehalten und muss manuell wieder gestartet werden","warn");
                            // setState(scriptOn,false); // Skript wird gestoppt
                            return false;
                            }
                            ! function geofencyStatus() {
                            var dp, status;
                            var listeDaheim = [];
                            var anzahlDaheim = 0;
                            var anwesend = false;

                            for (var i = 0; i < geofencyUser.length; i++) {
                                dp = geofencyPfad + geofencyUser[i] + "." + geofencyHome + ".entry";
                                status = getStateSec(dp).val;
                                if((status === true) || (status == "1")) {
                                    log(dp + ": " + status);
                                    anzahlDaheim++;
                                    listeDaheim.push(geofencyUser[i]);
                                    anwesend = true;
                                }
                            }
                            log("AnzahlDaheim:" + anzahlDaheim);
                            setState(idAnzahlDaheim,anzahlDaheim);
                            setState(idAnwesend,anwesend);
                            setState(idListeDaheim,JSON.stringify(listeDaheim));
                            

                            }

                            ! function onAnlegen() {
                            ! /*
                            on({id: 'xxx' ,change:'ne'}, function (obj) {
                            // was soll bei Datenpunktänderung passieren
                            });
                            */
                            for (var i = 0; i < geofencyUser.length; i++) {
                            var dp = geofencyPfad + geofencyUser[i] + "." + geofencyHome + ".entry";
                            on({id: dp ,change:'ne'}, function (obj) {
                            geofencyStatus();
                            });
                            }
                            ! }
                            ! function main() {
                            geofencyStatus();
                            }
                            ! dpAnlegen(); // erst die notwendigen Datenpunkte anlegen
                            setTimeout(onAnlegen, 500); // dann die Subscriptions setzen
                            setTimeout(main, 1000); // dann das Hauptprogramm starten` [/i][/i][/i]

                            1 Reply Last reply Reply Quote 0
                            • S
                              Sven2013 last edited by

                              Hey,

                              total Klasse. 1000 Dank dafür. Ich freue mich, dass du dir die Mühe gemacht hast und ich wieder ein Stück weiter bin 🙂

                              Ich achte darauf, das meine Freu auch den gleichen DatenPunkt nutzt für zu Hause.

                              Gruß Sven

                              1 Reply Last reply Reply Quote 0
                              • S
                                simpixo last edited by

                                @Sven2013:

                                Hallo,

                                ich nutze schon eine weile den Geofancy Adapter. Dieser funktioniert auch einwandfrei. Danke dafür.

                                Ich bekomme aber die Funktion "Home" nicht hin. Sie ändert sich einfach nicht…

                                filename="geofancy 2.png" index="0">~~

                                Im Adapter selbst habe ich unter "Home Zu_Hause_SH1" angegeben.

                                Was ist denn daran falsch?

                                Gruß Sven `

                                Das funktioniert doch 🙂 Habe soeben herausgefunden wie man das Objekt befüllen kann….

                                432_bildschirmfoto_2016-06-27_um_12.39.20.png

                                Der Ort muss genauso heißen wie in der Instanz angeben! Bei mir heißt der Ort Zuhause in der Geofency App und in der Instanz "Home" da ging es leider nicht. Ich habe heute mal testweise den Ort in der Geofency Instanz auf "Zuhause" geändert und schwups war das Objekt "atHome" gefüllt…

                                Hoffe dem einen oder anderen damit geholfen zu haben

                                Gruß

                                Adrian

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                903
                                Online

                                31.9k
                                Users

                                80.3k
                                Topics

                                1.3m
                                Posts

                                3
                                14
                                1393
                                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