HM-Sec-SCo - alternative Firmware mit AskSinPP
Moderator: Co-Administratoren
-
- Beiträge: 12116
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 849 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
"Kleiner" Rückschlag beim Rollout...
Meine Gehversuche fanden mit einem HmIP-SWDO statt.
Das hat ein TRX-TIF (CC1101) verbaut.
Ohne dem weiter Beachtung zu schenken, hat stan23 die Firmware bei seinem HM-Sec-SCo getestet.
Der Sketch blieb beim Initialisieren des Funkmoduls jedes Mal hängen.
Nach genauerem hinsehen ist ihm aufgefallen, dass im HM-Sec-SCo ein TRX-SL (Si4431) Funkmodul steckt.
Next Milestone: Si4431 Integration in die AskSin++ Lib
Meine Gehversuche fanden mit einem HmIP-SWDO statt.
Das hat ein TRX-TIF (CC1101) verbaut.
Ohne dem weiter Beachtung zu schenken, hat stan23 die Firmware bei seinem HM-Sec-SCo getestet.
Der Sketch blieb beim Initialisieren des Funkmoduls jedes Mal hängen.
Nach genauerem hinsehen ist ihm aufgefallen, dass im HM-Sec-SCo ein TRX-SL (Si4431) Funkmodul steckt.
Next Milestone: Si4431 Integration in die AskSin++ Lib
- stan23
- Beiträge: 2042
- Registriert: 13.12.2016, 21:14
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Altmühltal
- Hat sich bedankt: 586 Mal
- Danksagung erhalten: 337 Mal
- Kontaktdaten:
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Kurzer Zwischenstand:
Pakete senden geht schon mal.
CRC, Whitening und das restliche Paket Handling muss leider in Software erledigt werden, weil sich CC1101 und Si4431 da geringfügig unterscheiden.
Pakete senden geht schon mal.
CRC, Whitening und das restliche Paket Handling muss leider in Software erledigt werden, weil sich CC1101 und Si4431 da geringfügig unterscheiden.
Viele Grüße
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
-
- Beiträge: 13
- Registriert: 17.03.2018, 19:47
- System: CCU
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 6 Mal
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Crc und Whitening habe ich bei mir lokal schon für das SX1276 und RFM69 auf Basis von https://forum.fhem.de/index.php?topic=4 ... #msg409698 geschrieben. Bei Bedarf kann ich dir das hochladen.
- stan23
- Beiträge: 2042
- Registriert: 13.12.2016, 21:14
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Altmühltal
- Hat sich bedankt: 586 Mal
- Danksagung erhalten: 337 Mal
- Kontaktdaten:
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Danke, habe ich auf Basis der App Notes von TI schon selber implementiert. Sonst hätte der Analyzer die Pakete nicht angezeigt
Beim Whitening benutze ich momentan vorberechnete Werte für PN9. Da muss ich mal überlegen ob ich das lieber dynamisch berechne.
Beim Whitening benutze ich momentan vorberechnete Werte für PN9. Da muss ich mal überlegen ob ich das lieber dynamisch berechne.
Viele Grüße
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
-
- Beiträge: 13
- Registriert: 17.03.2018, 19:47
- System: CCU
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 6 Mal
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Könnten wir evtl. Whitening und Crc in eine Klasse auslagen? Dann kann es auch bei weiteren Funkmodulen verwendet werden.
Bei mir sieht das so aus:
Bei mir sieht das so aus:
Code: Alles auswählen
class RadioTools
{
public:
// source: Thx to Uli from https://forum.fhem.de/index.php?topic=49300.msg409698#msg409698
static void xOr_PN9(uint8_t *p_buf, uint8_t p_len)
{
uint8_t bit_five = 0;
uint8_t bit_zero = 0;
uint8_t carry_new = 0;
uint8_t key = 0xFF; // initialize value
uint8_t carry = 1; // initialize value
for (uint8_t i = 0; i < p_len; i++)
{
p_buf[i] ^= key; // xor
// PN9 Key generation to get next Key for xOr
for (uint8_t j = 0; j < 8; j++)
{
bit_five = (key & (1 << 5)) >> 5;
bit_zero = (key & (1 << 0)) >> 0;
carry_new = bit_five ^ bit_zero;
key >>= 1;
key |= (carry << 7);
carry = carry_new;
}
}
}
// source: Thx to Uli from https://forum.fhem.de/index.php?topic=49300.msg409698#msg409698
static uint16_t calcCRC16hm(uint8_t *p_data, uint8_t p_length)
{
uint16_t checksum = 0xffff;
for (int i = 0; i < p_length; i++)
{
uint8_t bte = p_data[i];
for (int j = 0; j < 8; j++)
{
if (((checksum & 0x8000) >> 8) ^ (bte & 0x80))
{
checksum = (checksum << 1) ^ 0x8005;
}
else
{
checksum = (checksum << 1);
}
bte <<= 1;
}
}
return checksum;
}
// Konvertiert die ankommenden Daten in Rawdaten für das RF Modul. Inc. Whitening und Crc.
// p_data = Daten
// p_rawData = Wird mit den raw Daten gefüllt. Muss mindestens 3 Byte länger sein
// p_size = Länge der Daten ohne crc
// return = Länge + 3 ( Längenbyte + 2 crc Byte)
static uint8_t convertToRawData(const uint8_t *p_data, uint8_t *p_rawData, const uint8_t p_size)
{
uint8_t size = p_size + 3;
p_rawData[0] = p_size;
for (uint8_t i = 0; i < p_size; i++)
{
if (i + 1 < RFM69_HM_PAYLOAD_LENGTH)
{
p_rawData[i + 1] = p_data[i];
}
else
{
DPRINTLN(F("Packet too long"));
}
}
uint16_t crc = calcCRC16hm(p_rawData, p_size + 1); // size +1 crc über payload + längenbyte
DPRINTLN("CCR");
DHEX(crc);
DPRINTLN("");
p_rawData[p_size + 1] = (crc >> 8) & 0xff;
p_rawData[p_size + 2] = crc & 0xff;
xOr_PN9(p_rawData, size);
return size;
}
};
- stan23
- Beiträge: 2042
- Registriert: 13.12.2016, 21:14
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Altmühltal
- Hat sich bedankt: 586 Mal
- Danksagung erhalten: 337 Mal
- Kontaktdaten:
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Danke, dann können die PN9-Werte dynamisch berechnet werden. Spart evtl. ein paar Byte gegenüber vorgegebenen 29 Bytes (maximale Telegrammlänge).
Zu den Klassen:
mir ist noch nicht klar wie man CC1101 und Si4431 parallel in die AskSinPP bringt. Die Radio.h braucht eine größere Überarbeitung, weil auch die SPI-Funktionen für CC und Si unterschiedlich sind.
Zu den Klassen:
mir ist noch nicht klar wie man CC1101 und Si4431 parallel in die AskSinPP bringt. Die Radio.h braucht eine größere Überarbeitung, weil auch die SPI-Funktionen für CC und Si unterschiedlich sind.
Viele Grüße
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
-
- Beiträge: 12116
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 849 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Na dann müssen die SPI Methoden mit in die Funkmodulklassen.
Das wäre ja auch noch eine Bereicherung.
Es gab dazu schon mal ein Issue https://github.com/pa-pa/AskSinPP/issues/102
Vielleicht hast du ja Lust, einen PR zu machen, damit andere auch davon profitieren, um das RFM69 in Projekten verwenden zu können?
-
- Beiträge: 12116
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 849 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Die EFM32-Board-Unterstützung für die Arduino IDE kann nun über die Boardverwaltung installiert werden.
Als zusätzliche Boardanbieter-URL [?] muss
hinzugefügt werden.
Anschließend lässt es sich über die Suche finden und installieren:
Die GNU Compiler Tools sowie OpenOCD werden automatisch mit installiert.
Für den ST-Link Upload sollte somit hoffentlich alles dabei sein.
Als zusätzliche Boardanbieter-URL [?] muss
Code: Alles auswählen
https://raw.githubusercontent.com/jp112sdl/ARDUINO_EFM32/master/package/package_ARDUINO_EFM32_index.json
Anschließend lässt es sich über die Suche finden und installieren:
Die GNU Compiler Tools sowie OpenOCD werden automatisch mit installiert.
Für den ST-Link Upload sollte somit hoffentlich alles dabei sein.
-
- Beiträge: 13
- Registriert: 17.03.2018, 19:47
- System: CCU
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 6 Mal
Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]
Genau einfach da mit ein. Hab ich auch so gemacht.
Ja das hatte noch vor. Es funktioniert zwar, hat aber noch ein paar kleine Probleme.jp112sdl hat geschrieben: ↑29.06.2022, 14:33
Das wäre ja auch noch eine Bereicherung.
Es gab dazu schon mal ein Issue https://github.com/pa-pa/AskSinPP/issues/102
Vielleicht hast du ja Lust, einen PR zu machen, damit andere auch davon profitieren, um das RFM69 in Projekten verwenden zu können?