Jump to content

openhab Integration


[[Template core/global/global/poll is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

Recommended Posts

Hallo,

 

hier ein kurzer Update zum Stand des Tinkerforge openHAB Bindings.

Das aktuell verfügbare TF-Binding wird nicht weiterentwickelt! Es wird aber auch weiterhin mit neuen OH2 Versionen funktionieren und ausgeliefert werden! Als OH1 Binding wird es im Kompatibilitätsmodus ausgeführt, kann aber die OH2 Features nicht nutzen. Ausserdem gibt es weitere technische Gründe, die eine Weiterentwicklung unmöglich machen.

Deshalb wird es einen Nachfolger als natives openHAB2 Binding geben. Was sehr gut ist, da damit z.B. auch Autodiscovery funktionieren wird. Ich habe schon Anfang 2018 mit der Entwicklung begonnen, musste aber leider für ein paar Monate pausieren, da mir schlichtweg die Zeit fehlte. Jetzt geht es aber weiter.

Es gibt einen Snapshot des aktuellen Entwicklungsstands des neuen Tinkerforge OH2 Bindings. Der aktuelle Download ist als Tech-Preview zu verstehen, ist also im Alpha-Status an dem sich auch noch braking changes ergeben können. Natürlich fehlt auch noch vieles. Unter Umständen funktioniert es bei euch sogar gar nicht, was für mich auch eine wichtige Rüçkmeldung wäre. Wer es ausprobieren möchte - was ich Zwecks Rückmeldung sehr gut fände - kann das Binding hier herunterladen:

https://bintray.com/theoweiss/generic/download_file?file_path=org.openhab.binding.tinkerforge-2.4.0-SNAPSHOT.jar

 

Bitte testet das Binding in einer Testinstallation und nicht in eurem Produktivsystem. Zum Installieren die jar-Datei einfach in den addons Ordner einer OH2 2.3 Installation legen.

 

Aktuell werden folgende Bricklets unterstützt:

BrickletTemperature

BrickletLoadCell

BrickletAmbientLightV2

BrickletHumidityV2

BrickletMotionDetectorV2

BrickletRealTimeClock

BrickletRotaryEncoder

BrickletVoltageCurrent

BrickletDistanceUS

 

Das BrickletOutdoorWeather ist in Arbeit, braucht aber noch etwas Zeit. Schreibt einfach welche Bricklets ihr gerne als nächstes im Binding haben wollt. "Einfache" Sensor-Bricklets kann ich vorraussichtlich relativ einfach hinzufügen.

 

Es ist ein OH2 Binding und unterstützt deshalb auch Autodiscovery.

Zum Konfigurieren geht ihr so vor:

- öffnet das PaperUI

- geht zur Inbox

- Drückt den "+" Button

- wählt das "Tinkerforge Binding" aus

- wählt "Brickd" aus

- gebt die IP-Adresse in das Feld "Network Address" ein

- Save

- verbundene und unterstützte Bricklets sollten in der Inbox auftauchen und können hinzugefügt werden

 

Ich bin gespannt auf eure Rückmeldung.

 

Gruß,

Theo

 

Hallo,

wo kann man den Quellcode laden, ich will mir das Addon selbst kompilieren?

Link zu diesem Kommentar
Share on other sites

  • Replies 526
  • Created
  • Letzte Antwort

Top Posters In This Topic

  • 2 weeks later...

Es gibt einen neuen SNAPSHOT der folgende Bricklets unterstützt:

 

"BrickletOutdoorWeather",

"BrickletTemperature",

"BrickletLoadCell",

"BrickletSoundIntensity",

"BrickletSoundPressureLevel",

"BrickletAmbientLight",

"BrickletAmbientLightV2",

"BrickletIndustrialDualAnalogIn",

"BrickletIndustrialDualAnalogInV2",

"BrickletPTC",

"BrickletBarometer",

"BrickletBarometerV2",

"BrickletHumidity",

"BrickletHumidityV2",

"BrickletMotionDetector",

"BrickletMotionDetectorV2",

"BrickletRealTimeClock",

"BrickletRealTimeClockV2",

"BrickletRotaryEncoder",

"BrickletVoltageCurrent",

"BrickletVoltageCurrentV2",

"BrickletDistanceUS"

 

https://bintray.com/theoweiss/generic/download_file?file_path=org.openhab.binding.tinkerforge-2.5.0-SNAPSHOT.jar

 

Vielen Dank Uwe @duaw für das Testen! Hier ein paar Antworten zu deinen Beobachtungen:

Die Heizung des Humidity Bricklets funktionieren noch nicht, da ich Aktoren noch nicht implementiert habe. Das kommt noch. Der Button des BrickletRotaryEncoder ist jetzt als Trigger Channel implementiert. Wie man diese verwendet ist hier dokumentiert: https://www.openhab.org/docs/configuration/items.html Das ändern der Sensorwerte sollte im PaperUI jetzt nicht mehr möglich sein. Vielen dank für die Hinweise, das hat sehr geholfen.

Link zu diesem Kommentar
Share on other sites

Hallo Theo,

 

über die PaperUI von OpenHAB 2.4 konnte ich folgende Bricklets einbinden und erhalte Messwerte:

 

BrickletMotionDetectorV2

BrickletAmbientLightV2

BrickletHumidityV2

BrickletTemperature

 

Darüber hinaus habe ich noch folgende Bricklets angeschlossen, die nicht in der Autodiscovery erscheinen, weil sie vom neuen Tinkerforge-Bindung (noch) nicht unterstützt werden:

 

BrickletSegmentDisplay

BrickletBarometer

BrickletHumidity

BrickletLCD20x4V1.2

BrickletPTCV2

BrickletRemoteSwitchV2

 

Die Konfiguration in der PaperUI war problemlos. Wie müsste ich das syntaktisch richtig in things- und item-Dateien übertragen? Mir ist nicht klar, wie ich die Parameternamen korrekt aus den Things und Channels errate, damit ich die Konfiguration überführen kann.

 

Viele Grüße

Peter

 

Link zu diesem Kommentar
Share on other sites

Hallo Peter,

 

wenn du den neuesten SNAPSHOT verwendest müssten auch Barometer und Humidity Bricklet funktionieren. Hast du sicher diesen SNAPSHOT verwendet?

 

Wie du die Items erstellst kannst du hier in der Doku finden: https://www.openhab.org/docs/tutorial/sitemap.html Prinzipiell ist es so, dass das PaperUI in der Standardkonfiguration direkt items erstellt sobald du das Bricklet hinzufügst. Du musst also nur noch eine Sitemap machen: https://www.openhab.org/docs/tutorial/sitemap.html Dazu kannst du z.B. den VSCode Editor mit der openHAB Extension verwenden. https://www.openhab.org/docs/configuration/editors.html#openhab-vs-code-extension

 

Grüße,

Theo

 

Link zu diesem Kommentar
Share on other sites

Hallo Theo,

 

das Anlegen einer Sitemap mit den in der PaperUI erzeugten Things und Items hat funktioniert. Mit meiner Frage ist es mir aber darum gegangen, Things und Items nicht unbedingt in der PaperUI anzulegen, sondern in *.things- und *.items-Dateien. Dadurch ist ein Sichern und Wiederherstellen der Konfiguration sehr einfach. Oder wie gehst Du vor, damit bei einem neuen Setup nichts erneut in der PaperUI konfiguriert werden muss?

 

Ich habe übrigens Deinen Snapshot 2.5.0 eingespielt und die zusätzlich unterstützten Bricklets sind sofort in der Inbox aufgetaucht.

 

Allerdings fallen mir folgende Abweichungen auf, wenn ich die Bricklets im Vergleich mit Deinem V1-Binding ansteuere:

 

1) Die Messwerte von BrickletHumidityV2 und BrickletHumidity werden in der Sitemap um einen Faktor 100 zu groß angezeigt. Dabei verwende ich label="Luftfeuchtigkeit [%.1f %%]". In der PaperUI habe ich das Item als Number:Dimensionless konfiguriert und sehe unter Control den ganzzahligen Prozentwert. Insofern verstehe ich schon, warum ein Faktor 100 entsteht, da die Zahl 1 für 100% steht und dementsprechend zB 20.95 als 2095% Prozent dargestellt werden. Vermutlich müsste ich das Item in der PaperUI anders konfigurieren. Aber bei einer Durchsicht der Datentypen fand ich keinen Wert, der für Prozent stehen könnte.

 

2) Merkwürdigerweise zeigt BrickletAmbientLightV2 in einem dunklen Raum etwa 231 lx an; wenn ich das Bricklet über das alte Binding ansteuere, erhalte ich plausible 0,01 lx. Ich habe das Bricklet mit den Defaultwerten konfiguriert, ohne irgendwelche Meßbereichezu konfigurieren.

 

