Recent Updates

Ok, a ton of guides already exists and I do not plan to do another one but I want to leave you with my experiences as I do not want to use the Dji Go 4 app for stitching the sphere – I work with the SD full image files.

The tool that I use for stitching is Hugin which is open source. I bet there are easier and better alternatives but as I just do it more for fun I won’t pay a $100 for a license. Hugin can be downloaded here http://hugin.sourceforge.net/ and is available for many operating systems.

This is the guide that I used to familiarize myself with the Hugin software

I did not create a Stereographic projection but I used an Equirectangular output from Hugin

I exported it as an JPG file

Post export I imported it into GIMP to make sure that it follows the required 2:1 dimension and consequently resized the canvas by modifying the height to be half the width. Expand at the top of the image

Ok, I love my Plex server. I’ve been using it almost daily since 2012. But there’s been one feature missing since I turned off my Windows Media Center server many years ago and that has been to subscribe and record shows that I follow. And when the Plex team announced DVR support in Plex I’ve been meaning to look into it.
As I’m using a satellite dish to get my channels I looked for an alternative way from the official supported devices and stumbled upon a Dreambox thread in one of the forums. Here is what I’ve done if it happens to be of interest to someone else.

I bought a Dreambox 500HD S2 (satellite tuner) on eBay

As it had the original firmware on it, I first needed to flash it with the “second stage loader” in order to be able to add a custom image on it. It is described at the bottom of this page: http://sources.dreamboxupdate.com/

I needed to find a firmware that supported softcams as well as it supported the PlexDVR API and after a lot of Googling I found out that OpenATV should work great

Do NOT use the automated install through the Plugin Manager – Open a Terminal window (DCC)

Run the command: “opkg install /tmp/softcam-feed-universal_2.0_all.ipk”

Now, press the blue remote button and navigate to install plugins and softcams should be listed as an option

I installed CCcam 2.3 and started the softcam under the Softcam Panel

Goto /etc/keys to find a template to be used for the softcam. Modify it according to your specs and save it as CCcam.cfg in the same directory. I also updated the attributes to 755 (I don’t know if that is required)

It works great for recording shows or movies and the new content will be stored into my existing libraries. LiveTV is not working perfectly – sometimes it works and some times not – but recording of shows has not failed once.

I wanted to setup HAProxy as an reverse proxy towards my nextCloud 12 server and I really struggled to find proper information on how to do that. As I have a number of backend services I needed a different webroot to define the request and I finally succeeded and I want to share my configuration settings.

In my quest to replace my current setup of Arduinos to esp8266 to gather sensor data I’ve been struggling with getting a similar output when using an LDR (light dependant resistor). I’ve been struggling with it for quite some time and I’ve finally come to a solution.

The issue being that the output graph from the LDR with an Arduino differs quite a bit from an esp8266 with an LDR.

After browsing for more details regarding the analog pin (ADC) on the esp8266 I realized that it does not measure between 0-3.3v but from 0-1v. When you do an analogRead on the input it outputs a value between 0-1024. But after I had introduced a voltage divider to get to 1v input I was still not getting the expected results.

In order to troubleshoot I measured the output from the ADC (i.e. digitalWrite(A0,1) ) and I received 0.6v. I thought that maybe it will output the expected max input value (but actually it was half the value).

As a summary the maximum voltage for my esp8266 is 0-1.2v. I don’t know if this is a common value for the esp8266 or if it was unique only for my esp8266-12e but at least there is a fairly simple way to find out.

So instead of using a 100Ω (R2) and 220Ω (R1) resistors to get to 1.0v I used 100Ω (R2) and 180Ω (R1) in the voltage divider to bring down 3.3v to 1.2v as input to the LDR. R1 was calculated using this online tool http://www.raltron.com/cust/tools/voltage_divider.asp

I’ve played around with ESP8266 on a couple of occasions before but I’ve found it too unstable due to me simply not knowing enough. But as I have struggled to find a good solution for capturing signals from the sensors of my burglar alarm I decided to have another go at it.

