Dianmax ISP USB Programierer

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

Moderator: Co-Administratoren

Alveran
Beiträge: 250
Registriert: 07.08.2018, 20:17
Hat sich bedankt: 74 Mal
Danksagung erhalten: 25 Mal

Re: Dianmax ISP USB Programierer

Beitrag von Alveran » 29.12.2022, 12:56

@HMSteve ich weiß schon das du das weißt, ich meine dem TE sickboy
Zuletzt geändert von Alveran am 29.12.2022, 14:08, insgesamt 1-mal geändert.

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Dianmax ISP USB Programierer

Beitrag von sickboy2711 » 29.12.2022, 13:45

Hallo Stephan

Danke für deine Hilfe, die hat mich die letzte Nacht nochmal ruhig schlafen lassen :D

Wenn du mir eine PN mit deiner Adresse sendes mache ich dir im neuen Jahr ein Päckchen fertig (wie versprochen!)
Es war wirlich der fehlende Kondensator. In meinem letzten Post in der Nacht habe ich übrigens eine 0 vergessen, es wurde ein 100nF Kondensator in die Leitung gelötet.
Sehr schoen, sieht soweit gut aus. Laeuft der sketch auch?
Das Anlernen an die CCU war wie zu erwarten erfolglos (wie kann es anders sein, wenn ein Bug drin ist dann nehme ich jeden mit :lol:

Ich habe mich dann mal dem CC1101 gewidmet und den FrequenzTest Sketch aufgespielt. https://asksinpp.de/Grundlagen/FAQ/Fehl ... 1-frequenz

Und siehe da, er hat mir eine andere Ferquent im Eprom gespeichert.

Und nun habe ich das nächste Problem, wenn ich nun den eigentlichen Sketch

Code: Alles auswählen

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

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

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

#define RELAY1_PIN 5  //change to D5 for further PWM Options

// 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 = {
    {0x42,0xA2,0x00},       // Device ID
    "papa42a200",           // Device Serial
    {0x00,0x6c},            // Device Model
    0x10,                   // 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<LED_PIN>,BattSensor<AsyncMeter<InternalVCC>>,Radio<RadioSPI,2> > Hal;
typedef AskSin<StatusLed<LED_PIN>,BattSensor<AsyncMeter<ExternalVCC<17,7,LOW,3300> >>,Radio<RadioSPI,2> > Hal;

DEFREGISTER(Reg0,DREG_INTKEY,DREG_LEDMODE,MASTERID_REGS,DREG_LOWBATLIMIT)
class SwList0 : public RegList0<Reg0> {
public:
  SwList0(uint16_t addr) : RegList0<Reg0>(addr) {}
  void defaults () {
    clear();
    lowBatLimit(22);
  }
};

// setup the device with channel type and number of channels
class SwitchType : public MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> {
public:
  typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> DevType;
  SwitchType (const DeviceInfo& i,uint16_t addr) : DevType(i,addr) {}
  virtual ~SwitchType () {}

  virtual void configChanged () {
    DevType::configChanged();
    //uint8_t lowbat = getList0().lowBatLimit();
    uint8_t lowbat = getList0().lowBatLimit() / 5; //factor 5 to get low bat message at 1V (CCU 5V)
    DDECLN(lowbat);
    if( lowbat > 0 ) {
      battery().low(lowbat);
    }
  }
};

Hal hal;
SwitchType sdev(devinfo,0x20);
ResetOnBoot<SwitchType> resetOnBoot(sdev);
ConfigToggleButton<SwitchType> cfgBtn(sdev);
#ifndef USE_WOR
BurstDetector<Hal> bd(hal);
#endif

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 setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  bool first = sdev.init(hal);
  sdev.channel(1).init(RELAY1_PIN);
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  initPeerings(first);
#ifndef USE_WOR
  // start burst detection
  bd.enable(sysclock);
#endif
  // stay on for 15 seconds after start
  hal.activity.stayAwake(seconds2ticks(15));
  // measure battery every hour
  hal.battery.init(seconds2ticks(60UL*60),sysclock);
  resetOnBoot.init();
  
  sdev.initDone();
  //if (sdev.getMasterID() == HMID::broadcast) { DPRINTLN(F("START PAIRING")); sdev.startPairing(); } // start pairing of no master id is present
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    hal.activity.savePower<Sleep<> >(hal);
  }
}
aufpielen möchte, medet mir die Konsole

Code: Alles auswählen

avrdude: ser_open(): can't open device "\\.\COM4": Zugriff verweigert
Im seriellen Monitor wird der Frequenztest wieder durchgeführt.

Ich habe auch schon versucht, den COM Port im Gerätemanager umzustellen, jedoch erhalte ich dort die gleiche Fehlermeldung.

HMSteve
Beiträge: 539
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

Re: Dianmax ISP USB Programierer

Beitrag von HMSteve » 29.12.2022, 13:55

