[läuft]Signalduino: Conrad Wetterstation KW9110 als Ausgabedisplay nutzen

Begonnen von dora71, 25 November 2018, 11:00:16

Vorheriges Thema - Nächstes Thema

dora71

Zitat von: dora71 am 26 Januar 2019, 13:40:19
Den Sensor konnte ich bis dato noch nicht wieder anflanschen.

Hallo Ralf,

da habe ich mich wohl etwas missverständlich ausgedrückt ... ich meinte das mehr hardwaretechnisch (den Sensor habe ich nicht mehr aus der Kiste ausgepackt und versucht, ihn mit FHEM einzulesen) ... dass es damit tatsächlich Probleme gab/gibt, war mir nicht bewusst. Das ist ja jetzt echt ein Zufall  :o zur Zeit benutze ich den Sensor auch gar nicht (mehr), mir ist es wichtig, die Wetterstation / Anzeige für meine Zwecke zu "erweitern".

Ich denke aber, dass der auch nach wie vor funktionieren wird, da ja jetzt die "neue Aussendemethode" mit sendMsg auch funktioniert.
Witzigerweise ändern sich seitdem auch wieder die Vorhersagesymbole  ??? ob die allerdings richtig sind, kann ich noch nicht beurteilen.

Gruß Rainer

Ralf9

Zitatja jetzt die "neue Aussendemethode" mit sendMsg auch funktioniert.
Bitte teste mal ob es mit der ID 0.3 genausogut funktioniert:
set sduino433 sendMsg P0.3#100101000010110111000000100110111100#R6#C500

Gruß Ralf

FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

dora71

Hallo Ralf,

0.3 scheint mein System nicht zu kennen. Schreibfehler oder bin ich nicht aktuell genug?

set sduino433 sendMsg P0.3#100111000000011110000000011001011101#R6#C500 : sduino433: sendmsg, unknown protocol: 0.3

Gruß Rainer

Ralf9

Du bist anscheinend nicht aktuell genug, die ID 0.3 gibt es seit dem 19.12.
In der protocollist kannst Du sehen ob es die 0.3 bei Dir gibt.
Entweder "get protocollist" oder im Information menu "Display protocollist"
Die aktuelle bekommst Du damit
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r33/controls_signalduino.txt

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

dora71

Hallo Ralf,

habe Deinen Update-Befehl eingefügt, bin aber jetzt am schwimmen, da ich noch in Erinnerung habe, dass ich die FHEM/00_SIGNALduino.pm vom Update ausgeschlossen hatte.

Meine Konstellation ist zur Zeit wie folgt:

version V 3.3.2.1-rc4 SIGNALduino cc1101 - compiled at Sep 29 2018 00:13:24
versionmodul v3.3.2ralf_11.09.


Außerdem sagt er mir beim Update, dass es eine neue Firmware gibt.
Wie ist jetzt am besten das weitere Vorgehen, denn trotz Deines Update-Befehls zeigt er mir nicht das Protokoll 0.3 an (wegen Firmware?).
Soll ich alles updaten und die "Original 00_SIGNALduino.pm" wieder mit einbeziehen?

Gruß Rainer

Ralf9

Du kannst mit
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r33/controls_signalduino.txt
updaten und die 00_SIGNALduino.pm mit aktualisieren.

Versionmodul ist aktuell: "v3.3.3-dev_30.12."

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

dora71

Hallo Ralf,

das Update hat funktioniert 8) und es läuft mit der Protokollversion 0.3. Witzigerweise konnte der KW9110, als ich "nur" 2 der 3 möglichen Temperaturanzeigen mit Protokoll 0.3 augesendet hatte (die 3. war noch auf Protokoll 0 gestellt), damit nicht (mehr) umgehen. Oder es kam vom Update.

Wie auch immer, mit 0.3 läuft es. Danke @alle für die Hilfe.

PS: Seit dem Update empfange ich jetzt andere ganz interessante (?!) Sender. Was hat es denn mit den 55,7 auf sich, ist das ein "Übersetzungsfehler"? Die Sender sind auf jeden Fall nicht von mir.

ABS700_2 T: 8.5
ABS700_3 T: 55.7
ABS700_4 T: 8.5
ABS700_6 T: 8.5
TCM97..._0 T: 55.7
TCM97..._1 T: 55.7
TCM97..._5 T: 55.7
Unknown Code: 0378B5


