Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - rtrbt

Pages: [1]
1
General Discussion / Beta version of the openHAB bindings
« on: September 12, 2019, 11:50:58 »
Hi,
I've spent the last months extending our binding generator to be able to generate openHAB bindings. The eleventh beta version can be found here.

Here are the contents of the README file:
Installation:
    The bindings require an openHAB 2.5.0 Milestone/Snapshot installation. To install the bindings, just copy the JAR into the addons directory of your installation. openHAB will then load the bindings. Afterwards you can add a Brick Daemon over the inbox.
   
Configuration:
    Attached devices are automagically put into the inbox after adding the Brick Daemon instance. Devices that are not supported (yet) are marked in their description. To make keeping track easier, these devices can be hidden.
   
    Bricklets and channels can be configured: Channels typically allow changing the update rate. Some Bricklet's configuration can show/hide channels, for example the IO-4/16's pin configuration will dynamically create input or output channels. Sometimes the PaperUI needs to be refreshed by pressing F5 to show new channels.
   
    Only configuration that is stored in a Bricklet's RAM is supported. Persistant configuration has to be set externally (e.g. by using Brick Viewer), because openHAB will often reconfigure Bricklets, for example on startup or when reconnected to a Brick Daemon. Writing persistant configuration would then take too many write-cycles.
   
Further documentation:
    Can be found in the doc subfolder of the bindings. Supported configuration parameters and channels are listed there per device.
   
Display Bricklets:
    Text can be set as follows: [line],[position],[text]. Further ',' after the first two are handled as part of the text. In the text you can use the display's character set directly with \x[two hex digits]. Unicode characters are furthermore mapped to the display character set, as is done in the code examples, see f.e. here:  https://www.tinkerforge.com/en/doc/Software/Bricklets/LCD20x4_Bricklet_Java.html#unicode
   
    As an example 1,2,Hello, opεnH\xE0B! will print Hallo, opεnHαB! stating at line 1, column 2 on an LCD 20x4. The small epsilon was mapped from Unicode into the LCD character set, 0xE0 (224) is the small alpha.
   
    PaperUI truncates whitespace at the start and end of commands. So to clear (parts of) a line, you can not use f.e. 1,2,[spaces]. Instead you can use the empty character like this 1,2,\xFE\xFE\xFE to delete three characters at Line 1, Column 2.
   
