Autor Thema: Server-Profile: PUT oder POST anstatt GET  (Gelesen 1053 mal)

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Server-Profile: PUT oder POST anstatt GET
« am: 28.02.2017, 07:57:02 »
Hallo Zusammen,

ist es möglich, unter Serverprofilen irgendwo die HTTP-Methode auszuwählen? Für die Anbindung an openHAB bräuchte ich einen POST- oder PUT-Request.
Sollte das noch nicht gehen, wäre das doch eine sinnvolle Erweiterung für jegliche Art von Rest-API (nicht nur für openHAB).

Für Infos und Hinweise bin ich sehr dankbar.

Danke und Gruß,
Sebastian.

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #1 am: 28.02.2017, 13:26:13 »
Hallo Sebastian,

schön, dass du openHAB über die App ansprechen möchtest. Gibt es da keinen SOAP- oder anderen Webservice, den du ansprechen könntest?

Zitat
ist es möglich, unter Serverprofilen irgendwo die HTTP-Methode auszuwählen? Für die Anbindung an openHAB bräuchte ich einen POST- oder PUT-Request.
Ist nicht vorgesehen. Könnte ich wählbar einbauen.

Zitat
Sollte das noch nicht gehen, wäre das doch eine sinnvolle Erweiterung für jegliche Art von Rest-API
REST geht auch nicht. Wurde noch nie gebraucht.


Schöne Grüße
Egmont

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #2 am: 28.02.2017, 14:28:14 »
Hallo,

danke für die schnelle Antwort. openHAB bietet, soweit ich weiß, nur eine REST-API an. Wenn man die vier grundlegenden HTTP-Methoden unterstützt, kommt man an einer REST-API schon recht weit.
Eine Einstellung für die zu verwendende Methode wäre daher für mich durchaus wünschswert. Ich könnte dabei auch unterstützen, habe aber den Code nirgends gefunden. Ist der eigentlich OpenSource? Ich hatte auch schon darüber nachgedacht, ein Plugin dafür zu entwickeln, denke aber, dass es eher direkt in die App (also in die Serverprofile) gehört.

Also: Wenn ich in irgendeiner Weise untersützen kann, dann melde dich bitte!

Danke und Gruß,
Sebastian.

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #3 am: 28.02.2017, 17:23:25 »
Zitat
Ich könnte dabei auch unterstützen, habe aber den Code nirgends gefunden.
Er ist nicht veröffentlicht.

Zitat
Ich hatte auch schon darüber nachgedacht, ein Plugin dafür zu entwickeln, denke aber, dass es eher direkt in die App (also in die Serverprofile) gehört.
Bin eher für ein Plugin, da es sonst das Serverprofil überfrachten würde und dann einige Nutzer Probleme bekämen, die dann wiederum bei mir aufschlagen.
Bei einem Plugin würde ich dich gerne beraten.
Schöne Grüße
Egmont

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #4 am: 02.03.2017, 08:56:27 »
OK, dann versuche ich mich mal daran. Schade, dass der Code nicht veröffentlicht ist. Hat das konkrete Gründe?

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #5 am: 02.03.2017, 18:16:24 »
Zitat
OK, dann versuche ich mich mal daran.
Du hast ja gesehen, dass ich ein Beispielplugin bereitgestellt habe.

Zitat
Schade, dass der Code nicht veröffentlicht ist. Hat das konkrete Gründe?
Ich wollte keine Nachahmer  ;)
Schöne Grüße
Egmont

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #6 am: 06.03.2017, 20:25:27 »
Hallo Egmont,
wie versprochen habe ich mich mal an dem Thema versucht. Da ich gerade in das Thema Android einsteige, könnte ich noch etwas Hilfe gebrauchen.
Ich war jetzt in der Lage mit dem abgelegten Code einen beliebigen HTTP-Request abzusetzen, wenn ich mir einen Intent mit folgendem ADB-Aufruf erstelle:

