AskSinAnalyzer - HM Funk Telegramm-Auswerter

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

jp112sdl
Beiträge: 2704
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von jp112sdl » 10.06.2019, 15:10

deimos hat geschrieben:
10.06.2019, 14:53
Wobei klar ist, dass man bei HmIP nur aufgrund der Verschlüsselung nur eingeschränkt Infos sehen kann.
Aber meistens reicht es ja schon zu wissen, ob etwas gesendet wird.
Ja das stimmt. Die Payload ist auch nachrangig.

Ging hauptsächlich herauszufinden, wer funkt wie oft.

VG,
Jérôme

Jack01
Beiträge: 34
Registriert: 01.02.2017, 17:08

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von Jack01 » 11.06.2019, 14:19

Super Projekt!
Teile sind bestellt. In 3 Wochen geht's dann los (wenn nicht der Sommer plötzlich dazwischen kommt).

Gruß

Hans-Jürgen
1 x CCU2 und 24 Geräte (2 x HomeBrew)
RaspberryMatic als Back-Up
Remote Control via TinyMatic und VPN

harvey
Beiträge: 73
Registriert: 01.12.2013, 13:19

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von harvey » 11.06.2019, 16:10

Hi,
vielen Dank an jp112sdl !

Wenn es nur darum geht, mal auf die Pakete zu schauen kann man auch mit einem Arduino nano pro 328p 3.3V
den 328p-Sketch einspielen und die serielle Konsole betrachten.

Etwas minimale Erweiterung der Analyse ist auch schnell gemacht (Änderung der process - Funktion in dem Sketch):

Code: Alles auswählen

    virtual bool process(Message& msg) {
      uint8_t flags;
      uint8_t type;
 
      DPRINT(F("rssi: "));
      DHEX(radio().rssi());
      DPRINT(F("  length: "));
      DHEX(msg.length());
      DPRINT(F("  count: "));
      DHEX(msg.count());
      
      DPRINT(F("  flags: "));
      flags = msg.flags();
      DPRINT(F("0x"));
      DHEX(flags);
      DPRINT(F(" "));
      if (flags & 0x40) { DPRINT(F("RPTED ")); } else { DPRINT(F("      ")); }
      if (flags & 0x20) { DPRINT(F("BIDI  ")); } else { DPRINT(F("      ")); }
      if (flags & 0x10) { DPRINT(F("BURST ")); } else { DPRINT(F("      ")); }
      if (flags & 0x04) { DPRINT(F("BCAST"));  } else { DPRINT(F("     "));  }
      if (flags & 0x02) { DPRINT(F("+WKMEUP ")); } else { DPRINT(F("        "));}
      if (flags & 0x01) { DPRINT(F("WKUP  ")); } else { DPRINT(F("      ")); }

      DPRINT(F("  type: "));
      type = msg.type();
      DPRINT(F("0x"));
      DHEX(type);
      DPRINT(F(" "));
      switch (type)
      {
        case 0x00: DPRINT(F("DevInfo     "));
                   break;
        case 0x01: DPRINT(F("Config      "));
                   break; 
        case 0x02: DPRINT(F("Response    "));
                   break; 
        case 0x03: DPRINT(F("ResponseAES "));
                   break; 
        case 0x10: DPRINT(F("Info        "));
                   break; 
        case 0x11: DPRINT(F("Action      "));
                   break; 
        case 0x3E: DPRINT(F("SwitchEvent "));
                   break; 
        case 0x3F: DPRINT(F("Timestamp   "));
                   break; 
        case 0x40: DPRINT(F("RemoteEvent "));
                   break; 
        case 0x41: DPRINT(F("SensorEvent "));
                   break; 
        case 0x53: DPRINT(F("SensorData  "));
                   break; 
        case 0x5A: DPRINT(F("ClimaEvent  "));
                   break; 
        case 0x70: DPRINT(F("Weather     ")); 
                   break; 
        default:   DPRINT(F("- unknown - "));
      }

      DPRINT(F("  from: "));
      msg.from().dump();
      DPRINT(F("  to: "));
      msg.to().dump();

      DPRINT(F("    msg: "));
      for (uint8_t l = 0; l < msg.length() - 9; l++) DHEX(msg.buffer()[l + 9]);
      DPRINTLN(" :");
      this->led().ledOn(millis2ticks(100));
      return true;
    }
Das ist nicht wirklich vollständig, aber die Sensoren/Aktoren, die in so ein~zwei Stunden mal gemeldet haben werden durch das
switch-Statement bei mir erwischt. Sonst ja auch reine Fleißaufgabe, das zu erweitern.

Weitere Verschönerungen könnten noch die Dezimalanzeige Länge, eine tabelarische Darstellung in Spalten mit Spaltenheadern,
Pseudografikdarstellung rssi mit 5 Balken, ...

Very special wird es dann, wenn man spezielle Pakete (z.B. Weather von SENS-WEA oder 8fach-DS1820-Sensor decodiert. Aktuell sieht es allerdings so aus, dass in dem Arduino noch reichlich Platz vorhanden ist.

Also die Codeerweiterung nur als Gedankenanstoß betrachten, geht natürlich nicht bei Weiterverabeitung durch stm32 :-)))

Ein Beispiel (leicht modifiziert):

Code: Alles auswählen

AskSin++ V4.1.0 (Jun 11 2019 12:45:05)
CC init1
CC Version: 14
 - ready
