Du musst dafür im Editor "Complex" eingeschaltet haben.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Popup Widget möglich?
Einklappen
X
-
Ich habe ein wenig herumgespielt und habe folgendes gesehen:
- Das complex attribute ga wird nicht mehr vom editor geschrieben.
- Wenn man die annotation im visu_config.xsd entfernt wird es wieder geschrieben. Als Workarround kann man entweder von Hand die Adr. in der Datei visu_config.xml ergänzen:
HTML-Code:<page name="XYZ" ... ga="0/0/0">
Code:<xsd:attribute name="ga" type="addr" use="optional"> - <xsd:annotation> - <xsd:appinfo>level:expert</xsd:appinfo> - </xsd:annotation> </xsd:attribute>
- Der Editor liest die ga korrekt, wenn sie einmal eingetragen ist.
- Wenn dies geändert ist kommt es allerdings bei mir beim auslösen des Events immer noch zu einem Fehler. Im page.js wird in der update function der parameter data als '00' geliefert und mit der magischen Konstante '01' verglichen. Daher kann in der Folge templateEngine.scrollToPage nicht ausgeführt werden.
Code:default: if (data==01) { templateEngine.scrollToPage(this.attributes.path.nodeValue); templateEngine.visu.write(e.type.substr(1), templateEngine.transformEncode('DPT:1.001', 0)); }
- Zudem ist das Attribut this.attributes.path nicht definiert.
Kennt sich jemand hier aus? Wie müsste das korrekte Verhalten sein und was ist die Bedeutung von 00 bzw. 01?
Gruss, Markus
Kommentar
-
Zitat von Bubo Beitrag anzeigenKennt sich jemand hier aus? Wie müsste das korrekte Verhalten sein und was ist die Bedeutung von 00 bzw. 01?
- Hart-Codierte Zahlen machen früher oder später Ärger. Hier vermutlich schließt das schon OpenHAB als Backend für dieses Feature aus...
- Was ist wenn ein User das lieber mit einem Paket mit dem Inhalt "0" machen möchte? (Z.B. als eine Art Reset auf der Haupt-Page)
- 01 ist nur durch Zufall "1". Die Null vorne sagt nämlich, dass die Zahl Oktal ist. Das kann man an eine 010 sehen, das ist nämlich nicht 10, sondern 8...
=> Wenn das jemand überarbeitet, bitte am besten gleich einen DPT und einen Wert für den Vergleich mit einbauen...
Kommentar
-
Hallo zusammen
Ich habe den Bug gefixed wie unten beschrieben und ins svn eingefügt. Das Refactoring fehlt allerdings noch und ich überprüfe auch nicht ob firstChild existiert und das richtig Child h1 ist. Dafür habe ich ein TODO eingefügt
Jetzt muss ich nur noch rausfinden, wie man in SourceForge ein Ticket übernimmt und schliesst. Braucht es dafür spezielle Rechte?
Gruss, Markus
Code:default: + // TODO: data comparision has to be refactored to use DPT and a value if (data==01) { - templateEngine.scrollToPage(this.attributes.path.nodeValue); + templateEngine.scrollToPage(element.context.firstChild.textContent); templateEngine.visu.write(e.type.substr(1), templateEngine.transformEncode('DPT:1.001', 0)); }
Kommentar
-
Hallo Markus,
das sieht ja schon mal sehr gut aus. Zum Testen habe ich eine GA einer Lampe genommen. Die Seite wird auch aufgerufen sobald ich die Lampe anschalte, nur meine Lampe in der Visu wird wieder auf 0 gesetzt. Also nur in der Visu. Die Lampe leuchtet weiter, bekommt also vom Bus her keine 0, nur in der Visu sieht es aus als wäre sie ausgeschaltet. Ist das so gewollt?
In Verbindung mit openhab habe ich es allerdings nicht zum laufen bekommen.
Ich habe mal folgendes versucht:
Code:// TODO: data comparision has to be refactored to use DPT and a value alert(data); if (data==01 || data==ON)
Gruss Mark
Kommentar
-
Ok, das mit dem alert hat sich erledigt. Mal wieder ein blödes cache Problem.
Mit openhab kommt ein ON. Nur ich habe das Problem wenn ich auf irgendeine page z.B. ga="Lampe_EG_WZ_Spot" schreibe, wird die Visu nur bis zu dieser GA geladen. In meinem Fall ist das der zweite Switch, alle anderen danach haben keinen Status. Wenn ich das ga Attribut rausnehme haben wieder alles switche einen Status.
Gibt es bei dem ga Attribut irgendwie eine Abbruchbedingung, dass nicht weiter geladen werden soll?
Gruss Mark
Kommentar
-
Zitat speedG:
Die Lampe leuchtet weiter, bekommt also vom Bus her keine 0, nur in der Visu sieht es aus als wäre sie ausgeschaltet. Ist das so gewollt?
Code:templateEngine.[URL="http://redaktion.knx-user-forum.de/lexikon/visu/"]visu[/URL].write(e.type.substr(1), templateEngine.transformEncode('DPT:1.001', 0));
openhab sagt mir noch nichts. Dort muss ich mich noch schlau machen.
Gruss, Markus
Kommentar
-
Zitat von Bubo Beitrag anzeigenJetzt muss ich nur noch rausfinden, wie man in SourceForge ein Ticket übernimmt und schliesst. Braucht es dafür spezielle Rechte?)
Kommentar
-
Zitat von speedyG Beitrag anzeigenCode:if (data==01 || data==ON)
Code:if (data==1 || data=='ON')
Kommentar
-
Zitat von Chris M. Beitrag anzeigenDas sollte jeder Developer (wie Du einer bist) bereits dürfen (und wenn ich das letzte Update mir ansehe, hat's wohl auch geklappt)
Gruss, Markus
Kommentar
-
Zitat von Chris M. Beitrag anzeigenDas sollte ein Syntax-Fehler geben... Probier lieber malCode:if (data==1 || data=='ON')
Funktioniert so wunderbar mit openHAB.
Damit und mit dem Audio Widget kann ich nun meine Haustürklingel in die Visu einbinden.
Danke für die Hilfe.
Gruss Mark
Kommentar
-
Ich habe mich mittlerweile auch mal an diesen Umsetzungsvorschlag gewagt und bekomme es mittlerweile hin das die Page angezeigt wird sobald eine 1 gesendet wird. Was ich aber nicht mehr hinbekomme, ist es die Page wieder verschwinden zu lassen.
Verwende auch openHAB im Hintergrund. So sieht das momentan bei mir aus:
Code:<page name="Haustuer" visible="false" ga="Klingel"> <audio src="media/alarm_1.mp3" on_value="1" off_value="0" threshold_value="1" autoplay="false" loop="true" id="Klingel" count="3" interval="5000"> <address transform="OH:number" mode="read">Klingel</address> </audio> <trigger value="0"> <label>Abbrechen</label> <address transform="OH:number">Klingel</address> </trigger> </page>
Number Klingel
Sobald das Item Klingel auf 1 gesetzt wird, wird die zuvor unsichtbare Page 'Haustür' in der CometVisu angezeigt und die Audiodatei wird abgespielt. Betätige ich jetzt den Trigger, erwarte ich das die Page eigentlich wieder zugeht was aber nicht der Fall ist. Das openHAB Item 'Klingel' wird dabei korrekterweise wieder auf 0 gesetzt.
Habe ich hier irgendetwas übersehen? Bin über Tipps dankbar!
Kommentar
Kommentar