Пример #1
0
 def runConfig(conf: Config.BasicConfig, logger: logging.Logger):
     conf["RaspberryPiGPIO"] = []
     while True:
         from builtins import KeyboardInterrupt
         try:
             dir_str = "Bitte eine der Nummern eingeben um die Richtung des Pins einzustellen. \nOUT = 0, IN = 1, IN_PULL_UP = 2, IN_PULL_LOW = 3 "
             from builtins import input
             d = {
                 "Pin":
                 ConsoleInputTools.get_number_input(
                     "Pin Nummer eingeben: "),
                 "name":
                 input("Sichtbarer Name des Pins: ")
             }
             direction = Pin.PinDirection(
                 ConsoleInputTools.get_number_input(dir_str))
             d["direction"] = direction.value
             if direction == Pin.PinDirection.OUT:
                 isPulse = ConsoleInputTools.get_bool_input(
                     "Soll der Pin nur gepullst werden?", False)
                 d["isPulse"] = isPulse
             pulse_width = ConsoleInputTools.get_number_input(
                 "Bitte ms eingeben, die beim PULSE gehalten werden sollen [250ms]: ",
                 -1)
             if pulse_width != -1:
                 d["pulse_width"] = pulse_width
             conf.get("RaspberryPiGPIO", []).append(d)
             print(
                 "\nHinzugefügt.\nWenn nichts mehr hinzugefügt werden soll CTRL-C drücken\n"
             )
         except KeyboardInterrupt:
             i = input("Pin hinzufügen abgebrochen. Wiederholen? [y/N]")
             if i != "y" and i != "Y":
                 break
Пример #2
0
 def run(self):
     from Tools import ConsoleInputTools as cit
     self.c["name"] = cit.get_input(
         "Unter welchem Namen soll der LED Streifen angegeben werden. \n-> ",
         require_val=True,
         std_val="WS2812B")
     self.c[""] = cit.get_number_input(
         "Wie oft soll getestet werden (Sekunen)?= ", 1)
Пример #3
0
 def run(self):
     from Tools import ConsoleInputTools as cit
     self.c["rPiUndervoltage/name"] = cit.get_input(
         "Unter welchem Namen soll die Strom unterfversorgung angegeben werden. \n-> ",
         require_val=True,
         std_val="Undervoltage")
     self.c["rPiUndervoltage/checks"] = cit.get_number_input(
         "Wie oft soll getestet werden (Sekunen)?= ", 1)
Пример #4
0
 def run(self):
     from Tools import ConsoleInputTools as cit
     self.c["rpiCPUtemp/name"] = cit.get_input(
         "Unter welchem Namen soll die CPU Temperatur angegeben werden. \n-> ",
         require_val=True,
         std_val="CPU Temperatur")
     self.c["rpiCPUtemp/diff"] = cit.get_number_input(
         "Wie viel muss sich die Temperatur ändern, um neue Temperatur zu senden= ",
         0.5)
Пример #5
0
    def runConfig(conf: conf.BasicConfig, logger:logging.Logger):
        from Tools import ConsoleInputTools
        print("Pins standartmäßig nach BCM schema (gpiozero angaben gestattet)")

        conf["rpiDoor/unlockPin"] = ConsoleInputTools.get_input("Pinnummer der entsperrung ", 17)
        conf["rpiDoor/relayPulseLength"] = ConsoleInputTools.get_number_input("Wie viele ms soll das Relais gehalten werden?", 250)
        conf["rpiDoor/openedPin"] = ConsoleInputTools.get_input("Pinnummer für Offen/Geschloßen", 27)
        conf["rpiDoor/closedPinHigh"] = ConsoleInputTools.get_bool_input("Tür zu = in high?")
        conf["rpiDoor/name"] = ConsoleInputTools.get_input("Sichtbarer Name")
Пример #6
0
 def run(self):
     from Tools import ConsoleInputTools as cit
     self.c["DHT/dev/pin"] = cit.get_number_input(
         "Pin Nummer von Datenpin? ", 22)
     self.c["DHT/dev/type"] = cit.get_input(
         "DHT Type? Möglich ist 11 22 2302 ", "22")
     self.c["DHT/name"] = cit.get_input("Name für Hass ", True, "DHT")
     self.c["DHT/update_seconds"] = cit.get_number_input(
         "Wie oft soll gemessen werden? ", 60)
