psi-4ward / AskSinAnalyzerXS

Analyzer for radio telegrams in a HomeMatic environment
Other
48 stars 7 forks source link
asksinpp cc1101 electron fhem homebrew homematic sniffer

AskSin Analyzer XS

latest release github downloads npm downloads Docker Pulls Build and Publish

Funktelegramm-Dekodierer für den Einsatz in HomeMatic Umgebungen.

Betrieb ist sowohl als Desktop-Anwendung unter Windows, Mac und Linux möglich sowie auf Servern als Node.js-App oder über Docker.

Der AskSin Analyzer XS ist eine alternative Implementierung des AskSinAnalyzer ohne ESP32 und Display was die Umsetzung der Hardware vereinfacht. Es genügt ein AVR (ATMega 328P) mit CC1101 Funkmodul sowie ein USB-UART Adapter.

Features:

AskSinAnalyzerXS-TelegramList

AskSinAnalyzerXS-DutyCycle

AskSinSniffer328P Hardware

Die Daten des AskSinSniffer328P werden über einen UART Schnittstelle an den AskSinAnalyzerXS übertragen und dort ausgewertet und visualisiert.

Der Aufbau folgt der allgemeingültige Verdrahtung des Pro Mini mit dem CC1101 Funkmodul. Der Config-Taster findet keine Verwendung und die Status-LED ist optional.

Alternativ funktioniert auch der nanoCUL CC1101 mit angepasstem GPIO Mapping. Siehe Flash-Anleitung NANO CUL 868MHz Stick für Windows.

Siehe auch: AskSin Analyzer XS Board von Tom Major.

Optional kann ein kleines Display verbaut werden was den RSSI-Noise Pegel darstellt.

NanoCul with OLED Display

Installation

AVR Sketch

Auf dem ATmega328P wird der AskSinSniffer328P-Sketch geflasht. Das Vorgehen ist auf asksinpp.de erläutert.

:point_up: Achtung: Die AskSinPP-Library 4.1.2 enthält noch nicht alle nötigen Funktionen für den Sniffer. Es ist der aktuelle Master zu verwenden.

Electron-App

Die Desktop-Anwendung steht für Windows, MacOS und Linux zum Download unter Releases bereit.

Tipp: Der AskSinAnalyzerXS gibt einige Debug-Informationen auf der Commando-Zeile aus. Bei Problemen empfiehlt sich also ein Start über ein Terminal. (Bash, cmd).

Node-App (npm)

Der AskSinAnalyzerXS kann auch als Node.js Anwendung betrieben werden was z.B. auf einem Server sinnvoll sein kann.

$ npm i -g asksin-analyzer-xs
$ asksin-analyzer-xs
Detected SerialPort: /dev/ttyUSB0 (FTDI)
Server started on port 8081

Die WebUI kann über den Browser auf http://localhost:8081 aufgerufen werden.

Achtung: Will man wirklich ein npm-install als root durchführen ist der Parameter --unsafe nötig.

Docker

Der Analyzer XS ist auch als Docker-Image verfügbar. Der Device-Paramter ist entsprechend anzupassen.

docker run --rm --name analyzer -p 8081:8081 -v $PWD/data:/data --device=/dev/ttyUSB0 psitrax/asksinanalyzer

Konfiguration

Auflösung von Gerätenamen

Der AskSinSniffer328P sieht nur die Device-Addresses, nicht aber deren Seriennummern oder Namen. Damit die Adressen in Klartextnamen aufgelöst werden können muss eine DeviceListe von der CCU geladen werden wofür ein Script auf der CCU nötig ist. Siehe AskSinAnalyzer CCU Untersützung.

Soll die Geräteliste von FHEM abgerufen werden ist in der 99_myUtils.pm folgende Funktion einzufügen:

sub printHMDevs {
  my @data;
  foreach my $device (devspec2array("TYPE=CUL_HM")) {
    my $snr = AttrVal($device,'serialNr','');
    $snr = "<Zentrale>" if AttrVal($device,'model','') eq 'CCU-FHEM';
    if( $snr ne '' ) {
      my $name = AttrVal($device,'alias',$device);
      my $addr = InternalVal($device,'DEF','0');
      push @data, { name => $name, serial => $snr, address => hex($addr) };
    }
  }
  return JSON->new->encode( { created => time, devices => \@data } );
}

Im AskSinAnalyzerXS ist bei Verwendung vom FHEM die Option Device-List Backend ist eine CCU zu deaktivieren und als Device-List URL wird der Wert http://fhem.local:8083/fhem?cmd={printHMDevs()}&XHR=1 eingetragen.

Debugging / Fehlersuche

  1. Der Analyzer gibt Debug-Informationen auf der Kommandozeile aus.

    Windows-User müssen den asksin-analyzer-xs-...-win.zip Build laden und beim Start den Parameter --enable-logging anhängen.

  2. Die Anwendung besitzt DevTools die über das Menü View -> Toggle Developer Tools aufgerufen werden können.

Lizenz

CC BY-NC-SA 4.0