AskSin++ Library

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

Vorheriges Thema - Nächstes Thema

papa

Komisch. Da kommt die gleiche Nachricht 2-3 mal.
Irgendwas scheint da mit dem Timing nicht zu stimmen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Ich habe den Messagebuffer mal vergrößert. Vielleicht hilft das ja.
Kannst Du bitte nochmal die Firmware Aktualisieren. Falls es Probleme beim Empfang gibt, wird jetzt auch eine Message auf der Console ausgegeben.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

StefanH

Hallo zusammen,

erst einmal großes Lob @papa und alle die hier helfen. Ich habe mir mit der AskSin++ Library sehr viel Geld sparen können und habe sehr viel Spaß beim implementieren meiner neuen Hausautomatisieren.

AskSin++ läuft bei mir bereits als 4-Kanal Switch (HM-LC-SW4-SM). Anfangs hatte ich Probleme, da ich das C1101 entsprechend nach nanoCUL angelötet hatte, aber jetzt passt alles.

Jetzt zu meinem Problem: Ich würde das HM-LC-SW4-SM gerne als Rollladensteuerung verwenden. Dazu habe ich das Rollo-Modul in FHEM eingebunden. Das klappt soweit auch. Mein Rollladen soll aber auch von Hand bedientbar sein und nicht nur das Webinterface. Mit dem Config-Taster klappt das ja auch. Wenn ich diesen drücke, wird Kanal 1 eingeschaltet, der Rollladen fährt hoch. Drücke ich den Taster nochmal, bleibt er wieder stehen. Da es aber nur einen Taster gibt, bekomme ich ihn nicht mehr hoch. Gibt es eine einfache Möglichkeit einen zweiten Taster in den Code mit unterzubringen? Eigentlich müsste man ja nur eine zweite ISR verwenden, die dann channel.toggle aufruft, oder nicht?
Auch wenn ich recht gut C programmieren kann, sind meine Fähigkeiten mit C++ noch etwas beschränkt, vor allem da hier  alles mit Templates programmiert ist.

Kann mir jemand ein einfache Lösung zeigen? Eigentlich müssten entsprechende Funktionen für den Sender ja bereits implementiert sein, Bsp. in .h.

papa

Einfach eine eigene Button-Klasse ableiten und dann im setup() mit dem entsprechenden Pin verbinden. Könne in etwa so aussehen (nicht getestet):


class Btn2 : public Button {
public:
  Btn2 () {}
  virtual ~Btn2 () {}
  virtual void state (uint8_t s) {
    Button::state(s);
    if( s == Button::released ) {
      // short press action
    }
    else if( s == Button::longreleased ) {
      // long press action
    }
  }
} btn2;

void setup () {
   ....
  buttonISR(btn2,BUTTON2_PIN);
}
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

StefanH

Vielen Dank!

Hat bestens funktioniert!

capt_bluebaer

Hallo Leute,

zuerst möchte ich mich 'mal dem Dank meines Vorredners anschließen, tolles Projekt.
Mit meinen bescheidenen Kenntnissen in C++ war ich in der Lage, mir einen HM-WDS-SEC Wassermelder softwareseitig zusammenzufriemeln, er geht demnächst in die Hardware Produktion.
Aktuell bin ich dabei, den HM-LC-Dim1PWM-CV aus den Examples einzusetzen, er soll in Vollendung mit einem PWM-DA Wandler nach diesem Vorbild https://www.cctools.eu/ext_index.php/artikel/1420 als Ansteuerung eines Vorschaltgerätes 0-10V für Leuchtstoffröhren (Aquarium) eingesetzt werden, die Hardware funktioniert soweit.
Mein Problem ist das Verhalten des Dimmers, wenn er durch einen gepeerten Pushbutton getoggelt (short pressed) wird. FHEM zeigt den Status on/off danach immer invertiert an. Das passiert wirklich nur mit dem gepeerten Device, ein Toggeln im Webinterface als auch mit dem Config-Button führt zur richtigen Status-Anzeige. Die Long-pressed Aktionen wiederum funktionieren richtig.
Hier mal ein paar Kommunikations-Beispiele (Push-Button Device ID 518FBC):

Config-Button toggle on:
debounce
released
<- 0F 08 A6 10 111222 000000 06 01 C8 00 52 C8  - 613

Config-Button toggle off:
debounce
released
<- 0F 09 A6 10 111222 000000 06 01 00 00 52 00  - 728

Push-Button toggle on:
-> 0B 82 A4 40 518FBC 111222 02 28  - 832
<- 0F 82 80 02 111222 518FBC 01 01 00 10 78 00  - 835
<- 0F 0A A6 10 111222 000000 06 01 C8 00 78 C8  - 846

Push-Button toggle off:
-> 0B 83 A4 40 518FBC 111222 02 29  - 1082
<- 0F 83 80 02 111222 518FBC 01 01 C8 20 78 C8  - 1086
<- 0F 0B A6 10 111222 000000 06 01 00 00 78 00  - 1097


