Ankündigung

Einklappen
Keine Ankündigung bisher.

Von OpenHAB zu Java

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Von OpenHAB zu Java

    Hallo alle zusammen,

    Ich stehe vor einem Problem, dass ich nicht mehr alleine lösen kann.
    Ich habe folgendes Konzept, für meine Bachelorarbeit herausgearbeitet.
    Java App. simuliert einen Smart Meter und gibt ein txt-file, mit Datum, Uhrzeit und verbrauch aus.
    Openhab greift mit Hilfe von Apache Tomcat auf das File zu, liest es und leitet es weiter.
    Eine weiter Java App. stellt mit einer MySQL DB das Energymanagement System dar. Es liest das File und Speicher die werte.

    So weit so gut.
    Nun versuche ich, eine Funktion in Openhab einzubauen, welche mir die Auswahl eines Zeitraums ermöglicht: von Datum-Uhrzeit, bis Datum-Uhrzeit.
    Am besten wäre es, wenn die beim Aufruf der Funktion, die möglichen auswählbaren Zeiten angezeigt würden.
    Und nach der Auswahl der in Java errechnete Verbrauch, wie durchschnittliche KWH und gesamt KWH, in openhab erscheint.
    Bisher versuchte ich mich an get request, jedoch schaffe ich die Brücke sowohl von java seitig als auch von OpenHAB nicht.

    Ich wäre für jeden Tipp sehr dankbar.

    Gruß Raimund

    Ergänzung vom 21.09.:

    Aktuell versuche ich über die get Funktion, aus openhab heraus, auf meinen Tomcat zuzugreifen. Dieser wiederum sollte die anfrage über JSP weiter an die Java App leiten und die entsprechenden Werte zurückgeben.

    Ich vermute, es ist zu kompliziert gedacht und geht erheblich einfacher. Doch leider kenne ich bis her keinen optimaleren Weg.

    Gäbe es auch andere Methoden, um OpenHab das lesen von z.B. String aus einer Java Applikation über eine Distanz zu ermöglichen?
    Zuletzt geändert von Solomon; 22.09.2015, 07:40.

    #2
    Hi Raimund,

    ich habe noch nicht so ganz verstanden, wozu das alles gut sein soll :-). Wofür benötigst du openhab? Vielleicht hast du ja mal ne Grafik die den Datenfluss zeigt?
    Für die Darstellung von hübschen Grafiken für bestimmte Zeiträume eignet sich z.B. Grafana (http://grafana.org/) viel besser. Zeiträume in der UI von openhab dynamisch darzustellen und auszuwählen ist sehr, sehr kompliziert bis unmöglich.

    Ansonsten vielleicht noch der allgemeine Hinweis, dass openhab ein REST-Interface hat in der jedes item mittels eindeutiger URL von außen addressierbar ist.
    Also z.B. Number verbrauch => http://meinOHServer:8080/rest/items/verbrauch/state

    bzw. siehe auch https://github.com/openhab/openhab/wiki/Samples-REST und https://github.com/openhab/openhab/wiki/REST-API

    Und hast du mal die diversen Bindings durchgesehen? Vielleicht ist da was dabei., z.B. das TCP/UDP Binding oder das EXEC-Binding.

    Grüße

    Mitch

    Kommentar


      #3
      Ich bin dabei, ein Model eines Smart Meter mit entsprechendem Energie Daten Management System über OpenHAB du erstellen, naja ich versuche es zumindest.
      Ein Diagramm habe ich leider noch nicht, nur als Erklärung.
      Model:
      • In Java simulierter Smart Meter erstellt ein File(Datum,Uhrzeit,KWH)
      • OpenHAB liest das File über Apache Tomcat
      • Gibt die Infos aus
      • Leitet das File weiter über Apache Tomcat zu einem weiteren System (Java-MySQL-EDMS)
      • EDMS liest das File vergleicht die Werte und speichert in MySQL
      • Wird alle 15 Minuten wiederholt

      Ich habe es mit sendHttpGetRequest gelöst, funktioniert auch.
      Mein Professor und ich wollten noch das Betrachten von vergangen Zeiträumen in OpenHAB ein bauen z.B.: was habe ich verbraucht, vom Anfangs Datum bis Enddatum und es grafisch darstellen. Alles in OpenHAB.
      Die Abfrage aus OpanHAB, habe ich mittlerweile hinbekommen. Ich schaffe es einen langen STRING mit allen verfügbaren Daten für das Anfangs Datum zu lesen anschließend splitte ich es auf um einzelne Daten zu erhalten. Ermöglicht durch sendHttpGetRequest von OpenHAB, an Tomcat mit ausgeführtem Servlet.

      beispiel: var String getString = sendHttpGetRequest("http://localhost:8080/EDMS/EDMSservlet")

      Jedoch würde ich gerne die aufgesplitterten Daten in Openhab ausgeben. Als Dropdown oder Selection wäre es am besten, es will mir aber nicht so recht gelingen.

      Gruß
      Raimund

      Kommentar


        #4
        Ich hätte noch einige Fragen an euch,

        Über „var String gettest = sendHttpGetRequest("http://localhost:8080/Archiv/ArcivServlet")“ übergebe ich über Tomcat ein String, mit dem inhalt: "2015-09-19,2015-09-20,2015-09-22". Anschließend splitte ich den String.
        Den Inhalt würde ich jetzt gerne einzeln auswählen können, wie in einer Selection. Ich bekomme es jedoch nicht hin, hätte ihr einen Tipp für mich.

        Eine andere Baustelle ist das übergeben eines String von Openhab an Java Servlet.
        Was ich versuche:

        Openhab rules:
        var String posttest = "test"
        sendHttpPostRequest("http://192.168.178.26:8181/Archiv/ArcivServlet","Content-type: text/plain" ,posttest)

        Java Servlet:
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String test = "";
        test = request.getParameter("posttest");
        System.out.println(test);
        }

        Ich erhalte jedoch immer nur null zurück.
        Könntet ihr mir bitte sagen wo mein Fehler liegen könnte?

        Gruß

        Raimund

        Kommentar


          #5
          Zitat von Solomon Beitrag anzeigen
          Ich erhalte jedoch immer nur null zurück.
          Könntet ihr mir bitte sagen wo mein Fehler liegen könnte?
          Ich bin mir nicht sicher, aber müsste dein posttest-String nicht eher so lauten:
          Code:
          var String posttest = "posttest=test"
          ?
          Du fragst unten ja per request.getParameter den Wert des Parameters posttest an, übergibst aber in deinem Beispiel gar keinen Wert an diesen Parameter.

          Kommentar


            #6
            Ich habe es sofort ausprobiert, leider mit denselben Ergebnis.

            Kommentar


              #7
              Zur Frage mit dem Auswahlmenü bzw. Liste.

              Wäre es möglich ein einen String Array wie:[2015-09-01][2015-09-02][ 2015-09-03]
              In einer Schleife einer Map zuzuordnen und diese anschließend von einer SELECTION aufrufen zu lassen?

              Gruß
              Raimund

              Kommentar


                #8
                Das der get Parameter mir eine null ausgibt, habe ich nur testweise lösen können.
                Anstatt den Parameter zu lesen gebe ich im Servlet den ContenType aus:

                String ct = request.getContentType();
                System.out.println(ct);

                Und im Openhab sieht es wie folgt aus:

                var String posttest = "2015-09-12"
                sendHttpPostRequest("http://192.168.178.26:8181/Archiv/jsp/Archiv.jsp","Content-type: "+posttest ,posttest)

                eine zugegeben unschöne Lösung, aber ich hoffe ihr könnt mir bei einer besseren helfen.

                Kommentar


                  #9
                  Testweise habe ich aus einer anderen test.JSP, durch Post ein value an meine eigentliche JSP gesendet mit Erfolg.
                  Leider erwies sich das, dass benutzten von getContentType() als nutzlos und jetzt stehe ich wieder am Anfang.

                  Kommentar


                    #10
                    Mit

                    StringBuilder buffer = new StringBuilder();
                    BufferedReader reader = req.getReader();
                    String line;
                    while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                    }
                    konnte ich nun die Informationen von Openhab, java lesen und verarbeiten.
                    Und somit ist das auch erledigt

                    Kommentar


                      #11
                      Jedoch versuche ich noch immer ein pick list bzw. Auswahlliste/Menü für mein String/String Array zu erstellen.
                      Hätte jemand ein Vorschlag? Ich bin völlig Planlos.
                      Gruß
                      Raimund

                      Update vom 03.10.
                      Hat sich erledigt, werde das konzept endern.
                      Zuletzt geändert von Solomon; 03.10.2015, 11:43.

                      Kommentar

                      Lädt...
                      X