Jump to content

__LC__

Members
  • Content Count

    8
  • Joined

  • Last visited

Community Reputation

0 Neutral
  1. Hallo liebes Tinkerforge-Team. Ich bin gerade wieder darüber gestolpert und möchte heute an dieser Stelle gern mal nachfragen. Würde es zukünftig nicht Sinn machen die Python-API dahingehend zu erweitern, dass man die verschiedenen Klassen auch im Rahmen des Kontext-Managers mit dem with-Statement ansprechen könnte? from tinkerforge.ip_connection import IPConnection as _IPConnection from tinkerforge.brick_master import BrickMaster as _BrickMaster class IPConnection(_IPConnection): def __init__(self, host=None, port=4223): _IPConnection.__init__(self) if host is not None: self.connect(host, port) self.__host = host self.__port = port def __enter__(self): if not self.get_connection_state(): self.connect(self.__host, self.__port) return self def __exit__(self, type, value, traceback): if self.get_connection_state(): self.disconnect() def test(ipcon): print(ipcon.get_connection_state()) ipcon.set_auto_reconnect(True) ipcon.disconnect() print(ipcon.get_connection_state()) if __name__ == '__main__': HOST = '127.0.0.1' PORT = 4223 with IPConnection(HOST, PORT) as ipcon: test(ipcon) Viele Grüße __LC__
  2. Moin topi. Anbei mal ein einfaches Beispiel wie du es machen könntest: from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_lcd_20x4 import BrickletLCD20x4 import os, time def callback_wrapper(): timestamp = -1 def cb_button_pressed(button): print("Button {0} pressed...".format(button)) if button == 0: if lcd.is_backlight_on(): lcd.backlight_off() else: lcd.backlight_on() elif button == 3: nonlocal timestamp if time.time() - timestamp > 5: print('Press button 3 within the next 5 seconds again...') timestamp = time.time() else: print('Shutdown now...') timestamp = -1 # This line is only necessary for testing purpose without real shutdown! return cb_button_pressed if __name__ == "__main__": UID = "XYZ" # Change XYZ to the UID of your LCD 20x4 Bricklet HOST = "127.0.0.1" PORT = 4223 ipcon = IPConnection() lcd = BrickletLCD20x4(UID, ipcon) ipcon.connect(HOST, PORT) button_pressed_callback = callback_wrapper() lcd.register_callback(lcd.CALLBACK_BUTTON_PRESSED, button_pressed_callback) input("Press key to exit\n") ipcon.disconnect() Hoffe es entspricht dem was du dir vorgestellt hast. Bei Fragen einfach fragen. Viele Grüße __LC__ Nachtrag 10.09.2017: Zur besseren Übersichtlichkeit habe ich den Code-Schnipsel nochmal leicht abgeändert.
  3. Moin Markus, vielen Dank für deine Antwort auf meine Frage. Mir war schon klar dass eine belastete Spannungsquelle unter der Last etwas nachgibt, allerdings empfand ich die rund 0,12V dann doch irgendwie viel. Keine Ahnung warum. Schöne Grüße __LC__
  4. Hallo zusammen. Ich habe mal eine kleine Frage zum Step-Down Power Supply. Ich möchte zukünftig neben der Stapelversorgung selbst nun auch wie hier schön öfter beschrieben einen Raspberry darüber versorgen. Nun habe ich jedoch nach Anschluss dessen bemerkt, dass ich dann auf der 5V Leitung des Stapels einen Spannungsabfall von ~0,12V (sprich runter auf ~4.88V) zu verzeichnen habe. Auch eine Spannungsmessung zwischen den beiden Testpunkten TP1 und TP2 auf dem Raspberry selbst, ergab nur eine Spannung von 4,86V. Als Vergleich mit meinem externen Steckernetzteil messe ich dort 5.01V. Und ohne angeschlossenen RPi messe ich an dem "5V" Pin des "Analog In" auch glatte 5V. Also muss es was mit der Last des RPi zu tun haben. Darum die Frage ob das jetzt normal ist oder es an meinem Step-Down Power Supply liegt? Könnte das Konsequenzen für den Betrieb des Stapels selbst haben? Vielen Dank und schöne Grüße __LC__
  5. Moin CChris, so wie du es geschrieben hast sind deine Überlegungen vollkommen plausibel und verständlich. Aber wenn es um Ausfallminimierung geht, dann sollte man vielleicht eher über Redundanzen nachdenken. Wer könnte einspringen, wenn ein System wirklich mal ausfällt (von Hardwarefehlern des TF-Stapels selbst mal abgesehen. Und hier wäre mein alternativ beschriebener Ansatz vielleicht hilfreicher, weil da bräuchtest du nur einen weiteren "Controller" der im Falle des Ausfalls des Primären einspringen kann. Ist aber nur so ein Gedanke. Letztlich musst du abwägen, was ist im "Worst case" Szenario noch möglich ist und was nicht. Auf jeden Fall viel Erfolg bei der Umsetzung gewünscht. Schöne Grüße
  6. Hallo zusammen! Ich würde ehrlich gesagt aus Kostengründen den anderen Weg beschreiten. Für jedes Terrarium würde ich einen unabhängigen Stapel aus Master Brick + notwendigen Sensoren aufbauen und diese dann aber über einen gemeinsamen Controller (Red Brick / RPi) und geeigneten Kommunikationsbus (drahtlos / drahtgebunden) ansteuern. Die Trennung der einzelnen Systeme in "voneinander unabhängig" laufende Steuerungen würde ich dann eher in der Software umsetzen. Natürlich fallen bei Ausfall der Zentrale gleichzeitig alle Terrarien-Systeme aus, aber wäre das in dem beschriebenen Szenario wirklich das K.O.-Kriterium? Reden wir hier von einer kritischen Anwendung wo wirklich alle Terrarien autark laufen müssen? Schöne Grüße
  7. __LC__

    Neue Bricklets

    Hallo borg! Ich hätte da noch eine Frage zum neuen "Analog In" Bricklet. Ist es möglich mit dem Auslesen des Spannungsmesswertes auch noch einen echten Timestamp/Tick-Count von der Hardware zu bekommen? Beispielsweise um echte zeitabhängige Messungen machen zu können. Schöne Grüße
  8. __LC__

    Neue Bricklets

    Klingt super. Was mich bei Variante 2 interessieren würde, ist die Frage ob man beide Kanäle dann auch simultan auslesen kann?
×
×
  • Create New...