Gruß Rainer

Ralf9

Hallo Rainer,

ich bin gerade dabei auch den KW9015 in das 14_CUL_TCM97001.pm Modul einzubauen.
Ich könnte dazu von Deinem KW9010 noch ein paar Nachrichten gebrauchen, sie sehen ungefähr so aus:
READredu: MS;P1=463;P2=-4056;P3=-1978;P4=-8937;D=214131312131312121213131213121313131213121213131313131213121313121213121312;CP=1;SP=4;O;m=0;
Decoded MS Protocol id 0.3 dmsg s2728B0535000 length 40


Wie viele Kanale hat der KW9010?
Evtl lässt sich der KW9010 und der KW9015 (immer Kanal 0?) über den Kanal unterscheiden

Ich könnte folgende Nachrichten gebrauchen mit Angabe ob die Batterien voll oder leer sind.

Für jeden Kanal eine Nachricht.

Eine Nachricht mit gedrückter Tx Taste

Bei einer Nachricht auch mit Angabe vom Temp und Hum

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

dora71

Hallo Ralf,

ich benutze schon seit gefühlten Ewigkeiten den Sender der Wetterstation nicht mehr.

Vielmehr benutze verschiedene Werte aus FHEM (Kanal 1: Homematic Außensensor, Kanal 2: Garagentemperatur und Luftfeuchte über MQTT eingespeist und Kanal 3 ist die Vorhersage von Proplanta) und lasse mir die an der Wetterstation anzeigen.

Soweit ich mich erinnern kann, hatte der Sender auch 3 Kanäle.

Falls es Dir etwas nützt, kann ich Dir meine selber zusammengefrickelte Funktion, über die ich die Wetterstation beschicke, zukommen lassen. Nützt Dir das etwas? Da solltest Du doch alle Infos herausbekommen mit.

Gruß Rainer

Ralf9

ZitatFalls es Dir etwas nützt, kann ich Dir meine selber zusammengefrickelte Funktion, über die ich die Wetterstation beschicke, zukommen lassen. Nützt Dir das etwas? Da solltest Du doch alle Infos herausbekommen mit.
Ich möchte mir Deine Funktion gerne anschauen.
Du kannst Sie mir per email schicken oder hier posten.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

dora71

Hallo Ralf,

ich stelle die Funktion hier gerne zur Verfügung. Meine bescheidenen Programmierkenntnisse in Perl möge man mir verzeihen. Untergebracht ist die Funktion in der myUtils.
Einiges habe ich kommentiert in der Hoffnung, dass ich mich später wieder dran erinnern kann.

Hoffentlich kannst Du etwas davon brauchen. Die letzten Zeilen habe ich seit längerem auskommentiert, da das Protokoll vom Signalduino schon erkannt wurde und übernommen werden konnte.

Ein Aufruf, der auf Kanal 3 das ProPlanta Wetter für morgen setzt, sieht z. B. folgendermaßen aus:

{fhem("set sduino433 sendMsg P0.3#".KW9010bits(ReadingsNum('WetterProplanta','fc1_tempMax',0),ReadingsNum('WetterProplanta','fc1_chOfRainDay',10),3,0)."#R6#C500")}


Gruß Rainer

