Reply - Raw
from rfm69 import RFM69

import socket
import json
import base64


class SPIProxy(object):
    def __init__(self, host='10.79.2.188', port=1337, timeout=10):
        self.s = socket.socket()
        self.s.settimeout(timeout)
        self.s.connect((host, port))
        print(self.s.recv(1024))
        self.cs(False)

    def _send(self, data):
        #print("<<< {0}".format(data))
        self.s.send(json.dumps(data))
        r = json.loads(self.s.recv(1024))
        #print(">>> {0}".format(r))
        return r

    def write(self, data):
        if type(data) is int:
            data = chr(data)
        if type(data) in (list, tuple):
            data = ''.join([chr(x) for x in data])
        r = self._send({'command':'write', 'argument':base64.b64encode(data)})
        return base64.b64decode(r['data'])

    def read(self, n):
        r = self._send({'command':'read', 'argument':n})
        return base64.b64decode(r['data'])

    def cs(self, b):
        r = self._send({'command':'select', 'argument':b})
        return r.get('data')

    def xfer2(self, data):
        self.cs(True)
        res = self.write(data)
        self.cs(False)
        print([data, res])
        return [ord(x) for x in res]



class RFM69Proxy(RFM69):
    def init_gpio(self):
        pass

    def init_spi(self):
        self.spi = SPIProxy()

    def reset(self):
        print("[WARNING] reset is not implemented.")