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 - Equinox

Pages: [1] 2
1
Hardware / Problem mit LCD 128x64 Bricklet (Touch)
« on: March 15, 2019, 21:36:31 »
Hallo,

ich benutze das "LCD 128x64 Bricklet" mit mehreren Tabs. Es kommt bei mir ab und zu vor, dass sich das Display nach einem Tab-Wechsel pausenlos "refreshed", und zwar mit unterschiedlichen Tabs. Es reagiert dann auf keine Berührung mehr. Es sieht so aus, als ob man sehr schnell zwischen den Tabs wechseln würde. Meistens fängt es sich auch nicht mehr.
Kann es sein, dass das Bricklet da ein Eigenleben entwickelt und ständig irgendwelche Events für einen Tab-Wechsel sendet?
Zuerst dachte ich, dass sich da mein Programm irgendwie verhaspelt (was ich auch jetzt noch nicht ausschließen kann) und habe es neu gestartet. Heute habe ich aber das Programm laufen lassen und habe nur den Stapel kurz vom Strom getrennt. Danach war alles wieder gut. Ich denke deshalb, dass es nicht an meinem Programm liegt, da es sich sonst auch nach dem Neustart des Stapels noch in dem "verhaspelt"-Zustand befunden hätte.
Hat sonst noch jemand dieses Problem? An was kann das liegen und was kann ich dagegen tun?

P.S.: Die Variable, welches Tab gerade selektiert ist, setze ich nur in den Callbacks "guiTabSelected" und "guiButtonPressed" und die Methode zum aktualisieren des Displays wird auch nur mit dieser Variablen aufgerufen. Ich vermute deshalb, dass der Callback "guiTabSelected" ständig mit unterschiedlichen Tabs aufgerufen wird, auch wenn gar kein Berührung vorliegt.

2
Anfängerfragen und FAQ / Problem beim Updaten von Bricklets
« on: January 29, 2019, 20:30:04 »
Hallo,

ich möchte meine Air Quality- und LCD (Touch)-Bricklets über den Brick-Viewer updaten (v 2.3.16). Wenn ich auf "Auto-Update All Bricklets" klicke, dann wird auch versucht, die aktuellste Firmware herunterzuladen, was aber nicht gelingt.
Im Log steht folgende Meldung:
Code: [Select]
Traceback (most recent call last):
  File "brickv\flashing.pyc", line 1352, in auto_update_bricklets_clicked
AttributeError: 'NoneType' object has no attribute 'plugin'
Traceback (most recent call last):
  File "brickv\flashing.pyc", line 1352, in auto_update_bricklets_clicked
AttributeError: 'NoneType' object has no attribute 'plugin'
Traceback (most recent call last):
  File "brickv\flashing.pyc", line 1352, in auto_update_bricklets_clicked
AttributeError: 'NoneType' object has no attribute 'plugin'
Traceback (most recent call last):
  File "brickv\flashing.pyc", line 1352, in auto_update_bricklets_clicked
AttributeError: 'NoneType' object has no attribute 'plugin'

Was ist das Problem bzw. wie kann ich das beheben?

3
Anfängerfragen und FAQ / Dot-Graph beim LCD 128x64 Bricklet
« on: January 03, 2019, 20:16:34 »
Hallo,

kann es sein, dass (zumindest) beim Dot-Graph ein Wert zuviel bzw. der letzte Wert falsch angezeigt wird?
Ich habe das Gefühl, dass der letzte angezeigte Wert, wenn dieser nicht 0 ist, dem ersten angezeigten Wert entspricht.
Ich habe mein Programm jetzt mehrfach angeschaut und habe keinen Fehler entdeckt, möchte aber nicht ausschließen, dass der Bug auf meiner Seite liegt  ;)

4
Anfängerfragen und FAQ / Fragen zum Air Quality Bricklet
« on: January 01, 2019, 20:54:45 »
Hallo,

