NetIO App Controller Rückmeldung als *.png (formatResponse)

Willkommen Foren LogoControl NetIO App Controller Rückmeldung als *.png (formatResponse)

15 Beiträge anzeigen - 1 bis 15 (von insgesamt 15)
  • Autor
    Beiträge
  • #989
    Thorsten Meißner
    Gast

    Hallo zusammen,

    ich möchte mit der NetIO Cotroller App auf meinen Iphone eine Rückmeldung eines geschalteten Ausgangs der Logo in Form eines Roten png Button erhalten. Die Button habe ich schon auf den Iphone unter aus.png und ein.png hochgeladen. Wenn die Lampe an ist soll der Button grün sein wenn sie aus ist dann halt rot. Am schönsten wäre es natürlich wenn es gehen würde das das Lampensymbol auf das ich drucke von dunkel auf hell geht…

    Den Text „aus“ oder „ein“ bekomme ich als Rückmeldung schon….. aber möchte die Rückmeldung gerne graphisch haben….

    vielen dank für eure Hilfe!

    Gruß

    Thorsten

    #994
    virility
    Gast

    Hallo,

    hast du dir mal das NetIo Beispiel „Raspberry Pi Demo“ angeguckt? Da wird etwas ähnliches gezeigt: Nach betätigen eines Schalters wird das Icon Lampe von off auf on umgestellt. So wie ich es verstehe, wird die der Status von in dem Label vom Icon via parseResponse ausgelesen und via formatResponse auf den Befehl Lampe_{aus} bzw Lampe_{an} übersetzt.

    #995
    Thorsten Meißner
    Gast

    Hey,

    danke für den Tip…. werde ich morgen mal probieren. Melde mich dann ob es geklappt hat…..

    Gruß

    Thorsten

    #1004
    Thorsten Meißner
    Gast

    Hallo,

    das funktioniert leider nicht. Sonst noch jemand eine Idee?

    gruß

    Thorsten

    #1006
    admin
    Administrator

    Hi Thorsten,

    doch, der Vorschlag von virility ist schon der richtige. Zumindest unter Android funktioniert es bei mir. Das ganze steht auch so in der Doku: Response Handling (dort unter „Change Attributes during runtime“)

    Was hast du denn bei formatResponse eingetragen? Wenn deine Bild-Dateien „aus.png“ und „ein.png“ heißen muss bei formatResponse „icon.{0}.png“ stehen. Die {0} ist dann ein Platzhalter für deinen Wert.

    #1009
    Thorsten Meißner
    Gast

    Also ich habe über iTunes die Bilddateien Lampeon.png und Lampeoff.png hochgeladen. Was muss ich nun genau unter „format response“ und „Parse Response“ eintragen? Hatte schon alles möglich versucht. Vielleicht weil die Kombination aus „format Response“ und „Parse Resonse“ nicht richtig…

    Mit Wert meinst du wahrscheinlich 0 oder 1 , oder?

    Vielen dank

    gruß Thorsten

    Ps. Ist es eigentlich möglich das unter Logo Control die Gruppen nebeneinander angezeigt werden statt unter einander?

    #1010
    admin
    Administrator

    Das hängt davon ab, ob du mit parseResponse den ValueText (bei dir „ein“ und „aus“, richtig?) oder den Value (reiner Zahlwert, also 0 oder 1 für einen Bitwert) aus der LogoControl Antwort extrahierst. Ich kopier dir mal hier einen Textbaustein rein von einer Mail die ich vor einiger Zeit an jemand anderen geschrieben hatte:

    Das Worker-Label fragt von LogoControl in regelmäßigem Abständen (interval) die Liste der Werte von LogoControl an. Das macht es indem es folgende URL aufruft:
    http://logocontrol:8088/rest/attributes

    Die Antwort, die von LogoControl zurück kommt ist im JSON-Format und sieht ungefähr so aus:

    [
    {„__type“:“AttributeUpdate:#LogoControl.DataModel“,“DeviceId“:1,“AttributeId“:1,“Value“:2,“ValueText“:“offen“},
    {„__type“:“AttributeUpdate:#LogoControl.DataModel“,“DeviceId“:2,“AttributeId“:1,“Value“:2,“ValueText“:“offen“},
    {„__type“:“AttributeUpdate:#LogoControl.DataModel“,“DeviceId“:3,“AttributeId“:1,“Value“:2,“ValueText“:“offen“},
    {„__type“:“AttributeUpdate:#LogoControl.DataModel“,“DeviceId“:4,“AttributeId“:1,“Value“:2,“ValueText“:“offen“},
    {„__type“:“AttributeUpdate:#LogoControl.DataModel“,“DeviceId“:5,“AttributeId“:1,“Value“:0,“ValueText“:“aus“}
    ]

    In dieser Antwort sind nun 5 Geräte enthalten und in ValueText steht der begehrte Wert für die Anzeige. Wie aber weiß nun ein Label, Button, Slider usw. welches den Status von DeviceId=3 anzeigen soll wie es an den Text „offen“ aus der Antwort kommt? Hier kommt nun das „parseResponse“ ins Spiel. Jedes Element, dass sich aus der globalen Antwort bedienen und seinen Wert herausfischen möchte muss eine „parseResponse“ definieren. Eine solche „parseResponse“ ist ein sogenannter „Regulärer Audruck“. Reguläre Ausdrücke sind sehr mächtig aber für Neulinge auch sehr schwer zu verstehen, das gebe ich zu. Im Prinzip sind sie nichts anderes wie eine Art Suchmuster um einen Text in einem großen Text zu finden. Du musst sie aber auch gar nicht verstehen, sondern einfach verwenden. In der LogoControl-Demo habe ich ja bereits einen „parseResponse“ definiert. Auch auf meiner Seite habe ich die zwei Ausdrucke beschrieben die zum Ermitteln von Value und ValueText nötig sind. Für ValueText z.B.:

    (?<="DeviceId":1,"AttributeId":1,"Value":[^,]{0,10}[^,]{0,10},"ValueText":")[^"]* Alles was du tun musst ist die ID bei DeviceId und AttributeId durch deine benötigten auszutauschen. Damit erhälst du nun den "ValueText" aus der langen Antwort von LogoControl. Ich gehe jetzt einfach mal davon aus, dass du für dein Attribut "Ventil" in LogoControl entsprechende ValueTexte angelegt hast, z.B. 0=zu und 1=auf. Der reguläre Ausdruck liefert dann also beispielsweise "zu" zurück und mittels formatResponse in NetIO setzt du diesen Textschnipsel dann ein, indem du formatRespone="icon.ventil_symbol_{0}.png" definierst. NetIO macht daraus dann ein "icon.ventil_symbol_zu.png" wenn der ValueText="zu" ist und lädt damit die Datei "ventil_symbol_zu.png" aus dem iTunes Filesharing Verzeichnis.

    Wegen deiner anderen Frage: in der Weboberfläche werden die Gruppen auf oberster Ebene alle nebeneinander und alle Gruppen auf Ebene 2-6 untereinander dargestellt. Du musst für eine zweite Spalte also lediglich eine weitere Gruppe auf oberster Ebene in deiner Config.xml anlegen.

    #1011
    Thorsten Meißner
    Gast

    Hallo,

    das klappt schonmal, die Lampe leuchtet nicht beim Wert 0…. nur wie muss ich das machen das die Lampe bei 1 Leuchtet? Also Lampe_ein.png und Lampe_aus.png.

    so geht es wohl nicht….. : „icon.lampe_aus_{0}.png;icon.lampe_an_{1}.png“

    Wenn ich jedoch das gleiche png nehme was ich auch zum senden nehme dann macht der eine endlosschleife…..

    gruß

    Thorsten

    #1012
    admin
    Administrator

    Also deine Dateien heißen: „Lampe_ein.png“ und „Lampe_aus.png“, richtig?

    In LogoControl hast du folgenden valuetext-Block definiert?

    <attribute id="?" name="Status" address="???.?" datatype="bit">
    	<valuetext value="0" text="aus" />
    	<valuetext value="1" text="ein" />
    </attribute>

    Dann brauchst du folgende formatResponse:
    „icon.Lampe_{0}.png“

    {0} ist nur ein Platzhalter für eine String-Replace-Funktion in NetIO. Es hat nichts mit dem Wert 0 deiner Lampe zu tun. Der Platzhalter wird von NetIO einfach nur mit dem Text „aus“ oder „ein“ ersetzt. Wichtig ist nur, dass der Text aus deinem valuetext-Block mit dem Teil aus deinem Dateinamen übereinstimmt.

    #1017
    Thorsten Meißner
    Gast

    Hallo,

    danke jetzt funktioniert das….. ist ja eigentlich einfach 🙂 Gibt einen Trick das man diesen wechselnden Button auch zum senden nimmt, ohne das es eine endlosschleife gibt? Wenn das nicht geht ist auch nicht so wild.

    Vielen dank für die Hilfe!!!!

    Gruß

    Thorsten

    #1018
    virility
    Gast

    Zum senden eines Befehls musst du unter Attribute das Attribute „sends“ hinzufügen. Dort schreibtst du dann rein, was in der Logocontrol angesteuert werden soll, bspw:

    /rest/devices/1/methods/1

    Du musst hier nur die Nummer des Devices und der Methode anpassen. Logocontrol ist ja selbst so aufgebaut, dass es diesen Befehl nur für 250ms an die eigentliche Siemens Logo sendet. Wenn du jetzt einen Endlosbefehl hast, dann stimmt wohl etwas in der Programmierung der Logo nicht.

    Der große Admin hat das in dieser Grafik eigentlich schön verdeutlicht:
    Lampe-Netzwerkeingang.png

    Der geschaltete Netzwerkeingang muss immer ein Stromstoßrelais steuern, welches seines Zeichens einen Ausgang schaltet.

    #1020
    Thorsten Meißner
    Gast

    Hallo,
    zur Zeit habe ich eine eine Lampe als Button die den Befehl sendet. Als Rückmeldung erhalte ich einen kleinen grünen Button für an und einen roten für aus. Das funktioniert auch.

    Nur wenn ich den Lampen Button auch als Rückmeldung nutze also Lampe hell oder Dunkel… dann kommt diese Endlosschleife.

    Die Logoschaltung ist so wie die 2. Abbildung von oben aufgebaut.

    Gruß

    Thorsten

    #1021
    virility
    Gast

    Hast du evtl mal versucht einen zweiten Sends Befehl mit ‚__wait 1000’einzufügen? Vielleicht ist der Übergang Sende / Lesebefehl einfach zu kurz? Wäre ein Ansatz….

    #1022
    admin
    Administrator

    Hm, also unter Android funktioniert das auf jeden Fall problemlos, dass ich den selben Button mit wechselndem Image für die Anzeige als auch zur Bedienung mit „sends“ Befehl nutzen kann. Ist vielleicht ein Bug in der iOS-Version von NetIO und kann ich mangels iOS Device auch nicht nachvollziehen. Aber noch ne Idee: Nimm mal anstatt „sends“ den „release“-Befehl, welcher nicht bereits beim Drücken des Buttons sondern erst beim Loslassen verschickt wird.

    #1070
    admin
    Administrator

    Dir ursprüngliche Frage wurde geklärt. Die 2 weiteren Fragen wurden der übersichtlichkeit wegen in 2 neue Themen aufgesplittet:

    Rollo-ZPos UDF Block meldet als Position immer 1

    Gruppen in WebUI nebeneinander anzeigen

    Thema ist geschlossen.

15 Beiträge anzeigen - 1 bis 15 (von insgesamt 15)
  • Das Thema ‘NetIO App Controller Rückmeldung als *.png (formatResponse)’ ist für neue Antworten geschlossen.