9. April 2017

How to edit font for OLED display SD1306

In the previous article, I’ve described how to generate custom font for OLED display like SD1306.

Meanwhile, I’ve discovered that number eight and number zero are hard to distinguish when reading from a distance, because of the dot inside the number zero.

I decided to remove the dot from number zero in order to make the font more readable. But how to do it?

Font generated from Squix’s generator is stored in form of source code. That makes it possible to edit. Just the stream of hexadecimal numbers is not very readable for a human.

Here is a small trick. Open the file in Vim in a terminal window. Search for string 0x00 which represents an area with no pixels. Vim should highlight all the occurences of 0x00. If you can’t see the highlight type command:

:set hlsearch

Start shrinking the window of the terminal and you should see that pattern begins to emerge.

When you hit the correct length of a line you should see the number clearly.

Numbers could be rotated, like number seven:

Change the font rebuild the code and the result looks like this:

24. March 2017

How to start Wireshark on openSUSE

The simple way how to start Wireshark on Linux is to type:

wireshark

If you run this command as a normal user you won’t be able to capture packets. In order to dump packets, you need to execute it as root. This must be done in a specific way. If try just sudo you’ll end up with interesting errors like:

Attempt #1

$ sudo su
# wireshark
QXcbConnection: Could not connect to display 
Aborted (core dumped)

Attempt #2

$ sudo wireshark
QXcbConnection: Could not connect to display 
[1]    8836 abort      sudo wireshark

The proper way how to start Wireshark is by gtk-su:

xdg-su -c wireshark

13. March 2017

How to switch tabs in Konsole

Konsole has support for tabs like other terminal emulators. The question is how to switch between tabs using a keyboard.

Default keyboard shortcut is Shift + Left/Right Arrow.

If you’re used to other keyboard shortcuts like Ctrl + PgUp/PgDn which are common in Google Chrome then you can add new shortcuts easily.

Open menu Settings, select Configure Shortcuts…

Type word tab into Search field.

Find item Next tab. Click column Alternate. Click button with title None. Now you can define a keyboard shortcut. Press Ctrl + PgUp.

Find item Previous tab. Click column Alternate and button with title None. Press Ctrl + PgDown. Click OK to confirm your configuration.

Now you can enjoy new configuration. If you like this tip or you’d like some other hint about Linux let me know in the comments section bellow.

8. March 2017

How to enable line numbers in KWrite

The text editor KWrite has support for line numbers. This feature is disabled by default. You can enable it by few clicks.

From menu Settings select Configure Editor…

Navigate to Appearance. Select Borders tab, click Show line numbers and click OK.

Here you can see KWrite with enabled line numbers:

20. February 2017

How to send command from Python via MQTT to RGB LED connected to ESP8266

I’ve described how to send server load as a number to MQTT in the previous article. The number could be then translated via Node-RED to command for LampESP with RGB LED. The result is simple. LED indicates server load by displaying different colors.

The other option is to deliver color command directly from the server using Python.

Just install paho-mqtt:

pip install paho-mqtt

Here is small snippet of Python code (publish_server_load.py):

#!/usr/bin/env python3

import paho.mqtt.publish as publish
import os

color = 'red'
load = os.getloadavg()[0]
if load < 0.7:
    color = 'black'
elif load < 1.5:
    color = 'blue'
elif load < 3:
    color = 'green'
elif load < 7:
    color = 'orange'

publish.single('/server/monitoring/command', color, hostname='iot.sinusgear.com')

ESP should listen to /server/monitoring. Code of LampESP 0.3 is available at GitHub.

Put this code into crontab

* * * * * /usr/local/bin/publish_server_load.py

If you’re using virtualenv the command should be:

* * * * * /opt/my-python-env3/bin/python /usr/local/bin/publish_server_load.py