This is a dogs education collar with a 433MHz radio (some collars on Ebay list the Frequency).

Bild 2 - Hund Ausbildung Erziehungshalsband Fernbedienung Training Ton Vibration Schock

I managed to decode the collar protocol and wrote a little C# code to generate Pilight pulsetrains.
These can be used with ESP8266 or RaspberryPi and a 433Mhz Transmitter.
So you can build your own collar transmitter.


Here is the RAW form from RTL_433 of „Channel 2 Vibration Level 1“: Analyzer

C# Code:

/*
f            Chanel 0 (ALL)
e            Chanel 1
d            Chanel 2
c            Chanel 3
 7de Vibration Level 1
 4dd Vibration Level 2
 5dc Vibration Level 3
 2db Vibration Level 4
 3da Vibration Level 5
 0d9 Vibration Level 6
 1d8 Vibration Level 7
 ed7 Vibration Level 8
 fd6 Vibration Level 9
 4ee Shock Level 1
 7ed Shock Level 2
 6ec Shock Level 3
 1eb Shock Level 4
 0ea Shock Level 5
 3e9 Shock Level 6
 2e8 Shock Level 7
 de7 Shock Level 8
 ce6 Shock Level 9
 7cf BEEP
 5ba PLAY1
 ab5 PLAY2
    d6efef END

rtl_433 -X "n=generic_remote_01,m=OOK_PWM,s=500,l=1000,r=5000,g=1000,match=d6efef,bits=41"

PWM Short: 500us, Long: 1000us, Sync:5000us, Gap: 1000us

Vibration Level 1 Channel 2:
https://triq.org/pdv/#AAB0370601002C00F801F003EC136C27B4A3A3B2A3B2A3A3A3A3A3B2A3A3A3A3B2A3A3B2A3B2A3A3B2A3A3A3B2A3A3A3A3A3A3A3B2A3A3A3A3B555
 */

class Program
{
    static void Main(string[] args)
    {
        string[] channel = new string[] { "f", "e", "d", "c" };
        string[] vibrationLevel = new string[] { "7de", "4dd", "5dc", "2db", "3da", "0d9", "1d8", "ed7", "fd6"};
        string[] shockLevel = new string[] { "4ee", "7ed", "6ec", "1eb", "0ea", "3e9", "2e8", "de7", "ce6" };
        string beepString = "7cf";
        string play1String = "5ba";
        string play2String = "ab5";
        string endString = "d6efef";

        string hexstring = channel[0] + vibrationLevel[0] + endString; //here you can setup your RF Code
        Console.WriteLine("Hexstring:");
        Console.WriteLine(hexstring);

        string binarystring = String.Join(String.Empty,
          hexstring.Select(
            c => Convert.ToString(Convert.ToInt32(c.ToString(), 16), 2).PadLeft(4, '0')
          )
        );
        Console.WriteLine("\nBinarystring:");
        Console.WriteLine(binarystring);

        string pulsetrain = "c:32";
        string raw = "5000 ";
        foreach (char c in binarystring) {
            if (c == '1')
            {
                raw += "500 1000 ";
                pulsetrain += "01";
            }
            if (c == '0')
            {
                raw += "1000 500 ";
                pulsetrain += "10";
            }
        }
        raw += "1000";
        pulsetrain += "1;p:500,1000,5000,0@";

        Console.WriteLine("\nRaw:");
        Console.WriteLine(raw);
        Console.WriteLine("\nPilight pulsetrain:");
        Console.WriteLine(pulsetrain);      
    }

}
«
»