Jump to content

openhab Integration


[[Template core/global/global/poll is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

Recommended Posts

  • Replies 526
  • Created
  • Letzte Antwort

Top Posters In This Topic

  • 2 weeks later...

Hallo OH Gemeinde,

 

ich bin schon lange aktiv in der OH community und dort auch unter RAK erreichbar. Ich betreibe 2 OH Anlagen und möchte gerne mit Tinkerforge nun mein Wohnmobil smart machen.

 

Ich lese mich noch ein wenig ein. Die Hardware ist da und läuft auch schon mit dem BrickViewer. Nächster Schritt ist einen neuen Pi3B+ aufzusetzen mit OH und brickd (beides in jeweils einem Docker Container) und dann das Binding mal in Angriff nehmen.

 

Ich freue mich hier mit euch an dem Thema weiter zu kommen.

 

Gruss

Ralf

Link zu diesem Kommentar
Share on other sites

Cool ich bin an einem gleichen Projekt!

 

Hallo OH Gemeinde,

 

ich bin schon lange aktiv in der OH community und dort auch unter RAK erreichbar. Ich betreibe 2 OH Anlagen und möchte gerne mit Tinkerforge nun mein Wohnmobil smart machen.

 

Ich lese mich noch ein wenig ein. Die Hardware ist da und läuft auch schon mit dem BrickViewer. Nächster Schritt ist einen neuen Pi3B+ aufzusetzen mit OH und brickd (beides in jeweils einem Docker Container) und dann das Binding mal in Angriff nehmen.

 

Ich freue mich hier mit euch an dem Thema weiter zu kommen.

 

Gruss

Ralf

Link zu diesem Kommentar
Share on other sites

Hallo rak,

 

Theo veröffentlicht hier seine aktuellen Snapshot-Entwicklungs-Stände per download-Link.

 

dies dürfte der letzte Stand sein org.openhab.binding.tinkerforge-2.5.0-12-SNAPSHOT.jar  (link im zitierten Post von Theo, unten).

Weiter findest du auch einen Link zu Theos Readme. Dort findest du beispiel für die Rules und ob ein Bricklet schon eingebunden ist.

So wie ich das sehe ist Theo mit dem Outdoor noch nicht fertig

 

theo

Sr. Member

****

Beiträge: 307

Profil anzeigen  Twitter  E-Mail  Private Mitteilung (Offline)

 

Re: openhab Integration

« Antwort #443 am: März 28, 2019, 20:31:26 »

Zitat

Ein neuer Snapshot ist da: https://bintray.com/theoweiss/generic/download_file?file_path=org.openhab.binding.tinkerforge-2.5.0-12-SNAPSHOT.jar

 

Support für:

* LCD20x4

* OLED128x64

* OLED128x64V2

* OLED64x48

 

Die Bedienung des display-Channels ist genauso wie beim LCD128x64 https://github.com/theoweiss/openhab-tinkerforge2-configuration-examples#display.

 

Das LCD hat zusätzlich noch 3 Button-Channels. Actions für clearDisplay o.ä. werden nachgeliefert.

 

Beispielregeln gibt es noch keine, ihr könnt euch aber an den alten Beispielen orientieren: https://github.com/theoweiss/openhab2-tinkerforge-configuration-examples/blob/master/weatherstation/rules/tf.rules

Was dort mit "TFNUM<20>" formuliert ist, ist jetzt "{2,0}".

 

Viel Spaß damit.

Moderator informieren    Gespeichert

https://github.com/theoweiss/openhab-tinkerforge2-configuration-examples/blob/master/README.md

 

viele Grüsse

Stefan

Link zu diesem Kommentar
Share on other sites

Hallo Ralf,

Hallo Stefan et.al.,

 

ja ich lese mit. Dummerweise bin ich gerade durch einen defekten Rücken lahmgelegt. Leider zieht sich die Sache etwas hin, deshalb wird es auch noch eine Weile dauern bis ich am Binding weiter machen kann.

Ein bisschen was geht zwar, aber leider bekomme ich das Binding mit dem neuen bnd OH2 Build nicht zum Laufen. Der aktuellste Code ist jetzt im tinkerforge4 branch: https://github.com/theoweiss/openhab2-addons/tree/tinkerforge4/bundles . Das baut auch mit Maven aber in der Demo App funktioniert es noch nicht. Warum auch immer.

Wie die Binding-Entwicklung funktioniert ist hier beschrieben: https://github.com/theoweiss/tinkerforge-client-codegen

 

So long,

Theo

 

Link zu diesem Kommentar
Share on other sites

Jetzt hab ich den Fehler gefunden und konnte ein neues Binding bauen: https://bintray.com/theoweiss/generic/download_file?file_path=org.openhab.binding.tinkerforge-2.5.0-13-SNAPSHOT.jar

 

Möglicherweise läuft das Binding jetzt nur noch mit openHAB 2.5 SNAPSHOT, das habe ich nicht probiert.

 

Ansonsten sind nur kleine Änderungen enthalten:

- die Buttons am LCD20x4 sollten jetzt funktionieren

- das NFC Bricklet sollte jetzt auch funktionieren

 

Gruß,

Theo

 

Link zu diesem Kommentar
Share on other sites

Hallo Theo

 

ich hab über das verlängerte Wochenende Dein neues Binding mit

 

-LCD20x4

-LCD128x64

-Motion-Dedector V2

-NFC Bricklet

getestet.

 

Aktuell arbeite ich mit

-openHABian V1.4.1

-OpenHAB 2.5.0-Snapshot-Build 1607

-tinkerforge-2.5.0-13-SNAPSHOT

-Firmware alles TF Komponenten auf aktuellen Stand (08.06.2019)

 

Es wird wieder etwas viel zu lesen ;-)

 

Test: Background-Beleuchtung des LCD 20x4 (Funktion erfolgreich getestet)

Eintrag in der ITEM.items Datei

 

Switch LCD20x4_BL "LCD20x4 Backlight [%s]" (TestTF) { channel="tinkerforge:lcd20x4:f4a5fb45:abc:backlight", channel="serialbutton:button:mybutton:button" [profile=rawbutton-toggle-switch] }

 

 

Frage:

Theo, Ich hab wie von Dir empfohlen das Beispiel (siehe unten) angepasst.

Color Bedroom_Light { channel="hue:0210:1:bulb1:color", channel="serialbutton:button:mybutton:button" [profile=rawbutton-toggle-switch] }

Für das Background des LCD 20x4, hat auch alles geklappt (für das LCD128x64 Background nicht siehe weiter unten).

Was mir nur nicht klar war, wo bekomme ich den Input für

channel="serialbutton:button:mybutton:button"

her. (habe daher 1:1 aus dem genannten Beispiel übernommen)

Die Informationen auf der openhab-Seiten waren da etwas spärlich

Ist dieser Text nach einer bestimmten Syntax aufgebaut ?

 

 

Abfragen eines Button-Channel in einer Rule >> Dies hat funktioniert

Schreiben eines Text auf das LCD 20x4 >> Dies hat nicht funktioniert.

 

Eintrag in der ITEM.items Datei

String LCD20x4_text "LCD20x4 Text [%s]" (TestTF) {channel="tinkerforge:lcd20x4:f4a5fb45:abc:display" }

 

Beim ersten Test habe ich die Rule für das LCD128x64 angepasst

rule "test-button-lcd20x4"

when

Channel "tinkerforge:lcd20x4:f4a5fb45:abc:button0" triggered RELEASED

then

val actions20 = getActions("tinkerforge", "tinkerforge:lcd20x4:f4a5fb45:abc")

actions20.writeLine(1, 1, "Hello Openhab")

end

auch mit

„val actions20 = getActions("tinkerforge", "tinkerforge:lcd20x4:f4a5fb45:abc:display")
hatte ich keinen Erfolg

 

Fehler Meldung im LOG-File

2019-06-09 19:42:42.561 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'test-button-lcd20x4': Instance is not an LCD128x64BrickletActions class.

 

Beim zweiten Test habe ich die alten Rule-Beispiele aus Openhab1 abgeleitet

 

rule "test-button-lcd20x4"

when

Channel "tinkerforge:lcd20x4:f4a5fb45:abc:button0" triggered RELEASED

then

LCD20x4_text.sendCommand("TFNUM<00>Test old")

end

 

Fehlermeldung um LOG-File

2019-06-09 20:17:50.661 [ERROR] [lient.devices.lcd20x4.DisplayChannel] - invalid command format

org.m1theo.tinkerforge.client.tools.Tools$LinePositionParseException: prefix is missing

 

Theo, was mache ich falsch ?

Wo liegt mein Fehler ?

 

 

Test des MotionDedector V2

Eintrag in der ITEM.items Datei

Switch MotionDV2SW1 "BewegungsmelderV2 [%s]" (TestTF) {channel = "tinkerforge:motiondetectorV2:f4a5fb45:bcd:motiondetected"}

Dimmer MotionDV2dl "BewegungsmelderV2 LED1 [%s]" (TestTF) {channel = "tinkerforge:motiondetectorV2:f4a5fb45:bcd:topLeftled"}

Dimmer MotionDV2dr "BewegungsmelderV2 LED1 [%s]" (TestTF) {channel = "tinkerforge:motiondetectorV2:f4a5fb45:bcd:topRightled"}

Dimmer MotionDV2db "BewegungsmelderV2 LED1 [%s]" (TestTF) {channel = "tinkerforge:motiondetectorV2:f4a5fb45:bcd:bottomled"}

 

Ich hatte es bisher noch nie geschafft, die 3 LED's zu nutzen, weder konnte ich sie per basicui/app (Website) noch über eine Rule bedienen. Der eigentliche Bewegungs-Melder funktioniert, nur die 3 LED lassen sich nicht ansteuern.

 

Rule zum Test:

rule "test-Motion-DedectroV2-LED"

when

Channel "tinkerforge:lcd20x4:f4a5fb45:abc:button0" triggered RELEASED

then

sendCommand(MotionDV2dl,80)

end

 

Eintrag im LOG-File

2019-06-09 20:39:13.027 [ome.event.ItemCommandEvent] - Item 'MotionDV2dl' received command 80

2019-06-09 20:39:13.083 [nt.ItemStatePredictedEvent] - MotionDV2dl predicted to become 80

2019-06-09 20:39:13.180 [vent.ItemStateChangedEvent] - MotionDV2dl changed from 100 to 80

 

Die LED Leuchten nicht, wo liegt mein Fehler ?

---

Test des NFC Bricklet

Die TAG-ID von konnte ausgelesen werden

Die TAG-ID wird im Log als auch auf der Web-Site dargestellt

 

Eintrag in die ITEM.items Datei

String NFCTAG_text "NFC-TAG [%s]" (TestTF) { channel="tinkerforge:nfc:f4a5fb45:cde:tagID" }

String NFCTAG_merker "NFC-merker [%s]"

 

Frage: Wie kann ich dem Inhalt des String-ITEMS (ausgelesene TAG-ID) einer Variablen oder einem anderen String ITEM übergeben ?

Ich bekomme da immer Fehlermeldungen im LOG

Sorry mein Fehler hab Syntax bei der Zuweisung nicht beachtet

 

 

LCD128x64

 

Theo ich finde unter

Paperui / Configuration / Things / BrickletLCD128x64

keine Channel für die Backgroungbeleuchtung !

 

Ich habe anschließend analog zum LCD20x4 die ITEM-Verlinkung eingetragen, hatte aber keinen Erfolg.

 

Eintrag in die ITEM.items Datei

Switch LCD128x64_BL "LCD128x65 Backlight [%s]" (TestTF) { channel="tinkerforge:lcd128x64:f4a5fb45:bcd:backlight", channel="serialbutton:button:mybutton:button" [profile=rawbutton-toggle-switch] }

 

Das Anlegen der Buttons und Slider klappt, ich kann auch Text auf dem Display ausgeben.

Das Auslesen der Number-Werte bei Änderung der Slider‘s funktioniert und die Werte können in Rule‘s ausgewertet werden.

 

Frage: Wie kann ich mit dem „actions.writeLine(3, 10, ...)“ den Inhalt eines ITEMS oder einer Variable mit auf dem Display ausgeben ?

actions.writeLine(3, 10, „Dummytext“) funktioniert

actions.writeLine(3, 10, ITEM.state) oder „actions.writeLine(3, 10,ITEM ) funktioniert nicht

Beispiel-Rule:

rule "LCD164-Slider"

when

Item LCD128x64_SL0 changed

then

val actions = getActions("tinkerforge", "tinkerforge:lcd128x64:f4a5fb45:HQJ")

actions.clearDisplay

actions.writeLine(3, 10, "change")

actions.writeLine(3, 10, LCD128x64_SL0.state )

if (LCD128x64_SL0.state > 15 ) { LCD20x4_BL.sendCommand (ON) } else { LCD20x4_BL.sendCommand (OFF) }

end

 

Fehlermeldung im LOG-FILE (es macht keinen Unterschied ob ich nun ITEM oder ITEM.state nutze)

2019-06-10 13:39:30.050 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'LCD164-Slider': An error occurred during the script execution: Could not invoke method: org.openhab.binding.tinkerforge.action.LCD128x64BrickletActions.writeLine(org.eclipse.smarthome.core.thing.binding.ThingActions,int,int,java.lang.String) on instance: null

 

Wie müsste ich die Rule aufbauen, dass ich als eine Variable oder ein ITEM ausgeben kann ?

Ich hab diese Rule auch mit dem String-ITEM des NCF-TAG probiert, gleicher Fehler.

 

Zum Schluss noch eine Frage:

Ich nutze zwei Masterbrick-Stapel die ich über eine RS485 Master-Extension verbunden sind. Es funktioniert soweit ganz gut, allerdings werden bei einem Restart von openhab nicht alle Bricklets am „Remote“ angebunden Stapel als ONLINE angezeigt. Ich muss immer erst am Remote-Stapel die Spannung aus und wieder einschalten, dann gehen alle Brickles online. Gibt es eine Möglichkeit per Komonado ein Rescan der  TF-Komponenten zu initiieren ??

 

Ist mal wieder viel zu lesen :-(

Leider hab ich in den verschiedenen Foren nicht viel gefunden was mir helfen hätte können

 

Grüsse

 

Stefan

Link zu diesem Kommentar
Share on other sites

Hallo Stefan,

 

vielen Dank für das ausführliche Testen. Ob des Umfangs antworte ich mal häppchenweise:

 

Frage: Channels für eine Item-Definition mit rawbutton-toggle-switch, woher?

Antwort: Ein Beispiel: das Backlight des LCD20x4 mit dem Button 0 an- und ausschalten.

- Erstelle ein Switch Item mit dem Namen LCDBacklightStefan und gebe als ersten Channel die ChannelId des Backlight Channels an und als zweiten Channel ide ChannelId des buttons0 und gebe als Profile rawbutton-toggle-switch an.

- die ChannelIds findest du im PaperUI: Configuration-> Things -> BrickletLCD20x4 xyz -> "Betrieb" und "Button 0"

- die fertige Konfiguration sieht so aus:

Switch LCDBacklightStefan {channel="tinkerforge:lcd20x4:e2ccaaf7:d4j:backlight", channel="tinkerforge:lcd20x4:e2ccaaf7:d4j:button0" [profile="rawbutton-toggle-switch"]}

 

Hier ist ein kleiner Screencast, der den Vorgang zeigt:

https://m1theo.de/ncloud/index.php/s/xBnwM98Amgsk97D

 

Link zu diesem Kommentar
Share on other sites

Schreiben eines Text auf das LCD 20x4 >> Dies hat nicht funktioniert.

 

Stefan, du warst nahe dran, sorry für die Umstände, so sollte es funktionieren:

 

Items:

String LCD20x4Test {channel="tinkerforge:lcd20x4:e2ccaaf7:d4j:display"}

 

Rule:

rule "Test PRESSED LCD Text"
when
  Channel "tinkerforge:lcd20x4:e2ccaaf7:d4j:button1" triggered PRESSED
then
  LCD20x4Test.sendCommand("{0,0}Button1 pressed")
end

rule "Test RLEASED LCD Text"
when
  Channel "tinkerforge:lcd20x4:e2ccaaf7:d4j:button1" triggered RELEASED
then
  LCD20x4Test.sendCommand("{1,0}Button1 released")
end

Link zu diesem Kommentar
Share on other sites

NFC Bricklet Test: schreiben auf ein LCD128x64 Bricklet

 

Items:

String NFCBricklet "Stefans TagId" {channel="tinkerforge:nfc:e2ccaaf7:E26:tagID"}
String LCD128x64Test {channel="tinkerforge:lcd128x64:e2ccaaf7:H8Z:display"} 

 

Rule:

rule "Test NFC LCD128"
when
  Item NFCBricklet changed
then
  LCD128x64Test.sendCommand("{1,0}" + NFCBricklet.state)
end

Link zu diesem Kommentar
Share on other sites

Hallo Theo

 

vielen danke für die schnellen Antworten.

Ich muss mal schaun wie ich diese Woche (abends) das ganze nochmal angepasst testen kann.

 

Eine Sache hat mich jetzt doch etwas erstaunt, im dem letzten Beispiel

>> Schreiben der Tag-ID (String-Item) >> nutzt Du für das LCD128x64 den gleichen Befehl wie für das LCD20x4 >> sendcommad und nicht "action.writeline"

Wann nutzte ich dann den writeline ? nur für statische Texte ?

 

viele Grüsse

 

Stefan

 

Update

Das ganze hat mir keine Ruhe gelassen und ich habe es schnell getestet.

Das Schreiben auf LCD20x4 und LCD128x64 funktioniert mit einem statischen Text und mit dem Inhalt eines String-Item (meine TAG-ID).

 

Vergesse bitte meine Frage zum zuweisen des Inhalt des TAG-ID-String-Item auf eine Variable oder einem anderen String-Item. Ich hab total verdrängt dass man eine gewisse Syntax einhalten muss.

 

stringvariable = String_Item.state.toString

so funktioniert es auch ;-)

 

 

 

Link zu diesem Kommentar
Share on other sites

Hallo theo (oder auch an die anderen),

 

wie kann ich mir denn auf dem LCD20x4 Display die Werte des Temperatursensors oder z.B. die Luftfeuchtigkeit anzeigen lassen? Ich stehe gerade irgendwie auf dem Schlauch und bekomme es nicht hin.

 

lg omiT

 

Update: so gehts:

rule "displaytemperature"

when

    Item Tinkerforge_Temperature changed

then

    LCD20x4.sendCommand("{1,0}Temperatur " + Tinkerforge_Temperature.state + "C" )

end

Link zu diesem Kommentar
Share on other sites

  • 5 weeks later...

Hallo Stefan,

 

das OH-Binding spricht ja nicht direkt mit dem Stack, sondern mit dem brickd, deshalb sollte es auch mit den HAT-Bricks funktionieren (ich selbst habe keinen, kann das also nicht verifizieren).

Was anderes ist es wenn man die speziellen Funktionen der HAT-Bricks verwenden will (HAT Zero Brick: getUSBVoltage und HAT Brick: sleepMode, Power und Voltages), dazu müsste das Binding erweitert werden. Was prinzipiell natürlich möglich ist.

 

Grüße,

Theo

 

Link zu diesem Kommentar
Share on other sites

  • 3 weeks later...

Hallo KlausGünther,

 

vielen Dank.

 

@Stefan und was macht der PiHat?

 

Ich bin leider immer noch lahmgelegt und hoffe, dass ich in ein paar Wochen soweit bin, dass ich weiterentwickeln kann. Fall jemand an der Entwicklung beteiligen will, PRs sind willkommen. Ein wenig Entwicklerdoku ist hier: https://github.com/theoweiss/tinkerforge-client-codegen im README.md.

 

Gruß,

Theo

 

 

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...