Ankündigung

Einklappen
Keine Ankündigung bisher.

Lesen eines Byte-Objektes (nicht Standart DPT)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zigulle
    antwortet
    Hallo,

    hab nun erfolgreich auf dropbox umgestellt. Auch wenn ich eigentlich nen vi-Fan bin, manchmal hilft ne Autocomplition ungemein.

    gruß
    Daniel

    Einen Kommentar schreiben:


  • udo1toni
    antwortet
    Dropbox-Alternative

    Ich hatte das Datei-bearbeiten-Problem bei mir auch, weil openhab in einer vm auf meinem Xen-Server läuft. Ich hab einfach Samba zusätzlich draufgepackt und das Runtime-Verzeichnis freigegeben. Anmeldung läuft natürlich mit Passwort, aber der Server ist ohnehin nur im "Intranet" erreichbar, und noch sind meine Kinder zu klein, um da Unsinn anstellen zu wollen.
    Jedenfalls ist es kein Problem, den Editor die Konfiguration übers Netz bearbeiten zu lassen. Ich hab sogar das Editor-Paket auf einer zweiten Samba-Freigabe liegen, um bequem von jedem PC im Haus arbeiten zu können :-)

    Ach ja, ab und zu ist die Items-Liste (also die auf der linken Seite) nicht aktuell, ich muss dann was an den Gruppen ändern, damit die Liste aktualisiert wird. Aber ich meine, das hab ich auch bei meinen ersten lokalen Versuchen so gesehen...

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    Super, freut mich, dass wir es doch noch gelöst haben

    Zitat von Zigulle Beitrag anzeigen
    Ich verwende nicht den Regeleditor, da ich mich per ssh auf nem pi einlogge und die rules per vi editiere.
    Da wäre vielleicht die Dropbox-Anbindung (DropboxIOBundle - openhab - Documentation of the Dropbox IO Bundle - empowering the smart home - Google Project Hosting) was für Dich - damit editierst Du Deine Konfigurationen komfortabel auf dem Desktop (im Dropbox-Ordner) und der pi synchronisiert sich die Änderungen automatisch alle paar Minuten.

    Viele Grüße,
    Kai

    Einen Kommentar schreiben:


  • Zigulle
    antwortet
    Hallo,

    Zitat von kkreuzer Beitrag anzeigen
    DecimalType nutzt intern immer den Java Typ BigDecimal und bietet die Methode toBigDecimal() an, um diesen Wert zu erhalten. Wenn Du dann auf BigInteger gehst, hast Du alles was Du brauchst, also z.B.

    Code:
    var tmp = receivedCommand as DecimalType
    tmp.toBigDecimal.toBigInteger.testBit(2)
    Um sowas rauszufinden, ist immer ein Ctrl+Space im Regeleditor sehr hilfreich, da er einem dank Content-Assist alle verfügbaren Methoden anzeigt.
    Damit ist alles klar. Ich verwende nicht den Regeleditor, da ich mich per ssh auf nem pi einlogge und die rules per vi editiere. Sorry, wenn ich den Editor verwendet hätte, wäre wohl das eine oder andere auch ohne Deine Hilfe gelaufen.

    Ich hatte leider auch die tmp-Varieable als var Number gekenzeichnet. Dann klappts auch nicht. Man lernt nie aus ;-).
    Nun hab ich das Auslesen und umschalten im Griff.

    Danke für die Hilfe.
    Daniel

    ps: Falls jemand den Code braucht, hier ist er:

    Code:
    rule "Abfrage Betriebsart Arbeitszimmer"
    when
      Item Betriebsart_DG_Arbeitszimmer_Status received command
    then
      var tmp = receivedCommand as DecimalType
      var state = tmp.toBigDecimal.toBigInteger
    
      if (state.testBit(0) ) {
            Betriebsart_DG_Arbeitszimmer.postUpdate(0)
      }
      else if (state.testBit(1)) {
            Betriebsart_DG_Arbeitszimmer.postUpdate(1)
      }
      else if (state.testBit(2)) {
            Betriebsart_DG_Arbeitszimmer.postUpdate(2)
      }
      else if (state.testBit(3)) {
            Betriebsart_DG_Arbeitszimmer.postUpdate(3)
      }
      else {
            Betriebsart_DG_Arbeitszimmer.postUpdate(1)
      }
    end
    Wobei 0=Komfort, 1=Standby, 2=Nacht und 3=Frostschutz in der Sitemaps definiert ist.

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    DecimalType nutzt intern immer den Java Typ BigDecimal und bietet die Methode toBigDecimal() an, um diesen Wert zu erhalten. Wenn Du dann auf BigInteger gehst, hast Du alles was Du brauchst, also z.B.

    Code:
    var tmp = receivedCommand as DecimalType
    tmp.toBigDecimal.toBigInteger.testBit(2)
    Um sowas rauszufinden, ist immer ein Ctrl+Space im Regeleditor sehr hilfreich, da er einem dank Content-Assist alle verfügbaren Methoden anzeigt.

    Grüße,
    Kai

    Einen Kommentar schreiben:


  • Zigulle
    antwortet
    Hallo,

    Zitat von kkreuzer Beitrag anzeigen
    Ich habe jetzt auch Support für 5.005 aufgenommen, der Build morgen sollte es unterstützen. Lass mich wissen, ob was bessere Ergebnisse liefert.
    Danke für das Feature. Damit funktioniert es. Ich versteh leider noch nicht, wie ich jetzt mit dem Wert in einer .rules rechnen kann.

    Ich weise den Wert mittels

    Code:
    var Number tmp = receivedCommand as DecimalType
    einer Variablen zu. Auf diese (meiner Meinug nach ein int) würde ich gerne eine Modulo Operation machen.

    also
    Code:
    var state = tmp % 32
    dabei gibts aber einen Fehler.

    Kann ich mit Number - Items rechnen? Leider ist die Doku dafür sehr ungenau.

    Gruß
    Daniel

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    Zitat von kkreuzer Beitrag anzeigen
    Für Dich wäre wohl 5.005 das passende - DECIMALFACTOR 0-255. Werde zusehen, dass ich das zeitnah auch noch aufnehme...
    Ich habe jetzt auch Support für 5.005 aufgenommen, der Build morgen sollte es unterstützen. Lass mich wissen, ob was bessere Ergebnisse liefert.

    Grüße,
    Kai

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    Wenn "Status [(%d)]" nicht funktioniert, versuche mal "Status [(%.0f)]", vielleicht klappt es damit...?

    Grüße,
    Kai

    Einen Kommentar schreiben:


  • Zigulle
    antwortet
    Zitat von kkreuzer Beitrag anzeigen
    Was siehst Du denn im Debug-Log? Da sollten Zeilen drin stehen wie "Item Betriebsart_DG_Arbeitszimmer_Status received command 34".
    Genau das sehe ich im Debug-Log. Aber ich bekomme nur - angezeigt und Oprerationen kann ich auf den Wert im Rules-Skript nicht anwenden. Wie muss ich das ganze im Item-File konfigurieren.

    Gruß
    Daniel

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    Was siehst Du denn im Debug-Log? Da sollten Zeilen drin stehen wie "Item Betriebsart_DG_Arbeitszimmer_Status received command 34".

    Einen Kommentar schreiben:


  • Zigulle
    antwortet
    Zitat von kkreuzer Beitrag anzeigen
    Hm, ich hatte Dein ursprüngliches Problem nicht mehr im Blick. 5.001 ist als 0-100% spezifiziert, also kommt genau das korrekte zurück.
    Für Dich wäre wohl 5.005 das passende - DECIMALFACTOR 0-255. Werde zusehen, dass ich das zeitnah auch noch aufnehme...
    Hallo, das ursprüngliche Problem lag darin, dass ich im Raumthermostat bitcodiert stehen habe, welcher Modus ausgewählt ist.

    1-Bit -> Komfort
    2-Bit -> Standby
    3-Bit -> Nacht
    4-Bit -> Frostschutz
    6-Bit -> Heizen aktiv

    Ich hab jetzt den DPT auf 5.004 gestellt (War ein Versuch) und damit klappt es, obwohl nach der DPT es mit 5.005 gehen sollte.

    Das nächste Problem ist, dass ich die Zahl, die ich erhalte nicht dargestellt bekomme.

    Code:
    Number Betriebsart_DG_Arbeitszimmer_Status      "Status [(%d)]" <heating> (DG_Arbeitszimmer) { knx="<5.004:1/2/10" }
    sollte mir eingentlich die Zahl (zwischen 33 und 40) darstellen. Tut sie aber nicht, ich bekomme nur ein (-) angezeigt.

    Anzeigen ist für mich der erste Schritt, danch muss dass noch geparst werden.

    Gruß Daniel

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    Zitat von Zigulle Beitrag anzeigen
    Allerdings gibt der DPT 5.001 einen Prozentwert zurück. Ich bräuchte aber den HEX-Wert um daraus den Status zu bauen. Wie kann ich aus dem Prozentwert den Hex-Wert bekommen. Wenn ich Mathematik bemühe, dann hab ich leider das Problem der Rundungsfehler.
    Hm, ich hatte Dein ursprüngliches Problem nicht mehr im Blick. 5.001 ist als 0-100% spezifiziert, also kommt genau das korrekte zurück.
    Für Dich wäre wohl 5.005 das passende - DECIMALFACTOR 0-255. Werde zusehen, dass ich das zeitnah auch noch aufnehme...

    Einen Kommentar schreiben:


  • kkreuzer
    antwortet
    Zitat von Zigulle Beitrag anzeigen
    Könntet Ihr so was wie ein Nightly-Bundle anbieten, dann ist das Testen einfacher?
    Den gibt es schon lange, Du findest ihn hinter dem Link "openHAB Snapshot Builds" auf der Homepage unten links (bei "External links").

    Grüße,
    Kai

    Einen Kommentar schreiben:


  • Zigulle
    antwortet
    So, hier ne Rückmeldung.

    Ich bekomme den Wert nun per <5.001: eingelesen.

    Allerdings gibt der DPT 5.001 einen Prozentwert zurück. Ich bräuchte aber den HEX-Wert um daraus den Status zu bauen. Wie kann ich aus dem Prozentwert den Hex-Wert bekommen. Wenn ich Mathematik bemühe, dann hab ich leider das Problem der Rundungsfehler.

    Gruß
    Daniel

    Einen Kommentar schreiben:


  • Zigulle
    antwortet
    Hat sich erledigt, ich hab das Bundle gebaut und werde den aktuellen Snapshot ausprobieren. Ich melde mich, wenn ich einige Erfahrung damit habe.

    Gruß Daniel

    Einen Kommentar schreiben:

Lädt...
X