Пример #7
0
    def getNewDeviceEntry():
        from Tools import ConsoleInputTools
        config = {}
        name = ConsoleInputTools.get_input("Name für den Eintrag?")
        config["type"] = "switch" if ConsoleInputTools.get_bool_input(
            "Soll der eintrag als Schalter fungieren?", False) else "action"
        config["confirm"] = ConsoleInputTools.get_bool_input(
            "Auswählen des Eintrages bestätigen?", False)

        return name, config
Пример #8
0
    def run_calibration(conf: Tools.Config.BasicConfig,
                        logger: logging.Logger):
        from Tools import ConsoleInputTools
        dp = ConsoleInputTools.get_number_input(
            "Wie viele Datenpunkte sollen analysiert werden?", 10000)
        gap = ConsoleInputTools.get_number_input(
            "Wie viele Millis sollen zwischen den DPs liegen?", 250)

        c = Calibrate(conf, logger)
        c.record_noise(data_points=dp, spacing_secs=gap / 1000)
        c.analyze_noise()
Пример #9
0
    def configure(self, config: tc.BasicConfig):
        host = ConsoleInputTools.get_input("Broadcast Addresse: ",
                                           std_val="255.255.255.255")
        port = ConsoleInputTools.get_number_input("Port: ", 50222)
        events = ConsoleInputTools.get_bool_input("Wetter events senden? ",
                                                  True)
        dereg = ConsoleInputTools.get_bool_input(
            "Remove existing from MQTT Autodiscovery?", False)

        config["Weatherflow/broadcast_addr"] = host
        config["Weatherflow/broadcast_port"] = port
        config["Weatherflow/events"] = events

        if dereg:
            config["Weatherflow/deregister"] = dereg
            print("Beim nächsten normalen Start wird alles deregestriert!")
Пример #10
0
 def run(self):
     from Tools import ConsoleInputTools
     print(" Bekannte Busnummern: Bei Raspberry Rev1 = 0, Rev2 = 1 ")
     bus_nr = ConsoleInputTools.get_number_input("smbus nummer", 1)
     bus = smbus.SMBus(bus_nr)
     self.c["bus"] = bus_nr
     try:
         measument = bhref.convertToNumber(bus.read_i2c_block_data(bhref.DEVICE, bhref.ONE_TIME_HIGH_RES_MODE_1))
         self.c["device"] = ConsoleInputTools.get_bool_input("Auf Adresse wurden {} Lux gemessen. Verwenden?".format(measument))
     except OSError:
         pass
     try:
         measument = bhref.convertToNumber(bus.read_i2c_block_data(bhref.DEVICE_ALT, bhref.ONE_TIME_HIGH_RES_MODE_1))
         self.c["device_alt"] = ConsoleInputTools.get_bool_input("Auf Adresse_ALT wurden {} Lux gemessen. Verwenden?".format(measument))
     except OSError:
         pass   
Пример #11
0
 def runConfig(conf: Config.BasicConfig, logger: logging.Logger):
     c = Config.PluginConfig(conf, PluginLoader.getConfigKey())
     c["dev"] = ConsoleInputTools.get_input("Serial Device Pfad: ",
                                            require_val=True,
                                            std_val="/dev/ttyACM0")
     c["tp"] = [[0, 0], [50, 30], [60, 50], [75, 75], [80, 100]]
     c["provider"] = "rpiCPUtemp"
Пример #12
0
def try_install_package(package: str, throw=ImportError(), ask=True, retry=5):
    if not is_venv():
        raise throw
    if ask and is_system_mode:
        raise InSystemModeError()
    if ask:
        from Tools import ConsoleInputTools as cit
        if cit.get_bool_input(
                "Plugin abhängigkeit fehlt! soll {} installiert werden?".
                format(package), False):
            ask = False
        else:
            raise throw
    if not ask:
        from pip._internal import main as pipm
        try:
            pipm(['install', package])
        except TypeError:
            pipm.main(['install', package])
        except EnvironmentError as e:
            print(
                "Fehler in pip. Werde es noch {} mal versuchen.".format(retry +
                                                                        1))
            try_install_package(package=package,
                                throw=e,
                                ask=False,
                                retry=retry - 1)
        raise RestartError()
Пример #13
0
 def run(self):
     from Tools import ConsoleInputTools
     from Mods.victron.plugin import VeDirectPlugin
     self.c["name"] = ConsoleInputTools.get_input(
         "Gerätename überschreiben?. \n-> ",
         require_val=False,
         std_val=None)