rssi: 51  length: 0C  count: 33  flags: 0x86                   BCAST+WKMEUP         type: 0x5A ClimaEvent    from: xxxx96  to: 000000    msg: 9CE03F :
rssi: 3C  length: 0E  count: 61  flags: 0xA0       BIDI                             type: 0x11 Action        from: 00FFFF  to: xxxxA1    msg: 0201000000 :
rssi: 45  length: 0E  count: 61  flags: 0x80                                        type: 0x02 Response      from: xxxxA1  to: 00FFFF    msg: 010100001C :
rssi: 56  length: 16  count: 29  flags: 0x86                   BCAST+WKMEUP         type: 0x53 SensorData    from: xxxx5E  to: 000000    msg: 0041018B4200FA43009144FF6F :
rssi: 52  length: 1A  count: 0A  flags: 0x84                   BCAST                type: 0x70 Weather       from: xxxx02  to: 00FFFF    msg: 010E27643E014400003100000000009415 :
rssi: 52  length: 0D  count: 02  flags: 0x80                                        type: 0x41 SensorEvent   from: xxxx96  to: xxxxA1    msg: 07D50080 :
rssi: 50  length: 0C  count: 33  flags: 0x84                   BCAST                type: 0x70 Weather       from: xxxx96  to: 000000    msg: 00E03F :
rssi: 28  length: 17  count: 01  flags: 0x84                   BCAST                type: 0x70 Weather       from: xxxx05  to: 00FFFF    msg: 00DF277B3F00E2FFFD0009DD0000 :
rssi: 53  length: 0C  count: 74  flags: 0x86                   BCAST+WKMEUP         type: 0x70 Weather       from: xxxxC2  to: 000000    msg: 00E055 :
rssi: 34  length: 0C  count: 1B  flags: 0x84                   BCAST                type: 0x70 Weather       from: xxxx10  to: 000000    msg: 00D85A :
rssi: 45  length: 0F  count: B0  flags: 0x84                   BCAST                type: 0x53 SensorData    from: xxxx01  to: 00FFFF    msg: 582500000630 :
ciao
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 40 Geräte

jp112sdl
Beiträge: 2704
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von jp112sdl » 11.06.2019, 16:22

Ja gut, Rohdatenansicht geht auch ohne Programmieraufwand mit nem HM-MOD-UART am USB über CP2102 mit hmsniff (in hmcfgusb enthalten. :)

Code: Alles auswählen

 ./hmsniff -v -U /dev/cu.usbserial-14210 
Waiting for application to settle...
HM-MOD-UART opened!
2019-06-11 16:21:10.565079: 1A088470F1D0014A80E8011427742B043F33005A003C000063C2BD
Packet information:
	Length: 26
	Message ID: 8
	Sender: f1d001
	Receiver: 4a80e8
	Control Byte: 0x84
		Flags: CFG RPTEN 
	Message type: Weather event (0x70 0x01)
	Message: 011427742B043F33005A003C000063C2BD

                         LL NR FL CM sender recvr  payload
2019-06-11 16:21:10.565: 1A 08 84 70 F1D001 4A80E8 011427742B043F33005A003C000063C2BD (Weather event)
2019-06-11 16:21:20.059161: 0C6E865A4E92EC000000F4EF41
Packet information:
	Length: 12
	Message ID: 110
	Sender: 4e92ec
	Receiver: 000000
	Control Byte: 0x86
		Flags: WAKEMEUP CFG RPTEN 
	Message type: Thermal control (0x5a 0xf4)
	Message: F4EF41

2019-06-11 16:21:20.059: 0C 6E 86 5A 4E92EC 000000 F4EF41 (Thermal control)

VG,
Jérôme

jp112sdl
Beiträge: 2704
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von jp112sdl » 11.06.2019, 16:26

Christoph baut die Weboberfläche echt mega klasse! :shock:
Bildschirmfoto 2019-06-11 um 16.24.18.png

VG,
Jérôme

klassisch
Beiträge: 3398
Registriert: 24.03.2011, 04:32

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von klassisch » 11.06.2019, 19:36

Wie, das ist alles mit dem ESP32 generiert? Respekt!

papa
Beiträge: 287
Registriert: 22.05.2018, 10:23

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von papa » 11.06.2019, 20:01

Ich würde eher auf eine Javascript-Library tippen und das CVS dient als Input. Die Arbeit macht dann der Webbrowser.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Benutzeravatar
DiJe
Beiträge: 474
Registriert: 04.03.2015, 05:51

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von DiJe » 11.06.2019, 20:01

Hallo,
ich habe mal ein paar Fragen zu dem tollen Projekt.
So wie ich das verstanden habe, braucht man nicht unbedingt das Display,
die Daten kann ich über das Webinterface auf meinem Laptop auswerten, richtig?
Wofür werden die Mikroschalter eingesetzt, für das Display ?
Hat jemand für mich einen Link für die Komponenten , sonst kauf ich wieder mal was falsches :roll:
Gruß Dieter

papa
Beiträge: 287
Registriert: 22.05.2018, 10:23

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von papa » 11.06.2019, 20:05

Übrigens gibt es eine Message AS_CONFIG_SERIAL_REQ, mit welcher die Serial von einem Device abgefragt werden kann. Damit würde auch eine Übersetzung zur Serial ohne CCU gehen - zumindest für die Geräte, die das unterstützen. Alle AskSin++ Geräte können das grundsätzlich.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Benutzeravatar
Psi
Beiträge: 106
Registriert: 09.08.2018, 19:58
Wohnort: Nürnberg

Re: AskSinAnalyzer - HM Funk Telegramm-Auswerter

Beitrag von Psi » 11.06.2019, 20:16

papa hat geschrieben:
11.06.2019, 20:01
Ich würde eher auf eine Javascript-Library tippen und das CVS dient als Input. Die Arbeit macht dann der Webbrowser.
Genau, das ist eine Applikation die vollständig im Browser läuft. Vom esp wird nur ein minimaler Code gezogen und eben die ganzen Telegrammdaten. Wenn es wirklich interessiert wie das alles funktioniert fasse ich es gerne mal in einen Text

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“