Jump to content
theo

openhab Integration

Nächste Bricks/Bricklets mit openHAB Unterstützung  

23 members have voted

  1. 1. Nächste Bricks/Bricklets mit openHAB Unterstützung

    • Stepper
    • IMU
    • IMU 2.0
    • Accelerometer (fertig)
    • Analog In (fertig)
    • Analog In 2.0 (fertig)
    • Analog Out
    • Analog Out 2.0
    • GPS
    • Industrial Analog Out
    • Industrial Dual Analog In (fertig)
    • Laser Range Finder (fertig)
    • NFC/RFID
    • Color (fertig)


Recommended Posts

Moin,

 

Ich habe ja nun auch schon eine ganze Weile ein RED rumliegen und wollte mich nun dranmachen mein openhab von einer INTEL NUC auf den red zu moven. Ich benutze hauptsächlich das KNX Binding für Licht, Rollos usw. Am Red gefällt mir die POE Geschichte btw die Möglichkeit ein paar Temperatur Sensoren noch zu betreiben. Wie sieht es nun mit den Ressourcen aus? Läuft openhab als Java VM einigermaßen stabil und zuverlässig? Gerade viele schreibzugriffe auf die SDcard sehe ich kritisch (rrdtool, Logs usw)

Share this post


Link to post
Share on other sites

Moin,

ja viele Schreibzugriffe auf die SD-Karte sind Kritisch zu sehen, aber warum möchtest du den Server von NUC auf RED umziehen lassen?

Der NUC kann ja weiterhin der "Server" sein, und der RED nur die Schnittstelle zur Tinkerforge-Welt.

Und mit der Stabilität von RED & RPi hatte ich bisher keine Probleme, meisst war ich selbst (oder eher meine Programme) das Problem.

 

-->CUT---------------------------------------------------------------------------

 

Zu der Antwort habe ich aber noch ein weiteres Problem, und zwar eines mit dem Binding vom Segment Display 4x7 Bricklet:

ITEMs:

Number UhrzeitAsNumber "Uhrzeit [%f]" <clock> (UG_Flur)
Number TF_Segment7 "Segment7" (TF_Cube) {tinkerforge="uid=PPP" }

RULEs:

var Number time_hour
var Number time_minute
//Die beiden Variablen werden in einer Regel als "cron" dann mit Werten belegt
rule "Zeit in Variablen"
when
	Time cron "30 * * * * ?"
then
time_hour = current_time.get(java::util::Calendar::HOUR_OF_DAY) 
time_minute = current_time.get(java::util::Calendar::MINUTE)
var timeUpdate = (time_hour * 100) + time_minute
postUpdate(UhrzeitAsNumber, timeUpdate)
end

/* Ausgabe */
rule "UhrzeitAsNumber in TF_Segment7"
        when
                Item UhrzeitAsNumber received update
        then
                sendCommand(TF_Segment7, UhrzeitAsNumber.state as DecimalType)
end

Bei folgendem Aufbau habe ich das Problem das die Minutenzahl im Segment7-Bricklet immer 2 mehr anzeigt als die Variable "UhrzeitAsNumber" gerade beinhaltet.

Wenn die Zeit nun momentan "1040" wäre, zeigt das Segment7 nun aber leider "1042" an.

Kann das jemand nachvollziehen und mir evtl. einen Hinweis geben wo der Fehler liegt?

 

Share this post


Link to post
Share on other sites

Hey,

 

Hier mal mein erster Beitrag, habe mir tie tage Tinkerforge und openhab zugelegt. Leider scheint die openhab.cfg keine configs für die subids des IO-4 zu übernehmen. Soweit ich das aus dem Log lesen kann, werden alle subids (in und out) automatisch eingelesen, jedoch ist eine weitere Einstellung (Pull up und co) nicht möglich. Das heißt ich muss momentan im Brickv die Ports auf Output stellen, ansonsten schickt openhab zwar ON/OFF aber diese werden vom Bricklet nicht umgesetzt. Habe schon versucht es mit einem externen skript zu lösen, leider erfolglos (bin wie gesagt erst kurz bei Openhab). Könnt ihr mir helfen?

 