Пример #14
0
 def run(self):
     while True:
         print("Mögliche Aktionen: \n 1. Smart Meter hinzufügen | 2. Smart Meter löschen\n 0. Beenden")
         action = ConsoleInputTools.get_number_input("Aktion", "0")
         match action:
             case 0: return
             case 1: self.addSmartMeter()
             case 2: self.remSmartMeter()
             case _: print("Ungültige Auswahl")
Пример #15
0
 def addSmartMeter(self):
     meter = {}
     meter["port"] = ConsoleInputTools.get_input("Serielle Schnittstelle", require_val=True)
     meter["baudrate"] = ConsoleInputTools.get_number_input("Baudrate", map_no_input_to=2400)
     meter["parity"] = ConsoleInputTools.get_input("Parity", require_val=False, std_val="serial.PARITY_NONE")
     meter["stopbits"] = ConsoleInputTools.get_input("Stopbits", std_val="serial.STOPBITS_ONE")
     meter["bytesize"] = ConsoleInputTools.get_input("Bytesize", std_val="serial.EIGHTBITS")
     meter["key_hex_string"] = ConsoleInputTools.get_input("Entschlüsselungskey", require_val=True)
     meter["interval"] = ConsoleInputTools.get_number_input("Interval (Nicht mehr als 5)", map_no_input_to=1)
     meter["supplier"] = ConsoleInputTools.get_input("Netz Betreiber", std_val="EVN")
     self.c["meters"].append(meter)
     self.currIndex += 1
Пример #16
0
 def remSmartMeter(self):
     print("Auflistung aller Seriellen Ports:")
     print("0 um zu beenden.")
     for index in len(self.c["meter"]):
         port = self.c[f"meter/{index}"]
         print(f"{index+1}. {port}")
     
     toDelete = ConsoleInputTools.get_number_input("Nummer wählen", map_no_input_to=0)
     if toDelete == 0:
         return
     toDelete -= 0
     del self.c[f"meter/{toDelete}"]
Пример #17
0
    def run(self):
        from Tools import ConsoleInputTools as cit
        self.c["name"] = cit.get_input(
            "Unter welchem Namen soll der PC angegeben werden. \n-> ",
            require_val=True,
            std_val="WindowsPC")
        self.c["enabled/wmi_pnp"] = cit.get_bool_input(
            "PnP Geräte aktivieren? \n->", True)
        self.c["enabled/powerevents"] = cit.get_bool_input(
            "PowerEvents aktivieren? \n->", True)
        self.c["enabled/systray"] = cit.get_bool_input(
            "Systemtray aktivieren? \n->", True)

        if self.c["enabled/systray"]:
            print(
                "CTRL-C drücken sobald kein neuer Aktionseintrag erstellt werden soll."
            )
            while True:
                try:
                    name, entry = win32Systray.getNewDeviceEntry()
                    self.c["systray/itemList/{}".format(name)] = entry
                except KeyboardInterrupt:
                    break
Пример #18
0
 def run(self):
     from Tools import ConsoleInputTools
     ids = self.get_available_ids()
     if len(ids) == 0:
         print(" === Keine Temperatur Sensoren gefunden. ===\n")
         self.c["w1t"] = None
         return
     for i in ids:
         r = input("Welchen Namen soll {} mit {}°C haben? ".format(
             i[0], OneWireTemp.get_temperatur(i[1])))
         self.c.get("w1t/dev", []).append({"id": i[0], "name": r})
         self.c["w1t/diff/{}".format(
             i[0])] = ConsoleInputTools.get_number_input(
                 "Wie viel Temperatur unterschied muss sein um zu senden? ",
                 map_no_input_to=None)
     print("=== Alle Temperatur Sensoren benannt. ===\n")
Пример #19
0
    def configure(self, conff: conf.BasicConfig, logger: logging.Logger):
        from Tools import ConsoleInputTools
        conf = conff.PluginConfig(conff, "logind")

        conf["allow_power_off"] = ConsoleInputTools.get_bool_input(
            "\nErlaube Ausschalten: ", True)
        conf["allow_suspend"] = ConsoleInputTools.get_bool_input(
            "\nErlaube Bereitschaftsmodus: ", True)
        conf["allow_reboot"] = ConsoleInputTools.get_bool_input(
            "\nErlaube Neustarten: ", True)
        conf["allow_inhibit"] = ConsoleInputTools.get_bool_input(
            "\nErlaube Blockieren von Schlafmodus: ", True)
        if ConsoleInputTools.get_bool_input("\nBenutze anderen Namen: ", True):
            conf["custom_name"] = ConsoleInputTools.get_input(
                "\nDen Namen Bitte: ", True)
        conf["inactivity_ms"] = ConsoleInputTools.get_number_input(
            "\nInaktivität nach x Millisekunden: ")
