Ankündigung

Einklappen
Keine Ankündigung bisher.

Update von openHAB 1.x auf openHAB 2 und Verwendung des EXEC Binding

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

    [Codebeispiel] Update von openHAB 1.x auf openHAB 2 und Verwendung des EXEC Binding

    Hallo,

    migriere gerade mein openHAB1 auf openHAB2 un dabei auf ein neues Problem gestoßen, evtl. ist es auch nur ein Verständnisproblem da durch die vielen neuen Funktionen ich sozusagen wieder Anfänger bin.

    Problembeschreibung:
    Auf einem Raspberry PI auf dem auch openHAB läuft habe ich ein Script das Daten meines b-control Manager abruft (Skript und detailliertere Beschreibung kann hier nachgelesen werden: https://openhabdoc.readthedocs.io/de...ol_EM_example/).

    Die Ausgabe des Script habe ich in openHAB 1.x wie folgt eingebunden:

    Number BCM_consumption_wattage "current wattage consumption [%.1f W]" {exec="<[/opt/bcontrol/bcontrol@@CurrentConsumption:5000:REGEX((.*?))]"}

    Da ich parallel auch as KNX Binding verwende beschränke ich mich auf die Classic und Basic UI. Die Item und Sitemap Datei habe ich von "Hand" angelegt. Als EXEC Bindig habe ich das Binding für openHAB 2.0 installiert, das allerdings Things unterstützt.
    In meine Item Datei habe ich die Zeile von oben 1:1 eingefügt, allerdings bekomme ich nichts angezeigt.
    Muss ich da erst ein Thing anlegen und es dem Binding zuordnen?
    Geht das Graphisch oder auch per Konfigurations-Datei?
    Hat sich der Syntax geändert?

    #2
    Die Konfiguration des Exec 2.0 Bindings funktioniert tatsächlich komplett anders, die Zeile mit dem Befehl wird hier als Thing verwendet, anschließend kannst Du den passenden Channel im items-File nutzen. Schau Dir mal http://docs.openhab.org/ an. Allerdings gibt es auch nach wie vor das Exec1-Binding, welches - da Du das schon kennst - weitaus einfacher verwendbar ist. Mein Tipp wäre also, erstmal mit exec 1 anzufangen, und dann irgendwann auf exec 2 umzusteigen.

    Kommentar


      #3
      Zitat von udo1toni Beitrag anzeigen
      Die Konfiguration des Exec 2.0 Bindings funktioniert tatsächlich komplett anders, ...
      Vielen Dank für die Rückmeldung! Wie ich die Exec 2.0 Binding konfigurieren muss habe ich in der Zwischenzeit bereits herausgefunden.

      Die .thing Konfigurationsdatei sieht wie folgt aus:

      Code:
      Thing exec:command:aktBezug             "elekrtischer Bezug"            [command="/opt/TQManager/bcontrol aktBezug", interval=5, timeout=3, transform="REGEX((.*?))"]
      Thing exec:command:aktEinspeisung       "elektrische Einspeisung"       [command="/opt/TQManager/bcontrol aktEinspeisung", interval=5, timeout=3, transform="REGEX((.*?))"]
      Thing exec:command:ZaehlerBezug         "Zaehler Bezug"                 [command="/opt/TQManager/bcontrol ZaehlerBezug", interval=10, timeout=5, transform="REGEX((.*?))"]
      Thing exec:command:ZaehlerEinspeisung   "Zaehler Einspeisung"           [command="/opt/TQManager/bcontrol ZaehlerEinspeisung", interval=10, timeout=5, transform="REGEX((.*?))"]
      Die Konfiguration der entsprechenden Items:

      Code:
      String TQManager_Bezug                        "aktueller Bezug (String) [%s]"         (TQmanager)     {channel="exec:command:aktBezug:output"}
      String TQManager_Einspeisung          "aktuelle Einspeisung [%s]"             (TQmanager)     {channel="exec:command:aktEinspeisung:output"}
      String TQManager_ZaehlerBezug         "Zählerstand Bezug [%s]"                (TQmanager)     {channel="exec:command:ZaehlerBezug:output"}
      String  TQManager_ZaehlerEinspeisung  "Zählerstand Einspeisung [%s]"          (TQmanager)     {channel="exec:command:ZaehlerEinspeisung:output"}
      Zitat von udo1toni Beitrag anzeigen
      Allerdings gibt es auch nach wie vor das Exec1-Binding, welches - da Du das schon kennst - weitaus einfacher verwendbar ist. Mein Tipp wäre also, erstmal mit exec 1 anzufangen, und dann irgendwann auf exec 2 umzusteigen.
      Die Items sollten eigentlich vom Typ Number sein, allerdings wird das transformieren von "Sting" (was die Ausgabe eines Scipt nun mal ist) nach Number vom exec Binding 2.0 nicht unterstützt. Hierzu gibt es auf github ein Ticket.

      Ich werde nun wieder das Exec Binding 1.9 installieren und mein Glück mit diesen versuchen!

      Kommentar


        #4
        Die Items sollten eigentlich vom Typ Number sein, allerdings wird das transformieren von "Sting" (was die Ausgabe eines Scipt nun mal ist) nach Number vom exec Binding 2.0 nicht unterstützt. Hierzu gibt es auf github ein Ticket.
        Hi,
        stehe aktuell wieder vor dem gleichen Problem!
        Kann das aktuelle exec_Binding in der Zwischenzeit die String-Ausgabe in ein Zahl transformieren bzw. Gibt es da eine einfache Lösung?

        Danke für euer Feedback!
        Gruß
        mepi0011

        Kommentar


          #5
          Soweit ich weiß, ist das noch nicht gelöst (ich hab dieses Thema allerdings in letzter Zeit nicht verfolgt, kann sein, dass mein Wissen da überholt ist). Vermutlich ist der einfachste Weg über eine Rule und Proxy Items.
          Da Du immer das selbe Script aufrufst, könntest Du den Input Channel verwenden und die Ausgabe jeweils innerhalb der Rule dem korrekten Item zuordnen. Du kannst aber auch genauso gut alle Items doppelt anlegen, wobei Du dann die Namen gut wählen solltest (Proxyname = Originalitem+Ergänzung), dann packst Du die Items in zwei Gruppen (z.B gZaehler und gZaehlerNum) und schreibst eine Rule, die die Umrechnung vornimmt:
          Code:
          rule "string in num"
          when
              Member of gZaehler changed
          then
              gZaehlerNum.members.filter[m|m.name.contains(triggeringItem.name)].head.postUpdate(
                  if(triggreingItem.state != NULL)
                      Float::parseFloat(triggreingItem.state.toString)
                  else
                      NULL
              )
          end

          Kommentar


            #6
            udo1toni

            Vielen Dank für die Rückmeldung. Das Problem habe ich nun via Rule und JasonPath gelöst. Details habe ich hier beschrieben:

            https://openhabdoc.readthedocs.io/de...ol_EM_example/

            Gruß
            mepi0011

            Kommentar

            Lädt...
            X