Avoid message loops with FHEM2FHEM

Multiple instances of the open source server for house automation FHEM running on different machines can communicate using the FHEM2FHEM¹ module. Unfortunately one runs into big trouble when trying to use the module bidirectionally. FHEM2FHEM reads events from a remote FHEM instance. When using declarations like the following on both sides this results in an event loop because instance1 reads an event from instance2 and generates a new event on instance1. This event then gets read by instance2 again and so on…

define instance2 FHEM2FHEM instance2:7072 LOG:.*

fhem.cfg on instance1

define instance1 FHEM2FHEM instance1:7072 LOG:.*

fhem.cfg on instance2

Eventually this results in an event loop consuming all available CPU power and freezing FHEM.

One could simply prevent this situation by not forwarding all events by using a regular expression filtering the events instead of using LOG:.* . This also means one has to know which event gets received best by which instance. For example for simple radio temperature sensors this is hard to tell. Also one might want to have all sensor data available on all instances. This can be achieved by preventing FHEM from processing events, that got received from a remote instance a second time.

My modified version of 93_FHEM2FHEM.pm does exactly this, when a remote event gets read an additional flag (DISABLEEVENT) is being set. When the event afterwards gets processed a second time it gets discarded and the flag gets removed, so that usual message handling for the device can continue. This might not be the most sophisticated solution for the problem, but at least it prevents FHEM from freezing.

To prevent FHEM from freezing in the bidirectional setup, download the modified version of 93_FHEM2FHEM.pm (146 downloads) and replace the original file in the folder /opt/fhem/FHEM for both instances. Then edit the file fhem.cfg for both instances and add the attribute avoidMsgLoop to the FHEM2FHEM device, like in the following example. To get useful states for some devices, like CUL_TCM97001 sensors one still has to add the addStateEvent attribute.² Without this, for example plots would not work properly.

define instance1 FHEM2FHEM instance1:7072 LOG:.*
attr instance1 avoidMsgLoop 1
attr instance1 addStateEvent 1

With this modification it should be possible to set up a “cluster” of FHEM instances that can operate independent from each other but have the same data available. Thus the failure of one instance has less impact and the range of most radio devices can be extended transparently.

For completeness and in case someone wants to include this or an improved variant into FHEM the diff is available from here: 93_FHEM2FHEM-avoidMSgLoop.patch (104 downloads)

Jürgen

References:
1. fhem.de
2. forum.fhem.de

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

iptables mirror target for linux kernel 4.10

After my last kernel upgrade I tried to build the iptables mirror target published the last time here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 4.12 , it did not build anymore with the current linux kernel. This time a struct changed in kernel 4.10 and some functions have got renamed in the kernel 4.11. Thus I had to update the ip_direct_send and ipt_mirror_target functions. You can download the newer release for kernel version 4.10 and probably future kernels here:

MIRROR.4.10.tar.gz (596 downloads) gplv3-127x51

The kernel module has been tested with kernel version 4.12.12-gentoo. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.












gplv3-127x51

regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

devolo-dlan-cockpit-4.3.3 with gentoo

Recently I have found out, that the version 4.2.3 of devolo-dlancopit, for which I have posted a gentoo ebuild in the article devolo-dlan-cockpit-4.2.3 with gentoo, does not work fully anymore. It fails  downloading firmware updates for the Devolo dlan 1200 PowerLAN adapters. Most probably the download urls for firmware updates have changed recently.

Devolo offers the application devolo-dlan-cockpit for download. The main purposes of devolo-dlan-cockpit are:

  • Firmware upgrades for the network adapters
  • Monitoring the performance
  • Configuring the network adapters

Firmware upgrades are more or less plug and play. One has to click the Updates-Button and everything else happens automagically. Monitoring the network performance with devolo-dlan-cockpit is of major interest, since it allows one to try out different wall sockets for better performance with nearly zero efforts. If one gets poor performance it can be of major impact just to use another wall socket in the same room.

Dlan-cockpit is available for most common operating systems. However, the only Linux distribution, they support right now is Ubuntu Linux. Most probably, the package will also work with Debian. Allthough these are binary packages, the application can also be used with Gentoo Linux. For this two binaries have to be executed /usr/bin/devolonetsvc, the service daemon and /opt/devolo/dlancockpit/bin/dlancockpit, the frontend application which depends on the service. Usually devolonetsvc is being started by an initrd script, but the one included in the package is not going to work with gentoo, so just start it manually as root user. If one really needs it that often, an own startup script or systemd configuration can be written. Below you can see a screenshot of the application.

screenshot

Screenshot of devolo dlan-cockpit 4.3.3

The Gentoo way

For gentoo users here is my overlay including the updated devolo-dlan-cockpit ebuild: [download#99]. It also contains an adobe-air-runtime ebuild as necessary dependency. The adobe-air-runtime ebuild has been taken from steam-overlay. Download the overlay and extract it in /usr/local/portage. Be sure to include the following line in your /etc/make.conf:

PORTDIR_OVERLAY=”/usr/local/portage”

Then emerge devolo-dlan-cockpit and update your dlan adapters again using your gentoo box.

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

devolo-dlan-cockpit-4.2.3 with gentoo

Recently I have started using Devolo dlan 1200 PowerLAN adapters. With these one can get a network with up to 1Gbps without having to install additional wires by using the power lines. Of course the 1Gbps are optimum values under perfect conditions. Practically one gets 100 Mbps to 600 Mbps, but this is enough for most purposes.

Devolo offers the application devolo-dlan-cockpit for download. The main purposes of devolo-dlan-cockpit are:

  • Firmware upgrades for the network adapters
  • Monitoring the performance
  • Configuring the network adapters

Firmware upgrades are more or less plug and play. One has to click to click the Updates-Button and everything else happens automagically. Monitoring the network performance with devolo-dlan-cockpit  is of major interest, since it allows one to try out different wall sockets for better performance with nearly zero efforts. If one gets poor performance it can be of major impact just to use another wall socket in the same room.

Dlan-cockpit is available for most common operating systems. However, the only Linux distribution, they support right now is Ubuntu Linux. Most probably, the package will also work with Debian. Allthough these are binary packages, the application can also be used with Gentoo Linux. For this two binaries have to be executed /usr/bin/devolonetsvc, the service daemon and /opt/devolo/dlancockpit/bin/dlancockpit, the frontend application which depends on the service. Usually devolonetsvc is being started by an initrd script, but the one included in the package is not going to work with gentoo, so start just start it manually as root user. If one really needs it that often, an own startup script or systemd configuration can be written. Below you can see a screenshot of the application.

screenshot

Screenshot of devolo dlan-cockpit

The Gentoo way

For gentoo users here is my overlay including the devolo-dlan-cockpit ebuild: devolo-dlan-cockpit-4.2.3_overlay.tar.gz (1355 downloads) . It also includes an adobe-air-runtime ebuild as necessary dependency. The adobe-air-runtime ebuild has been taken from steam-overlay. Download the overlay and extract it in /usr/local/portage. Be sure to include the following line in your /etc/make.conf:

PORTDIR_OVERLAY=”/usr/local/portage”

Then emerge devolo-dlan-cockpit and monitor your network nodes using your gentoo box.

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

watching 3D stereo mpo images with ushare

Some months ago I got my brand new LG 55LA6608 3D TV. Of course I wanted to watch the 3d photos taken with the Fujifilm Finepix Real 3D camera with it. The images taken by the camera are being stored using the MPO file format. These images consist of two jpeg images and some metadata inside the exif header inside the MPO container. According to the specification the television is capable of playing this file format, which works fine when using in example an USB-stick. However, it is desireable to watch the images using a network connection, for example when the files are stored on a linux server.

For displaying videos or images from a server this and other television devices use the DLNA protocol, which is implemented by by various linux services like minidlna or ushare. None of the tested ones was capable to present the MPO files to the TV. The solution to enable ushare to do this is quite simple. The MPO mime type has to be added to ushares supported file formats. This can be done by adding the line

{ “mpo”,  UPNP_PHOTO, “http-get:*:image/mpo:”},

to the MIME_TYPE_LIST array in mime.c. This has been verified to work with the ushare-1.1a. For convenience one can download the patch for this from here:

ushare-mpo.patch (1251 downloads)

One can download the ushare sources from SourceForge. After downloading patch the ushare sources with the mpo-patch and build it. Build and usage instructions can be found in the readme file included in the ushare download from SourceForge. Do not forget to run ./configure –enable-dlna before running make for use with recent devices like the mentioned LG TV.

As usually, for gentoo users there is a more easy way: Create the directory

/etc/portage/patches/media-video/ushare/

and place the patch file in it. Make sure that the dlna USE-flag is set in /etc/make.conf or /etc/portage/package.use. Afterwards emerge ushare again and enjoy watching your 3D MPO images stored on your linux box using your TV.

regards

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

iptables mirror target for linux kernel 3.6

After my last kernel upgrade I tried to build the iptables mirror target published the last time here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 3.6 , it did not build anymore with the current linux kernel. This time some functions have got removed from the kernel. Thus I had to update the ip_direct_send function. You can download the newer release for kernel version 3.6 and probably future kernels here:

MIRROR.3.6.0.tar.gz (2127 downloads) gplv3-127x51

The kernel module has been tested with kernel version 3.7.0-vs2.3.5.1. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.











gplv3-127x51

regards
Jürgen

 

 

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...

iptables mirror target for linux kernel 3.3

After my last kernel upgrade I tried to build the iptables mirror target published here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. When I tried it with kernel version 3.3 , it did not build anymore with the current linux kernel. However, this time only a minor modification has been neccesary. Another header file had to be included and a function name has changed.  You can download the newer release for kernel version 3.3 and probably future kernels here:

[download#86] gplv3-127x51

The kernel module has been tested with kernel version linux-3.3-vserver-2.3.3.1. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

[download#45]
[download#12]
[download#13]
[download#14]
[download#32]
[download#39]
[download#46]
[download#67]
[download#73]
[download#77]
gplv3-127x51

regards
Jürgen

 

 

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...

siteinfo

Translator