adb shell am broadcast -a de.egi.geofence.geozone.plugin.EVENT --es "transition" "0"
Wenn ich aber einen Zoneneintritt bzw. -austritt in der EgiGeoZoneBT-App erzeuge, tut sich jedoch nichts. Hast du vlt. einen Hinweis, wo ich beim Debuggen ansetzen kann? Ich bin auch für andere Hinweise zu Oberfläche, Bedienung, Codestyle etc. dankbar.

Den Code findest du hier:

https://github.com/sebastiankutschbach/HTTPPlugin

Vielen Dank schonmal und Gruß,
Sebastian.

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #7 am: 07.03.2017, 08:26:09 »
Hallo Sebastian,

bei mir hat es auf Anhieb funktioniert. Bis auf das, dass ich keine richtige URL hatte.

1. Prüfen, ob Plugin in den EgiGeoZone-Einstellungen unter "Registrierte Plugins anzeigen" angezeigt wird. Tut es.
2. In den App-Einstellungen von EgiGeoZone "Übermittlung an Plugins erlauben"

3. Nun Testen.
3.1 Ich starte das Plugin im Android Studio mit "Debug app" und setze die nötigen Breapoints.
3.2 Nachdem im Plugin die nötigen Parameter erfasst wurden, kehre ich zu EgiGeoZone zurück
3.3 und rufe eine Zone auf und ohne was zu ändern speichere ich diese. Dies sollte sofort/bald den "Betreten-Event" aufrufen. Damit dies funktioniert, musst du dich in dieser Zone befinden! Wenn nicht lege eine da an.
4. Debuggen....  :)

Das Design schaut schon mal gut aus  ;)
« Letzte Änderung: 07.03.2017, 08:27:52 von Admin »
Schöne Grüße
Egmont

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #8 am: 07.03.2017, 08:44:33 »
Hallo Egmont,

ah, ok. Ich nehme an, es lag an dem fehlenden Häkchen "Übermittlung an Plugins erlauben". Werde ich heute abend gleich probieren. Kann es sein, dass der Hinweis auf das Häckchen noch in der Anleitung für Plugins fehlt oder habe ich das überlesen?
Kannst du das in dem Fall bitte nachpflegen?

Danke schonmal für dein Feedback!

Gruß,
Sebastian.

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #9 am: 07.03.2017, 09:29:30 »
Hallo Sebastian,

Zitat
ah, ok. Ich nehme an, es lag an dem fehlenden Häkchen "Übermittlung an Plugins erlauben". Werde ich heute abend gleich probieren. Kann es sein, dass der Hinweis auf das Häckchen noch in der Anleitung für Plugins fehlt oder habe ich das überlesen?
Kannst du das in dem Fall bitte nachpflegen?
Hier stand es ganz unten dabei: https://egigeozone.de/developer/default.html
und hier nicht: https://rpi.spdns.eu/egigeozone/index.php?topic=89.0
Habe es aber nachgetragen.
Schöne Grüße
Egmont

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #10 am: 08.03.2017, 08:07:48 »
Hallo,

ich kann nun bestätigen, dass das Plugin grundlegend funktioniert. Allerdings führt es die Operation für das Betreten/Verlassen jeder Zone aus. Für mich heißt das, dass ich für jede Zone eine extra Konfiguration anbieten muss.
Gibt es irgendeine Möglichkeit, die in EgiGeoZone angelegten Zonen abzufragen? Sollte das nicht funktionieren, müsste man den Namen der Zone deklarativ angeben. Das ist nicht schön, würde aber auch funktionieren.

Danke und Gruß,
Sebastian.

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #11 am: 08.03.2017, 12:39:43 »
Zitat
ich kann nun bestätigen, dass das Plugin grundlegend funktioniert.
Super! Wirst du das Plugin im Google Play Store anbieten?

