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 - bernhard.graeuler

Pages: 1 [2]
16
General Discussion / Re: RED Brick Image 1.10 Test
« on: February 04, 2018, 20:21:19 »
Hi,
this was recently discussed on the german board as well. Please let me try to  translate borgs statement from there:
we discussed the topic and checked the test we ran.

There are two findings:

1. The 1.10 image uses the Linux CPU frequency scaling governor. This means the CPU frequency is managed according to the load. Low frequency on low load and vice versa. This results in a lower system temperature and power consumption. But it also makes it look like the CPU resource consumption percentage is increased.

2. With image 1.10 we moved to the most recent Linux Mainline Kernel. Unfortunately, the SPI driver works very inefficient in our usage scenario. As far as we understand it the reason for this is, that drivers are optimized for multi processor systems, wich the RED brick is not. We already tried to improve the driver, you can find our modifications here: https://github.com/Tinkerforge/red-brick-linux/commit/2082ee9458d1bd553fb2c1b933162b3beabc8332

Anyhow, if you compare image 1.9 with 1.10 a performance decrease is measurable. We're working on improvements. Yet, this is a very time consuming topic.

17
Hi,

Die Software wird vom RED Brick ausgeführt, verbindet sich mit dem lokalen BrickDaemon, und kommuniziert mit den einzelnen Komponenten des Stacks. Eine Ethernet Master Extension erweitert einen Master Brick. Also muss die Software mit dem Master Brick kommunizieren, und diesen via isEthernetPresent() fragen, ob eine Ethernet Extension zur Verfügung steht. Dann kann mit BrickMaster::get/setEthernetConfiguration() gearbeitet werden.

Die API des RED Bricks brauchst Du dafür nicht.

Gruß
 Bernhard

18
Hi,

Du stellst Dir gleich zweimal ein Bein:
  • Du verwendest den Callback der IMU als Scheduler für Deine Anwendung.
  • Statt die Werte, die die IMU im Callback schon liefert rufst Du sie lieber noch mal neu ab. (short[] acceleration im Callback vs. imu.getLinearAcceleration() in output(...))

Ich würde (für quick & dirty) empfehlen die Werte, die Du im AllDataListener::allData([viele Arrays]) bekommst, in ein ImuData POJO zu verpacken in output(imudata, accel, gps) zu übergeben, und noch zusätzlich die anderen Brick(let)s abzurufen.

Eine gute Lösung wäre meiner Meinung nach, für alle benötigten Datenquellen periodic Callback Listener zu registrieren, damit die Werte periodisch schicken zu lassen und in einer ConcurrentHashMap zu speichern. In einem separaten Task kannst Du die Werte dann periodisch aus der Map lesen und ausgeben.

Wenn es unbedingt Polling sein soll, verwende besser einen ScheduledTaskExecutor. Dann ersparst Du dem Datenbus wenigstens die Last, Dir alle IMU Werte doppelt zu schicken (1x Callback + 1x getNNN() im Output).

Freundliche Grüße
  Bernhard

19
Allgemeine Diskussionen / Re: Aquarien Überwachung
« on: January 17, 2018, 22:34:29 »
Ich möchte gerne das folgende Projekt zur Überwachung von bis zu 16 Aquarien realisieren.

[...]

Meine Fragen:
  • Mit welchen Komponenten würdet ihr die Wasser Durchflussmenge, Pumpenstrom und den Wasserleitwert und 220V Stromausfall messen?
  • 1 PC der 8 Master abfragt oder besser RED Bricks?
  • Wenn der Strom ausfällt brauche ich SMSe, da dann der Internet Router vermutlich auch nicht mehr geht. Geht das auch ohne PC?

Wasserdurchflusssensoren kann man fertig kaufen. Kann aber mangels Erfahrung keinen empfehlen. Scheinen häufig Impulsgeber zu sein. Sprich, man bekommt Spannungsimpulse, deren Frequenz von der Durchflussmenge abhängt.

Die Impulse kann man z. B. mit dem Edge Counter vom Industrial Digital In Bricklet zählen lassen (1 x pro Sekunde abfragen und Menge der Impulse in Liter pro Sekunde umrechnen). Oder über eine kleines Elektro-Bastelprojekt (Kondensator + Widerstand / F/U-Wandler IC) in eine Spannung umwandeln, und die dann Analog In Bricklet periodisch abfragen und in Liter pro Sekunde umrechnen.

Der Leitwert in Siemens ist der Kehrwert des elektrischen Widerstandes. Jetzt hängt es von der Aussagekraft ab, die man erreichen will. Man _könnte_ einfach zwei Elektroden ins Wasser tauchen, eine Spannung anlegen, die Stromstärke messen, den Kehrwert des Widerstand berechnen und fertig. Da die Leitfähigkeit des Wassers aber auch von der Temperatur abhängt, sollte diese in die Bewertung mit einfließen. Also: eine Kombination aus Thermocouple und Voltage/Current Bricklet.

