AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

pwlr

Moin

Zitatok verstehe. Auch für Reed-Kontakte "sollte" das High-Z Konzept funktionieren, aber muss natürlich getestet werden, da sind wir uns alle einig.

ok, ein Reed-Kontakt, ein manueller Taster, ein Relais, ein Vielfachmessgerät (bei Strommessung) usw. sind prinzipiell alles nur Drahtbrücken. Damit schaltet man den Inputport gegen GND.  Es geht aber nur um die veränderten Eigenschaften des Ports zwischen den Messungen, nicht um die Messung / Zustandserkennung selbst.

Ich habe inzwischen mein Device mit der Änderung bei readPin in Betrieb.

// pinMode(pinnr,OUTPUT);
// digitalWrite(pinnr,LOW);
pinMode(pinnr,INPUT);


Angeschlossen sind ein Reed-Kontakt (Tür auf / zu), ein Schlüsselkontakt (Tür abgeschlossen / nicht abgeschlossen) und ein RFID-Reader mit einem Relaisinterface.

Alles funktioniert wie gewünscht. Ich möchte mich dafür aussprechen, dass die gute von TomMajor vorgeschlagene Änderung in die Lib kommt.

Was meint Ihr ??


papa

Gerne - einfach nen PullRequest im GitHub machen
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

pwlr

ZitatGerne - einfach nen PullRequest im GitHub machen

...ich habs versucht, mir eine ID im GIT besorgt und dachte, dass ich nun irgendwo was Sinniges hinschreiben kann, quasi die Zusammenfassung von hier. Alles was geschehen ist, dass ich ungewollt einen Fork der AskSinPP erzeugt habe. Die kann kann ich noch nicht einmal löschen...
:'( :'( :'(
Sorry, ich gebe auf, keine Ahnung, wie das gehen soll. Hoffentlich kann ich wenigstens diese ID wieder löschen !

papa, kannst Du den Fork von pwlr001d im GIT als Eigentümer des Originals löschen ????

Bernd

Tom Major

ich könnte einen PR machen, überlege aber die Änderung vorher noch mal im orangen Forum anzusprechen wegen möglicher Nebenwirkungen, sind doch mittlerweile eine Menge Leute die AskSinPP Geräte einsetzen..
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

pwlr

Hi,
Zitatich könnte einen PR machen,
danke !!

Noch ein Quercheck ist aus meiner Sicht ok, es ist ja nicht eilig.

papa

Zitat von: Tom Major am 04 Januar 2022, 23:48:20
ich könnte einen PR machen, überlege aber die Änderung vorher noch mal im orangen Forum anzusprechen wegen möglicher Nebenwirkungen, sind doch mittlerweile eine Menge Leute die AskSinPP Geräte einsetzen..
Ja, mach mal bitte. Hier gab es auch noch einne komischen Nebeneffekt.
https://forum.fhem.de/index.php/topic,124205.msg1198138.html#msg1198138
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Tom Major

Habe das Thema noch mal hier angesprochen.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

efyzz

#1597
Hallo,

ich habe mir den HB-UNI-SenAct-4-4-SC mit Batteriebetrieb gebaut. Dafür musste ich noch die HMConfig_AskSinPPCustom.pm erweitern. Ich habe dafür einfach den F331 HB-UNI-SenAct-4-4-SC kopiert und F333 genannt und den Burst aktiviert. Funktioniert soweit.

Was muss ich nun noch hinzufügen, damit auch der Batteriestatus (oder sogar der Spannungswert) in FHEM angezeigt wird?

Im Arduino Code wird per #define USE_BATTERY_MODE scheinbar schon alles aktiviert, um den Batteriestatus zu übertragen. Nur in die HMConfig_AskSinPPCustom.pm müsste es noch eingebaut werden:

$HMConfig::culHmModel{"F333"} = {name=>"HB-UNI-SenAct-4-4-SC",st=>'custom',cyc=>'',rxt=>'b',lst=>'1,3:1p.2p.3p.4p,4:5p.6p.7p.8p',chn=>"Sw:1:4,Btn:5:8"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC00"}{fwUpdate} = "<filename>";
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC01"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC02"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC03"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC04"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC05"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC06"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC07"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmChanSets{"HB-UNI-SenAct-4-4-SC08"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmRegModel{"HB-UNI-SenAct-4-4-SC"}  = { intKeyVisib=>1, cyclicInfoMsg=>1, sabotageMsg=>1 };
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC01"} = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC02"} = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC03"} = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC04"} = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC05"} = $HMConfig::culHmRegType{threeStateSensor};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC06"} = $HMConfig::culHmRegType{threeStateSensor};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC07"} = $HMConfig::culHmRegType{threeStateSensor};
$HMConfig::culHmRegChan {"HB-UNI-SenAct-4-4-SC08"} = $HMConfig::culHmRegType{threeStateSensor};
$customMsg{"HB-UNI-SenAct-4-4-SC"} = sub {
  my ($msg,$target) = @_;
  my $channel = $msg->channel;
  return $msg->processThreeState($target) if $channel > 4;
  return $msg->processSwitchStatus($target) if $msg->isStatus;
  return ();
};

