perjantai 6. maaliskuuta 2020

DIY: Amiga Flashfloppy flashaus FDD-UDD U144K

Tilasinpas itselleni Amigaan halppisversion (pari euroa edullisempi kuin normi versio) Gotekista ilman näyttöä (kun yleensä heitän kolmen numeron näytön menemään ja pistän oled näytön tilalle). Mutta yllätyksekseni postiluukusta tipahtikin Gotek, jossa oli täysin eri pcb kuin mihin olin tottunut.

Onneksi en ollut ainoa joka moiseen on törmännyt: https://github.com/keirf/FlashFloppy/issues/232

Tuota githubin issueta tavaamalla onnistuin lopulta flashaamaan FlashFloppy firmiksen Gotekkiin sisään. Tässä vähän toivottavasti selkeämpiä kuvia (jossa pinnit kirjoitettu auki), jos joku muukin moisen ongelman eteen joutuu.

Tarvittava rauta: kahden euron stm32 flasheri ebaysta, esim hakusanalla "st link v2"
Tarvittava softa, jos haluaa Windowsissa flashata: https://www.st.com/en/development-tools/stsw-link004.html

Tässä pinnit kirjoitettuna auki, jonka jälkeen ST-link v2 on helppo kiinnittää oikeisiin pinneihin. Kirjoitin tuohon myös miten ne mappaantuu normaaliin Gotekkiin.

Itse kytkin NRST signaalin virtaliittimen GND napaan automaattisen flashauksen aloittamiseksi dupont kaapelilla. Ei tarvi kuin hetkellisesti koskea, että käy resetissä kun on automatic flashing moden käynnistänyt, jolloin flashfloppy flashaantui iloisesti paikoillen. Ja OLED näyttöön ilmestyi tuttu FlashFloppy teksti.

lauantai 25. tammikuuta 2020

DIY: solder paste stencil kokeilu

Bongasin, että maailmalla ihmiset olivat tehneet itselleen solder paste stencilejä (juotostina sapluuna) Silhouette- ja Laser-leikkureilla. Joten siitä se idea sitten lähti. Bongasin Lidl:stä muutaman metrin rullan blackboardfilmiä (liitutaulutarraa) vitosella, joka riittää sitten yli sataan stenciliin, jolloin yksittäisen stencilin hinnaksi jää sen 5 senttiä.

Minulla löytyy nurkista Silhouette Cameo 3 leikkuri sekä laser & cnc kaiverrin. Molemmilla varmaan olisi sopivalla materiaalilla onnistunut stencilin teko. Mutta Cameolla testasin kun se leikkaa iloisesti tuota tarramateriaalia.

Otin piirilevystäni (Commodore Amiga 500 lisämuistipalikka) sopivan gerberin ulos seuraavaa ohjetta noudattaen: https://www.autodesk.com/products/eagle/blog/getting-started-solder-paste-stencils/. Ja siitä sitten convertoin leikkurin ymmärtämään muotoon.


Leikkuri leikkasi materiaalin aika nätisti ja se pysyi ehjänä vaikka reikien väli on alle millimetrin.


Vanhalla luottokortilla vetelin juotostinamassan sapluunan yli. Ja lopulta viimeisessä kuvassa muistipiiri kiinni nätisti levyssä kuumennuksen jälkeen. Paljon siistimpi jälki kuin niissä joita olin tehnyt ennen sapluunan käyttöä.

perjantai 6. joulukuuta 2019

Rex 9268 External kernal cartridge klooni - Commore 64 DIY

DL2DW suunnitteli REX9628 Extern_kernal cartridge kortin. Ja vanhana Commodore fanina, tein sitten itsellenikin muutaman ihan vaan mielenkiinnosta.

Lisätietoa ja gerberit, jos haluaa itsekin tehdä: https://github.com/rainisto/REX-9628-Extern-Kernal-II-8

Kuukauden verran kun odotteli osia kiinasta, niin pääsi vihdoin kolvailemaan kasaan.

Kone boottasi kernaliin joka dip kytkimille oli valittu. Semmoinen ominaisuus tuossa on, osa muistissa on käyttämättömissä jos ei koneen sisältä CPU:n pinnistä 28 lue HIRAM signaalia (sen voi halutessaan liittää kortin CS reikään).

