Ankündigung

Einklappen
Keine Ankündigung bisher.

SmartHome.py

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

  • 2ndsky
    antwortet
    Hi Marcus,

    Zitat von mknx Beitrag anzeigen
    Freut mich! Es scheint Dir ja echt gefallen zu haben wenn Du das auf Dich nimmst.
    Habe dir ja am Münchner Stammtisch bei makki erzählt, dass ich noch nicht genau weiß wie ich Logiken realisieren soll. Nachdem ich jetzt beruflich ab und an mit Python zu tun habe ist das wesentlich interessanter für mich als Perl. Python ist für mich einfach schlüssiger. Hab mir dann deinen Code angesehen und gefallen daran gefunden

    Zitat von mknx Beitrag anzeigen
    An Nachahmer: Ich würde generell gleich den Schritt zu 2.7 empfehlen. Momentan ist zwar 2.6 ausreichend aber das ist auch schon angezählt. Bei Ubuntu 12.10 wird 3.0 als default installiert.
    Uff, ich dachte halt, weil auf der HP steht, dass es mit 2.6 getestet ist nehme ich auch einfach 2.6. Aber jetzt weiß ich ja wie es geht, da sollte auch 2.7 kein Problem mehr sein

    Zitat von mknx Beitrag anzeigen
    Das verstehe ich nicht ganz. Man kann viele GAs pro Item für unterschiedliche Aufgaben angeben (Init, Listen, Send, Reply..). Wenn aber man unterschiedliche Funktionen steuern möchte braucht man unterschiedliche Items.
    Das habe ich schon verstanden, je Item gebe ich den Typ an und über welche GAs der Wert geschrieben/gelesen etc. wird. Bei einer zweistufigen Hierarchie wie sie in 0.6 noch war, müsste man für eine Jalousie vier Items auf selber Ebene erstellen, also so:

    Code:
    ['wohnen']
        [['jalousie_langzeit']]
            type = bool
            ...
        [['jalousie_kurzzeit']]
            type = bool
            ....
        [['jalousie_position']]
            type = num
            ...
        [['jalousie_lamelle']]
            type = num
            ...
    Schöner wäre (was mit der mehrstufigen Hierarchie möglich sein sollte):

    Code:
    ['wohnen']
        [['jalousie']]
            [[['langzeit']]]
                type = bool
                ...
            [[['kurzzeit']]]
                type = bool
                ...
            [[['position']]]
                type = num
                ...
            [[['lamelle']]]
                type = num
                ...
    Damit ändert sich der Zugriff von sh.wohnen.jalousie_position() auf sh.wohnen.jalousie.position() was in meinen Augen besser ist. Auch Stockwerke (wie du sie ja in deiner neuen Konfig schon verwendest) sind natürlich sinnvoll für die Struktur.

    Eine andere Möglichkeit wäre, dass man mit abgeleiteten Items arbeitet. Also es gibt die "primitiven" Items, bei denen der Typ angegeben wird wie bisher und zusätzlich gibt es spezielle Items wie z.B. Jalousie und dimmbare Lampen. Denn eine Jalousie hat immer Langzeit-, Kurzzeit-, Position- und Lamellen-GAs. Vorteil hier wäre, man könnte für die Visu gleich Widgets anhand des Typs angeben die dann eben in einem Widget das Dimmen und An/Aus Schalten erlauben.

    Wegen der Unübersichtlichkeit: die Konfiguration ist zwar recht einfach, aber wird doch recht schnell ziemlich lang. Besser wäre, wenn man die Konfigurationsdatei auf mehrere aufteilen könnte (z.B. stockwerksweise), die man in der Hauptdatei lädt, ähnlich wie bei den Logiken.

    Zitat von mknx Beitrag anzeigen
    Es ist 'eigentlich' fertig. Ich muss aber noch testen und Dokumentation erstellen. Da ich momentan ein Haus renoviere komm ich aktuell leider nicht so schnell voran. Ich würde mal 1-2 Monate schätzen.

    Klar, Ich würde mich über eine Zusammenarbeit sehr freuen.
    Es gibt auch noch einen anderen Entwickler der gerade angefangen hat sich in SH.py einzuarbeiten und sein erstes Plugin geschrieben hat.
    Ich wollte eh mal ein SVN für den Code einrichten. Es würde sich anbieten das mit dem 0.7 Release zu kombinieren bzw. zum Beta-Test.
    Eigentlich hast du ja bei SF schon ein Git Repo, nur leider liegt der Code da nicht drin bzw. wenn ich es auschecke bekomm ich einen leeren Ordner. Weil wenn die 0.7 eigentlich fertig ist wäre es doch praktisch, wenn ich mir das gleich ansehe und bei mir teste. Weil ich fange jetzt natürlich nicht an, meine ganze Konfig zweistufig hinzufrickeln um dann auf mehrstufig umzustellen.

    Wenn dir das SVN Einrichten jetzt zu stressig ist, könntest du mir den jetzigen Code vielleicht schnell per Email schicken, dann kann ich wenigstens auf nem aktuellen Stand weiter machen und diffen kann ich es dann immer noch wenn du das Repo dann hast.

    Als Plugin würd ich als erstes was für'n ekey schreiben. Das habe ich bisher auch in Perl und erkennt genau einen meiner Finger. Aber bevor ich das in Perl zusammen frickel damit auch meine Freundin mal keyless eintreten kann, mach ich das lieber in Python wo ich weiß was ich tue (es geht ja auch immerhin um die Eingangstür)

    Beste Grüße
    Niko

    Einen Kommentar schreiben:


  • makki
    antwortet
    Wenn das "ernst" und wirklich notwendig (?) ist, versuche ich mal nen Backport.

    Die Frage ist: ist Python >2.5 wirklich notwendig oder nur aus bequemlichkeit/versehen? (Weil man die Abwärtskompatibilität nicht geprüft hat oder so )

    Makki

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Wer viel fragt bekommt viele Antworten ;-)

    Hi Niko,

    jetzt aber richtig.

    Zitat von 2ndsky Beitrag anzeigen
    Habe Smarthome.py heute mal im Büro getestet und war recht angetan. Nun wollte ich es auf'm Wiregate installieren, was aber nicht ganz einfach ist. Da dort standardmäßig Python2.5 installiert ist und ein einfaches Update auf 2.6 nicht möglich, da nicht im Repo, hab ich 2.6 aus den sourcen parallel installiert.
    Freut mich! Es scheint Dir ja echt gefallen zu haben wenn Du das auf Dich nimmst.
    An Nachahmer: Ich würde generell gleich den Schritt zu 2.7 empfehlen. Momentan ist zwar 2.6 ausreichend aber das ist auch schon angezählt. Bei Ubuntu 12.10 wird 3.0 als default installiert.

    Zitat von 2ndsky Beitrag anzeigen
    noch ne allgemeine Frage: in der smarthome.conf muss ich quasi für jede GA einen separaten Eintrag erstellen, sehe ich das richtig? Also z.B. bei Lampen die dimmbar sind brauche ich einen für schalten und einen für dimmen. Ebenso bei Jalousien einen für AUF/AB, einen für Position Behang und einen für Position Lamelle. Wird das nicht schnell etwas unübersichtlich?
    Das verstehe ich nicht ganz. Man kann viele GAs pro Item für unterschiedliche Aufgaben angeben (Init, Listen, Send, Reply..). Wenn aber man unterschiedliche Funktionen steuern möchte braucht man unterschiedliche Items.

    Zitat von 2ndsky Beitrag anzeigen
    Kannst du mal ne config von dir posten?
    Anbei eine Config (0.7) von meiner Entwicklungsmaschine. Die Visu dazu packe ich in den Anhang.
    Code:
    lat = 49.48
    lon = 9.59
    elev = 177
    tz = 'Europe/Berlin'
    
    
    [dg]
        name = Dachgeschoss
        [[buero]]
            name = Büro
            [[[temp]]]
                type = num
                name = Temperatur
                cache = yes
                visu = div
            [[[hum]]]
                name = Luftfeuchtigkeit
                type = num
                cache = yes
            [[[dew]]]
                name = Taupunkt
                type = num
                eval_trigger = dg.buero.temp, dg.buero.hum
                eval = "sh.tools.dewpoint(sh.dg.buero.temp(), sh.dg.buero.hum())"
                visu = div
            [[[motion]]]
                name = Bewegung
                type = bool
                visu = toggle
    
    [og]
        name = Obergeschoss
        [[schlafzimmer]]
            name = Schlafzimmer
            [[[temperature]]]
                name = Temperatur
                type = num
                visu = slider
        [[ankleide]]
            name = Ankleide
        [[kinderbad]]
            name = Kinderbad
        [[elternbad]]
            name = Elternbad
        [[kind1]]
            name = Kind 1
        [[kind2]]
            name = Kind 2
        [[flur]]
            name = Flur
    
    [eg]
        name = Erdgeschoss
        [[wohnzimmer]]
            name = Wohnzimmer
            [[[temperature]]]
                name = Temperatur
                type = num
                visu = slider
        [[kueche]]
            name = Küche
        [[vorrat]]
            name = Vorratsraum
        [[abstell]]
            name = Abstellraum
        [[essen]]
            name = Essen
        [[eingang]]
            name = Eingang
        [[garderobe]]
            name = Garderobe
        [[wc]]
            name = WC
        [[flur]]
            name = Flur
    
    [kg]
        name = Keller
        [[hauswirtschaft]]
            name = Hauswirtschaft
        [[technik]]
            name = Technik
        [[werkstatt]]
            name = Werkstatt
            [[[temperature]]]
                name = Temperatur
                type = num
                visu = slider
    
    [aussen]
        name = Außenbereich
        [[garage]]
            name = Garage
        [[terasse]]
            name = Terasse
        [[wetter]]
            name = Wetter
            [[[temperature]]]
                name = Temperatur
                type = num
                visu = slider
            [[[strahlung]]]
                name = Strahlung
                type = num
                visu = slider
    
    [haus]
        [[bewohnt]]
            type = bool
            eval = or
            eval_trigger = marcus.anwesend, frau.anwesend
    
    [marcus]
        name = Marcus
        [[anwesend]]
            type = bool
            visu = toggle
        [[urlaub]]
            type = bool
    
    [frau]
        [[anwesend]]
            type = bool
    
    [autovisu]
        name = Visu Elemente
        [[text]]
            value = default text
            type = str
            visu = text
        [[textarea]]
            value = default text area
            type = str
            visu = textarea
        [[toggle]]
            value = True
            type = bool
            visu = toggle
        [[slider]]
            value = 40
            type = num
            visu = slider
        [[select]]
            value = 1
            type = str
            visu = select
            visu_opt = 1, 2, 3
        [[radio]]
            value = 3
            type = str
            visu = radio
            visu_opt = 1, 2, 3
        [[checkbox]]
            value = False
            type = bool
            visu = checkbox
        [[div]]
            value = default div
            type = str
            visu = div
        [[span]]
            value = default span
            type = str
            visu = span
        [[img]]
            value = /img/weather/30.png
            type = str
            visu = img
        [[dynamic_img]]
            value = True
            type = bool
            visu = img
            visu_img = /img/off.png, /img/on.png
        [[push]]
            value = True
            type = bool
            visu = push
            visu_img = /img/on.png, /img/on.png
        [[switch]]
            value = True
            type = bool
            visu = switch
            visu_img = /img/off.png, /img/on.png
    Und ein KNX-Teil meiner Produktiv-Installation:
    Code:
    [led]
        type = bool
        knx_dpt = 1
        knx_listen = 1/1/4
        knx_send = 1/1/3
        knx_init = 1/1/4
    Verständlich?

    Zitat von 2ndsky Beitrag anzeigen
    Weißt du schon, wann du die 0.7 releasen willst?
    Es ist 'eigentlich' fertig. Ich muss aber noch testen und Dokumentation erstellen. Da ich momentan ein Haus renoviere komm ich aktuell leider nicht so schnell voran. Ich würde mal 1-2 Monate schätzen.
    Zitat von 2ndsky Beitrag anzeigen
    Besteht Interesse an einer Zusammenarbeit oder willst du das alleine pflegen?
    Klar, Ich würde mich über eine Zusammenarbeit sehr freuen.
    Es gibt auch noch einen anderen Entwickler der gerade angefangen hat sich in SH.py einzuarbeiten und sein erstes Plugin geschrieben hat.
    Ich wollte eh mal ein SVN für den Code einrichten. Es würde sich anbieten das mit dem 0.7 Release zu kombinieren bzw. zum Beta-Test.

    Bis bald

    Marcus
    Angehängte Dateien

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Zitat von mknx Beitrag anzeigen
    Mit 0.7 kann man beliebige (tiefe) Hierarchien bauen und nicht mehr nur zwei Ebenen. Weiterhin wird auch eine einfache Visu automatisch erzeugt.
    Und das sagst du mir jetzt... hab gerade angefangen das für beliebig tiefe Hierarchien umzuschreiben

    Weißt du schon, wann du die 0.7 releasen willst?
    Besteht Interesse an einer Zusammenarbeit oder willst du das alleine pflegen?

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    Ich bin gerade auf der Baustelle, heute Abend kann ich ausführlicher antworten und eine Konfiguration posten.

    Mit 0.7 kann man beliebige (tiefe) Hierarchien bauen und nicht mehr nur zwei Ebenen. Weiterhin wird auch eine einfache Visu automatisch erzeugt.

    Bis dann

    Marcus

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    noch ne allgemeine Frage: in der smarthome.conf muss ich quasi für jede GA einen separaten Eintrag erstellen, sehe ich das richtig? Also z.B. bei Lampen die dimmbar sind brauche ich einen für schalten und einen für dimmen. Ebenso bei Jalousien einen für AUF/AB, einen für Position Behang und einen für Position Lamelle. Wird das nicht schnell etwas unübersichtlich?

    Kannst du mal ne config von dir posten?

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    @Axel (panzaeron):

    könntest du bitte mal deine Visu (also den Code) hier einstellen oder zumindest mal Teile davon, damit man sich nicht alles selber zusammen suchen muss. Dachte zuerst das würde nach den Einstellungen in der smarthome.conf automatisch erstellt, aber dem ist wohl nicht so.

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Habe Smarthome.py heute mal im Büro getestet und war recht angetan. Nun wollte ich es auf'm Wiregate installieren, was aber nicht ganz einfach ist. Da dort standardmäßig Python2.5 installiert ist und ein einfaches Update auf 2.6 nicht möglich, da nicht im Repo, hab ich 2.6 aus den sourcen parallel installiert. Hier mein kleines Installationslog:

    gcc installieren

    apt-get install gcc

    zlib installieren

    wget http://zlib.net/zlib-1.2.7.tar.gz
    tar -xvzf zlib-1.2.7.tar.gz
    cd zlib-1.2.7
    ./configure --shared --prefix=/usr/local
    make
    make install

    readline installieren

    wget ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz
    tar -xvzf readline-6.2.tar.gz
    cd readline-6.2
    ./configure --prefix=/usr/local
    make
    make install

    python installieren

    wget http://python.org/ftp/python/2.6.8/Python-2.6.8.tgz
    tar -xvzf Python-2.6.8.tgz
    cd Python-2.6.8
    ./configure --prefix=/usr/local --with-threads --with-zlib=/home/user/zlib-1.2.7 --with-readline=/home/user/readline-6.2
    make
    make install

    setuptools installieren

    wget http://pypi.python.org/packages/2.6/...6c11-py2.6.egg
    sh setuptools-0.6c9-py2.4.egg --prefix=/usr/local/

    python-configobj installieren

    apt-get install mercurial
    hg clone https://code.google.com/p/configobj/
    cd configobj
    python2.6 setup.py install

    python-dateutil installieren

    wget http://labix.org/download/python-dat...til-1.5.tar.gz
    tar -xvzf python-dateutil-1.5.tar.gz
    cd python-dateutil-1.5

    --> Makefile anpassen => Python auf Python2.6 ändern, prefix /local anhängen
    make
    make install

    Modul pyephem installieren

    easy_install pyephem

    smarthome.py installieren

    siehe Anleitung auf HP
    Da das ganze Linux make Zeugs noch recht neu ist, hoffe ich mal, dass das alles passt. Vielleicht kann da ja mal jemand drüber schauen. Daher nur nachmachen auf eigene Gefahr

    Smarthome.py läuft damit nun erstmal, aber da es jetzt doch etwas später geworden ist teste ich morgen weiter.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von makki Beitrag anzeigen
    Das Rad muss man nicht nochmal erfinden, das fetch mit JSON ist mittlerweile übrigends Upstream..
    Danke für den Hinweis. Ich will den Weg über 'xport' json und flot gehen. Dort fehlen allerdings die Python-Bindings. Da muss ich mich mit C rumquälen und das dann Upstream bringen...

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • makki
    antwortet
    [QUOTE=mknx;236228][*]dynamische Graphiken aus den RRD Daten erzeugen
    Das Rad muss man nicht nochmal erfinden, das fetch mit JSON ist mittlerweile übrigends Upstream..

    Zitat von mknx Beitrag anzeigen
    Nachtrag: das lag daran das ich die 'Ping' Nachrichten nicht richtig behandelt hatte.
    Nicht nur das, das owfs war zwischen 2.7p34 und 2.8p15 einfach total broken, das hat mich auch genau solange gekostet (warens 2 oder 3J?) darauf lang genug rumzureiten ;p

    Makki

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von mknx Beitrag anzeigen
    Hmmm, mit 2.8p13 liefert der owserver für '/uncached/SENSORID/temperature' in den seltesten Fällen einen Wert zurück. => SH.py sieht nichts
    Nachtrag: das lag daran das ich die 'Ping' Nachrichten nicht richtig behandelt hatte. Mit https://knx-user-forum.de/knx-eib-fo...py-v0-6-a.html und dem aktuellen owfs klappt das recht anständig.

    Zitat von panzaeron Beitrag anzeigen
    Ich hatte die Idee, bei den Rollläden noch einen (Submit-)Button hinter den Slidern einzufügen der z.B. Beschatten heißt und wenn man darauf klickt, wird einfach nur an das mit data-sh angegebene Objekt ein vorher definierter Wert geschickt, am Beispiel der Beschattung z.B. 60 (60%). Ich finde es für manche Anwendungsfälle besser einen Button zu drücken als die Position mit dem Slider anzufahren.
    Mit dem aktuellen Release kannst Du dafür img-Buttons verwenden.
    Wenn es gar nicht taugt kann ich auch noch normale Buttons einbauen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    Hallo Markus
    Zitat von mknx Beitrag anzeigen
    Wie meinst Du das genau? Was für einen Wert möchtest Du wieso, wohin senden?
    Man kann momentan mit einen Button nur feste Werte an eine Logik schicken.
    Ich könnte aber relativ einfach auch die Funktion für CSS-Buttons oder IMG-Buttons einbauen.
    Ich hatte die Idee, bei den Rollläden noch einen (Submit-)Button hinter den Slidern einzufügen der z.B. Beschatten heißt und wenn man darauf klickt, wird einfach nur an das mit data-sh angegebene Objekt ein vorher definierter Wert geschickt, am Beispiel der Beschattung z.B. 60 (60%). Ich finde es für manche Anwendungsfälle besser einen Button zu drücken als die Position mit dem Slider anzufahren.

    So, als Idee für ein paar Stunden mit langerweile, wäre für die Visu auch noch ein ColorPicker mit dem über drei Objekte die RGB-Farbwerte übergeben werden können (Grundlage könnte der Farbtastic Color Picker oder direkt als Mobile-Plugin der Gautier Color Picker Mobile sein).

    Das deine Planung auch die Darstellung von RRD Daten vorsieht finde ich gut

    Dein Smarthome.py habe ich nicht auf dem Wiregate laufen, weil dort leider nur Python 2.5 installiert ist, das smarthome.py und die visu laufen auf meinem kleinen Atom-Server mit guter Geschwindigkeit...

    Viele Grüße

    Axel

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Axel,

    danke erst einmal für das postive Feedback mit den nützlichen Ergänzungen.
    Du hast da ja schon was nettes zusammengebaut. Wie bist Du denn mit der Geschwindigkeit auf dem WG zufrieden?

    Zitat von panzaeron Beitrag anzeigen
    Nachteil ist die direkte fehlende Verschlüsselung (für mich nicht wichtig, da ich es eh nur über eine VPN-Verbindung nutzen würde).
    Das kommt noch. Ich habe schon mal angefangen TLS mit Client-Zertifikaten für die WebSocket-Verbindung zu implementieren. Das hakt aber noch und mir ist das nächste Release, das unter der Haube massive Veränderungen erfahren hat, 'dazwischen' gekommen.

    Zitat von panzaeron Beitrag anzeigen
    Dann noch eine kurze Frage (vielleicht habe ich das auch übersehen), ist es möglich mit einem Button einen festen Wert zu senden (z.B. 0,1 oder 60 ) ohne die Verwendung einer Logik?
    Wie meinst Du das genau? Was für einen Wert möchtest Du wieso, wohin senden?
    Man kann momentan mit einen Button nur feste Werte an eine Logik schicken.
    Ich könnte aber relativ einfach auch die Funktion für CSS-Buttons oder IMG-Buttons einbauen.

    Zitat von panzaeron Beitrag anzeigen
    Bin gespannt wie sich die Visu noch entwickelt, gerade weil es nicht der Schwerpunkt von deinem Projekt ist...
    ToDo für die Visu:
    • TLS Client-Zertifikate für WebSocket
    • dynamische Graphiken aus den RRD Daten erzeugen
    • ...


    bis bald

    Marcus

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    Erstmal danke für die Antwort, und besonders für den Tipp mit dem Step.

    Nach meinen ersten Test mit jQuery Mobile und deinem SmartHome.py, gefällt mir die Visu ganz gut. Folgendes empfinde ich als positiv:
    • jQuery Mobile ermöglicht verhältnismäßig schnell eine Visu zusammen zu bauen.
    • Mit dem Multiview Plugin ist es einfach eine Visu sowohl auf einem Tablet/PC als auch auf einem Smartphone zu nutzen, ohne das die Visu Platz verschwendet und trotzdem einigermaßen gut aussieht (fast natives Look and Feel).
    • Verschiedene Themes sind vorhanden und neue können komfortable erzeugt werden.
    • Erweiterbar mit Plugins


    Nachteil ist die direkte fehlende Verschlüsselung (für mich nicht wichtig, da ich es eh nur über eine VPN-Verbindung nutzen würde).

    Dann noch eine kurze Frage (vielleicht habe ich das auch übersehen), ist es möglich mit einem Button einen festen Wert zu senden (z.B. 0,1 oder 60 ) ohne die Verwendung einer Logik?

    Bin gespannt wie sich die Visu noch entwickelt, gerade weil es nicht der Schwerpunkt von deinem Projekt ist...

    P.S.: Der Slider funktioniert bei mir noch nicht sauber, aber ich warte auf deine neue Version und werde dann nochmal testen...
    Angehängte Dateien

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von panzaeron Beitrag anzeigen
    Meine erste Test Visu funktioniert (Licht an/aus), aber das Dimmen funktioniert nur kurz, z.B. einmal heller oder dunkler und dann nicht mehr (auch die Aktualisierung funktioniert dann nicht, andere Button wie z.B. an/aus aber schon). Ein Neustart von smarthome.py hilft kurzzeitig, hast du eine Idee was das sein könnte?
    Ich vermute einen Bug. Ich bin gerade dabei eine neue Version zu testen und zu dokumentieren, die den Bug wahrscheinlich nicht mehr hat (Ich hatte ein ähnliches Problem). 1-2 Wochen, dann sollte es soweit sein. Sorry.

    Zitat von panzaeron Beitrag anzeigen
    Ist es möglich die Verzögerungszeit für die Aktualisierung des Sliders einzustellen (Toggel-Button praktisch sofort, Slider ca. 5s verzögert)?
    Momentan leider nicht. Wieso?
    Ich verwende die Schrittweite (stepping) der Slider um nicht jede kleinste Änderung zu senden.

    Bis bald

    Marcus

    P.S. wir können auch per PN/E-Mail Dein Problem nachvollziehen/lösen

    Einen Kommentar schreiben:

Lädt...
X