Development

/Development

Vuetify :: Open detail row programmatically

For the upcoming PiCockpit v2.0 release, I am preparing a GPIO application.The GPIO entries are table rows – and to configure them, we want to be able to access the detail row by clicking on the configure button:clicking either the chevron or the configure button will lead to the detail row opening:Here is the corresponding [...]

By | August 9th, 2020|Vue.js, Vuetify|Kommentare deaktiviert für Vuetify :: Open detail row programmatically

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 with other applications. [...]

By | August 1st, 2020|Development, PiCockpit, Python, Raspberry Pi Blog|Kommentare deaktiviert für enabling and disabling a systemd service in Python using DBus

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. ProblemIf, 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 core application"                 [...]

By | Juli 24th, 2020|MongoDB|Kommentare deaktiviert für How to set unique object ids in embedded documents across a MongoDB collection

switching 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: MessagePack allows you [...]

By | Juli 21st, 2020|JavaScript, MQTT|Kommentare deaktiviert für switching from JSON to MsgPack in a backwards compatible manner with Paho MQTT (JavaScript)

envoy 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, for [...]

By | Juni 27th, 2020|Development|Kommentare deaktiviert für envoy fix for serving big files from the backend / timeouts / aborted downloads

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:220can be solved by:# cast to string, THEN check if it is nil if !(shopify_data[spid]["billing_address"]["address2"].as_s? == nil)     name = [...]

By | Mai 30th, 2020|Crystal Language|Kommentare deaktiviert für Dealing with NIL in JSON::Any in Crystal Lang

Chromium exit code -5

While running Chromium with chromium-browser --display=:0 https://www.picockpit.comwill 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 specified for PiControl [...]

By | Mai 19th, 2020|Development|Kommentare deaktiviert für Chromium exit code -5

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 subprocessIn the upcoming version of PiCockpit, users will be able to create their own buttons (simply editing a JSON file [...]

By | Mai 15th, 2020|Development, Python|Kommentare deaktiviert für secure command execution with Python: subprocess.Popen

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

IntroductionIn 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, especially when [...]

By | Mai 5th, 2020|Development, Python, Raspberry Pi Blog, Raspberry Pi Embedded Development|Kommentare deaktiviert für TermiShell: a web-based shell for the Raspberry Pi (development notes)

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 Debian and [...]

By | April 5th, 2020|Development|Kommentare deaktiviert für Creating configuration files in /etc in Debian packages