3) Das BrickletBarometer hat mir in der Autodiscovery AirPressure und Altitude angeboten, nicht aber Temperature, welche an und für sich auch verfügbar ist. Ist das bloß noch nicht unterstützt oder ein Fehler?

 

Viele Grüße

Peter

 

Link zu diesem Kommentar
Share on other sites

Hallo Theo,

 

ptc ok, humidityv2 ok (mit richtigen Prozenten in Control des PaperUI), motiondetector ok, barometer ok, soundintensity ok

 

allerdings geht realtimeclock nicht mehr (zeigt NaN, im Brickviewer ok)

 

Und das Kopieren des neuen Bindings in addons allein hat bei mir nicht gereicht. Nach Löschen von /var/lib/openhab2/cache und .../tmp hat es funktioniert

 

Gruß und Danke, Uwe

 

Link zu diesem Kommentar
Share on other sites

Hallo Peter,

 

für meine Tests werfe ich tatsächlich sogar die jsondb weg und konfiguriere immer neu. Das heisst eigentlich muss ich nur das brickd-Thing neu anlegen und die Things für die Bricklets über das Autodiscovery hinzufügen.

Zu den Punkten 1-3 schreib ich sobald ich mir die Sachen genauer angesehen habe.

 

Gruß,

Theo

 

