nanoCUL und intertechno

Ohne mir jetzt cul2mqtt angeschaut zu haben:

Der Teil des Script is das onMessageArrived des mqtt. In deinem Codefetzen wird versucht herrauszufinden, ob es sich bei einer Nachricht auf dem abonierten Topic um das Topic config.name + '/home/*/* handelt, das wird per regulärem Ausdruck geprüft.

Irgendwo wird es ein subscribe geben was wahrscheinlich einfach auf config.name hört. Dadurch wird dann bei jeder Message auf diesem Topic das “on”-event ausgelöst und der code prüft ob das Topic (zB) config.name + '/home/foo/bar/' ist.

so long,
p

Hi @pmayer,

genau so habe ich mir das auch schon gedacht. Komisch ist nur, dass diese paar Zeilen bei mir irgendwie nicht funktionieren. Meine Variablen in meinem Test sind zur Laufzeit sind wie folgt gefüllt:
pattern: '^/cul/home/(.+)/(.+)'
topic: ‘/cul/home/mqttsw1’

Müsste ich dann mit diesern Funktion in parsed nicht irgendwie einen Inhalt zurück bekommen?

Im nachfolgenden wird dann nämlich folgendes ausgeführt:

Preformatted textlog.debug(‘mqtt >’, topic, parsed[1], parsed[2], value);

so wie ich das sehe, müsste in parsed[1] so etwas wie mqttsw1 enhalten sein und parsed[2] wäre dann für mein Verständnis leer, da mein Topic keine vierte Ebene beseitzt.

Aber irgendwie erhalte ich hier einfach gar nichts zurück. Ich werde die Zeilen nun mal in ein eigenes Script auslagern und damit mal ein wenig spielen. Vielleicht verstehe ich dann mehr wie genau das funktiniert.

Viele Grüße
Dennis

PS: Man merkt schon das ich mehr in der SAP-Welt lebe und in ABAP programmiere. Aber so langsam aber sicher lerne ich ja auch bei Javascript dazu :slight_smile:

Schau mal hier: https://jsfiddle.net/0b4bzgno/
Öffne mal die Konsole in deinem Browser und drück mal den Button “Test”.

Array [ "test/home/foo/bar/", "foo", "bar/" ]

//edit:
Ahh… moment. Das Pattern will zwingend zwei Elemten haben. (.+) bedeutet ein belibiges Zeichen (.), ein oder beliebig viele Male wiederholt (+). Kein oder beliebig viele Male wäre ein *. Somit geht dein Topic nicht mit diesem RegExp.

Oha, da ging mir nun aber ein echt großes Licht auf. Ich hab es gerafft… uff, das hat aber wirklich nen Moment (nagut, vielleicht auch zwei Momente) gebraucht. Das einizige was ich leider nocht nicht ganz verstehe ist, warum bei dem pattern ein ^ vorangestellt wird.

Ich hoffe mein langer Lern-Thread wird dem einen oder anderen vielleicht auch einmal behilflich sein :wink:

Pfia di
Dennis

^ beschreibt den Anfang eines Strings, $ das Ende.

Wenn ich jetz zum Beispiel möchte, dass mein String NUR aus kleinen Buchstaben bestehen darf, wäre das Pattern folgendermaßen: ^[a-z]+$.

Auch meinerseits gibt es gute Nachrichten: Der Empfang von Paketen funktioniert jetzt für alle V3-Geräte und für die Fernbedienung von Elro. Die anderen auf der fhem-Seite beschriebenen Fernbedienungen baue ich morgen noch dazu ;-). Dann gibt’s auch eine kleine Anleitung.

@sathya

Das sind ja super Nachrichten! Ich werde im Laufe der Woche auf jeden Fall ein paar Minuten Zeit finden und deine Version einmal testen. Wäre klasse, wenn du bei deiner Anleitung evtl. noch darauf eingehen könntest, wie ich eine zweite Instanz in homegear anlegen kann. Ich hab nämlich ein HM-CFG-USB-Stick am laufen und würde als zweite Instanz dann einmal meinen CUL mit einbinden.

