AskSinPP Code erweitern aber wie und wo ?

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

Moderator: Co-Administratoren

eibi99
Beiträge: 3
Registriert: 25.01.2019, 10:04

AskSinPP Code erweitern aber wie und wo ?

Beitrag von eibi99 » 25.01.2019, 10:14

Hallo !
Mit den klasse Infos und Code konnte ich einen HM Gerät aus Arduino Nano + CC1101 nachbauen

Normallerweise fragt man nun einen PIN ab und wenn der auf Low steht wird ein HM Funk Telegram gesendet.

Ich möchte aber keinen PIN abfragen, sondern das beim booten des Arduino vielleicht 3x ein HM Telegram gesendet wird.

Hintergrund: Ich mlchte einen Wassersensor erweitern. Wenn Wasseralarm bekommt Arduino Spannung, bootet und sendet 2-3 telegramme an FHEM.

Kann mir jemand sagen wo im Arduino Sketch ich da was modifizieren muss ?

Verwende HM-RC-4.ino

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von papa » 25.01.2019, 13:22

Tja - einfach die Messages schicken und dann in den Tiefschlaf gehen. Könnte so aussehen

Code: Alles auswählen

bool sendRemoteMsg (DeviceType& device, uint8_t channelnum, uint8_t counter, bool longpress) {
  RemoteEventMsg& msg = (RemoteEventMsg&)device.message();
  uint8_t msgcnt = device.nextcount();
  msg.init(msgcnt,channelnum,counter,longpress,false);
  // msg.clearAck(); uncomment if no ack needed
  return device.send(msg,device.getMasterID());
}

bool succcess=false;
int counter=1;
void loop () {
  if( success == false && counter <= 3 ) {
    success = sendRemoteMsg (sdev,1,counter++,false);
    delay(1000);
  }
  else {
    // this call will never return
    hal.activity.sleepForever(hal);
  }
}
Anfragen zur AskSin++ werden nur im Forum beantwortet

eibi99
Beiträge: 3
Registriert: 25.01.2019, 10:04

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von eibi99 » 25.01.2019, 16:42

Besten Dank für die Antwort.

Habe den void loop() Teil aus dem Sketch mit dem Code in der Antwort ersetzt. Bekomme allerdings Komilierungsfehler.

Irgendeine Idee ?