Hier mal als Beispiel der F311, der offensichtlich den Batteriestatus überträgt. Ich habe versucht, mir daraus etwas zusammen zu kopieren, aber das war leider erfolglos.

$HMConfig::culHmModel{"F311"} = {name=>"HB-UNI-Sen-CAP-MOIST",st=>'custom',cyc=>'',rxt=>'c:l',lst=>'1',chn=>"Data:1:1,Moisture:2:4"};
$HMConfig::culHmChanSets{"HB-UNI-Sen-CAP-MOIST00"}{fwUpdate} = "<filename>";
$HMConfig::culHmChanSets{"HB-UNI-Sen-CAP-MOIST01"} = {};
$HMConfig::culHmChanSets{"HB-UNI-Sen-CAP-MOIST02"} = {};
$HMConfig::culHmChanSets{"HB-UNI-Sen-CAP-MOIST03"} = {};
$HMConfig::culHmChanSets{"HB-UNI-Sen-CAP-MOIST04"} = {};
$HMConfig::culHmRegModel{"HB-UNI-Sen-CAP-MOIST"}  = { lowBatteryLimit=>1, transmitInterval=>1 };
$HMConfig::culHmRegChan {"HB-UNI-Sen-CAP-MOIST01"} = {};
$HMConfig::culHmRegChan {"HB-UNI-Sen-CAP-MOIST02"} = { highValue=>1, lowValue=>1 };
$HMConfig::culHmRegChan {"HB-UNI-Sen-CAP-MOIST03"} = { highValue=>1, lowValue=>1 };
$HMConfig::culHmRegChan {"HB-UNI-Sen-CAP-MOIST04"} = { highValue=>1, lowValue=>1 };
$customMsg{"HB-UNI-Sen-CAP-MOIST"} = sub {
  my ($msg,$target) = @_;
  my @evtEt=();
  my $cnum = $msg->payloadByte(1) & 0x3f; # get channel from byte 1 of payload
  my $device = main::CUL_HM_id2Hash($msg->from);
  my $batstat = "ok";
  $batstat = "low" if (($msg->payloadByte(0) & 0x80)==0x80);
  push @evtEt,[$device,1,"battery:".$batstat];
  my $channel = $main::modules{CUL_HM}{defptr}{$msg->channelId($cnum)};
  if( defined($channel) ) {
    my $bat = $msg->payloadByte(2);
    push @evtEt,[$channel,1,"batVoltage:".$bat/10];
    push @evtEt,[$channel,1,"state:".($bat/10)." V"];
  }
  for( my $offset=3; $offset < length($msg->payload)/2; $offset += 2 ) {
    $cnum = $msg->payloadByte($offset) & 0x3f; # get channel for next value
    $channel = $main::modules{CUL_HM}{defptr}{$msg->channelId($cnum)};
    if( defined($channel) ) {
      my $moist = $msg->payloadByte($offset+1);
      push @evtEt,[$channel,1,"humidity:".$moist];
      push @evtEt,[$channel,1,"state:".$moist." %"];
    }
    else {
      Log 1,"No channel for ".$msg->channelId($cnum);
    }
  }
  return @evtEt;
};

