sarkozozo:
ser.write(str(a).encode("utf-8"))
Côté Python tu encodes la valeur comme un caractère (utf-8) c-à- tu envoies 0x30 ou 0x31
et côté Arduino tu attends un nombre (0 ou 1)
Côté python, if faut que tu envoies un entier sur 16 bits (0 ou 1), et non pas un caractère.