openHAB 3 - NeoPool

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

fuetzi
Beiträge: 15
Registriert: 6. Mai 2020 11:33
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von fuetzi »

Danke für die ausführliche Erklärung, das meiste war mir schon klar, bzw. hab ich soweit auch eingerichtet.
Unklar sind mir diese Topics. Was genau sind die jetzt? Sowas kannte/brauchte ich bisher überhaupt nicht.
Aber zuerst mal - ich habe einen Modbus Adapter der die Daten an einen ESP8266 weiterleitet. Das funkt. schon mal.
Mosquitto ist installiert, im log sehe ich eine Verbindung zum ESP.
Meinem Verständnis nach müsste ich jetzt im ESP Thing unter "Availability Topic", dies hier eintragen: tele/tasmota_C12065/SENSOR (habe ich von der Tasmota Doc). Dann sollte das Thing Werte bekommen, die ich dann in den Channels aufteile - richtig?

So, ich habe jetzt versucht heruaszufinden, ob die Daten überhaupt da sind.
Mit MQTT Explorer sehr ich die Daten und auch die Topics, wenn ich aber im Openhab eine Channel mit dem Topic erstelle, bekomme ich die Daten nicht angezeigt - NULL

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

Re: openHAB 3 - NeoPool

Beitrag von udo1toni »

fuetzi hat geschrieben: 20. Mai 2022 11:42 Meinem Verständnis nach müsste ich jetzt im ESP Thing unter "Availability Topic", dies hier eintragen: tele/tasmota_C12065/SENSOR (habe ich von der Tasmota Doc). Dann sollte das Thing Werte bekommen, die ich dann in den Channels aufteile - richtig?
Nein.

Das Availability Topic ist eigentlich das LastWillAndTestament Topic (bzw. LWT). Das LWT wird vom Device an den Broker übertragen, mit der Information, dieses spezielle Topic auf einen bestimmten Wert zu setzen, falls die Kommunikation abbricht. Anschließend setzt das Device dieses Topic auf einen anderen Wert. Z.B.: setze tele/meinDevice/LWT bei Kommunikationsabbruch auf OFFLINE. Setze das Topic tele/meinDevice/LWT auf ONLINE.
Nun bekommt openHAB die Message ONLINE für das Topic tele/meinDevice/LWT. Sobald die Kommunikation abreißt (typisch innerhalb Sekundenbruchteilen) wechselt das Topic auf OFFLINE. Aber diese Payload kommt nicht vom Device, denn dieses kann ja gar nicht mehr kommunizieren.
Auf diese Weise erhält openHAB also die Information, ob das Device überhaupt erreicht werden kann.

Stattdessen musst Du Channels anlegen, und diese Channels bekommen dann ein State Topic und/oder ein Command Topic. Und dort trägst Du dann das korrekte Topic ein, in Deinem Fall, solange es nur um den Empfang von Daten geht, wird also tele/tasmota_C12065/SENSOR das State Topic sein.

Mit hoher Wahrscheinlichkeit wird hier ein JSON Objekt geliefert, das kannst Du prima in einem String Channel(!) ankommen lassen.

Diesen String Channel verlinkst Du dann mit mehreren Items, im Link selbst kannst Du - installierter JSONPATH Transformation Service vorausgesetzt - einen JSONPATH eintragen, welcher Dir je Item einen bestimmten Wert im JSON Objekt darstellt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

fuetzi
Beiträge: 15
Registriert: 6. Mai 2020 11:33
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von fuetzi »

Ich glaube das Problem nun zu verstehen (zumindest einigermaßen ;-))
Das hier sehe ich am ESP:

Code: Alles auswählen

