Mercurial > code > home > repos > homeauto
changeset 1368:140d8d419cf0
redo wifi's statements about access points so we can distinguish who is connecting to where, and on which wifi band
Ignore-this: 9f629f8f5ccc2e08e6c61c80844c341a
darcs-hash:800b14d56d67efbefd1332896a8ed5c8246bad38
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Fri, 03 May 2019 18:54:42 -0700 |
parents | b287950fbcf4 |
children | 42f4fed9cd25 |
files | service/wifi/scrape.py |
diffstat | 1 files changed, 30 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/service/wifi/scrape.py Fri May 03 18:54:05 2019 -0700 +++ b/service/wifi/scrape.py Fri May 03 18:54:42 2019 -0700 @@ -1,8 +1,8 @@ import logging, json, base64 -from typing import List +from typing import List, Iterable from cyclone.httpclient import fetch -from rdflib import Literal, Graph, RDF, URIRef, Namespace +from rdflib import Literal, Graph, RDF, URIRef, Namespace, RDFS from twisted.internet.defer import inlineCallbacks, returnValue log = logging.getLogger() @@ -13,12 +13,12 @@ return URIRef("http://bigasterisk.com/mac/%s" % macAddress.lower()) class SeenNode(object): - def __init__(self, uri: URIRef, mac: str, ip: str, pred_objs: List): + def __init__(self, uri: URIRef, mac: str, ip: str, stmts: Iterable): self.connected = True self.uri = uri self.mac = mac self.ip = ip - self.stmts = [(uri, p, o) for p, o in pred_objs] + self.stmts = stmts class Wifi(object): """ @@ -55,24 +55,38 @@ b'device_changed=0\ndevice=', b'device_changed=1\ndevice=')): raise ValueError(resp.body) - + log.debug(resp.body) rows = [] for row in json.loads(resp.body.split(b'device=', 1)[-1]): - extra = [] - extra.append((ROOM['connectedToNetwork'], { - 'wireless': AST['wifiAccessPoints'], - '2.4G': AST['wifiAccessPoints'], - '5G': AST['wifiAccessPoints'], - '-': AST['wifiUnknownConnectionType'], - 'Unknown': AST['wifiUnknownConnectionType'], - 'wired': AST['houseOpenNet']}[row['contype']])) + triples = set() + uri = macUri(row['mac'].lower()) + + if row['contype'] in ['2.4G', '5G']: + orbi = macUri(row['conn_orbi_mac']) + triples.add((orbi, ROOM['wifiBand'], + ROOM['wifiBand/%s' % row['contype']])) + triples.add((uri, ROOM['connectedToAp'], orbi)) + triples.add((orbi, RDF.type, ROOM['AccessPoint'])) + triples.add((orbi, ROOM['macAddress'], + Literal(row['conn_orbi_mac'].lower()))) + triples.add((orbi, RDFS.label, Literal(row['conn_orbi_name']))) + elif row['contype'] == 'wireless': + pass + elif row['contype'] == 'wired': + pass + elif row['contype'] == '-': + pass + else: + pass + triples.add((uri, ROOM['connectedToNet'], ROOM['HouseOpenNet'])) + if row['model'] != 'Unknown': - extra.append((ROOM['networkModel'], Literal(row['model']))) + triples.add((uri, ROOM['networkModel'], Literal(row['model']))) rows.append(SeenNode( - uri=macUri(row['mac'].lower()), + uri=uri, mac=row['mac'].lower(), ip=row['ip'], - pred_objs=extra)) + stmts=triples)) returnValue(rows)