Zitat
Allerdings führt es die Operation für das Betreten/Verlassen jeder Zone aus.
Habe ich auch gemerkt, dass es unschön ist. Mir ist aber noch nicht Gescheites eingefallen.
Eine Liste mit den zu verwendenen Plugins bei jeder Zone war mir eine zu große Änderung.

Zitat
Gibt es irgendeine Möglichkeit, die in EgiGeoZone angelegten Zonen abzufragen?
Nein.

Zitat
Sollte das nicht funktionieren, müsste man den Namen der Zone deklarativ angeben.
Oder das Backend handelt die Logik der Zonen, die man ja mitgeben kann.
Schöne Grüße
Egmont

seb1985

  • Newbie
  • *
  • Beiträge: 16
  • Gerät: S6
  • Version: 6.0.1
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #12 am: 08.03.2017, 13:23:24 »
Ich habe mich mit dem Thema PlayStore noch nicht beschäftigt und weiß nicht, wieviel Aufwand dahinter steckt. Vlt. kannst du das was zu sagen...
Mit der deklarativen Angabe der Zone meine ich, dass man in meiner Konfiguration die Zone(n) angeben kann/muss, für die Konfiguration gilt.
Schöner wäre es natürlich, eine Liste der existierenden Zonen von deiner App zu haben. Könntest du die nicht über einen ContentProvider bereitstellen?

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #13 am: 08.03.2017, 13:59:03 »
Zitat
Ich habe mich mit dem Thema PlayStore noch nicht beschäftigt und weiß nicht, wieviel Aufwand dahinter steckt. Vlt. kannst du das was zu sagen...
Man muss sich dazu registrieren und zahlt einmalig 25 Dollar, meine ich, und kann dann über einer Seite die Apps hochladen, die dann jedem zur Verfügung stehen. Ist eigentlich einfach: https://support.google.com/googleplay/android-developer/answer/6112435?hl=de

Zitat
Mit der deklarativen Angabe der Zone meine ich, dass man in meiner Konfiguration die Zone(n) angeben kann/muss, für die Konfiguration gilt.
Hatte ich aus so verstanden.

Zitat
Schöner wäre es natürlich, eine Liste der existierenden Zonen von deiner App zu haben. Könntest du die nicht über einen ContentProvider bereitstellen?
Ich werde es versuchen.

Schöne Grüße
Egmont

Admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 745
    • EgiGeoZone
  • Gerät: Xiaomi Mi 9 SE, Xiaomi Redmi Note 5, Samsung Galaxy Note 2, S4, S5, S2, S7
  • Version: MIUI 10.0 Global, Android 4.4, 5, 6, 7, 8, 8.1, 9, 10
Re: Server-Profile: PUT oder POST anstatt GET
« Antwort #14 am: 08.03.2017, 20:25:08 »
Habe eine Lösung ohne ContentProvider. Also mit Aufruf einer Activity:

        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        intent.setComponent(new ComponentName("de.egi.geofence.geozone", "de.egi.geofence.geozone.plugins.Zones"));
        startActivityForResult(intent, 4730);

und dann:
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case 4730:
                if (resultCode == RESULT_OK) {
                    ArrayList<String> mCurrentGeofenceNames = data.getExtras().getStringArrayList("allZoneNames");
                    // more to do
                    for (String zone : mCurrentGeofenceNames){
                        Log.i("HttpPlugin", zone);
                    }
                }
                break;
            default:
                break;
        }
    }

Problem ist, dass einer EgiGeoZone aufrufen möchte und ein anderer EgiGeoZoneBT. Somit muss man hier differenzieren:
new ComponentName("de.egi.geofence.geozone", "de.egi.geofence.geozone.Zones")Wie sollen wir das lösen?

Mit ContentProvider sollte sich ein ähnliches Problem ergeben.

Geht erst nach einem Update von EgiGeoZone!
« Letzte Änderung: 09.03.2017, 08:59:18 von Admin »
Schöne Grüße
Egmont