{
  "Time": "2022-05-22T11:14:37",
  "NeoPool": {
    "Time": "2022-05-22T12:08:12",
    "Type": "Generic",
    "Modules": {
      "pH": 1,
      "Redox": 0,
      "Hydrolysis": 1,
      "Chlorine": 0,
      "Conductivity": 0,
      "Ionization": 0
    },
    "Temperature": 23.2,
    "Power": {
      "Version": "V3.46",
      "NodeID": "05E5 2D35 3939 534D 4309 1921",
      "5V": 5,
      "12V": 14,
      "24-30V": 33,
      "4-20mA": 0.04
    },
    "pH": {
      "Data": 7.4,
      "Min": 7,
      "Max": 7.2,
      "State": 3,
      "Pump": 2,
      "FL1": 0,
      "Tank": 1
    },
    "Hydrolysis": {
      "Data": 50,
      "Unit": "%",
      "Runtime": {
        "Total": "83T14:46:16",
        "Part": "83T14:46:16",
        "Pol1": "41T12:49:13",
        "Pol2": "42T01:57:03",
        "Changes": 1028
      },
      "State": "Pol1",
      "Cover": 0,
      "Boost": 0,
      "Low": 0
    },
    "Filtration": {
      "State": 1,
      "Speed": 1,
      "Mode": 0
    },
    "Light": 1,
    "Relay": {
      "State": [
        0,
        1,
        1,
        0,
        0,
        0,
        0
      ],
      "Aux": [
        0,
        0,
        0,
        0
      ],
      "Acid": 0
    }
  },
  "TempUnit": "C"
}
Wenn ich mich mit dem selben MQTT Tool an der Openhab IP anmelde, sehe ich selbes - also die Daten kommen defintiv an.
Das Problem ist eben, dass ich diese Daten nun herausfiltern muss, bzw. eben die Daten die ich anzeigen möchte.
Ich werde mir dieses Jsonpath Modul mal ansehen, wenn dies die einzige Möglichkeit dazu ist.
Danke erstmal für die Aufklärung!
Kannst du mir vielleicht bei der "JSONPath Expression" weiterhelfen?

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

Re: openHAB 3 - NeoPool

Beitrag von udo1toni »

ja, das ist eigentlich super einfach.
Z.B. um auf die Temperatur zuzugreifen benötigst Du folgende Expression:

Code: Alles auswählen

$.NeoPool.Temperature
Wichtig ist (wie erwähnt), dass Du den Channel in openHAB als String Channel definierst. Es handelt sich dabei in diesem Fall um einen ReadOnly Channel, entsprechend wird ausschließlich das stateTopic gesetzt. In der Folge landet das JSON Objekt im Channel.
Diesen Channel verlinkst Du mit mehreren Items (je nach zukünftigem Inhalt Number, Switch, DateTime oder auch String).
Weiterhin ist es essenziell, dass die JSONPATH Transformation installiert ist (findest Du unter Addons), denn im Link zwischen Channel und Item muss nun das JSONPATH Statement angegeben werden. Ist die Transformation installiert, so erscheint sie auch direkt als Option im Link.
Der Aufbau des JSON Objekts ist streng hierarchisch. Das $ ist der root, also die oberste Ebene. Die nächste Ebene wird jeweils mit einem . abgetrennt. Der interessante Knoten heißt NeoPool, darunter gibt es dann jede Menge weitere interessante Punkte.

Es gibt Online Tools, um einfache JSONPATH Ausdrücke zu verifizieren oder auch den passenden Path abzulesen, aber wenn Du einen gescheiten Editor verwendest (z.B. Notepad++ oder - noch besser - VSCode), gibt es dort Plugins, um solche Funktionen nachzurüsten, das macht das Leben deutlich komfortabler.

Im Fall Deines JSON Objekts ist die Struktur sehr einfach, so dass man mit wenig Übung direkt die korrekten Statements ablesen kann. Einen kleinen Spezialfall gibt es dennoch, das wären Relay State und Aux. Hier gibt es ein Array. Um auf einen bestimmten Wert zuzugreifen, musst Du dann numerieren:

Code: Alles auswählen

$.NeoPool.Relay.State[1]
wäre z.B. der zweite(!) Wert in der State Liste. Der Index ist also 0-basiert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

fuetzi
Beiträge: 15
Registriert: 6. Mai 2020 11:33
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von fuetzi »

Vielen Dank!
Ich habe in der Zwischenzeit Jsonpath installiert und mir die Struktur angesehen.
Und ich denke auch-verstanden - zumindest kann ich meine Werte nun anzeigen.
Und Ja, es ist eigentlich einfach, wenn man es verstanden hat. Aber das ist doch bei allem so ;-)

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von ollyins »

Hallo zusammen,

