Seite 3 von 8

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 09:16
von starbright
und noch eins:

Wie könnte man das debuggen?

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 11:09
von oh73
ich bin beim Einrichten mit der Gui nicht so ganz sicher,

aber bei der Base_Url fehlt meiner Meinung nach das "http://" davor.

ich mach das alles in Things Dateien oder ruf so eine Seite mit

Code: Alles auswählen

var request = sendHttpGetRequest("http://deine_IP",1000)
in einer Rule ab.

hab das Ergebnis dann in der Variable request stehen und kann das beliebig weiter verarbeiten.

Profi´s machen das anders, aber so verstehe ich was ich mache!

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 12:41
von violine21
Hallo,
hier mal als Beispiel ein http-Thing zur Abfrage meiner Solarthermie:

Code: Alles auswählen

UID: http:url:38d8fe868d
label: HTTP Solarthermie
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.178.200/GRAFIK1.htm
  delay: 0
  stateMethod: GET
  refresh: 60
  commandMethod: GET
  timeout: 50000
  bufferSize: 2048
channels:
  - id: Temperatur_Viessmann
    channelTypeUID: http:string
    label: Temperatur Viessmann
    description: ""
    configuration:
      stateTransformation: REGEX:.*?<div id=.pos5.>(.*?) &deg;C </div>(.*)
  - id: Temperatur_Broetje_oben
    channelTypeUID: http:string
    label: Temperatur Broetje, oben
    description: ""
    configuration:
      stateTransformation: REGEX:.*?<div id=.pos4.>(.*?) &deg;C </div>(.*)
  - id: Temperatur_Broetje_unten
    channelTypeUID: http:string
    label: Temperatur Broetje, unten
    description: ""
    configuration:
      stateTransformation: REGEX:.*?<div id=.pos3.>(.*?) &deg;C </div>(.*)
Die URL habe ich komplett hinterlegt (baseURL).
In Deinem Fall: http://192.168.3.241/gen.measurements.table.js
Danach drei Channels, in denen aus der http-Antwort die entsprechenden Daten herausgefiltert werden.
Anschliessend brauchst Du in der UI nur noch die entsprechenden Items aus den Channels erzeugen.
Die Regex-Transformationen musst Du auf Deine Gegebenheiten anpassen.

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 13:07
von starbright
Vielleicht war es wirklich das fehlende https:// - jedenfalls bekomme ich jetzt strings !
Man kann es etwas abkürzen und im thing gleich die ganze URL angeben, wenn keine anderen Sub-URLS benötigt weren. Dann den Channel anlegen (alles Standard, nichts eintragen) und dann kann man mehrere Points auf diesen Channel legen (mit unterschiedlichen Reqexp). Die Items hab ich als

Das Problem ist, die Werte werd mir zwar unter Settings/Item korrekt angezeigt, aber nicht in der Sitemap. Auch wenn ich den Point statt als Text als Number:Power anlege. Mhh. Beim "Analysieren" wird mir ein Chart angezeigt. Warum dann nicht in der Sitemap?

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 13:13
von udo1toni
Das Problem beginnt tatsächlich schon bei der baseURL. Das Protokoll gehört zwingend zur baseURL dazu, denn das http Binding kann (wenn man das kleingedruckte liest) auch mit https umgehen. Also wie im Browser, http://192.168.3.241/ (der Slash gehört definitiv noch zur baseURL, nicht zur Erweiterung - auch das ist im Browser der Fall.)

Ich möchte auch empfehlen, keine Screenshots zu teilen, wo das nicht zwingend notwendig ist. Es gibt im Thing die Code-Ansicht, das ist Text, den man hier bequem und äußerst platzsparend (als Code markiert) einfügen kann.

Und wie gesagt, Du solltest (damit das mit der Umformung über JS klappt) die stateTransformation innerhalb des Channels nutzen, nicht das Profile im Link.
starbright hat geschrieben: 22. Feb 2023 09:14 Was mich etwas wundert, dass man beim Channel nur etwas im "Advanced" einträgt. Das ist ja eher unüblich.... normal sind die wichtigen Sachen doch "normal" erreichbar und nur Extras im "Advanced"?
Kommt halt auf den Anwendungsfall an :) Es kommt häufiger vor, dass man ein http Thing anlegt, bei dem tatsächlich nur eine einzige URL benötigt wird. Die trägt man dann als baseURL ein. Alle Channel verwenden automatisch diese eine URL, wichtig ist dann nur die Unterscheidung über die stateTransformation.

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 13:52
von udo1toni
starbright hat geschrieben: 22. Feb 2023 13:07 Das Problem ist, die Werte werd mir zwar unter Settings/Item korrekt angezeigt, aber nicht in der Sitemap. Auch wenn ich den Point statt als Text als Number:Power anlege. Mhh. Beim "Analysieren" wird mir ein Chart angezeigt. Warum dann nicht in der Sitemap?
Wo hast Du die Umsetzung eingebaut? Im Channel (nicht im Link, siehe oben)? Hast Du den Channel als number definiert? Hast Du in den advanced Options die Unit gesetzt? Nur mit gesetzter Unit darfst Du auch ein Number:<irgendwas> angeben, wobei <irgendwas> dann natürlich noch zur Unit passen muss. Willst Du also Power haben, muss die Unit auch W sein, willst Du Energy haben, muss die Einheit Wh sein (oder was auch immer, aber halt passend).

