AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

Tom Major

Hallo Klaus,
mir ging es vor ein paar Wochen relativ ähnlich als ich zum ersten Mal die AskSin++ Library entdeckt habe und die Fülle von Infos (und die spärliche Doku - keinesfalls als Vorwurf gemeint, in der Lib steckt auch ohne Doku wahnsinnig viel Arbeit und Know-How wie ich bei der Beschäftigung damit nach und nach erkannt habe und was frei verfügbar gemacht wurde - grosser Respekt vor dieser Leistung  :) ).

Ich habe mich dann einfach mit 2 konkreten Projekten befasst, die ich bei mir als erstes brauche und versucht diese zu verstehen, nachzubauen und den Code entsprechend anzupassen. Das sind bei mir ein Universalsensor und ein Wassermelder.
Ich versuche bei diesen Projekten im Code zu dokumentieren was nicht klar ist und wozu es auf den ersten Blick kaum Infos zu geben scheint, besonders beim Universalsensor habe ich einiges gelernt.
Kannst ja mal reinschauen, vielleicht hilft es etwas weiter. Beide Projekte sind als Prototypen aufgebaut und funktionieren einwandfrei an RaspberryMatic. Projekte sind noch nicht abgeschlossen, es werde noch weitere Infos, Schaltpläne usw. kommen:
https://github.com/TomMajor/AskSinPP_Examples

Ich würde an Deiner Stelle z.B. mit Wassermelder HM-SEC-WDS, Temperatur-/Luftfeuchtesensor HM-WDS10-TH-O oder 1-Kanal Handsender HM-RC-P1 anfangen, dass sind aus meiner Sicht alles relativ einfache Devices für den Einstieg.

Hier gibt es eine gute Doku von jp112sdl zum Nachbau des Handsenders:
https://github.com/jp112sdl/Beispiel_AskSinPP
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

MBHG

#781
Zitat von: papa am 22 März 2018, 19:36:42
Wenn Du den HM Standardkey nimmst, kann HM_DEF_KEY_INDEX bei 0 bleiben. Wenn Du Deinen Key aus der VCCU einsetzt, musst Du auch den richtigen Index mit setzen.


Danke, habe ich gemacht. Das Pairing klappt. Allerdings fehlt mir das Register "expectAES". get regList auf einem der Aktoren liefert