Samoin Sven on tehnyt oman version samasta kortista täällä: https://github.com/svenpetersen1965/REX-9628-Extern-Kernal-8

lauantai 30. marraskuuta 2019

Suurennuslasivalaisimen modaus (E27->LED)

Minulta löytyy anopilta saatu E27 kantainen suurennuslasivalaisin viime vuosituhannelta, jonka hehkulamppu lämpenee 100+ asteiseksi ja joka ei valaise kunnolla. Joten otin projektiksi modata sen nykyaikaan kirkkailla 12V ledeillä. Ekana meinasin banggoodista tilata BlackFriday kunniaksi uuden led pohjaisen suurennuslasivalaisimen, mutta checkoutissa heidän systeeminsä jumitti, joten saivat pitää tunkkinsa kun ei raha kelvannut. Joten päädyin parantamaan anopin lahjoitusta.

Ensiksi purin E27 kannan ja jätin virtakytkimen jäljelle:

Purin yhden 220V->12V virtalähteen ja pistin sen vanhan E27 koteloinnin sisällä. Ja asentelin sopivasti rullassa leikattavaa 12V ledinauhaa suurennuslasin ympärille ja yhden suiron vielä takaosaan.

Ja lopputulos on parempi kuin hyvä, lamppu ei lämpene ja valotehoa on enemmän kuin kuva antaa ymmärtää (moninkertaisesti verrattuna vanhaan). Vihdoinkin vanhat ja raihnaiset silmäni näkee kolvata tuossa valossa. Onnistunut modaus, osien hinta alle 10e.

Amiga RM550C-D lisämuistin patterikellon korjausmodaus

Poistin surullisen kuuluisan vuotavan Varta-akun Amigan lisämuistikortilta:

Ja siirtin yhden vastuksen yläpuolelta levyn alapuolelle, että sain tilaa CR2032 nappiparisto pidikkeelle, johon asensin LIR2032:n (lithiumakku). Asentamalla LIR:n CR:n sijasta vältyin lisäämästä latauksen estoon diodia, ja ladattava nappiparisto on kuitenkin vain alle 2e kipale:

Ja systestillä sai kellon resetoitua ja pysyy ajassa koneen käynnistyksien jälkeenkin. Joten onnistunut korjausoperaatio ja ladattavan nappipariston ansiosta kellon pitäisi pysyä ajassa vielä monta vuotta.
Edit: LIR2032 jatkuva lataus ei googlaamisella ole välttämättä suoraan hyvä tuolla, joten pistän varmaan eteen latauksen eston, niin voi käyttää myös perus CR2032sia ja ei ole räjähdysvaaraa.

Tässä kuva kolvauksen jälkeen kun plus navan eteen on pistettu 300Ohm vastus ja 1N4148 diodi. Samalla käänsin pidikettä vähän lisää, niin mahtuu vielä paremmin Amigan sisään.

maanantai 25. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 4

Tykkäisin saada lämpömittareista myös mukavan näköistä käppyrää näkymään Grafanan puolelle. Joten muokkasin vähän yhtä olemassa olevaa kikkaretta joka MQTT ESP8266 onewire dallas mittareista pisti dataa eteenpäin Grafanan tietokantaan. Lisäsin koodinpätkän, joka myös kuuntelee myös homeassistant ja zigbee2mqtt mittarien MQTT jonoja.

https://github.com/rainisto/home-monitoring-grafana

Tuon MQTT bridgen avulla kaikista MQTT lämpömittareista menee data eteenpäin InfluxDB kantaan, josta grafanalla voi tehdä haluamansa näköisiä kuvaajia. Tässä esimerkkinä muutaman huoneen yhteisnäkymä:

Samalla voi configuroida Home Assisteantin hakemaan halumansa graafin HA:n desktop näkymään. Ohjeistus, jota seurasin löytyy täältä: https://community.home-assistant.io/t/complete-guide-on-setting-up-grafana-influxdb-with-home-assistant-using-official-docker-images/42860

