Nello One zum Leben erwecken?!

Einst für 99,-€ (Sonderangebot) erworben, tat er einige Monate recht zuverlässig seinen Dienst. Ich hatte meinen Nello-One damals direkt von der Herstellerseite erstanden und auch gleich installiert. Als zusätzliche Option, habe ich das Teil auch noch gleich mittels dem damals existierenden Adapter in meine Heimautomatisierungs-Software (iobroker) eingebunden. Mit etwas frickelei, konnte ich die Tür nun sogar mittels Google-Home Sprachbefehl öffnen 🙂

Alles in Allem, genau das was ich gesucht hatte.

Dann kam allerdings der Schock. Nello-One, eine Markes des Münchner Unternehmens Locumi Labs GmbH ging im Oktober letzten Jahres Insolvent!

Durch in Insolvenz, wurden leider auch die Server des Unternehmens abgeschaltet… Durch die verwendete Cloud-Lösung des Systems (ja… ich weiß, heute würde ich auch kein Gerät mein einsetzen, das auf eine Cloud-Verbindung angewiesen ist…) funktionierte auch gleich das Gerät selbst nicht mehr.

Damit hatte ich nun faktisch “Elektronikschrott in der Wand”. Das Unternehmen wurde dann allerdings von einem Italienischen Smart-Home Hersteller (Sclak) der auch Türöffnugns-/Schließsysteme herstellt übernommen und die Server liefen wieder an!!

Nun stieß man allerdings auf ein Problem! Es gab immer schon 2 Server, bzw. API’s:

  1. Den Server für die Nello-App
  2. Den Server für die OpenSource Programmierschnittstellt (die mein iobroker nutzt)

Leider wurde durch die Übernahme “nur” der Server bzw. die API für die Nello App wieder in Betrieb genommen, nicht aber die 2te, für mich fast wichtigere API.

Auf der Suche nach einer Lösung, habe ich versucht die Informationen die zwischen App und Nello-Server beim Versuch die Tür zu entriegeln ausgetauscht werden ab zu fangen und aus zu werten. Ein Man-in-the-middle Angriff auf das System erwies sich leider als schwierig, da einige Sicherheitsmechanismen eingebaut sind…. Ich hatte daher das Ganze eigentlich schon aufgegeben, bin aber eher durch Zufall auf eine Python3-Bibliothek gestoßen, die es schien Wert zu sein, ausprobiert zu werden!

pynello

Aus der Bibliothek habe ich mir dann ein kleines Script geschrieben, das es mir nun endlich wieder ermöglicht meinen Nello so zu nutzen, wie ich es eigentlich gewohnt bin!

#!/bin/python3
## Dependency: sudo pip3 install pynello
try:
    from pynello.private import Nello, exceptions
except ImportError:
    print("Please install dependency: sudo pip3 install pynello")
import argparse, sys

parser = argparse.ArgumentParser(description='*** Nello Open ***  by Matthias Laumer')
parser.add_argument('--username', type=str, required=True, help='User Name of your Nello Account (yourname@email.com)')
parser.add_argument('--password', type=str, required=True, help='Password of your Nello Account')
parser.add_argument('--location_id', type=str, required=False, help='Location_id of the door you want to open')
args = parser.parse_args()

try:
    n = Nello(username=args.username, password=args.password)
    locations = n.locations   #this will print an error message if authentification is wrong
except exceptions.NelloLoginException as e:
    sys.exit(1)

if args.location_id is None:
    for location in locations:
        print("ID: ",location.location_id, "    ADRESS: ",location.address)
else:
    if len(locations) == 0:
        print("Sorry, there are no locations registered in you Nello-Account. Try to add one with the Mobile-App!")
    for location in locations:
        if location.location_id == args.location_id:
            print("Id found. Try to open that door...")
            location.open_door()
            break
    else:
        print("Id was not found in your locations!")
        for location in locations:
            print("ID: ", location.location_id, "    ADRESS: ", location.address)

das Script kannst du auch einfach downloaden.

Sobald das Script auf deinem Rechner abliegt, musst du nur noch die Abhängigkeit installieren:

sudo pip3 install pynello

Nun kannst du von einer beliebigen Shell aus, mittels Angabe deines Benutzer-Accounts deine “Location-Ids” abfragen:

python3 nello_open.py --username deineadresse@email.com --password DEINPASSWORT

Es erscheint nun eine Liste mit registrierten Adressen bzw. Türen und den dazugehörigen “Location-ID’s”. Sobald du die ID, um der es dir geht ausfindig gemacht hast, kannst du mit einem erneuten Aufruf:

python3 nello_open.py --username deineadresse@email.com --password DEINPASSWORT --location_id b918b045-c14c-4cbe-ac21-0519486131d4

die entsprechende Tür öffnen.

Die Öffnung wird dir (leider erst einige Minuten später, da der Server wohl etwas langsam ist) auch auf deinem Handy über die Nello-App angezeigt.

So kannst du nun das Python-Script auch in jede beliebige Heimautomatisierung einbinden. Einfach den Shellbefehl ausführen und fertig.

Ich hoffe dieses Skript hilft dem ein oder anderen, enttäuschten Nello-Nutzer.

Matthias

Update 30.05.2020:

Ich habe festgestellt, dass es durch die Verwendung des Skripts doch eine kleine Einschränkung zu geben scheint:

Sobald das Skript verwendet wurde, und die Tür damit entriegelt wurde, wird scheinbar ein Authentifizierungs-Token geändert, der Vormals von der Nello-App verwendet wurde. Daher wird es notwendig, sich in der Nello App kurz aus zu loggen und neu an zu melden. Ansonsten funktioniert das Entriegeln per App nicht mehr.

