Neue Androidspielerei

Begonnen von boke, 18 April 2016, 14:38:04

Vorheriges Thema - Nächstes Thema

boke

Hallo,
ich möchte gerne eine einfache Android app schreiben, da ich mich schon seit langem mal wieder mit Android befassen wollte.
Die Idee ist: ich möchte mir die aktuelle Temperatur anzeigen lassen und diese  verändern.
Gibt es irgendwo Beispiele, wie ich eine Kommunikation zwischen Fhem und Android aufbauen kann?
Und was meint ihr, einen eigenen Server starten oder Mit Fhemweb arbeiten?
Ist bekannt welches Protokoll andFhem benutzt?
Viele Grüße!
Dennis

CoolTux

http://andfhem.klass.li/installation.html#configuring_connections

War jetzt irgendwie nicht so schwer raus zu finden. Von daher wünsche ich Dir viel Erfolg mit Deiner App.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

boke

#2
Hallo,
super, vielen Dank!

Mir fehlen aber noch die Grundlagen: Wie sende ich einen Befehl zum ändern der Temperatur, und wie bekomme ich Updates der Temperatur?

Setzen würde dann so funktionieren, oder?

http://192.168.0.14:8083/fhem?cmd.Fernseh=set%20Fernseh%20off

Oder gibt es einen besseren weg?


Vielen Dank.

rudolfkoenig

Ja, mit &XHR=1 dahinter.
Kann man beides im Browser ausprobieren, um die Unterschiede zu sehen.

boke

Danke, das probiere ich aus.
Aber wie bekomme ich denn die Änderungen mit? Wenn ich jetzt z.B. die Temperatur am Heizkörper ändere, will ich ja gleich die Änderung in der App sehen, muss ich dann immer wieder neu anfragen, oder kann ich das eleganter lösen?
Viele Grüße!
Dennis

rudolfkoenig

Aus fhemweb.js/FW_longpoll()

  var query = location.pathname+"?XHR=1"+
              "&inform=type=status;filter="+filter+";since="+since+";fmt=JSON"+
              '&fw_id='+$("body").attr('fw_id')+
              "&timestamp="+new Date().getTime();

boke

Hallo, sorry aber das verstehe ich nicht  :'(.
Kann mir jemand noch mal schreiben was ich machen muss?

boke

Hallo, ich bin ein Stück weiter!
Wenn ich hier mit arbeite bekomme ich die Werte einmal:

?cmd=list%20BZ.HT.BadHeizung%20desiredTemperature&XHR=1

aber wie bekomme ich die jetzt kontinuirlich?

Das hier verstehe ich nicht:

Aus fhemweb.js/FW_longpoll()

  var query = location.pathname+"?XHR=1"+
              "&inform=type=status;filter="+filter+";since="+since+";fmt=JSON"+
              '&fw_id='+$("body").attr('fw_id')+
              "&timestamp="+new Date().getTime();

Kann ich das auch einfach in die Adresse Zeile im Browser eingeben?

Viele Grüße!
Dennis

CoolTux

Lieber Dennis,

Ohne Dir jetzt irgendwie zu Nahe treten zu wollen. Wäre es nicht erstmal gut wenn Du die generellen Basics lernst. Bei Deinem Vorhaben/Anfragen sind die Helfer davon ausgegangen das Du Ansatzweise Dich mit Programmierung in den Bereichen Perl und Java/Androis aus kennst. Meine Einschätzung ist, das dem wohl nicht so ist.


nette Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

boke

Zitat von: CoolTux am 28 April 2016, 13:48:00
Lieber Dennis,

Ohne Dir jetzt irgendwie zu Nahe treten zu wollen. Wäre es nicht erstmal gut wenn Du die generellen Basics lernst. Bei Deinem Vorhaben/Anfragen sind die Helfer davon ausgegangen das Du Ansatzweise Dich mit Programmierung in den Bereichen Perl und Java/Androis aus kennst. Meine Einschätzung ist, das dem wohl nicht so ist.


nette Grüße
Leon

Hallo Leon,
danke für Deine Antwort,
ich nehme diese natürlich nicht Persönlich.

In Perl kenne ich mich tatsächlich nicht aus.
In Android und Java habe ich schon einiges gemacht aber noch nichts mit Netzwerken.
Da ich nur eine zyklische Abfrage machen möchte, dachte ich Frag mal ob das jemand beantworten kann,
da es ein kleines Tool werden soll mit dem ich erstmal nur die Heizung steuern will.
Da es auf Perl-Seite wirklich nicht viel sein kann wollte ich mich nicht in die komplette Sprache einarbeiten.
Wenn du also eine kurze Antwort hast, oder vieleicht auch jemand Anders,
wäre es nett wenn jemand meine vorige Frage beantworten könnte:

Ich arbeite zurzeit mit einer HttpConnection:

"http://192.168.0.17:8083/fhem?cmd=list%20BZ.HT.BadHeizung%20desiredTemperature&XHR=1"

Wenn ich hier mit arbeite bekomme ich die Werte einmal.

Wie bekomme ich die jetzt kontinuierlich?

Das hier verstehe ich nicht:

Aus fhemweb.js/FW_longpoll()

  var query = location.pathname+"?XHR=1"+
              "&inform=type=status;filter="+filter+";since="+since+";fmt=JSON"+
              '&fw_id='+$("body").attr('fw_id')+
              "&timestamp="+new Date().getTime();

Kann ich das auch einfach in die Adresse Zeile im Browser eingeben?

Viele Grüße!
Dennis


boke

Also wenn ich es richtig verstehe ist longpoll immer active, wenn es nicht ausgestellt wurde.
Dann sollte ich ja die Änderungen sehen.
Ich probiere das nachher mal aus.
Viele Grüße!
Dennis

CoolTux

Bis vor einem halben ja wusste ich nicht wie man in Perl mit TCP Sockets arbeitet. Daher habe ich mein Modul ein pulling verpasst. Alle 3 min hat es ein http Status request gemacht.
Was spricht also dagegen sowas vorerst in Dein Java Programm ein zu bauen? Wenn du dann soweit bist, kannst Du es ja ändern.
Alternativ schaue Dir mal TabletUI an, da wird in der entsprechenden js, glaube das war fhem-tablet.js oder so mit longpool gearbeitet.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

boke

Hallo,
ja das war ja meine erste Idee, habe ich ja weiter oben geschrieben und habe gefragt ob sich das eleganter lösen lässt.
Wenn es so was doch gibt und es nur eine Erweiterung der HTTP-Aufrufes ist, könnte ich es ja gleich verwenden und nicht Zyklisch abfragen.
Ich hätte die Werte dann sofort.
Viele Grüße!

Hans Franz

Hallo,
Wie du longpoll mitbekommst, also ein Änderung in fhem sofort am Handy siehst, weiss ich leider auch nicht.
Aber eine zyklische Abfrage vom Handy könntest du so implementieren:

class MyTimerTask extends TimerTask {
    public void run() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                fhem_abfragen();
            }
        });
    }
}


Und in der onCreate:
MyTimerTask myTask;
        String intervall = "180";
        myTask = new MyTimerTask();
        Timer myTimer = new Timer();
        myTimer.schedule(myTask, 1000, Integer.valueOf(intervall) * 1000);

intervall als String, um es gegebenenfalls als Preference zu speichen. Ist in Sekunden.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20