LG Lukas

Share this post


Link to post
Share on other sites

Hi,

 

ich würde gerne wissen ob eine openhab Integration für das Thermocouple Bricklet geplant ist?

 

LG Werner

Share this post


Link to post
Share on other sites

Hallo Werner,

 

Thermocouple Bricklet ist geplant. Ich hoffe ich komme über die Pfingstferien dazu.

 

Gruß,

Theo

 

Share this post


Link to post
Share on other sites

Hallo Lukas,

 

kannst du deine Konfigurationsdateien und den Log hier posten.

 

Gruß,

Theo

 

Share this post


Link to post
Share on other sites

hey Theo,

is ja cool das du so schnell geantwortet hast, bin leider erst am Sonntag wieder an dem Rechner. bzgl. der cfg, also wenn ich nichts für die subids einstelle scheint es alle (in und out) zu erkennen, und wenn ich das dann manuell im brickv mach kann ich die Ausgänge auch schalten. Werde aber am Sonntag ne cfg und log posten wenn ich versuch einen Ausgang zu konfigurieren, dann wirds nämlich spannend. Soweit ich das noch im kopf hab definiert er erst alle eingänge und sagt dann z.B. out2 is already configured as in2. get your config file in order! (oder so was in der art) und falls ich einen Eingang definiere und z.b. Pull-up einstelle, ließt er das zwar, aber initialisiert doch alle als "Default".

 

Hoffe das ist wenigstens ein bisschen nachvollziehbar :-)

 

Lg Lukas

Share this post


Link to post
Share on other sites

also hier mal meine testcfg mit eingestelltem eingang und pullup, welcher eben nicht eingestellt wird.

 

############################## Tinkerforge  Binding ###################################
#
# IP addresses / Hostnames  of the hosts running the brickd (optional port
# separated by a colon, defaults to 4223)
tinkerforge:hosts=127.0.0.1
###########tinkerforge:refresh=1000

tinkerforge:temperature.uid=tf7
tinkerforge:temperature.type=bricklet_temperature
tinkerforge:temperature.slowI2C=False

tinkerforge:ainv2.uid=vgh
tinkerforge:ainv2.type=bricklet_analoginv2
tinkerforge:ainv2.movingAverage=50
tinkerforge:ainv2.callbackPeriod=500
tinkerforge:ainv2.threshold=10

tinkerforge:io4.uid=h2t
tinkerforge:io4.type=bricklet_io4
tinkerforge:io4.debouncePeriod=200
tinkerforge:io0.uid=h2t
tinkerforge:io0.type=io4sensor
tinkerforge:io0.subid=in3
tinkerforge:io0.defaultState=true

anbei auch der log, hoffe man kann daraus schlau werden :-)

 

openhab.log

Share this post


Link to post
Share on other sites

Hallo Lukas,

 

nimm diese Zeile raus:

tinkerforge:io0.defaultState=true

. Diese ist der Grund dafür das nichts an den GPIOs eingestellt wird.

Zum pullUp setzen verwendest du:

 tinkerforge:io0.pullUpResistorEnabled=true

 

Doku findest du hier (die für IO16 ist im wesentlichen identisch mit der für IO4, die leider fehlt).

https://github.com/openhab/openhab/wiki/Tinkerforge-Binding#io-16-bricklet

 

Gruß,

Theo

 

Share this post


Link to post
Share on other sites

Hey Theo,

 

werde das nächste woche mal testen, aber wie stelle ich die Ausgänge als Ausgänge ein? wie gesagt werden bei mir immer erst alle Eingänge eingestellt.

 

Liebe grüße,

Lukas

Share this post


Link to post
Share on other sites

Hey Lukas,

 

die Pins werden zu Ausgängen in dem du sie als

type=io4_actuator

konfigurierst.

 

Herzlichen Gruß,

Theo

 

Share this post


Link to post
Share on other sites

Hey Theo,

 

also hier meine aktuelle config

############################## Tinkerforge  Binding ###################################
#
# IP addresses / Hostnames  of the hosts running the brickd (optional port
# separated by a colon, defaults to 4223)
tinkerforge:hosts=127.0.0.1
###########tinkerforge:refresh=1000