There are tons of guides “out there” but I have been missing a good overview so I will try to explain my steps a bit more and the challenges with the esp8266.

Background

I have a cheap home burglar system with a set of PIRs and magnet sensors throughout my house. These are all sending messages to the central unit using PT2262 encryption.

As I am steering the lights etc. using norelite on Node-RED I want to capture these messages and simply put them onto an MQTT bus from where my norelite flows can subscribe to the topics and use the information.

I have tested the rc-switch library using an Arduino so I know that the interception and decoding works as required. I’ve previously used a 433 receiver with an Arduino Mini Pro and an nrf24l01 to send the data to a server that later puts the message on the MQTT bus – but there are too many components involved and it simply is not a good solution.

ESP8266-12E

Basics: Booting ESP8266 for flash

I’ve found the following setup to be stable in setting up the esp8266 for flashing.

VCC

3.3V (Power supply)

GND

GND Power supply and
GND Serial adapter

TX

RX Serial adapter

RX

TX Serial adapter

CH_PD

Pull high using 10kΩ resistor. Note that if you are using the module adapter it already includes the resistor

RST

Pull high using 10kΩ resistor

GPIO15

Pull low using 10kΩ resistor. Note that if you are using the module adapter it already includes the resistor

GPIO0

Pull low using 10kΩ resistor

Basics: Booting ESP8266 for run

The only difference from the boot-for-flash setup is that you move GPIO0 to pull to high as shown below and removing the serial adapter (keep it if you want to get the output in the console)

VCC

3.3V

GND

GND

CH_PD

Pull high using 10kΩ resistor. Note that if you are using the module adapter it already includes the resistor

RST

Pull high using 10kΩ resistor. (Move to GND in order to reset the device)

GPIO15

Pull low using 10kΩ resistor. Note that if you are using the module adapter it already includes the resistor

GPIO0

Pull high using 10kΩ resistor

Lessons learned when programming for the esp8266

Don’t forget to use delay() or yield() in your loops to give the opportunity for the device to manage background processes

If you are using timers (e.g. using Ticker library), make them short and very simple – set variables and then do the major processing in the loop(). This is useful if you want to only run a certain task with a timing delay: Below is a simple example where just a variable is set in the called function and then the processing is made in the main loop function.

#include Ticker timer;
volatile bool timerRun;
void timerTick(){
timerRun = true; //Just setting the variable
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
//Setup timer
timer.attach_ms(60000, timerTick);
timerRun = false;
}
// the loop function runs over and over again forever
void loop() {
if (timerRun){
digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is acive low on the ESP-01)
delay(1000); // Wait for a second
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH
timerRun = false;
}
/*
* Other processing
*
*/
}

Don’t run the esp8266 on the power supplied from the serial cable. Use a dedicated power supply and make sure to have a common ground. I.e. connect the serial GND to the power supply GND. Don’t forget limit the supplied voltage to 3.3V…

Verify that the baud rate in the console is supported by the OS and is the same as specified in the code

I’ve also experienced some issues with the serial adapter where the communication is lost sometimes but that is usually resolved by ejecting and re-inserting the usb cable and sometimes I have to update the port setting in the Arduino IDE.

I’ve also heard that it can be good to reset the flash memory when troubleshooting. I’ve never done it myself but one tool that can be used is esptool

The project

Components and schema

The below schema is for run mode. When flashing move GPIO0 to GND, connect TX/RX and GND from the serial adapter.

(U2) LM1117 voltage regulator. Needed as I have a 5V input and I the ESP8266 runs on 3.3V and the 433MHz receiver is powered by 3.3-5V

I’ve browsed to find an easy way to make a node.js program to run at startup and stop and start easily and this is what I came up with. As I might be running multiple node.js programs I need to search on the parameters when killing the right node program.

What I’m doing is the following:

Discarding stdout and stderr from the program at start

Using a parameter sent to node.js to identify the right program to stop when stopping the service

Below is my /etc/init.d/rf24snserv program and don’t forget to make it executable and add the symbolic link using update.rc. I.e.