Missing features:
    Channels accept one CommandType only. For example the LED of an RGB LED Button Bricklet can only be set using an HSBType, not the others that openHAB expects support for (e.g. if only the brightness is changed, an PercentType is sent).
   
    For displays: Currently only text output, clearing the display and control of the backlight is possible. I'm working on other features such as the LCD 120x64's GUI or drawing pictures by setting pixels, as the generator does not support actions yet.
   
    Some channels (f.e. the PTC Bricklet's Sensor Connected channel) only refresh their value if an RefreshCommand is explicitly sent. This is not documented yet.
   
Known Bugs:
    The bricklet configuration shows a Bridge Selection, but not the (already configured) Brick Daemon. Editing this throws exceptions.
   
    Display Bricklets show '-' as text (NULL if clicked), if no text was already set using the UI.
   
    The display unicode to character set translation uses the character set of the LCD 20x4 for all displays.
   
    PaperUI does not show descriptions of channel(types) and configuration parameter groups. These are listed in the doc subfolder per device.
   
    Removing non-attached devices sometimes doesn't work: The device handler tries to clean up be deactivating callbacks, if the device can not be reached, this throws TimeoutExceptions that are currently not handled.
   
    The generated code must be improved: Compiling raises a lot of warnings, Listener(de)registrations can be duplicated.
   
Unknown Bugs:
    If you find another bug, please attach the openHAB Log. This can be found in the userdata/logs folder of your openHAB installataion. If the bug is reproducable, you can try to increase the log level with log:set TRACE org.openhab.binding.tinkerforge in the karaf console. Maybe this will show more useful information. log:exception-display can help too. If there are errors shown in the PaperUI, they can be investigated using the web developer tools of your browser. Run the network monitor, reload the page and take a look at the responses of requests with status code 500. log:exception-display (in the karaf console) could be useful here too.
   
Devices, that are not supported yet:
    DC Brick
    Master Brick
    RED Brick
    Servo Brick
    Silent Stepper Brick
    Stepper Brick
    CAN Bricklet
    CAN 2.0 Bricklet
    DMX Bricklet
    E-Paper 296x128 Bricklet
    NFC Bricklet
    NFC-RFID Bricklet
    One Wire Bricklet
    Piezo Buzzer Bricklet
    Piezo Speaker Bricklet
    Piezo Speaker 2.0 Bricklet
    Remote Switch Bricklet
    Remote Switch 2.0 Bricklet
    RS232 Bricklet
    RS232 2.0 Bricklet
    RS485 Bricklet

Devices, that are only partially supported yet:
    IO4 2.0 Bricklet # PWM Support missing
    LCD 16x2 Bricklet # See Display Bricklets paragraph
    LCD 20x4 Bricklet # See Display Bricklets paragraph
    LCD 128x64 Bricklet # See Display Bricklets paragraph
    OLED 64x48 Bricklet # See Display Bricklets paragraph
    OLED 128x64 Bricklet # See Display Bricklets paragraph
    OLED 128x64 2.0 Bricklet  # See Display Bricklets paragraph

2
Allgemeine Diskussionen / Betaversion der openHAB-Bindings
« on: September 05, 2019, 14:25:43 »
Moin,

Ich habe die letzten Monate daran gearbeitet, unseren Binding-Generator so aufzubohren, dass auch openHAB-Bindings generiert werden können. Die elfte Beta findet sich hier.

Edit: Beta 11 mit Backlight-Channel für das LCD 128x64.

Hier der Inhalt der README:
Installation:
    Die Bindings benötigen eine openHAB 2.5.0 Milestone/Snapshot Installation.
    Zum Installieren reicht es, die JAR in das addons-Verzeichnis zu kopieren.
    Nachdem openHAB das Addon geladen hat (das kann einen Moment dauern), kann
    über die Inbox ein Brick Daemon hinzugefügt werden.

Konfiguration:
    Nachdem der Brick Daemon hinzugefügt wurde, werden angeschlossene Geräte
    automagisch in die Inbox gelegt. Nicht unterstützte Geräte haben "This
    device is not supported yet." in der Beschreibung. Zwecks Übersicht können
    diese versteckt werden.

    Sowohl Bricklets als auch Channels können Konfiguration haben: Channels
    typischerweise die Aktualisierungsrate (Default: 1s). Die
    Brickletkonfiguration kann Channels anzeigen/verstecken, z.b. erzeugt die
    Pinkonfiguration der IO-4/16 Input/Output-Channels je nachdem, ob ein Pin
    auf Input oder Output konfiguriert wurde. Die PaperUI braucht manchmal eine
    Aktualisierung per F5, damit neue Channels angezeigt werden.

    Es kann nur Konfiguration gesetzt werden, die im RAM des Bricklets
    gespeichert wird. Persistente Konfiguration muss extern (z.b. mit dem Brick
    Viewer) gesetzt werden, da openHAB diese jedes Mal schreiben würde, wenn
    openHAB startet, oder die Verbindung zum Brick Daemon wiederhergestellt
    wurde usw. Das kostet zu viele Flash-Schreibzyklen.

Weitere Dokumentation:
    Findet sich im doc-Unterordner der Bindings. Dort sind pro Gerät die
    unterstützten Konfigurationsparameter und Channel mit Beschreibung
    aufgelistet.
   
Display-Bricklets:
    Text wird auf folgende Weise gesetzt: [line],[position],[text].
    Weitere ',' nach den ersten beiden werden als Teil des Textes behandelt.
    Der Text kann mit \x[zwei Hex-Ziffern] das Character-Set des Displays
    verwenden. Zusätzlich werden Unicode-Zeichen so gut es geht auf das
    Display-Character-Set abgebildet, wie das auch in den Code-Beispielen
    passiert, siehe z.B. hier: https://www.tinkerforge.com/de/doc/Software/Bricklets/LCD20x4_Bricklet_Java.html#unicode
   
    Beispielsweise gibt 1,2,Hallo, opεnH\xE0B! auf einem LCD 20x4 in
    Zeile 1, Spalte 2 aus: Hallo, opεnHαB!
    Das kleine Epsilon wurde von Unicode in das LCD-Character-Set übersetzt,
    0xE0 (224) entspricht dem kleinen Alpha.
   
    Die PaperUI scheint Leerzeichen am Rand des Commands abzuschneiden.
    Um (Teile) einer Zeile zu löschen kann also nicht ein Befehl wie
    1,2,[Leerzeichen] verwendet werden. Stattdessen kann 1,2,\xFE\xFE\xFE
    benutzt werden um in Zeile 1, Spalte 2 drei Zeichen zu löschen.
   
Fehlende Features:
    Channels akzeptieren nur einen CommandTypen, d.h. z.B. LED des
    RGB LED Button Bricklets nimmt nur HSBType an, nicht die anderen, die von
    openHAB erwartet werden (wie PercentType wenn die Brightness geändert wird)
   
    Für Displays: Aktuell ist nur Textausgabe, Clearen des Displays und
    Kontrolle des Backlights möglich. Weitere Funktionen wie GUI und Anzeigen
    von Bildern (also Setzen von Pixel) sind in Arbeit: Der Generator
    unterstützt zur Zeit noch keine Actions.
   
    Manche Channel (z.B. Sensor Connected der PTC-Bricklets) aktualisieren
    ihren Wert nur, wenn ein RefreshCommand gesendet wird. Das ist aktuell
    nicht dokumentiert.

Bekannte Bugs:
    Brickletkonfiguration zeigt Bridge Selection an, aber nicht den
    (bereits konfigurierten) Brick Daemon. Editieren wirft Fehler.

    Display Bricklets zeigen auf der Übersichtsseite, solange noch kein Text
    gesendet wurde, '-' als Text an, wenn darauf geklickt wird NULL.
   
    Die Displayübersetzung benutzt im Moment für alle Displays das
    Character-Set vom LCD 20x4.

    PaperUI zeigt die Description von Channel(Typen) und
    Konfigurationsparameter-Gruppen nicht an. -> Sind im docs-Unterorder pro
    Gerät aufgeführt.

    Löschen von nicht angeschlossenen Geräten funktioniert nur manchmal: Der
    DeviceHandler versucht aufzuräumen, z.b. Callbacks zu deaktivieren. Falls
    das Gerät nicht erreicht wird, fliegen hier Timeouts. Das wird aktuell
    nicht korrekt behandelt.

    Generierter Code muss noch verbessert werden. Kompilieren erzeugt viele
    Warnungen, Listener(de)registrierungen werden teilweise dupliziert.

Unbekannte Bugs:
    Falls ein anderer Bug auftritt, bitte das openHAB-Log mit anhängen. Das Log
    findet sich im userdata/logs-Verzeichnis der openHAB-Installation. Falls der
    Bug reproduzierbar ist, kann mit log:set TRACE org.openhab.binding.tinkerforge
    (in der Karaf-Konsole) das LogLevel erhöht werden, dann erscheinen eventuell
    weitere hilfreiche Informationen im Log. Außerdem hilfreich ist
    log:exception-display. Falls Fehler in der PaperUI angezeigt werden,
    können diese mit der Netzwerkanalyse der Web-Entwickler-Tools untersucht
    werden. Dann mit laufender Analyse die Seite neuladen und die Antworten von
    Anfragen mit Statuscode 500 ansehen. Eventuell hilft hier auch
    log:exception-display.

Noch nicht unterstützte Geräte:
    DC Brick
    Master Brick
    RED Brick
    Servo Brick
    Silent Stepper Brick
    Stepper Brick
    CAN Bricklet
    CAN 2.0 Bricklet
    DMX Bricklet
    E-Paper 296x128 Bricklet
    NFC Bricklet
    NFC-RFID Bricklet
    One Wire Bricklet
    Piezo Buzzer Bricklet
    Piezo Speaker Bricklet
    Piezo Speaker 2.0 Bricklet
    Remote Switch Bricklet
    Remote Switch 2.0 Bricklet
    RS232 Bricklet
    RS232 2.0 Bricklet
    RS485 Bricklet

Nur teilweise unterstützte Geräte:
    IO4 2.0 Bricklet # PWM Support fehlt. Modellierung? (Frequenz/Duty Cycle als Channel, Konfiguration oder komplexer Channel mit Parsing wie bei Displays, eventuell Action?)   
    LCD 16x2 Bricklet # Siehe Display-Bricklets-Abschnitt
    LCD 20x4 Bricklet # Siehe Display-Bricklets-Abschnitt
    LCD 128x64 Bricklet # Siehe Display-Bricklets-Abschnitt
    OLED 64x48 Bricklet # Siehe Display-Bricklets-Abschnitt
    OLED 128x64 Bricklet # Siehe Display-Bricklets-Abschnitt
    OLED 128x64 2.0 Bricklet  # Siehe Display-Bricklets-Abschnitt
   

3
General Discussion / Beta release of the MQTT bindings
« on: January 24, 2019, 16:22:24 »
Hi,

As of today, a beta version of the MQTT bindings 2.0 is available. Please tinker around with them and post any bugs, suggestions and other feedback here.

The MQTT bindings are now generated like other programming language bindings. All Bricks and Bricklets are supported. The bindings map directly to the Python bindings, which is why they are not backwards-compatible to the old MQTT proxy. The MQTT proxy is now discontinued.

The current version of the bindings is attached to this post, including examples.

The bindings depend on Python >= 2.7.9 or >= 3.4 and the Paho library (>= 1.3.1) available here.

The documentation can be found here

Have a lot of fun!

Erik

Edit:
Version 2.0.1
- Fix handling of JSON errors for Python 2

4
Allgemeine Diskussionen / Betaversion der MQTT-Bindings 2.0
« on: January 24, 2019, 16:21:14 »
Moin,

Seit heute ist eine Beta-Version der MQTT-Bindings 2.0 verfügbar. Experimentiert damit, wir freuen uns auf Feedback, Bugs und mehr.

Die MQTT-Bindings werden jetzt, genau wie die Bindings anderer Programmiersprachen, automatisch generiert. Alle Bricks und Bricklets werden unterstützt. Die Bindings bilden die API der Python-Bindings ab, weshalb sie nicht rückwärtskompatibel zur alten MQTT-Proxy sind. Die MQTT-Proxy ist damit abgekündigt.

Die aktuellen Bindings, sowie Beispiele im examples-Ordner, sind angehangen.

Die Bindings hängen von Python >= 2.7.9 oder >= 3.4 und der Paho-Bibliothek (>= 1.3.1), die hier verfügbar ist, ab.

Die Dokumentation ist hier zu finden

Viel Spaß!

Erik

Edit:
Version 2.0.1:
- Fehlerbehandlung für JSON-Fehler in Python 2 überarbeitet.

5
General Discussion / Beta release of the Go bindings
« on: December 21, 2018, 12:39:34 »
Hi,

As of today, a beta version of the Go bindings is available. Please tinker around with them and post any bugs, suggestions and other feedback here.

The current version of the bindings is attached to this post, including example sources. The bindings can also be installed with
Code: [Select]
go get github.com/Tinkerforge/go-api-bindings
There are no further dependencies except the Go compiler.

The documentation on the Tinkerforge home page is not visible yet, as it is still work in progress, but a complete API documentation is available here

Have a lot of fun!

Erik

Edit: I've attached version 2.0.1, which should also work on 32 bit systems (for example the Raspberry Pi).

6
Allgemeine Diskussionen / Betaversion der Go-Bindings
« on: December 21, 2018, 12:36:57 »
Moin,

Seit heite ist eine Beta-Version der Go-Bindings verfügbar. Experimentiert damit, wir freuen uns auf Feedback, Bugs und mehr.

Die aktuellen Bindings, sowie Beispiele im examples-Ordner, sind angehangen. Die Bindings können auch mit
Code: [Select]
go get github.com/Tinkerforge/go-api-bindings installiert werden.

Außer dem Go-Compiler werden keine weiteren Abhängigkeiten benötigt.

Die Dokumentation für die Tinkerforge-Seite ist noch in Arbeit und deshalb nicht sichtbar, es gibt aber hier eine vollständige Dokumentation der API.

Viel Spaß!

Erik

Edit: Jetzt ist Version 2.0.1 angehangen, die auch auf 32-Bit-Systemen (z.b. dem Raspberry Pi) funktionieren sollte.

7
General Discussion / Beta release of the rust bindings
« on: November 09, 2018, 11:35:21 »
Hi,

As of yesterday, a beta version of the rust bindings is available. Please tinker around with them and post any bugs, suggestions and other feedback here.

The current version of the bindings is attached to this post, including example sources and an example project, which enumerates connected devices. The bindings can also be installed using Cargo by listing tinkerforge = "2.0" in the [dependencies] secion of a project's Cargo.toml.

The bindings require a nightly version of the rust compiler, or the current beta release (version 1.31), which will be released as stable on the 7th of december, according to the road map. The beta can be installed with rustup install beta and then can be used with cargo +beta build. Also it is possible to set the beta as the default compiler with rustup default beta, which allows compiling without additional arguments.

Nearly all get and set functions and callback registrations are asynchronous, as they return a wrapper around a Receiver, that converts received bytes into structured data. More information can be found in the binding's readme and here. The documentation on the Tinkerforge home page is not visible yet, as it is still work in progress.

Have a lot of fun!

Erik

8
Allgemeine Diskussionen / Betaversion der Rust-Bindings
« on: November 09, 2018, 11:32:21 »
Moin,

Seit gestern ist eine Beta-Version der Rust-Bindings verfügbar. Experimentiert damit, wir freuen uns auf Feedback, Bugs und mehr.

Die aktuellen Bindings, sowie Beispiele im examples-Ordner, sind angehangen. Außerdem habe ich ein Beispielprojekt angehangen, das mit den Bindings alle angeschlossenen Bricks und Bricklets auflistet. Die Bindings können aber auch als Crate von Cargo installiert werden, wenn in der Cargo.toml tinkerforge = "2.0" unter den [dependencies] aufgeführt wird.

Unterstützt werden nightly-Versionen des Rust-Compilers oder die aktuelle Beta 1.31, die laut der Roadmap ab 07.12. stabil sein wird. Diese kann mit rustup install beta installiert werden. Der Beta-Compiler kann dann mit cargo +beta build verwendet werden. Alternativ kann die Beta mit rustup default beta als Standardcompiler gesetzt werden, dann funkioniert cargo build ohne zusätzliche Argumente.

Die Rust-Bindings funktionieren etwas anders als die meisten anderen Bindings, da fast alle Aufrufe nicht blockieren. Get/Set-Funktionen und Callback-Registrierungen liefern einen Wrapper um einen Receiver zurück, der die empfangenen Bytes in strukturierte Daten umwandelt. Weitere Details finden sich hier, sowie im Readme der Bindings. Die Dokumentation für die Tinkerforge-Seite ist noch in Arbeit und deshalb nicht sichtbar.

Viel Spaß!

Erik

Pages: [1]