In case you missed it, Gradle configuration caching is no longer enabled by default in certain scenarios. Here’s what you need to know to ensure your builds leverage this feature effectively. Important Note: To avoid potentially leaking secrets in the configuration-cache entry, the action will only save or restore configuration-cache data if the cache-encryption-key parameter is set. What is Gradle Configuration Cache?… Read more →
No3x
openHAB: send Android Timer Alarm
To send a status update to openhab if the timer alarm is going off on the android phone we need some tools. First we need the openhab app installed and configured with the tasker plugin enabled Second we need tasker Third we need Automate to read notifications and, create a little logic. Automate Flow (OnePlus tested) I will explain the… Read more →
openHAB 3: conditional log Items
I want to skip the logging for some items like Spotify track progress (which updates every second) so that the logs are not polluted. Since openHAB version 3 log4j2 is used as logging framework and the log4j2.xml has to be used to configure logging. We can use a RegexFilter to configure such behaviour. How to The RegexFilter allows the formatted… Read more →
Gradle dependencySubstitution
I worked on a project that uses a framework. To add a new sub class I had to make the base class, that is part of the framework, open for extension. I was able to compile the framework on my own without the need to create a local artifact repository then create a new artifact and new version by the… Read more →
WP Mail Logging Ownership
The ownership of the WordPress Plugin WP Mail Logging has been transferred to MailPoet. Their plans are to keep the plugin alive and maintain it. Read more →
esp2866 grill
A simple UI to control a fan in a lotus grill with an esp8266 with arduino interface. The chip creates an access point (AP) and uses a captive portal to provide easy access to the UI. UI The UI provides the following actions: Turn the fan on/off Set the speed of the fan View the connection status to the server… Read more →
Letsencrypt Wildcard Certificate HowTo
After the delay of the ACMEv2 including the wildcard-endpoint [2] it finally is live today [3]. In addition to the ACME v2 requirement, requests for wildcard certificates require an DNS “TXT” record to verify control over the domain. Just “upgraded” my certificate to an root certificate follwing these steps: 1. Upgraded my certbot
1 2 3 | cd /opt/letsencrypt git reset --hard git pull |
2. Requested certificate (command is based… Read more →
X-Ring with Google Calendar
As application for the X-Ring RGB Strip I came up with the following idea: querying the next event in my Google Calendar tagged with #wecker and then visualize the remaining time. I have illustrated the structure of all components in the following figure: Google Calendar The Wemos D1 mini queries the next event by accessing my Google Calendar. This is done… Read more →
X-Ring missing documentation
I recently bought a X-Ring WS2812B RGB on AliExpress.com. There is no information about the wiring or the bus how the X-Ring is controlled. So I did a little reverse engineering and want to share the information:At first: the X-Ring is driven by a One-Wire connection.There is a switch on the top: The wiring is the following: When I ordered… Read more →
Convert timestring to number Google Spreadsheet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function toMS(input) { const sRegex = /\d+s/g; const msRegex = /\d+ms/g; const usRegex = /\d+us/g; Logger.log("Running toMS with parameter: " + input); var sToMs = 0; var msToMs = 0; var usToMs = 0; while((seg = sRegex.exec(input)) !== null) { sToMs += parseInt(seg) * 1000; } while((seg = msRegex.exec(input)) !== null) { msToMs += parseInt(seg); } while((seg = usRegex.exec(input)) !== null) { usToMs += parseInt(seg) / 1000; } usToMs += msToMs + sToMs; return usToMs; } function toUS(input) { return toMS(input) * 1000; } |