Vielen Dank für eure Tipps!
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

papa

Probier mal folgendes
$customMsg{"HB-UNI-SenAct-4-4-SC"} = sub {
  my ($msg,$target) = @_;
  my @evtEt=();
  my $batflags = 0;
  my $device = main::CUL_HM_id2Hash($msg->from);
  my $channel = $msg->channel;
  if( $channel > 4 ) {
    @evtEt = $msg->processThreeState($target);
    # add battery value
    $batflags = $msg->payloadByte(0);
  }
  if( $msg->isStatus ) {
    @evtEt = $msg->processSwitchStatus($target);
    # add battery value
    $batflags = $msg->payloadByte(3);   
  }
  # add battery state
  my $batstat = "ok";
  $batstat = "low" if (($batflags & 0x80)==0x80);
  push @evtEt,[$device,1,"battery:".$batstat];
  return @evtEt;
};
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

efyzz

Hallo papa,

vielen Dank! Schön, dass Du hier noch supportest :)

Ich habe jetzt tatsächlich ein Reading battery ok/low.
Die Batteriespannung wird leider nicht angezeigt. Aber immerhin, so komme ich schon mal weiter.

Ich habe nämlich den Eindruck, dass der HB-UNI-SenAct-4-4-SC innerhalb einiger Tage die Batterien leer zieht (Strommessung sieht eigentlich gut aus). Ich hatte vorher den HM-Sec-SD Sketch (Rauchmelder) verwendet, da hielten die Batterien gut 2 Jahre. Aber ich muss das noch ne Weile beobachten, bevor ich das Problem genauer beschreiben kann ...
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

papa

Schickt er überhaupt die Batteriespannung mit ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

efyzz

Ich habe leider nicht die geringste Ahnung (woran man das erkennt) ...
Habe diesen Sketch verwendet:
https://github.com/jp112sdl/HB-UNI-SenAct-4-4/tree/master/HB-UNI-SenAct-4-4-SC
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

papa

Nö - nur das Low-Flag
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

efyzz

OK, danke.

Ich muss jetzt erstmal weiter beobachten, warum die Geräte immer mal wieder nicht erreichbar sind. Ich bin wie gesagt von HM-Sec-SD-Sketch umgestiegen und da hatte ich keine Probleme mit nahezu leeren Batterien (ca. 2,4V unbelastet). Mit diesen schwachen Batterien waren die nun auf HB-UNI-SenAct-4-4-SC geflashten Geräte immer nach ein paar Tagen nicht mehr erreichbar. Also haben alle betroffenen Geräte nun erstmal neue Batterien bekommen. Aktuell laufen 7 von 8 stabil, einer zickt noch gelegentlich, trotz voller Batterien. Bin gespannt, wie lange die Batterien halten und ob die "low" Meldung kommt, bevor sie wieder unerreichbar sind.
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

Funsailor

Hi,
ich habe hier ein HM-PBI-4-FM mit defektem Funkmodul. Das Modul habe ich getauscht (Aus einem defekten Fenstersensor) und nun kann ich das Teil sehen.... dummerweise verschlüsselt.
Ich wollte nun den Sketch "HM-PBI-4-FM" vom Jérôme nehmen.... der ist leider zu groß...

ZitatDer Sketch verwendet 18684 Bytes (130%) des Programmspeicherplatzes. Das Maximum sind 14336 Bytes.

(Im Modul ist ein Atmega 168PA drin). Es gab irgendwo mal einen Beitrag wie man da vielleicht weiterkommt, ich finde den aber nicht mehr.

Besteht überhaupt eine Möglichkeit den Sketch so weit abzuspecken das man 4K Programmspeicher spart?


- Asus PN 41- mapleCul V1.24.01 - FHEMDuino - FHEM 6.2 - HUE Bridge - ESPEasy Bridge -  Milight HUB - smartVISU 3.40 -