Seite 1 von 1

Sonoff S20 schaltet per MQTT aber keine .things-Datei ?

Verfasst: 30. Jun 2019 09:09
von tsch
Hallo,

ich kann nun den S20 per openHAB schalten, jedoch wollte ich ursprünglich per Paper UI ein Thing konfigurieren und dann in der .things nachsehen, wie die Syntax lautet, um dann per Editor weitere Things (S20-Switches) anzulegen.
paperui.JPG
Leider wurde keine .things Datei im entsprechenden Verzeichnis erzeugt (s. Bilder).
things.JPG
Liegt die Datei evtl. an anderer Stelle ab oder werden per Paper UI angelegte Things nicht in einer .things gespeichert?

Re: Sonoff S20 schaltet per MQTT aber keine .things-Datei ?

Verfasst: 30. Jun 2019 09:26
von sihui
tsch hat geschrieben: 30. Jun 2019 09:09 Liegt die Datei evtl. an anderer Stelle ab oder werden per Paper UI angelegte Things nicht in einer .things gespeichert?
Korrekt. Die Speicherung erfolgt in der JsonDB:
https://www.openhab.org/docs/administra ... al-editing

Re: Sonoff S20 schaltet per MQTT aber keine .things-Datei ?

Verfasst: 30. Jun 2019 10:26
von tsch
Danke für die schnelle Antwort.

Wenn ich also per Paper UI Things anlege kann ich nicht mit dem Visual Studio Code Editor und .things Dateien "arbeiten" sondern diese werde in o.g. JsonDB gespeichert.
Kann ich denn die in der JsonDB angelegten Things in ein Format bringen, damit ich diese per Editor doch in .things Ddateien weiterverarbeiten kann?
Scheint mir schneller zu gehen und ist für mich auch logischer nachzuvollziehen.

Re: Sonoff S20 schaltet per MQTT aber keine .things-Datei ?

Verfasst: 30. Jun 2019 13:26
von sihui
tsch hat geschrieben: 30. Jun 2019 10:26 Kann ich denn die in der JsonDB angelegten Things in ein Format bringen, damit ich diese per Editor doch in .things Ddateien weiterverarbeiten kann?
Ja, du musst sie vom Format her anpassen, Beispiel:

JsonDB:

Code: Alles auswählen

  "network:pingdevice:tablet_living": {
    "class": "org.eclipse.smarthome.core.thing.internal.ThingImpl",
    "value": {
      "label": "Network_tablet_living",
      "channels": [
        {
          "acceptedItemType": "Switch",
          "kind": "STATE",
          "uid": {
            "segments": [
              "network",
              "pingdevice",
              "tablet_living",
              "online"
            ]
          },
          "channelTypeUID": {
            "segments": [
              "network",
              "online"
            ]
          },
          "label": "Online",
          "description": "Gibt an ob das Gerät aktuell online oder offline ist.",
          "configuration": {
            "properties": {}
          },
          "properties": {},
          "defaultTags": []
        },
        {
          "acceptedItemType": "Number",
          "kind": "STATE",
          "uid": {
            "segments": [
              "network",
              "pingdevice",
              "tablet_living",
              "latency"
            ]
          },
          "channelTypeUID": {
            "segments": [
              "network",
              "latency"
            ]
          },
          "label": "Pingzeit",
          "description": "Gibt an wie lange ein Ping in Millisekunden an das Gerät dauert.",
          "configuration": {
            "properties": {}
          },
          "properties": {},
          "defaultTags": []
        },
        {
          "acceptedItemType": "DateTime",
          "kind": "STATE",
          "uid": {
            "segments": [
              "network",
              "pingdevice",
              "tablet_living",
              "lastseen"
            ]
          },
          "channelTypeUID": {
            "segments": [
              "network",
              "lastseen"
            ]
          },
          "label": "Zuletzt gesehen",
          "description": "Gibt Zeit/Datum an wann das Gerät zuletzt gesehen wurde.",
          "configuration": {
            "properties": {}
          },
          "properties": {},
          "defaultTags": []
        }
      ],
      "configuration": {
        "properties": {
          "hostname": "192.168.2.24",
          "refreshInterval": 30000,
          "retry": 2,
          "timeout": 5000
        }
      },
ergibt Things Datei:

Code: Alles auswählen

network:pingdevice:tablet_living [ hostname="192.168.2.24", retry=2, timeout=5000, refresh_interval=30000 ]
Die Frage die ich mir stelle: warum willst du Things in Textdateien speichern? PaperUI ist da deutlich komfortabler und für die JsonDB werden sogar automatisch Backups erstellt.
Ich habe beim Wechsel von openHAB 1.X auf 2.X auch mit diesen Textdateien herumgespielt und habe es schnell sein lassen weil es mir zu aufwändig war.

Re: Sonoff S20 schaltet per MQTT aber keine .things-Datei ?

Verfasst: 30. Jun 2019 14:44
von tsch
sihui hat geschrieben: 30. Jun 2019 13:26 Die Frage die ich mir stelle: warum willst du Things in Textdateien speichern? PaperUI ist da deutlich komfortabler und für die JsonDB werden sogar automatisch Backups erstellt.
Ich habe beim Wechsel von openHAB 1.X auf 2.X auch mit diesen Textdateien herumgespielt und habe es schnell sein lassen weil es mir zu aufwändig war.
Deine Frage ist absolut berechtigt. Wenn die Daten in der JasonDB sicher aufgehoben sind spricht natürlich nichts dagegen, diese per VSC zu editieren, statt erst mit Paper UI Things zu erstellen und diese dann per Editor aus JsonDB in .things zu importieren.

Ich werde mich zunächst mal mit der JasonDB-Syntax anfreunden und damit weitere Erfahrungen sammeln, da dies ja das von OpenHAB bevorzugte Format ist.

Vielen Dank für Deine wertvolle Hilfe.

Re: Sonoff S20 schaltet per MQTT aber keine .things-Datei ?

Verfasst: 14. Jul 2019 19:01
von udo1toni
Nein, bitte nicht.

die jsonDB ist nicht zum manuellen editieren gedacht. Dementsprechend interessiert sich openHAB auch nicht, ob die Dateien bearbeitet werden. Das heißt, man muss openHAB vor dem Editieren beenden, damit die Änderungen dann nach dem nächsten Start vorhanden sind.
Falls man die Datei in einem ungültigen Zustand zurück lässt, kann das zum völligen Stillstand von openHAB führen, da openHAB sich auch darauf verlässt, dass die Daten schon in Ordnung sein werden - schließlich ist openHAB normalerweise der einzige Bearbeiter.

Die .things Dateien sind also momentan der einzige "gute" Weg, Things per Text zu konfigurieren. VSCode kann hier auch Fehler anzeigen. Das Format ist für alle Things gleich:

Code: Alles auswählen

Bridge addon:typ:name "Label" @ "Paper PU Control Kategorie" [Parameterliste] {
 Thing typ name "Label" @ "Paper PU Control Kategorie" [Parameterliste] {
 Channels: 
   Type channeltype : name "Label" [Parameterliste] 
   }
   } 
Um die Parameter herauszufinden, schaut man entweder in der Doku nach, oder falls dort nichts hinterlegt ist, kann man die Parameter auch über die REST API Dokumentation herausfinden (wenn man mal geschnallt hat, was die JSON-Antwort bedeutet)
Es gibt noch eine zweite Form, bei der Bridge und zugeordnete Things unabhängig voneinander stehen können, auch dateiübergreifend. Diverse Schlüsselworte der Definition sind optional, weil der Kontext genügend genau ist.