Link zu diesem Kommentar
Share on other sites

Hallo, Theo,

 

Du schreibst: "... der Datentyp von Number auf DateTime geändert. Vermutlich musst du das Thing löschen und neu anlegen."

 

Hmmm. Das habe ich getan. Es wird als online angezeigt. Als DateTime. Aber "Control" des PaperUI zeigt jetzt ein BrickletRealTimeClock mit der DateTime "-" an... (Eine sitemap habe ich nicht angelegt. Im PaperUI müsste es ja stimmen.)

 

Und eine Frage: Mit den alten 1-er Bindings habe ich die IP-Adressen der Bricklets aufgelistet. Dann wurde Bricklet XYZ anhand der UID gefunden.

 

Jetzt muss ich zwingend für das Thing angeben, an welcher TF-IP-Nummer (Brickd) es steckt. Hat das einen Grund ? (Ausser, dass die Realisierung einfacher ist?)

 

Und noch eine Frage: Wenn das Bricklet unerreichbar ist, muss ich das selber feststellen, oder? (Ich behelfe mir mit einem Thing  "Zuletzt Gesehen der IP-Adresse")

Es kommt nicht irgendwann ein Wechsel zu NULL oder was auch immer?

 

Gruß, Uwe

 

 

Link zu diesem Kommentar
Share on other sites

Hallo Uwe,

 

Hmmm. Das habe ich getan. Es wird als online angezeigt. Als DateTime. Aber "Control" des PaperUI zeigt jetzt ein BrickletRealTimeClock mit der DateTime "-" an... (Eine sitemap habe ich nicht angelegt. Im PaperUI müsste es ja stimmen.)

Das PaperUI ist manchmal etwas zickig, kannst du es mit einer Sitemap probieren? Im Zweifel kannst du auch die jsondb wegwerfen, allerdings ist deine Konfiguration dann auf null gestellt.

 

Und eine Frage: Mit den alten 1-er Bindings habe ich die IP-Adressen der Bricklets aufgelistet. Dann wurde Bricklet XYZ anhand der UID gefunden.

 

Jetzt muss ich zwingend für das Thing angeben, an welcher TF-IP-Nummer (Brickd) es steckt. Hat das einen Grund ? (Ausser, dass die Realisierung einfacher ist?)

 

Mir ist dein Vorgehen hier nicht wirklich klar. Da das Binding autodiscovery unterstützt musst du nur das/die brickd-Things konfigurieren. Die Bricklets werden dann automatisch erkannt.

 

Und noch eine Frage: Wenn das Bricklet unerreichbar ist, muss ich das selber feststellen, oder? (Ich behelfe mir mit einem Thing  "Zuletzt Gesehen der IP-Adresse")

Es kommt nicht irgendwann ein Wechsel zu NULL oder was auch immer?

 