list:         register | range              | peer     | description
   1: powerUpAction    |     literal        |          | on: simulate short press of peer self01 (self02 if dual buttons) after power up options:off,on
   1: sign             |     literal        |          | signature (AES) options:off,on
   1: statusInfoMinDly |   0 to 15.5s       |          | status message min delay special:unused
   1: statusInfoRandom |   0 to 7s          |          | status message random delay
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit
   3: lgActionType     |     literal        |          |  options:off,toggleToCntInv,jmpToTarget,toggleToCnt
   3: lgCtDlyOff       |     literal        |          | Jmp on condition from delayOff options:geHi,between,ltLo,ltHi,outside,geLo
   3: lgCtDlyOn        |     literal        |          | Jmp on condition from delayOn options:outside,geLo,geHi,ltLo,ltHi,between
   3: lgCtOff          |     literal        |          | Jmp on condition from off options:outside,geLo,between,ltLo,ltHi,geHi
   3: lgCtOn           |     literal        |          | Jmp on condition from on options:geHi,between,ltHi,ltLo,outside,geLo
   3: lgCtValHi        |   0 to 255         |          | Condition value high for CT table
   3: lgCtValLo        |   0 to 255         |          | Condition value low for CT table
   3: lgMultiExec      |     literal        |          | execution per repeat message options:on,off
   3: lgOffDly         |   0 to 111600s     |          | off delay
   3: lgOffTime        |   0 to 111600s     |          | off time special:unused
   3: lgOffTimeMode    |     literal        |          | off time meant absolut or at least options:minimal,absolut
   3: lgOnDly          |   0 to 111600s     |          | on delay
   3: lgOnTime         |   0 to 111600s     |          | on time special:unused
   3: lgOnTimeMode     |     literal        |          | on time meant absolut or at least options:minimal,absolut
   3: lgSwJtDlyOff     |     literal        |          | Jump from delayOff options:off,dlyOff,no,on,dlyOn
   3: lgSwJtDlyOn      |     literal        |          | Jump from delayOn options:off,dlyOff,no,on,dlyOn
   3: lgSwJtOff        |     literal        |          | Jump from off options:dlyOff,off,dlyOn,on,no
   3: lgSwJtOn         |     literal        |          | Jump from on options:no,on,dlyOn,off,dlyOff
   3: shActionType     |     literal        |          |  options:off,toggleToCntInv,jmpToTarget,toggleToCnt
   3: shCtDlyOff       |     literal        |          | Jmp on condition from delayOff options:geHi,between,ltLo,ltHi,outside,geLo
   3: shCtDlyOn        |     literal        |          | Jmp on condition from delayOn options:outside,geLo,geHi,ltLo,ltHi,between
   3: shCtOff          |     literal        |          | Jmp on condition from off options:outside,geLo,between,ltLo,ltHi,geHi
   3: shCtOn           |     literal        |          | Jmp on condition from on options:geHi,between,ltHi,ltLo,outside,geLo
   3: shCtValHi        |   0 to 255         |          | Condition value high for CT table
   3: shCtValLo        |   0 to 255         |          | Condition value low for CT table
   3: shMultiExec      |     literal        |          | reg unused, placeholder only options:off,on
   3: shOffDly         |   0 to 111600s     |          | off delay
   3: shOffTime        |   0 to 111600s     |          | off time special:unused
   3: shOffTimeMode    |     literal        |          | off time meant absolut or at least options:minimal,absolut
   3: shOnDly          |   0 to 111600s     |          | on delay
   3: shOnTime         |   0 to 111600s     |          | on time special:unused
   3: shOnTimeMode     |     literal        |          | on time meant absolut or at least options:minimal,absolut
   3: shSwJtDlyOff     |     literal        |          | Jump from delayOff options:off,dlyOff,no,on,dlyOn
   3: shSwJtDlyOn      |     literal        |          | Jump from delayOn options:off,dlyOff,no,on,dlyOn
   3: shSwJtOff        |     literal        |          | Jump from off options:dlyOff,off,dlyOn,on,no
   3: shSwJtOn         |     literal        |          | Jump from on options:no,on,dlyOn,off,dlyOff



expectAES scheint zu fehlen. Muss ich das Register in HM-LC-SWX-SM.ino noch definieren?

Nachtrag: der Eventlog von FHEM zeigt