ich habe meinen ESP32 an meiner Sugarvalley Hydrolife endlich zum laufen bekommen, die Standard-Ausdrücke bekomme ich auch in openhab anegzeigt - gemäß der Beispiele...


Type number : Temperature [stateTopic="tele/neopool_D7CDB8/SENSOR", transformationPattern="JSONPATH:$.ESP32.Temperature"]
Type number : RSSI [stateTopic="tele/neopool_D7CDB8/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
etc...

aber die weiteren Werte wie z.B. pH-Wert, Redox etc... (Module sind natürlich installiert..) bekomme ich nur in der Tasmota-Website, jedoch nicht in openhab, mangels korrekter mqtt-Syntax... auch die Daten des DS18x20 Temperatursensor an GPIO5 bekomme ich nicht ... falls der korrekt verdrahtet ist... - moduel config des esp ist korrekt.
Ich habe schon im Netz nach demo things und item-Dateien gesucht und leider keinen Erfolg gehabt...
Vielleicht kann mir hier jemand helfen....

saludos,

Oliver

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von ollyins »

Keiner unterwegs hier in dem Forum?
Leider kann ich als neues Mitglied keine PM's schreiben... würde mich über Hilfe sehr freuen...

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von ollyins »

Nachtrag: Nun läuft es soweit... der mqtt-broker war abgebröselt! Ich bekomme nun die Werte angezeigt und nun geht es daran, diese per openhab zu ändern, also zumindest die Filterpumpe ein und aus zu schalten, die Automatik-Angaben auszulesen und evt. zu ändern etc... Next big Step ohne Hilfe...
Ist halt blöd, wenn man das Rad noch mal neu erfinden muss, weil niemand hier mal eine komplette Demo gepostet hat... Schade...

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

Re: openHAB 3 - NeoPool

Beitrag von udo1toni »

Herzlich willkommen im Forum!

Vielleicht liegt es einfach daran, dass hier niemand dieses Konstrukt am Laufen hat.

Es ist übrigens keine gute Idee, sich einfach an einen bestehenden Thread ran zu hängen, der vielleicht ähnlich klingt, aber mit einem neuen Problem.
Mach einen neuen Thread auf, das dürfen auch neu angemeldete User. Neue Threads sind deutlich sichtbarer als alte Threads.
Abgesehen davon ist hier zwar recht oft jemand da, aber manchmal eben auch nicht, niemand arbeitet hauptberuflich für openHAB oder gar dieses Forum.
Die Leute hier machen das ausschließlich in ihrer Freizeit. Die meisten davon haben viele Räder neu erfunden, obwohl etliche dieser Räder hier und in den anderen Foren offen rum standen :) also auch damit bist Du nicht allein.

Es ist auch immer hilfreich, freundlich und höflich aufzutreten, und zumindest etwas Geduld mitzubringen. Wie gesagt, alles Hobby...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: openHAB 3 - NeoPool

Beitrag von ollyins »

Hallo Udo (?),

danke für deine Antwort. Das war nicht böse gemeint!
Ich bastele nun schon seit über eine Woche herum - ist schwierig hier in Spanien Bauteile zu bekommen, dachte erst mei TTL tut es nicht, weil das so in einem anderen Forum stand, aber dann habe ich endlich alles sauber zum laufen bekommen und ich habe an anderer Stelle seit fast 2 Wochen kein Feedback bzgl. der openhab-Anbindung bekommen und bin frustriert! Es handelt sich ja wahrscheinlich nur um Syntax, die mir einfach fehlt..... Eine rule auf zu setzen die durch den Zustand des switches getriggert wird ist ja klar, aber dann den entsprechendne Wert in das Modbus-Register zu schreiben, damit die Pumpe angeht... sollte kein Höllenwerk sein, aber ich habe keinen Plan.
Und ich dachte -dem Thread hier folgend, dass einige das am Start haben, denn wenn Vistapool/Sugarvalley mit Tasmota und Neopool.. dann haben alle die gleichen Probleme! Aber danke, ich eröffne nachher mal einen neuen Thread. Ich dachte nur wenn die leute das Thema hier abonniert haben bekommen sie die info und melden sich vielleicht..

saludos,

oliver

Antworten