Jump to content

adrianbernhard

Members
  • Gesamte Inhalte

    27
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von adrianbernhard

  1. Hallo,

    ich wollte heute auf 2.0 updaten. Nur gelingt mir nicht mehr auf meinem raspberry pi mit fedora das kompilieren.

    Anscheinend findet das make script nicht die richtigen Pfade:

    Package libusb-1.0 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libusb-1.0.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libusb-1.0' found
    Package libusb-1.0 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libusb-1.0.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libusb-1.0' found
    Package libusb-1.0 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libusb-1.0.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libusb-1.0' found
    Package libudev was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libudev.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libudev' found
    Package libudev was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libudev.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libudev' found
    Package libudev was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libudev.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libudev' found
    make: Warning: File `Makefile' has modification time 14938058 s in the future
    CC brick.o
    /bin/sh: gcc: Kommando nicht gefunden.
    make: *** [brick.o] Fehler 127

    Wo kann ich denn die Pfade ändern. Die Lib´s existieren ja (libudev.so.0.13.1 und libusb-1.0.so.0.1.0). Außerdem habe ich es auf dem selben System auch schon einmal gemacht. Da aber über das python script brickd_linux.py. Wie hier beschrieben http://www.tinkerunity.org/forum/index.php/topic,238.msg1054.html#msg1054

    Oder bin ich auf dem falschen Weg?

     

  2. Moinsen.

     

    also bei der ersten Softwareversion war ein file logger implementiert worin ich sehen konnte bis wann die Temperaturwerte gespeichert wurden. Dadurch konnte ich sehen, dass der Ausfall zeitlich nicht mit den Schalten der Lasten zusammen hing.

     

    Daraufhin hab eine reduzierte Version nur zum Schalten geschrieben ohne den restlichen Schnickschnack. Um bzw. das LCD Modul auszuschließen.

     

    Bei der Kontrolle der syslog ist mir jedoch aufgefallen, dass diesmal der Pi um 6.25 nicht mehr auf die Netzwerkschnittstelle zugreifen konnte.

     

    Oct 12 06:25:53 raspberrypi kernel: [128068.549829] smsc95xx 1-1.1:1.0: eth0: Failed to read register index 0x00000114

     

    Keine Ahnung ob das nun dazu führte, dass der Pi nicht mehr reagierte . D.h. nochmals laufen lass und abwarten.

     

    Nachtrag 31.10:

    Zur Zeit hängt es am Raspberry. Er verliert irgendwann die Netzwerkverbindung, ab da geht dann gar nichts mehr. Stundenlanges recherchieren hat mich nicht wirklich schlauer gemacht. Da immer davon die Rede ist dass die Geräte am USB zu viel Saft ziehen. Was ich aber ausschließe.

    Nun habe ich mal den Fedora Remix RC2 (Vorher Rasbian) drauf gezogen und brickd, screen, und java installiert.

    Schade, das es nicht stabil läuft.

    Achja und ich benutze nicht mehr das DualRelay, stattdessen zwei Halbleiterrelais mit IO4.

     

     

  3. Noch ein Nachtrag.

    Ich habe letzte Nacht mal eine reduzierte Version meines Programms laufen lassen und es funktioniert dennoch nicht.

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package tinker_neu;
    
    import com.tinkerforge.BrickletDualRelay;
    import com.tinkerforge.IPConnection;
    import com.tinkerforge.IPConnection.TimeoutException;
    import java.io.IOException;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Locale;
    
    /**
    *
    * @author adrianbernhard
    */
    public class Zeitschaltung {
        public static final String host = "192.168.2.114";
    //    public static final String host = "localhost";
        public static final int port = 4223;
        public static final String UID4 = "7FJ";   // Doppel Relay //
        public static final double AnschaltzeitBeleuchtung1 = 9;
        public static final double AusschaltzeitBeleuchtung1 = 14;
        public static final double AnschaltzeitBeleuchtung2 = 17;
        public static final double AusschaltzeitBeleuchtung2 = 22.25;
        public static final double AnschaltzeitSekundär = 1.30;
        public static final double AusschaltzeitSekundär = 8.30;
    public static void main (String args[]) throws IOException, TimeoutException, InterruptedException {
    int a = 10;
    while(a<15)
        {
            try{
                Zeitschaltung.schalten();
                }
            catch (TimeoutException e){
                System.out.println("Verbindungs Fehler/Tinker eingeschlafen");
                }
            Thread.sleep(60000);
        }
    
    }
        
    public static void schalten () throws IOException, TimeoutException {
        IPConnection ipcon = new IPConnection(host, port);
        BrickletDualRelay dr = new BrickletDualRelay (UID4);
    
        ipcon.addDevice(dr); 
        
        Calendar.getInstance();
        Date jetzt;
            jetzt = Calendar.getInstance(Locale.GERMAN).getTime();
            
        java.text.SimpleDateFormat sdf1;
            sdf1 = new java.text.SimpleDateFormat("HH.mm");
        
        double aktuelleZeit;
            aktuelleZeit = Double.parseDouble(sdf1.format(jetzt));
        
        boolean relay2;
            relay2 = dr.getState().relay2;     
            
        if (aktuelleZeit >= AnschaltzeitBeleuchtung1 & aktuelleZeit <= AusschaltzeitBeleuchtung1) 
                {
            dr.setState(true,relay2);
                }
    
        else if (aktuelleZeit >= AnschaltzeitBeleuchtung2 & aktuelleZeit <= AusschaltzeitBeleuchtung2) 
                {
            dr.setState(true,relay2);
                } 
                    
        else 
                {
            dr.setState(false,relay2);
                }
                       
        boolean relay1;
            relay1 = dr.getState().relay1;
                   
        if (aktuelleZeit > AnschaltzeitSekundär & aktuelleZeit < AusschaltzeitSekundär) 
                {
                dr.setState(relay1,true);
                }
        
        else 
                {
                dr.setState(relay1,false); 
                }      
    }
    
    }
    

  4. Also beim testen ist mir aufgefallen, dass man nicht gleichzeitig ins LCD schreiben und das Relay schalten sollte. Das passiert nun nicht mehr.

    Die Ausfälle traten aber nicht während des Schaltens auf. Sondern irgendwann ohne erkennbaren Zusammenhang. Mal nach 10 minuten mal nach 18 Stunden. Aber bisher hat es keinen Tag ausgehalten. Das mit den Pausen ist noch neu, vielleicht hilft es ja wirklich. War nur ein Idee.

     

     

    @Die Borg ;)

    Das mit dem Kondensator hatte ich schon in einem anderen Thread geklärt und den Fix selber durchgeführt. Das LCD läuft nun super. Das Ausfallen des LCD hatte keine Folgen für das Program, es lief weiter.

     

    Aktualisierung:

    Also die Änderungen haben nichts gebracht. Heute Morgen war es wieder vorbei.

    Ich werde mal nun nach jeder einzelnen LCD Schreibanweisung eine Pause setzen.

     

     

  5. Moinsen.

     

    ich habe ein Problem mit der Stabilität meines Programms oder des MasterBricks.

     

    Zunächst mein Aufbau:

    1x RaspberryPi steuert ein MasterBrick mit  1x Dualrelay, 1x LCD 20x4, 1x Temperatursensor, 1x Analog In

    Alles versorgt über ein Step-down-Power Supply mit 12V 2A Netzteil.

    Das dual Relay ist mit je einem Varistor 360V geschützt und dient eigentlich nur als Zeitschaltuhr. Mit dem Analog in habe ich mir ein Wasserthermometer gebaut. d.h. das Programm muss die Umrechnung durchführen. Und das ganze soll dann auf dem LCD angezeigt werden.

    Nun funktioniert mein Programm zwar nur ab und zu reagiert die Masterbrick nicht mehr.

     

    Ich habe mittlerweile folgende Massnahmen ergriffen:

    - Raspberry hängt jetzt am Kabel und nicht mehr am Wlan-Stick

    - die Anlage läuft hinter einem Trenntrafo (ich hatte Störungen im Stromnetz: kurzes Brummen meiner Hifi Anlage, Funkgesteuerte Steckdosen gingen an bzw. aus, gedimmte Lampen sprangen aus usw.) Daher hatte ich das Teil eh noch rumstehen.

    - Im Programm habe ich nahezu jede Abfrage des Masterbricks mit Thread.sleep(100) zeitlich getrennt.

     

    Naja da ich die letzten Änderungen erst heute vorgenommen habe kann ich nicht sagen ob es besser geworden ist.

    Aber habt Ihr noch Erfahrungswerte? Bzw. gibt es Tipps zur Verbesserung der Stabilität?

     

     

     

  6. Bei mir tritt dieser Fehler nun auch auf.

    Ich hatte schon einen Aufbau mit thermo und luftfeuchte Bricklets und lcd 20x4 mehrere Wochen am laufen, ohne Probleme.

    Nun habe ich einen neuen Aufbau mit doppel Relay/LCD 20x4 und der Step-Down Power Supply. Jetzt geht immer wieder der LCD aus. Ich habe die Relais wie beschrieben mit je einen Varistor 420V abgesichert. Das Programm läuft aber das LCD friert irgendwann ein(zum Teil nach wenigen minuten mal nach Stunden). Dann dimmt die Hintergrundbeleuchtung ab und zeigt gar nichts mehr an.

    Ich schreibe sekündlich das LCD neu.

     

     

  7. Moinsen zwei Fragen.

    Wie empfindlich würde der Step-Down Supply auf 30 Volt Spannung reagieren? Ist der da sehr empfindlich oder etwas "weiter" konstruiert. Hab noch ein 30Volt netzteil (850mA) (damit ich ordentlich Saft habe)

     

    Und da es nicht ausdrücklich beschrieben ist: geht auch eine Wechselspannung. Hab noch ein 60 Watt Netzteil mit 11,5 V AC.

     

    Warum soviel Saft auf der Leitung? Ganz einfach ich ärgere mich noch mit nem 5v 2A über ein USB Hub rum. Da fällt ständig das LCD aus und die Kiste hängt wenn ich meine Relays schalte.

    So. Fertich.

  8. Da steht es schon ^^

    http://www.tinkerforge.com/doc/Software/Bricklets/DualRelay_Bricklet_Java.html#BrickletDualRelay::getState

     

    (Im setState drüber steht sogar der Hinweis wie man nur eines von beiden schaltet ;))

     

    Oder meinst du, dass nicht klar wird, dass man relay1 von getState() abfragen kann?

    Letzteres. Ohne das wissen hatte ich probiert mit State dem ganzen Herr zu werden. Aber dass die Lösung so einfach ist. Naja Anfängerfehler.

    Ich hab aber gerade selber nochmal nachgelesen. Aber Stand der Satz:

    "The returned object has the public member variables boolean relay1 and boolean relay2." schon letzte Woche drin? Dann hab ich wohl einfach nicht genau gelesen.

     

  9. Da braucht man doch nur ein zusätzliches getState() mit dem man den aktuellen Relais-Zustand ausliest und dann das Ergebnis für das nicht zu verändernde Relais damit wieder setzt.

     

    Danke soweit. Vielleicht hast du noch einen Tipp zur Umsetzung (bin Java Anfänger)

    Also den Zustand kann ich so abfragen und bspw. auf dem LCD wiedergeben:

     

    State state1 = null;
                    try {
                        state1 = dr.getState();
                    } catch (TimeoutException ex) {
                        Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
                    }
    lcd.writeLine((short)2, (short)0,"" + state1);

     

    Nur wie kann den nun auswerten und für set.State() verwenden? Kann ja nur true oder false sein. Ich brauch irgendeinen Hinweis wo nach ich suchen muss, dann kann ich mir es auch anlesen.

    Danke.

  10. Hi,

    ich möchte das Doppelrelais als Hygrostat und Thermostat verwenden. Aber ich muss bei set.State beide Relais schalten. Da ich ja zwei Listener nutze kann ich dass nicht machen. Wie kann ich das vielleicht anders Schreiben.

     

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package tinker;
    
    import com.tinkerforge.*;
    
    
    
    /**
    *
    * @author Adrian
    */
    
    public class NewClass 
    {
        public static final String host = "localhost";
        public static final int port = 4223;
        public static final String UID1 = "7Ys";   // Temperatursensor //
        public static final String UID2 = "7Vb";   // Luftfeuchtigkeitssensor //
        public static final String UID3 = "7Yo";   // LCD 20*4 //
        public static final String UID4 = "7FJ";   // Doppel Relay //
        
        public static void main (String args[])  throws Exception 
            {
            System.out.println("Start");
          
            NewClass.Temp();
            }
        public static void Temp()  throws Exception 
            {
            final IPConnection ipcon = new IPConnection(host, port); // Can throw IOException
            final BrickletTemperature temp = new BrickletTemperature(UID1); // Create device object
            final BrickletHumidity hum = new BrickletHumidity(UID2);
            final BrickletLCD20x4 lcd = new BrickletLCD20x4(UID3);
            final BrickletDualRelay dr = new BrickletDualRelay (UID4);
            
            // Add device to IP connection
            ipcon.addDevice(temp); // Can throw IPConnection.TimeoutException
            ipcon.addDevice(hum);
            ipcon.addDevice(lcd);
            ipcon.addDevice(dr);
            // Don't use device before it is added to a connection
    
            lcd.backlightOn();
            lcd.clearDisplay();
            
            // Get threshold callbacks with a debounce time of xx seconds (xx000ms)
            temp.setDebouncePeriod(1000);
            hum.setDebouncePeriod(1000);
    
            // Configure threshold for "greater than 30 °C" (unit is °C/100)
            temp.setTemperatureCallbackThreshold('>', (short)(-30*100), (short)0);
            hum.setHumidityCallbackThreshold('>', (short)(0), (short)(100));
            
            // Add and implement temperature reached listener 
            // (called if temperature is greater than 30 °C)
            temp.addListener(new BrickletTemperature.TemperatureReachedListener() {
                @Override
                public void temperatureReached(short temperature) {
                    final java.util.Date now = new java.util.Date();
                    final java.text.SimpleDateFormat sdf = new 
                            java.text.SimpleDateFormat("dd.MM.yyyy HH.mm.ss");
                    lcd.writeLine((short)0, (short)0, "T: " + temperature/100.0 +
                            " " + (char)0b11011111 + "C  ");
                    // wenn Temperatur unter 28° dann geht relay 1 an //
                    if(temperature < 28*100) {
                        dr.setState(true,false);
                    } else {
                        dr.setState(false,false);
                    }
                }
            });
            hum.addListener(new BrickletHumidity.HumidityReachedListener() {
                @Override
                public void humidityReached(int humidity) {
                    final java.util.Date now = new java.util.Date();
                    final java.text.SimpleDateFormat sdf = new 
                            java.text.SimpleDateFormat("dd.MM.yyyy  HH.mm.ss");
                    lcd.writeLine((short)1, (short)0, "rF: " + humidity/10.0 
                            + " %RH ");
                    lcd.writeLine((short)3, (short)0, sdf.format(now));
                   if(humidity < 500) {
                        dr.setState(false,true);
                    } else {
                        dr.setState(false,false);
                    }
                }});
          
    }
    
    }

    Ich hab mal den Code gepostet wie er nicht funktionieren kann. Damit mein Problem deutlich wird.

  11. Moin.

    Mir ist gerade aufgefallen, dass man den Blog auf dem Apple iPad nicht lesen kann. Für mich sieht es so aus als würde das iPad da eine Weiterleitung blockieren. Es wird eine leere Seite mit dem Text "Welcome to nginx!" dargestellt.

    Grüße

    Ps. Sorry hab's falsch platziert.

×
×
  • Neu erstellen...