2018-03-23 20:28:05 CUL_HM HM_668155 CMDs_pending
2018-03-23 20:28:05 CUL_HM HM_668155_Sw_01 set_on
2018-03-23 20:28:05 CUL_HM HM_668155 aesKeyNbr: 02
2018-03-23 20:28:06 CUL_HM HM_668155 aesCommToDev: ok
2018-03-23 20:28:06 CUL_HM HM_668155 CMDs_done
2018-03-23 20:28:06 CUL_HM HM_668155_Sw_01 deviceMsg: on (to VCCU)
2018-03-23 20:28:06 CUL_HM HM_668155_Sw_01 level: 100
2018-03-23 20:28:06 CUL_HM HM_668155_Sw_01 pct: 100
2018-03-23 20:28:06 CUL_HM HM_668155_Sw_01 on
2018-03-23 20:28:06 CUL_HM HM_668155_Sw_01 timedOn: off
2018-03-23 20:28:28 PRESENCE Marc absent
2018-03-23 20:28:28 PRESENCE Marc presence: absent
2018-03-23 20:28:41 CUL_HM HM_668155 CMDs_pending
2018-03-23 20:28:41 CUL_HM HM_668155_Sw_02 set_on
2018-03-23 20:28:41 CUL_HM HM_668155 CMDs_done
2018-03-23 20:28:42 CUL_HM HM_668155_Sw_02 deviceMsg: on (to VCCU)
2018-03-23 20:28:42 CUL_HM HM_668155_Sw_02 level: 100
2018-03-23 20:28:42 CUL_HM HM_668155_Sw_02 pct: 100
2018-03-23 20:28:42 CUL_HM HM_668155_Sw_02 on
2018-03-23 20:28:42 CUL_HM HM_668155_Sw_02 timedOn: off
2018-03-23 20:28:42 CUL_HM HM_668155 CMDs_pending
2018-03-23 20:28:42 CUL_HM HM_668155_Sw_02 set_off
2018-03-23 20:28:43 CUL_HM HM_668155 CMDs_done
2018-03-23 20:28:43 CUL_HM HM_668155_Sw_02 deviceMsg: off (to VCCU)
2018-03-23 20:28:43 CUL_HM HM_668155_Sw_02 level: 0
2018-03-23 20:28:43 CUL_HM HM_668155_Sw_02 pct: 0
2018-03-23 20:28:43 CUL_HM HM_668155_Sw_02 off
2018-03-23 20:28:43 CUL_HM HM_668155_Sw_02 timedOn: off
2018-03-23 20:28:43 PRESENCE Ramona absent
2018-03-23 20:28:43 PRESENCE Ramona presence: absent
2018-03-23 20:28:45 CUL_HM HM_668155 CMDs_pending
2018-03-23 20:28:45 CUL_HM HM_668155_Sw_01 set_off
2018-03-23 20:28:45 CUL_HM HM_668155 aesKeyNbr: 02
2018-03-23 20:28:45 CUL_HM HM_668155 aesCommToDev: ok
2018-03-23 20:28:45 CUL_HM HM_668155 CMDs_done
2018-03-23 20:28:45 CUL_HM HM_668155_Sw_01 deviceMsg: off (to VCCU)
2018-03-23 20:28:45 CUL_HM HM_668155_Sw_01 level: 0
2018-03-23 20:28:45 CUL_HM HM_668155_Sw_01 pct: 0
2018-03-23 20:28:45 CUL_HM HM_668155_Sw_01 off
2018-03-23 20:28:45 CUL_HM HM_668155_Sw_01 timedOn: off



Danke & Gruss Marc



Gruss Marc
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

papa

expectAES ist doch nur auf der Senderseite z.B. Fernbedienung. Damit wird dem Sender mitgeteilt, dass der Empfänger z.B. Switch eine AES-Signature nachfragen wird.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

MBHG

Danke, das wusste ich nicht. Damit funktioniert es jetzt. Danke nochmals. Marc
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

MBHG

Hallo,

Ich habe mir HM-WDS10-TH-O geschnappt und für meinen BMP180 umgeschrieben. Pairing hat geklappt, das fhem log sagt aber noch


2018.03.30 18:35:47 4: CUL_Parse: CUL_1 A 0C 39 A070 345678 280790 00D5CF50 -34
2018.03.30 18:35:47 1: Error dewpoint: humidity invalid: 207


Anscheinend erwartet er humidity, ich habe aber nur pressure. Einige Stunden probieren haben nichts geholfen, irgendwas mache ich falsch.



//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>

#include <Register.h>
#include <MultiChannelDevice.h>
#include <OneWire.h>
//#include <sensors/Ds18b20.h>
//#include <sensors/Tsl2561.h>
//#include <sensors/Bh1750.h>
#include <sensors/Bmp180.h>
//#include <sensors/Sht10.h>
//#include <sensors/Dht.h>

// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED_PIN 4
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8

// number of available peers per channel
#define PEERS_PER_CHANNEL 6

// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x34,0x56,0x78},       // Device ID
    "papa111111",           // Device Serial
    {0x00,0x3d},            // Device Model
    0x10,                   // Firmware Version
    as::DeviceType::THSensor, // Device Type
    {0x01,0x00}             // Info Bytes
};

/**
* Configure the used hardware
*/
typedef AvrSPI<10,11,12,13> SPIType;
typedef Radio<SPIType,2> RadioType;
typedef StatusLed<4> LedType;
typedef AskSin<LedType,BatterySensor,RadioType> BaseHal;
class Hal : public BaseHal {
public:
  void init (const HMID& id) {
    BaseHal::init(id);
    // init real time clock - 1 tick per second
    rtc.init();
    // measure battery every 1h
    battery.init(60UL*60,rtc);
    battery.low(22);
    battery.critical(19);
  }

