HB-SEN-LJet - Aufbau

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

Moderator: Co-Administratoren

Benutzeravatar
Gelegenheitsbastler
Beiträge: 415
Registriert: 15.10.2017, 07:29

HB-SEN-LJet - Aufbau

Beitrag von Gelegenheitsbastler » 06.03.2019, 17:27

Wie bereits im anderen Thread geschrieben, hier nochmal die Frage:


Noch eine Frage zur Pinbelegung, weil für mich nicht ganz klar ist, ob die Abbildung die Buchse oder den Stecker zeigt.
https://github.com/TomMajor/AskSinPP_Ex ... N-LJet.png

Ist das linke rote Kabel auf dem Foto Pin1 oder Pin6?

Ich würde es ja selber ausmessen, habe aber keinen LevelJet hier.
Dateianhänge
RJ12 oben.jpg
RJ12 vorne.jpg
Zuletzt geändert von Gelegenheitsbastler am 09.03.2019, 16:38, insgesamt 1-mal geändert.
Das Komplizierteste an der Hausautomatisation ist der WAF.™ ​

RaspberryMatic 3.43.15.20190223 auf Raspberry Pi 3B mit HomeMatic Funkmodul von ELV und RTC
FritzBox 7490 FW 7.01 mit Mesh
FritzRepeater 1750E FW 7.01 mit Mesh
FRITZ!DECT 200 (als CUxD Gerät eingebunden)
Etliche selbst gebaute Aktoren und Sender

TomMajor
Beiträge: 235
Registriert: 30.08.2017, 23:25
Kontaktdaten:

Re: HB-SEN-LJet - Steckerbelegung

Beitrag von TomMajor » 06.03.2019, 23:08

Hier mal 2 Bilder aus meinem LevelJet Archiv.
Das Gerät hat eine RJ11 Buchse. Wenn du auf diese von außen drauf schaust und die Verriegelung unten ist dann ist Pin1 links.
Dateianhänge
rj12.png
rj12.png (2.25 KiB) 1008 mal betrachtet
LevelJET Buchse.png
Viele Grüße,
Tom

Benutzeravatar
Gelegenheitsbastler
Beiträge: 415
Registriert: 15.10.2017, 07:29

Re: HB-SEN-LJet - Aufbau

Beitrag von Gelegenheitsbastler » 09.03.2019, 16:43

Danke für die Info. Damit komme ich weiter.

Nun habe ich das nächste Problem mit Deinem Projekt. Ich habe die Hardware soweit aufgebaut. Um sicher zu gehen, kein Problem mit dem CC1101 zu haben, habe ich den FreqTest laufen lassen. Die Frequenz passte relativ gut.

Es lassen sich sämtliche Sketche flashen und ein Anlernen mit diversen Sketchen ist problemlos möglich. Leider klappt das mit dem LJet-Sketch nicht. Flashen klappt, aber Anlernen leider nicht. Weder über die ID, noch per Config-Tatster. Ich habe lediglich die IDs und die I/O abgeändert. Aber es will einfach nicht klappen. Hat jemand eine Idee, wo das Problem liegen kann?

Code: Alles auswählen

//---------------------------------------------------------
// HB-SEN-LevelJet
// 2018-12-19 Tom Major (Creative Commons)
// https://creativecommons.org/licenses/by-nc-sa/3.0/
// You are free to Share & Adapt under the following terms:
// Give Credit, NonCommercial, ShareAlike
// +++
// AskSin++ 2016-10-31 papa Creative Commons
// HB-UNI-Sen-LEV-US 2018-04-16 jp112sdl Creative Commons
//---------------------------------------------------------

//---------------------------------------------------------
// !! NDEBUG beim LevelJet Sketch unbedingt ausgeschaltet lassen
// Serial Port Init (DINIT) via AskSinPP/Debug.h wird 2fach benutzt: Tx AskSinPP Debug out, Rx LevelJet (19200 Baud erforderlich)
//#define NDEBUG

//---------------------------------------------------------
// 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 <MultiChannelDevice.h>
#include <Register.h>
#include "src/Leveljet.h"

//---------------------------------------------------------
// Pin definitions
#define CONFIG_BUTTON_PIN 8
#define LED_PIN 4

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

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

LEVELJET leveljet;

// define all device properties
// Bei mehreren Geräten des gleichen Typs muss Device ID und Device Serial unterschiedlich sein!
const struct DeviceInfo PROGMEM devinfo = {
    { 0xA5, 0xA6, 0x01 },    // Device ID
    "20190309_1",            // Device Serial
    { 0xF1, 0x04 },          // Device Model
    // Firmware Version
    // die CCU Addon xml Datei ist mit der Zeile <parameter index="9.0" size="1.0" cond_op="E" const_value="0x10" />
    // fest an diese Firmware Version gebunden! cond_op: E Equal, GE Greater or Equal
    // bei Änderungen von Payload, message layout, Datenpunkt-Typen usw. muss die Version an beiden Stellen hochgezogen werden!
    0x10,
    0x53,             // Device Type
    { 0x01, 0x01 }    // Info Bytes
};

