Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT Remote Commands für OwnTracks-Adapter

    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

    MQTT Remote Commands für OwnTracks-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Guest last edited by mickym

      So ich habe es rausbekommen.

      Also Du kannst das remote steuern in dem Du folgenden JSON in cmd losschickst.

      {
          "_type": "cmd",
          "action": "setConfiguration",
          "configuration": {
              "_type": "configuration",
              "monitoring": 1
          }
      }
      

      Das Monitoring stellst Du wie folgt ein:

      monitoring Location reporting mode (iOS,Android/integer)
      -1 Quiet
      0 Manual
      1 Significant
      2 Move

      Habs gerade getestet - das tut. 🙂

      Die Automatisierung ist dann ja easy. Da ich NodeRed nutze, wird Dir ein Flow hierzu nichts nutzen. 😉

      Funktioniert nun aber auf Anhieb:
      f27d8480-9401-4126-9bf8-530129d5a82a-image.png

      ? 1 Reply Last reply Reply Quote 0
      • ?
        A Former User @mickym last edited by

        @mickym Krass, Vielen Dank für die schnelle Hilfe! Darf ich Dich - ohne unverschämt zu werden - fragen, wie denn
        ein Java Script aussehen könnte? Mit Blockly kann ich mich überhaupt nicht anfreunden.

        Nochmal Danke für die schnelle und freundliche Hilfe!
        Gruß Jo

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Guest last edited by

          @k-nebel Ich kann mich mit Blockly auch nicht anfreunden. Ein Javascript ist mir ehrlich gesagt zu aufwändig jetzt und gerade im Fehlerfall schwierig für mich zu behandeln.

          Ich könnte Dir bei einem Node-Red Flow behilflich sein - das denke ich würde ich schnell hinbekommen, wenn Du halt hier mit unterstützt. Ich nutze das halt als meine präferierte Logikmaschine.

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @mickym last edited by

            @mickym Also bin der Sache etwas näher gekommen....funkt aber noch nicht.

            sendTo('owntracks/0/users/devicex/cmd', 'sendMessage2Client',
            {
                "_type": "cmd",
                "action": "setConfiguration",
                "configuration": {
                    "_type": "configuration",
                    "monitoring": 2
                }
            });
            

            Divicex steht natürlich für den tatsächlichen Namen. Das Script meldet keinen Fehler, es kommt aber nichts an.

            mickym 2 Replies Last reply Reply Quote 0
            • mickym
              mickym Most Active @Guest last edited by mickym

              @k-nebel wie gesagt ich bin auch kein Javascript Guru - aber vielleicht gibts ja noch andere Hürden. Wo läuft denn Dein mqtt Broker?

              Wenn Du evtl. den mqtt Adapter als Broker laufen hast, dann kann der evtl. Probleme machen. Hast Du ein Interface im iobroker so dass Du es wie ich einfach eintragen kannst?

              30cf5dd9-57ca-42db-a673-23569975c49e-image.png

              1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Guest last edited by mickym

                @k-nebel Musst Du bei dem sendto - um die geschweiften Klammern nicht noch Anführungszeichen machen - das ganze muss ja als String weg.

                sendTo('owntracks/0/users/devicex/cmd', 'sendMessage2Client','{"_type": "cmd","action": "setConfiguration","configuration": {"_type": "configuration","monitoring": 2}}');
                

                Wenn ich mir die Syntax zu sendto anschaue:

                sendTo('telegram', {user: 'UserName', text: 'Test message'});

                dann ist das ja viel komplexer. Wie gesagt, wenn Du es über NodeRed machst - dann kein Problem. Und wie im letzten Posting gesagt - trag halt einfach mal den Text direkt in Deinen Datenpunkt ein.

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @mickym last edited by

                  @mickym Hm, ich komme im Moment nicht weiter. Habe auf Github in einem Issue gelesen, dass es bei Android zur Zeit keine cmd-Actions gibt und auch nicht geplant sind. Keine guten Aussichten. Unter Objects gibt es auch keinen cmd Eintrag.
                  Schade...

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Guest last edited by mickym

                    @k-nebel Ehrlich gesagt kann ich das nicht glauben - die Beschreibung zeigt, dass der Parameter auch auf Android geht.
                    monitoring Location reporting mode (iOS,Android/integer).

                    Ich würde mal den String direkt in Deinen cmd Datenpunkt eintragen. Mit dem sendTo weiß ich nicht ob dass das richtige Kommando ist.

                    Wie gesagt unter NodeRed würde ich das ja mit Dir weiterverfolgen.

                    Als ersten Schritt musst Du aber den String direkt in einen Datenpunkt kopieren. Dabei ist es egal, ob Du das direkt über Deinen iobroker machst, oder einem eigenen mqtt Publisher.

                    Und ich hab Dir ja schon unten gesagt, wenn Du den MQTT-Adapter als Broker laufen hast, kannst Du auch Probleme haben. Schau mal im Log ob das was drin steht, ob irgendwelche Nachrichten nach mehreren Retries gelöscht werden. Solange Du die Voraussetzungen nicht prüfst, ist das halt ein Stochern im Nebel.

                    @k-nebel sagte in MQTT Remote Commands für OwnTracks-Adapter:

                    Unter Objects gibt es auch keinen cmd Eintrag.
                    Schade...

                    Ist das der mqtt Adapter als Broker? Ggf. halt selbst einfach einen cmd Datenpunkt anlegen.
                    Und falls Du den owntracks Adapter nutzt - da würde ich halt lieber auf reines mqtt wechseln.

                    Im Prinzip solltest Du gemäß Deiner Konfig folgende Datenpunkte unter Deinem Gerät finden:

                    screen.png

                    Der cmd ist für die Befehle und der event Datenpunkt signalisiert Dir wenn Du eine bekannte Location verlässt oder eintrittst - also z. Bsp. Zuhause. Das kannst Du dann als Trigger verwenden, um wie von Dir gewünscht den Modus umzuschalten.

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @mickym last edited by

                      @mickym Also ich nutze den Owntracks-Adapter. Dort habe ich einen Datenpunkt cmd an richtiger Stelle erzeugt und auch versucht das JSON Object direkt einzugeben - ohne Ergebnis.
                      Nebenher läuft natürlich der mqtt-Adapter. Fehler oder Warnungen gab es nicht.
                      Danke für dein Angebot mit NodeRed. Das wäre aber auch Neuland und ich würde darauf zurückkommen, wenn ich es nicht anders hin bekomme.
                      Bin gerade dabei das Open-Source Project von Owntracks mit Android-Studio zu bearbeiten. Es wäre nicht das erste Mal, dass es mir gelingt, eine eigene Funktion direkt in der App zu implementieren.
                      Werde berichten.
                      Gruß Jo

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @Guest last edited by

                        @k-nebel Tja, das erzeugen der App funktioniert und ich habe in der "MapActivity.java" eine Funktion "SetMonitoringNext" gefunden. Man könnte nun einen Timer programmieren, der meinetwegen alle 5 Minuten die WLAN Verbindung checkt und - falls mit der richtigen SSID Verbunden, diese Funktion anstößt.
                        Problem bei der Sache: Die App ist ansonsten Komplett, aber der Open-Source-Code bietet keine Google Map Keys.
                        Das heisst, es wird keine Karte angezeigt. So etwas anzulegen geht, ist aber eine Prozedur. Werde mal weiter sehen.
                        Nur zur Info halt.

                        ? 1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @Guest last edited by A Former User

                          Neues Update: App läuft, zwar ohne Map, aber die ist mir erst mal egal.
                          Für diejenigen die es interessiert hier die Änderungen:
                          AndroidManifest.xml

                          <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
                          

                          BackgroundService.java

                              //Check Monitoring & SSID
                              public Handler timerHandler = new Handler();
                              Runnable timerRunnable = new Runnable() {
                                  @Override
                                  public void run() {
                                      SharedPreferences prefs = getSharedPreferences("save_set", 0);
                                      SharedPreferences.Editor editor = prefs.edit();
                                      boolean auto = prefs.getBoolean("Auto", false);
                                      editor.commit();
                                      if(auto) {
                                          //Get SSID, if Connected
                                          WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                                          assert mWifiManager != null;
                                          WifiInfo info = mWifiManager.getConnectionInfo();
                                          if (info.getSSID().contains("MySSID")) {
                                                  if (preferences.getMonitoring() == LocationProcessor.MONITORING_MOVE) {
                                                      preferences.setMonitoring(LocationProcessor.MONITORING_SIGNIFICANT);
                                                  }
                                              } else{
                                              preferences.setMonitoring(LocationProcessor.MONITORING_MOVE);
                                          }
                                      }
                                      //Toast.makeText(getApplicationContext(), info.getSSID(), Toast.LENGTH_SHORT).show();
                                      timerHandler.postDelayed(timerRunnable, 60000);
                                  }
                              };
                          

                          Zudem in der Funktion OnCreate()

                          timerHandler.postDelayed(timerRunnable, 60000);
                          

                          und in der Funktion OnDestroy()

                          timerHandler.removeCallbacks(timerRunnable);
                          

                          Ob ich mit der Map weiterkomme werde ich berichten.
                          Gruß
                          Jo

                          ? 1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User @Guest last edited by A Former User

                            Finales Ergebnis:
                            Google Maps-Key besorgt und zusätzlichen Button zum Ein/Ausschalten meiner Funktion integriert.
                            Screenshot_20210315-174602_Owntracks.jpg

                            Wer das selber umsetzen möchte, kann mich gerne kontaktieren.
                            Einziger Wermutstropfen wäre, wenn die App ein automatisches Update erhält. Dann wird die eigene Version
                            wahrscheinlich überschrieben.
                            Gruß
                            Jo

                            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

                            535
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            2
                            13
                            732
                            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