configuration.yaml tiedostoon lisätään:

camera:
  - platform: generic
    name: Grafana Temperature
    still_image_url: 'http://192.168.1.8:3000/render/d-solo/xkTBiwMZz/home-assistant-dashboard?orgId=1&from=now-1d&to=now&panelId=4&width=1000&height=500&tz=Europe%2FHelsinki'
    username: homeassistant
    password: homeassistant
Ja ha:n rebootin jälkeen lisätään Picture Entity Card:

Ja lopulta grafana käppyrä näkyy suoraan home assistantin ruudulla, joten Grafana integraatio valmis.

keskiviikko 13. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 3

Tällä kertaa vuorossa on Zigbee laitteiden lisääminen Home Assistant ympäristöön. Seurasin seuraavia ohjeita: https://www.zigbee2mqtt.io/. Flasheri ja CC2531 usb tikku antennin kanssa maksoi aliexpressistä kotiin toimitettuna alle 20e.

Tikun flashaus onnistui näppärästi myös Win10 läppärillä, kunhan ekana haki korjatun ajurin täältä.

Seuraavanlaisen conffin tein zigbee2mqtt:hen, eli enabloin homeasssistant tuen ja mqtt:n osoittamaan mqtt clusteriani (haproxy edessä).

/opt/zigbee2mqtt# more data/configuration.yaml
homeassistant: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://192.168.1.4'
serial:
  port: /dev/ttyACM0
Ja sitten totuuden hetki: käynnistetään zigbee2mqtt softa raspberryssä ja painetaan Xiaomin Aqara lämpötilaanturista resettiä 5 sekunttia. Ja dadaa, consolille ilmestyi anturi, joka payloadissa näytti oikeanlaista dataakin antavan:

Ja siitä hyppäsinkin katsomaan Home Assistantin webbiä, ja sinnehän se automaattisesti olikin ilmestynyt laitteeksi.

Tämä lasten makkariin sijoitettu mittari näyttää myös ilmanpaineen ja lämpötilankin näyttää yhden desimaalin tarkemmin kuin olohuoneen BLE mittari.

Ja seuraavassa osassa vuorossa varmaan sitten Graphana tai 433Mhz laitteet Telldus mokkulan läpi tai Z-Wave (jos löydän pistokkeen kun minulla on Z-Wave palikka jossain laatikossa hukassa tällä hetkellä).

tiistai 12. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 2

