HM-LC-Bl1-FM-2 lasst sich nicht anlernen

Begonnen von heidepower, 09 August 2019, 21:42:55

Vorheriges Thema - Nächstes Thema

papa

Das ist kein Bug - wenn im XML count_from_sysinfo benutzt wird, legt die CCU so viele Kanäle an, wie der Aktor beim pairen meldet. CUL_HM ignoriert diese Info. Das ist/war bisher auch kein Problem, da ja die verkaufte Hardware immer entsprechend unterstützt wurde. Jetzt nutzen die Selbstbauten aber diese Feature immer öfter, was es auf FHEM-Seite schwer macht, diese ordentlich zu nutzen.
Wahrscheinlich kann man die fehlenden Kanäle auch per Hand nachträglich anlegen. Aber ich denke für die meisten Nutzer ist das keine Lösung. Ich muss mal mit Martin Kontakt aufnehmen, ob wir das irgendwie anpassen können.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

LuckyDay

ZitatDas ist/war bisher auch kein Problem, da ja die verkaufte Hardware immer entsprechend unterstützt wurde
Jain

das Problem war doch schon seit EQ-3 "fehlerhafte" SW2 verkaufte die sich als SW1 meldeten, deswegen gibt es in Fhem auch seitdem ModelForce.
zum auswählen.

Martin ist deswegen schon die richtigen AnsprechPerson :)

heidepower

Hallo,

kann mir jemand ( @papa ) verraten warum eine state machine nicht in dem Sketch funktioniert? Da ich mit dem Aktor keinen Motor sondern einen 433Mhz Fernbediung ansteuere muss ich die Unterprogramme für Hoch Runter und Stopp anpassen.

Und zwar soll jeweils für Hoch und Runter 2 Sek das Relais angezogen bleiben. Dann geht der Rollladen in selbsthaltung. Wenn ich das mit einem Delay realisiere funktioniert es auch, aber in der Zeit wo er in dem Delay hängt kann kein Stopp Befehl bearbeitet werden.

ich habe das ganze mal für Hoch mit einer State Machine ausprobiert (Zeile 96) doch leider funktioniert es nur einmal.....

https://pastebin.com/R00yBsH5?fbclid=IwAR25jpgdgys4AIFugqncIlT4E42Zl-gzhchskNCRBf5M1FHCJUMOtPBFnOo

Grüße

papa

Dafür gibt es die actors/PushButton-Klasse. Die kriegt einen Pin und kann dann mit press(millis) den "Button" für eine bestimmte Zeit drücken. Das ganze ist nicht blockierend.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

heidepower

#19
Hey,

@papa danke für deine Antwort, leider bin ich mit deiner Antwort überfodert  :-\
Ich hab den Sketch und googel nach PushButton-Klasse etc durchsucht, konnte aber nichts finden das mir weiterhelfen könnte! Könntest du mir das erklären wie ich das einbinde, oder mir das schnell in meinem Sketch ändern? Das wäre sehr nett... :)

das habe ich gefunden
https://github.com/pa-pa/AskSinPP/blob/master/actors/PushButton.h
nehme mal an das ich De Lib einbinden muss, aber weiter weis ich dann nicht....

Grüße


papa

Hier mal die wichtigen Fragmente:


#include <actors/PushButton.h>

....

class BlChannel : public ActorChannel<Hal,BlindList1,BlindList3,PEERS_PER_CHANNEL,BlindList0,BlindStateMachine> {
  private PushButton<HIGH> onpin;
public:
  typedef ActorChannel<Hal,BlindList1,BlindList3,PEERS_PER_CHANNEL,BlindList0,BlindStateMachine> BaseChannel;

  BlChannel () {}
  virtual ~BlChannel () {}

....

  void init () {
    onpin.init(ON_RELAY_PIN);

....

  void motorup () {
    onpin.press(2000); // for 2 seconds on

....

  void motorstop () {
    digitalWrite(ON_RELAY_PIN,LOW);   // simple switch off

BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

heidepower

Hey danke, leider bringt die IDE einen fehler... und wenn ich für DIR_Relay das gleiche möchte füge ich das gleiche für DIR_RELAY untendrunter ein?



class BlChannel : public ActorChannel<Hal,BlindList1,BlindList3,PEERS_PER_CHANNEL,BlindList0,BlindStateMachine> {
  private PushButton<HIGH> onpin;
  private PushButton<HIGH> dirpin;




heidepower

Habe den Fehler gefunden, wenn ander auch vor dem Probem stehen sollten.

Der ":" hat gefehlt nach private, desweitern habe ich für das dir_relay das gleiche beigefügt. Jetzt fährt mein Rollande so wie ich mir das vorgestellt habe!
#include <actors/PushButton.h>

....

class BlChannel : public ActorChannel<Hal,BlindList1,BlindList3,PEERS_PER_CHANNEL,BlindList0,BlindStateMachine> {
  private: PushButton<HIGH> onpin; PushButton<HIGH> dirpin;
public:
  typedef ActorChannel<Hal,BlindList1,BlindList3,PEERS_PER_CHANNEL,BlindList0,BlindStateMachine> BaseChannel;

  BlChannel () {}
  virtual ~BlChannel () {}

....

  void init () {
    onpin.init(ON_RELAY_PIN);
    dirpin.init(DIR_RELAY_PIN);




@papa vielen Dank, jetzt wollte ich im 2 kanal Rolladenaktor das gleiche einfügen und muste feststellen, dass der anderster vom code ist  :-[ könntest du mir für den auch nochmal bitte die wichtigsten Fragmenet zusammenfügen?

Grüße