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

Hi,

das hat jetzt geklappt. Leider sind die Value-Werte werden immer noch nicht dargestellt.

Edit: Und kein Eintrag im Logfile.

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

papa

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

ritchie

Hi,
Gibt es irgendwo eine Beschreibung, wie der Aufruf und die Einbindung eines Homebrew auf Softwareebene arbeitet. Wo ist der Einstieg an dem ich angefangen kann.

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

papa

Leider nein. Ich hab mir das damals auch nur alles zusammen geraten. Ich habe auch kein aktuelles FHEM am laufen. Sonst könnte ich vielleicht mehr helfen. Meine Installation ist schon mindestens 3 Jahre alt und funktioniert nur als Homematic Bridge nach Home Assistant. Und da funktioniert alles super.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

ritchie

Hi,

da ich keine Probleme mit dem Ersatz von Fensterkontakten (ehemals MAX, jetzt Arduno) habe, vermute ich wohl eher,
das die Implementierung des Moduls "HB-UNI-Sen-DUST" nicht 100% korrekt ist.

Ich überlege jetzt, ob es erfolgversprechender ist, an dem Modul zu arbeiten auf Basis des Modul "HB-GEN-SENS" oder
das ganze mit einem ESP32 und via WLAN und MQTT einzubinden.

Bei dem ESP32 und MQTT weiss ich, das es gehen wird. Nur habe ich derzeit auch Ärger mit einem "HM-DIS-TD-T" Modul
was mir immer "ACK-missing" gibt, ob das Problem nicht ganz wo anderes ist und ich an der falschen Stelle
suche.

Viele Grüße
R.

IPU662  IPFIRE & FHEM (Homematic + MAX) - Produktiv
Intel iCore 3 / 16GBRAM / 500GB SSD / Ubuntu  (1Wire - USB) - Produktiv

ritchie

Hallo Papa,

ich habe das ganze jetzt nochmals neu gepairt und bei dem Auftreten eines ACK-Missing nochmals den Konfig-Button gedrückt. Hierdurch wurden wohl ausstehende Kommandos
nochmals abgearbeitet. Das hat auch bei meinem Status-Display funktioniert. Danke nochmals an "Gernott" für diesen Tipp.
Erst hiernach war das Modul scheinbar korrekt gepairt.

Als dann der Datensatz:
19:30:09.919 -> pm25avg: 22, pm10avg: 22
19:30:09.919 -> pm25max: 25, pm10max: 25
19:30:09.919 -> pm25min: 20, pm10min: 20
19:30:09.967 -> <- 17 01 86 53 F31401 000000 01 00 00 16 00 2F 00 19 00 36 00 14 00 29  - 184059
kam, wurde im FHEM Log jetzt der folgende Eintrag erzeugt:
2026.05.31 19:27:03 1: HMConfig_AskSinPPCustom received unknown message: 86,53,F31401,000000,01000014002F001800540011001F
2026.05.31 19:30:09 1: HMConfig_AskSinPPCustom received unknown message: 86,53,F31401,000000,01000016002F0019003600140029
Und bei jedem weiteren Protokoll des Moduls auch. Es erscheint jedoch nicht der Eintrag
"HB-UNI-Sen-DUST Executed"
im Logfile.

Was muss ich den jetzt hier entsprechend anpassen ?
$HMConfig::culHmModel{"F314"} = {name  => "HB-UNI-Sen-DUST",st=>'custom',cyc=>'',rxt=>'c',lst=>'1',chn=>"Values:1:1"};
$HMConfig::culHmChanSets{"HB-UNI-Sen-DUST00"}{fwUpdate} = "<filename>";
$HMConfig::culHmChanSets{"HB-UNI-Sen-DUST01"} = $HMConfig::culHmSubTypeSets{"Values"};
$HMConfig::culHmRegChan {"HB-UNI-Sen-DUST01"} = $HMConfig::culHmRegType{values};
$customMsg{"HB-UNI-Sen-DUST"} = sub {
  my ($msg, $hash) = @_;
  my @evtEt=();

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

  if( $msg->isValues ) {
    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 $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;
};

Das sollte doch das ganze jetzt stark eingrenzen.

Hier ist im Quellcode diese Bedingung nicht erfüllt und im Else Zweig steht der Eintrag im Logfile Zeile 897
my($mFlg,$mTp,$src,$dst,$p,$target) = @_;
..
..
if (($mTp eq "02" && $p =~ m/^01/) || ($mTp eq "10" && $p =~ m/^06/) ) {

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