Pfia di
Dennis

Hallo,

fertig ;-). Im nächsten Nightly ist alles drin. Es sollte in ein paar Stunden online sein. Bin gespannt auf eure Rückmeldung…

Die Anleitung findet ihr auf doc.homegear.eu.

Einfach das Intertechno-Modul installieren und anschließend den CUL in “/etc/homegear/families/intertechno.conf” konfigurieren - siehe Anleitung. Falls irgendetwas noch unklar sein sollte, nicht zögern zu fragen ;-).

Viele Grüße

Sathya

4 posts were split to a new topic: SD-Karten-Sicherung

Hey @sathya,

ich hätte nun dein neues nightly am laufen. aber mir ist leider nicht so ganz klar, wie ich dann einen befehl sende. also ich habe mal ein device wie beschrieben angelegt. aber wie kann ich nun an homegear zu dieser serialnummer eine action schicken (also on oder off)?

Besten Dank schon einmal!

Pfai di
Dennis

Hallo @Dennis,

zum Testen am einfachsten über die Konsole mit:

homegear -e rc '$hg->setValue(PEER_ID, 1, "STATE", true);'
sleep 2
homegear -e rc '$hg->setValue(PEER_ID, 1, "STATE", false);'

“PEER_ID” ersetzt du mit der ID des Schaltaktors. Diese findest du über das Homegear CLI:

homegear -r
fs 16
ls

Die ID wird dir dann in der linken Spalte angezeigt.

Viele Grüße

Sathya

Hallo @sathya,

endlich komme ich ans testen, bisher leider ohne Erfolg.
Ich habe die Steckdosen so wie weiter oben beschrieben konfiguriert. Ich bekomme als Adressen die 303, 311, und 315 wenn ich das nach der Anleitung umrechne.
Also habe ich drei Devices definiert: so siehts dann aus:
(Family)> ls
ID │ Name │ Serial Number │ Address │ Type │ Type Description
─────────┼───────────────────────────┼───────────────┼──────────┼──────────┼───────────────────────────────────────────────
│ │ │ │ │
15 │ │ ITD00000303 │ 00000303 │ 000001 │ Intertechno Switch
16 │ │ ITD00000311 │ 00000311 │ 000001 │ Intertechno Switch
17 │ │ ITD00000315 │ 00000315 │ 000001 │ Intertechno Switch
18 │ │ ITD00000009 │ 00000009 │ 000024 │ Elro AB440 Remote
─────────┴───────────────────────────┴───────────────┴──────────┴──────────┴───────────────────────────────────────────────

Wenn ich dann einen Befehl schicke an die Adresse 303 sehe ich im Log aber folgendes:

10/22/16 00:22:07.276 Module Intertechno: Info: STATE of peer 15 with serial number ITD00000303:1 was set to 0x00.
10/22/16 00:22:07.277 Module Intertechno: Intertechno CUL "My-IT-CUL-1": Info: Sending (My-IT-CUL-1): FF000000FFF0

10/21/16 23:48:55.485 Module Intertechno: Info: STATE of peer 15 with serial number ITD00000303:1 was set to 0x01.
10/21/16 23:48:55.486 Module Intertechno: Intertechno CUL "My-IT-CUL-1": Info: Sending (My-IT-CUL-1): FF000000FFFF

Der erste Befehl sollte ausschalten, der zweite wieder ein.
Das sind aber nicht die Bitfolgen, die ich erwarten würde. Was habe ich denn da falsch verstanden?

Danke und Gruß
jogant

Hey @sathya,

also ich habe irgendwie das Problem, das ich mit homegear keine Berechtigung auf meinen CUL bekomme. Ich habe im Error-Log folgendes immer wieder stehend:

