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.


Messages - rtrbt

Pages: 1 [2] 3 4 ... 8
16
Projektvorstellungen und Projektideen / Re: openhab Integration
« on: September 05, 2019, 14:33:49 »
Moin,
Hier die erste Beta der generierten openHAB-Bindings.

@Theo: Das ganze hat, wie angekündigt, etwas länger gedauert. Danke nochmal für den Aufwand, den du dir mit deinen Bindings gemacht hast.

17
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 vierte Beta findet sich hier

Edit: Beta 4 mit Support für:
    -  HAT Brick
    -  HAT Zero Brick
    -  CO2 Bricklet
    -  Color Bricklet
    -  Dust Detector Bricklet
    -  Hall Effect Bricklet
    -  Joystick Bricklet
    -  Laser Range Finder Bricklet
    -  Linear Poti Bricklet
    -  Linear Poti 2.0 Bricklet
    -  Moisture Bricklet
    -  Segment Display 4x7 Bricklet
    -  Segment Display 4x7 2.0 Bricklet
    -  Tilt Bricklet

Hier der Inhalt der README:
Unterstützte Geräte:
    HAT Brick
    HAT Zero Brick
    Air Quality Bricklet
    Ambient Light Bricklet
    Ambient Light 2.0 Bricklet
    Ambient Light 3.0 Bricklet
    Analog In Bricklet # Blind implementiert, da Hardware fehlt
    Analog In 2.0 Bricklet
    Analog In 3.0 Bricklet
    Barometer Bricklet
    Barometer 2.0 Bricklet
    CO2 Bricklet
    Color Bricklet
    Color 2.0 Bricklet
    Compass Bricklet
    Distance IR Bricklet
    Distance IR 2.0 Bricklet
    Distance US Bricklet
    Distance US 2.0 Bricklet
    Dual Button Bricklet
    Dual Relay Bricklet
    Dust Detector Bricklet
    Energy Monitor Bricklet
    GPS Bricklet # Blind implementiert, da Hardware fehlt
    GPS 2.0 Bricklet
    Hall Effect Bricklet
    Humidity Bricklet
    Humidity 2.0 Bricklet
    Industrial Analog Out 2.0 Bricklet
    Industrial Digital In 4 Bricklet # Blind implementiert, da Hardware fehlt
    Industrial Digital In 4 2.0 Bricklet
    Industrial Digital Out 4 Bricklet
    Industrial Dual Analog In Bricklet
    Industrial Dual Analog In 2.0 Bricklet
    Industrial Dual Relay Bricklet
    Industrial Quad Relay Bricklet
    Industrial Quad Relay 2.0 Bricklet
    IO4 Bricklet
    IO4 2.0 Bricklet # PWM Support fehlt. Modellierung? (Frequenz/Duty Cycle als Channel, Konfiguration oder komplexer Channel mit Parsing wie bei Displays, eventuell Action?)
    IO16 Bricklet
    IO16 2.0 Bricklet
    Joystick Bricklet
    Joystick 2.0 Bricklet
    Laser Range Finder Bricklet
    LCD 16x2 Bricklet # Siehe Display-Bricklets-Abschnitt
    LCD 20x4 Bricklet # Siehe Display-Bricklets-Abschnitt
    LCD 128x64 Bricklet # Siehe Display-Bricklets-Abschnitt
    LED Strip Bricklet # Blind implementiert, da Hardware fehlt
    LED Strip 2.0 Bricklet
    Linear Poti Bricklet
    Linear Poti 2.0 Bricklet
    Load Cell Bricklet # Blind implementiert, da Hardware fehlt
    Load Cell 2.0 Bricklet
    Moisture Bricklet
    Motion Detector Bricklet
    Motion Detector 2.0 Bricklet
    Multi Touch Bricklet
    Multi Touch 2.0 Bricklet
    OLED 64x48 Bricklet # Siehe Display-Bricklets-Abschnitt
    OLED 128x64 Bricklet # Siehe Display-Bricklets-Abschnitt
    OLED 128x64 2.0 Bricklet  # Siehe Display-Bricklets-Abschnitt
    Particulate Matter Bricklet
    PTC Bricklet
    PTC 2.0 Bricklet
    Real Time Clock Bricklet
    Real Time Clock 2.0 Bricklet
    RGB LED Button Bricklet
    Rotary Encoder Bricklet
    Rotary Poti 2.0 Bricklet
    Segment Display 4x7 Bricklet
    Segment Display 4x7 2.0 Bricklet
    Solid State Relay Bricklet
    Solid State Relay 2.0 Bricklet
    Sound Intensity Bricklet
    Sound Pressure Level Bricklet
    Temperature Bricklet
    Temperature 2.0 Bricklet
    Temperature IR Bricklet
    Temperature IR 2.0 Bricklet
    Tilt Bricklet
    UV Light Bricklet
    UV Light 2.0 Bricklet
    Voltage Current 2.0 Bricklet