Пример #20
0
 def run(self):
     from Tools import ConsoleInputTools as cit
     self.c["GrowFingerprint/name"] = cit.get_input("Unter welchem Namen soll der Fingerprint sensor bekannt sein. \n-> ", require_val=True, std_val="Fingerprint")
     self.c["GrowFingerprint/WAKEUP"] = cit.get_number_input("WAKEUP Pinnr:", 0)
     if self.c["GrowFingerprint/WAKEUP"] > 0:
         self.c["GrowFingerprint/WAKEUP_active_secs"] = cit.get_number_input("Sekunden die Aktiv auf Finger gewartet wird, nach einem WAKEUP?\n ->", 30)
     if cit.get_bool_input("Fingerprint Modul Passwort ändern? ", False):
         if cit.get_bool_input("Zufälliges Passwort erstellen?", False):
             import random
             sysr = random.SystemRandom()
             bits = sysr.getrandbits(32)
             self.c["GrowFingerprint/new_pw"] = bits
         else:
             self.c["GrowFingerprint/new_pw"] = cit.get_number_input("Bitte 32Bit Passwort eingeben: ", 0x00000000)
Пример #21
0
    def run(self):
        from Tools import ConsoleInputTools

        if ConsoleInputTools.get_bool_input("Als occupancy verwenden? ", True):
            self.c["minimum"] = ConsoleInputTools.get_number_input(
                "Minimaler Wert für Bewegung ", 100)
        else:
            self.c["minimum"] = None

        self.c["segment"] = ConsoleInputTools.get_number_input(
            "Wie viele Segmente für RMS verwenden? ", 0.5)
        self.c["filter/needs_positive_matches"] = ConsoleInputTools.get_number_input(
            "Wie oft muss bestätigt werden, dass der RMS Wert erreicht wurde? ",
            0)
        self.c["filter/needs_negativ_matches"] = ConsoleInputTools.get_number_input(
            "Wie oft muss bestätigt werden, dass der RMS Wert nicht erreicht wurde? ",
            0)
        self.c["filter/timeout_secs"] = ConsoleInputTools.get_number_input(
            "Wie viele Sekunden muss es still sein? ", 0)

        print("=== Nichts mehr zu konfigurieren. ===\n")
Пример #22
0
    def runConfig(conf: conf.BasicConfig, logger: logging.Logger):
        from Tools import ConsoleInputTools

        rpin = ConsoleInputTools.get_number_input(
            "Pin Nummer des Taster Relais ", 22)
        delay = ConsoleInputTools.get_number_input(
            "Wie viele ms soll das Relais gehalten werden?", 250)

        apin = ConsoleInputTools.get_number_input(
            "Pin Nummer des ALERT Signals", 33)
        addr = ConsoleInputTools.get_number_input("Addresse des ADC", 0x49)
        gain = ConsoleInputTools.get_number_input("GAIN für ADC", 1)
        readings = ConsoleInputTools.get_number_input(
            "Wie oft soll ADC gelesen werden, bevor aktion durchgeführt wird?",
            2)

        print(
            "Jetzt kommt die Positions abfrage. \nWenn Kanal nicht bnutzt nur enter drücken.\n"
        )
        pos0 = ConsoleInputTools.get_number_input("Position für 1 Kanal", -1)
        pos1 = ConsoleInputTools.get_number_input("Position für 2 Kanal", -1)
        pos2 = ConsoleInputTools.get_number_input("Position für 3 Kanal", -1)
        pos3 = ConsoleInputTools.get_number_input("Position für 4 Kanal", -1)

        door_open_time = ConsoleInputTools.get_number_input(
            "Wie lange braucht das Tor von zu bis auf oder umgekehrt maximal?\n>",
            15)
        door_open_retry = ConsoleInputTools.get_number_input(
            "Wie oft soll versucht werden das Tor in die Position zu bringen?\n>",
            3)
        name = ConsoleInputTools.get_input("Wie heißt das Tor?",
                                           require_val=True)

        conf["PiGarage/relayPin"] = rpin
        conf["PiGarage/relayPulseLength"] = delay
        conf["PiGarage/Hall/ALERT_PIN"] = apin
        conf["PiGarage/Hall/ADC_ADDR"] = addr
        conf["PiGarage/Hall/GAIN"] = gain
        conf["PiGarage/Hall/adc_readings"] = readings
        conf["PiGarage/Hall/Channels_Position"] = [pos0, pos1, pos2, pos3]
        conf["PiGarage/Hall/max_move_time"] = door_open_time
        conf["PiGarage/Hall/max_move_retrys"] = door_open_retry
        conf["PiGarage/name"] = name

        do_calib = ConsoleInputTools.get_bool_input(
            "Kalibration jetzt starten?", True)
        if do_calib:
            PluginLoader.runCalibrationProcess(conf, logger)
