Jump to content

FD

Members
  • Gesamte Inhalte

    9
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von FD

  1. Hallo zusammen,

    anbei mein Code zur Erstellung einer CSV Datei, in der die Luftfeuchtigkeit jede 5 min abgespeichert werden soll. Lass ich den Code so laufen, wird bei mir im Ordner eine CSV Datei erstellt in der die Werte abgespeichert werden. Nun meine Frage:

     

    Ist es möglich, dass ich diesen Code als Porgramm auf den Red Brick hoch lade und mir die CSV Dateien auf dem Red gespeichert werden? Und wenn ja wie? (Ich möchte nicht den Brick Logger nutzen)

     

    Vielen Dank euch.

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from time import *
    
    HOST = "localhost"
    PORT = 4223
    
    UID_Hum = "Hu"
    
    from tinkerforge.ip_connection import IPConnection
    from tinkerforge.bricklet_humidity import BrickletHumidity
    
    
    if __name__ == "__main__":
        
        #Verbindung zu Bricklets wird aufgebaut.
        ipcon = IPConnection()
        
        Hum = BrickletHumidity(UID_Hum, ipcon)   
        ipcon.connect(HOST, PORT) # Connect to brickd
       
        # Don't use device before ipcon is connected
        
        t = time()
        flag = False
        j = True
        
        while True:
        
            Time_akt = localtime()
            
            if ((Time_akt[4] == 0 or Time_akt[4] == 5 or Time_akt[4] == 10 or Time_akt[4] == 15 or Time_akt[4] == 20 or Time_akt[4] == 25 or Time_akt[4] == 30 or Time_akt[4] == 35 or Time_akt[4] == 40 or Time_akt[4] == 45 or Time_akt[4] == 50 or Time_akt[4] == 55)\
                 and flag == False):
        
                flag = True
                print('Flag: ' + str(flag))
                #Sensoren auslesen alle 5min
                
                Luftfeuchtigkeit =  Hum.get_humidity()
                
                            
                #Akutelle Systemzeit auslesen
                Jahr = str(Time_akt[0])
                Monat = str(Time_akt[1])
                Tag = str(Time_akt[2])
                Stunde = str(Time_akt[3])
                Minute = str(Time_akt[4])
        
                #Sensordaten konvertieren und speichern
               
                Hum_str = str(Luftfeuchtigkeit)
               
                
                
                Ausgabe =   (Jahr+'.'+Monat+'.'+Tag+';'\
                            +Stunde+':'+Minute+';'\                        
                            +Hum_str+';'\                                               
                            +'\n')    
        
                filename = (Jahr+'_'+Monat+'_'+Tag+'_schnell'+'_'+'Data.csv')    
        
                data = open(filename,'a')    
                data.write(Ausgabe)
                data.close()
            
                   
            if ((Time_akt[4] >= 1 and Time_akt[4] < 5) or\
                 (Time_akt[4] >= 6 and Time_akt[4] < 10) or\
                 (Time_akt[4] >= 11 and Time_akt[4] < 15) or\
                 (Time_akt[4] >= 16 and Time_akt[4] < 20) or\
                 (Time_akt[4] >= 21 and Time_akt[4] < 25) or\
                 (Time_akt[4] >= 26 and Time_akt[4] < 30) or\
                 (Time_akt[4] >= 31 and Time_akt[4] < 35) or\
                 (Time_akt[4] >= 36 and Time_akt[4] < 40) or\
                 (Time_akt[4] >= 41 and Time_akt[4] < 45) or\
                 (Time_akt[4] >= 46 and Time_akt[4] < 50) or\
                 (Time_akt[4] >= 51 and Time_akt[4] < 55) or\
                 (Time_akt[4] >= 56 and Time_akt[4] < 60)):
                     
                flag = False   
            
            t = time()        
            
            if j == False:
                break    
        
        ipcon.disconnect()

  2. Servus zusammen,

     

    ich habe das von Tinkerforge gestellte Beispielprogramm für den RTC auf den Red-Brick hochgeladen.Leider bekomme ich immer diese Fehlermeldung:

     

    Traceback (most recent call last):

      File "example_callback.py", line 32, in <module>

        rtc.register_callback(rtc.CALLBACK_DATE_TIME, cb_date_time)

    AttributeError: 'BrickletRealTimeClock' object has no attribute 'register_callback'

     

    Wer ne Idee? Vielen Dank!

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    HOST = "localhost"
    PORT = 4223
    UID = "xKG" # Change XYZ to the UID of your Real-Time Clock Bricklet
    
    from tinkerforge.ip_connection import IPConnection
    from tinkerforge.bricklet_real_time_clock import BrickletRealTimeClock
    
    # Callback function for date and time callback
    def cb_date_time(year, month, day, hour, minute, second, centisecond, weekday, timestamp):
        print("Year: " + str(year))
        print("Month: " + str(month))
        print("Day: " + str(day))
        print("Hour: " + str(hour))
        print("Minute: " + str(minute))
        print("Second: " + str(second))
        print("Centisecond: " + str(centisecond))
        print("Weekday: " + str(weekday))
        print("Timestamp: " + str(timestamp))
        print("")
    
    if __name__ == "__main__":
        ipcon = IPConnection() # Create IP connection
        rtc = BrickletRealTimeClock(UID, ipcon) # Create device object
    
        ipcon.connect(HOST, PORT) # Connect to brickd
        # Don't use device before ipcon is connected
    
        # Register date and time callback to function cb_date_time
        rtc.register_callback(rtc.CALLBACK_DATE_TIME, cb_date_time)
    
        # Set period for date and time callback to 5s (5000ms)
        # Note: The date and time callback is only called every 5 seconds
        #       if the date and time has changed since the last call!
        rtc.set_date_time_callback_period(5000)
    
        
        ipcon.disconnect()
    
    

  3. Ja mit den Min/Max muss ich mich erst noch auseinandersetzen  :o

     

    Aber nochmal kurz auf das Thema mit der Messdatenberechnung zurückzukommen:

     

    Ziel soll es sein, einen Wert Y zu erhalten, der sich aus den Messwerten Temp und CO2 ergibt (Ja dies ist wirklich nur ein fiktives Beispiel, ohne Bedeutung der Variablen).

    Dieser Wert Y soll jedes mal ausgegeben werden, wenn sich ein Messwert ändert, also entweder die Temp oder der CO2 Wert.

    Im folgend dargestellten Code habe ich das Problem, dass der Wert Y immer nur dann ausgegeben wird, wenn sich auch die Temperatur ändert. Wenn die Temperatur konstant bleibt und sich der CO2 Wert ändert, bekomme ich so leider keine Ausgabe.

     

    Bitte bitte ich komme einfach nicht weiter :D

    def cb_temperature(temperature):
            
            print (str(temperature/100))
            x= co2.get_co2_concentration()
            print ("CO2 in cb_temp " + str(x))
            y = x + (temperature/100)
            print ("Y " + str(y))
            
           
    def cb_co2_concentration(co2_concentration):
                print(str(co2_concentration))

    Beispiel.JPG.433b9219019c2b701183b18c950bf7df.JPG

  4. Hallo MacDUff,

     

    erstmal Danke für deine ausführliche Erklärung.

     

    Leider wurde die Frage wahrscheinlich zu schlecht formuliert:

    Es geht mir darum, dass ich mit den unterschiedlichsten Messwerte (Hier als Beispiel Temperatur und CO2 brauche, aber für meine Auswertung noch weitere Messwerte wie Luftfeuchtigkeit, IR Temperatur etc.)

    Über die Callback Funktion kann ich mir ja jeden Messwert ausgeben lassen, der sich nach einer bestimmten Zeit bei einer Änderung aktualisiert.

     

    Wenn ich jedoch einen anderen Ausgabewert haben will, der sich aus den Messwerten zusammenstellt (z.B: PMV = Luftfeuchtigkeit/Lufttemperatur + 20, ja das macht keinen Sinn ^^) komme ich auf keine Lösung.

    Dieser Wert soll sich natürlich simultan anpassen, wenn sich in dem Fall die Luftfeuchtigkeit oder Lufttemperatur ändert und soll ausgegeben werden.

     

    Vielen vielen Dank! Und ja ich tue mir echt schwer mit dem Programmieren =/

     

    Zum Thema Durchschnittswert: Hier bin ich noch auf der Suche nach einer Möglichkeit, ähnlich wie im Beispiel der Wetterstation einen Durchschnitts/Max/Min Wert der aufgenommenen Messwerte darstellen zu lassen, vll kann mir hier auch noch einer helfen.

  5. Hallo zusammen,

     

    folgende Frage:

    Ich würde gerne die Messwerte, die ich über die Callback Funktion erhalte weiter bearbeiten. Sprich: Ich schließe zum Beispiel einen IR-Temperatur-Sensoren sowie einen Temperatur-Sensor an und möchte den Durchschnitt davon berechnen. Dieser Durchschnitt soll sich natürlich zusammen mit den Callback-Werten ebenfalls aktualisieren. Kann mir einer helfen? Stehe wirklich auf dem Schlauch. Vielen Dank! ;D

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    HOST = "localhost"
    PORT = 4223
    UID1 = "oed" # Change XYZ to the UID of your OLED 64x48 Bricklet
    UID2 = "co2" # Change XYZ to the UID of your CO2 Bricklet
    UID3 = "Temp" # Change XYZ to the UID of your Temperature Bricklet
    
    
    from tinkerforge.ip_connection import IPConnection
    from tinkerforge.bricklet_oled_64x48 import BrickletOLED64x48
    from tinkerforge.bricklet_co2 import BrickletCO2
    from tinkerforge.bricklet_temperature import BrickletTemperature
    
    
       
    def cb_temperature(temperature):
            print(str(temperature/100))
    
    
    def cb_co2_concentration(co2_concentration):
                print(str(co2_concentration))
    
    ## dieser Wert X soll sich zum Beispiel an die callbacks anpassen
    X = co2_concentration+ (temperature/100)
    print (x)
        
    
    if __name__ == "__main__":
        ipcon = IPConnection() # Create IP connection
        oled = BrickletOLED64x48(UID1, ipcon) # Create device object
        co2 = BrickletCO2(UID2, ipcon) # Create device object
        t = BrickletTemperature(UID3, ipcon) # Create device object
        
        
        ipcon.connect(HOST, PORT) # Connect to brickd
        # Don't use device before ipcon is connected
    
       
    
        co2.register_callback(co2.CALLBACK_CO2_CONCENTRATION, cb_co2_concentration)
        co2.set_co2_concentration_callback_period(1000)
    
        
        t.set_temperature_callback_period(1000)
        t.register_callback(t.CALLBACK_TEMPERATURE, cb_temperature)
           
      
        co2_concentration = co2.get_co2_concentration()
        print(str(co2_concentration))
    
        temperature = t.get_temperature()
        print(str(temperature/100.0))
       
        
        input("Press key to exit\n")
        
        ipcon.disconnect()
        
      
    

     

×
×
  • Neu erstellen...