Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnisfragen

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

  • MaBo76
    antwortet
    Ich habe den Firefox installiert und es läuft! :-)

    Gruß Maik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    oh, Android unterstützt wohl keine Websockets!

    Siehe Can I use... Support tables for HTML5, CSS3, etc
    Testen kann man es z.B. bei WebSocket.org | Echo Test

    Man kann aber wohl mobile firefox verwenden, das geht angeblich.

    Das tut mir Leid, aber mit dem Standard Android Browser wird das wohl nix.

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Es erscheint keine Fehlermeldung - smarthome.py bekommt gar nicht mit wenn ich den Browser auf den Android Geräten starte.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Wenn Du die Fehlermeldung liest, dann passiert auf dem Socket nichts mehr. Der wird dann geschlossen.
    Kannst Du die Fehlermeldung bitte mal posten?

    Danke

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Die Websocket Meldung erscheint wenn ich den Firefox öffne wo alles OK ist.
    Bei den Android Teilen (4.0.4 + 4.0.3 + 2.0.3) Passiert gar nichts auf der Console.

    :-(

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Maik,

    ich befürchte da klappt die Websocket-Kommunikation mit Android nicht.

    Welche Android Version verwendest Du und was sagt smarthome.py, wenn Du es mit 'smarthome.py -n' aufrufst?

    Steht da etwas von "Handshake for XXX with the following header failed!"?

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Hier noch einmal der ganze Code:

    Code:
    root@smarthome:~# cat /var/www/test.html
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <meta name="apple-mobile-web-app-capable" content="yes" />
            <meta name="apple-mobile-web-app-status-bar-style" content="black" />
            <title>SmartHome.py</title>
            <link rel="stylesheet" href="/css/jquery.mobile.min.css" />
            <link rel="stylesheet" href="/css/my.css" />
            <script src="/js/jquery.min.js"></script>
            <script src="/js/jquery.mobile.min.js"></script>
            <script src="/js/smarthome.min.js"></script>
            <script src="/js/my.smarthome.js"></script>
        </head>
    <body>
    <div data-role="page" id="example">
        <div data-role="header"><h3>MaBo's Visu </h3></div>
        <div data-role="content">
    
    <div data-role="fieldcontain">
        <label for="temp1">Heizung Vorlauf Temperatur</label>
        <input id="temp1" data-sh="temperatur.h-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp2">Heizung Rücklauf Temperatur</label>
        <input id="temp2" data-sh="temperatur.h-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp3">Fußboden Vorlauf Temperatur</label>
        <input id="temp3" data-sh="temperatur.f-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp4">Fußboden Rücklauf Temperatur</label>
        <input id="temp4" data-sh="temperatur.f-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp5">Warmwasserspeicher Temperatur</label>
        <input id="temp5" data-sh="temperatur.speicher" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp6">Keller Temperatur</label>
        <input id="temp6" data-sh="temperatur.keller" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp7">Aussen Temperatur</label>
        <input id="temp7" data-sh="temperatur.aussen" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp8">Luft Feuchtigkeit</label>
        <input id="temp8" data-sh="temperatur.humidity""test" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="example_toggle">Büro Deckenstrahler</label>
        <select id="example_toggle" data-sh="licht.buero" data-role="slider"><option value="off">Off</option><option value="on">On</option></select>
    </div>
    
        </div> <!-- /content -->
        <div data-role="footer" data-position="fixed">
            <div data-role="navbar" data-iconpos="top">
                <ul>
                    <li><a href="/example.html#html">HTML</a></li>
                    <li><a href="/example.html#trigger">Logic Trigger</a></li>
                    <li><a href="/example.html#form">Form</a></li>
                    <li><a href="/gen/">Generated</a></li>
                </ul>
            </div><!-- /navbar -->
        </div><!-- /footer -->
    </div><!-- /page -->
    
    </body>
    </html>
    Ich habe mir das so aus der example.html kopiert und angepasst. Jetzt die IDs und die 1011 wie vorgeschlagen geändert.

    Es bleibt aber leider alles beim alten! Im Firefox unter Ubuntu 12.04 ist alles OK. Aber auf den Android Geräten werden die Werte nicht angezeigt und das Licht kann ich da auch nicht schalten.

    Bei der VISU Generierung habe ich das gleich Problem.

    Gruß Maik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Maik,

    freut mich das wir Dich begeistern konnten.

    Zu Deinem Problem:
    Was ist das für Code? Sieht ein bisschen unvollständig aus. Da fehlt ja Header und Footer. Und woher kommt das HTML, hast Du das erzeugt?

    Was mir auffällt, dort steht mehrmals id="temp". Die id sollte bei HTML wirklich eindeutig sein.

    Und Du hast ein Item '1011' unter dem Item 'licht' angelegt? Das würde ich vermeiden und nur Items mit ASCII-Buchstaben verwenden. Auf keinen Fall Ziffern am Anfang, das mag Python nicht so gerne.


    Hast Du mal die automatische Visu Generierung probiert? Für den Einstieg hilfreich.

    Bis morgen & Gute Nacht

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Vielen Dank für deine Beispiele!
    Ich denke ich taste mich so langsam ran an die Sache und muss sagen ich bin bis jetzt total begeistert von samrthome.py.

    Ich versuch mich gerade an der VISU und habe auch hier ein Problem!
    Wenn ich das hier auf meinem Desktop mit Firefox aufrufe, werden mir die Werte angezeigt und ich kann auch das Licht schalten. Aber auf meinem Galaxy S2 und auf dem Galaxy Tab werden mir die Werte nicht angezeigt :-(

    Code:
    <div data-role="fieldcontain">
        <label for="temp">Heizung Vorlauf Temperatur</label>
        <input id="temp" data-sh="temperatur.h-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Heizung Rücklauf Temperatur</label>
        <input id="temp" data-sh="temperatur.h-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Fußboden Vorlauf Temperatur</label>
        <input id="temp" data-sh="temperatur.f-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Fußboden Rücklauf Temperatur</label>
        <input id="temp" data-sh="temperatur.f-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Warmwasserspeicher Temperatur</label>
        <input id="temp" data-sh="temperatur.speicher" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Keller Temperatur</label>
        <input id="temp" data-sh="temperatur.keller" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Aussen Temperatur</label>
        <input id="temp" data-sh="temperatur.aussen" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Luft Feuchtigkeit</label>
        <input id="temp" data-sh="temperatur.humidity" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="example_toggle">Büro Deckenstrahler</label>
        <select id="example_toggle" data-sh="licht.1011" data-role="slider"><option value="off">Off</option><option value="on">On</option></select>
    </div>
    Gruß Maik

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hallo Maik,

    freut mich, dass es läuft. Das mit enforce_updates ist sogar noch besser als mein Vorschlag!

    Die Doku kennst du oder? http://mknx.github.com/smarthome/

    Ansonsten kannst du in den Logiken alles machen was man mit Python eben machen kann
    Ich schalte z.B. momentan im Technikraum beim Betreten auch einen Lautsprecher ein (war ursprünglich zum Testen des Russound Plugin, aber da dort auch Lebensmittel und Schuhe drin sind betreten wir den Raum öfters und die bessere Hälfte fand das mit der Musik ganz nett und daher hängt da immer noch ein notdürftig angeschlossenes Logitech Soundsystem). Die Logik dafür ist extrem einfach:

    Code:
    sh.eg.technik.audio(sh.eg.technik.licht())
    getriggert wird das ganze vom Licht, also:

    Code:
    ['audio_technik']
        filename = audio_technik.py
        watch_item = eg.technik.licht
    oder wenn ich meine Terrassentüre schließe soll die Jalousie (die automatisch beim Öffnen hochgefahren wurde) sich gleich ausrichten wie die Jalousie daneben:

    Code:
    if sh.eg.essen.terrassen_tuer() is False:
        sh.eg.essen.jalousie.mitte.position(sh.eg.essen.jalousie.rechts.position())
        sh.eg.essen.jalousie.mitte.lamelle(sh.eg.essen.jalousie.rechts.lamelle())
    Hoffe damit ein paar Ideen geweckt zu haben und dass du dir das mit den Logiken nun etwas besser vorstellen kannst. Vielleicht wäre es einfacher, wenn du konkrete Fragen oder Ideen hättest.

    Ansonsten wünsche ich weiterhin viel Spass mit smarthome.py

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Es klappt!
    Aber das mit :
    Code:
    if sh.haustuer.klingel() is True:
    Habe ich nicht hin bekommen. Dann passiert gar nichts mehr!

    Da der Taster nur ON sendet lief die Logic auch nur einmal. Ich habe das Item jetzt so geändert:

    Code:
    [haustuer]
        [[klingel]]
            type = bool
            enforce_updates = on
            knx_dpt = 1
            knx_listen = 6/0/0
    Damit klappt es! Natürlich klingeln die Telefone auch wenn ein OFF gesendet wird aber der Fall tritt ja nicht ein.

    Trotzdem würde ich gerne die Logic verstehen.
    Gibt es noch Beispiele die beim Verstehen helfen?

    Gruß Maik

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hallo Maik,

    du legst eine Datei mit dem Inhalt der Logik im Ordner logics an. Das könnte z.B. so aussehen:

    /usr/local/smarthome/logics/doorbell.py
    Code:
    #!/usr/bin/env python
    # make asterisk call if door bell button is pushed
    sh.ast.call('LOCAL/2222', '1233', 'kingel')
    Anschließend musst du die Logik mit deiner definierten Klingel verknüpfen. Dazu registrierst du die oben angelegte Datei in der logics.conf

    Code:
    # /usr/local/smarthome/etc/logic.conf
    [doorbell]
        filename = doorbell.py
        watch_item = haustuer.klingel
    Damit wird die Logik immer ausgeführt sobald sich der Wert von haustuer.klingel ändert. Evtl. musst du bei der Logik vor dem Asterisk Call noch ein:

    Code:
    if sh.haustuer.klingel() is True:
    einfügen, damit das Telefon nicht klingelt wenn der Wert der Türklingel wieder von eins auf null geht. Aber das musst du dann einfach ausprobieren.

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Ich bin zu doof!

    Asterisk und smarthome sind jetzt verbunden.

    Aber wie schreibe ich die Logic ???

    Code:
    #/usr/local/smarthome/items/klingel.conf
    ['haustuer']
        [['klingel']]
            type = bool
            knx_dpt = 1
            knx_listen = 6/0/0
    Wie geht es weiter um:
    Code:
    sh.ast.call('LOCAL/2222', '1233', 'kingel')
    abzuschicken?


    Alles was ich versucht habe erbrachte nur Fehlermeldungen.

    Gruß Maik

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Vielen Dank,
    jetzt klappt es!

    Dann versuche ich jetzt mal Asterisk mit mit dem Klingeltaster zu verbinden.

    Gruß Maik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Maik,

    Zitat von MaBo76 Beitrag anzeigen
    Ich habe die Zeile 178 in /usr/local/smarthome/plugins/knx/__init__.py
    in:
    self.groupwrite(dst, item(), item.conf['knx_dpt'], 'response')
    geändert.

    Ich denke mal du meinst self und nicht elf.
    ja genau.

    Probiere bitte mal die angehängte Datei. Sie muss nach /usr/local/smarthome/plugins/knx/__init__.py kopiert werden. Dort habe ich einen Bug gefixt.
    Ich kann es momentan leider nicht in git einchecken.

    Bis bald

    Marcus
    Angehängte Dateien

    Einen Kommentar schreiben:

Lädt...
X