Den Bricklet-Life-Cycle habe ich noch nicht komplett implementiert. Bisher wird nur erkannt, wenn ein Bricklet auftaucht. Die Implementierung für das Offline gehen kommt noch.

 

Gruß,

Theo

 

Link zu diesem Kommentar
Share on other sites

Ok, jetzt geht auch realtimeclock wie erwartet.

 

Meine andere Frage ist war wie folgt:

 

Autodiscover geht natürlich. Alles in der in-box, dann als Thing im Paper UI ganz automatisch ...

... unter "Name" steht "realtimeclock"

... unter "Location" "Bridge Selection" Brickd - tinkerforge:brickd:69eea0f

... unter Configuration Parameters dann "xNx"

 

In der sitemap verwende ich  den Namen des Things.

 

Mein item in .items ist zunächst (Copy/Paste aus dem Paper-UI)

DateTime datumZeit { channel="tinkerforge:realtimeclock:69eea0f1:xNx:datetime" }

 

gewesen Ich sehe aber gerade (Versuch macht kluch!), dass ich auch nur

 

DateTime datumZeit { channel="tinkerforge:realtimeclock:xNx:datetime" }

 

schreiben kann! Damit hat sich die Frage geklärt!

 

Sollte ich das Bricklet jetzt an einen anderen Brick anstecken, dann muss ich das item nicht anfassen. Und so sollte das sein  :)

 

Ach:

Nach dem manuellen Löschen von Things (aller Things, tlw. mit force remove), dem Hinzufügen der Brickd things und der entdeckten things sehe ich massig Meldungen im log wie

 

Handler RealTimeClockBrickletHandler of thing tinkerforge:realtimeclock:f33aed9d:xNx tried updating channel datetime although the handler was already disposed.

 

Irgendwer hat da irgendwie das Löschen nicht mitgekriegt, oder?

 

Gruß, Uwe

Link zu diesem Kommentar
Share on other sites

Ein neuer Snapshot mit neuen Bricklets:

 

MultiTouch Bricklet (die Channels sind TriggerChannel)

 

Und die ersten Aktoren sind im Binding:

 

DualRelay Bricklet

IndustrialQuadRelay Bricklet

IndustrialQuadRelayV2 Bricklet

IndustrialDualRelay Bricklet

SolidStateRelay Bricklet

SolidStateRelayV2 Bricklet

 

https://bintray.com/theoweiss/generic/download_file?file_path=org.openhab.binding.tinkerforge-2.5.0-4-SNAPSHOT.jar

 

Feedback wie immer erwünscht.

Link zu diesem Kommentar
Share on other sites

Hallo, Theo,

 

ich stoppe oh2, kopiere das binding nach

/usr/share/openhab2/addons

lösche brutal die Verzeichnisse

cache json tmp

in

/var/lib/openhab2

starte oh2 und sehe

 

2019-01-25 16:33:00.942 [WARN ] [org.apache.felix.fileinstall        ] - Error while starting bundle: file:/usr/share/openhab2/addons/org.openhab.binding.tinkerforge-2.5.0-5-SNAPSHOT.jar
org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.tinkerforge [191]
  Unresolved requirement: Import-Package: org.eclipse.jdt.annotation
at org.eclipse.osgi.container.Module.start(Module.java:444) ~[?:?] ... 

 

Das passiert mir mit den letzten Versionen 4 und 5.

 

Was mache ich jetzt falsch???

 

Gruß, Uwe

Link zu diesem Kommentar
Share on other sites

Es gibt einen neuen Snapshot mit Fixes für das NFC Bricklet, dieses hat nur funktioniert wenn der BrickViewer geöffnet war und das NFC Bricklet im Mode Reader war. Achtung beim Testen, hier kommen sich das Binding und der BrickViewer in die Quere.

 

Ausserdem habe ich das life cycle Verhalten der Things verbessert. Diese gehen jetzt in den Offline Mode sobald man einen per USB angeschlossenen Brick-Stapel trennt und wieder Online beim erneuten Anschließen.

 

https://bintray.com/theoweiss/generic/download_file?file_path=org.openhab.binding.tinkerforge-2.5.0-7-SNAPSHOT.jar

 

 

Link zu diesem Kommentar
Share on other sites

Super, Theo!

 

Kurzes Feedback:

 