  bool runready () {
    return rtc.runready() || BaseHal::runready();
  }
} hal;

class WeatherEventMsg : public Message {
public:
  void init(uint8_t msgcnt,int16_t temp,uint8_t pressure, bool batlow) {
    uint8_t t1 = (temp >> 8) & 0x7f;
    uint8_t t2 = temp & 0xff;
    if( batlow == true ) {
      t1 |= 0x80; // set bat low bit
    }
    Message::init(0xc,msgcnt,0x70,BIDI,t1,t2);
    pload[0] = pressure;
  }
};

DEFREGISTER(WeatherRegsList0,MASTERID_REGS,DREG_BURSTRX)
typedef RegList0<WeatherRegsList0> WeatherList0;


class WeatherChannel : public Channel<Hal,List1,EmptyList,List4,PEERS_PER_CHANNEL,WeatherList0>, public Alarm {

  uint16_t        millis;
//  Dht<6,DHT11>      dht11;
//  Sht10<A4,A5>    sht10;
  Bmp180          bmp180;
//  Tsl2561<>       tsl2561;
//  Bh1750<>          bh1750;
//  Ds18b20         ds18b20;
  OneWire         ow;

public:
  WeatherChannel () : Channel(), Alarm(5), millis(0), ow(6) {}
  virtual ~WeatherChannel () {}

  virtual void trigger (__attribute__ ((unused)) AlarmClock& clock) {
    // wait also for the millis
    if( millis != 0 ) {
      tick = millis2ticks(millis);
      millis = 0; // reset millis
      sysclock.add(*this); // millis with sysclock
    }
    else {
      uint8_t msgcnt = device().nextcount();
      measure();
      WeatherEventMsg& msg = (WeatherEventMsg&)device().message();
//      msg.init(msgcnt,dht11.temperature(),dht11.humidity(),device().battery().low());
      msg.init(msgcnt,bmp180.temperature(),bmp180.pressure(),device().battery().low());
//      msg.init(msgcnt,0,0,device().battery().low());
      device().sendPeerEvent(msg,*this);
//      device().send(msg,device().getMasterID());

      // reactivate for next measure
      HMID id;
      device().getDeviceID(id);
      uint32_t nextsend = delay(id,msgcnt);
      tick = nextsend / 10; // seconds to wait
      millis = nextsend % 1000; // millis to wait
      rtc.add(*this);
    }
  }

  // here we do the measurement
  void measure () {
    DPRINTLN("Measure...  ");
//    dht11.measure();
//    DPRINT("T: ");DDEC(dht11.temperature());DPRINT("  H: ");DDECLN(dht11.humidity());
//    sht10.measure();
//    DPRINT("T: ");DDEC(sht10.temperature());DPRINT("  H: ");DDECLN(sht10.humidity());
    bmp180.measure();
    DPRINT("T: ");DDEC(bmp180.temperature());DPRINT("  P: ");DDECLN(bmp180.pressure());
//    tsl2561.measure();
//    DPRINT("H: ");DDECLN(tsl2561.brightness());
//    bh1750.measure();
//    DPRINT("H: ");DDECLN(bh1750.brightness());
//    ds18b20.measure();
//    DPRINT("T: ");DDECLN(ds18b20.temperature());
  }

  // here we calc when to send next value
  uint32_t delay (const HMID& id,uint8_t msgcnt) {
    uint32_t value = ((uint32_t)id) << 8 | msgcnt;
    value = (value * 1103515245 + 12345) >> 16;
    value = (value & 0xFF) + 480;
    value *= 250;

    DDEC(value / 1000);DPRINT(".");DDECLN(value % 1000);

    return value;
  }

  void setup(Device<Hal,WeatherList0>* dev,uint8_t number,uint16_t addr) {
    Channel::setup(dev,number,addr);
    tick = 5;
    rtc.add(*this);
//    dht11.init();
//    sht10.init();
    bmp180.init();
//    tsl2561.init();
//    bh1750.init();
//    Ds18b20::init(ow, &ds18b20, 1);
  }

  uint8_t status () const {
    return 0;
  }