ich habe ein paar Fragen zum Air Quality Bricklet:
  • Wie wird der IAQ-Index berechnet? Oder anders gefragt: Wie beeinflussen der Luftdruck, die Luftfeuchtigkeit und die Temperatur den IAQ-Index?
    Ich habe das Bricklet bei mir im Wintergarten, wo ich annehme, dass die Luft durch die vielen Pflanzen sehr gut ist. Das Bricklet zeigt mir aber durchaus öfter Werte über 100 und auch über 200 an.
  • Wie ist das mit der Genauigkeit? Ich dachte, diese verbessert sich ständig bis sie bei "hoch" angekommen ist und bleibt dann so. Ich habe aber bei mir festgestellt, dass die Genauigkeit auch wieder abnimmt. Z. B. verschlechtert sie sich durchaus von "hoch" wieder zu "niedrig". Warum ist das so?
  • Bei den Graphen vom Typ "Bar" schließen die Balken nicht direkt aneinander an, sondern es ist jeweils eine Lücke von einem Pixel. Bei "Dot" schließen die Werte direkt aneinander an.
    Wenn ich jetzt also einen Graphen der Breite (Width) 100 habe und einen Array mit 100 Werten übergebe, werden dann bei "Bar" nur 50 Werte angezeigt? Falls ja, welche (die ersten 50 oder die letzten 50 oder ...)? Kann man dies ändern, sodass keine Lücke zwischen den Balken ist und alle Werte angezeigt werden?

5
Hardware / Voltage/Current Bricklet misst falsche Stromstärke an
« on: August 16, 2017, 14:24:27 »
Hallo,

ich habe ein "Voltage/Current Bricklet", das seit Kurzem ein Stromstärke von -18,377 A misst, obwohl kein Strom fließt (es liegen aber ca. 12,7V an, was passen müsste).
Ist das Bricklet defekt? Falls ja, gibt es eine einfache Methode, dies zu reparieren?

Vielen Dank!

Edit: Die -18,377 A werden auch gemessen, wenn tatsächlich Strom fließt.

6
Anfängerfragen und FAQ / Fragen zum UV Light Bricklet
« on: January 08, 2016, 15:05:52 »
Hallo,


  • misst das Bricklet das gesamte Spektrum der UV-Strahlung, d.h. UV-A, UV-B und UV-C?
  • ich nehme an, dass das Bricklet nicht wetterfest ist, oder? Da Glasscheiben einen großen Teil der UV-Strahlung filtern, macht eine Installation hinter Glas aber wenig Sinn. Habt ihr einen Tipp, wie man das Bricklet im Freien anbringen kann, so dass es die komplette UV-Strahlung misst, aber trotzdem vor Regen/Schnee geschützt ist?
Gruß
Equinox

7
Anfängerfragen und FAQ / "Gebrauchsanleitung" Dust Detector Bricklet
« on: January 08, 2016, 14:58:27 »
Hallo,

vor einiger Zeit habt ihr mal erwähnt, dass ihr eine Art "Gebrauchsanleitung" bzw. "Tipps und Tricks" für das "Dust Detector Bricklet" erstellen wollt. Gibt es die schon (und ich habe sie übersehen) oder seid ihr da noch dran?
Ich meine mich zu erinnern, dass ihr z.B. erwähnt habt, dass das Bricklet in einem Luftstrom angebracht werden sollte. Gibt es noch weitere Dinge, die man bei dem Bricklet beachten sollte?
Zum Anbringen im Luftstrom:
  • Wie "stark" sollte dieser sein? Reicht ein bißchen Luftbewegung oder braucht man schon einen Lüfter/Ventilator?
  • Ich hätte die Möglichkeit, das Bricklet hinter einen Lüfter (d.h. in den Ansaugbereich) zu platzieren. Wäre das gut? Wäre es vor dem Lüfter besser (also dort, wo er hinbläst)? Oder besser in die Nähe, also nicht direkt in den Luftstrom?
Gruß
Equinox

8
Hallo zusammen,

wenn ich "writePage" mit einer Pagenummer größer als 30 aufrufe, dann bekomme ich eine Nullpointerexception:
Code: [Select]
java.lang.NullPointerException
at com.tinkerforge.BrickletNFCRFID.writePage(BrickletNFCRFID.java:290)
at WriteTag$1.stateChanged(WriteTag.java:62)
at com.tinkerforge.BrickletNFCRFID$1.callback(BrickletNFCRFID.java:114)
at com.tinkerforge.IPConnection.callDeviceListener(IPConnection.java:159)
at com.tinkerforge.CallbackThread.dispatchPacket(IPConnectionBase.java:253)
at com.tinkerforge.CallbackThread.run(IPConnectionBase.java:286)

Wenn das Schreiben über die Page 30 hinausgeht, wird auch nur bis maximal Page 30 geschrieben. Ist das ein Bug oder mache ich was falsch? Falls letzteres, wie kann ich Daten in Pages jenseits 30 schreiben?

Danke!

9
Hallo zusammen,