sub KW9010bits($$$$) {
  my ($temp, $hum, $kanal, $trendinput) = @_;
 
  # Sicherheitsabfragen, damit nur gültige Werte dargestellt werden
  if ($temp > 75.0) {
    $temp = 75.0;
  }
  if ($hum > 99) {
    $hum = 99;
  }
  elsif ($hum < 5) {
    $hum = 5;
  }
  if ($kanal < 1 || $kanal > 3) {
    $kanal = 3;
  }
 
  # Log 1, "KW9010-Werte: ".$temp." ".$hum." ".$kanal." ".$trendinput;
 
  my $tempfinal = $temp*10;
  my $humfinal = $hum+156;

  my $forcedsend = "0"; # Bit 12
  my $trend = "00"; # Bit 10-11, Voreinstellung: Tendenz gleichbleibend
  if ($trendinput > 0) {
    $trend = "01"; # Tendenz steigend
  }
  if ($trendinput < 0) {
    $trend = "10"; # Tendenz fallend
  }
 
  my $bat = "0"; # Bit 9, Batterie ok == 0
  my $beginn1 = "1001"; # Random-ID Part1, Bits 1-4
  my $beginn2 = "00"; # Random-ID Part2, Bits 7-8

  my $bintemp = "";
  if ($tempfinal >= 0) {
    $bintemp = reverse sprintf "%012b", $tempfinal;
  }
  elsif ($tempfinal < 0) {
    $bintemp = substr((reverse sprintf "%b", $tempfinal),0,12);
    #print "Negative Temperatur - binär: ".substr($bintemp,0,12);
  }

  my $binhum = reverse sprintf "%08b", $humfinal;

  my $prefinal = $beginn1.sprintf("%02b", $kanal).$beginn2.$bat.$trend.$forcedsend.$bintemp.$binhum;
  my $checksum = "0";

  # Checksumme berechnen: Halbbytes rückwärts addieren, Ergebnis invertieren
  for (my $i=0; $i < length $prefinal; $i++) {
    if (($i+1) % 4 == 0) {
      $checksum += substr($prefinal,$i,1)*8;
    }
    elsif (($i+1) % 4 == 1) {
      $checksum += substr($prefinal,$i,1);
    }
    elsif (($i+1) % 4 == 2) {
      $checksum += substr($prefinal,$i,1)*2;
    }
    elsif (($i+1) % 4 == 3) {
      $checksum += substr($prefinal,$i,1)*4;
    }
    #print "i = $i, Checksumme = $checksum\n";
  }
  my $checksumfinal = reverse sprintf "%04b", $checksum % 16;
  my $finalbincode = $prefinal.$checksumfinal;
 
  # hier würde der reine Binärcode zurückgegeben
  # Log 1, "Binärcode: ".$finalbincode;
  return $finalbincode;
  # weitere Umsetzung für die RAW-Aussendung mit Signalduino,
  # falls das Protokoll mal irgendwann stimmt, kann dieser Schritt entfallen
  # Pulslänge: P1=1000ms, P2=-2000ms, P3=-4000ms, P4=-9000ms
  # "0" = P1P2, "1" = P1P3, Startbit = P1P4, ist aber im RAW Command drin
  #my $finalrawcode = "";
  #for (my $i=0; $i < length $finalbincode; $i++) {
  #  if (substr($finalbincode,$i,1) eq "0") {
#   $finalrawcode .= "12";
# }
# elsif (substr($finalbincode,$i,1) eq "1") {
#   $finalrawcode .= "13";
# }
#  }
  # Log 1, "RAW-Code: ".$finalrawcode;
#  return $finalrawcode;
}

Ralf9

Hallo Rainer,

danke, damit kann ich mir die gewünschten Nachrichten selbst erzeugen, bis auf den Trend ist nun alles klar.

  if ($trendinput > 0) {
    $trend = "01"; # Tendenz steigend
  }
  if ($trendinput < 0) {
    $trend = "10"; # Tendenz fallend
  }


Kannst Du bitte mal nachprüfen was bei $trendinput = 1 (steigend) und was bei $trendinput = -1 (fallend) auf der Wetterstation angezeigt wird 

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

dora71

Hallo Ralf,

ZitatKannst Du bitte mal nachprüfen was bei $trendinput = 1 (steigend) und was bei $trendinput = -1 (fallend) auf der Wetterstation angezeigt wird 

bei $trendinput = 1 wird auf der Wetterstation unter der Temperaturanzeige ein Pfeil von unten links nach oben rechts dargestellt
bei $trendinput = -1 wird auf der Wetterstation unter der Temperaturanzeige ein Pfeil von oben links nach unten rechts dargestellt

wenn die beiden Bits auf 0 stehen, wird ein waagerechter Pfeil angezeigt.

Es gibt auch noch eine Trendanzeige für die Luftfeuchte, ebenfalls als Pfeil dargestellt. Da habe ich aber bis heute nicht rausgefunden, ob das auch über die Funktelegramme kommt oder ob die Wetterstation das intern bildet. Eigentlich sind laut Protokoll schon alle Bits belegt.
Da sich dieser Pfeil aber bei mir ändert trotz gleich bleibenden Funktelegrammen, denke ich, letzteres ist der Fall.

Hoffe, ich konnte helfen.

Gruß Rainer