  uint8_t flags () const {
    return 0;
  }

};


typedef MultiChannelDevice<Hal,WeatherChannel,1,WeatherList0> WeatherType;
WeatherType sdev(devinfo,0x20);

ConfigButton<WeatherType> cfgBtn(sdev);

void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  sdev.init(hal);
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  sdev.initDone();
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    hal.activity.savePower<SleepRTC>(hal);
  }
}


Gruss Marc
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

Tom Major

Zitat von: MBHG am 30 März 2018, 18:45:11

Anscheinend erwartet er humidity, ich habe aber nur pressure. Einige Stunden probieren haben nichts geholfen, irgendwas mache ich falsch.

Du sendest die humidity gar nicht mit wenn ich das richtig sehe. humidity muss in die payload rein, siehe z.B.
https://github.com/TomMajor/AskSinPP_Examples/blob/master/HB-UNI-Sensor1/HB-UNI-Sensor1.ino

pload[2] = humidity;

und ggf. das FHEM Modul anpassen das dort humidity auch am richtigen Platz auftaucht.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

LuBeDa

Hallo zusammen,
mittlerweile ist der Eselskarren aus China mit meinen Modulen angekommen. Daher beschäfftige ich mich wieder mehr mit der AskSinPP Library.

Die hardwareseite verstehe ich jetzt einigermassen, was mir noch Probleme bereitet ist die FHEM-Seite.
Speziell die Herausforderung pro Homebrew-Sensor ein eigenes Modul zu entwickeln.

Könnte man nicht CUL_HM so erweitern das dort das Handshake und AES Geschäft abgewickelt wird, nur die Sensordaten von einem anderen Paket bearbeitet werden? Ich stelle mir das so vor. das ein Modul CUL_HB_SENSOR nur das Paket mit den Sensordaten erhält und anhand der HMID des Sensors und der "Bitbeschreibung" 7.1-7.5 => Humidity in % die Readings des Gerätes aktualisiert.


define MeinHumSensor CUL_HB_SENSOR hmId 7.1-7.5 Humidity


Aktoren wären damit schwierig aber für Sensoren scheint mit das ein gangbarer Weg.

Wie seht ihr das?

Wie kann man aus CUL_HM das Sensordatenpaket abgreifen?

Ludger


MBHG

Zitat von: Tom Major am 30 März 2018, 18:57:58
Du sendest die humidity gar nicht mit wenn ich das richtig sehe. humidity muss in die payload rein, siehe z.B.
https://github.com/TomMajor/AskSinPP_Examples/blob/master/HB-UNI-Sensor1/HB-UNI-Sensor1.ino

pload[2] = humidity;

und ggf. das FHEM Modul anpassen das dort humidity auch am richtigen Platz auftaucht.


Danke. Habe die airPressure in den Payload eingebaut. Pairt auch mit der VCCU. Funktioniert fast. Anstatt einer Airpressure von 987 kommt 56417 an.  Erst kam einzu geringer Wert, dann hatte ich festgestellt, dass die Differenz genau 0x300 (in hex) war, d.h. es fehlte wohl genau ein byte. Also die Message Length verlängert. Jetzt kommt ein irrwitziger Wert. Muss mal noch überlegen, was es sein könnte.


class WeatherEventMsg : public Message {
public:
  void init(uint8_t msgcnt,int16_t temp,uint8_t airPressure, bool batlow) {
    uint8_t t1 = (temp >> 8) & 0x7f;
    uint8_t t2 = temp & 0xff;
    if( batlow == true ) {
      t1 |= 0x80; // set bat low bit
    }
    Message::init(0xe,msgcnt,0x70,BIDI,t1,t2);

    pload[0] = ((airPressure) >> 8) & 0x7f;
    pload[1] = (airPressure) & 0xff;
  }
};


Gruss
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

Tom Major

Was ich spontan sehe, Du darfst den airPressure nicht mit 7F sondern musst mit FF verunden. Die 7F sind bei der Temperatur richtig da dort dass low Batt Bit sitzt, aber nicht beim airPressure.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Tom Major

