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

maanantai 2. syyskuuta 2019

Etäohjattava Glue älylukko wifi-keskittimellä

Tuossa kesällä oli Clasulla kivijalassa erikoistarjouksena Glue älylukot, jolloin opiskelijakortin vilauttamisen jälkeen taisi loppuhinnaksi muodostua noin 140e, niin oli pakko hankkia kun halvalla sai. Verkkokauppa.com:ssa sama on https://www.verkkokauppa.com/fi/product/14156/knckx/Glue-langaton-alylukko-wifi-keskittimella-hopea

Ja asennuskohteeksi valitsin varaston oven, sillä käyttöscenaariolla, jos tarvii esim. lähettifirmoille availla ovia jos tulee pakettia kun en ole kotona. Ja toinen syy varastoon pistämiseksi on se, että 'älylukoilla' on vielä hieman huono maine tietoturvan osalta. Joten tuota pitää tutkia hieman lähemmin, ennenkuin uskaltaa kotioveen pistää. Tästä onkin lupa odottaa jatkopostausta aiheesta, kun valmistaja ei ole public API:a toiminnallisuuteen julkaissut, niin taitaa edessä olla 'challenge accepted'-hetki, jos vaikka katsoo mitä vaatii oven avaaminen curlilla Linuxin konsolilla.

Lähtötilanteessa tuommoinen perus Abloyn lukkopesä, johon asennusta sitten ruvetaan suorittamaan.

Pyöritysnuppi ekana ruuvataan irti...

Jonka jälkeen ruuvataan Glue lukon aluslevy tilalle ja sovittemen kanssa sitten Glue laite paikoilleen.

Sitten vuorossa olikin Glue softan asennus Android puhelimeeni, jonka avulla lukko rekisteröidään ja calibroidaan. Jouduin tekemään calibroinnin pariin kertaan kun ekalla kerralla en osannut vääntää nuppia tarpeeksi auki. Ja wifi keskittimen kanssa hetken ihmettelin kunnes keksin, että varaston wlan ap:ssa oli dhcp:n dns asetukset vinossa. Lopulta kaikkiaan taisi vähän alle tunti mennä aloituksesta kun systeemi oli pystyssä.

Kun lopulta saa kaikki onnistuneesti conffattua, niin silloin näkyy puhelimesta iloisesti unlock ja lock napit, ja logitiedot historiasta.

Muutaman päivän testausten perusteella, unlock ja lock komennot joskus eivät mene täysin luotetusti läpi, vasta kun historia logissa näkyy eventti, niin silloin tietää menikö komento läpi. Mutta kun tuon tiedostaa, niin ei ole iso ongelma. Jossain vaiheessa on luvassa toinen postaus aiheesta, jossa koitetaan tutkia enemmän API ja/tai protokollatasoa toiminnallisuuden suhteen.

tiistai 25. kesäkuuta 2019

Commodore DIY: SyncFix64

Itselle kun vuosien varrella kertynyt muutamia halpoja kiina tft/lcd näyttöjä, jotka voisivat olla kivoja pikkunäyttöjä vanhoille Commodore tietokoneille. Ongelmana vain on, että nepat eivät synkkaanu noiden halpojen tft/lcd näyttöjen kanssa, joten kuva ei tule ruudulle.

Mutta joku on suunnitellut pienen piirilevyn, joka korjaa komposiitti-signaalin siten, että halvat tft/lcd näytötkin tunnistavat sen ja osaavat näyttää sen oikein.

https://www.hackup.net/tag/syncfix64/

Levy on aika pieni ja täynnä pintaliitoskomponentteja, vanhat ja raihnaiset ikänäkösilmäni tarvitsevat mikroskoopin apua noin pienien osien kolvaamiseen.

Onneksi LCD mikroskooppi oli isona apuna ja osat meni paikoilleen fluxin avulla nätisti:

Lopulta levy on valmis, ja seuraavaksi vuorossa lcd:n kotelon avaus.

Kotelon sisällä oli paljon tilaa ja kaapelirivistön vieressä oli vielä debug padit, josta oli helppo ryöstää 12V ja GND tolle apulevylle. Samoin keltainen signaalikaapeli kolvattiin irti ja pistettiin ton SyncFix64 levyn IN-reikään ja OUT-reikä taas yhdistettiin LCD:n alkuperäiseen keltaiseen reikään.

Levy meni kotelon sisään nätisti ja kuvatesti näyttää, että laite iloisesti tunnistaa C64sen signaalin ja näyttää kuvan OK. Tämä kääntyvä peruutuskameran näyttö taisi olla aliexpressista 13e kotiin kuljetettuna.

Seuraava vuorossa vielä muutaman lisälevyn kolvailu, kun minulla taisi joku 3-4 pikku TFT/LCD näyttöä olla laatikoiden pohjalla.

lauantai 8. kesäkuuta 2019

Tuulettimen korjaus

Kävi tuossa juuri, että yhdestä vanhasta Severin pöytätuulettimesta loppui pyörintä, kun propellin sisäosa oli murtunut muodottamaksi, jolloin moottorin tappi ei ottanut enää kontaktia propelliin. Joten otinpas käteen työntömitan ja suunnittelin korjaavan välikappaleen propellin ja tapin väliin.

Ekana kuvassa muodottamaksi haljennut takapuoli ja sitten kuva kun 3D printattu korjausosa on asennettu paikoilleen.


Moottorin pyörivä tappi istui tuohon täydellisesti, ja taas on yksi tuuletin kunnostettu.

tiistai 4. kesäkuuta 2019

Commodore DIY: C64/C128 Diagnoosi vermeet V1.3

Käsittelin aihetta jo vuosi sitten https://omakotikotitalomme.blogspot.com/2018/02/commodore-diy-c64c128-diagnoosi-vermeet.html

Nyt on aika uusintakierrokselle, kun tuo harness design on tyrhan monimutkainen ja joystick kaapeleiden kasaamisessa pinniliittimet on virhearkoja. Joten suunnittelin uuden optimoidun piirilevyn, jossa joystick kaapeleita ei tarvita ollenkaan.

Joten avasin Eaglen ja rupesin piirtelemään ja digitaalisella työntömitalla koitin katsoa joystick porttien etäisyydet toisistaan (nyt kun levyt on saapuneet, niin oli jopa onnistuneet mittaukset).

Ja tälläkertaa tilasin piirilevyt http://jlcpcb.com:sta, kun tätä kirjoittaessa sieltä saa tällähetkellä edullisimmin itse paneloidut levyt.

Samalla suunnittelin 3D printatut kotelot uusille piirilevyille, jolloin niiden kiinnitys ja irroitus helpottuu:

Kasauksen ja testauksen jälkeen, kaikki diagnostiikka harnesin testit menee läpi. Ja BOM (materiaalikustannukset) ovat puolittuneet ja kasaaminen on paljon helpompaa kun erillisiä joystick kaapeleita ei tarvitse tehdä.