10/22/16 11:25:48.005 Module Intertechno: Intertechno CUL “MYCUL”: Error in file PhysicalInterfaces/Cul.cpp line 201 in function void MyFamily::Cul::listen(): Couldn’t open device “/dev/ttyUSB0”: Permission denied
10/22/16 11:25:48.005 Module Intertechno: Intertechno CUL “MYCUL”: Warning: Connection to device closed. Trying to reconnect…

Wie bekomme ich denn die entsprechende Berechitung dafür?

Pfia di
Dennis

Hi @Dennis,
versuche mal den homegear User in die Gruppe dialout einzutragen.

Gruß
jogant

Hi @jogant,

danke für den Hinweis, da hätte ich auch mal selber drau kommen können :frowning:

Nun läuft das ganze mal ohne ein Error-Log ab, mein homgear.log sieht nun wie folgt aus:

10/22/16 13:39:56.790 Info: CLI connection accepted. Client number: 38
10/22/16 13:39:56.791 Script Engine Server: Info: Starting script “/var/lib/homegear/scripts/inline.php” with id 3.
10/22/16 13:39:56.800 Script Engine Server: Info: Client number 0 is calling RPC method: setValue Parameters:
(Integer) 804
(Integer) 1
(String) STATE
(Boolean) 1
10/22/16 13:39:56.805 Info: Script with id 3 finished with exit code 255

Aber geschaltet an der Dose wird da leider nix. Was mach ich da denn nur falsch?

Pfia di
Dennis

Das hatte ich ja auch schon festgestellt. Ich denke, dass die Umrechnung in die IT Codes noch nicht ganz richtig ist. Ich habe mir den Code in Homegear aber noch nicht angesehen. Vielleicht fällt mir ja was auf. Aber ich denke, Sathya weiß Bescheid.

Hallo @jogant,

da hat sich ein Fehler eingeschlichen. Bei der Anlage der Geräte werden keine Dezimalzahlen verarbeitet. Gib bei der Geräteanlage statt “303” “12F” ein. Also z. B.:

pc My-IT-CUL-1 1 12F

Im nächsten Nightly ist das auch korrigiert.

@Dennis: Bei dir ist deine peerID ungültig (804). Ist das Gerät wie in der Dokumentation beschrieben angelegt? Poste mal die Ausgabe von:

homegear -r
fs 16
ls

Sowie den eingestellten DIP-Code. An Stelle der 804 trage dann die ID ein, welche nach “ls” in der ersten Spalte erscheint.

Viele Grüße

Sathya

Hallo @sathya,

ich werde das heute Abend mal testen. Ich habe aber noch eine Frage zu Adressierung: ich habe noch ein paar Steckdosen von REV Ritter, die sich unter anderem mit folgenden Codes schalten lassen: > 1FFF1FF0FF, gefolgt von FF für ON und 00 für OFF. Wie ließe sich denn diese Adresse übersetzen?

Vielen Dank und viele Grüße
jogant

Hallo @jogant,

die REV-Ritter-Steckdosen werden noch nicht unterstützt. Könntest du mir noch einmal die screen-Ausgabe der Fernbedienungspakete senden, damit ich sehen kann, wie die culfw die Pakete kodiert? Dann baue ich die ein. Die Einsen stören mich gerade noch etwas, aber da fällt mir etwas ein…

Viele Grüße

Sathya

Hallo @sathya,

die ELRO Steckdosen konnte ich jetzt erfolgreich schalten. Super! Den Empfang der Pakete von der Fernbedienung habe ich noch nicht getestet, schaue ich mir aber gleich mal an.
Ich bekomme jetzt aber für meine vier IT-Devices (drei Steckdosen und die Fernbedienung) wieder regelmäßig die Meldung über neue Devices. Die anderen Komponenten sind nicht betroffen. Ich nutze gerade Version 0.7.0-1443.
Kannst du da auch noch mal nach schauen.

Ich forsche nochmal nach den Paketen der REV-FB. Bislang habe ich von culfw keinerlei Pakete von der FB empfangen können, weder mit X21 noch mit X67.

Viele Grüße
jogant