Du konntest also den Frequenztest per FTDI flashen, der lief dann und produzierte sinnvolle Ausgaben im seriellen Monitor, und Du kannst auf die gleiche Weise einen anderen Sketch nicht flashen? Das ist sehr seltsam. Probier mal
- seriellen Monitor schliessen
- keine weiteren Arduino-IDE-Fenster offen haben
- die Arduino IDE und darin den zu flashenden Sketch auch erst oeffnen, nachdem FTDI-Adapter samt Deiner Zielplatine angeschlossen ist
- Rechner neu starten (klingt banal, half aber bei mir auch schon, wenn mal wieder der USB-Treiber nicht wollte)
Viele Gruesse,
Stephan

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Dianmax ISP USB Programierer

Beitrag von sickboy2711 » 29.12.2022, 14:23

Ja genau den Fequenztest konnte ich ausführen.

Was ich seltsam finde, dass er mir nicht jedesmal den gleichen Wert ausgibt.
Anbei ein Auszug:

Code: Alles auswählen

14:01:49.278 -> Done: 0x2165FA - 0x21669A
14:01:49.324 -> Calculated Freq: 0x21664A 868.389 MHz
14:01:49.324 -> Store into config area: 664A...stored!
14:01:49.433 -> 
14:01:49.433 -> Old Config Freq was: 0x216642 868.386 MHzGoing to sleep...

14:03:55.928 -> Done: 0x2165DA - 0x2166AA
14:03:55.928 -> Calculated Freq: 0x216642 868.386 MHz
14:03:55.928 -> Store into config area: 6642...stored!
14:03:56.043 -> 
14:03:56.043 -> Old Config Freq was: 0x216632 868.379 MHzGoing to sleep...

14:05:39.164 -> Calculated Freq: 0x216642 868.386 MHz
14:05:39.164 -> Store into config area: 6642...stored!
14:05:39.302 -> 
14:05:39.302 -> Old Config Freq was: 0x216642 868.386 MHzGoing to sleep...

14:08:04.928 -> Done: 0x2165EA - 0x21669A
14:08:04.928 -> Calculated Freq: 0x216642 868.386 MHz
14:08:04.928 -> Store into config area: 6642...stored!
14:08:05.057 -> 
14:08:05.057 -> Old Config Freq was: 0x216642 868.386 MHzGoing to sleep...
Ich habe deine Tips beherzigt und es denn nochmal mit schliessen des seriellen Monitors versucht - das war übrigens die Lösung :!:

Den Ketck konnte ich aufspielen und er hat mir auch die erlittelte Frequenz "0x216642" angezeigt.

Nur leider wird mir nach dem Anlernprozedere kein Gerät im Posteingang angezeigt.

Die notwendige Zusatzsoftware https://github.com/jp112sdl/jp-hb-devices-addon & https://github.com/TomMajor/SmartHome/t ... ices-AddOn habe ich beide bereits auf der CCU (Raspberrymatic) installiert.

Mühsam ernährt sich das Eichhörnchen... aber wir kommen wohl immer einen Schritt weiter.

Das ist übrigens die Ausgabe des seriellen Monitors, wenn ich den FTI Anschliesse:

Code: Alles auswählen

14:30:33.373 -> AskSin++ v5.0.2 (Dec 29 2022 14:09:37)
14:30:39.636 -> Address Space: 32 - 250
14:30:39.636 -> CC init1
14:30:39.636 -> CC Version: 04
14:30:39.636 ->  - ready
14:30:39.636 -> Config Freq: 0x216642
14:30:39.901 -> eVcc: 0
14:30:39.901 -> 4
14:30:39.949 -> <- 0E 01 86 10 42A200 000000 06 01 00 80 00  - 323
14:30:46.340 -> ignore 14 AF 84 5E 3BB34C 000000 80 4E 68 00 00 26 00 02 09 1B 01  - 6793
14:30:46.820 -> ignore 15 10 00 8E 63B3C9 BECF91 00 0C BE 97 FB B7 51 4C AA 02 5E 43  - 7317
14:30:46.951 -> ignore 14 10 00 8E BECF91 63B3C9 1B C9 1F D4 12 85 EB BD B1 A9 86  - 7428
14:30:47.294 -> ignore 0C 76 86 5A 344776 000000 30 F7 22  - 7778
14:30:53.686 -> ignore 0C EE 86 70 172BB2 000000 00 DD 2B  - 14252
14:33:08.555 ->  debounce
14:33:08.642 ->  pressed
14:33:08.735 ->  released
14:33:08.735 -> -> 0B 02 02 40 42A200 42A200 01 02  - 15042
14:33:08.859 -> <- 0E 03 86 10 42A200 000000 06 01 C8 80 4F  - 15169
14:33:08.859 -> 
14:33:09.171 ->  debounce
14:33:09.236 ->  pressed
14:33:09.330 ->  released
14:33:09.330 -> -> 0B 04 02 40 42A200 42A200 01 04  - 15552
14:33:09.454 -> <- 0E 05 86 10 42A200 000000 06 01 00 80 4F  - 15679
14:33:09.454 -> 
Und diese nach betätigen des Anlernbutton (der ja auf der latine dem Resetbutton entspricht):

