Seite 1 von 1

Anwesenheitserkennung icloud Binding

Verfasst: 2. Dez 2020 12:10
von Markus_JE
GUten Tag zusammen,

ich versuche im Moment eine Anwesenheitserkennung via icloud Bindig zu erstellen.
Leider meldet die Rule immer das mein Iphone nicht Zuhause ist.
Kann mir hier jemand helfen an was dies liegt?

Code: Alles auswählen

    Thing device iPhone8Plus   "Markus iPhone 8 Plus"       @ "Apple" [deviceId="ID meines Iphones"]

Code: Alles auswählen

String     MarkusIPhone8PlusBatteryStatus        "Battery status"            (iCloud_Group) {channel="icloud:device:Markus:iPhone8Plus:batteryStatus"}
Number     MarkusIPhone8PlusBatteryLevel         "Batterieladung"            (iCloud_Group) {channel="icloud:device:Markus:iPhone8Plus:batteryLevel"}
Switch     MarkusIPhone8PlusLowBattery           "Niedriger batteriestatus"   (iCloud_Group) {channel="icloud:device:Markus:iPhone8Plus:lowBattery"}
Switch     MarkusIPhone8PlusFindMyPhone          "Find my phone"              (iCloud_Group) {channel="icloud:device:Markus:iPhone8Plus:findMyPhone"}
Location   MarkusIPhone8PlusLocation             "Location"                (iCloud_Group)   {channel="icloud:device:Markus:iPhone8Plus:location"}
Number     MarkusIPhone8PlusLocationAccuracy     "Location accuracy"       (iCloud_Group)   {channel="icloud:device:Markus:iPhone8Plus:locationAccuracy"}
DateTime   MarkusIPhone8PlusLocationLastUpdate   "Last location update"    (iCloud_Group)   {channel="icloud:device:Markus:iPhone8Plus:locationLastUpdate"}
Switch     MarkusIPhone8PlusHome                 "Phone Home"          (iCloud_Group)
Switch     MarkusIPhone8PlusRefresh              "Force iPhone Refresh"     (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:refresh", autoupdate="false"}

Code: Alles auswählen

rule "iPhone Home"
when
    Item MarkusIPhone8PlusLocation changed
then
    val PointType home_location  = new PointType(new DecimalType(48.96), new DecimalType(9.0))
    val PointType MarkusIPhone8PlusLocation  = MarkusIPhone8PlusLocation.state as PointType
    val int distance = MarkusIPhone8PlusLocation.distanceFrom(home_location).intValue()

    if ( distance < 200) {
        MarkusIPhone8PlusHome.postUpdate(ON)
        logInfo("iPhone Home", "iPhone is at home.")
        }
 else {
        MarkusIPhone8PlusHome.postUpdate(OFF)
        logInfo("iPhone Home", "iPhone is away.")
    }
end

Re: Anwesenheitserkennung icloud Binding

Verfasst: 3. Dez 2020 11:43
von udo1toni
Hast Du die Heimkoordinaten nur hier gekürzt? Damit Du eine Genauigkeit von 200 Meter erreichen kannst, müsstest Du hier mindestens 13 Nachkommastellen angeben, eigentlich sind es 14 Nachkommastellen. Du kannst in Paper UI -> Configuration -> System -> Regional Settings -> Location bequem den exakten Standort Deines Hauses eingeben, die Koordinaten werden dann angezeigt. Ich meine auch, mich zu erinnern, dass Du auf die dort hinterlegten Koordinaten von der Rule engine aus irgendwie zugreifen kannst...

Re: Anwesenheitserkennung icloud Binding

Verfasst: 30. Aug 2021 22:47
von thoffacker
Hallo zusammen,

ich habe gerade versucht, die Anwesenheitserkennung via icloud Binding in OH3 zu implementieren.

Leider bin ich noch recht unerfahren in der Programmierung mit Java.

Es gibt wohl bei den ECMA-Scripts andere Definitionen für Variablen, weshalb die oben gezeigte Lösung nicht funktioniert.
Gibt es denn überhaupt die Möglichkeit das mit ECMA-Script zu programmieren oder muss man hier auf Text-Basierte Rules ausweichen?

Ich hoffe auf eine Antwort von euch, auch wenn das Thema schon etwas älter ist.

Beste Grüße

Re: Anwesenheitserkennung icloud Binding

Verfasst: 28. Okt 2021 21:27
von thoffacker
Okay... Fehler gefunden!

Falls noch jemand darüber stolpern sollte: nehmt RuleDSL, dann geht das auch!