this page is currently under construction

welcome to pi3g

your european partner for raspberry pi & machine learning

We are a Raspberry Pi approved reseller, and one of only two Pi Zero W distributors in Germany. With our strong technical background we are a solid choice as your partner for anything Raspberry Pi related in Germany, Europe and beyond.

Starting in 2020 we have also become one of Google's select worldwide partners for distribution of their Coral.AI lineup. We believe artificial intelligence / machine learning is the way forward in the future.

Get in touch with us today, to see how your business can benefit from single board computing and embedded machine learning - go beyond and way ahead of your competition.

In our blog you can expect blog posts about technology and business topics, of course about the Raspberry Pi, but also a wide variety of topics related to Industrie 4.0, IoT, and machine learning - for example about the popular MQTT protocol, Python and Linux embedded development, and much more. Blog entries are not scheduled and not in particular order - the topics are an eclectic mix of what comes up in real life of a company engaged in machine learning & Raspberry Pi embedded adventures.

My (Max') attitude is to post about topics which take up significant time for research and experimentation, and which are not well-documented elsewhere. And of course, also some rather emotional topics about how to do business properly.

If you resonate with what I write, my advice is for hire in the form of consulting. I love to rant about bad user interface and business design, and brainstorm workable solutions with you. Possibly the best money you will ever spend.

Vuetify :: Open detail row programmatically

Von Maximilian Batz | 2020-08-09

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…

Mehr Lesen

enabling and disabling a systemd service in Python using DBus

Von Maximilian Batz | 2020-08-01

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…

Mehr Lesen

Raspbian SSH Server fails after upgrade from Stretch to Buster (no SSH connection)

Von Maximilian Batz | 2020-07-31

I used this excellent guide to update my Raspbian from Stretch to 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…

Mehr Lesen

How to set unique object ids in embedded documents across a MongoDB collection

Von Maximilian Batz | 2020-07-24

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: „…

Mehr Lesen