Unterstützung für erstes PlugIn (HomeControl)

  • Moin,


    für meine Haussteuerung möchte ich ein kleines PlugIn schreiben.
    Momentan bin ich noch in der "was geht so" Phase.
    Nachdem ich meinen Controler mit Ethernetchip zum Laufen gebracht habe (erstmal nur mit LEDs zum Testen),
    bin ich jetzt dabei mal zu sehen mit was man den Controler so alles ansteuern kann.


    Mit der Ansteuerung über Android habe ich schon eine kleine Gartenbewässerung für die Ferien realisiert.
    Das Steuern der Rasensprenger vom Strand aus hat prima geklappt.


    http://bascom-forum.de/showthr…3760&viewfull=1#post23760
    http://bascom-forum.de/showthr…2889&viewfull=1#post32889
    http://youtu.be/IY1C03eHWbg


    Jetzt bin ich dabei, die Steuerung mit einem Python-PlugIn auf meiner SOLO² zu testen.
    Erste Erfolge haben sich schon abgezeichnet......
    Ich habe ein Tutorial-PlugIn schon um die Abfrage der Zifferntasten und das Senden und Enpfangen von UDP-Paketen ergänzt.


    http://youtu.be/93U40xkn_9w


    python.py


    Momentan versuche ich aus dem ersten Fernster heraus ein zweites zu öffnen.
    Leider nur mit mäßigem Erfolg, grün wird nicht meine Lieblingsfabe, soviel steht fest.
    Ich komme eigentlich aus der Pascal / Delphi-Welt, auf mit VBA komme ich gut zurecht.


    Ich meine schon verstanden zu haben, dass das neue Fenster in einer eigenen class definiert werden muss,
    in dieser müssen dann sowohl das Skin als auch die Actions implementiert werden.
    Ich lebe momentan vom sehen und verstehen....


    Hat jemand die Lust und die Zeit mir bei einigen "Unwegbarkeiten" unter die Arme zu greifen?


    Fürs Erste wäre mir sehr geholfen wenn mir jemand in mein programm ein zweites Fenster einbauen könnte bzw.
    mich an die Hand nimmt.
    Dieses könnte z.B. über einen weiteren Listeintrag angezeigt werden.
    Im neuen Fenster sollte sich dann ein zurück Button befinden.


    Das würde mir für das Syntxverständnis sehr weiterhelfen.
    Wie wäre der Unterschied ob das erste Fenster weiterhin auf Actions reagiert bzw. das neue Fenster erst wieder geschlossen werden muss.
    Bei VBA nennt sich das Modal bzw. PopUp.



    Wäre scön wenn sich jemand erbarmt.


    Gruß
    Pf@nne

  • Habs hin gefummelt.....



    Der Aufruf erfolgt über

    Code
    self.session.open(MyPics, "ARG")


    Kann man das Schließen des ersten Screens verhindern?


    P.S.
    Hab vergessen eine Chancel-Methode einzufügen......

  • Den zweiten Screen verläßt Du wie?
    Mit self.close() erhalte ich wieder den ersten.


    Allerdings habe ich die zweite class in einer eigenen py.
    Diese zweite py importiere ich in der ersten py mit import zweite, damit ich sie ansprechen kann mit self.session.open...

  • Moin,


    Zitat

    Den zweiten Screen verläßt Du wie?


    Momentan mit nur mit der Exit-Taste und dem self.close() aufruf.


    Welchen Vorteil hat die Auslagerung des zweiten Screens?
    Wie kann man verhindern, dass der erste Screen geschlossen wird?


    Danke für die Tips.......

  • Wenn Du den zweiten Screen/Class in eine extra py auslagerst, wird die erste py nicht beendet.
    Sobald die zweite geclosed wird, ist die erste wieder aktiv.


    Ob das auch anders geht und Du einfach nur ein session.open der ersten machen musst, weiss ich grad auch nicht. Müsste man mal probieren.

  • Ich habe den zweiten Screen jetzt ausgelagert und in der plugin.py importiert.
    Ich sehe da aber keinen Unterschied.....


    Nach dem Aufruf des zweiten Screens mit self.session.open,
    wird der Erste unsichtbar, bleibt aber wohl geladen.
    Nach Beendigung des zweiten kommt der erste wieder.


    Ich wollte, dass der Erste sichtbar bleibt, geht das überhaupt?


    Falls es geht wäre da noch die Frage ob auch die Actions aktiv bleiben.

  • OK,


    ich finde die Anzeige von Pics "etwas" sagen wir mal komplex.
    Geht das mit einer Libary irgendwie einfacher?


    Ist es denn möglich über einem bestehenden Bild ein zweites zu laden und auch wieder auszublenden bzw. durch ein anderes zu ersetzen?

  • Hmmm...


    ich starre nun schon seid geraumer Zeit auf die new_screen.py.
    Es erschließt sich mir einfach nicht wo ich ansetzen soll um ein zweits Pic zu laden, ganz zu schweigen vom Ausblenden.


    Ich würde die new_screen mal um die Actions erweitern....
    Würdest du mich dann beim Erweitern unterstützen?


    Kannst du sehen warum die MsgBox in der plugin.py Zeile 116-118
    nicht funzt bzw. einen GS macht?

  • einfach ein 2. widget <widget name="myPic2" .... erstellen, so es 2 gleichzeitige sein sollen.
    Was kommt denn für ein GS?


    ahmmm self.session.open(MessageBox..... glaub das braucht ne session

  • Zitat

    self.session.open(MessageBox


    hatte ich schon, dann kommt im Log der Hinweis auf das self....


    Die def befindet sich außerhalb der class, muss da was beachtet werden?

  • die session musst du dir irgendwie merken bzw. übergeben "SendUDP(ChValue,self.session)"


    def SendUDP(ChValue,sess):
    sess.open(....


    Ich weis nicht, ob man die auch mit MyMenu.session bekommt.

  • Mit Übergabe der Session geht die MsgBox!....... Danke


    Ich richte jetzt mal die Action-Struktur und die Widgets für das wechseln des Pics ein. Dauert aber ein wenig, die Familie möchte gerne auch mal was vom Fernseher haben.....



    Danke für deine Unterstützung!!



    Gruß
    Pf@nne

  • Moin,


    ich habe es jetzt hin 2 Pics anzuzeigen, jedoch nur mit dem "satloader.png",
    ändere ich "satloader.png" in "ON.png" dann meckert er, dass das File nicht gefunden wird.


    Ich bin mir auch nicht sicher ob ich für das Pic ein ePixmap oder ein Widget nutzen soll.


    Auch das .hide() klappt noch nicht, ich vermute, dass liegt an der fehlenden initialisierung des Pics, weiß aber leider auch nicht wie diese initialisiert werden.


    Ich habe jetz wohl versucht ein Label draus zu machen
    self["Pic1"] = Label(_("xxx"))
    Das geht aber weder zu verstecken, noch werden die "xxx" angezeigt.


    Über die weitere Unterstützung würde ich mich freuen.


    Grüße aus dem sonnigen Hamburg
    Pf@nne

  • Wieso hast du die ganze Bildlade Funktionalität entfernt? Anders geht das nicht.


    Definition so, Beispiel:


    laden:


    Bildname = "/tmp/MeinBild.png"
    self.picload.startDecode(Bildname)


    So mal schnell durcheinander geschrieben, musst noch mal genauer schauen. Für das 2.Bild das Gleiche nochmal mit anderen Funktionsnamen.

  • Hi,


    hab noch mal gefummelt.....


    Das show/hide klappt jetzt! .......Danke für den Tip!


    Ich lasse jetzt beide Bilder laden, leider wird das erste Pic wohl vom zweiten überlager und ist nicht mehr zu sehen......


    Ich habe auch versucht die


    def DecodePicture2(self, PicInfo = ""):
    def ShowPicture2(self):

    umzuschreiben, so dass sie für beide (weitere) Pics genutz werden können,
    ist mir leider nicht gelungen.


    Hast du noch ein paar gute Ratschläge bzw. kannst da noch mal reinsehen.


    Danke


    Gruß
    Pf@nne

  • Code
    <widget name="Grundriss" position="220,10" size="600,600" zPosition="2" alphatest="on" /> 
    <widget name="LED_ON" position="220,10" size="100,100" zPosition="1" alphatest="on" />


    hat auch gedreht nix gebracht.....