Code: Alles auswählen

14:35:02.252 -> AskSin++ v5.0.2 (Dec 29 2022 14:09:37)
14:35:02.252 -> Address Space: 32 - 250
14:35:02.252 -> CC init1
14:35:02.252 -> CC Version: 04
14:35:02.295 ->  - ready
14:35:02.295 -> Config Freq: 0x216642
14:35:02.515 -> eVcc: 0
14:35:02.515 -> 4
14:35:02.557 -> <- 0E 01 86 10 42A200 000000 06 01 00 80 00  - 325
14:35:06.823 -> ignore 12 12 00 83 63B3C9 F00001 00 0C BE 99 9A E1 AA 7F BF  - 4626
Zuletzt geändert von sickboy2711 am 29.12.2022, 14:36, insgesamt 1-mal geändert.

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

Re: Dianmax ISP USB Programierer

Beitrag von jp112sdl » 29.12.2022, 14:34

Zeig mal die Ausgabe des seriellen Monitors beim Anlernen

VG,
Jérôme ☕️

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

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Dianmax ISP USB Programierer

Beitrag von sickboy2711 » 29.12.2022, 14:39

jp112sdl hat geschrieben:
29.12.2022, 14:34
Zeig mal die Ausgabe des seriellen Monitors beim Anlernen
Gerade ergänzt :-)

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

Re: Dianmax ISP USB Programierer

Beitrag von jp112sdl » 29.12.2022, 14:42

Anlernen beim 1-Kanal-Schaltaktor erfolgt durch langes Drücken (ca. 2 Sek.) des Configbuttons.

Und die Batteriemessung solltest du auch erst noch in Ordnung bringen,

VG,
Jérôme ☕️

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

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Dianmax ISP USB Programierer

Beitrag von sickboy2711 » 29.12.2022, 15:32

jp112sdl hat geschrieben:
29.12.2022, 14:42
Anlernen beim 1-Kanal-Schaltaktor erfolgt durch langes Drücken (ca. 2 Sek.) des Configbuttons.
Danke, das wars :D
Und die Batteriemessung solltest du auch erst noch in Ordnung bringen,
Wie meinst du das?
Der Autor schreibt doch:
Batterie-Messung:
Desweiteren kann die Batteriespannung vor dem Stepup mittels Spannungsteiler gemessen werden. Ein angepasster Sketch liegt bei. Vielen Dank an Jérôme für die Unterstützung und das Aufzeigen, wie "einfach" doch die Batterieklasse ist. ;-)

Da in der CCU, bei diesem Aktor, die Batteriemeldung nur im Bereich von 5-15V auslöst, wird im Sketch unter ...

uint8_t lowbat = getList0().lowBatLimit() / 5; //factor 5 to get low bat

... die eingestellte Batterieschwelle durch 5 geteilt. In der CCU müssen also die Spannungwerte mit "x5" angegeben werden. Beispiel: Batteriemeldung bei 2,1V Versorgungsspannung. Heißt 2,1V x 5 = 10,5V. Es müssen demnach 10,5V in der CCU eingestellt werden. Die Werte variieren je nach verwendetem Batterie.- Akkutyp und müssen "für sich selbst" gefunden werden.
Und im Sketch ist dieser Parameter doch gesetzt

Code: Alles auswählen

  virtual void configChanged () {
    DevType::configChanged();
    //uint8_t lowbat = getList0().lowBatLimit();
    uint8_t lowbat = getList0().lowBatLimit() / 5; //factor 5 to get low bat message at 1V (CCU 5V)
    DDECLN(lowbat);
    if( lowbat > 0 ) {
      battery().low(lowbat);
    }
  }

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

Re: Dianmax ISP USB Programierer

Beitrag von jp112sdl » 29.12.2022, 16:38

sickboy2711 hat geschrieben:
29.12.2022, 14:23

Code: Alles auswählen

14:35:02.515 -> eVcc: 0
Es wird 0V gemessen

VG,
Jérôme ☕️

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

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Dianmax ISP USB Programierer

Beitrag von sickboy2711 » 29.12.2022, 17:45

Ich denk das lag daran, dass ich beim Anlernen noch keine Excterne Stomversorgung dran hatte.

In der CCU wird es jetzt ohne Probleme angezeit und auch keine Low-Bat-Meldung.

Jetzt sind nur noch zwei Hürden, die ich erledigen muss.
  1. Heraus zu finden, warum das Schreiben des bootloaders erst nach dem Anlöten der Pins funktioniert hat.
  2. Die integration in Homekit, dass ich den Aktor wie gehabt über den Hompod schalten kann 8)
In Redmaticwird der Aktor angezeigt jedoch in der Homeapp nirgends zu finden.

Ich danke allen, die mir bei meinen Problem geholfen haben, wenn ich die Zeit habe werde ich das Vorgehen mal zusammen fassen, ich denk' ich werd nicht der Einzige Schlaubischlumpf sein, der diese Anfängerfehler macht.

Antworten

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