How 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…

Weiterlesen

Dealing 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…

Weiterlesen

Chromium 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…

Weiterlesen

secure 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

TermiShell: a web-based shell for the Raspberry Pi (development notes)

Introduction In the course of development of PiCockpit, I am going to add a web-based Terminal called TermiShell. TermiShell icon, by: Stephanie Harvey via unsplash.com TermiShell is going to allow you to log into your Raspberry Pi using PiCockpit.com (and the picockpit-client) – no additional application required on either side. This should be very comfortable,…

Weiterlesen

Creating configuration files in /etc in Debian packages

I am currently working on an updated picockpit-client version, which should add additional configuration files in /etc/picockpit-client for the individual modules (PiDoctor & PiControl). picockpit-client is a Raspbian package for picockpit.com, linking the Web platform with your individual Raspberry Pi. As Raspbian is based on Debian, the following information holds true for general packaging for…

Weiterlesen

Eclipse Paho MQTT JavaScript Documentation

Unfortunately the official Eclipse page which you  can easily find using Google does NOT link to the documentation proper (at least not as far as I can see it). The link to the documentation itself is this: https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html Happy coding.

Weiterlesen