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 - __LC__

Pages: [1]
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?

Code: [Select]
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:

Code: [Select]
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. ;D

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
Anfängerfragen und FAQ / Re: Projektaufbau... was wird benötigt?
« on: October 21, 2016, 11:32:24 »
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
Anfängerfragen und FAQ / Re: Projektaufbau... was wird benötigt?
« on: October 18, 2016, 23:01:09 »
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
Hardware / Re: Neue Bricklets
« on: October 10, 2014, 19:56:07 »
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
Hardware / Re: Neue Bricklets
« on: September 26, 2014, 23:06:31 »
Was haltet ihr von den Ideen?
Klingt super. Was mich bei Variante 2 interessieren würde, ist die Frage ob man beide Kanäle dann auch simultan auslesen kann?

Pages: [1]