// Configure the used hardware
typedef AvrSPI<10, 11, 12, 13>                SPIType;
typedef Radio<SPIType, 2>                     RadioType;
typedef StatusLed<LED_PIN>                    LedType;
typedef AskSin<LedType, NoBattery, RadioType> Hal;
Hal                                           hal;

// die "freien" Register 0x20/21 werden hier als 16bit memory für das Update
// Intervall in Sek. benutzt siehe auch hb-sen-leveljet.xml, <parameter id="Sendeintervall">
DEFREGISTER(Reg0, MASTERID_REGS, DREG_TRANSMITTRYMAX, 0x20, 0x21)
class SensorList0 : public RegList0<Reg0> {
public:
    SensorList0(uint16_t addr)
        : RegList0<Reg0>(addr)
    {
    }

    bool updIntervall(uint16_t value) const
    {
        return this->writeRegister(0x20, (value >> 8) & 0xff) && this->writeRegister(0x21, value & 0xff);
    }
    uint16_t updIntervall() const { return (this->readRegister(0x20, 0) << 8) + this->readRegister(0x21, 0); }

    void defaults()
    {
        clear();
        transmitDevTryMax(6);
        updIntervall(21600);    // 6h
    }
};

class MeasureEventMsg : public Message {
public:
    void init(uint8_t msgcnt, uint8_t percent, uint16_t levelMM, uint16_t volumeLiter)
    {
        // als Standard wird BCAST gesendet um Energie zu sparen, siehe Beschreibung HB-UNI-Sensor1.
        // Bei jeder 10. Nachricht senden wir stattdessen BIDI|WKMEUP, um eventuell anstehende Konfigurationsänderungen auch
        // ohne Betätigung des Anlerntaster übernehmen zu können (mit Verzögerung, worst-case 10x Sendeintervall).
        uint8_t flags = BCAST;
        if ((msgcnt % 10) == 2) {
            flags = BIDI | WKMEUP;
        }
        Message::init(15, msgcnt, 0x53, flags, percent, 0);
        pload[0] = volumeLiter >> 8;
        pload[1] = volumeLiter & 0xff;
        pload[2] = levelMM >> 8;
        pload[3] = levelMM & 0xff;
    }
};

class MeasureChannel : public Channel<Hal, List1, EmptyList, List4, PEERS_PER_CHANNEL, SensorList0>, public Alarm {
    MeasureEventMsg msg;
    uint8_t         percent;
    uint16_t        levelMM;
    uint16_t        volumeLiter;

public:
    MeasureChannel()
        : Channel()
        , Alarm(seconds2ticks(60))
        , percent(0)
        , levelMM(0)
        , volumeLiter(0)
    {
    }
    virtual ~MeasureChannel() {}

    virtual void trigger(AlarmClock& clock)
    {
        uint8_t msgcnt = device().nextcount();
        measure();
        msg.init(msgcnt, percent, levelMM, volumeLiter);
        device().sendPeerEvent(msg, *this);
        // reactivate for next measure
        uint16_t updCycle = this->device().getList0().updIntervall();
        set(seconds2ticks(updCycle));
        clock.add(*this);
    }

    void measure()
    {
        percent     = leveljet.percent();
        levelMM     = leveljet.level();
        volumeLiter = leveljet.volume();
    }

    void setupSensor()
    {
        leveljet.init();
        DPRINTLN("Sensor setup done");
    }

    void setup(Device<Hal, SensorList0>* dev, uint8_t number, uint16_t addr)
    {
        Channel::setup(dev, number, addr);
        setupSensor();
        set(seconds2ticks(20));    // first message in 20 sec.
        sysclock.add(*this);
    }

    void configChanged()
    {
        // DPRINTLN("Config changed: List1");
    }

    uint8_t status() const { return 0; }

    uint8_t flags() const { return 0; }
};

class SensChannelDevice : public MultiChannelDevice<Hal, MeasureChannel, 1, SensorList0> {
public:
    typedef MultiChannelDevice<Hal, MeasureChannel, 1, SensorList0> TSDevice;
    SensChannelDevice(const DeviceInfo& info, uint16_t addr)
        : TSDevice(info, addr)
    {
    }
    virtual ~SensChannelDevice() {}

    virtual void configChanged()
    {
        TSDevice::configChanged();
        DPRINTLN("Config Changed: List0");

        uint8_t txDevTryMax = this->getList0().transmitDevTryMax();
        DPRINT("transmitDevTryMax: ");
        DDECLN(txDevTryMax);

        uint16_t updCycle = this->getList0().updIntervall();
        DPRINT("updCycle: ");
        DDECLN(updCycle);
    }
};

SensChannelDevice               sdev(devinfo, 0x20);
ConfigButton<SensChannelDevice> cfgBtn(sdev);

void setup()
{
    // !! Serial Port Init (DINIT) via AskSinPP/Debug.h wird 2fach benutzt: Tx AskSinPP Debug out, Rx LevelJet (19200 Baud erforderlich)
    DINIT(19200, 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) {
        // Device ist Netzteil betrieben und sollte wach bleiben um die seriellen Telegramme vom Leveljet zu empfangen
        // if nothing to do - go sleep
        // hal.activity.savePower<Sleep<>>(hal);
        leveljet.loop();
        delay(1);
    }
}
Das Komplizierteste an der Hausautomatisation ist der WAF.™ ​