Olin jo muutama vuosi sitten (https://omakotikotitalomme.blogspot.com/2017/03/sonoff-tasmota-paivitysta.html) pistänyt lasten leikkihuoneen Ikean pilvivalon Sonoff kytkimen ja Tasmota firmiksen avulla MQTT pilveen. Ja tällä kertaa katsoin miten iso työ on saada saman lampun ohjaus näkymään Home Assistant käyttöliittymässä.

Tasmotan sivuilta löytyi helppo rautalanka ohje: https://github.com/arendst/Tasmota/wiki/Home-Assistant

Kaikessa lyhykäisyydessään pitää vain Tasmotan Consoleen kirjoittaa "SetOption19 1" ja painaa Restart. Tämä aktivoi MQTT Home Assistant Discovery moden.

Kun Tasmota oli käynnistynyt uudestaan, niin valaisin ilmestyi automaattisesti laitteeksi Home Assistenttiin. Kivasti näkyy firmiksen versiotkin yms tietoja.

Näiden Tasmota firmiksellä olevien laitteiden lisäys olikin yllättävän vaivaton operaatio. Seuraavassa osassa onkin sitten vuorossa Zigbee laitteet.

maanantai 11. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 1

Kotiautomaatio projektini näyttää etenevän hitaasti, mutta nyt kun muksut ovat jo päässeet eroon vaipoista, joten nytkähti projekti taas eteenpäin.

Olin jo aikaisemmissa postauksissa pistänyt pystyyn clusteroidun MQTT:n (https://omakotikotitalomme.blogspot.com/2017/02/wifi-langaton-sahkokytkin.html), ja nyt tein periaatepäätöksen, että liitän mahdollisimman monen laitteen MQTT:n perään, jolloin voin käyttää hyvin valmiita open source palikoita ja tarvittaessa voin koodata omaa koodia, jos jotain haluamaani asiaa ei ole valmiina saatavilla. Valitsin open source lähetymistavan kun aika moni kotiautomaatiofirma on aikojen saatossa mennyt konkurssiin tai muuten vaan lopettanut toimintansa, jolloin kaupallisen purkin ostaneet ovat jääneet oman onnensa varaan.

Joten ensimmäiseksi otin rautapohjaksi Raspberry Pi 3B+:n, johon asensin pohjalla Rasbian Buster Lite -imagen (https://www.raspberrypi.org/downloads/raspbian/). Johon sitten asensin Home Assistant paketin venv ympäristöön (https://www.home-assistant.io/docs/installation/raspberry-pi/). Ja Home Assistant asennuksen sisään lisäsin vielä Home Assistant Community Storen (HACS), jolloin on helpompi ja nopeampi lisätä custom UI komponentteja ruudulle (https://hacs.netlify.com/docs/installation/manual).

Toi yllämainittu combinaatio oli itseasiassa minun toinen yritykseni, ekalla kerralla yritin asentaa hass.io raspberry distribuution, kun se olisi dockeroitu ja kaikkea muuta kivaa. Mutta tätä kirjoittaessani, kyseisessä distribuutiossa oli bugi, että se generoi giga tolkulla logitiedostoa muutamassa päivässä, joten siksi siirryin hass.io:sta tuohon venv asennukseen hacs lisäosan kanssa. Sehän voi olla, että hass.io korjaa buginsa jossain vaiheessa, joten kannattaa tarkistaa myös https://www.home-assistant.io/hassio/, jos suunnittelee uutta asennusta. Itse tykkään enemmän venv ympäristöstä kun Linux on tuttua kauraa minulle.

Tarkoitus tosiaan on liittää tähän kaikki valo-ohjaukset, lämpötilasensorit, kosteusanturit, liikkeentunnistimet, chromecast, valvontakameroiden hälyt ja lukuisat muut mokkulat (Bluetooth, Zigbee, Z-Wave ja 433HMz). Aloitan ensin kyllä ihan perusteista, että saan edes jonkun sensorin datan webbikäyttöliittymälle. Aloitin Bluetoothista, kun semmoinen on Raspberryssä jo ilman ulkoisia lisäosia. Minulla löytyy olohuoneesta Xiaomin BLE LCD lämpömittari, joten otin sen koekaniiniksi.

Netistä löytyi valmis palikka joka osaa Xiomin BLE:sta lukea arvot ja julkaista ne MQTT jonoon HA:n ymmärtämässä muodossa. https://github.com/aqualx/miflora-mqtt-daemon, jonka asennuksen jälkeen config.ini tiedostoni näytti tältä:

 [General]  
 reporting_method = homeassistant-mqtt  
 [Daemon]
 period_mitempbt = 120
 [MQTT]  
 hostname = 192.168.1.4  
 base_topic = homeassistant  
 [MiFlora]  
 [MiTempBt]
 MiBLETemp@Olohuone = 58:2D:34:33:D4:1B  

Ja käynnistin komennolla: "python3 /opt/mi-mqtt-daemon/miflora-mqtt-daemon.py", jolloin ruudulle ilmestyi:

Ja tuossa lisäsin sensorin Glance Card näkymään seuraavasti:

Ja siellähän se möllöttää, lämpötila päivittyy iloisesti sivulle. Seuraavassa osassa vuorossa Tasmota firmiksellä olevan Sonoff WIFI kytkimen HA integraatio MQTT auto discovery avulla.

tiistai 3. syyskuuta 2019

Glue älylukon rajapintojen tutkimista

Tuossa aikaisemmassa postauksessa https://omakotikotitalomme.blogspot.com/2019/09/etaohjattava-glue-alylukko-wifi.html asensimme älylukon varaston oveen. Ja siinä vähän harmittelin, ettei valmistaja ole virallisesti julkaissut avointa REST API:a, että voisin itse ohjelmallisesti lukkoa ohjata.

Ekana tiputamme Glue lukon Android paketin https://www.apkdecompilers.com/-sivustolle, ja katsomme löytyykö paketin sisältä jotain mielenkiintoista, jolla voisimme saavuttaa yhteensopivuuden curl ohjelman kanssa.
root@jonni-ThinkPad-W520:~/gluehome# grep https.*api apk/*
Binääritiedosto apk/resources\classes.dex täsmää hakuun
apk/sources\com\gluehome\gluecontrol\h.java:        aVar.a("https://api.gluehome.com/api/");
apk/sources\com\gluehome\gluecontrol\h.java:        return new g.s.a().a("https").d(str.equals("dev") ? "gluebackend-tc-api.azurewebsites.net" : "api.gluehome.com").e("api").e(CoreConstants.EMPTY_STRING).c();
apk/sources\com\google\android\gms\b\ix.java:        return new Builder().scheme("https").path("//pagead2.googlesyndication.com/pagead/gen_204").appendQueryParameter("id", "gmob-apps-report-exception").appendQueryParameter("os", VERSION.RELEASE).appendQueryParameter("api", String.valueOf(VERSION.SDK_INT)).appendQueryParameter("device", u.e().e()).appendQueryParameter("js", this.f8897e.f7780b).appendQueryParameter("appid", this.f8896d).appendQueryParameter("exceptiontype", cls.getName()).appendQueryParameter("stacktrace", stringWriter.toString()).appendQueryParameter("eids", TextUtils.join(",", df.a())).appendQueryParameter("exceptionkey", str).appendQueryParameter("cl", "135396225").appendQueryParameter("rc", "dev").toString();

Bingo, tuolta löytyi, että Android applikaatio käyttää API rajapintanaan "https://api.gluehome.com/api/", ja näyttääpä heillä jääneen kehitysympäristön azure sitekin koodiin mukaan, mutta sen voimme ignoroida. Joten keskitymme tuon api urlin service rajapinnan tutkimiseen. Ja sitten seuraava luova greppi:
root@jonni-ThinkPad-W520:~/gluehome# grep "o(a = \"" apk/*Service*
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "UserRegistrations/{id}/Activate")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AutoUnlocks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AutoUnlocks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Invites")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Hubs/{id}/Commands")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Accesses")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Accesses")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AccessSchedules/")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AccessSchedules/")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations/{id}/Images")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations/{id}/Images")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "LockEvents")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "LockEvents")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Hubs/{id}/PairLocks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Hubs")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "RegisterPushNotifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "RegisterPushNotifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "UserRegistrations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "UserRegistrations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "SecurityQuestions")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "SecurityQuestions")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/Icons")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/Icons")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/modifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/modifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "ResetPassword")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "ResetPassword")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Validate")