Ausserdem: airPressure kommt bei Dir mir uint8_t in die Funktion rein, aber du verwendest es dort als 16bit Wert für 2 Byte payload. So wird das nichts.  ;)
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Tom Major

ok, jetzt weiss ich wo die falsche Maske 7F beim airPressure herkam, von mir  ???
Habe es gerade im Repo gefixt.
Der Bug hat keine Auswirkungen da aufgrund des Wertebereiches des Luftdrucks hier auf dem Planeten dort nie ein Wert stehen sollte der Bit15 tatsächlich auf 1 setzt.

Der falsche Wert kommt dann sicherlich durch den uint8_t wie oben geschrieben.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

MBHG

#791
Hi,

danke. Klappt jetzt. Falsch war neben dem int8 das fehlen eines Wertes für Humdity. Klappt alles, danke!

Marc



class WeatherEventMsg : public Message {
public:
  void init(uint8_t msgcnt,int16_t temp,uint16_t airPressure, bool batlow) {
    uint8_t t1 = (temp >> 8) & 0x7f;
    uint8_t t2 = temp & 0xff;
    if( batlow == true ) {
      t1 |= 0x80; // set bat low bit
    }
    Message::init(0xe,msgcnt,0x70,BIDI,t1,t2);

    pload[0] = 0;   //zero for humidity
    pload[1] = ((airPressure) >> 8) & 0xff;
    pload[2] = (airPressure) & 0xff;
  }
};
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

papa

Zitat von: LuBeDa am 01 April 2018, 14:01:05
Hallo zusammen,
mittlerweile ist der Eselskarren aus China mit meinen Modulen angekommen. Daher beschäfftige ich mich wieder mehr mit der AskSinPP Library.

Die hardwareseite verstehe ich jetzt einigermassen, was mir noch Probleme bereitet ist die FHEM-Seite.
Speziell die Herausforderung pro Homebrew-Sensor ein eigenes Modul zu entwickeln.

Könnte man nicht CUL_HM so erweitern das dort das Handshake und AES Geschäft abgewickelt wird, nur die Sensordaten von einem anderen Paket bearbeitet werden? Ich stelle mir das so vor. das ein Modul CUL_HB_SENSOR nur das Paket mit den Sensordaten erhält und anhand der HMID des Sensors und der "Bitbeschreibung" 7.1-7.5 => Humidity in % die Readings des Gerätes aktualisiert.


define MeinHumSensor CUL_HB_SENSOR hmId 7.1-7.5 Humidity


Aktoren wären damit schwierig aber für Sensoren scheint mit das ein gangbarer Weg.

Wie seht ihr das?

Wie kann man aus CUL_HM das Sensordatenpaket abgreifen?

Ludger

Ich hatte hier - oder in dem Hardwarebeitrag schon mal nen generischen Sensor vorgeschlagen. Dieser würde eine Sensormessage (Typ = 0x53) senden. Der Empfangscode auf der FHEM-Seite, würde die Nachricht auf Grund eines Attributes auswerten und in entsprechende Readings zerlegen.

Mal kurz suchen ...... hier
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

LuBeDa

Hallo zusammen,
ich habe noch Probleme mit dem Debugging. Ich nutze einen Pro Mini 8MHz und einen FTDI Adapter den ich einfach nur in die Bohrlöcher des Arduinos stecke (War glaube ich ein Trick von Jerome).

Das Programmieren klappt auch damit aber ich bekomme keine Debugginginfos über die serielle Konsole.

#define NDEBUG ist nicht gesetzt und das sollte auch stimmen:

void setup() {
DINIT(57600, "Hallo");
...
}


Pairing etc funktionieren.

Habe noch Probleme mit meinem BME280 Sensor und ohne Debbuging ist die Fehlersuche schwierig.

Was könnte ich sonst noch falsch gemacht haben?

Ludger


jp112sdl

Zitat von: LuBeDa am 03 April 2018, 21:37:06
Das Programmieren klappt auch damit aber ich bekomme keine Debugginginfos über die serielle Konsole.

Du hast auch 57600 Baud eingestellt?
Kommt gar nicht oder Zeichenmüll?
Wenn Zeichenmüll kommt - stell mal auf 115200. Kommt dann was sinnvolles?