Erweiterung einer HMConfig_AskSinPPCustom.pm Datei für einen SDS011

Begonnen von ritchie, 02 Mai 2026, 20:07:57

Vorheriges Thema - Nächstes Thema

ritchie

Hallo Zusammen,

ich habe ein Board mit der Software "HB-UNI-Sen-DUST.ino" erstellt und im Debug Mode erscheinen auch die korrekten Werte:

ZitatPM25: 34
PM10: 113

Ich habe für die Einbindung die Datei "HMConfig_AskSinPPCustom.pm" und "HMMsg.pm" in FHEM eingebunden.

Ich habe in der Datei ""HMConfig_AskSinPPCustom.pm" folgende Definition eingefügt:

$HMConfig::culHmModel{"F314"} = {name  => "HB-UNI-Sen-DUST",st => "custom", cyc   => '',rxt   => '', lst   => '', chn   => "01" };
$customMsg{"HB-UNI-Sen-DUST"} = sub {
  my ($msg, $hash) = @_;

  main::Log 1,"HB-UNI-Sen-DUST Executed";

  my $pm25_avg = $msg->payloadWord(0) / 10;
  my $pm10_avg = $msg->payloadWord(2) / 10;
  my $pm25_max = $msg->payloadWord(4) / 10;
  my $pm10_max = $msg->payloadWord(6) / 10;
  my $pm25_min = $msg->payloadWord(8) / 10;
  my $pm10_min = $msg->payloadWord(10) / 10;

  my @evtEt=();
  my $device = main::CUL_HM_id2Hash($msg->from);

  push @evtEt,[$device,1,"pm10_min:".$pm10_min];
  push @evtEt,[$device,1,"pm10_avg:".$pm10_avg];
  push @evtEt,[$device,1,"pm10_max:".$pm10_max];
  push @evtEt,[$device,1,"pm25_min:".$pm25_min];
  push @evtEt,[$device,1,"pm25_avg:".$pm25_avg];
  push @evtEt,[$device,1,"pm25_max:".$pm25_max];

  return @evtEt;
};

Wenn die das Teil mit Pairing in FHEM einbinde, bekomme ich das Teil auch in FHEM zu sehen.
Wenn ich dann aber getConfig() mache, bekomme ich nicht die entsprechen Register für die Messwerte zu sehen.

Du darfst diesen Dateianhang nicht ansehen.

Ebenso sehe ich im Logfile keinen Eintrag "HB-UNI-Sen-DUST Executed" der mir sagen würde, das meine Erweiterung überhaupt
durchlaufen wird.

Kennt sich jemand mit der Erweiterung der "HMConfig_AskSinPPCustom.pm" aus und kann mir sagen, wo mein Fehler ist.

Viele Grüße
R.
IPU662  IPFIRE & FHEM (Homematic + MAX) - Produktiv
Intel iCore 3 / 16GBRAM / 500GB SSD / Ubuntu  (1Wire - USB) - Produktiv

ritchie

Hi,

erste Fehler behoben. Ich bekomme jetzt auch die korrekten Eigenschaften. Muss das aber noch genau prüfen.
Zugriffsberechtigung waren unter anderem falsch.

Viele Grüße
R.
IPU662  IPFIRE & FHEM (Homematic + MAX) - Produktiv
Intel iCore 3 / 16GBRAM / 500GB SSD / Ubuntu  (1Wire - USB) - Produktiv

papa

Hi.

Gut das Du Dir erst mal selber helfen konntest. Das ist aber alles schon ganz schön lange her. Aber wenn es noch probleme gibt, werde ich versuchen zu helfen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

ritchie

Hi,

habe dann in der Nacht so viel geändert, das es morgens plötzlich nicht mehr lief.
So muss ich das ganze jetzt nochmals von vorne machen.
Kein Problem. Das Problem liegt wohl zwischen meinen Ohren ;-)

Viele Grüße
R.
IPU662  IPFIRE & FHEM (Homematic + MAX) - Produktiv
Intel iCore 3 / 16GBRAM / 500GB SSD / Ubuntu  (1Wire - USB) - Produktiv

ritchie

Hallo papa,

ich muss nochmals auf hoffentlich Dein gutes Gedächnis zurückgreifen. Ich versuche nochmals einen Anlauf.
Ich habe jetzt auch Chat GPT dazu einiges gefragt, bin mir aber nicht sicher, ob das alles stimmt, was von da kommt.
Hier mein Code:

$HMConfig::culHmModel{"F314"} = {name  => "HB-UNI-Sen-DUST",st => "custom", cyc  => '',rxt  => '', lst  => '', chn  => "01" };
# Nicht "$customMsg{"HB-UNI-Sen-DUST"}
$customMsg{"F314"} = sub {
  my ($msg, $hash) = @_;

  main::Log 1,"HB-UNI-Sen-DUST Executed";

  return () unless $msg->isValues;    # Remark from chatgpt

  my $pm25_avg = $msg->payloadWord(0) / 10;
  my $pm10_avg = $msg->payloadWord(2) / 10;
  my $pm25_max = $msg->payloadWord(4) / 10;
  my $pm10_max = $msg->payloadWord(6) / 10;
  my $pm25_min = $msg->payloadWord(8) / 10;
  my $pm10_min = $msg->payloadWord(10) / 10;

  my @evtEt=();
  my $device = main::CUL_HM_id2Hash($msg->from); 
  push @evtEt,[$device,1,"pm10_min:".$pm10_min];
  push @evtEt,[$device,1,"pm10_avg:".$pm10_avg];
  push @evtEt,[$device,1,"pm10_max:".$pm10_max];
  push @evtEt,[$device,1,"pm25_min:".$pm25_min];
  push @evtEt,[$device,1,"pm25_avg:".$pm25_avg];
  push @evtEt,[$device,1,"pm25_max:".$pm25_max];
 
  return @evtEt;
};

Hierzu hätte ich folgende Fragen.

- Muss in $CustomMsg die DeviceID also "F314" stehen oder der der Devicename "HB-UNI-Sen-DUST".
  Chatgpt meint, das der Aufruf über die ID erfolgt. Wenn ich mir jedoch andere Definitionen
  in der Datei ansehen, scheint das nicht zu stimmen, da hier der Devicename steht.

- Die Zeile "return () unless $msg->isValues;" hat mir Chatgpt empfohlen. Wäre die O.k.

- Muss ich die Datei "10_CUL_HM.pm" entsprechend erweitern ?
  Das Modul wird geladen, aber ich erhalte nie die Meldung ""HB-UNI-Sen-DUST Executed".

- Gibt es eine Erklärung, was genau in der Definition von
  $HMConfig::culHmModel{"F314"} = {name  => "HB-UNI-Sen-DUST",st => "custom", cyc  => '',rxt  => '', lst  => '', chn  => "01" }; 
Stehen muss, damit ich prüfen kann, ob meine Definition stimmt.

In meinem Device steht derzeit
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
  {0xF3, 0x14, 0x01},          // Device ID
  "JPDUST0001",                // Device Serial
  {0xF3, 0x14},                // Device Model
  0x10,                        // Firmware Version
  0x53,    // Device Type 0x53 oder as::DeviceType::THSensor
  {0x01, 0x01}                // Info Bytes
};

Viele Grüße
R.
IPU662  IPFIRE & FHEM (Homematic + MAX) - Produktiv
Intel iCore 3 / 16GBRAM / 500GB SSD / Ubuntu  (1Wire - USB) - Produktiv