From 252c2d171bae2e62e5830f2179f7b2a7bc20f967 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:17:03 +0200 Subject: [PATCH 01/17] test for bookworm -> staring cbpi w/o sudo install with pipx --- cbpi/cli.py | 11 +++++------ cbpi/extension/onewire/__init__.py | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 416883b..2631ba3 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -44,8 +44,8 @@ class CraftBeerPiCli(): def list_one_wire(self): print("List 1Wire") - call(["modprobe", "w1-gpio"]) - call(["modprobe", "w1-therm"]) + call(["sudo","modprobe", "w1-gpio"]) + call(["sudo","modprobe", "w1-therm"]) try: for dirname in os.listdir('/sys/bus/w1/devices'): if (dirname.startswith("28") or dirname.startswith("10")): @@ -155,7 +155,7 @@ class CraftBeerPiCli(): if os.path.exists(os.path.join("/etc/systemd/system","craftbeerpi.service")) is False: srcfile = self.config.get_file_path("craftbeerpi.service") destfile = os.path.join("/etc/systemd/system") - shutil.copy(srcfile, destfile) + shutil.os.system('sudo cp "{}" "{}"'.format(srcfile,destfile)) print("Copied craftbeerpi.service to /etc/systemd/system") os.system('systemctl enable craftbeerpi.service') print('Enabled craftbeerpi service') @@ -167,7 +167,7 @@ class CraftBeerPiCli(): print(e) return return - elif(name == "off"): + elif(name == "off"): print("Remove craftbeerpi.service from systemd") try: status = os.popen('systemctl list-units --type=service --state=running | grep craftbeerpi.service').read() @@ -180,7 +180,7 @@ class CraftBeerPiCli(): print('craftbeerpi.service service is not running') if os.path.exists(os.path.join("/etc/systemd/system","craftbeerpi.service")) is True: - os.remove(os.path.join("/etc/systemd/system","craftbeerpi.service")) + shutil.os.system('sudo rm -rf "{}"'.format(os.path.join("/etc/systemd/system","craftbeerpi.service"))) print("Deleted craftbeerpi.service from /etc/systemd/system") else: print("craftbeerpi.service is not located in /etc/systemd/system") @@ -189,7 +189,6 @@ class CraftBeerPiCli(): return return - def chromium(self, name): '''Enable or disable autostart''' if(name == "status"): diff --git a/cbpi/extension/onewire/__init__.py b/cbpi/extension/onewire/__init__.py index de78c78..56f336f 100644 --- a/cbpi/extension/onewire/__init__.py +++ b/cbpi/extension/onewire/__init__.py @@ -170,7 +170,7 @@ def setup(cbpi): cbpi.plugin.register("OneWire", OneWire) try: # Global Init - call(["modprobe", "w1-gpio"]) - call(["modprobe", "w1-therm"]) + call(["sudo","modprobe", "w1-gpio"]) + call(["sudo","modprobe", "w1-therm"]) except Exception as e: pass From 8b2aaace1e0f33f4558c0389cb46551e0bab0791 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:20:07 +0200 Subject: [PATCH 02/17] changed craftbeerpi.service and cbpi version --- cbpi/__init__.py | 2 +- cbpi/config/craftbeerpi.service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index f746ee6..da519e1 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.2.0.a1" +__version__ = "4.2.0.a2" __codename__ = "Indian Summer" diff --git a/cbpi/config/craftbeerpi.service b/cbpi/config/craftbeerpi.service index cd02dce..c8f3d9f 100644 --- a/cbpi/config/craftbeerpi.service +++ b/cbpi/config/craftbeerpi.service @@ -3,7 +3,7 @@ Description=Craftbeer Pi [Service] WorkingDirectory=/home/pi -ExecStart=/usr/local/bin/cbpi start +ExecStart=/home/pi/.local/bin/cbpi start [Install] WantedBy=multi-user.target From e044545a5b91466c9d7e299b818b3097d11394c4 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:33:41 +0200 Subject: [PATCH 03/17] chromium autostart should be also working w/o sudo --- cbpi/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 2631ba3..3845ab5 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -202,7 +202,7 @@ class CraftBeerPiCli(): if os.path.exists(os.path.join("/etc/xdg/autostart/","chromium.desktop")) is False: srcfile = self.config.get_file_path("chromium.desktop") destfile = os.path.join("/etc/xdg/autostart/") - shutil.copy(srcfile, destfile) + shutil.os.system('sudo cp "{}" "{}"'.format(srcfile,destfile)) print("Copied chromium.desktop to /etc/xdg/autostart/") else: print("chromium.desktop is already located in /etc/xdg/autostart/") @@ -214,7 +214,7 @@ class CraftBeerPiCli(): print("Remove chromium.desktop from /etc/xdg/autostart/") try: if os.path.exists(os.path.join("/etc/xdg/autostart/","chromium.desktop")) is True: - os.remove(os.path.join("/etc/xdg/autostart/","chromium.desktop")) + shutil.os.system('sudo rm -rf "{}"'.format(os.path.join("/etc/xdg/autostart/","chromium.desktop"))) print("Deleted chromium.desktop from /etc/xdg/autostart/") else: print("chromium.desktop is not located in /etc/xdg/autostart/") From 0ec02447d5c26addf82c264bcec43f2280bd4cf3 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:39:00 +0200 Subject: [PATCH 04/17] add shutil to autostart cmdline -> no need to enter pwd several times --- cbpi/cli.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 3845ab5..2b913c1 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -157,9 +157,9 @@ class CraftBeerPiCli(): destfile = os.path.join("/etc/systemd/system") shutil.os.system('sudo cp "{}" "{}"'.format(srcfile,destfile)) print("Copied craftbeerpi.service to /etc/systemd/system") - os.system('systemctl enable craftbeerpi.service') + shutil.os.system('sudo systemctl enable craftbeerpi.service') print('Enabled craftbeerpi service') - os.system('systemctl start craftbeerpi.service') + shutil.os.system('sudo systemctl start craftbeerpi.service') print('Started craftbeerpi.service') else: print("craftbeerpi.service is already located in /etc/systemd/system") @@ -172,9 +172,9 @@ class CraftBeerPiCli(): try: status = os.popen('systemctl list-units --type=service --state=running | grep craftbeerpi.service').read() if status.find("craftbeerpi.service") != -1: - os.system('systemctl stop craftbeerpi.service') + shutil.os.system('sudo systemctl stop craftbeerpi.service') print('Stopped craftbeerpi service') - os.system('systemctl disable craftbeerpi.service') + shutil.os.system('sudo systemctl disable craftbeerpi.service') print('Removed craftbeerpi.service as service') else: print('craftbeerpi.service service is not running') From 4721cf3a8cf5b9e1f7d7d5ced3e70cf9cad6b319 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Sun, 15 Oct 2023 09:59:05 +0200 Subject: [PATCH 05/17] support different users for autostart --- cbpi/cli.py | 18 ++++++++++++++++-- cbpi/config/craftbeerpi.service | 9 --------- cbpi/config/craftbeerpi.template | 9 +++++++++ cbpi/configFolder.py | 8 ++++---- 4 files changed, 29 insertions(+), 15 deletions(-) delete mode 100644 cbpi/config/craftbeerpi.service create mode 100644 cbpi/config/craftbeerpi.template diff --git a/cbpi/cli.py b/cbpi/cli.py index 2b913c1..64eca20 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -150,12 +150,27 @@ class CraftBeerPiCli(): else: print("CraftBeerPi Autostart is {}OFF{}".format(Fore.RED,Style.RESET_ALL)) elif(name == "on"): + user=os.getlogin() print("Add craftbeerpi.service to systemd") try: if os.path.exists(os.path.join("/etc/systemd/system","craftbeerpi.service")) is False: + templatefile=self.config.get_file_path("craftbeerpi.template") + shutil.os.system('cp "{}" "{}"'.format(templatefile,self.config.get_file_path("craftbeerpi.service"))) srcfile = self.config.get_file_path("craftbeerpi.service") + import jinja2 + + templateLoader = jinja2.FileSystemLoader(searchpath=os.path.join(self.config.get_file_path(""))) + templateEnv = jinja2.Environment(loader=templateLoader) + operatingsystem = str(platform.system()).lower() + if operatingsystem.startswith("win"): + srcfile=str(srcfile).replace('\\','/') + + template = templateEnv.get_template("craftbeerpi.service") + outputText = template.render(user=user) + with open(srcfile, "w") as fh: + fh.write(outputText) destfile = os.path.join("/etc/systemd/system") - shutil.os.system('sudo cp "{}" "{}"'.format(srcfile,destfile)) + shutil.os.system('sudo mv "{}" "{}"'.format(srcfile,destfile)) print("Copied craftbeerpi.service to /etc/systemd/system") shutil.os.system('sudo systemctl enable craftbeerpi.service') print('Enabled craftbeerpi service') @@ -188,7 +203,6 @@ class CraftBeerPiCli(): print(e) return return - def chromium(self, name): '''Enable or disable autostart''' if(name == "status"): diff --git a/cbpi/config/craftbeerpi.service b/cbpi/config/craftbeerpi.service deleted file mode 100644 index c8f3d9f..0000000 --- a/cbpi/config/craftbeerpi.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Craftbeer Pi - -[Service] -WorkingDirectory=/home/pi -ExecStart=/home/pi/.local/bin/cbpi start - -[Install] -WantedBy=multi-user.target diff --git a/cbpi/config/craftbeerpi.template b/cbpi/config/craftbeerpi.template new file mode 100644 index 0000000..1fc26e3 --- /dev/null +++ b/cbpi/config/craftbeerpi.template @@ -0,0 +1,9 @@ +[Unit] +Description=Craftbeer Pi + +[Service] +WorkingDirectory=/home/{{ user }} +ExecStart=/home/{{ user }}/.local/bin/cbpi start + +[Install] +WantedBy=multi-user.target diff --git a/cbpi/configFolder.py b/cbpi/configFolder.py index 807550b..2cffc16 100644 --- a/cbpi/configFolder.py +++ b/cbpi/configFolder.py @@ -94,7 +94,7 @@ class ConfigFolder: #['fermenter_data.json', 'file'], created by fermentation_controller @ start if not available #['step_data.json', 'file'], created by step_controller @ start if not available ['config.json', 'file'], - ['craftbeerpi.service', 'file'], + ['craftbeerpi.template', 'file'], ['chromium.desktop', 'file'], ['dashboard', 'folder'], ['dashboard/widgets', 'folder'], @@ -181,7 +181,7 @@ class ConfigFolder: self.copyDefaultFileIfNotExists("fermenter_data.json") self.copyDefaultFileIfNotExists("step_data.json") self.copyDefaultFileIfNotExists("config.json") - self.copyDefaultFileIfNotExists("craftbeerpi.service") + self.copyDefaultFileIfNotExists("craftbeerpi.template") self.copyDefaultFileIfNotExists("chromium.desktop") print("Config Folder created") @@ -206,5 +206,5 @@ class ConfigFolder: shutil.chown(os.path.join(dirpath, filename), owner, group) except: print("problems assigning file or folder permissions") - print("if this happend on windows its fine") - print("if this happend in the dev container running inside windows its also fine but you might have to rebuild the container if you run into further problems") + print("if this happened on windows its fine") + print("if this happened in the dev container running inside windows its also fine but you might have to rebuild the container if you run into further problems") From 7594395b4bcec016ca7737d449c0dea7488be40f Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Sun, 15 Oct 2023 10:01:17 +0200 Subject: [PATCH 06/17] update version # --- cbpi/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index da519e1..218a3d5 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.2.0.a2" +__version__ = "4.2.0.a3" __codename__ = "Indian Summer" From bead2b30aedba5a53481062d1d8c8602d6827526 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Wed, 18 Oct 2023 19:43:26 +0200 Subject: [PATCH 07/17] copy craftbeerpi.template file to config folder if not existing after upgrade --- cbpi/__init__.py | 2 +- cbpi/configFolder.py | 11 ++++++++--- requirements.txt | 2 +- setup.py | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 218a3d5..8b2bf2b 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.2.0.a3" +__version__ = "4.2.0.a4" __codename__ = "Indian Summer" diff --git a/cbpi/configFolder.py b/cbpi/configFolder.py index 2cffc16..198bf29 100644 --- a/cbpi/configFolder.py +++ b/cbpi/configFolder.py @@ -106,7 +106,7 @@ class ConfigFolder: ] for checking in required_config_content: if self.inform_missing_content(self.check_for_file_or_folder(os.path.join(self.configFolderPath, checking[0]), checking[1])): - # since there is no complete config we now check if the config folde rmay be completely empty to show hints: + # since there is no complete config we now check if the config folder may be completely empty to show hints: if len(os.listdir(os.path.join(self.configFolderPath))) == 0 : print("***************************************************") print(f"the config folder '{self.configFolderPath}' seems to be completely empty") @@ -118,7 +118,7 @@ class ConfigFolder: print("***************************************************") return False - # if cbpi_dashboard_1.json doesnt exist at the new location (configFolderPath/dashboard) + # if cbpi_dashboard_1.json does'nt exist at the new location (configFolderPath/dashboard) # we move every cbpi_dashboard_n.json file from the old location (configFolderPath) there. # this could be a config zip file restore from version 4.0.7.a4 or prior. dashboard_1_path = os.path.join(self.configFolderPath, 'dashboard', 'cbpi_dashboard_1.json') @@ -132,7 +132,7 @@ class ConfigFolder: try: with open(dashboard_1_path, 'r') as f: data = json.load(f) - if (len(data['elements']) == 0): # there may exist some pathes but pathes without elements in dashboard is not very likely + if (len(data['elements']) == 0): # there may exist some paths but paths without elements in dashboard is not very likely return True else: return False @@ -142,6 +142,11 @@ class ConfigFolder: def inform_missing_content(self, whatsmissing : str): if whatsmissing == "": return False + # Starting with cbpi 4.2.0, the craftbeerpi.service file will be created dynamically from the template file based on the user id. + # Therefore, the service file is replaced with a template file in the config folder + if whatsmissing.find("craftbeerpi.template"): + self.copyDefaultFileIfNotExists("craftbeerpi.template") + return False print("***************************************************") print(f"CraftBeerPi config content not found: {whatsmissing}") print("Please run 'cbpi setup' before starting the server ") diff --git a/requirements.txt b/requirements.txt index 0b8e3b7..5102103 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ aiohttp-session==2.12.0 aiohttp-swagger==1.0.16 aiojobs==1.1.0 aiosqlite==0.17.0 -cryptography==41.0.3 +cryptography==41.0.4 pyopenssl==23.2.0 requests==2.31.0 voluptuous==0.13.1 diff --git a/setup.py b/setup.py index 2f745e6..36cb773 100644 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ setup(name='cbpi4', "aiohttp-swagger==1.0.16", "aiojobs==1.1.0 ", "aiosqlite==0.17.0", - "cryptography==41.0.3", + "cryptography==41.0.4", "pyopenssl==23.2.0", "requests==2.31.0", "voluptuous==0.13.1", From 1b666be9bc75c1d66e98324ff69935220316aa9d Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Wed, 18 Oct 2023 20:30:26 +0200 Subject: [PATCH 08/17] fix for installation on bullseye with sudo and autostart --- cbpi/__init__.py | 2 +- cbpi/cli.py | 5 ++++- cbpi/config/craftbeerpi.template | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 8b2bf2b..7aca342 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.2.0.a4" +__version__ = "4.2.0.a5" __codename__ = "Indian Summer" diff --git a/cbpi/cli.py b/cbpi/cli.py index 64eca20..a885bf6 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -151,6 +151,9 @@ class CraftBeerPiCli(): print("CraftBeerPi Autostart is {}OFF{}".format(Fore.RED,Style.RESET_ALL)) elif(name == "on"): user=os.getlogin() + path="/usr/local/bin/cbpi start" + if os.path.exists("/home/"+user+"/.local/bin/cbpi") is True: + path="/home/"+user+"/.local/bin/cbpi start" print("Add craftbeerpi.service to systemd") try: if os.path.exists(os.path.join("/etc/systemd/system","craftbeerpi.service")) is False: @@ -166,7 +169,7 @@ class CraftBeerPiCli(): srcfile=str(srcfile).replace('\\','/') template = templateEnv.get_template("craftbeerpi.service") - outputText = template.render(user=user) + outputText = template.render(user=user, path=path) with open(srcfile, "w") as fh: fh.write(outputText) destfile = os.path.join("/etc/systemd/system") diff --git a/cbpi/config/craftbeerpi.template b/cbpi/config/craftbeerpi.template index 1fc26e3..eb8092c 100644 --- a/cbpi/config/craftbeerpi.template +++ b/cbpi/config/craftbeerpi.template @@ -3,7 +3,7 @@ Description=Craftbeer Pi [Service] WorkingDirectory=/home/{{ user }} -ExecStart=/home/{{ user }}/.local/bin/cbpi start +ExecStart={{ path }} start [Install] WantedBy=multi-user.target From 6d8faa7f75d9c84352a6b168e6403d5a52aac9a4 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Wed, 18 Oct 2023 20:33:21 +0200 Subject: [PATCH 09/17] fix --- cbpi/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index a885bf6..3618f86 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -151,9 +151,9 @@ class CraftBeerPiCli(): print("CraftBeerPi Autostart is {}OFF{}".format(Fore.RED,Style.RESET_ALL)) elif(name == "on"): user=os.getlogin() - path="/usr/local/bin/cbpi start" + path="/usr/local/bin/cbpi" if os.path.exists("/home/"+user+"/.local/bin/cbpi") is True: - path="/home/"+user+"/.local/bin/cbpi start" + path="/home/"+user+"/.local/bin/cbpi" print("Add craftbeerpi.service to systemd") try: if os.path.exists(os.path.join("/etc/systemd/system","craftbeerpi.service")) is False: From 8457e23eab8c726524d45067d0f3b8dbb8646381 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:14:22 +0200 Subject: [PATCH 10/17] test on onewire setup --- cbpi/__init__.py | 2 +- cbpi/cli.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 7aca342..906a12e 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.2.0.a5" +__version__ = "4.2.0.a6" __codename__ = "Indian Summer" diff --git a/cbpi/cli.py b/cbpi/cli.py index 3618f86..46e8e38 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -38,8 +38,11 @@ class CraftBeerPiCli(): def setup_one_wire(self): print("Setting up 1Wire") - with open('/boot/config.txt', 'w') as f: - f.write("dtoverlay=w1-gpio,gpiopin=4,pullup=on") + with open('/boot/config.txt', 'r') as f: + lines=f.readlines() + #f.write("dtoverlay=w1-gpio,gpiopin=4,pullup=on") + + print(lines) print("/boot/config.txt created") def list_one_wire(self): From 5f4c957fc5b177a04328dfb7a54491adb912d338 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:22:25 +0200 Subject: [PATCH 11/17] extend w1 test --- cbpi/cli.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 46e8e38..25afe8a 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -41,8 +41,15 @@ class CraftBeerPiCli(): with open('/boot/config.txt', 'r') as f: lines=f.readlines() #f.write("dtoverlay=w1-gpio,gpiopin=4,pullup=on") + active=False + for line in lines: + print(line) + if line.find("dtoverlay=w1-gpio"): + active=True + if not active: + lines.append("dtoverlay=w1-gpio,gpiopin=4,pullup=on") + print("Added w1-gpio") - print(lines) print("/boot/config.txt created") def list_one_wire(self): From 69da4beff76083b44c4aaf78884ded8df301ae17 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:24:47 +0200 Subject: [PATCH 12/17] further test --- cbpi/cli.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 25afe8a..51ee60a 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -41,15 +41,11 @@ class CraftBeerPiCli(): with open('/boot/config.txt', 'r') as f: lines=f.readlines() #f.write("dtoverlay=w1-gpio,gpiopin=4,pullup=on") - active=False + lines.append("dtoverlay=w1-gpio,gpiopin=4,pullup=on") + for line in lines: print(line) - if line.find("dtoverlay=w1-gpio"): - active=True - if not active: - lines.append("dtoverlay=w1-gpio,gpiopin=4,pullup=on") - print("Added w1-gpio") - + print("/boot/config.txt created") def list_one_wire(self): From aa8e5eec2cb88107e477aa7f9b6bb798ca93af34 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:30:59 +0200 Subject: [PATCH 13/17] further onewire setup test --- cbpi/cli.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cbpi/cli.py b/cbpi/cli.py index 51ee60a..b612ec3 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -46,6 +46,12 @@ class CraftBeerPiCli(): for line in lines: print(line) + configtemppath=os.path.join(self.config.get_file_path(""),"config.txt") + print(configtemppath) + + with open(configtemppath, 'w') as f: + f.write(lines) + print("/boot/config.txt created") def list_one_wire(self): From f00a646a2adb16ecd53e4147c80ab103ec5fd335 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:33:37 +0200 Subject: [PATCH 14/17] another onewire setup test --- cbpi/cli.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index b612ec3..483692d 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -50,7 +50,8 @@ class CraftBeerPiCli(): print(configtemppath) with open(configtemppath, 'w') as f: - f.write(lines) + for line in lines: + f.write(line) print("/boot/config.txt created") From 76ee4b74a7cb6cd6e65c4697490577d72f64b76e Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:38:15 +0200 Subject: [PATCH 15/17] next onewire setup test --- cbpi/cli.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 483692d..88d6d5e 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -42,16 +42,15 @@ class CraftBeerPiCli(): lines=f.readlines() #f.write("dtoverlay=w1-gpio,gpiopin=4,pullup=on") lines.append("dtoverlay=w1-gpio,gpiopin=4,pullup=on") - - for line in lines: - print(line) - - configtemppath=os.path.join(self.config.get_file_path(""),"config.txt") - print(configtemppath) - - with open(configtemppath, 'w') as f: + + configtempfile=os.path.join(self.config.get_file_path(""),"config.txt") + + with open(configtempfile, 'w') as f: for line in lines: f.write(line) + destfile="/boot/config.txt" + + shutil.os.system('sudo mv "{}" "{}"'.format(configtempfile,destfile)) print("/boot/config.txt created") From 60108f0594804631480c968af6b1006c64f58ed3 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:41:30 +0200 Subject: [PATCH 16/17] next test --- cbpi/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cbpi/cli.py b/cbpi/cli.py index 88d6d5e..d57a3c2 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -50,7 +50,7 @@ class CraftBeerPiCli(): f.write(line) destfile="/boot/config.txt" - shutil.os.system('sudo mv "{}" "{}"'.format(configtempfile,destfile)) + shutil.os.system('sudo cp "{}" "{}"'.format(configtempfile,destfile)) print("/boot/config.txt created") From f03bb14143a99a4331930d0db8af9ffbb2637020 Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Thu, 19 Oct 2023 07:45:05 +0200 Subject: [PATCH 17/17] next onewire setup test --- cbpi/cli.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cbpi/cli.py b/cbpi/cli.py index d57a3c2..ab7d6dd 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -50,7 +50,9 @@ class CraftBeerPiCli(): f.write(line) destfile="/boot/config.txt" + #copy and remove afterwards as mv will work, but raise an error message due to different file owners shutil.os.system('sudo cp "{}" "{}"'.format(configtempfile,destfile)) + shutil.os.system('rm -rf "{}"'.format(configtempfile)) print("/boot/config.txt created")