-- BrickletBarometer zeigt -NaN bei "temperature" in Paper-UI/Control, richtig in Brickv (Muss noch sitemap machen ...)

 

-- RotaryEncoder zeigt nach (Neu-) Start von oh2 -NaN bei count (Ist das immer so? Sollte 0 sein.)

 

-- humidity-Bricklet zeigt -NaN (gerade jetzt bei 100% Luftfeuchte, korrekt im Brickv und im alten Binding auf Produktiv-Maschine)

 

-- von meinen 4 PTC (am selben Master) ist einer -NaN im Paper-UI, der und ein weiterer OFFLINE in der Things-Liste (aber alle korrekt im Brickv und im alten Binding

Zu einem ptc gibt es die Meldung im log:

 

019-01-26 11:41:37.613 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler PTCBrickletHandler of thing tinkerforge:ptc:37129507:qbK tried updating channel temperature although the handler was already disposed.

 

-- auch nach manuellem Löschen/Hinzufügen von ptc mit UID qbK bleibt die Meldung mit 1Hz im log. Das thing ist aber da.

 

-- Beim Autodiscover wird das thing mit Namen "ptc" entdeckt. Beim manuellen Anlegen wird das Thing im Paper-UI mit Namen "BrickletPTC" vorgeschlagen. Der Name sollte in beiden Fällen gleich sein.

 

-- Ich empfinde es als unvorteilhaft, wenn Things gleicher Art erkannt werden und alle im PaperUI den gleichen Namen haben  "ptc-<UID>" wäre doch schön, oder? Und für die Brickd-Things auch eine Unterscheidung ? (Ich hänge immer die letzte IP-Nummer dran)

 

-- (Kosmetik) ptc Wiremode könnte auf 2/3/4 begrenzt werden (es steht nix da und alle ganzen Zahlen sind möglich. Wird das auf default 2 gesetzt? Die Doku sagt: "Zusätzlich muss die Leiteranzahl mit Hilfe der API gesetzt werden.")

 

-- Ist intensity (Sound) "Number" oder "Number:Dimensionless" ?

 

(-- Und ich hätte echt gedacht, dass es für "Luft-Feuchte" auch eine Einheit gibt.)

 

--dualrelay tickt richtig, industrialquad sieht gut aus

 

Gruß, Uwe

 

 

 

Link zu diesem Kommentar
Share on other sites

Hallo Uwe,

 

vielen Dank für dein ausführliches Feedback!

Bisher wurde die Konfiguration noch nicht an die Bricklets übergeben, d.h. sie liefen entweder mit den Defaults oder mit dem, was du im BrickViewer konfiguriert hast. Im Falle von Ptc heißt das wireMode 2. Das Konfigurationshandling habe ich jetzt fast fertig und werde mich dann den anderen von dir genannten Dingen widmen. Sobald das fertig ist gibt es einen neuen Snapshot.

 

Gruß,

Theo

 

Link zu diesem Kommentar
Share on other sites

Hallo Theo,

 

Bisher läuft bei mir ein OpenHAB V1.8 mit viele TF Komponenten produktiv und eine OpenHAB V2.3 als Entwicklungssystem.

 

Nach einem Fehlversuch hab ich jetzt mein Testsystem mit dem neuen Binding am laufen.

 

(RasperryPI II openhabian V1.4.1)

 

Aktuell hab ich einen Stapel mit

2xMasterbrick (beide HW 2.1 mit FW 2.4.9) mit folgenden Bricklet‘s

1x16fach IO (FW 2.0.6)

2xIndustrialQuadRelay 2.0 (FW 2.0.1)

1xHumidity Bricklet 2.0 (FW2.0.3)

1xHumidity Bricklet 1.x (FW2.0.2)

 

Theo, gibt es auch weiterhin die Möglichkeit über einen Konfig-File unter ../services zu arbeiten ? Wenn ja wie müsste ich die Komponenten dort definieren ?? (vor allem die neuen). Mir persönlich ist der Konfigfile unter services lieber, denn dort habe ich einen bessern Überblick über die Parameter (Bricklet ID usw).

Aktuell bin ich noch am testen, wenn mir etwas auffällt melde ich mich hier.

 

@Thema Wunschliste Bricklets :

- 16 Fach IO (dieses nutze ich in meiner produktiven OpenHAB 1.8 Umgebung mehrfach)

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...