Ja tuossahan lista sitten majaileekin, ja sorsaa tutkimalla näkee syökö se sisäänsä GET, PUT tai DELETE metodia. Ja tavoitteenahan meillä on curlilla päästä ovea lukitsemaan ja avaamaan. Sitten luomme loginpass-tiedoston:
machine api.gluehome.com login <email> password <password>

Ja yläpuolella olevaa apilistaa kun luemme, niin kaipaamme lukon tai hubin {id} arvoa aika monessa tapauksessa. Ja kaikki wifi hubissa olevat linkatut lukot saamme /Hubs-komennolla (GET).
root@jonni-ThinkPad-W520:~/gluehome# curl -k -H "Content-type: application/json" --netrc-file loginpass https://api.gluehome.com/api/Hubs/ | jq '.[].LockIds[], .[].Id'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   405  100   405    0     0    605      0 --:--:-- --:--:-- --:--:--   639
"11111111-1111-1111-1111-111111111111"
"22222222-2222-2222-2222-222222222222"

Ja sieltähän lukon id pullahti (lukko vaihdettu ykköseksi ja hubi id kakkoseksi ihan vaan blogin takia). Ja tuon tiedon perusteella voimme jo lukkoa ohjata "Hubs/{id}/Commands"-APIlla. Tai kaivetaan vielä tuosta rajapinnasta tiedot ulos.
root@jonni-ThinkPad-W520:~/gluehome# cat "apk/sources\com\gluehome\backend\glue\HubCommandRequest.java"
package com.gluehome.backend.glue;

