enabling and disabling a systemd service in Python using DBus
The upcoming picockpit-client reacts to deletion events from the frontend by disabling it’s service (the application will stay installed, however). Similarly, when you decide to run picockpit-client connect again, the service will be re-enabled and started automatically for you. This is possible using the Python DBus interface. the DBus is a bus system for interacting…
WeiterlesenRaspbian SSH Server fails after upgrade from Stretch to Buster (no SSH connection)
I used this excellent guide to update my Raspbian from Stretch to Buster: https://pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster/ After rebooting my Pi, the SSH connection was gone. Logging into the Pi using the attached keyboard and monitor allowed me to debug the issue: service ssh status journalctl -u ssh -n 200 “Missing privilege separation directory /run/sshd” This directory needs…
WeiterlesenHow to set unique object ids in embedded documents across a MongoDB collection
MongoDB’s updateMany can be used to update all documents which are matched. Problem If, however, you want to set unique new ObjectIDs in your update, you would find that MongoDB sets the same ObjectID for every entry: db.getCollection(‘mypis_collectedpis’).updateMany({}, {$set: {apps: { “com.picockpit/core”: { meta: { version: “2.0”, name: “PiCockpit Core”, image: “”, description: “PiCockpit.com…
Weiterlesenswitching from JSON to MsgPack in a backwards compatible manner with Paho MQTT (JavaScript)
picockpit.com makes heavy use of MQTT. For the upcoming version 2.0 I have decided to switch it to MsgPack. Why MsgPack? MsgPack (actually called MessagePack – packages tend to use MsgPack) is a binary format, aimed at compatibility with JSON, but decreasing file size (which is good for saving bandwidth & server resources). Another advantage:…
Weiterlesenenvoy fix for serving big files from the backend / timeouts / aborted downloads
Customers were complaining about not being able to download big files from our websites (e.g. PiDoctor on PiCockpit.com). Initially I could not replicate the issue locally, the files seemed to be downloading fine. After further investigation I determined that the downloads were cutting out after a certain time – depending on your download speed, thus,…
WeiterlesenHistorische Texte
Als Teil der Überarbeitung der pi3g.com Webseite, in Vorbereitung auf den Launch der Google Coral.AI und AIY Produktreihe, habe ich unsere Webseite auf Englisch umgestellt. Hier als Referenz einige der Texte die wir früher hatten: Wir sind als Raspberry Pi Foundation approved reseller, sowie einer von zwei deutschen Pi Zero Distributoren Ihr starker Partner rund…
Weiterlesen20888
20.888 is the total number of Raspberry Pi we (pi3g e.K.) sold last year (2019). Thank you to all our customers, resellers and partners.
WeiterlesenDealing with NIL in JSON::Any in Crystal Lang
One of the challenges when developing with Crystal is that it is not as forgiving about data types as, say, Python or Ruby. nil will keep you occupied. The following error message: cast from Nil to String failed, at /usr/share/crystal/src/json/any.cr:220:5:220 can be solved by: # cast to string, THEN check if it is nil if…
WeiterlesenChromium exit code -5
While running Chromium with chromium-browser –display=:0 https://www.picockpit.com will allow you to start Chromium from an SSH connection (and it will output to the main display in the X Server), this will fail when you try to run it with subprocess.Popen in Python: “command”: [“chromium-browser”, “–display=:0”, “https://picockpit.com”] (this is part of the JSON format I have…
Weiterlesensecure command execution with Python: subprocess.Popen
Security is important for me while developing the picockpit-client. The following applies to Linux systems (but probably is applicable to all Unix like systems, including macOS) Python allows to run external commands using the subprocess module. import subprocess In the upcoming version of PiCockpit, users will be able to create their own buttons (simply editing…
Weiterlesen