Jump to content

rtrbt

Administrators
  • Content Count

    148
  • Joined

  • Last visited

  • Days Won

    2

rtrbt last won the day on November 16

rtrbt had the most liked content!

Community Reputation

2 Neutral

About rtrbt

  • Rank
    Tinkerforge Staff

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Bei der E-Paper-Regel fehlt noch ein draw()-Aufruf, so funktioniert es: val ePaper = getActions("tinkerforge", "tinkerforge:epaper296x128:8e8df7e6:Jn6") ePaper.fillDisplay(0) ePaper.drawText(0,0,9,1,0,"test") ePaper.draw() Das ist im Moment ungünstig dokumentiert, aber auch draw(Text/Box/Line) und fillDisplay schreiben nur in den Buffer, damit tatsächlich auf das Display gezeichnet wird muss immer draw() aufgerufen werden. Die Doku passe ich nachher mal an. Die LCD/IO16-Regel war etwas verwirrender, nachdem ich da mal rumgesucht habe, bin ich über diesen Post gestolpert. Da sieht man, dass [item].state dir eine Instanz von State gibt. Wenn die nicht in einen Zahltyp gecastet wird, klappen keine Vergleiche mit Zahlen. So funktioniert es bei mir: LCD128x64_text.sendCommand("1,0,fl-P0-in-G7y-" + H5r_EdgeCountPin0A0.state + "-") val ioActions = getActions("tinkerforge", "tinkerforge:io16v2:8e8df7e6:H5r") H5r_EdgeCountPin0A0.sendCommand(REFRESH) if ((H5r_EdgeCountPin0A0.state as Number).intValue > 10) { if(null == ioActions) { logInfo("actions", "Actions not found, for io4v2") } else { logInfo("actions", "Actions found, for io4v2") ioActions.getEdgeCount(0, true) } } LCD128x64_text.sendCommand("2,0,fl-P0-in-G7y-" + H5r_EdgeCountPin0A0.state + "-") So wie die Regel da steht, hat sie aber noch ein anderes Problem: Der REFRESH ist asynchron, das heißt, du siehst bei den beiden Ausgaben immer den selben Wert, weil der aktualisierte noch nicht da ist, wenn das zweite LCD128x64_text.sendCommand passiert. Alternativ kannst du folgendes machen, dann verhält es sich eher so, wie man es erwartet: LCD128x64_text.sendCommand("1,0,fl-P0-in-G7y-" + H5r_EdgeCountPin0A0.state + "-") val ioActions = getActions("tinkerforge", "tinkerforge:io16v2:8e8df7e6:H5r") if(ioActions === null) { logInfo("actions", "Actions not found, for io4v2") return } val currentEdgeCount = ioActions.getEdgeCount(0, false).get("count") as int if (currentEdgeCount > 10) { val currentEdgeCount = ioActions.getEdgeCount(0, true).get("count") as int } LCD128x64_text.sendCommand("2,0,fl-P0-in-G7y-" + currentEdgeCount + "-") H5r_EdgeCountPin0A0.sendCommand(REFRESH) Da sieht man auch gut, warum ich noch auf meiner TODO-Liste stehen habe, für Actions die nur einen Wert zurückgeben, den direkt rauszuführen und nicht über den Map<String, Object>-Ansatz zu gehen. Dann fällt das ganze ".get("count") as int" weg.
  2. Hm das war ungünstig formuliert. Mit aktualisieren meinte ich, die JAR im Addons-Verzeichnis mit der neuen zu überschreiben. Also was ich mache ist (während openHAB läuft): Die JAR durch die neue ersetzen Warten bis im Log (log:tail) die Reinitialisierung durch ist. Das dauert typischerweise so 20 Sekunden. (Ich habe eine Regel, die eine LED auf Grün setzt wenn System started triggert, das ist alternativ auch ein guter Indikator) openHAB neustarten, wieder auf die grüne LED warten Das hilft typischerweise, ist aber etwas Cargo-Kultesk. Da die anderen Actions bei dir aber funktionieren, vermute ich, dass du nicht das Cachingproblem hast. Das ist auch so. Was ich meinte ist, dass du in deiner ursprünglichen Regel die Action mit false aufgerufen hast, was dir den aktuellen Wert gibt, mit dem hast du dann aber nichts gemacht, deshalb hast du keine Änderung gesehen. Es gibt da 4 sinnvolle Varianten was du in einer Rule machen kannst: ioActions.getEdgeCount(0, true): Das setzt den Zähler zurück, den aktuellen Wert verlierst du dabei. val x = ioActions.getEdgeCount(0, true): Das setzt den Zähler zurück, den alten Wert hast du dann in x und kannst irgendwas damit anfangen. val x = ioActions.getEdgeCount(0, true): Das setzt den Zähler nicht zurück, den alten Wert hast du dann in x und kannst irgendwas damit anfangen. Pin0IO4V2Count.sendCommand(REFRESH): Das aktualisiert den Zähler in openHAB, du hast aber nicht den Wert sofort zur Hand. Damit kannst du aber natürlich eine separate Regel triggern, die auf den Channel-Wert reagiert. Mit ioActions.getEdgeCount(0, true) fragst du nur den Wert ab und verlierst ihn dann, der Zähler wird aber nicht zurückgesetzt, deshalb passiert dann nichts. Perspektivisch kannst du dir das ganze Refreshen aber sparen, dass muss ich sowieso für Werte, die sich nicht automatisch aktualisieren, allgemein lösen, damit wird der Edge Counter dann auch erschlagen. Die Bearbeiten-Funktion des Forums war tatsächlich seltsam, die Standardkonfiguration ist wohl, dass man nur 5 Minuten lang den letzten Post bearbeiten darf. Das habe ich mal geändert. Die LCD/E-Paper-Regeln teste ich mal und melde mich nochmal, eigentlich sehen die funktional aus. Edit: Bei den val x = ioActions.getEdgeCount()-Geschichten muss noch .get("count") as int hinten dran, siehe den nächsten Post
  3. Moin, Das klingt, als ob die Kamera etwas aus ihrem Sockel gerutscht ist. Hilft es, wenn du die Kamera (vorsichtig) wieder in den Sockel drückst?
  4. Moin, Benutzt du die Beta-Version der offiziellen Bindings aus diesem Thread? Dann musst du in der PaperUI von Hand in entweder der Inbox oder Configuration->Things einen Brick Daemon hinzufügen. Die Adresse ist localhost, wenn du openHAB auf dem Raspberry Pi laufen lässt, ansonsten dessen IP-Adresse oder Hostname. Wenn du die von Theo geschriebenen Bindings benutzt, sollte das ähnlich funktionieren. Da müsstest du notfalls mal hier nachlesen oder nachfragen. Gruß, Erik
  5. Moin, Die älteren Bricklets werden unterstützt, nur die Remote Switches fehlen noch (sind aber schon implementiert, kommen mit der nächsten Beta). Das kann ich noch nicht versprechen. Auf der TODO-Liste steht noch, rauszufinden wie ich den Code dafür umbauen müsste Eher nicht. Den AccessPoint-Modus kann man nur ausschalten, indem die ganze Wifi-Konfiguration geschrieben wird, das kostet aber wieder EEPROM-Schreibzyklen, deshalb habe ich das in openHAB nicht eingebaut. Extra API dafür einbauen ist auch nicht sinnvoll, weil man sich dann einen Haufen Probleme für andere Anwendungsfälle einhandelt. Die erste Fehlermeldung bekomme ich auch, das scheint aber nichts relevantes zu sein, die Rules funktionieren trotzdem. Die zweite ist wichtiger, openHAB scheint, wenn man die Bindings-JAR aktualisiert, Teile davon in irgendeinen Cache zu laden, der für die RuleEngine nicht korrekt bereinigt wird, nicht mal wenn openHAB neugestartet wird. Was bei mir zuverlässig hilft ist, die Bindings zu aktualisieren, während openHAB läuft und mit log:tail die Ausgabe zu verfolgen. Nach ~ 20 Sekunden tut sich im Log einiges, weil er die Bindings neugeladen hat, wenn du danach openHAB neustartest, läd er nur die neuen Bindings, danach sollte es funktionieren. Die sieht soweit korrekt aus. Ich gehe mal davon aus, dass das auf das selbe Problem wie oben zurückzuführen ist. So wie du die Action verwendest, fragst du den Edge Counter ab, aber das Ergebnis wird dann verworfen. Wenn du den Wert von openHAB aktualisieren willst, kannst du in der Rule [itemname].sendCommand(REFRESH) aufrufen, wobei [itemname] das EdgeCount-Item ist. Intern ruft das dann auch getEdgeCount(0, false) auf, schreibt das Ergebnis aber in das Item. Stimmt das ist hier egal. Da war ich nur verwirrt, weil ich davor irgendeine andere Sprache benutzt habe. Kein Problem, ist ja freiwillig Habe ich mal weitergegeben.
  6. Ah ja, das funktioniert so nicht. Du kannst den Channel umkonfigurieren, sodass du bei jedem Refresh resettest, dann bekommst du immer relative Werte. Alternativ kannst du es so lassen und wenn du resetten willst in einer Rule val ioActions = getActions("tinkerforge", "tinkerforge:io16v2:f80007d9:H4y") ioActions.getEdgeCount(0, true) aufrufen.
  7. Am IO16 2.0 habe ich seit 16.09. nichts geändert, nur die Actions hinzugefügt. Was für eine Warnung bekommst du denn?
  8. Beta 13 ist jetzt im Post oben. Der Generator kann jetzt Actions, das heißt, dass alle Geräte in Rules verwendet werden können. Genaueres steht im Readme und der Doku.
  9. Moin, Einen Stack kannst Du nur entweder über USB oder Ethernet oder Wifi anschließen. Du kannst aber mit openHAB mehrere Stacks kontrollieren, indem Du mehrere Brick Daemons hinzufügst. Unterstützung für das E-Paper habe ich gestern eingebaut, kommt mit der nächsten Beta.
  10. Moin, Es gibt im Brick Viewer noch keine explizite Rust-Unterstützung (das steht auf einer der zahlreichen TODO-Listen ), du kannst dein Binary aber als C/C++-Programm hochladen. Wenn du dann in Schritt 3 nicht den "Compile from Source"-Haken setzt, versucht der Brick Viewer nicht zu kompilieren, sondern nimmt das Binary so wie es ist.
  11. Moin, wenn der Brick Viewer auf dem Raspberry Pi läuft, kannst du dich damit nach localhost verbinden. Das HAT sollte dann aufgeführt werden.
  12. Moin, Das funktioniert leider noch nicht automatisch, da der Edge Count kein Callback hat, ich also den Getter benutzen muss. Der wird aber nur ausgeführt, wenn du dem Item ein Refresh-Command schickst. Solche Werte automatisch zu aktualisieren steht noch auf der TODO-Liste. Nur das I0-4 V2 erzeugt eine Fehlermeldung (die IO-16 V1 / V2 nicht) Was mache ich falsch ? Das sollte sendCommand sein, beim Rotary Encoder 2.0 auch. Ist dies Absicht ? Technisch gesehen ja. Das ist der Mechanismus, der prüft ob die Verbindung noch besteht. Die Meldungen hatte ich aber nur testweise auf INFO gesetzt, das sollte eigentlich DEBUG sein, damit es beim normalen Log-Level nicht die Ausgabe überflutet. Repariere ich für die nächste Beta.
  13. Moin, Beta 12 ist jetzt im Post oben. @Wannes: The 12th beta version should fix your wifi problems. The bindings now check periodically if a network connection was lost and then try to reconnect. @StefanOHAN: In der neuen Version ist der Fix für dein IO16-Problem enthalten. Piezo Speaker kommt mit der nächsten Beta, das sollte aber schneller gehen als die letzte Den Speaker als Systemlautsprecher zu benutzen wird nicht gehen, da bräuchte man einen eigenen Treiber oder müsste eine openHAB-AudioSink schreiben.
  14. Moin, Es gibt diverse Drucksensoren, die ein Einheitssignal ausgeben. Z.B. dieser hier, oder dieser. Auslesen kannst du ein Einheitssignal, wenn es ein Spannungssignal ist, mit dem Analog In Bricklet 3.0 oder für genauere Messungen mit dem Industrial Dual Analog In Bricklet 2.0, für Stromsignale mit dem Industrial Dual 0-20mA Bricklet 2.0.
  15. Moin, Die Ethernet-Extension ist ein Brick Daemon, d.h. den musst du nicht auf der cRIO installieren, sondern kannst dich mit LabVIEW auf die IP-Adresse der Ethernet-Extension verbinden.
×
×
  • Create New...