ich habe das Beispielprogramm zum Schreiben/Lesen von RFID-Tags leicht abgeändert, sodass es nur noch liest. Mein Problem dabei ist, dass es immer Page 5 liest, egal was ich bei requestPage() als Parameter angebe. Selbst ohne den Aufruf requestPage() wird der Abschnitt unter "BrickletNFCRFID.STATE_REQUEST_PAGE_READY" ausgeführt.
Was mache ich falsch? Wie lese ich die requestierte Seite aus?
Wie funktioniert das Lesen und Schreiben von mehreren Seiten, d.h. mehr als 16 Bytes? Ist dies mit Callbacks sinnvoll machbar, da diese ja asynchron ausgeführt werden? Oder macht man das anders? Wie sieht hier die "Best Practice" aus? Könntet ihr dazu bitte ein Beispielprogramm posten (Lesen und Schreiben von mehr als 16 Bytes)?
Und eins noch:
In der Doku steht beim Lesen und Schreiben jeweils der Satz:
"Rufe getTagID() auf und überprüfe ob Tag ID korrekt ist."
Was ist damit gemeint? Ob die TagID dem requestierten Typ entspricht?
Wenn ich das richtig sehe, fehlt dieser Schritt auch in den Beispielprogrammen.

Vielen Dank.

Hier mein Programm:
Code: [Select]
import com.tinkerforge.BrickletNFCRFID;
import com.tinkerforge.IPConnection;

public class ReadTag {
    private static final String host = "localhost";
    private static final int port = 4223;
    private static final String UID = "oBF"; // NFC Bricklet
   
    // Note: To make the example code cleaner we do not handle exceptions. Exceptions you
    //       might normally want to catch are described in the commnents below
    public static void main(String args[]) throws Exception {
        IPConnection ipcon = new IPConnection(); // Create IP connection
        final BrickletNFCRFID nfc = new BrickletNFCRFID(UID, ipcon); // Create device object

        ipcon.connect(host, port); // Connect to brickd
        // Don't use device before ipcon is connected

        // Add and implement state changed listener (called if state changes)
        nfc.addStateChangedListener(new BrickletNFCRFID.StateChangedListener() {
            public void stateChanged(short state, boolean idle) {
                try {
                    if(state == BrickletNFCRFID.STATE_REQUEST_TAG_ID_READY) {
                        System.out.println("Tag found");
                        //System.out.println(nfc.getTagID());
                        System.out.println("Requesting data (pages 4-7) ...");
                       
                     // Request pages 4-7
                       nfc.requestPage(4);
                                             
                    } else if(state == BrickletNFCRFID.STATE_WRITE_PAGE_READY) {
                    System.out.println("Write Page ready ... sollte nichts erscheinen");
                       
                    } else if(state == BrickletNFCRFID.STATE_REQUEST_PAGE_READY) {
                        // Get and print pages
                   
                    System.out.println("Data: ");
                        short[] data = nfc.getPage();
                        String s = "Read data (Dezimal): [" + data[0];
                        String sHex = "Read data (hex): [" + Integer.toHexString(data[0] & 0xffff);

                        for(int i = 1; i < data.length; i++) {
                            s += " " + data[i];
                            sHex += " " + Integer.toHexString(data[i] & 0xffff);
                        }

                        s += "]";
                        sHex += "]";
                        System.out.println(s);
                        System.out.println(sHex);
                    } else if((state & (1 << 6)) == (1 << 6)) {
                        // All errors have bit 6 set
                        System.out.println("Error: " + state);
                    }

                } catch(Exception e) {
                    System.out.println(e);
                }
            }
        });

        // Select NFC Forum Type 2 tag
        nfc.requestTagID(BrickletNFCRFID.TAG_TYPE_TYPE2);

        System.out.println("Press key to exit"); System.in.read();
        ipcon.disconnect();
    }
}

Wie gesagt: Selbst ohne die Zeile "nfc.requestPage(4);" erhalte ich eine Ausgabe.

10
Software, Programmierung und externe Tools / NDEF Message Format
« on: January 04, 2015, 11:50:17 »
Hallo zusammen und frohes, neues Jahr!