tinkerforge:temperature.uid=tf7
tinkerforge:temperature.type=bricklet_temperature
tinkerforge:temperature.slowI2C=False

tinkerforge:ainv2.uid=vgh
tinkerforge:ainv2.type=bricklet_analoginv2
tinkerforge:ainv2.movingAverage=50
tinkerforge:ainv2.callbackPeriod=500
tinkerforge:ainv2.threshold=10

tinkerforge:io4.uid=h2t
tinkerforge:io4.type=bricklet_io4
tinkerforge:io4.debouncePeriod=200
tinkerforge:io0.uid=h2t
tinkerforge:io0.type=io4_actuator
tinkerforge:io0.subid=out0
tinkerforge:io1.uid=h2t
tinkerforge:io1.type=io4sensor
tinkerforge:io1.subid=in1
tinkerforge:io1.pullUpResistorEnabled=true

leider ist das problem immer noch da, habe auch nochmal einen Ausschnitt der log datei angehängt. Interessant eben ab ca 07:59:06.454, hier sieht man, dass erst die in0-4 erstellt werden, leider immernoch ohne pullup laut Brickv.

 

LG Lukas

 

Edit: Korregiere, das mit dem Pullup funktioniert, man muss nur Brickv einmal neu starten. Sehr schön!

log-25-05-2016.txt

Share this post


Link to post
Share on other sites

Nein, leider eben nicht. Ich kann mit Openhab immernoch keine Ausgänge setzen! siehe meine letzten drei posts.

 

Ich versuche das Problem nochmal zu beschreiben:

Ich möchte mit openhab einen Ausgang auf High setzen. Leider lädt openhab die Out0-3 zwar (standardmäßig) aber im Brick sind trotzdem alle ports auf Eingang gestellt, daher funktioniert auch der Pull-up. Wenn ich nun aber manuell z.B. Port 1 auf Out einstelle (im Brickv), kann ich Out1 über Openhab auf High/low setzen. Nur resettet sich ja das ganze bei neustart des Bricks, und openhab sagt mir nichtmal ob es tatsächlich geht oder nicht.

 

Ich hoffe das hat mein Problem etwas verständlicher gemacht.

(hier nochmal meine Idee zum Problem: Openhab lädt automatisch alle In0-3 und Out0-3 für gegebenes Bricklet, da nun aber schon der Port als In0 definiert ist, kann ich ihm keine Einstellungen für Out0 übergeben.)

 

Lg Lukas

Share this post


Link to post
Share on other sites

Da stimmt scheinbar was mit deiner Konfiguration nicht. Siehe:

07:59:06.486 [ERROR] [.t.internal.TinkerforgeBinding:306  ] - CONFIG ignoring duplicate device uid: h2t, subId out0, genericId {}. Fix your openhab.cfg!

 

Kannst du deinen Setup bitte auf das IO4 eindampfen, d.h.

  • alle anderen Bricklets vom Stack trennen
  • in der openhab.cfg nur das IO4 Bricklet konfigurieren
  • sicherstellen, dass in der openhab_default.cfg keine Tinkerforge-Konfiguration ist
  • nur das Tinkerforge Binding aktivieren
  • Rules entfernen
  • Persitence am besten auch
  • items und sitemap Konfiguration entsprechend anpassen

 

Dann noch einmal die Konfiguration und einen Log-Mitschnitt hier posten.

 

Share this post


Link to post
Share on other sites

hey theo,

 

leider unverändert.

config ist jetzt nur noch

############################## Tinkerforge  Binding ###################################
#
# IP addresses / Hostnames  of the hosts running the brickd (optional port
# separated by a colon, defaults to 4223)
tinkerforge:hosts=127.0.0.1
###########tinkerforge:refresh=1000

#tinkerforge:temperature.uid=tf7
#tinkerforge:temperature.type=bricklet_temperature
#tinkerforge:temperature.slowI2C=False

#tinkerforge:amblight.uid=yg5
#tinkerforge:amblight.type=bricklet_ambient_lightv2
#tinkerforge:amblight.callbackPeriod=1000
#tinkerforge:amblight.threshold=10