18
Allgemeine Diskussionen / Re: mqtt automatisierung
« on: September 05, 2019, 11:50:18 »
bitte nochmals ein review, das die (externe) restartlogik in die überlegungen miteinbezieht
Brauchst du die externe Restartlogik für die Bindings oder dein Programm, dass mit dem Bindings MQTT spricht?

und : wie wird der MQTT-proxy eigentlich von aussen "regulär beendet" ? SIGTERM ? ... er läuft ja idealerweise endlos ... und KeyboardInterrupt von extern triggern - da bin ich kein spezialist ;-)
Den KeyboardInterrupt kannst du mit Strg-C auslösen, oder indem du SIGINT schickst. Ich habe gerade mal noch eingebaut, dass SIGTERM und SIGQUIT auch funktionieren.

Edit:
Durch das sinnvollere Signal-Handling kann man die Bindungs auch als systemd-Service verwenden, ein Beispiel-Service-File habe ich mal angehangen.

19
Allgemeine Diskussionen / Re: mqtt automatisierung
« on: September 04, 2019, 16:15:39 »
Moin,

Ich habe für die nächste Version der MQTT-Bindings mal einiges gefixt:
-> callback/ip_connection/connected wird am anfang aber explizit nie aufgerufen :
Das stimmt. Das Problem war, dass zuerst die IP-Connection aufgebaut wurde, danach die Verbindung zum Broker. Das passiert jetzt andersrum.
stattdessen ist mit dem initialisierungs-file implizit die einzige möglichkeit gegeben, callbacks zu registrieren bzw. ein anfängliches enumerate anzustossen ...
Das Init-File unterstützt jetzt eine zweigeteilte Syntax in dieser Form:
Code: [Select]
{
    "pre_connect": {
        "tinkerforge/register/ip_connection/connected": {"register": true},
        "tinkerforge/register/ip_connection/enumerate": {"register": true}
    },
    "post_connect": {
        "tinkerforge/request/ip_connection/enumerate": ""
    }
}
Mit diesem Beispiel-Init-File werden vor dem Verbinden der IP-Connection die Callbacks registriert und direkt nach dem Connect wird ein Enumerate ausgelöst.
-> callback/ip_connection/disconnected ist aber z.zt. ebenfalls "seltsam" :

soweit ich sehe, wird dieser callback nur getriggert, falls ein "regulärer" ausstieg via KeyboardInterrupt erfolgt. alle anderen umstände haben "seltsame" dinge zur folge :

(PROBLEM ? BUG? falsch verstanden ?)

wenn ich eine zwischenzeitliche ip-netzwerk-unterbrechung zum brickd simuliere, scheint der disconnect probe thread dies nicht zu erkennen !

selbst wenn ich abseits der zu erwartenden callbacks auch funktionen via -> request/.../get_identity o.ä. absetze, erhalte ich -> response/.../get_identity { '_ERROR' : "Did not receive response for function BLAH in time ..." } ...

aber es erfolgt keinerlei triggern eines -> callback/ip_connection/disconnected !!!
Der Disconnected-Callback meldet den Verlust der TCP-Connection zum Brick Daemon. Wenn du das Netzwerkkabel rausziehst, wird die aber nicht geschlossen. Wenn du den Brick Daemon beendest, sollte der Callback auslösen. Detektieren, ob die Netzwerkverbindung an sich unterbrochen ist, können aktuell keine Bindings. Langfristig ist dafür aber eine Lösung geplant.
jeden topic auf { ..., "_ERROR" : ... } zu prüfen IST mühsam !

