Universelle Hardware-Basis für 868MHz Funksensoren und Aktoren

Begonnen von papa, 05 Juli 2017, 22:12:42

Vorheriges Thema - Nächstes Thema

rvideobaer

Hallo,

@papa
ZitatAber die Möglichkeit, einen neuen/eigenen Typ einzugeben, felht dann leider.
Die normale makeota.html kann man ja immer noch benutzen. Leider ist das Wiki in Bezug auf die Device IDs nicht sehr ergiebig.

Das messen der Batteriespannung kann ich noch nicht beurteilen da mir leider noch ein 100k Widerstand fehlt. Ich hoffe der kommt bald.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

Spezialtrick

Zitat von: rvideobaer am 20 November 2017, 15:54:02
Leider ist das Wiki in Bezug auf die Device IDs nicht sehr ergiebig.


Die Device IDs finden sich hier:

https://svn.fhem.de/fhem/trunk/fhem/FHEM/HMConfig.pm


Gesendet von iPad mit Tapatalk Pro
FHEM - Debmatic - Zigbee2MQTT - Homekit

rvideobaer

Hallo,

ich versuche den 4Fach Schalter in Betrieb zu nehmen. Aber A0-A3 zeigen keine Reaktion auch A4,A5,D3,D6 auf masse getastet bewirken nichts. In Fhem wird er erkannt und mit allen 4 Kanälen angelegt die auch angeblich schalten. aber an der Platine reagiert er nur auf den Config Taster und schaltet in Fhem kanal 1.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

papa

Welchen Branch verwendest Du ?

Im Master musst Du HM_SENSOR_RELAY vor dem ersten include definieren, um die Pinsettings auf das Addon umzustellen. Per default sind die Pins von dieser Relayplatine aktiv.

Die Taster sind noch nicht im Example eingearbeitet.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

rvideobaer

Hallo,

habe das jetzt im Master geändert und ich kann auch messen wie geschalten wird.
Jetzt habe ich ein neues Problem: Die SS14 Dioden werden warm ohne das ein Relais daran hängt. Ich habe sie jetzt noch mal ausgelötet und jetzt werden die Ausgänge wohl angesteuert da die LED leuchten. Leider kann ich kein Datenblatt finden was die Polung der Diode erklärt, sie hat einen Strich auf der einen Seite das sieht man aber was er bedeutet? Auf Deinen Bildern sieht es so aus als würde der Strich in Richtung Transistor zeigen.
Die Dioden habe ich mit der Markierung jetzt in Richtung der Ausgänge eingelötet und jetzt funktioniert es.

Jetzt müssen nur noch die Taster konfiguriert werden.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

rvideobaer

Hallo,

zur Weihnachtszeit braucht man ja immer Funksteckdosen, und da ich noch eine defekte Zeitschaltuhr herumliegen hatte habe ich jetzt die Gelegenheit genutzt und diese mit der Platine umgebaut.
Die original Platinen habe ich entfernt und Lochraster Platten passend zurechtgeschnitten. Hier habe ich ein kleines Netzteil ein Relais und die Universalplatine mit aufgesetztem Relayboard verbunden. Auf die Zweite Platine habe ich einen Taster und die Led 1 von der Universalplatine und die Kontroll-led vom Relayboard aufgelötet und mit den Platinen verbunden. Die alten Löcher des Gehäuses habe ich mit einer Kunststoffplatte verschlossen aus der nur noch der Taster herausschaut, mit dem die Dose geschaltet und Konfiguriert werden kann. Als Software ist die HM-LC-SW1-SM aufgespielt.
Bevor Kritik kommt, ich weis das die Schraubklemme nicht optimal ist aber da ich keine 10 A schalten werde wird sie genügen.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

rvideobaer

Hallo,

ich habe den Funkschalter jetzt ein paar Tage in Betrieb, funktioniert soweit ganz gut. Aber wenn ich denSchalter vom Netz trenne ist hinterher oft das pairing weg und in den Readings steht "PairedTo 0x000000" und ich muß das Pairing wiederholen. Liegt es daran das er als HM-LC-SW1-SM und nicht als HM-LC-Sw1-Pl-DN-R1 in Betrieb ist?

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

papa

Das sollte nicht passieren. Kommst Du an die Debug-Ausgaben beim Start ran ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

rvideobaer

Hallo,

die serielle Ausgabe? Wird wohl erstmal schwierig da er verbaut ist. Weis jetzt noch nicht ob ich an die Kontakte herankomme ohne alles aus einander löten zu müssen.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

papa