#tinkerforge:ainv2.uid=vgh
#tinkerforge:ainv2.type=bricklet_analoginv2
#tinkerforge:ainv2.movingAverage=50
#tinkerforge:ainv2.callbackPeriod=500
#tinkerforge:ainv2.threshold=10

tinkerforge:io4.uid=h2t
tinkerforge:io4.type=bricklet_io4
tinkerforge:io4.debouncePeriod=200
tinkerforge:io0.uid=h2t
tinkerforge:io0.type=io4_actuator
tinkerforge:io0.subid=out0
tinkerforge:io1.uid=h2t
tinkerforge:io1.type=io4sensor
tinkerforge:io1.subid=in1
tinkerforge:io1.pullUpResistorEnabled=true

 

Log wie immer im anhang ^^. Ich vermute immernoch eine Fehlerhafte standard initialisierung des Bindings :-).

 

LG Lukas

log-30-05-2016.txt

Share this post


Link to post
Share on other sites

Hey Lukas,

 

ich hab's jetzt durchprobiert (musste erst die verbogenen Pins an meinem IO4 reparieren) und den Fehler gefunden. Ein gefixtes Binding findest du hier: https://bintray.com/theoweiss/generic/download_file?file_path=1.9%2Fio4%2F1%2Forg.openhab.binding.tinkerforge-1.9.0-SNAPSHOT.jar

Kannst du damit nochmal testen?

Was die Konfiguration betrifft habe ich Unsinn geschrieben, mit

io0.defaultState=true

setzt du den Ausgang beim Initialisieren auf High.

 

Ich habe mit folgender Konfiguration getestet:

io4.uid=h56
io4.type=bricklet_io4
io4.debouncePeriod=200

io0.uid=h56
io0.type=io4_actuator
io0.subid=out0
io0.defaultState=true

io1.uid=h56
io1.type=io4sensor
io1.subid=in1
io1.pullUpResistorEnabled=true

 

Viele Grüße,

Theo

 

Share this post


Link to post
Share on other sites

Hey theo,

 

JUHUUUUU es funktioniert! VIELEN DANK!!! Du machst hier echt tolle Arbeit! jetzt muss ich nie wieder blumen gießen ;-).

 

Liebe Grüße,

 

Lukas

Share this post


Link to post
Share on other sites

Es gibt neue Bricklets mit openhab-Unterstützung als Snapshot:

  • CO2
  • Thermocouple
  • UV Light
  • oled128x64 Preview
  • oled64x48 Preview

 

Das Binding könnt ihr hier downloaden:

https://bintray.com/theoweiss/generic/download_file?file_path=co2etal%2Forg.openhab.binding.tinkerforge-1.9.0-SNAPSHOT.jar

 

Konfigurationsbeispiele gibt es hier (die offizielle Doku folgt, sobald das binding released wird) :

* für openhab 1:

https://github.com/theoweiss/openhab-tinkerforge-configuration-examples

 

* fuer openhab 2:

https://github.com/theoweiss/openhab2-tinkerforge-configuration-examples

 

CO2 und UV-Light haben nur die übliche Callback und Threshold konfiguration (optional) für das Thermocouple

gibt es zusätzlich noch die folgenden Einstellungsmöglichkeiten:

  • averaging: 1, 2, 4, 8, 16
  • thermocoupleType: "B", "E", "J", "K", "N", "R", "S", "T", "G8", "G32"
  • filter: "50", "60"

 

Die Oleds unterstützen im Moment das Schreiben von Text mit dem integrierten Font. Die Bedienung sieht

genauso aus wie die des LCD-Bricklets.

In Arbeit ist die Unterstützung des Zeichnens von Linien, Rechtecken und Kreisen.

Beispielkonfiguration für openhab2 findet ihr hier:

https://github.com/theoweiss/openhab2-tinkerforge-configuration-examples/tree/master/weatherstation-plus-oled-action

Das Ganze läßt sich aber auch mit openhab 1 machen.

 

Als nächstes bin ich am Stepper Brick dran.

 

Viele Grüße,

Theo

 

