{{template>:template:project | name=SpejsIoT | status=[[http://iot.waw.hackerspace.pl/\|active]] | founder=[[user>informatic]] | repo=[[code>informatic/spejsiot]] \\ [[code>informatic/spejsiot-api]] }} ====== SpejsIoT ====== This is your mind on SpejsIoT: https://youtu.be/dxcZQX5f3v0?t=219 Warsaw Hackerspace IoT something network thingie. Because NIH. Based on ESP8266. It all goes through central MQTT broker now. Turns out someone did it kind of better - https://github.com/marvinroger/homie. It seems to have more-or-less the same ideas, but extended further a little bit. We just most rewriten it in Sming, as Arduino for esp8266 (for which official implementation of homie is implemented) sucks. The only difference now is that instead of ''homie/'' prefix we use ''iot/''. MQTT/HTTP documentation below stays here mostly for historical purposes. ==== Devices ==== * **Working** * Vacuum cleaner (10.8.0.140) * Exhaust (10.8.0.22) * **Planned** * Valves * Lights ==== Framework ==== Software framework for quick implementation of spejsiot-compatible devices on ESP8266 with Sming is available at: https://code.hackerspace.pl/informatic/spejsiot Keep in mind this still requires some documentation and cleanup. Kick [[people:informatic:start]] in case of any problem. OTA is working fine. ==== REST API ==== Simple stateless REST API is available at: http://spejsiot.waw.hackerspace.pl/ API documentation is available there as well. Source: https://code.hackerspace.pl/informatic/spejsiot-api ==== Home Assistant (GUI) ==== Cute web interface for most IoT-like things in our hackerspace is available at: http://iot.waw.hackerspace.pl/ **Note:** help needed with implementation of device autodiscovery ====== WARNING: Information below is mostly deprecated ====== ==== Queue topics ==== ^ Topic ^ Description ^ | ''iot/ //DEVICE_ID// /control'' | **read:** device control; ''restart'' - reboot device; ''ota'' - start OTA | | ''iot/ //DEVICE_ID// /state'' | **write:** ''online'' or ''offline'', ''offline'' is set in last will | | ''iot/ //DEVICE_ID// /type'' | **write:** device type, eg. ''exhaust'', ''vacuum'' | | ''iot/ //DEVICE_ID// /ota'' | **write:** OTA status, ''started'', ''finished'', ''failed''| | ''iot/ //DEVICE_ID// / //ENDPOINT//'' | value to set, or state change report, eg. ''iot/123456/relay = 1'' | ==== HTTP API ==== Spejsiot devices publish simple REST-like HTTP API: ^ Address ^ Description ^ | ''/metadata.json'' | Simple device status and endpoints list | | ''/api/1/ //ENDPOINT// / //VALUE//'' | Set value to endpoint | ==== Endpoints ==== Right now only used endpoint is ''relay'', which takes ''0'', ''1'' or ''toggle'' values. ==== mDNS / Zeroconf / Avahi ==== Spejsiot devices advertise using Avahi/Zeroconf/mDNS/Bonjour on local network as services of type ''_spejsiot._tcp''. [[https://github.com/Informatic/mqtt-playground|Some working code]]