Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

skippi

Members
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von skippi

  1. Geschrieben

    Nachdem die Servo-Brick in meiner Fussboden-Heizungsregelung mal wieder den Geist aufgegeben hat, wollte ich gerade nochmal eine Ersatzbestellung einleiten. Lt. Shop ist sie aber wohl nicht mehr verfügbar. Im Moment habe ich ja noch die Reserve Brick im Einsatz, aber wird es ein Nachfolgemodell geben ? (Gern etwas robuster, ist bei mir die Komponente die am häufigsten mal ausfällt - obwohl nur ein Servo angeschlossen)

     

  2. Geschrieben

    Overlay? Keine Ahnung, das Image war so schon im Auslieferungszustand des Routers drauf.

    Um den Speicher zuerweitern müsste ich usb-storage lib nachinstallieren oder?, es sind nur usb-core da, d.h. mangels Speicher keine Chance das nachzurüsten.

    Ja usb-storage wäre nötig, bekommst Du aber in dem Rest nicht mehr unter.

    Nachteil ist auch das Du dann einen USB-Hub benötigst, der auch manchmal etwas harkt.

    Wenn es so passt und noch reicht wäre es optimal ...

     

  3. Geschrieben

    Hm ist schon was her und war ein ziemliches Drama.

    Versuche es einfach mal auf die 'schmutzige Tour':

    Ich lege die udev lib hier auch mal ab,

    damit können die Abhängigkeiten hoffentlich aufgelöst werden -

    falls die Library nicht irgendwelche neuen aufreißt, die im Attitude Adjustment noch nicht abgedeckt sind.

    Da hilft nur ausprobieren.

    (das tar unter /lib entpacken ...)

    Ich würde aber nicht versuchen den udev-Mechanismus zu nutzen sondern den brickd über das init-system (bzw. erst mal manuell) zu starten.

    udevmips.tar

  4. Geschrieben

    int servo_set_position(Servo *servo, uint8_t servo_num, int16_t position)

     

        Setzt die Position in °/100 für den angegebenen Servo.

     

        Der Standardbereich für die Position ist -9000 bis 9000, aber dies kann, entsprechend dem verwendetem Servo, mit servo_set_degree() definiert werden.

    Der Default im brickv entspricht den Defaultwerten in der Firmware.

    Da zwei verschiedene Defaults zu haben macht aus meiner Sicht auch nicht wirklich Sinn...

  5. Geschrieben

    Hm bitte geht in Euch bevor Ihr die Defaults ändert.

    Mich hat es eine Woche Fehlersuche und sicherlich merklich Servoverschleiß gekostet bis ich bemerkt habe das das Servo in meiner Heizungssteuerung deshalb nicht mehr funktioniert und dauernd bestromt ist weil der "Position reached" Callback nach dem Update der Firmware plötzlich nicht mehr kommt.

    Ein bisschen mehr Kontinuität würde ich mir da schon wünschen...

  6. Geschrieben

    Bei mir leider nicht: (Originalcode von oben)

    realtimevm@otcontrol-virtual:~/projects/tinkerforge/fbheatcontrol/tffbcontrol$ make clean

    rm *.o tffbcontrol tffbdbg vitolog

    realtimevm@otcontrol-virtual:~/projects/tinkerforge/fbheatcontrol/tffbcontrol$ make b2test

    cc  -pthread -g -c b2test.c

    cc  -pthread -g -c ip_connection.c

    cc  -pthread -g -c brick_master.c

    cc  -g -pthread -o b2test b2test.o ip_connection.o brick_master.o

    realtimevm@otcontrol-virtual:~/projects/tinkerforge/fbheatcontrol/tffbcontrol$ ./b2test

    Press key to exit

    Braucht es eine spezielle gcc Version ?

    Der brickd meldet ein enumerate event

    2012-12-18 10:27:36.724534 <I> <network.c:89> Added new client (socket: 14)
    2012-12-18 10:27:36.724714 <D> <client.c:85> Got request (U: 0, L: 8, F: 254, S: 1, R: 0) from socket (handle: 14)
    2012-12-18 10:27:36.724752 <D> <usb.c:308> Broadcasting request (U: 0, L: 8, F: 254, S: 1, R: 0) to 1 Brick(s)
    2012-12-18 10:27:36.724831 <D> <transfer.c:218> Submitted write transfer 0x8cac728 for 8 bytes to Master Brick [6dJgzT]
    2012-12-18 10:27:36.724864 <D> <brick.c:477> Forced to sent request to Master Brick [6dJgzT]
    2012-12-18 10:27:36.743694 <D> <transfer.c:62> Read transfer 0x8cabe38 returned successfully from Master Brick [6dJgzT]
    2012-12-18 10:27:36.743814 <D> <brick.c:60> Got callback (U: 3425828921, L: 34, F: 253) from Master Brick [6dJgzT]
    2012-12-18 10:27:36.743895 <D> <network.c:224> Broadcasting callback (U: 3425828921, L: 34, F: 253) to 1 client(s)
    2012-12-18 10:27:36.744136 <D> <client.c:186> Forced to sent response to client (socket: 14)
    2012-12-18 10:27:36.744216 <D> <transfer.c:218> Submitted read transfer 0x8cabe38 for 80 bytes to Master Brick [6dJgzT]
    2012-12-18 10:27:36.744276 <D> <transfer.c:62> Write transfer 0x8cac728 returned successfully from Master Brick [6dJgzT]
    2012-12-18 10:27:38.208589 <I> <client.c:57> Socket (handle: 14) disconnected by client
    

    Gibt es neuere bindings ?

     

  7. Geschrieben

    Hm, hat schon mal jemand in C einen erfolgreichen 2.0 enumerate Callback gesehen ?

    Bei mir sagt der brickd2.0:

    2012-12-17 16:41:01.790983 <D> <client.c:127> Creating client from socket (handle: 14)
    2012-12-17 16:41:01.791052 <I> <network.c:89> Added new client (socket: 14)
    2012-12-17 16:41:01.792155 <D> <client.c:85> Got request (U: 0, L: 8, F: 254, S: 1, R: 0) from socket (handle: 14)
    2012-12-17 16:41:01.792201 <D> <usb.c:308> Broadcasting request (U: 0, L: 8, F: 254, S: 1, R: 0) to 1 Brick(s)
    2012-12-17 16:41:01.792314 <D> <transfer.c:218> Submitted write transfer 0x9767728 for 8 bytes to Master Brick [6dJgzT]
    2012-12-17 16:41:01.792354 <D> <brick.c:477> Forced to sent request to Master Brick [6dJgzT]
    2012-12-17 16:41:01.800577 <D> <transfer.c:62> Read transfer 0x9766f70 returned successfully from Master Brick [6dJgzT]
    2012-12-17 16:41:01.800633 <D> <brick.c:60> Got callback (U: 3425828921, L: 34, F: 253) from Master Brick [6dJgzT]
    2012-12-17 16:41:01.800662 <D> <network.c:224> Broadcasting callback (U: 3425828921, L: 34, F: 253) to 1 client(s)
    2012-12-17 16:41:01.800767 <D> <client.c:186> Forced to sent response to client (socket: 14)
    2012-12-17 16:41:01.800840 <D> <transfer.c:218> Submitted read transfer 0x9766f70 for 80 bytes to Master Brick [6dJgzT]
    2012-12-17 16:41:01.800899 <D> <transfer.c:62> Write transfer 0x9767728 returned successfully from Master Brick [6dJgzT]
    2012-12-17 16:41:28.479791 <I> <client.c:57> Socket (handle: 14) disconnected by client
    

     

    Die Programmstruktur ist etwa:

       
    /* Callback for stack control */
    void cb_enumerate(char *uid, char *conn_uid, char position, uint8_t hwv[3], uint8_t fwv[3],
    			  uint16_t device_ident, uint8_t enumtype, void *udata) {
    
    
        fprintf(stderr," UID: %3.9s connected at UID: %3.9s @ position\n", uid,conn_uid,position);
        fprintf(stderr," Identifier: %2x\n", device_ident);
    
    ...}
    
    in main() {
    ........
       ipcon_create(&Regmem->ipcon);
       if(ipcon_connect(&Regmem->ipcon, HOST, PORT) < 0) {
            fprintf(stderr, "Could not create brickd connection\n");
            exit(1);
        } else {
        	ipcon_register_callback(&Regmem->ipcon,IPCON_CALLBACK_ENUMERATE,cb_enumerate,NULL);
    	usleep(100);
        	// Enumerate Bricks and Bricklets
    	ipcon_enumerate(&Regmem->ipcon);
        }	
    .....
    }
    

     

    Das ganze noch auf x86-linux.

    Die brickd Connection klappt offensichtlich, aber der enumerate_cb bleibt aus.

     

  8. Geschrieben

    Ich antworte mal auch wenn ich keines habe:

    Prinzipiell sollte es gehen, ich habe bei mir TL-MR3020 und auch 3420 Router - die auch auf mips  basieren und unter OpenWrt laufen können -  als TF-Hosts laufen.

    Das Board hätte sogar noch den Vorteil des doppelt so großen Flash-Speichers.

    Die TLs benötigen (insbesondere für den Python-basierten brickd) in jedem Fall einen USB-Stick als ROM-Erweiterung. (4MFlash, auch 32M Ram).

    Die TLs haben aber schon einen eingebauten USB-Port und der 3020 ist auch recht kompakt. Den USB-Port müsstest Du beim Carambola wohl auf jeden Fall nachrüsten - ausser wenn TF vielleicht irgendwann den brickd so erweitert, dass er (in Verbindung mit der Ethernet Extension) auch direkt über das LAN-Kabel kommuniziert. Für die Protokoll 1 Variante würde ich aber trotzdem auch eine USB-Partition als swap empfehlen, 32MB sind da wirklich hart an der Grenze.

    Mit dem 2.0er C-brickd sollten die Speicherprobleme gelöst sein. Ich habe inzwischen den brickd2.0 und meine Sourcen mit dem OpenWrt-SDK kompiliert bekommen. Der Praxistest steht aber noch aus, auch wenn der neue brickd schon positiv angetestet ist. (Das System steuert bei mir Teile der Heizung und damit würde ein Ausfall zur Zeit etwas familiären Stress erzeugen.  ;) Der Ersatzrouter ist aber gerade eingetroffen...

  9. Geschrieben

    Also mein Prog war auch schon mit Protokoll 1 so aufgebaut, wie Ihr es für Version 2.0 empfehlt:

    Das main() hat nur die ip_connection aufgebaut, enumerate() getriggert und danach im Wesentlichen im join_thread  gewartet.

    Der weitere interne Ablauf inclusive der Device Initialisierungen läuft zunächst in den enumerate() callbacks ab.

    Die eigentliche Programmfunktion resultiert dann aus zyklischen Callbacks, die (mangels entsprechender Fähigkeiten der Masterbrick) mittels der Monoflop Funktionalität des IO-Bricklets realisiert ist.

    Mittels alarm() ist dann noch ein Watchdog realisiert, der bellt wenn der Monoflop-Callback ausbleibt.

    Damit kann man das 'Echtzeitsystem' der Brick für den ganzen Ablauf nutzen.

    Die Alternative wäre es auf dem Host zu realisieren, dann machen aber die Callbacks aus meiner Sicht keinen Sinn mehr.

  10. Geschrieben

    OOps

    tffbcontrol.c: In function 'MasterBrickReset':
    tffbcontrol.c:151:10: error: too many arguments to function 'ipcon_create'
    ip_connection.h:293:6: note: declared here
    tffbcontrol.c:151:10: error: void value not ignored as it ought to be
    tffbcontrol.c:157:11: error: too many arguments to function 'ipcon_enumerate'
    ip_connection.h:342:5: note: declared here
    tffbcontrol.c:192:8: error: too many arguments to function 'ipcon_create'
    ip_connection.h:293:6: note: declared here
    tffbcontrol.c:192:8: error: void value not ignored as it ought to be
    tffbcontrol.c:199:9: error: too many arguments to function 'ipcon_enumerate'
    ip_connection.h:342:5: note: declared here
    tffbcontrol.c:214:9: error: too many arguments to function 'ipcon_enumerate'
    ip_connection.h:342:5: note: declared here
    tffbcontrol.c: In function 'trimwhitespace':
    tffbcontrol.c:262:3: warning: implicit declaration of function 'isspace' [-Wimplicit-function-declaration]
    tffbcontrol.c: In function 'setupLCDDevice':
    tffbcontrol.c:840:5: error: too few arguments to function 'lcd_20x4_create'
    bricklet_lcd_20x4.h:92:6: note: declared here
    tffbcontrol.c:842:5: warning: implicit declaration of function 'ipcon_add_device' [-Wimplicit-function-declaration]
    tffbcontrol.c:854:35: error: too few arguments to function 'lcd_20x4_register_callback'
    bricklet_lcd_20x4.h:107:6: note: declared here
    tffbcontrol.c:857:34: error: too few arguments to function 'lcd_20x4_register_callback'
    bricklet_lcd_20x4.h:107:6: note: declared here
    tffbcontrol.c: In function 'setupVTempBricklet':
    tffbcontrol.c:865:5: error: too few arguments to function 'temperature_create'
    bricklet_temperature.h:95:6: note: declared here
    tffbcontrol.c:876:35: error: too few arguments to function 'temperature_register_callback'
    bricklet_temperature.h:110:6: note: declared here
    tffbcontrol.c: In function 'setupRTempBricklet':
    tffbcontrol.c:886:5: error: too few arguments to function 'temperature_create'
    bricklet_temperature.h:95:6: note: declared here
    tffbcontrol.c:899:35: error: too few arguments to function 'temperature_register_callback'
    bricklet_temperature.h:110:6: note: declared here
    tffbcontrol.c: In function 'setupSTempBricklet':
    tffbcontrol.c:909:5: error: too few arguments to function 'temperature_create'
    bricklet_temperature.h:95:6: note: declared here
    tffbcontrol.c:920:35: error: too few arguments to function 'temperature_register_callback'
    bricklet_temperature.h:110:6: note: declared here
    tffbcontrol.c: In function 'setupIO16Bricklet':
    tffbcontrol.c:949:2: error: too few arguments to function 'io16_create'
    bricklet_io16.h:115:6: note: declared here
    tffbcontrol.c:966:3: error: too few arguments to function 'io4_register_callback'
    bricklet_io4.h:130:6: note: declared here
    tffbcontrol.c: In function 'setupIO4Bricklet':
    tffbcontrol.c:984:5: error: too few arguments to function 'io4_create'
    bricklet_io4.h:115:6: note: declared here
    tffbcontrol.c:1001:3: error: too few arguments to function 'io4_register_callback'
    bricklet_io4.h:130:6: note: declared here
    tffbcontrol.c: In function 'setupServoBrick':
    tffbcontrol.c:1115:26: error: too few arguments to function 'servo_register_callback'
    brick_servo.h:223:6: note: declared here
    tffbcontrol.c: In function 'cb_enumerate':
    tffbcontrol.c:1136:7: error: too few arguments to function 'master_create'
    brick_master.h:246:6: note: declared here
    tffbcontrol.c:1142:5: warning: implicit declaration of function 'master_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c:1161:4: warning: implicit declaration of function 'lcd_20x4_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c:1171:4: warning: implicit declaration of function 'temperature_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c:1204:4: warning: implicit declaration of function 'io4_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c:1215:4: warning: implicit declaration of function 'io16_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c:1225:7: error: too few arguments to function 'imu_create'
    brick_imu.h:253:6: note: declared here
    tffbcontrol.c:1231:5: warning: implicit declaration of function 'imu_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c:1246:7: error: too few arguments to function 'servo_create'
    brick_servo.h:208:6: note: declared here
    tffbcontrol.c:1247:4: warning: implicit declaration of function 'servo_get_version' [-Wimplicit-function-declaration]
    tffbcontrol.c: In function 'main':
    tffbcontrol.c:1324:5: error: too many arguments to function 'ipcon_create'
    ip_connection.h:293:6: note: declared here
    tffbcontrol.c:1324:5: error: void value not ignored as it ought to be
    tffbcontrol.c:1330:6: error: too many arguments to function 'ipcon_enumerate'
    ip_connection.h:342:5: note: declared here
    tffbcontrol.c:1342:6: warning: implicit declaration of function 'ipcon_join_thread' [-Wimplicit-function-declaration]
    make: *** [tffbcontrol.o] Error 1
    

     

    Da ist ja doch die Wochendarbeit gesichert.

    Warum kein ipcon_join_thread mehr ?

    ....

    Na ich schau mir ersteinmal alle notwendigen Änderungen an...

  11. Geschrieben

    Ne udev messages kann ich nicht finden.

    Ich schau mal im openwrt Forum nach, ob ich da noch etwas starten muss.

    Zumindest die libudev ist da und auch verlinkt:

    root@OpenWrt:/home/tfc# ldd ./brickd
    libusb-1.0.so.0 => /usr/lib/libusb-1.0.so.0 (0x77526000)
    libudev.so.0 => /lib/libudev.so.0 (0x77509000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x774e6000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x774c0000)
    libc.so.0 => /lib/libc.so.0 (0x77454000)
    librt.so.0 => /lib/librt.so.0 (0x77440000)
    ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77542000)
    libdl.so.0 => /lib/libdl.so.0 (0x7742c000)
    

    Allerdings habe ich auch festgestellt, das die Bindings noch etwas auf Vervollständigung warten. Zumindest sind Definition und Deklaration von ipcon_enumerate schon unterschiedlich. Da warte ich doch mal die nächste Release ab.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.