Da ich die App so und so nicht nutze, ist das für mich kein Problem, allerdings sei hierauf hingewiesen, da dies schon eine gewisse Einschränkung für Nutzer darstellt, die “mal so und mal so” entriegeln, also teilweise über die App, aber teilweise eben auch über ein Programm.

13 Kommentare

  1. Hallo Matthias,

    dein Script funktioniert prima. Leider schaffe ich es aber nicht, das ganze in iobroker über blockly auszuführen.
    Habe schon versucht über sudoers die Berechtigungen von iobroker zu verändern. Leider ohne Erfolg.

    Kannst du mir hier weiterhelfen?

        1. Hallo Balboa,
          dafür müsste man einen Webhook konfigurieren. (dies konnte zumindest die “Public API” als diese noch aktiv war…) ob dies allerdings mit der Private API möglich ist, wage ich zu bezweifeln. Allerdings habe ich es nicht probiert.
          Dies sollte allerdings mit der beschriebenen Python3 Bibliothek leicht zu probieren sein. Ich empfehle mal als Einstiegspunkt das Github-Repository dazu und die Dokumentation der Public API (in der Hoffnung, dass diese sich genau so an der Private API anwenden lässt). Hier ist auch noch ein interessanter Eintrag aus dem FEM Forum, zu Private API.

          Ich muss allerdings sagen, dass bei mir das “Klingel-Signal” schon in der Nello-App um mehrere Minuten verzögert ankommt. Ich kann mir nicht recht vorstellen, dass dies mit einem Webhook zuverlässiger/zeitnäher funktioniert.

          Gruß
          Matthias

  2. Hallo Matthias!
    Seit einigen Tagen funktioniert die Nello App nun überhaupt nicht mehr – Server sind soweit ich es getestet habe auch nicht mehr erreichbar. Hast du diese Erfahrung ebenfalls gemacht?
    Ich fürchte, damit wird wohl auch das Skript keine Zukunft mehr haben?
    LG Stefan

    1. Servus Stefan!
      Ich habe den nello one heute auch ausprobiert und die selbe Feststellung gemacht. Der Server reagiert nicht mehr und dadurch wird der nello auch nicht mehr angesteuert.
      Leider ist von der versprochenen “offline-Lösung” die nello damals angekündigt hat, keine Spur. Daher wird wohl der Elektroschrott-Berg wieder etwas größer.
      Ich werde den nello erstmal noch eine Weile verbaut lassen, vielleicht gibt es ja doch noch eine Community-Lösung. Die Hoffnung stirbt zuletzt 🙂

      1. Hallo zusammen
        Leider funktioniert nun mein Nello One nach der Serverabschaltung auch nicht mehr. Schade, hatte mich so daran gewöhnt.
        Gibt es schon irgendwo eine Offline Lösung oder einen Ansatz wie man vorgehen müßte ?
        LG Johann

        1. Angeblich kann man sich in der Sclak-App mit den Anmelde-Daten von nello bereits einloggen (habe ich jedoch selbst noch nicht getestet)… klingt vielversprechend.
          Anscheinend ist der Server auch nicht “aus”, sondern sendet nur keine Öffnungsbefehle mehr an die Endgeräte. Die registrierten Adressen z.B. lassen sich noch abrufen (mit meinem Script, einfach Benutzer und Passwort eingeben, dann werden die Adressen abgerufen)

          1. Update 02.08.2020: Ich habe heute spaßeshalber das Script bzw. den API Call nochmal ausprobiert… es funktioniert wieder!! 🙂
            Für wie lange, ist die Frage, aber Stand heute kann ich mit diesem Script meine Tür wieder öffnen.

  3. Hi, läuft der nello weiterhin bei jemandem? Ich hatte den jetzt an einer Liegenschaft länger nicht mehr in Verwendung und heute feststellen müssen dass es mit der App nicht mehr geht. Bevor ich mich jetzt daran mache das mit dem Skript aufzusetzen wäre es interessant zu wissen ob’s der Mühe überhaupt wert ist oder weiterhin in Frustration endet ^^ ..nello.io ist mit einem „Bad Gateway“ Ergebnis erreichbar, nur das muss ja nichts heißen. ;))

    1. Hi Jens, ich habe leider auch vor ein paar Tagen erst bemerkt, dass mein Tür-Öffner gerade nicht funktioniert … ich konnte mich leider noch nicht damit beschäftigen, um zu sehen, was das Problem ist. Es kann daher sein, dass dieses Skript nicht mehr funktioniert (ich muss allerdings sagen, dass dies in der Vergangenheit immer wieder mal für 1-2 Wochen der Fall war und anschließend der Server wieder erreichbar war…)
      Die Mühe ist überschaubar würde ich sagen, daher ist ein Versuch sicher wert. Ich schau mir das nach meinem Urlaub auch mal an, wenn ich wieder im Lande bin.

      Mfg
      Matthias

    2. Bei mir das gleiche, ich versuche aktuell mit Hilfe des Scriptes eine Verbindung aufzubauen. Was ich interresant finde, ist bei einer falschen PW eingabe, erhalte ich einen Error, wenn die Zugangsdaten korrekt sind, erhalte ich auch eine ID mit den dazugehörigen Standort. Dies kann ich auch ausführen, nur geht der Summer nicht damit. Eine Verbindung zum Backend selbst muss aber da sein. Wenn ich das Sript ausführe, muss ich mich auch in der App neuanmelden, da er mir da auch einen Fehler zeigt. Also etwas geht meiner Meinung nach, aber das Haupt noch nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.