Für die Überwachung der Spannungsversorgung würde ich das ganze System (die Überwachung, und wenn möglich/nötig gleich auch alle Aquarien) an eine USV hängen. Viele von denen bieten die Möglichkeit einen Ausfall der Spannungsversorgung via USB oder RS232 zu melden. Dann hängt es von der Art der Internetverbindung ab, also ob die auch vom Stromausfall betroffen ist, wie man den Alarm schickt.

Für wirklich kritische Monitorings wird der Alarm übrigens besser dann ausgelöst, wenn sie sich nicht mehr regelmäßig melden. Deine Software könnte also z. B. via cron Job regelmäßig einen HTTP Request auslösen. Ein unabhängiges System (z. B. Skript bei irgendeinem Billighoster) kann Dich dann alarmieren, wenn die Meldung auffällig lange ausgeblieben ist.

Ich würde mal aus dem Bauch heraus schätzen, dass ein Red Brick die Daten der 16 Aquarien gut verarbeiten kann, wenn Deine Software schonend mit seinen Ressourcen umgeht. Pro Aquarium würde ich dann einen Sensor-Block (Step-Down Power + Master + WIFI/RS485 + Bricklets) zusammenstellen, und die dann an den Red Brick - Block (Power + RED + Master + WIFI/RS485) anbinden.

Großes Projekt, dass Du Dir da vorgenommen hast. Respekt!
Komponentenzusammenstellung, Design, Programmierung, Kalibrierung, Setup, Fehlersuche... Für sowas würde ich (auch) gerne bezahlt werden  ;)

Viel Erfolg!


20
Allgemeine Diskussionen / Re: Neues NFC Bricklet
« on: January 17, 2018, 20:20:41 »
Genau das habe ich mich just heute auch gefragt.
Seit wann ist das Bricklet eigentlich nicht mehr verfügbar?

Gruß
  Bernhard

21
Hardware / Re: Webcam Stream über Red Brick
« on: May 16, 2017, 11:53:51 »
Hi,

bei Fragen zur VLC Konfiguration wendest Du dich vermutlich besser an das VideoLAN Forum.
Der Spezifikation nach sollte die Allwinner A10s CPU H.264 1080p @ 30fps Video encoding unterstützen.
  • Vielleicht nutzt VLC den falschen Codec?
  • Vielleicht fehlt die Treiber-Unterstüztung für Hardware-Encoding im Kernel (oder so)? Schau mal im Brick Viewer, ob der Service "GPU" aktiviert ist.
Gruß
  Bernhard

22
Hi,

das Problem kann hier an mehreren Stellen liegen.
  • Carrier-grade NAT
    Der Internet Provider verwendet für viele Verbindungen die gleiche IP, und jeder Kunde erhält einen anderen Port. Wenn die IP Adresse im Bereich 100.64.0.0/10 liegt ist dies bei Dir der Fall.
    Ein einfacher Verbindungsaufbau zum Brick Daemon von außen (also nicht über localhost oder LAN) wird dann immer scheitern.
  • Firewall beim Provider
    Wenn Dein Provider jeder Verbindung eine eigene IP zuweist ist es gut möglich, dass er eingehende Verbindungen auf zu "unüblichen Ports" auf diese IP sperrt.
    Versuch mal, den Web Server Service im Brick Viewer zu aktivieren, und diesen dann über die öffentliche IP Adresse aufzurufen.
  • Firewall im Red Brick Image
    Mir wäre nicht bekannt, dass bei dem Red Brick Image eine Firewall Policy konfiguriert ist. Herausfinden kannst Du dies mit dem Befehl sudo iptables -L
    Das Ergebnis sollte dann so ausssehen, wenn keine Firewall Regeln definiert sind:
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         

    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         

    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         

Vermutlich ist es entweder Fall eins oder zwei. Dann kann ich Dir leider nicht weiterhelfen.

Gruß
  Bernhard

23
Hallo,

um den Strom- und Datenverbrauch meines Systems zu reduzieren möchte ich die Internetverbindung nur im Bedarfsfall aktivieren. (Paket mit Messwerten erfasst? -> Connect; Wait for "Connected"; Upload; Disconnect.)

In der RedBrick API habe ich keinen Hinweis gefunden, wie dies bewerkstelligt werden könnte, aber der BrickViewer macht das ja irgendwie. Oder läuft das über Shell-Skripte, die der BrickViewer ausführt? Wenn ja: welche?

Viele Grüße
  Bernhard

Pages: 1 [2]