es könnte auch einen weiterer "höher" aggregierter topic z.b.
-> callback/bindings/issue { "type" : ... } eingebaut werden, wo dann von aussen entschieden werden kann, ob es sich um ein potentiell temporäres problem der ip_connection handelt und das wartens auf ein reconnect sinnvoll ist oder eine - permanent fatale - exception auftrat ...
Das kannst du aktuell auch haben, indem du tinkerforge/# subscribst und nachsiehst ob "_ERROR" im Payload ist.
aufgrund dieser info kann man noch immer entscheiden, ob man mittels z.b. -> request/bindings/terminate ein normales mqtt-disconnect durchführt oder über -> request/bindings/abort und den proxy ohne disconnect mit exit(1) beendet ...
Eigentlich sollte es nicht nötig sein, die Bindings neuzustarten. Hast du das Verhalten bei Verbindungsproblemen mit den aktuellen Bindings getestet? Ich hatte für Version 2.0.7 einiges am Verhalten geändert, damit es saubere Reconnects zum Broker und Brick Daemon gibt. Falls du mit der angehangenen Version in der Richtung noch Probleme hast, gib nochmal Bescheid.
so wie bei fatalen fehlern den proxy einfach beendet und den "last will" triggert ...
Die Bindings schicken wie gehabt "null" nach tinkerforge/callback/bindings/restart und mit der neuen Version auch nach tinkerforge/callback/bindings/shutdown, wenn sie normal beendet werden oder nach tinkerforge/callback/bindings/last_will, falls sie abgeschossen wurden oder die Verbindung weg ist.

Ich habe die aktuelle Version mal angehangen.

20
Für die Updatesuche und Firmwaredownloads ist das immer https://download.tinkerforge.com

21
Allgemeine Diskussionen / Re: RS232 Bricklet
« on: September 03, 2019, 16:58:49 »
Ist aktuell nicht geplant, sorry.

22
Moin,
Kannst du das ganze mit einer älteren Brick Viewer Version (2.4.6 oder älter) testen? Wir haben mit der 2.4.7 alle Verbindungen auf https umgestellt, eventuell macht das bei dir Probleme.

23
Moin,
Führst du den Brick Viewer aus Source aus? Die Pfade im Callstack sehen so aus. Da wir vor kurzem Teile der UI geändert haben, musst du nochmal build_src.py in brickv/src ausführen, damit die neuen UI-Elemente in Pythoncode gegossen werden.

24
Allgemeine Diskussionen / Re: RS232 Bricklet
« on: September 03, 2019, 10:38:42 »
Moin,
Das funktioniert nicht out-of-the-Box, da müsste man einen eigenen Kerneltreiber schreiben. Ein Seriell-USB-Wandler + USB-Hub ist da einfacher. Alternativ kannst du ein GPS-Bricklet und dieses Programm benutzen.

25
Allgemeine Diskussionen / Re: Brickv Auto-Update Fehler
« on: September 03, 2019, 10:33:33 »
Moin,
Das sollte mit 2.4.9 gefixt sein.

26
Dafür musst du die Teile in dem Datumsstring auch durch Platzhalter ersetzen, die du dann mit String.Format einsetzt, z.B so:
Code: [Select]
myProcess.StartInfo.Arguments = String.Format("/bin/date -s \"{0:00} {1} {2:0000} {3:00}:{4:00}:{5:00}\"", jahr, monat, tag, stunde, minute, sekunde);Den Monat musst du als String reingeben, also z.b. AUG oder SEP. Alternativ kannst du dir mal die anderen Formate ansehen, die date versteht, die sind z.B. hier dokumentiert.

27
Allgemeine Diskussionen / Re: Red-Brick Mobile Internet
« on: August 26, 2019, 09:56:02 »
Das sieht schon mal besser aus. Jetzt wäre wieder dmesg interessant. Außerdem kannst du mit lsusb -t nachsehen, ob überhaupt einer und wenn ja, welcher Treiber geladen wird.

28
Ah, manchmal ist man einfach betriebsblind, sorry dafür. Das Problem ist, dass StartInfo den Namen der ausführbaren Datei und die Argumente getrennt will, da ja auch keine Shell benutzt wird (deshalb optionalerweise UseShellExecute = false). So funktioniert es bei mir:
Code: [Select]
using (Process myProcess = new Process())
{
    myProcess.StartInfo.FileName = "/usr/bin/sudo";
    myProcess.StartInfo.Arguments = String.Format("/bin/date -s \"22 AUG 2019 {0:00}:{1:00}:{2:00}\"", stund, minut, sekund);
    myProcess.Start();
}

29
Was für eine Fehlermeldung bekommst du, wenn du myProcess.Start(); aufrufst?

30
Was gerade noch aufgefallen ist: Datum/Zeit zu setzen geht nur mit Root-Rechten. Du kannst aber dem Standarduser (also tf) erlauben, das ohne Root-Passwort zu tun, in dem du auf der seriellen Konsole des RED-Brick einmalig folgenden Befehl ausführst:
Code: [Select]
echo 'tf ALL=(root) NOPASSWD: /bin/date' | sudo tee -a /etc/sudoersWenn du dann in deinem Programm
Code: [Select]
/bin/date durch
Code: [Select]
/usr/bin/sudo /bin/date ersetzt, sollte es klappen.

Pages: 1 [2] 3 4 ... 8