var/folders/5s/nwrz236x61z31gplznnx7qyc0000gn/T/arduino_modified_sketch_373015/HM-RC-4.ino: In function 'bool sendRemoteMsg(as::DeviceType&, uint8_t, uint8_t, bool)':
HM-RC-4:98:49: error: 'class as::DeviceType' has no member named 'message'
RemoteEventMsg& msg = (RemoteEventMsg&)device.message();
^
HM-RC-4:99:27: error: 'class as::DeviceType' has no member named 'nextcount'
uint8_t msgcnt = device.nextcount();
^
HM-RC-4:102:17: error: 'class as::DeviceType' has no member named 'send'
return device.send(msg,device.getMasterID());
^
HM-RC-4:102:33: error: 'class as::DeviceType' has no member named 'getMasterID'
return device.send(msg,device.getMasterID());
^
/var/folders/5s/nwrz236x61z31gplznnx7qyc0000gn/T/arduino_modified_sketch_373015/HM-RC-4.ino: In function 'void loop()':
HM-RC-4:108:7: error: 'success' was not declared in this scope
if( success == false && counter <= 3 ) {
^
HM-RC-4:109:52: error: invalid initialization of reference of type 'as::DeviceType&' from expression of type 'RemoteType {aka as::MultiChannelDevice<Hal, as::RemoteChannel<Hal, 10, as::List0>, 4>}'
success = sendRemoteMsg (sdev,1,counter++,false);
^
/var/folders/5s/nwrz236x61z31gplznnx7qyc0000gn/T/arduino_modified_sketch_373015/HM-RC-4.ino:97:6: note: in passing argument 1 of 'bool sendRemoteMsg(as::DeviceType&, uint8_t, uint8_t, bool)'
bool sendRemoteMsg (DeviceType& device, uint8_t channelnum, uint8_t counter, bool longpress) {
^
exit status 1
'class as::DeviceType' has no member named 'message'

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von papa » 25.01.2019, 16:45

Mach mal aus DeviceType -> RemoteType
Anfragen zur AskSin++ werden nur im Forum beantwortet

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von jp112sdl » 25.01.2019, 16:49

Ändere mal

Code: Alles auswählen

bool sendRemoteMsg (DeviceType& device, uint8_t channelnum, uint8_t counter, bool longpress) {
in

Code: Alles auswählen

bool sendRemoteMsg (RemoteType& device, uint8_t channelnum, uint8_t counter, bool longpress) {
sowie

Code: Alles auswählen

bool succcess=false;
in

Code: Alles auswählen

bool success=false;

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

eibi99
Beiträge: 3
Registriert: 25.01.2019, 10:04

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von eibi99 » 25.01.2019, 18:10

Funktioniert. :D Danke Euch vielmals !

Habe es noch ein wenig abgeändert, so dass beim Starten 2x gesendet wird und danach der normale Betriebsmodus erreicht wird.

Änderung in HM-RC-4.ino

//Neu
bool sendRemoteMsg (RemoteType& device, uint8_t channelnum, uint8_t counter, bool longpress) {
RemoteEventMsg& msg = (RemoteEventMsg&)device.message();
uint8_t msgcnt = device.nextcount();
msg.init(msgcnt,channelnum,counter,longpress,false);
// msg.clearAck(); uncomment if no ack needed
return device.send(msg,device.getMasterID());
}


void setup () {
DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
sdev.init(hal);
remoteISR(sdev,1,BTN1_PIN);
remoteISR(sdev,2,BTN2_PIN);
remoteISR(sdev,3,BTN3_PIN);
remoteISR(sdev,4,BTN4_PIN);
buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
sdev.initDone();
bool success=false;
int counter=1;
do {
success = sendRemoteMsg (sdev,1,counter++,false);
delay(1000);
} while (counter < 3);

}


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

Muxer
Beiträge: 85
Registriert: 24.10.2018, 15:30
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von Muxer » 10.01.2020, 21:48

Ich möchte für meine Anwendung nur einen Impuls bei "Power-On" erhalten.
Einfach gedacht mache hier aus " counter < 3" ein "counter < 2" dann gehts.

Code: Alles auswählen

bool success=false;
int counter=1;
do {
success = sendRemoteMsg (sdev,1,counter++,false);
delay(1000);
} while (counter < 2);
Leider nicht.
Nach dem flashen kommt 1 Impuls. Bei Reset oder Power-On keine Reaktion.

Bei

Code: Alles auswählen

bool success=false;
int counter=1;
do {
success = sendRemoteMsg (sdev,1,counter++,false);
delay(1000);
} while (counter < 3);
funktioniert alles.
Gibst Ideen?
Viele Grüße
Wolfgang

RaspberryMatic
~20 Geräte (HM, HmIP, AskSin)

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von jp112sdl » 10.01.2020, 22:02

Muxer hat geschrieben:
10.01.2020, 21:48
keine Reaktion.
Wo kommt keine Reaktion?


Ich verstehe dein riesen Konstrukt auch nicht.

Code: Alles auswählen

bool success=false;
int counter=1;
do {
success = sendRemoteMsg (sdev,1,counter++,false);
delay(1000);
} while (counter < 2);
ist doch das selbe wie

Code: Alles auswählen

 sendRemoteMsg (sdev,1,1,false);
 

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Muxer
Beiträge: 85
Registriert: 24.10.2018, 15:30
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von Muxer » 10.01.2020, 22:17

Habe das hier gefunden
von eibi99 » 25.01.2019, 18:10
Funktioniert. :D Danke Euch vielmals !

Habe es noch ein wenig abgeändert, so dass beim Starten 2x gesendet wird und danach der normale Betriebsmodus erreicht wird.
Bei

Code: Alles auswählen

bool success=false;
int counter=1;
do {
success = sendRemoteMsg (sdev,1,counter++,false);
delay(1000);
} while (counter < 3);
}
Kommen 2 Schaltsignale von Taster 1 bei Power-On
Bei "counter < 2" passiert nichts auch nicht bei

Code: Alles auswählen

sendRemoteMsg (sdev,1,1,false);
Ich verstehe dein riesen Konstrukt auch nicht.
ist nicht von mir sondern von siehe oben.
Viele Grüße
Wolfgang

RaspberryMatic
~20 Geräte (HM, HmIP, AskSin)

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: AskSinPP Code erweitern aber wie und wo ?

Beitrag von jp112sdl » 10.01.2020, 22:21

Muxer hat geschrieben:
10.01.2020, 22:17
Kommen 2 Schaltsignale von Taster 1 bei Power-On
Bei "counter < 2" passiert nichts auch nicht bei
Kommt nichts / passiert nichts...
- im seriellen Monitor?
- oder in der CCU?
- oder am verknüpften Aktor?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

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