Aktivierung und Deaktivierung eines systemd-Dienstes in Python mit DBus

Der kommende picockpit-client reagiert auf Löschvorgänge des Frontends, indem er seinen Dienst deaktiviert (die Anwendung bleibt jedoch installiert). Wenn Sie sich entscheiden, picockpit-client connect erneut zu starten, wird der Dienst wieder aktiviert und automatisch für Sie gestartet. Dies ist über die Python DBus-Schnittstelle möglich. Der DBus ist ein Bussystem zur Interaktion mit...

Weiterlesen

Raspbian SSH Server schlägt nach Upgrade von Stretch auf Buster fehl (keine SSH-Verbindung)

Ich habe diese exzellente Anleitung benutzt, um mein Raspbian von Stretch auf Buster zu aktualisieren: https://pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster/ Nachdem ich meinen Pi neu gestartet hatte, war die SSH-Verbindung weg. Das Einloggen in den Pi mit der angeschlossenen Tastatur und dem Monitor ermöglichte es mir, das Problem zu beheben: service ssh status journalctl -u ssh -n 200 "Missing privilege separation directory /run/sshd" This directory needs...

Weiterlesen

Festlegen eindeutiger Objekt-IDs in eingebetteten Dokumenten in einer MongoDB-Sammlung

MongoDBs updateMany kann verwendet werden, um alle Dokumente zu aktualisieren, die übereinstimmen. Problem Wenn Sie jedoch bei Ihrer Aktualisierung eindeutige neue ObjectIDs setzen wollen, würden Sie feststellen, dass MongoDB für jeden Eintrag dieselbe ObjectID setzt: db.getCollection('mypis_collectedpis').updateMany({}, {$set: {apps: { "com.picockpit/core": { meta: { version: "2.0", name: "PiCockpit Core", image: "", description: "PiCockpit.com...

Weiterlesen

Umstellung von JSON auf MsgPack in einer rückwärtskompatiblen Weise mit Paho MQTT (JavaScript)

picockpit.com macht regen Gebrauch von MQTT. Für die kommende Version 2.0 habe ich mich entschieden, auf MsgPack umzusteigen. Warum MsgPack? MsgPack (eigentlich MessagePack genannt - Pakete verwenden in der Regel MsgPack) ist ein binäres Format, das auf Kompatibilität mit JSON abzielt, aber die Dateigröße verringert (was gut für die Einsparung von Bandbreite und Serverressourcen ist). Ein weiterer Vorteil:...

Weiterlesen

envoy Fix für das Ausliefern großer Dateien aus dem Backend / Timeouts / abgebrochene Downloads

Kunden haben sich darüber beschwert, dass sie große Dateien von unseren Websites (z.B. PiDoctor auf PiCockpit.com) nicht herunterladen konnten. Zunächst konnte ich das Problem nicht lokal replizieren, die Dateien schienen problemlos heruntergeladen zu werden. Nach weiteren Untersuchungen stellte ich fest, dass die Downloads nach einer bestimmten Zeit abbrachen - abhängig von der Downloadgeschwindigkeit...

Weiterlesen

Historische 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 um den Pi Zero...

Weiterlesen

20888

20.888 ist die Gesamtzahl der Raspberry Pi, die wir (pi3g e.K.) im letzten Jahr (2019) verkauft haben. Vielen Dank an alle unsere Kunden, Wiederverkäufer und Partner.

Weiterlesen

Umgang mit NIL in JSON::Any in Crystal Lang

Eine der Herausforderungen bei der Entwicklung mit Crystal ist, dass es nicht so nachsichtig mit Datentypen umgeht wie z.B. Python oder Ruby. nil wird Sie beschäftigen. Die folgende Fehlermeldung: cast from Nil to String failed, at /usr/share/crystal/src/json/any.cr:220:5:220 kann wie folgt gelöst werden: # cast to string, DANN prüfen, ob es nil ist, wenn...

Weiterlesen

Chromium-Exit-Code -5

Während die Ausführung von Chromium mit chromium-browser -display=:0 https://www.picockpit.com es ermöglicht, Chromium von einer SSH-Verbindung aus zu starten (und es wird auf dem Hauptbildschirm des X-Servers ausgegeben), schlägt dies fehl, wenn Sie versuchen, es mit subprocess.Popen in Python auszuführen: "command": ["chromium-browser", "-display=:0", "https://picockpit.com"] (dies ist ein Teil des JSON-Formats, das ich habe...

Weiterlesen

sichere Befehlsausführung mit Python: subprocess.Popen

Sicherheit ist mir bei der Entwicklung des PiCockpit-Clients wichtig. Das Folgende gilt für Linux-Systeme (ist aber wahrscheinlich auf alle Unix-ähnlichen Systeme anwendbar, einschließlich macOS) Python erlaubt es, externe Befehle mit dem Modul subprocess auszuführen. import subprocess In der kommenden Version von PiCockpit werden Benutzer in der Lage sein, ihre eigenen Schaltflächen zu erstellen (einfach...

Weiterlesen