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
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)
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)
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)
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")
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)
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
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()
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!")
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
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"
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()
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)
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")
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
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}"]
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
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")
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: ")
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)
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")
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)
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
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 ")
def run(self): self.c["displays/enabled"] = ConsoleInputTools.get_bool_input( "Process Monitor States", False)
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)
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)