node-red-contrib-apple-tv-x

Nodes for controlling Apple TVs in Node-RED (wrapper pyatv)

Usage no npm install needed!

<script type="module">
  import nodeRedContribAppleTvX from 'https://cdn.skypack.dev/node-red-contrib-apple-tv-x';
</script>

README

node-red-contrib-apple-tv-x

From version 1.0.0 remove support native control Apple TVs (more)

platform Min Node Version GitHub version Package Quality

issues GitHub last commit NPM Total Downloads NPM Downloads per month Repo size

About

Nodes for controlling Apple TVs in Node-RED (wrapper pyatv).

Thanks Pierre Ståhl for project pyatv

Tested models are:

  • Apple TV HD (Apple TV 4)
  • Apple TV 4K

Backend

pyatv (cli)

How to install pyatv Official Documentation

How to install pyatv on Raspberry Pi (Raspbian)

$ sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip python3-cryptography python3-wheel
$ sudo pip3 install --upgrade pyatv

How to install pyatv (Official Node-RED Docker)

Exec to Docker use user !!! ROOT !!!

$ docker exec -it --user root mynodered bash

in docker

docker$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rust.sh && sh rust.sh -y && rm rust.sh && source $HOME/.cargo/env
docker$ apk add openssl-dev libffi-dev python3-dev
docker$ pip3 install --upgrade wheel pyatv

How to use pyatv in venv

Creation of virtual environments then in node OUT set Path where atvremote/atvscript

How to get Credentials AirPlay and Companion

$ atvremote --id 00:11:22:33:44:54 --protocol companion pair
$ atvremote --id 00:11:22:33:44:54 --protocol airplay pair

Output

A very simple node that takes the following commands as a string on msg.payload

  • down
  • home
  • homeHold
  • left
  • menu
  • next
  • pause
  • play
  • playPause
  • previous
  • right
  • select
  • skipBackward
  • skipForward
  • stop
  • suspend
  • topMenu
  • up
  • volumeDown
  • volumeUp
  • wakeup
  • turnOff
  • turnOn

Experimental

  • play_url
  • stream_file
  • launch_app

Input

Events from Apple TV on msg.payload

{
  dateTime: null,
  hash: null,
  mediaType: null,
  deviceState: null,
  title: null,
  artist: null,
  album: null,
  genre: null,
  totalTime: null,
  position: null,
  shuffle: null,
  repeat: null,
  app: null,
  appId: null,
  powerState: null
}