FlashForge Homey app

FlashForge Homey app

Ik heb nu een 3D-printer, de FlashForge Adventurer 5M, super leuk. Thuis gebruik ik de Athom Homey voor mijn huis automation, en ik dacht: het zou mooi zijn om die twee te verbinden.

Omdat ik geen duurdere printer heb, krijg ik namelijk geen meldingen op afstand of de print klaar is, en heb ik ook geen cameramogelijkheden. Een goede reden dus om hier iets mee te doen. Ik had nog nooit een app geschreven voor Homey, dus dit leek me een goed moment om dat eens te proberen. De installatie is vrij eenvoudig:

npm install -g homey
homey app create
homey app run

Custom capabilities

Ik heb een aantal capabilities toegevoegd om de temperaturen van de printer weer te geven in de app. Dat doe je door een JSON-bestand toe te voegen in .homeycompose/capabilities/.

Bijvoorbeeld:

{
  "id": "measure_temperature_extruder",
  "type": "number",
  "title": {
    "en": "Extruder Temperature",
    "nl": "Extruder Temperatuur"
  },
  "uiComponent": "sensor",
  "getable": true,
  "setable": false,
  "units": {
    "en": "°C"
  },
  "min": 0,
  "max": 300,
  "step": 1
}

En voor het bed:

{
  "id": "measure_temperature_bed",
  "type": "number",
  "title": {
    "en": "Bed Temperature",
    "nl": "Bed Temperatuur"
  },
  "uiComponent": "sensor",
  "getable": true,
  "setable": false,
  "units": {
    "en": "°C"
  },
  "min": 0,
  "max": 300,
  "step": 1
}

De id bepaalt het gedrag van de indicator op je apparaat in je homey device.

Waar ik tegenaan loop: ik wil graag een temperatuuricoon weergeven bij zowel de bed- als de extrudertemperatuur. Als ik gebruikmaak van de standaardcapability measure_temperature, krijg ik keurig een temperatuuricoon te zien, maar de bijbehorende titel verandert dan naar "Temperatuur". Dat is niet handig, want zo weet je niet of het de extruder of het bed temperatuur is.

Daarom heb ik de capabilities gesplitst in measure_temperature_extruder en measure_temperature_bed. Dat werkt, maar dan krijg je dus géén icoon.

Update: Ik heb het dus werkend gekregen, dankzij wat hulp van de community. Een vraag stellen helpt altijd. Wat je dus moet doen is dit toevoegen aan je driver.compose.json:

  "capabilitiesOptions": {
		"measure_temperature.bed": {
			"title": {
				"en": "Bed Temperature",
				"nl": "Bed Temperatuur"
			}
		},
		"measure_temperature.extruder": {
			"title": {
				"en": "Extruder Temperature",
				"nl": "Extruder Temperatuur"
			}
		}
  },

Maar wel dus met de . annotatie, op die manier snapt hij dat het een temperature is.

Ik vind de manier waarop device-sensors werken sowieso een beetje vreemd. Het lijkt me basisfunctionaliteit om je eigen icoontje te kunnen toevoegen, maar dat lijkt niet direct mogelijk. Misschien zie ik iets over het hoofd.

Hoe dan ook: Homey heeft het ontwikkelen van apps in ieder geval vrij toegankelijk gemaakt. De documentatie is redelijk goed, en het publiceren van een app is ook eenvoudig geregeld.

Voor nu staat hij in test modus, maar is wel te installeren.

FlashForge
Connect to your FlashForge Adventurer 3d printers