Anbindung an openHCAN

Begonnen von GU!DO, 11 Oktober 2017, 10:30:09

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: GU!DO am 04 November 2017, 08:52:07
Noch was:

Ich habe mir überlegt, dass es vielleicht sinnvoll ist, das Array mit der Zuordnung der HEX-IDs zu den HCAN-Befehlen, und den Hash , der die lokale Installation abbildet im physischen Device zu erstellen.

Zum einen sind die beiden ja von der Hardware bzw. lokalen Installation abhängig und passen damit gut da herein, zum anderen, ist das für den hash der die lokale Installation abbildet, sinnvoll.
Dieser ist ja mehr oder weniger statisch, und muß so nicht bei jedem erstellen logischen Device mit angegeben werden.

Mir ist allerdings nicht klar, wie ich die beiden im physischen Device so anlege, dass ich sie im logischen wieder abrufen kann.

Vielleicht hättest Du dazu ein Beispiel?!?

Danke schonmal...

Ich würde es so machen. Erstmal als Hash nicht als Array

Im physischen Zuordnung hcan Befehle zu Hex
Im logischen Hex zu hcan Befehl.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Ich glaube da haben wir aneinander vorbei geredet:

Ich habe ja schon ein Array für die Nachrichten auf dem Bus. Die ID entspricht dem HEX-Wert der gesendet wird (konvertiert in Dec) und der Inhalt ist der zugehörige Befehl im Klartext.

In den Hash wollte ich das Installations.xml File abbilden. Dort ist z.B. abgelegt: LampeFlur Gruppe 70

Wenn die Instanz des logischen Devices als Lampe konfiguriert ist:
- hat der user nur ON/OFF zur Auswahl dann
- kann der user im logischen Device zwischen allen im Installations Hash definierten Lampen diejenige auswählen, die er mit der aktuellen Device-Instanz steuern möchte.
- diese Instanz sendet dann ein ON oder OFF an das physische Modul.

Das physiche Modul weiß dann: Lampen-Device, Gruppe und ON und kann die entsprechenden Hex Werte heraussuchen und auf den Bus senden.

Wird der Befehlssatz in HCAN erweitert, oder das Installation.xml File geändert, muß das IMHO nur einmalig das physische Device mit einem reload upgedatet werden.

GU!DO

Hallo Marko,

ich verzweifele so langsam. Hab den ganzen Tag dran geschraubt, aber es will nicht.
Irgend etwas fehlt.

Wenn ich im HCAN Modul den Set Befehl anklicke, erzählt er mir im Log, dass IOWrite ausgeführt wird, aber im HCAN_hcand kommt nix an?!?

Ich habe HCAN im HCAN_hcand als Client eingetragen, und die Forward Deklarationen im Client ebenfalls gemacht.

Es wäre nett, wenn Du nochmal drüberschauen könntest.

Vielen Dank schonmal

Guido

CoolTux

Juhu

Trage mal in das physische Modul ein

sub ..._Initialize($) {

   ...
    $hash->{Clients}    = ":HCAN:";
    $hash->{MatchList}  = { "1:HCAN"      => '.*' };
   ....


Und ins logische

sub ..._Initialize($) {

   ...
   $hash->{Match}      = '.*';
   ...


Das sollte es eigentlich schon gewesen sein.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Also den:
$hash->{Clients}    = ":HCAN:";

Hatte ich sogar schon!  ;D

Aber auch mit den anderen schweigt  HCAN_hcand leider...

Noch `ne Idee???

CoolTux

Muss ich mir heute Abend in Ruhe anschauen. Werde das vor allem Mal in mein Testsystem einbauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Dass wäre schön, vielleicht sehe ich mir nochmal an, ob der Rückweg nicht so steinig ist?!?

Ab wann würdest Du den frührestens dran gehen können?

Dann präsentieren ich Dir vorher die Körner, die das blinde Huhn vielleicht noch gefunden hat...

CoolTux

Denke nicht vor 21:30 Uhr. Bringe den kurzen ins Bett
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

OK. Dann schaue ich mal, in wie weit mich meine Kurzen bis dahin machen lassen...

CoolTux

Schau dir andere Module an. Hast du das IODev im logischen Modul gesetzt und Initialisiert?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

Oh Mist, hab Deine Frage erst jetzt gesehen.

Hat das Forum eigentlich irgend eine verborgene autoupdate Funktion oder irgend etwas, das bei geöffnetem Fenster ohne F5 zu drücken darauf hinweist, dass ein neuer Betrag eingegangen ist?!?

IODev hab ich nicht gesetzt. Hatte das:
ZitatDas Attribut IODev muss nur gesetzt werden, wenn mehr als ein physisches Device fähig ist, Signale von diesem logischen Device zu empfangen.

so verstanden, dass ich das nur bei mehreren "hcand" benötigen würde.

Ich blicke aber nicht durch, auf welchen Wert das gesetzt werden muß. Name des phyischen Devices?!?

CoolTux

Schau dir Mal das Modul GardenaSmart an. Ich glaube da erkennt man alles ganz gut was wie gebraucht wird.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

GU!DO

VielenDank für die Blumen  :), aber ich glaube, du überschätzt meine perl Fähigkeiten maßlos.  :'(

Diese Nummer z.B. kann ich mir z.B. nur rudimentär erklären:


  0     foreach my $param ( @a ) {
  1         if( $param =~ m/IODev=([^\s]*)/ ) {
  2 --------
  3             $iodev = $1;
  4             splice( @a, $i, 3 );
  5             last;
  6         }
  7 --------
  8         $i++;
  9     }


Ich würde sagen, er prüft, ob ein Wert im array IODev enthält? Und fügt dann mittels splice irgendwas, irgendwo ein.
Keine Ahnung. Ich habe in keinem meiner Bücher diese Syntax gefunden - Sorry! Eine Stunde für nix.
Letztendlich habe ich beschlossen, dass der Code für mich nicht relevant ist und hab den Rest eingefügt.

Die gute Nachricht, das Modul wird geladen, die schlechte, es wird immer noch nix vom log. zum phys. übertragen.

Ich habe jetzt den ganzen Tag an dem Kram gesessen, und nicht mal Ansatzweise `ne Idee wo es noch hapert.

Mir graut es schon vor der Lieferung der Daten vom phys. an das log. Modul.
Im Gegensatz zu der Nummer von heute, habe ich da nämlich nicht mal `ne Idee wie man es anfangen soll...  :-[

Na ja - als Putzmann könnte ich auf jeden Fall gehen. Habe die Module nochmal gründlich gereinigt, Damit Du dich - hoffentlich - wie zuhause fühlst.

Viel Glück und schon mal vielen Dank.

Ich schaue nachher nochmal rein, muß erstmal was anderes sehen. Mir raucht der Schädel...

GU!DO

Ups, die Files - fast vergessen!

CoolTux

Lege gerade die Kinder ins Bett und schaue dann Mal.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net