gce-electronics / HA_RFPlayer

RFPlayer plugin for Home assistant
Apache License 2.0
31 stars 10 forks source link

Erreur OREGON ET EDISIO fichier rfpparser.py #8

Closed Doubledom45 closed 2 years ago

Doubledom45 commented 2 years ago

@Aohzan Slt je remets ( community HA fr)ce que je commence à voir sur le prog .. J’ai regardé un peu ton prog ( surtout le rfpparser.py) Dans la partie Oregon tu prends comme « Id » le « id_PHY » qui est le physical device en codage ( voir 5.2.2.19 id_PHY Oregon), il faudrait prendre « adr_channel ». De plus la remontée de temp et hygro ne fonctionne pas , seule la mesure de l’hygro est prise en compte (malgré « class EventHandling(PacketHandling): » dans le fichier rfpprotol.py) Pour Edisio il manque « packets_found.append(data) » d’ou l’erreur : [WARNING (MainThread) [custom_components.rfplayer.rflib.rfpprotocol] no valid packet]() De plus ce type doit être tester sur son « subTypeMeaning » pour prendre la bonne valeur d’état, j’ai commencé à modifier rfpparser.py :

message = json.loads(packet.replace("ZIA33", ""))["frame"]
data["protocol"] = message["header"]["protocolMeaning"]

if data["protocol"] in ["BLYSS", "CHACON", "JAMMING"]:
    data["id"] = message["infos"]["id"]
    data["command"] = message["infos"]["subType"]
    data["state"] = message["infos"]["subTypeMeaning"]
    packets_found.append(data)
elif data["protocol"] in ["OREGON"]:
    data["id"] = message["infos"]["adr_channel"]
    data["hardware"] = message["infos"]["id_PHYMeaning"]
    for measure in message["infos"]["measures"]:
        measure_data = data.copy()
        data["type"] = measure["type"]
        data["command"] = measure["value"]
        data["state"] = measure["value"]
        data["unit"] = measure["unit"]
    packets_found.append(data)
elif data["protocol"] in ["EDISIO"]:
    data["id"] = message["infos"]["id"]
    data["hardware"] = message["infos"]["infoMeaning"]
    data["state"] = message["infos"]["subTypeMeaning"]
    if data["state"] in ["SET_TEMPERATURE"]:
        data["command"] = message["infos"]["add0"]
    elif data["state"] in ["TOGGLE"]:
        data["command"] = message["infos"]["qualifier"]            
    else:
        data["command"] = message["infos"]["subType"]
    packets_found.append(data)
else:
    data["id"] = message["infos"].get("id")
    data["command"] = message["infos"].get("subType")
    packets_found.append(data)

return packets_found

[POUR EDISIO IL FAUDRAIT DIVISER LE add0 par 100]() """ ( il remonte en centième de degré)"""

PS: je continu de regarder suivant les appareils que j’ai en 868 et 433 Mhz [@+DÕ¿ÕM]()

Doubledom45 commented 2 years ago

Slt, Voir Protocol OWL, pourrait être ajouté au test de Oregon, il y a plusieurs valeurs à récupérer

` # Protocols message = json.loads(packet.replace("ZIA33", ""))["frame"] data["protocol"] = message["header"]["protocolMeaning"]

if data["protocol"] in ["BLYSS", "CHACON", "JAMMING"]:
    data["id"] = message["infos"]["id"]
    data["command"] = message["infos"]["subType"]
    data["state"] = message["infos"]["subTypeMeaning"]
    packets_found.append(data)
elif data["protocol"] in ["OREGON", "OWL"]:
    data["id"] = message["infos"]["adr_channel"]
    data["hardware"] = message["infos"]["id_PHYMeaning"]
    for measure in message["infos"]["measures"]:
        measure_data = data.copy()
        measure_data["command"] = measure["value"]
        measure_data["state"] = measure["value"]
        measure_data["unit"] = measure["unit"]
        measure_data["type"] = measure["type"]
        packets_found.append(measure_data)

elif data["protocol"] in ["EDISIO"]:
    data["id"] = message["infos"]["id"]
    data["hardware"] = message["infos"]["infoMeaning"]
    data["state"] = message["infos"]["subTypeMeaning"]
    if data["state"] in ["SET_TEMPERATURE"]:
        data["command"] = message["infos"]["add0"]
    elif data["state"] in ["TOGGLE"]:
        data["command"] = message["infos"]["qualifier"]            
    else:
        data["command"] = message["infos"]["subType"]
    packets_found.append(data)
else:
    data["id"] = message["infos"].get("id")
    data["command"] = message["infos"].get("subType")
    packets_found.append(data)

return packets_found`