Hast Du die Firmware selbst gebaut ? Wie sieht denn der Sketch aus ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

rvideobaer

Hallo,

die Firmware ist die für HM-LC-SWX-SM aus dem Master Brunch.

//- -----------------------------------------------------------------------------------------------------------------------
// 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

// number of relays by defining the device
#define HM_LC_SW1_SM 0x00,0x02
#define HM_LC_SW2_SM 0x00,0x0a
#define HM_LC_SW4_SM 0x00,0x03

#define CFG_LOWACTIVE_BYTE 0x00
#define CFG_LOWACTIVE_ON   0x01
#define CFG_LOWACTIVE_OFF  0x00

#define DEVICE_CONFIG CFG_LOWACTIVE_OFF

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

#include <Switch.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

#ifdef HM_SENSOR_RELAY
  // relay pins for the HMSensor Relay Board
  #define RELAY1_PIN 17
  #define RELAY2_PIN 16
  #define RELAY3_PIN 15
  #define RELAY4_PIN 14
  #define BUTTON1_PIN 6
  #define BUTTON2_PIN 3
  #define BUTTON3_PIN 18
  #define BUTTON4_PIN 19
#else
  // relay output pins compatible to the HM_Relay project
  #define RELAY1_PIN 5
  #define RELAY2_PIN 6
  #define RELAY3_PIN 7
  #define RELAY4_PIN 3
#endif

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


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

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x12,0x34,0x56},       // Device ID
    "papa000000",           // Device Serial
    {HM_LC_SW4_SM},         // Device Model
    0x16,                   // Firmware Version
    as::DeviceType::Switch, // Device Type
    {0x01,0x00}             // Info Bytes
};

/**
* Configure the used hardware
*/
typedef AvrSPI<10,11,12,13> RadioSPI;
typedef AskSin<StatusLed<4>,NoBattery,Radio<RadioSPI,2> > Hal;

// setup the device with channel type and number of channels
typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,List0>,4> SwitchType;

Hal hal;
SwitchType sdev(devinfo,0x20);
ConfigToggleButton<SwitchType> cfgBtn(sdev);



// if A0 and A1 connected
// we use LOW for ON and HIGH for OFF
bool checkLowActive () {
  pinMode(14,OUTPUT); // A0
  pinMode(15,INPUT_PULLUP);  // A1
  digitalWrite(15,HIGH);
  digitalWrite(14,LOW);
  bool result = digitalRead(15) == LOW;
  digitalWrite(14,HIGH);
  return result;
}

void initPeerings (bool first) {
  // create internal peerings - CCU2 needs this
  if( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    for( uint8_t i=1; i<=sdev.channels(); ++i ) {
      Peer ipeer(devid,i);
      sdev.channel(i).peer(ipeer);
    }
  }
}

void initModelType () {
  uint8_t model[2];
  sdev.getDeviceModel(model);
  if( model[1] == 0x02 ) {
    sdev.channels(1);
    DPRINTLN(F("HM-LC-SW1-SM"));
  }
  else if( model[1] == 0x0a ) {
    sdev.channels(2);
    DPRINTLN(F("HM-LC-SW2-SM"));
  }
  else {
    DPRINTLN(F("HM-LC-SW4-SM"));
  }
}


void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  bool first = sdev.init(hal);

#ifdef HM_SENSOR_RELAY
  bool low = false;
#else
  bool low = (sdev.getConfigByte(CFG_LOWACTIVE_BYTE) == CFG_LOWACTIVE_ON) || checkLowActive();
#endif
  DPRINT("Invert ");low ? DPRINTLN("active") : DPRINTLN("disabled");
  sdev.channel(1).init(RELAY1_PIN,low);
  sdev.channel(2).init(RELAY2_PIN,low);
  sdev.channel(3).init(RELAY3_PIN,low);
  sdev.channel(4).init(RELAY4_PIN,low);

  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);

  initModelType();
  initPeerings(first);
}

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


Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

papa

Hier ist aber ein 4 Kanal Switch eingestellt ? Ist das wirklich der Code, der da läuft ? Du sagtest doch es ist ein SW1 eingestellt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

rvideobaer

Hallo,

Device ID und Device Modell ist auf SW1 geändert, ich habe nur beim schließen die Änderungen nicht gespeichert. Wird in FHEM als SW1 angezeigt und auch nur ein Kanal angelegt.

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

rvideobaer

Hallo,

ich glaube ich bin der Ursache auf der Spur, das muß ich noch etwas beobachten und testen.

Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

papa

Und - lass uns an Deinen Erkenntnissen teilhaben  :)
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire