String aus HTTP Binding wird nicht angezeigt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Ewulution
Beiträge: 2
Registriert: 13. Apr 2022 15:14
Answers: 0

String aus HTTP Binding wird nicht angezeigt

Beitrag von Ewulution »

Hallo,

ich möchte Daten eines b-control/TQ-Systems Energy Meters mittels HTTP Binding und JSON Transformation auslesen. Ich nutze OH3. Habe mich mühevoll durchgearbeitet und habe die Werte nun auch in einem Item. Binde ich dieses Item nun in eine Page ein, bekomme ich den String angezeigt. In der BasicUI und der iOS-App leider nicht.

Habe die Komplexität bei der Fehlersuche minimiert und es ohne JSON Path Transformation mit einer reinen HTTP-Binding HTML Textabfrage (http://www.google.de) nachgestellt. Gleiches Ergebnis. Um sicherzustellen, dass andere Strings als Text angezeigt werden, habe ich einfach mal ein Openweather Item (Wetterlage) in die Sitemap eingebunden. Dieser String wird als Text angezeigt.

Wieso wird mir der String eines HTTP Binding Items in der Sitemap (BasicUI und iOS-App) nicht angezeigt, während auf der Page alles gut ist?

BasicUI Darstellung:
Bild

Pages Darstellung
Bild

BasicUI Code

Code: Alles auswählen

sitemap page_f5f6cc4c70 label="New Sitemap" {
    Text item=HTTPURLThing_test label="Http Binding Test"
    Text item=OneCallAPILokalesWetterundWettervorhersage_Wetterlage label="Wetter Text Test"
}
BasicUI Sitemap Definition

Code: Alles auswählen

{
  "uid": "page_f5f6cc4c70",
  "component": "Sitemap",
  "config": {
    "label": "New Sitemap"
  },
  "slots": {
    "widgets": [
      {
        "component": "Text",
        "config": {
          "item": "HTTPURLThing_test",
          "label": "Http Binding Test"
        }
      },
      {
        "component": "Text",
        "config": {
          "item": "OneCallAPILokalesWetterundWettervorhersage_Wetterlage",
          "label": "Wetter Text Test"
        }
      }
    ]
  }
}
Pages Code

Code: Alles auswählen

config:
  label: Overview
blocks:
  - component: oh-block
    config: {}
    slots:
      default:
        - component: oh-grid-cells
          config: {}
          slots:
            default:
              - component: oh-label-cell
                config:
                  item: OneCallAPILokalesWetterundWettervorhersage_Wetterlage
                  title: Openweather String Text Test
masonry:
  - component: oh-masonry
    slots:
      default:
        - component: oh-label-card
          config:
            item: HTTPURLThing_test
            title: HTTP Binding String Text Test
grid: null
canvas: null

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: String aus HTTP Binding wird nicht angezeigt

Beitrag von udo1toni »

Wenn Du das Label in der Sitemap setzt, musst Du unter bestimmten Voraussetzungen die Formatierung für den Status mit angeben.
Du kannst versuchen, kein Label anzugeben oder alternativ musst Du im Label zum Abschluss noch etwas wie [%s] schreiben (das s steht für String). Als Zeile dann so:

Code: Alles auswählen

Text item=HTTPURLThing_test label="Http Binding Test [%s]"
oder eben mit weglassen versuchen:

Code: Alles auswählen

Text item=HTTPURLThing_test
Wenn es sich um ein Number Item handelt, kannst Du auch den numerischen Wert formatieren, z.B. [%.1f °C] ergibt als Ausgabe eine Nachkommastelle und die Einheit °C hinten dran.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Ewulution
Beiträge: 2
Registriert: 13. Apr 2022 15:14
Answers: 0

Re: String aus HTTP Binding wird nicht angezeigt

Beitrag von Ewulution »

Hallo Udo,

Du bist der beste! 1000DANK!!! ohne Label funktioniert es nicht, aber mit [%s] funktioniert es sofort!
Woher weiß man sowas???
Und wieso verhält sich die BasicUI so derart anders wie Pages?

Viele Grüße, Uwe

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: String aus HTTP Binding wird nicht angezeigt

Beitrag von udo1toni »

Man weiß sowas, wenn man openHAB seit vielen Jahren nutzt :)

Grundsätzlich: Basic UI ist der Nachfolger von Classic UI, der ersten UI, die openHAB mitbrachte. Classic UI hat immer nur einspaltig gerendert.
Ansonsten wurden die Icons aufgefrischt, als Basic UI mit openHAB 2 an den Start ging.
Es gab in openHAB1 auch mal GreenT, die war echt schick, aber leider hat sich der Entwickler von openHAB verabschiedet. GreenT hatte z.B. eine Seitenleiste, ähnlich der Seitenleiste in der Main UI, aber dennoch komplett über die Sitemap gesteuert.

Was es aber unter openHAB 1 nicht gab, waren Things. Und weil die default Status Formatierungen in den Things definiert sind (bzw. im Addon, welches die Things zur Verfügung stellt), gab es auch keine vordefinierten Status Formatierungen.
Daraus ergab sich, dass man entweder in der Item Definition ein Label definieren musste (mitsamt Status Formatierung) oder aber in der Sitemap jedes Mal das Label mit angeben musste (ebenfalls mit Status Formatierung). Wurde kein Label definiert, so wurde zwar das Item dargestellt, aber eben ohne Label und auch ohne Statusausgabe.

Unter openHAB 3 gibt es nur noch Bindings, welche die Geräte über Things in openHAB abbilden, also alles schick? Nö, offensichtlich nicht. Weil nicht alle Bindings jederzeit korrekte Formatierungen für die Channel vordefinieren.
Die MainUI greift im Zweifel auch auf die default Status Formatierung zu, schert sich aber nicht drum, wenn keine definiert ist. Es wird dann einfach eine sinnvolle Formatierung genommen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten