Jump to content

Stefan

Members
  • Gesamte Inhalte

    76
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Stefan

  1. Ich wurde von Nic angesprochen wie meine Entwicklungsumgebung für die Firmwareentwicklung aussieht. Ich habe mich an die Anleitung http://www.tinkerforge.com/de/doc/Software/Firmwares_And_Plugins.html#firmwares-and-plugins gehalten. Ich habe keine IDE benutzt, sondern die Textfiles mit dem Editor editiert. Dabei sind jedoch folgende Stolpersteine aufgetreten (unter virtualisierten Ubuntu 13.04 64 bit): Es wurden 32 bit Bibliotheken benötigt https://sourcery.mentor.com/GNUToolchain/kbentry62 beschreibt hierfür die nötigen Schritte. In der Konsole wurden mir danach weitere Abhängigkeiten gezeigt, die ich installiert habe. Bei der Installation von CodeSourcery wurde es nicht richtig in den PATH gesetzt.
  2. @Nic Meinst du wie ich die FW kompiliert habe, wegen meinem anderen Thread http://www.tinkerunity.org/forum/index.php/topic,1811.0.html ? Ich schreibe dazu etwas in dem anderen Thread, da dies eigentlich nichts hiermit zu tun hat oder verstehe ich dich falsch?
  3. Perfekt, jetzt funktioniert es endlich. Danke für die Antworten. Wer hätte gedacht, dass es so schwierig ist eine Funktionalität zu entfernen. @Loetkolben Meine Idee um die Status LEDs anzusprechen wäre, dass man Funktionen schreibt, die auf folgende Funktion zurückgreifen und damit die LEDs an- und ausschalten können. void led_on(const uint8_t led_num) void led_off(const uint8_t led_num) led_num kann mindestens folgende Werte annehmen, in Klammern steht die Bedeutung, die meiner Meinung nach, die LEDs haben: LED_EXT_BLUE_0 (Brick startet) LED_EXT_BLUE_1 (Brick startet) LED_EXT_BLUE_2 (Brick startet) LED_EXT_BLUE_3 (Brick startet) LED_STD_BLUE (Brick läuft nicht im Bootloadermodus) LED_STD_RED (Fehler) Wie man genau dann diese neuen Funktionen des Bricks über die API anspricht weiß ich nicht. Ich denke am besten man vollzieht dies nach, indem man sich eine Methode wie setEthernetMACAddress bzw. set_ethernet_mac_address (je nach Programmiersprache der API) anschaut. Ich hoffe, ich konnte etwas weiterhelfen und habe nicht nur Sachen erzählt, die du eh schon weißt.
  4. Ich habe jetzt das Plugin mit der beschriebenen Codeänderung kompiliert und es funktioniert nicht. Jemand eine Idee wie der Programmcode verändert werden müsste, damit man ein Master Brick ohne leuchtende blaue LED im Betrieb hat?
  5. Danke für die Antworten. Ich werde die vorgeschlagenen Tests mal durchprobieren und logfiles posten. Mit Homesteuerung 24/7 habe ich keine besondere Marke gemeint, sondern einfach einen PC, der das Zuhause 24 Stunden an 7 Tage steuert. Das komische ist, dass Windows die Master Bricks anzeigt, sie aber nicht durch die API und Brickv ansprechbar sind, bei einem Reset mit dem Resetknopf sind sie wieder ansprechbar.
  6. Vielen Dank für die Antworten. Das USB-Hub, welches das Master Brick und die USB-Verlängerung verbindet, ist aktiv, eine zu geringe Stromzufuhr kann man also ausschließen. Es ist kein Stack, die zwei Master Bricks sind räumlich voneinander getrennt. An dem problematischen Master Brick hängt ein IO16, ein Ambient Light und zwei Temperature Bricklets. Es ist ein Desktop PC mit Windows 8. Unter Windows 7 hatte ich damals auch schon die Probleme. Im Moment habe ich keine Möglichkeit einen anderen Rechner anzuschließen, ich möchte aber das Mainboard bald gegen ein sparsamers Austauschen, der PC läuft als Homesteuerung 24/7, und dadurch wird er ja sozusagen zu einem neuen PC. Vielleicht gibt es aber auch eine andere Möglichkeit?
  7. Im Brickv ist dann das entsprechende Master Brick mit seinen angeschlossenen Bricklets verschwunden und bei Zugriff über die JAVA API wird eine Exception geworfen: C:\Users\Stefan\Desktop>java -jar Wattmeter.jar Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa der.java:58) Caused by: com.tinkerforge.TimeoutException: Did not receive response in time fo r function ID 7 at com.tinkerforge.Device.sendRequest(Device.java:197) at com.tinkerforge.BrickletIO16.setPortInterrupt(BrickletIO16.java:292) at Wattmeter.main(Wattmeter.java:29) ... 5 more
  8. Ich habe mir den Master Brick Quellcode angeschaut. Die LED kann man einfach deaktivieren, indem man in bricklib/utility/init.c einfach in Zeile 58 led_on(LED_STD_BLUE); auskommentiert und dann den veränderten Quelltext kompiliert und auf das Master Brick flasht. Ich werde dies nächste Woche mal ausprobieren und darüber berichten. Der Nachteil natürlich ist, dass man nicht erkennen kann, ob sich das Master Brick im Bootloader Modus befindet.
  9. Hallo, ich betreibe unter Windows 8 zwei Master Bricks im 24/7 Betrieb. Immer dasselbe Master Brick verliert nach ein paar Tagen die Verbindung zum brickd. Ganz selten verliert auch das zweite Master Brick die Verbindung. Das Master Brick, bei dem die Verbindung öfters verloren geht, ist über ein 10 Meter langes aktives USB-Kabel und einen USB-Hub (ich habe schon zwei verschiedene Hubs getestet) angeschlossen. Keine perfekten Bedingungen, aber noch immer in den USB-Spezifikationen. Im Windows Gerätemanager werden beide Master Bricks angezeigt, auch wenn zu einem oder beide die Verbindung verloren geht, d.h. der Computer hat noch Verbindung zum Master Brick, da ansonsten entfernte Geräte normalerweise aus dem Gerätemanager verschwinden. Ich wäre dankbar, wenn jemand eine Problemlösung für den Verbindungsverlust hätte und sage im Voraus schon mal Danke.
  10. Hallo, ich habe meinen Master Brick im Schlafzimmer in einer Blechdose. Bei Dunkelheit sieht man aber noch ein wenig das Leuchten der blauen LED. Könnte man nicht in der API eine Möglichkeit entwerfen, das LED Licht zu deaktivieren bzw. wo könnte man die Master Brick Firmware anpassen, um das LED zu deaktivieren. Ich fände dies wäre elaganter als die LEDs abzukleben. Vielen Dank, Stefan Edit: Seit Master Firmware 2.3.2 kann man die LED per API deaktivieren.
  11. Ich habe den S0-Anschluss einfach nur an mein IO16-Bricklet angeschlossen (genaue Beschreibung im Anfangspost) und es hat funktioniert. Mit dem Industrial Digital IN4 dürfte dies genauso gehen. Das Industrial Digital IN4 ist galvanisch getrennt und wenn dein Zähler auch galvanisch getrennt ist (sind die meisten S0-Zähler), dürfte theoretisch beim Ausprobieren auch nichts kaputt gehen (ohne Gewähr, ich bitte mich zu korrigieren, wenn dies falsch ist).
  12. Zwischen den Brickletanschlüssen der einzelnen Bricks ist die Temperatur gleich. Zwichen zwei verschiedenen Kabeln am gleichen Brick (15cm und 200cm) ist die Temperatur ebenfalls gleich.
  13. Stefan

    Kalibrierung

    Ich habe zwei Masterbricks 1.0 mit Protokoll 2.0. Ich habe ein kleines Problem, das ich schon mit dem Protokoll 1.0 hatte und dieses Problem möchte ich gerne lösen. Das eine Masterbrick zeigt mit dem selben Temperaturbricklet ungefähr eine Differenz von zwei Grad gegenüber dem anderen Masterbrick an. Kann dieses Problem gelöst werden, wenn ich mir ein Poti Bricklet bestellen würde und das Masterbrick über Brickv kalibrieren würde.
  14. Ich habe das "IO4-Bricklet" aus meiner Beschreibung herausgenommen. Ich wusste nicht, dass es keine 5 Volt schalten kann (ich habe nur das "IO16-Bricklet") Natürlich lassen sich auch noch andere Bricklets benutzen (Analog In Bricklet, Industrial Digital IN 4, ...). Jedoch denke ich, dass das "IO16-Bricklet" die einfachste Möglichkeit ist. Mein Projekt funktioniert einwandfrei. Ich habe es zwar noch nicht im produktiven Einsatz, da ich das zu messende Gerät erst noch bekomme, jedoch konnte ich andere Geräte, von denen ich den Stromverbrauch kenne, testen. Dann liegt beim Impuls wirlich nur 0 Volt an, trotzdem funktionert es. Ich hatte die Frage nur gestellt, weil es mich interessiert, wie es intern funktioniert.
  15. Ich habe jetzt, zum besseren Verständnis, hinzugefügt, wie die S0-Schnittstelle intern arbeitet. Außerdem habe ich jetzt eine Warnung hinzugefügt, die Polarität nicht zu tauschen. Vielen Dank batti für das Beantworten der Frage. Ich habe die Frage ein wenig ungenau gestellt. Die S0-Schnittstelle will mindestens an einem 5 Volt Stromkreis angeschlossen werden, d.h. wenn der Eingang auf "low" schaltet, muss zwischen GND und Eingang 5 Volt fließen, ist dies so? Dies wird ja automatisch bedeuten, dass der Eingang, obwohl er "low" anzeigt, positiv "high" ist, oder?
  16. Die "S0"-Schnittstelle ist ein nach EN 62053-31 definierte Schnittstelle zum Austausch von Messwerten. Pro Verbrauchseinheit – die Verbrauchseinheit und die Größe der Verbrauchseinheit unterscheidet sich je nach Gerät – wird ein Impuls ausgelöst. Diese Impulse können mit Produkten von Tinkerforge ausgewertet werden. Am besten eignet sich dafür das „IO16-Bricklet“. Der „S0+“-Anschluss wird mit einem Pin verbunden, der auf "input" mit "pull-up" eingestellt ist und der „S0-"-Anschluss wird mit GND oder mit dem äquivalenten "output only" Minuspol verbunden. Dabei sollte das "IO16"-Bricklet" auf 5 Volt gestellt werden. Wichtig ist, dass die Anschlüsse nicht vertauscht werden. Immer wenn ein Impuls ausgelöst wird, wechselt der Eingangspin von "high" auf "low" ("low" bleibt mindestens 30 ms erhalten) und wechselt dann wieder auf "high". Natürlich lassen sich auch noch andere Bricklets benutzen ("Analog In Bricklet", "Industrial Digital IN 4", ...). Auf diese "Bricklets" werde ich jedoch nicht näher eingehen, wichtig ist nur, dass der Impuls erfasst wird. Intern ist der Ausgang ein offener Kollektor (open collector) eines Transistors, der einem Optokoppler nachgeschaltet ist. Dies bedeutet, dass der zu messende Strom galvanisch vom "Bricklet" getrennt ist. Ich habe mir einen Elektrizitätszähler gebaut. Dazu habe ich einen Wechselstromzähler mit S0-Schnittstelle gekauft (Eltako WSZ12DE-32A) und wie beschrieben angeschlossen. Immer wenn das angeschlossene Gerät eine halbe Wattstunde verbraucht hat, wird ein Impuls ausgegeben, der mein „IO16-Bricklet“ registriert (jeder Wechsel von "high" auf "low" symbolisiert eine verbrauchte halbe Wattstunde). Den Wechselstromzähler kann man direkt im Sicherungskasten unterbringen - Achtung im Sicherungskasten liegen mindestens 230 Volt, oftmals auch 400 Volt an, Lebensgefahr, also Wechselstromzähler nur von einem authorisierten Fachmann montieren lassen. Alternativ kann man auch eine Steckdose und ein Stecker an den Zähler montieren lassen und so den Stromverbrauch von Geräten mit Stecker messen. Bei mir hat die Übertragung der Impulse über die Adern eines 55m langen Netzwerkkabel (Draka Datenleitung UC900 SS 23 4P S/FTP PE, Cat.7, schwarz) bei 0° C einwandrei geklappt. Ein Beispielprogramm in Java, dass den durchschnittlichen Verbrauch der letzten 5 Minuten alle 5 Minuten ausgibt (ausgelegt für einen Impuls pro 0,5 W/h). import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.atomic.AtomicInteger; import com.tinkerforge.BrickletIO16; import com.tinkerforge.IPConnection; public class Wattmeter { private static final String host = "localhost"; private static final int port = 4223; private static final String UID = "UID"; // Change to your UID // Counter will be incremented for every 0.5 W/h consumption // AtomicInteger instead of int to avoid errors - there are two threads private static AtomicInteger counter = new AtomicInteger(); // 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 { // Create connection to brickd IPConnection ipcon = new IPConnection(host, port); BrickletIO16 io16 = new BrickletIO16(UID); // Add device to IP connection ipcon.addDevice(io16); // Can throw IPConnection.TimeoutException // Don't use device before it is added to a connection // Set the debounce period of the InterruptListener listener to 30ms io16.setDebouncePeriod(30); // Add and implement listener for interrupt (called if pin 0 of port a changes) io16.addListener(new BrickletIO16.InterruptListener() { public void interrupt(char port, short interruptMask, short valueMask) { // Increment counter, if pin 0 changes from high to low if ((valueMask & 1) == 0) { counter.incrementAndGet(); } } }); // Enable interrupt on pin 0 of port a io16.setPortInterrupt('a', (short) 1); // Print every 5 minutes the average consumption out new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println(counter.getAndSet(0) / 2 * 12 + " W/h"); } }, 300_000, 300_000); // Ctrl-c terminated the console program } }
  17. Stefan

    Wattmesser

    Mir ist die Frage nicht klar. Wenn du einen auf Eingang gestellten Pin mit GND/"-" verbindest ziehst du den Eingang auf Low und löst einen Interrupt aus, wenn der Pin dafür konfiguriert ist. Damit die S0-Schnittstelle funktioniert, soll - laut Hersteller - mindestens ein 5 Volt Stromfluss durch die S0-Schnittstelle fließen. Dabei soll an "S0+" die positive und an "S0-" die negative Spannung anliegen. An "S0-" habe ich GND/"-" angelegt (negative Spannung). Bei "S0+" habe ich den Eingang des IO16 angeschloßen. Liegt jetzt an "S0+" eine positive Spannung an oder gar keine, da der Eingang ohne Spannung überprüft, ob GND/"-" durchgeschaltet wird?
  18. Stefan

    Wattmesser

    Gute Idee. Ich werde es dann "Leistungsmesser (Wattstunden)" nennen. Jetzt bleiben nur noch zwei Fragen offen: Bei dem IO16-Bricklet sind GND und der „output only“ Minuspol gleichbedeutend, oder? Wenn ich einen digitalen Eingang mit GND bzw. dem Minuspol verbinde, wird er automatisch zu einem Pluspol, oder?
  19. Stefan

    Wattmesser

    Jetzt habe ich endlich mein Wattmesser erfolgreich zum Laufen gebracht. Ich habe mir einen Wechselstromzähler mit S0-Schnittstelle gekauft (Eltako WSZ12DE-32A, ca. 40€) und lese per IO16-Bricklet die Impulse der S0-Schnittstelle (2 Impulse pro W/h) aus. Ich habe mir vorgenommen über die Weihnachtszeit mein Projekt in „Projektvorstellungen und Projektideen“ bzw. „Project introductions and project ideas“ vorzustellen. Jedoch habe ich dazu noch drei theoretische Fragen, damit ich das Projekt besser beschreiben kann. Bei dem IO16-Bricklet sind GND und der „output only“ Minuspol gleichbedeutend, oder? Wenn ich einen digitalen Eingang mit GND bzw. dem Minuspol verbinde, wird er automatisch zu einem Pluspol, oder? Meint ihr, dass ich das Projekt als „Wattmesser (230 Volt) „ oder als „Smart Meter“ beschreiben soll. Vielen Dank für eure Hilfe bei meinem Projekt.
  20. Danke für die Antwort. Ich habe die Firmware des MasterBricks auf 1.4.6 geflasht und nun funktioniert es einwandfrei.
  21. Hallo, mein Analog In Bricklet zeigt mir konstant 46V an. Ich habe eine Batterie über VIN und GND angeschlossen und weiterhin werden mir 46V Spannung angezeigt. Ich wäre für jede Hilfe dankbar.
  22. Stefan

    Wattmesser

    Perfekt. Wenn das neue "Current Bricklet" einen Impulseingang von mindestens 30 ms erkennt und ihr meint, dass weder mein Mikrocontroller mit PC noch mein messendes Gerät Schaden annehmen kann (Impulsaugang des Stromzählers ist optisch gekoppelt), ist er gekauft.
  23. Stefan

    Wattmesser

    Danke für die Antwort. Stimmt, Deutschland hat schon eine stabile Netzspannung, wahrscheinlich gibt es nur selten größere Abweichungen (230 V ± 10% sind erlaubt). Trotzdem werde ich mich wahrscheinlich für den Stromzähler mit S0-Schnittstelle in Verbindung mit dem "Current 12 Bricklet" (das Industrial Digital In 4 Bricklet" misst wechselnde Voltzahl, nicht wechselnde Amperezahl, da habe ich mich verlesen") entscheiden. Der Stromzähler hat ein Display mit dem insgesamten kW/h Verbrauch - falls mein PC mal ausfällt. Und gibt die wirkliche W/h Leistung aus und nicht nur die Amperezahl. Der S0-Impulsausgang des Zählers ist optisch vom Stromzähler entkoppelt. Dadurch müsste doch mein zu messendes Gerät und mein MasterBrick mit angeschloßenem PC sicher sein, oder? Ist für das "Current 12 Bricklet" ein Impulseingang von mindestens 30 ms ausreichend? Edit: Ich habe gerade gesehen, dass es das "Current 12 Bricklet" nicht mehr gibt. Habe ich dann mit Tinkerforge keine Möglichkeit mehr die Amperezahl zu messen?
  24. Stefan

    Wattmesser

    Danke für die Antwort. Dies wäre eine Möglichkeit. Dann müsste ich nur noch die Spannung auslesen, sonst wird mir das Ergebnis doch zu ungenau. Ich habe noch eine Möglichkeit gefunden. Einen Stromzähler mit S0-Schnittstelle. Solch ein Stromzähler gibt x (z.B. x = 1) Impulse pro verbrauchte W/h aus. Die S0-Schnittstelle überträgt bei fester Spannung (bis 27 Volt) im Low-Zustand (kein Impuls) weniger als 2mA im High-Zustand (Impuls) mehr als 10mA. Ein einzelner Impuls dauert mindestens 30 ms. Könnte ich die Impule mit dem "Industrial Digital In 4 Bricklet" auslesen oder ist eine Impulslänge von 30ms zu kurz?
  25. Stefan

    Wattmesser

    Hallo, ich würde gerne den Stromverbrauch in Wattstunden von einem Gerät an deutscher Netzspannung (der Verbrauch des Gerätes beträgt maximal 1400 W/h) am PC erfassen (ist direkt - ohne Stecker - über ein dreiadriges Kabel - Phase, Nullleiter, GND/Masse - am Strom angeschlossen). In einem alten Thread (http://www.tinkerunity.org/forum/index.php/topic,783.msg5505.html#msg5505) wurde hierfür ein Stromsensor (genauer Stromwandler) empfohlen. Kann dieser auch Wattstunden messen? Da das zu messende Gerät nicht billig ist, ist mir wichtig, dass dem Gerät nichts passieren darf. Dies ist aber doch mit einem Stromwandler gewährleistet, da er potentialfrei ist, oder? Ich würde mich freuen, wenn mir einer einen kaufbaren Stromwandler für mein Vorhaben empfehlen kann. Ich bedanke mich an alle, die meine Frage durchgelesen haben und mir hoffentlich weiterhelfen können, Stefan
×
×
  • Neu erstellen...