In allen Fällen erfolgt eine Broadcast Meldung mit dem richtigen Status, dem Pushbutton wird explizit allerdings ein falscher Status nur an seine Adresse gemeldet.
Könnte es sein, das FHEM da schon mitliest und die Broadcast-Meldung z.B. aus Timing-Gründen verschluckt?
Raspi 3 Model B, nanoCUL868 (HM), signalDuino (433 MHz), jeeLink

Xent

#351
@capt_bluebaer: Könntest du deine Implementierung des HM-WDS-SEC mit uns Teilen?
Hätte großes Interesse daran, das nachzubauen.

@papa:
Hier die Ausgabe der neuen Version.
Habe einmal auf und wieder zugeschlossen:
AskSin++ V1.0.6 (Jul  9 2017 19:45:00)
Address Space: 32 - 268
CC init12...................3 - ready
Invert active
HM-LC-SW4-SM
<- 0E 01 A6 10 123456 000000 06 01 00 00 00  - 266
<- 0E 02 A6 10 123456 000000 06 02 00 00 00  - 276
<- 0E 03 A6 10 123456 000000 06 03 00 00 00  - 373
<- 0E 04 A6 10 123456 000000 06 04 00 00 00  - 474
-> 0E 1F A0 11 473071 123456 02 01 C8 00 00  - 619
<- 0E 1F 80 02 123456 473071 01 01 C8 00 53  - 871
-> 0E 1F A0 11 473071 123456 02 01 C8 00 00  - 882
<- 0E 1F 80 02 123456 473071 01 01 C8 00 52  - 886
-> 0E 28 A0 11 473071 123456 02 01 00 00 00  - 918
<- 0E 28 80 02 123456 473071 01 01 00 00 56  - 1169
-> 0E 28 A0 11 473071 123456 02 01 00 00 00  - 1181
<- 0E 28 80 02 123456 473071 01 01 00 00 55  - 1185



Hier meine Umsetzung der Katzenklappe, jetzt sogar mit einer Statusanzeige.
Hätte auch nen Motorsteuer IC nehmen können, aber die Relais hatte ich gerade da.
Damit sie den Mikrocontroller nicht überlasten hängen sie an jeweils zwei Ausgängen die gleichzeitig geschaltet werden.

ext23

Zitat von: Xent am 09 Juli 2017, 19:51:52
Damit sie den Mikrocontroller nicht überlasten hängen sie an jeweils zwei Ausgängen die gleichzeitig geschaltet werden.

Ähh du hast Relais direkt an den µC gehangen ohne Transistoren zwischen? Du weißt schon das mehr als 10(20) mA nicht gehen, auch wenn du da versuchst zwei Ausgänge Parallel zu schalten und die dann auch noch zu verbinden...

Oder habe ich da jetzt etwas falsch verstanden?!?

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Xent

Also im Datenblatt steht:
DC Current per I/O Pin 40 mA

Auf nem anderen Datenblatt wo das Pinout ganz schön dargestellt ist, steht 40mA max und empfohlen 20mA.
Das Relais braucht nur knapp unter 40mA.
Ich habe die verbundenen Pins am gleichen Port und schalte diese direkt durch schreiben in die Register.
Das Relais ist auch nur für 250ms eingeschaltet.

ext23

Mhh naja, haste die Freilaufdiode wenigstens drin? Ansonsten fällt mir dazu nichts mehr ein ;-)

/Daniel

HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Xent

Noch nicht.
Wollte ich aber wahrscheinlich noch machen.

Bräuchte ich für die Relais auch noch welche?
Der Motor ist nicht freidrehen, also er dreht sich in den 250ms nur bis zu einem Anschlag.
Also kann keine Induktion durchs nachdrehen entstehen.
Braucht der auch welche, wenn der dann direkt steht?

Einige Arduino Shields für Schrittmotoren haben doch auch nur nen ULN2003 drin.

papa

Zitat von: capt_bluebaer am 09 Juli 2017, 19:24:41
In allen Fällen erfolgt eine Broadcast Meldung mit dem richtigen Status, dem Pushbutton wird explizit allerdings ein falscher Status nur an seine Adresse gemeldet.
Könnte es sein, das FHEM da schon mitliest und die Broadcast-Meldung z.B. aus Timing-Gründen verschluckt?

Hm - Toggle vom Peer habe ich gar nicht probiert - nur On/Off bzw DimUp/Down. Muss ich mal machen. Wird aber frühestens in 2 Wochen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Zitat von: Xent am 09 Juli 2017, 19:51:52
Hier meine Umsetzung der Katzenklappe, jetzt sogar mit einer Statusanzeige.

Hast Du da gar keine Antenne dran ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Doch, nur ist die beim Prototypen ohne Gehäuse abgebrochen, da die Platine leider nur halbe Löcher hatte.
Jetzt ist wieder eine dran direkt an den Kondensator gelötet.

papa

Kannst Du auch mal die Ausgaben vom FHEM für das Gerät aufzeichnen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire