go seven !

IR-Code der Wamsler-Pelletofen-Fernbedienung

Ich besitze einen Pelletofen der Firma Wamsler, genauer gesagt einen Westminster Quattro 6. Dieser Ofen kann über eine IR-Fernbedienung “programmiert” werden, sprich es können Parameter wie Solltemperatur, Timer, Lüftergeschwindigkeit usw. eingestellt werden und zuguterletzt der Ofen natürlich ein- und ausgeschaltet werden. Ich möchte diese Funktionen jedoch aus der Ferne steuern können – beispielsweise den Ofen von der Arbeit aus vorheizen.

Dafür bietet die Firma Wamsler zwar ein WiFi-Modul mit Cloudanbindung an, aber dieses kann ich nicht nur nicht in meine private Hausautomatisierung integrieren, es weist auch einige weitere gravierende Nachteile auf, die mich bewogen haben, das Gerät nicht einzusetzen. Zu den eben erwähnten Gründen zählt unter anderem, dass die Identifikation nur über eine numerische Hardware-ID erfolgt, ohne Passwortschutz. Finde ich die Hardware-ID eines anderen WiFi-Moduls heraus, kann ich diesen steuern – ein eklatanter Sicherheitsmangen. Abgesehen davon sind rund 150€ für ein ESP-Modul auf einer Platine mit 3 LEDs in einem Gehäuse ohne CE-Kennzeichnung eine Fars.

Daher habe ich mich entschlossen, mit das Übermittlungsprotokoll der Fernbedienung genauer anzusehen und bin über die Variation alles einstellbaren Parameter zu folgender Liste gekommen:

areaexplenationcalculationunit
bit 0 to 1currently unknown
bit 2timer “auto”1 = true, 0 = false
bit 3stove on / off1 = on, 0 = off
bit 4“turbo” mode on / off1 = on, 0 = off
bit 5 to 7blower level1 + binToDec; 6 = AUTO
bit 8“econo” mode on / off1 = on, 0 = off
bit 9currently unknown
bit 10 to 15temperature7 + binToDec°C
bit 16 to 20timer 1 ON hourbinToDechours
bit 21 to 23timer 1 ON minutebinToDec * 10minutes
bit 24 to 28timer 1 OFF hourbinToDechours
bit 29 to 31timer 1 OFF minutebinToDec * 10minutes
bit 32 to 36timer 2 ON hourbinToDechours
bit 37 to 39timer 2 ON minutebinToDec * 10minutes
bit 40 to 44timer 2 OFF hourbinToDechours
bit 45 to 47timer 2 OFF minutebinToDec * 10minutes
bit 48 to 49currently unknown, maybe part of 50..55
bit 50 to 55hour of daybinToDechours
bit 56 to 57currently unknown, maybe part of 59..64
bit 59 to 63minute of daybinToDecminutes
bit 64timer 1 ON active1 = true, 0 = false
bit 65timer 1 OFF active1 = true, 0 = false
bit 66timer 2 ON active1 = true, 0 = false
bit 67timer 1 OFF active1 = true, 0 = false
bit 68 to 71custom checksumsee below
Wamsler-IR-Fernbedienungsprotokoll, siehe hier

Um nun eigene Telegramme zu erstellen habe ich eine C++-Klasse geschrieben, über die alle Parameter festgelegt werden können und am Ende ein valides Telegramm auswerfen kann.

#pragma once
#include <string>
#include <iostream>

class telegram
{
public:
	//Variablen
	int OnOff = 0;	
	int AUTOTimer = 0;
	int Turbo = 0;
	int Econo = 0;
	int timer1onActive = 0;
	int timer1offActive = 0;
	int timer2onActive = 0;
	int timer2offActive = 0;

	//Funktionen, Set
	bool setBlowerLevel(int level = 0);
	bool setTemperature(int temperature = 20);
	bool setTimer1on(int hour = 0, int minute = 0);
	bool setTimer1off(int hour = 0, int minute = 0);
	bool setTimer2on(int hour = 0, int minute = 0);
	bool setTimer2off(int hour = 0, int minute = 0);
	bool setTime(int hour = 0, int minute = 0);

	//Funktionen, Output
	std::string toString();
	

private:
	bool data[72] = { 0 };	
	bool calcTelegram();
	bool calcPruefsumme();
};

Der entsprechende Programmcode und ein Beispiel ist auch schon auf Github zu finden. Nächster Schritt wird nun, einen Arduino-kompatiblen Mikrocontroller mit RTC als Sender zu programmieren und eine entsprechende Web-Schnittstelle zur Verfügung zu stellen. Wenn es soweit ist, wird dieser Artikel aktualisiert.