import network
import aioespnow
import asyncio
import json
from time import sleep


class P2P:
    def __init__(self):
        network.WLAN(network.STA_IF).active(True)
        self.broadcast = bytes.fromhex("ffffffffffff")
        self.e = aioespnow.AIOESPNow()
        self.e.active(True)
        try:
            self.e.add_peer(self.broadcast)
        except:
            pass

    async def send(self, data):
        # Convert data to bytes if it's a string or dict
        if isinstance(data, str):
            payload = data.encode()
        elif isinstance(data, dict):
            payload = json.dumps(data).encode()
        else:
            payload = data  # Assume it's already bytes
        
        # Use asend for async sending - returns boolean indicating success
        result = await self.e.asend(self.broadcast, payload)
        return result

        

async def main():
    p = P2P()
    await p.send(json.dumps({"dj": {"p": "on", "colors": ["#ff0000"]}}))

if __name__ == "__main__":
    asyncio.run(main())
