Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details

If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.

Serial Plugin

Allgemeines zum Thema EventGhost
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

ach nee, my fault, vergessen Serial2 zu setzen.


23 41 56 32 20 69 91 19 2D 02 FF
2A 41 56 32 20 23 00 FF
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Code: Select all

device = "AV2"
serial = eg.Plugin.Serial2

def printhex(bytes):
    print " ".join([("%0.2X" % ord(x)) for x in bytes])
    
serial.Write("*")
serial.Read()
eg.Wait(0.025)
serial.Write("*" + device + " \x69\xFF")
response_length = len(device) + 8
response = serial.Read(response_length, 1.0)
printhex(response)
if response.startswith("#" + device + " \x69"):
    val = ord(response[response_length - 3]) & 0x7F
    val += 1
    print val
    val = max(0, min(val, 99))
    print val
    eg.Wait(0.1)
    serial.Write("*")
    eg.Wait(0.025)
    cmd = "*" + device + " \x23" + chr(val) + "\xFF"
    printhex(cmd)
    serial.Write(cmd)
    response = serial.Read(len(cmd), 1.0)
    printhex(response)
Sollten noch mehr Zeilen kommen.
Last edited by Bitmonster on Mon Feb 13, 2006 11:22 pm, edited 1 time in total.
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

Das Script zuvor setzt die Lautstärke auf 0.

Die Ausgabe des Neuen ist nur einzeilig

23 41 56 32 20 69 91 19 00 02 FF
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ok, da sind wir der Sache schon nahe. Da oben war noch ein Fehler. Also letztes Skript nochmal reinkopieren und ausporbieren.
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

Funktioniert :D per Ausf├╝hrung Volume um eins hoch.


23 41 56 32 20 69 91 19 0A 02 FF
11
11
2A 41 56 32 20 23 0B FF
2A 41 56 32 20 23 0B FF
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Na OK, morgen mache ich das mal etwas sch├Âner. Das Protokoll ist ja leider etwas langsam, was ein sch├Ânes kontinuierliches Regeln nicht so einfach macht.

Jetzt ist aber Feierabend angesagt.

Wenn du:
val += 1
in
val -= 1
änderst, dann sollte er auch wieder leiser werden.
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

Gute Idee mit dem Feierabend :D

Vielen Dank!
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Mach mal ein Python-Script direkt hinter dem Serial-Plugin f├╝r den naim im Autostart-Makro und f├╝ge da folgendes ein:

Code: Select all

device = "AV2"
serial = result

from time import sleep, clock


class naim:
    def __init__(self):
        self.last_cmd_time = 0
        self.volume = None
        #self.GetVolume()
       
    def SendCommand(self, cmd):
        time_diff = clock() - self.last_cmd_time
        if time_diff < 0.1:
            sleep(0.1 - time_diff)
        serial.Write("*")
        serial.Read()
        sleep(0.025)
        serial.Write("*" + device + " " + cmd + "\xFF")
        self.last_cmd_time = clock()
       
    def GetVolume(self):
        self.SendCommand("\x69")
        response_length = len(device) + 8
        response = serial.Read(response_length, 1.0)
        if (response.startswith("#" + device + " \x69")
            and len(response) == response_length):
                self.volume = ord(response[response_length - 3]) & 0x7F
        else:
            eg.PrintError("can't get volume from naim!")
            self.volume = None
        return self.volume

    def SetVolume(self, volume):
        if volume > 99:
            volume = 99
        elif volume < 0:
            volume = 0
        self.SendCommand("\x23" + chr(volume))
        self.volume = volume
   
    def ChangeVolume(self, offset):
        if self.volume is None:
            self.GetVolume()
        if self.volume is not None:
            self.SetVolume(self.volume + offset)
           

eg.Global.naim = naim() 
Weiter einstellen brauchst du da nichts. Dann startest du EG neu und f├╝gst noch diese Befehle in deinen Baum ein:

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="442">
        <Macro Name="Increment naim AV2 volume">
            <Action>
                EventGhost.PythonCommand(u'naim.ChangeVolume(1)')
            </Action>
            <Action>
                EventGhost.AutoRepeat(0.59999999999999998, 0.29999999999999999, 0.01, 3.0)
            </Action>
        </Macro>
        <Macro Name="Decrement naim AV2 volume">
            <Action>
                EventGhost.PythonCommand(u'naim.ChangeVolume(-1)')
            </Action>
            <Action>
                EventGhost.AutoRepeat(0.59999999999999998, 0.29999999999999999, 0.01, 3.0)
            </Action>
        </Macro>
</EventGhost>
Jetzt noch die Tasten der FB zuweisen und dann sollte er zucken.
Last edited by Bitmonster on Fri Feb 17, 2006 1:11 pm, edited 3 times in total.
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

Fehler in Befehl: "naim.ChangeVolume(1)"
File "<string>", line 34, in SetVolume
UnboundLocalError: local variable 'val' referenced before assignment
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Grad geändert, gleich nochmal das Script kopieren und EG neustarten.
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

Keine Fehlermeldung mehr, aber es funktioniert nicht richtig.
VolumeUp erh├Âht einmalig um 2
VolumeDown macht -2
Automatische Wiederholung wird im Logger angezeigt, Volume bleibt aber gleich.

Sch├Ânen Tach auch ├╝brigends ;)
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Kommt denn bei jeder Wiederholung eine "can't get volume from naim!" Meldung?
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ah, ich glaub ich habs.
Allerdings weiß ich noch nicht, wieso er zwei Schritte geht und nicht einen.
Wie auch immer: neu kopieren und ausprobieren.
BerndS
Posts: 34
Joined: Fri Feb 10, 2006 7:31 am

Post by BerndS »

Meldung kam keine, egal, funktioniert!
Gruß,
Bernd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Und ist die Geschwindigkeit erträglich? Theoretisch bräucht er mehr als 10 Sekunden von 0 auf 99.
Post Reply