Share this post


Link to post
Share on other sites

Ich habe ganz vergessen: über Rückmeldungen jedweder Art freue ich mich. Ob Bugreports, Verbesserungsvorschläge, Feature Requests oder einfach nur "bei mir hat es funktioniert" alles ist willkommen.

Share this post


Link to post
Share on other sites

Hallo,

 

betreibt jemand (erfolgreich) ein

DistanceUS Bricklet (https://www.tinkerforge.com/en/shop/bricklets/distance-us-bricklet.html)

mit OpenHAB (vgl. https://github.com/openhab/openhab/wiki/Tinkerforge-Binding#distance-us-bricklet)?

 

Nachdem hier schon einige Bricklets (Wetterstation&TemperatureIR)

erfolgreich über eine Ethernet(POE)-MasterExtension in

OpenHAB 1.8.3 eingebunden sind, wollte ich nun über eine

weitere IP Adressen noch ein DistanceUS, Moisture und HallEffect Bricklet einbinden.

 

Leider findet sich für das DistanceUS bei jedem Update nun

ein Fehler in der Log-Datei, wie z.B.:

2016-06-18 21:44:19.660 [ERROR] [.service.AbstractActiveService] - Error while executing background thread Tinkerforge Refresh Service
java.lang.NullPointerException: null
        at org.openhab.binding.tinkerforge.internal.model.impl.MBrickletDistanceUSImpl.fetchSensorValue(MBrickletDistanceUSImpl.java:844) ~[na:na]
        at org.openhab.binding.tinkerforge.internal.TinkerforgeBinding.updateItemValues(TinkerforgeBinding.java:645) ~[na:na]
        at org.openhab.binding.tinkerforge.internal.TinkerforgeBinding.execute(TinkerforgeBinding.java:608) ~[na:na]
        at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) ~[na:na]
        at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) ~[na:na]

 

Die Fehlermeldung ist der unter

https://groups.google.com/forum/#!topic/openhab/2djA06ICYYc beschiebenen recht ähnlich.

 

Vor der Suche nach dem/den Konfigurationsfehler(n)

wäre es schön zu erfahren, ob das DistanceUS Bricklet

schon einmal erfolgreich mit OpenHAB betrieben wurde...

 

Danke,

Martin

 

Share this post


Link to post
Share on other sites

Hallo Theo,

 

musste am Wochenende arbeiten und sehe die Email leider erst jetzt...

 

Mit dem gerade heruntergeladenen

org.openhab.binding.tinkerforge-1.9.0-SNAPSHOT.jar

erhalte ich nun

 

2016-06-20 00:19:36.595 [ERROR] [.service.AbstractActiveService] - Error while executing background thread Tinkerforge Refresh Service
java.lang.NullPointerException: null
        at org.openhab.binding.tinkerforge.internal.model.impl.MBrickletDistanceUSImpl.fetchSensorValue(MBrickletDistanceUSImpl.java:949) ~[na:na]
        at org.openhab.binding.tinkerforge.internal.TinkerforgeBinding.updateItemValues(TinkerforgeBinding.java:625) ~[na:na]
        at org.openhab.binding.tinkerforge.internal.TinkerforgeBinding.execute(TinkerforgeBinding.java:589) ~[na:na]
        at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) ~[na:na]
        at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) ~[na:na]

 

Es sind anscheinend 105 Zeilen hinzugekommen...

Ich hoffe, das hilft Dir weiter.

 

Danke und gute Nacht,

Martin

 

Share this post


Link to post
Share on other sites

Hallo Martin,

 

ich denke ich habe den Fehler. Da ist ein Code-Block eine Klammer zu tief gelandet, so dass das Bricklet nur initialisiert wird, wenn Konfiguration (die in diesem Fall eigentlich optional ist) dafür hinterlegt ist. Auf die Schnelle kannst du testen ob es funktioniert, wenn du z.B. die CallbackPeriod oder den Threshold oder den movingAverage-Wert in der openhab.cfg setzt. Ein gefixte Version werde ich auch bauen und dann Bescheid geben.

 

Gruß,

Theo

 

 

 

Share this post


Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...