import com.google.a.a.c;
import java.util.UUID;

public class HubCommandRequest {
    public static int COMMAND_HUB_FIRMWARE_UPDATE = 4;
    public static int COMMAND_LOCK = 1;
    public static int COMMAND_LOCK_FIRMWARE_UPDATE = 3;
    public static int COMMAND_UNLOCK = 0;
    public static int LOCK_COMMAND_LIST_UPDATE = 5;
    @c(a = "HubCommand")
    public int hubCommand;
    @c(a = "LockId")
    public UUID lockId;
}

Tuosta näkee, että kyseinen API haluaa POST komenossa formissa kaksi parametriä, toinen on "LockId", johon siis pistämme juuri kaivamamme lukon ID:n ja toisena parametrinä "HubCommand", joka on INT. Ja intin arvot onkin tuossa mukavasti listattuna samalla, eli nollalla unlock ja ykkösellä lukkoon. Ja isommat numerot on sitten firmiksen päivityksia yms(joita emme tarvitse).

Ja sitten onko lopullisen testin aika, syötämme curlille formin tuossa muodossa ja katsotaan mitä tapahtuu.

root@jonni-ThinkPad-W520:~/gluehome# curl -X POST -k -d "LockId=11111111-1111-1111-1111-111111111111&HubCommand=0" --netrc-file loginpass https://api.gluehome.com/api/Hubs/22222222-2222-2222-2222-222222222222/Commands | python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   112  100    56  100    56     80     80 --:--:-- --:--:-- --:--:--   160
{
    "Id": "6550eb7c-5fe6-4dc5-8f0d-2dccaa077777",
    "Status": 1
}
root@jonni-ThinkPad-W520:~/gluehome# curl -X POST -k -d "LockId=11111111-1111-1111-1111-111111111111&HubCommand=1" --netrc-file loginpass https://api.gluehome.com/api/Hubs/22222222-2222-2222-2222-222222222222/Commands | python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   112  100    56  100    56     98     98 --:--:-- --:--:-- --:--:--   197
{
    "Id": "a95c39ec-2c47-4a0c-bb7b-3f154a4e00000",
    "Status": 1
}

Ja siellähän se möllöttää, varaston ovi aukesi ja meni kiinni, ja Androidiin tuli notifikaatiot myös komentojen onnistumisesta.

Disclaimerina, että koska REST API ei ole virallisesti avoin, niin valmistaja voi softapäivitysten välillä vapaasti sitä muutella, mutta "works for me". Samalla tässä pitää painottaa sen tärkeyttä, kun rekisteröitte tuota lukkoa, niin keksikää mahdollisimman pitkä ja uniikki salasana käyttäjätunnukselle, sillä jos se vuotaa, niin kuka vaan saa ovesi auki tietämällä sähköpostin ja salasanan. Muuten tuolla ei nyt nopealla silmäyksellä mitään hälyttävää löytynyt, datakanava on https:n päällä, joten siltä osin turvallinen. Näytti tuolla olevan muutama google mainos ja statistiikka urli, joten softa saattaa kerätä statistiikka, mutta niinpä taitaa about kaikki applikaatiot tehdä.

Niin ja tässä postauksessa ei mitään maailmaa mullistavaa uutta tietoa. Näin jälkeenpäin kun googlettaa, niin Gluehomen gitistä löytyy samat tiedot sorsia lukemalla, josta näkee esim, että miten betterylevel lasketaan (https://github.com/GlueHome/homebridge-glue/blob/master/index.js) ja hyvää lisälukemista aiheesta: Security evaluation of smart door locks.

Nyt kun pystyn REST rajapintaa itse kutsumaan, niin saatan tulevaisuudessa hankkia toisenkin lukon talon puolelle.

EDIT: Vanha API lakkasi toimimasta, mutta tässä on uudempi blogipostaus jossa uutta API:a hyödynnetään: http://omakotikotitalomme.blogspot.com/2021/07/home-assistant-gluehome-lukkointegraatio.html