RaspberryMatic 3.43.15.20190223 auf Raspberry Pi 3B mit HomeMatic Funkmodul von ELV und RTC
FritzBox 7490 FW 7.01 mit Mesh
FritzRepeater 1750E FW 7.01 mit Mesh
FRITZ!DECT 200 (als CUxD Gerät eingebunden)
Etliche selbst gebaute Aktoren und Sender

TomMajor
Beiträge: 235
Registriert: 30.08.2017, 23:25
Kontaktdaten:

Re: HB-SEN-LJet - Aufbau

Beitrag von TomMajor » 09.03.2019, 17:10

Viele Grüße,
Tom

Benutzeravatar
Gelegenheitsbastler
Beiträge: 415
Registriert: 15.10.2017, 07:29

Re: HB-SEN-LJet - Aufbau

Beitrag von Gelegenheitsbastler » 09.03.2019, 17:32

Klatsch - das Geräusch meiner Hand gegen die Stirn.

Danke. Genau das wars.
Das Komplizierteste an der Hausautomatisation ist der WAF.™ ​

RaspberryMatic 3.43.15.20190223 auf Raspberry Pi 3B mit HomeMatic Funkmodul von ELV und RTC
FritzBox 7490 FW 7.01 mit Mesh
FritzRepeater 1750E FW 7.01 mit Mesh
FRITZ!DECT 200 (als CUxD Gerät eingebunden)
Etliche selbst gebaute Aktoren und Sender

TomMajor
Beiträge: 235
Registriert: 30.08.2017, 23:25
Kontaktdaten:

Re: HB-SEN-LJet - Aufbau

Beitrag von TomMajor » 10.03.2019, 00:13

Gelegenheitsbastler hat geschrieben:
09.03.2019, 17:32
Klatsch - das Geräusch meiner Hand gegen die Stirn.

Danke. Genau das wars.
Die info gehört noch in die readme, werde ich noch aufnehmen.
Bei Nicht-Standard devices braucht man immer ein AddOn, ist wahrscheinlich nicht immer gleich offensichtlich..
Viele Grüße,
Tom

NilsG
Beiträge: 817
Registriert: 09.08.2013, 23:44
Kontaktdaten:

Re: HB-SEN-LJet - Aufbau

Beitrag von NilsG » 10.03.2019, 20:11

Danke für diesen Thread ... :!:

Hallo zusammen!

Also, mit den Funk-Systemen von LevejJet scheint es nicht zu funktionieren?!? :|

Das externe Display hat nur einen(!) RJ11-Anschluss und an dem hängt die externe Antenne dran!
C5B6740B-B47C-4AFD-8273-1D5D3D69D5E0.jpeg

ggf, könnte es mit einem Y-Stecker klappen!?
Der Rx am Display empfängt von dem Tx in der Zisterne, sendet an das Display und parallel an
das Gerät von Tom, welches die Daten an die ccu gibt!

Theorie ... :?:


DANKE!

Nils

TomMajor
Beiträge: 235
Registriert: 30.08.2017, 23:25
Kontaktdaten:

Re: HB-SEN-LJet - Aufbau

Beitrag von TomMajor » 10.03.2019, 22:30

Könnte.
Logge die seriellen Daten an Tx und Rx mit, dann sieht man eventuell mehr.
Achtung, zumindest beim LevelJET kein RS232 sonder 5V Pegel. :!:
Keine Ahnung ob beim LevelJET-WL ebenso, vermuten würde ich es mal.
Viele Grüße,
Tom

NilsG
Beiträge: 817
Registriert: 09.08.2013, 23:44
Kontaktdaten:

Re: HB-SEN-LJet - Aufbau

Beitrag von NilsG » 13.03.2019, 19:22

Mitte April bin ich wieder zurück , dann kann ich es testen!

Ein netter jemand hier aus dem Forum baut mir gerade 2 Stück davon :wink:
Werde berichten ...

@Tom:
Könntest Du mir mal Screenshots online stellen, von den verarbeitenden Werten für die Klickprogramme?!

Danke!

Nils

TomMajor
Beiträge: 235
Registriert: 30.08.2017, 23:25
Kontaktdaten:

Re: HB-SEN-LJet - Aufbau

Beitrag von TomMajor » 13.03.2019, 19:57

NilsG hat geschrieben:
13.03.2019, 19:22
Mitte April bin ich wieder zurück , dann kann ich es testen!

Ein netter jemand hier aus dem Forum baut mir gerade 2 Stück davon :wink:
Werde berichten ...

@Tom:
Könntest Du mir mal Screenshots online stellen, von den verarbeitenden Werten für die Klickprogramme?!

Danke!

Nils
Wobei ich wie gesagt erst mal die seriellen Telegramme prüfen würde ob die beim Funkgerät genau so sind bevor man HW aufbaut..
Keine Ahnung was du meinst mit den Werten für Klickprogramme.
Viele Grüße,
Tom

Antworten

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