Пример #23
0
    def run(self):
        from Tools import ConsoleInputTools
        while True:
            action = ConsoleInputTools.get_number_input(
                "Was möchtest du tun?\n 1) Neuen anlegen\n 2)Einen löschen\n 3) Beenden\n ",
                3)
            if action != 1 and action != 2 and action != 3:
                print("Nee war keine gültige eingabe.")
                continue
            elif action == 2:
                print(
                    "Diese ShellSwitche stehen zur auswahl.\n 0) Nichts löschen."
                )
                indicies = {}
                index = 1
                for name in self.c.get("entrys", {}).keys():
                    print("{}) {}\n   On: \"{}\" Off: \"{}\"".format(
                        index, name,
                        self.c.get("entrys/{}/on_command".format(name), ""),
                        self.c.get("entrys/{}/off_command".format(name))))
                    indicies[index] = name

                toDelete = ConsoleInputTools.get_number_input(
                    "Bitte die Nummer eingeben.", 0)
                if toDelete == 0:
                    continue
                else:
                    if indicies.get(toDelete, None) is None:
                        print("Fehler! Zahl ungültig.")
                    else:
                        del self.c["entrys/{}/off_command".format(
                            indicies[toDelete])]

            elif action == 1:
                entry = {"wasOn": False}
                onOff = ConsoleInputTools.get_bool_input(
                    "Welcher Modus soll angewendet werden? Ein/Aus (J) oder Pulse (N)",
                    True)
                entry["init_command"] = ConsoleInputTools.get_input(
                    "Kommando beim initialisieren?: ")
                entry["clean_command"] = ConsoleInputTools.get_input(
                    "Kommando beim beenden?: ")
                entry["onOff"] = onOff
                if onOff:
                    entry["on_command"] = ConsoleInputTools.get_input(
                        "Kommando beim Einschalten?: ")
                    entry["off_command"] = ConsoleInputTools.get_input(
                        "Kommando beim Ausschalten?: ")
                else:
                    entry["on_command"] = ConsoleInputTools.get_input(
                        "Kommando beim Pulsieren?: ")
                entry["setOnLoad"] = ConsoleInputTools.get_bool_input(
                    "Status beim Starten wiederherstellen?")
                entry["name"] = ConsoleInputTools.get_input(
                    "Name des Switches?")
                entry["icon"] = ConsoleInputTools.get_input(
                    "Welches icon soll gesendet werden? (z.B.: mdi:lightbulb")
                entry["broadcast"] = ConsoleInputTools.get_bool_input(
                    "Soll der Switch in HomeAssistant gefunden werden?", True)
                self.c["entrys"][entry["name"].replace(" ", "")] = entry
            elif action == 3:
                break
        self.c["dereg"] = True
Пример #24
0
 def runConfig(conf: conf.BasicConfig, logger: logging.Logger):
     from Tools import ConsoleInputTools
     conf["BleTrack/mode"] = ConsoleInputTools.get_bool_input(
         "Hauptsucher (nur einer pro MQTT instanz) ")
     conf["BleTrack/room"] = ConsoleInputTools.get_input("Name des Raums ")
Пример #25
0
 def run(self):
     self.c["displays/enabled"] = ConsoleInputTools.get_bool_input(
         "Process Monitor States", False)
Пример #26
0
 def configure(self, conf: conf.BasicConfig, logger:logging.Logger):
     from Tools import ConsoleInputTools as cit
     conf["ModemManager/SigSecs"] = cit.get_number_input("Aktualisierung alle Sekunden? ", 60)
     conf["ModemManager/SMS/nummer"] = cit.get_input("SMS Empfänger Nummer", require_val=False)
     conf["ModemManager/SMS/notify_reboot"] = cit.get_bool_input("Bei Neustart SMS Senden", True)
Пример #27
0
 def runConfig(conf: conf.BasicConfig, logger: logging.Logger):
     from Tools import ConsoleInputTools
     conf["JsonPipe/Path"] = ConsoleInputTools.get_input(
         "Pfad zur namedpipe angeben. (Pipe muss nicht vorhanden sein.)",
         True)