Zu Weihnachten habe ich mir ein NFC/RFID-Bricklet geschenkt. Ich möchte darauf gerne NDEF-konforme Nachrichten speichern. Ich habe es auch geschafft, einige korrekte Nachrichten zu erzeugen, allerdings sind bei mir da noch einige Fragen offen, was das Format angeht. Kennt jemand eine gute(!) Dokumentation dafür (und ich meine nicht die Spezifikation https://github.com/Tinkerforge/nfc-rfid-bricklet/raw/master/datasheets/specification_ndef.pdf)?

Meine Fragen im Einzelnen:
  • Ich habe die "NFC Forum Typ 2"-Tags aus dem TF-Shop. Ich dachte, man sollte/darf erst ab Page 5 eigene Daten schreiben. Warum beginnt die "vorinstallierte" Nachricht dann schon bei Page 4?
  • Wo in der Spezifikation steht, dass eine NDEF Nachricht mit 0x03 beginnen muss? Ich habe das nur auf einer anderen Internetseite gefunden, dass dies so sein muss zur Identifikation als NDEF-Nachricht. Gibt es noch andere definierte "Startbytes"?
  • Nach dem 0x03 steht die Gesamtlänge der Nachricht in einem Byte. Wie kann ich dann Nachrichten mit mehr als 255 Bytes erzeugen? Seltsamerweise gibt es bei den einzelnen Records die Möglichkeit, dass diese 232-1 Bytes lang werden können (mit eigenem Längenfeld). Das macht doch aber keinen Sinn, wenn die Nachricht sowieso nur 255 Bytes lang werden kann, oder?
  • In der vorinstallierten Nachricht folgt als nächstes 0x91 als erstes Header-Byte. Dies bedeutet, dass das Message-End Bit, das Short Record Bit ID-Length Bit gesetzt sind und als TNF "Absolute URI".
    • Müsste da nicht zumindest auch das Message Begin-Bit gesetzt sein?
    • Warum ist das Message End-Bit gesetzt? Es folgt doch noch eine weiterer Record.
    • ID-Length ist gesetzt, aber ich konnte in der Nachricht keine ID finden. Ist das bei Absolute URI automatisch der Payload? Falls ja, wo kann man das Nachlesen?
    • Warum wird "Absolute URI" verwendet bzw. was ist der Unterschied zu "Well-Known" (0x01)? Es kommt ja noch ein Byte, das den Typ angibt. Da muss bei URI 0x55 stehen. Wie würde die vorinstallierte Nachricht mit TNF 0x01 aussehen (hat bei mir nicht funkktioniert)? Auf einer anderen Seite habe ich gelesen, dass man TNF 0x03 nicht verwenden sollte, sondern 0x01 (leider ohne Begründung)
  • In der vorinstallierten Textnachricht steht als Header-Byte 0x51. Auch hier ist das Message Begin Bit nicht gesetzt, keine ID und TNF ist 0x01.
    Kann es sein, dass in einer Nachricht, keine 2 Records gleichen Typs stehen dürfen, d.h. deshalb wurde für URI TNF 0x03 genommen, damit man noch eine Textnachricht mit TNF 0x01 anhängen kann?
    Falls dem nicht so ist, hat jemand ein Beispiel, wie z.B. zweimal die Nachricht "Hallo" aussehen würde (d.h. in zwei eigenen Records)?
  • Nach dem Typ (0x54 für Text und 0x55 für URI) folgt ein Statusbyte. Nach einiger Suche konnte ich eine Spezifikation dafür im Falle einer Textnachricht finden, allerdings nicht vollständig erklärt. Wie ist die Spezifikation dafür für URIs?


Ich könnte mich natürlich durch das TF-Beispielprogramm wühlen, aber einerseits steht da dann "nur" dass es so ist und nicht warum und andererseits würde mich schon auch interessieren, woher die Informationen sind (ich konnte zumindest einiges nicht in der Spezifikation finden, wie z.B. das Startbyte 0x03).

Vielen Dank!

11
Hardware / Drahtlose Anbindung von Bricklets
« on: April 19, 2014, 22:51:10 »
Hallo,

es gab ja hier schon öfter die Diskussion, wie man Bricklets möglichst einfach, kostengünstig, mit großer Reichweite und geringem Stromverbrauch anbinden kann. Wifi-Extension + Masterbrick hat eine zu geringe Reichweite und ist zu teuer, die Chibi-Extension gibt es im Moment nicht und hat vmtl. auch einen zu hohen Stromverbrauch.
Evtl. gibt es dafür eine Lösung:
http://www.angelblocks.com/index.php/technical-articles/41-angelblocks-radio-technology (Der Artikel enthält auch einen Link zum "Erfinder" der Technik).
Umgesetzt werden soll es u.a. mit diesem Kickstarter-Projekt:
https://www.kickstarter.com/projects/1630453569/angelblocks-smart-wireless-building-blocks-for-sma
Wäre diese Technik nicht auch was für Tinkerforge? Ich fände es super, wenn man die Bricklets drahtlos über große Entfernungen ansprechen könnte und diese dort nur mit einer Batterie über einen langen Zeitraum mit Strom versorgt werden  könnten.

12
Hardware / [Gesucht] Web-/IP-Cam
« on: March 08, 2014, 22:58:49 »
Hallo,

ich bin auf der Suche nach einer guten und günstigen Web-/IP-Cam.
Sie sollte folgendes können:
  • WLAN
  • Gute Bildqualität bei Fotos
  • Gute Bildqualität bei Videos (HD ready reicht)
  • Ansprechbar über Java und/oder REST (d.h. HTTP-Request). Es sollte also möglich sein (vereinfacht ausgedrückt), in Java z.B. "getPicture()" oder "getVideo()" aufzurufen und dann macht die Kamera ein Bild oder ein Video und schickt es an das Java-Programm (oder eben per HTTP-Request).

Schön wäre auch, wenn sie "Pan-Tilt-Zoom" mit automatischem Motion-Tracking hätte, ist aber optional.
Kann da jemand was empfehlen?

(Hintergrund: Ich möchte ein Foto oder Video machen, wenn das TF-Motion Detector-Bricklet Bewegung erkennt.)

13
Hardware / Hardware-Idee: Super-Funksteckdose / Heimautomatisierung
« on: January 06, 2014, 15:05:03 »
Hallo,

die handelsüblichen Funksteckdosen in Kombination mit dem Remote Switch Bricklet sind schon eine feine Sache, haben aber meiner Meinung nach 3 Nachteile:
  • Relativ geringe Reichweite
  • Kein Rückkanal (Nebenbei/Off-Topic: Wenn man da ein Voltage/Current Bricklet einbauen könnte, könnte man dies doch als Rückkanal nutzen, oder?)
  • Zumindest bei Typ A Dosen nur relativ wenig Codes möglich
Ich denke, TF hat schon alles, um eine Funksteckdose zu bauen, die diese Nachteile nicht hat.
Wie wäre es, wenn ihr eine Super-Funksteckdose bestehend aus (der Neuauflage) einer Chibi-Extension und einem (Single) Relay-Bricklet anbieten würdet? Durch die Chibi-Extension hätte man eine super Reichweite, der Zustand des Relay-Bricklet ist änderbar und abfragbar (Rückkanal) und durch die IDs der Bricklets sind mehr Codes möglich (evtl. könnte man da ja sogar noch eine Autorisierungs-ID oder Verschlüsselung einbauen).
Ich glaube, damit wärt ihr die Helden am Funksteckdosenmarkt  ;D
Was meint ihr?

Noch weiter gedacht: Diese Funksteckdose wäre nur ein Teil aus einer ganzen Heimautomatisierungsserie. Wie wäre es z.B. mit einem (Licht-)Schalter bestehend aus Chibi-Extension, Button-Bricklet und Relay-Bricklet? Das müsste dann natürlich so kompakt sein, dass man die bisherigen Schalter austauschen kann. Das sollte aber kein großes Problem sein, da dies ja schon für andere Heimautomatisierungssysteme angeboten wird.
Voraussetzung ist natürlich eine neue Chibi-Extension. Aber das soll es ja wieder geben.

14
Hallo,

wäre es möglich, die API des Piezo Speakers um eine blockierende beep-Methode zu erweitern, d.h. wenn ich beep(2000, 1000) und direkt danach beep(2000, 4000) aufrufe, ich zuerst 2 Sekunden 1000Hz höre und dann 2 Sekunden 4000Hz?
Im Moment ist es so, dass ich praktisch nur die 4000Hz höre.
Hintergrund: Wenn man mehrere unterschiedliche Töne nacheinander abspielen will, dann ist die Methode über den BeepFinishedListener ziemlich umständlich. Ich möchte in meinem Code einfach nur eine Folge von beep-Anweisungen schreiben müssen. Alternativ wäre auch möglich, ein Array von Tonlängen und Frequenzen zu übergeben, die dann gespielt werden und am Ende der kompletten Tonfolge dann erst der BeepFinishedListener aufgerufen wird. Was haltet ihr davon?

15
Hallo,

wenn ich in Java mehrere Listener registriere, z.B. für Humidity und Temperature, wieviele davon können gleichzeitig die Events abarbeiten?
  • Immer nur einer?
  • Einer pro Bricklet?
  • Unbegrenzt?
Falls nur einer (egal welche Variante), was passiert mit dem Event, das während der Abarbeitung des Callbacks eintrifft? Wird dies "gepuffert" und dann anschließend ausgeführt oder geht das verloren? Und heißt das dann, dass man größere Aktionen in einem Callback in einen eigenen Thread auslagern sollte?

Vielen Dank!

Pages: [1] 2