Ob etwas in der Sitemap angezeigt wird, hängt davon ab, wie Du die Sitemap definiert hast (und auch, wie das Item definiert ist).

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 14:24
von starbright
Sorry wegen der Bilder, ich war nicht sicher ob ich das alles richtig verstanden hab.
Also ich hab im Channel (string, ich meine so hattest du das empfohlen) einen "Add points to model" gemacht und dort dann statt der Vorgabe Text den Number:Power gewählt. Eine Einheit konnte ich nirgends eintragen.

Ich hab den String-Channel nun noch mal gelöscht (hab das Item Steca_AC unlinken müssen zuvor) und einen neuen Number-Channel angelegt. Im Advanced eine Unit W eingetragen und dann zu dem vorhandenen Item gelinkt. Das Ergebnis bleibt das gleich - überall kann ich den Wert sehen, nur im Sitemap nicht, also der Item steht da, nur ohne Wert. Auch gelöscht und neu hinzugefügt ändert nichts.

Code: Alles auswählen

UID: http:url:Steca
label: Steca
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.3.241/gen.measurements.table.js
  delay: 0
  stateMethod: GET
  refresh: 10
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048
channels:
  - id: Steca_Number_Channel
    channelTypeUID: http:number
    label: Steca_Number_Channel
    description: ""
    configuration:
      mode: READONLY
      unit: W
In der Sitemap (Code view) sieht alles gut aus. Einzig ist mir aufgefallen dass das gelbe Enery Dreieck auf dem Handy erscheint, obwohl ich es nicht explizit bei der Sitemap erstellung ausgewählt hab (und auch nicht im Code ist). Wahrscheinlich weil ich das bei der Item-Definition (also dem Linken zum Channel - ich hoffe das ist begrifflich richtig) so definiert hab.


EDIT:
Ich muss das wieder rückgängig machen. Wenn man einen Number-Channel zur Basis macht, dann bleibt bei mir der Wert des folgenden Links konstant und wird nicht mehr geändert.

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 14:39
von violine21
Habe mal Deinen Code mit der REGEX von Udo kombiniert:

Code: Alles auswählen

UID: http:url:Steca
label: Steca
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.3.241/gen.measurements.table.js
  delay: 0
  stateMethod: GET
  refresh: 10
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048
channels:
  - id: P_AC
    channelTypeUID: http:string
    label: Leistung AC
    description: ""
    configuration:
      stateTransformation: REGEX:.*P AC</td><td align='right'> *(\d+\.\d+?)<.*
Damit müsste ein Channel in der Thing-Konfiguration auftauchen. Aus diesem erzeugst Du ein Item (es wird automatisch vom Typ String sein).
Die Einheit kannst Du erst mal ignorieren.
Was passiert jetzt?

Achso, was meinst Du mit Sitemap?

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 15:18
von starbright
"Sitemap" ist die Seite, die auf nem Handy angezeigt wird. Dort (und nur dort) wird mir der Wert zu dem Item nicht angezeigt. Sonst ist alles ok.
Also es taucht in der Item-liste auf und wenn ich die Cell auf die Overview Page packe wird sie aktualisiert.

Mh, du hast die REGEXP in den channel getan. Bei mir kommt das erst in das Item/Link. Ich finde nicht, wo ich dessen Codeview zu sehen bekomme. Aber ich glaube fast das ist richtig.
Will ich in meinem Semantic Model den Item hinzufügen, so geht das gar nicht. Es ist immer der Channel der dann mit dem ganzen html Zeug angezeigt wird.

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Verfasst: 22. Feb 2023 15:35
von violine21
starbright hat geschrieben: 22. Feb 2023 15:18 "Sitemap" ist die Seite, die auf nem Handy angezeigt wird. Dort (und nur dort) wird mir der Wert zu dem Item nicht angezeigt. Sonst ist alles ok.
Also es taucht in der Item-liste auf und wenn ich die Cell auf die Overview Page packe wird sie aktualisiert.
Ah, verstehe.
Nutze OH leider nicht am Handy.
starbright hat geschrieben: 22. Feb 2023 15:18 Ich finde nicht, wo ich dessen Codeview zu sehen bekomme.
Dein Post mit den Bildern. Erstes Bild, das ist die Thing-Konfiguration, dort oben rechts steht Code.
Da kannst Du den Code einsehen/ändern.