Ok, leider doch nicht so richtig. Jetzt ist die FB auf 206 und kann nicht mehr mit dem Hub sprechen. Ich werde es dann doch mit dem Skript machen. Ist halt nur etwas nervig. Da ich recht viele Aktionen haben, wo ich einzelne Tasten per Skript betätige.
NEWS
Latest posts made by BarnyXX
-
RE: Harmony hub local Nutzung wird eingestellt.
-
RE: Harmony hub local Nutzung wird eingestellt.
Wollte nochmal kurz die Info geben, dass es bei mir aktuell so funktioniert:
Downgrade auf die 4.15.193
Ich habe per PiHole nur diese Adresse deaktiviert.
Ich kann weiterhin komplett mit Alexa arbeiten und auch die App bedienen. Das einzige, was nicht geht, ist neue Geräte hinzufügen. Ich habe versucht manuell die Software über die Fernbedienung zu aktualisieren. Er hat eine 3 minütige Synchronsation gemacht, aber die FW ist weiterhin bei 4.15.193. Ich bin mal gespannt, ob das so hält. Hat vielleicht irgendwer schon genauere Untersuchungen getätigt, über welche Adresse die Updates gezogen werden? Also mit diesem Zustand kann nich sehr gut leben.
-
RE: Harmony hub local Nutzung wird eingestellt.
Und du musst vorher eine Variable erzeugen. Das Blockly sollte so aussehen wie bei mir.
-
RE: Harmony hub local Nutzung wird eingestellt.
Das Skript läuft, wertet aber leider Aktivität nicht korrekt aus:
harmony.PNG `
Trag mal als Variablenname Result ein, wie bei mir im Screenshot
-
RE: Harmony hub local Nutzung wird eingestellt.
Achso, wenn du pip nicht installiert hast, musst du es mit apt-get install python-pip oder python3-pip installieren.
-
RE: Harmony hub local Nutzung wird eingestellt.
kuddel@ioBroker-MASTER:/# apt-get install websocket-client Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig E: Paket websocket-client kann nicht gefunden werden.
Mein ioBroker läuft auf einer Debian 9.4 VM `
Meiner auch. Du musst das mit PIP installieren.
-
RE: Harmony hub local Nutzung wird eingestellt.
Hier das Blockly dazu. Geht bestimmt auch einfacher, aber so funktioniert es bei mir. Ich frage den Hub alle 5 Sekunden ab. Das sollte reichen.
5733_bildschirmfoto-20181220145543-592x551.png -
RE: Harmony hub local Nutzung wird eingestellt.
Benenn erstmal die Datei in .py um. Dann kannst du mit:
pip3 install websocket-client
oder
pip install websocket-client
die Websocket-Geschichte installieren.
-
RE: Harmony hub local Nutzung wird eingestellt.
Schau dir mal den Link in meinem vorherigen Betreig an.
`#!/usr/bin/python3 # # Logitech Harmony Class using websocket instead of old (removed) api # Credit for finding/sharing knowledge about the api goes to: # https://github.com/jlynch630/Harmony.NET # https://github.com/chadcb/harmonyhub # # This is a very early version. Consider it Alpha # # Written by: EScape 2018 import json import time import requests import websocket from websocket import create_connection class harmonysock: def __init__(self, host, port='8088', protocol='http', hubid='', timeout=30): self.hub_ip = host self.hub_port = port self.harmony_api = 'http://'+self.hub_ip+":"+self.hub_port self.timeout = timeout if hubid != '': self.hub_id = hubid else: self.hub_id = self.gethubid() #print('hubid:', self.hub_id) self.hubsocket = create_connection('ws://' + self.hub_ip + ':' + self.hub_port + '/?domain=svcs.myharmony.com&hubId=' + self.hub_id) self.cacheconfig='' def hubconfig(self, refresh=False): if self.cacheconfig=='' or refresh: self.cacheconfig = self.getconfig() return self.cacheconfig def startactivity(self, activity): headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'Origin': 'http//:localhost.nebula.myharmony.com'} response = '' try: response = requests.post(self.harmony_api, json={"cmd": "harmony.activityengine?runactivity", "params":{"activityId":activity}}, headers=headers) print(response.text) except: return False if response.status_code == 200: return True else: return False def gethubid(self): headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'Origin': 'http//:localhost.nebula.myharmony.com'} r = requests.post(self.harmony_api, json={"id": 111, "cmd": "connect.discoveryinfo?get", "params": {}}, headers=headers) hub_data = json.loads(r.text) hub_id = hub_data['data']['remoteId'] return hub_id def getconfig(self): payload={} #payload['hubId']=self.hub_id #Doesn't even need the hubid? payload['timeout']=self.timeout payload['hbus']={} payload['hbus']['cmd']='vnd.logitech.harmony/vnd.logitech.harmony.engine?config' payload['hbus']['id']='0' payload['hbus']['params']='{"verb":"get"}' self.hubsocket.send(json.dumps(payload)) hubsocket_data = self.hubsocket.recv() hub_data = json.loads(hubsocket_data) return hub_data['data'] def getstate(self): payload={} #payload['hubId']=self.hub_id #Doesn't even need the hubid? payload['timeout']=self.timeout payload['hbus']={} payload['hbus']['cmd']='vnd.logitech.connect/vnd.logitech.statedigest?get' payload['hbus']['id']='0' payload['hbus']['params']='{"verb":"get","format":"json"}' self.hubsocket.send(json.dumps(payload)) hubsocket_data = self.hubsocket.recv() hub_data=json.loads(hubsocket_data) return hub_data['data'] def currentactivity(self): state = self.getstate() return state['activityId'] def listactivities(self): base=self.hubconfig()['activity'] list={} for item in base: list[item['label']]=item['id'] return list def listdevices(self): base=self.hubconfig()['device'] list={} for item in base: list[item['label']]=item['id'] return list def getactivitybyname(self, name): all = self.listactivities() if name in all: return all[name] else: return None def startactivity(self, activity): #If the activity is a number it is assumed to be an ID, otherwise a label (name) if activity.isdigit(): activityid=activity else: activityid=self.getactivitybyname(activity) headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'Origin': 'http//:localhost.nebula.myharmony.com'} try: response = requests.post(self.harmony_api, json={"cmd": "harmony.activityengine?runactivity", "params":{"activityId":activityid}}, headers=headers) except: return False if response.status_code == 200: return True else: return False def sendkey(self, device='', key='', hold=False): stroke={} stroke['deviceId']=device stroke['command']=key stroke['type']='IRCommand' payload={} #payload['hubId']=self.hub_id #Doesn't even need the hubid? payload['timeout']=self.timeout payload['hbus']={} payload['hbus']['cmd']='vnd.logitech.harmony/vnd.logitech.harmony.engine?holdAction' payload['hbus']['id']='222' payload['hbus']['params']={} payload['hbus']['params']['action']=json.dumps(stroke) if hold: payload['hbus']['params']['status']='hold' else: payload['hbus']['params']['status']='press' payload['hbus']['params']['timestamp']="0" self.hubsocket.send(json.dumps(payload)) return True harmony = harmonysock('192.168.66.34') #current = harmony.getstate() all_activitydata = harmony.listactivities() activity = harmony.currentactivity() #print(all_activitydata) for i in all_activitydata: if activity == all_activitydata[i]: print(i)` Das hier könnte dir helfen. Ich mache das derzeit noch über einen Shell-Sensor Pimatic und hole mir darüber die Variable rein. Ich schaue aber gerade wie ich das direkt in ioBroker bekomme. Ach, IP-Adresse ändern nicht vergessen.[/i]
-
RE: Harmony hub local Nutzung wird eingestellt.
Hi,
auch mich hat es mit dem Update hart getroffen. Ich habe jetzt erstmal ein Downgrade auf die alte Version gemacht und per PiHole den Zugriff auf die genannten Harmony-Server gesperrt. Bei mir funktioniert Alexa mit dem Harmony-Skill allerdings nicht mehr, was für mich eigentlich so das schlimmste ist. Einige Facebook-User schrieben, dass Alexa trotzdem noch bei Ihnen funktioniert. Kann das jemand von euch auch bestätigen?
Dann habe ich mich heute mal ein wenig mit der Websocket-API beschäftigt. Dabei bin ich auf diesen GitHub Code gestoßen: https://github.com/d-EScape/HarmonyApi
Mit ein paar zusätzlichen Zeilen Code, konnte ich mir zumindest für meine wichtigste Funktion, der Aktivitätenüberwachung ein kleines Skript zusammenfriemeln, dass diverse Sachen (Leinwand, Beleuchtung) wieder automatisch einschaltet werden, je nachdem welche Aktivität gerade läuft.
Vielleicht hilft es ja dem einen oder anderen. Vielleicht kann sich auch mal ein Entwickler damit beschäftigen und den Harmony-Adapter überarbeiten. Mir fehlt es leider an Programmierkenntnissen. Python geht gerade noch so, aber bei JavaScript hört es leider auf.
Ich drücke die Daumen, dass alles bald wieder zur Normalität zurückkehrt.