Blog Articles by FragSalat

    Hey there, as you landed on this article you're probably annoyed that IKEA isn't so smart yet and you can't integrate it into your smart home and can't control it via Google Assistant or Alexa. No worries I'll tell you how you can control the IKEA lamps with a Raspberry PI, which you right now control with an Ansluta remote. The remote must be the model with a 2.4GHz chip and not with a 433MHz one. On the back of my Ansluta remote is the model number YH-KZQ-FS. If you have such a remote you can continue reading. Otherwise this article might be useless for you.

    What you need

    The Ansluta remote is using the CC2500 chip, which you can get for 3€ on Amazon. To ensure we definitely are able to replicate the commands we're going to use the same chip as well. Then we will use a Raspberry PI 3, which you can get for 33.99€ on Amazon to control the chip. For sure you also can use an Arduino, NodeMCU, ATTiny/ATMega or any other MCU. I used an Raspberry PI because I wanted to try out the

    Read More

    I'm already for a long time owner of logitech keyboards and mouses but to be honest I used their features quite rarely. From time to time i created macros for the G-Keys of my previous G15 but it never worked out so well. As my Logitech G15 keyboard were already over 10 years old and my Logitech G5 mouse had a break in the cable, my girlfriend were so nice to spend me a new Logitech G613 wireless keyboard and a Logitech G603 wireless Mouse to my birthday last year <3


    Today I finally had some things I wanted to put on the G-Keys. One key got an assignment to mute my microphone and the other should get a macro to buff my character in the old MMORPG I started playing again :) This worked very nice but there was a problem! Once the macro started, I couldn't abort it and the enemy had enough time to kick my ass^^ After some Googling and some short playing around I got my solution and that's what I want to share with you now :) (finally eh :D)


    To be able to abort the macro you have to modify

    Read More

    Before some years I started beeing interested in smart home and especially in creating it by myself :) My first project was a tutorial to build a temperature sensor which sends the data to my raspberry gateway via 433MHz. As these tutorial were quite old I had to exchange some hard and software to make it work but it was a nice challenge. End of 2018 I then thought that it might be nice to enhance the sensor by measuring volatile organic compounds and CO2. Some could say that I could buy an existing sensor but you know, ... that wouldn't be fun :D

    Measuring volatile compounds

    After some research I decided to choose CCS811 chip for measuring the total volatile organic compounds (tVOC) because it was quite cheap and it can operate on 2.7V+, which was necessary because my existing setup is supplied by 3 AAA batteries. The chip can also calculate the estimated co2 value (eCO2) based on the tVOC. So I bought a CJMCU-8118 breakout on Amazon for around 15€ but you can buy it cheaper on

    Read More

    Hey folks :)

    Today at work we made some changes in our Aurelia application which lead to some unforseen changes. The model setup is a parent class which holds a list of child classes. The parent class have a getter which returns true or false based on all children having a certain property or not.


    Read More

    Everyone of us is using some kind of logging in our applications. I actually didn't thought that logging can be evil to me...

    Recently I recognized that my lovely Aurelia app was getting slower and slower and that it struggled with big data tables in some cases. Once I got some time and analyzed the problem and found quite fast some things to improve. The Performance tab in Chrome gave me nice insights about load times, memory consumption and performance of single functions and their call stack. After some navigation through my Aurelia application I found a quite interesting memory leak. There were actually quite many places where I sadly kept references to some view models and custom elements which lead to a huge dom tree and other objects not being garbage collected. Luckily all of those were easy to fix by adjusting my self written annotations and subscription management to use the bind and unbind lifecycle of the view models and custom elements. After I ensured that all

    Read More

    In my last article "Control Sonos with Google Assistant - Node server - Part 1" I explained how to create a service to consume webhooks from Google to control your Sonos with your voice. Because this server has to be reachable for Google from outside of your home network, you have to create a domain which is pointing to your server. This is called dynamic dns and is a pretty simple priciple but requires some effort to setup. I'll explain how to create a DynDNS domain based on Cloudflare or the service noip.com which is only limited free.


    The priciple

    You might or not know what a domain is and how this works. I try to eplain it in a very simplified way. Think about it like your contacts in your mobile phone. Instead of saving all the plain phone numbers you're saving them with the name of the people owning this number. A domain is almost the same. It's just the alias for a specific ip which is like a phone number in the web. The problem is, that like with your contacts, the alias is

    Read More

    In my last articles "How to connect Sonos to Google Assistant - Part 1" and "Control Sonos with Google Assistant - DynDNS - Part 2" I explained how to create a service to consume webhooks from Google to control your Sonos with your voice and how to setup a DynDNS domain. This part will focus on the configuration of an application in Googles Dialogflow. These platform gives us the ability to design flexible dialogs we can have with the Google Assistant by defining phrases the user has to say and the assistant responds. The cool thing here is that the Google Assistant in comparison to Alexa is capable of handling variations to the phrases you specify. If you for instance define the sentence "play a song from $artist", the Assistant will recognize "play a track from $artist" as well. In my eyes this is super fancy and a great technology.

    Create the Dialogflow agent

    In the first step you have to go to Dialogflow and create a new agent. As far as I know it, the name doesn't really matter

    Read More

    Quite a time ago I bought a Sonos Play:1 because I was super sure I can control this with my new Google Home Mini and this would be super fancy. Sadly I was negatively suprised :(. There wasn't and still isn't native support and even on google there were not that many options to work around this. I checked out if IFTTT is able to connect to my Sonos but no luck here. I read that Logitech Harmony products are able to control the Sonos players but this wasn't working as I expected and I keept searching. I found an option with the service Yonomi which seem to be similar to IFTTT but i didn't want to register for another not fitting service. Yesterday I was thinking about the way I searched and that I might find solutions which requires development skills and I found something. Actually Sonos players got an HTTP API and there is a NodeJS project out there which wraps this API in a simple to use gateway. I'll explain in the next articles how to setup the Sonos HTTP gateway, a Google

    Read More

    Today I struggled with a weird behavior of CSS transitions. In some cases they worked and in some not. So I investigated a bit and could find a solution and even kind of an explanation :D


    My use case was a overlay element whose height should be animated via CSS transitions when opening and closing based on the content it has. The content itself was absolute positioned for several reasons and I had to get the height of all children every time they change. In a previous version the code kind of looked like this:


    Read More

    Recently I wanted to watch a series hosted on different platforms like streamcloud or vivo. So I searched for this series and opened the first video on streamcloud and was abused by tons of porn advertisements. Ok I could install a Adblocker, which I don't like because it steals smaller websites like mine the money, but there are sites out there where you can't start the video with enabled adblocker. After I passed the 10 seconds delay I clicked the button to proceed to the video. Again I was bombed with advertisement. Even though this is already absolutely annoying, I was super pissed off after four times a popup opened when I clicked the start button. Incredibly the video finally started after the 5th click. To watch one episode which has around 20 minutes play time I had to see 8 advertisement blocks and 4 popups. Holy shit was I annoyed when I thought about that one series like fairy tail has over 250 episodes and I have to do this every 20 - 40 minutes!!!

    The idea was born

    So i

    Read More