PlayStation binding

Delete you mean:

  • Karaf logout (I’m running on Win10)
  • delete .jar from Addons folder
  • copy .jar from depository
  • start Karaf
    ?

Or I might delete cache as well?

You don’t need to shutdown to exchange bundles. Just drop the new jar over the old jar. If that causes problems, there is a bug that needs to be fixed anyway.

If you shutdown before replacing the bundle you might run into caching problems and it is recommended to clean cache&tmp.

The thing is that the previous and this new plug-ins have different names, e.g 2.5.5 and 2.5.6…

Awesome work. When I was creating my HP Printer Binding I also wanted to create a PlayStation binding based on the PS4 waker stuff afterward but got busy with life stuff - glad that someone else in the community did this! Once I’ve merged some more changes in my Binding I’ll take a look at your repo and see how you did it! If I can spot anything that might need tweaking I’ll let you know; especially keen to see this merged into the official addons! I’ll try it tonight on my test openhab instance!

1 Like

I’ve made some minor tweaks to the binding and opened a pull request on your repo @FluBBaOfWard!

Also… I mistakenly pushed directly to your repo earlier - I’m not sure how I was able to! As soon as I realized that I removed my commit - very sorry about that! :dizzy_face:

So for me it is still not working

events.log

2020-06-03 23:15:56.357 [ome.event.ItemCommandEvent] - Item 'PS4_ApplicationId' received command CUSA01780
2020-06-03 23:15:56.371 [nt.ItemStatePredictedEvent] - PS4_ApplicationId predicted to become CUSA01780
2020-06-03 23:15:56.485 [vent.ItemStateChangedEvent] - PS4_ApplicationId changed from  to CUSA01780
2020-06-03 23:15:56.840 [vent.ItemStateChangedEvent] - PS4_ArtWork changed from raw type (image/jpeg): 32967 bytes to raw type (image/jpeg): 21890 bytes
2020-06-03 23:15:57.140 [hingStatusInfoChangedEvent] - 'playstation:PS4:Wohnzimmer' changed from ONLINE to ONLINE: Status OK.
2020-06-03 23:16:02.700 [hingStatusInfoChangedEvent] - 'playstation:PS4:Wohnzimmer' changed from ONLINE: Status OK. to ONLINE
2020-06-03 23:16:02.703 [vent.ItemStateChangedEvent] - PS4_Application changed from Fortnite to Spotify
2020-06-03 23:17:06.135 [ome.event.ItemCommandEvent] - Item 'PS4_ApplicationId' received command CUSA07669
2020-06-03 23:17:06.144 [nt.ItemStatePredictedEvent] - PS4_ApplicationId predicted to become CUSA07669
2020-06-03 23:17:06.178 [vent.ItemStateChangedEvent] - PS4_ApplicationId changed from CUSA01780 to CUSA07669
2020-06-03 23:17:06.178 [vent.ItemStateChangedEvent] - PS4_ArtWork changed from raw type (image/jpeg): 21890 bytes to raw type (image/jpeg): 32967 bytes
2020-06-03 23:17:06.386 [hingStatusInfoChangedEvent] - 'playstation:PS4:Wohnzimmer' changed from ONLINE to ONLINE: Status OK.
2020-06-03 23:17:12.736 [hingStatusInfoChangedEvent] - 'playstation:PS4:Wohnzimmer' changed from ONLINE: Status OK. to ONLINE
2020-06-03 23:17:12.736 [vent.ItemStateChangedEvent] - PS4_Application changed from Spotify to Fortnite

openhab.log

2020-06-03 23:15:56.375 [DEBUG] [ding.playstation.internal.PS4Handler] - Current application title id: CUSA01780
2020-06-03 23:15:56.937 [DEBUG] [ding.playstation.internal.PS4Handler] - TCP connecting
2020-06-03 23:15:56.939 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending HELLO_REQ packet.
2020-06-03 23:15:56.964 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending HANDSHAKE_REQ packet.
2020-06-03 23:15:56.966 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending LOGIN_REQ packet.
2020-06-03 23:15:57.138 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:16, command:LOGIN_RSP, status:STATUS_OK, data:[16, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
2020-06-03 23:15:57.151 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending CLIENT_IDENTITY_REQ packet.
2020-06-03 23:15:57.217 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending APP_START_REQ packet.
2020-06-03 23:15:57.225 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:20, command:HTTPD_STATUS_RSP, status:STATUS_OK, data:[20, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
2020-06-03 23:15:57.229 [DEBUG] [ding.playstation.internal.PS4Handler] - HTTPd Response; status:0, port:0, option:00000000.
2020-06-03 23:15:57.232 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:15:57.239 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:15:57.239 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:02.405 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:APP_START_RSP, status:STATUS_GAME_NOT_STARTED, data:[12, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0].
2020-06-03 23:16:02.406 [INFO ] [ding.playstation.internal.PS4Handler] - App start response: Game not started!
2020-06-03 23:16:02.694 [DEBUG] [ding.playstation.internal.PS4Handler] - Current application: Spotify
2020-06-03 23:16:07.017 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:16:07.018 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:16:07.018 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:17.038 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:16:17.038 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:16:17.039 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:27.028 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:16:27.028 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:16:27.028 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:37.022 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:16:37.023 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:16:37.024 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:45.422 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.sitemap.Image
2020-06-03 23:16:45.423 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'PS4_Artwork' for widget org.eclipse.smarthome.model.sitemap.sitemap.Image
2020-06-03 23:16:45.423 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'PS4_Artwork' for widget org.eclipse.smarthome.model.sitemap.sitemap.Image
2020-06-03 23:16:47.005 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:16:47.005 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:16:47.005 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:56.987 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:16:56.987 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:16:56.988 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:16:57.218 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending BYEBYE_REQ packet.
2020-06-03 23:16:57.219 [DEBUG] [ding.playstation.internal.PS4Handler] - SocketHandler done.
2020-06-03 23:17:06.142 [DEBUG] [ding.playstation.internal.PS4Handler] - Current application title id: CUSA07669
2020-06-03 23:17:06.253 [DEBUG] [ding.playstation.internal.PS4Handler] - TCP connecting
2020-06-03 23:17:06.255 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending HELLO_REQ packet.
2020-06-03 23:17:06.257 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending HANDSHAKE_REQ packet.
2020-06-03 23:17:06.260 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending LOGIN_REQ packet.
2020-06-03 23:17:06.385 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:16, command:LOGIN_RSP, status:STATUS_OK, data:[16, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
2020-06-03 23:17:06.397 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending CLIENT_IDENTITY_REQ packet.
2020-06-03 23:17:06.471 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:20, command:HTTPD_STATUS_RSP, status:STATUS_OK, data:[20, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
2020-06-03 23:17:06.472 [DEBUG] [ding.playstation.internal.PS4Handler] - HTTPd Response; status:0, port:0, option:00000000.
2020-06-03 23:17:06.511 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending APP_START_REQ packet.
2020-06-03 23:17:06.512 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:06.513 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:06.513 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:17:06.885 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:APP_START_RSP, status:STATUS_OK, data:[12, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0].
2020-06-03 23:17:07.031 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:07.032 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:07.032 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:17:12.734 [DEBUG] [ding.playstation.internal.PS4Handler] - Current application: Fortnite
2020-06-03 23:17:17.020 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:17.021 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:17.021 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:17:27.004 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:27.004 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:27.004 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:17:37.093 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:37.095 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:37.095 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:17:47.085 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:47.086 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:47.086 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:17:57.079 [DEBUG] [ding.playstation.internal.PS4Handler] - Resp; size:12, command:SERVER_STATUS_RSP, statValue:9, data:[12, 0, 0, 0, 18, 0, 0, 0, 9, 0, 0, 0].
2020-06-03 23:17:57.079 [DEBUG] [ding.playstation.internal.PS4Handler] - Server status value:9
2020-06-03 23:17:57.079 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending STATUS_REQ packet.
2020-06-03 23:18:06.512 [DEBUG] [ding.playstation.internal.PS4Handler] - Sending BYEBYE_REQ packet.
2020-06-03 23:18:06.514 [DEBUG] [ding.playstation.internal.PS4Handler] - SocketHandler done.
2020-06-03 23:18:43.024 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.sitemap.Image
2020-06-03 23:18:43.026 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'PS4_Artwork' for widget org.eclipse.smarthome.model.sitemap.sitemap.Image
2020-06-03 23:18:43.026 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'PS4_Artwork' for widget org.eclipse.smarthome.model.sitemap.sitemap.Image



My only hunch is that something is weird in your item file or sitemap… can you post the relevant parts?

items:

Group Ps4										(Wohnzimmer)
Switch PS4_Power "Playstation"                   (Ps4) { channel="playstation:PS4:Wohnzimmer:power", ga="Switch" [roomHint="Wohnzimmer"] }
String PS4_Application "Application [%s]"        (Ps4) { channel="playstation:PS4:Wohnzimmer:applicationName" }
String PS4_ApplicationId "Application id [%s]"   (Ps4) { channel="playstation:PS4:Wohnzimmer:applicationId" }
Image PS4_ArtWork "Artwork"                      (Ps4) { channel="playstation:PS4:Wohnzimmer:applicationImage" }
String PS4_OSKText "OSK Text"                    (Ps4) { channel="playstation:PS4:Wohnzimmer:oskText" }
Switch PS4_Disconnect "Disconnect"               (Ps4) { channel="playstation:PS4:Wohnzimmer:disconnect" }
Switch PS4_Up "Up"                               (Ps4) { channel="playstation:PS4:Wohnzimmer:keyUp" }
Switch PS4_Down "Down"                           (Ps4) { channel="playstation:PS4:Wohnzimmer:keyDown" }
Switch PS4_Right "Right"                         (Ps4) { channel="playstation:PS4:Wohnzimmer:keyRight" }
Switch PS4_Left "Left"                           (Ps4) { channel="playstation:PS4:Wohnzimmer:keyLeft" }
Switch PS4_Enter "Enter"                         (Ps4) { channel="playstation:PS4:Wohnzimmer:keyEnter" }
Switch PS4_Back "Back"                           (Ps4) { channel="playstation:PS4:Wohnzimmer:keyBack" }
Switch PS4_Option "Option"                       (Ps4) { channel="playstation:PS4:Wohnzimmer:keyOption" }
Switch PS4_PS "PS"                               (Ps4) { channel="playstation:PS4:Wohnzimmer:keyPS" }
String PS4_2ndScr "2ndScreen"                    (Ps4) { channel="playstation:PS4:Wohnzimmer:secondScreen" }
Switch PS4_Fortnite "Fortnite"                   (Ps4) { ga="Switch" [roomHint="Wohnzimmer"] }


sitemap:

sitemap ps4 label="PS4"
{
  

    Frame label="PlayStation 4" {
        Switch item=PS4_Power
        Text item=PS4_Application
        Text item=PS4_ApplicationId
        Selection item=PS4_ApplicationId mappings=[
            "CUSA00127"="Netflix",
            "CUSA01116"="Youtube",
            "CUSA01780"="Spotify",
            "CUSA07669"="Fortnite" ]
        
        Image item=PS4_Artwork
        Text item=PS4_OSKText
        Switch item=PS4_Disconnect
        Switch item=PS4_Up
        Switch item=PS4_Down
        Switch item=PS4_Right
        Switch item=PS4_Left
        Switch item=PS4_Enter
        Switch item=PS4_Back
        Switch item=PS4_Option
        Switch item=PS4_PS label="PS Button[]" mappings=["ON"="On", "OFF"="Off"]
        Text item=PS4_2ndScr
    }
}

The only thing I can see is ArtWork vs. Artwork, capital “W”…

Hi one Question, i try to use this Binding as well but i stuck and don’t know why.
The first rule work as it should the PS4 starts fine.
But Rule 2 and 3 doesn’t start seems like the channel not get triggered, iam not getting the first log messages any ideas why this happens?

rule "PS4 via Harmony"
when
	Channel "harmonyhub:hub:HarmonyHub:activityStarting" triggered PS4 
then
    logWarn("Harmony", "PS4 ON")
    PS4_Power.sendCommand(ON)
    /*createTimer(now.plusSeconds(40), [|
        logInfo("Harmony", "PS4 Netflix 1")
        PlaystationApplicationId.sendCommand("CUSA00127") #Netflix
        createTimer(now.plusSeconds(7), [|
            logInfo("Harmony", "PS4 Netflix 2")
            PlaystationApplicationId.sendCommand("CUSA00127")  #Netflix
                ])
         ])*/
end
//Netflix
rule "Netflix on PS4 via Harmony"
when
	Channel "harmonyhub:hub:HarmonyHub:activityStarting" triggered Netflix 
then
    logWarn("Harmony", "PS4 Netflix ON")
    PS4_Power.sendCommand(ON)
    createTimer(now.plusSeconds(40), [|
        logInfo("Harmony", "PS4 Netflix 1")
        PS4_ApplicationID.sendCommand("CUSA00127")
        createTimer(now.plusSeconds(7), [|
            logInfo("Harmony", "PS4 Netflix 2")
            PS4_ApplicationID.sendCommand("CUSA00127")
                ])
         ])
end
// Prime Video
rule "Prime Video on PS4 via Harmony"
when
	Channel "harmonyhub:hub:HarmonyHub:activityStarting" triggered Prime
then
    logWarn("Harmony", "PS4 Prime Video ON")
    PS4_Power.sendCommand(ON)
    createTimer(now.plusSeconds(40), [|
        logInfo("Harmony", "PS4 Prime 1")
        PS4_ApplicationID.sendCommand("CUSA00126")
        createTimer(now.plusSeconds(7), [|
            logInfo("Harmony", "PS4 Prime 2")
            PS4_ApplicationID.sendCommand("CUSA00126")
                ])
         ])
end

You are totally right. It is working now.
I thought there will be a syntax error or something like that when there is a problem with items used in sitemaps.
Thank you for your great work. Working like a charm.

1 Like

It was a long time I tried the rules, I don’t even think I’ve tried the createTimer stuff.
Can you run the PS4_ApplicationID.sendCommand(“CUSA00127”) without the Timer when PS4 is on and see what happens? Maybe get the log also?

020-06-09 16:40:17.732 [hingStatusInfoChangedEvent] - 'playstation:PS4:ee256f8c' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR): Connection refused
2020-06-09 16:40:17.732 [hingStatusInfoChangedEvent] - 'playstation:PS4:ee256f8c' changed from OFFLINE (COMMUNICATION_ERROR): Connection refused to ONLINE
2020-06-09 16:40:17.732 [hingStatusInfoChangedEvent] - 'playstation:PS4:ee256f8c' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR): Connection refused
2020-06-09 16:40:18.454 [vent.ChannelTriggeredEvent] - harmonyhub:hub:HarmonyHub:activityStarted triggered PS4
2020-06-09 16:40:27.742 [hingStatusInfoChangedEvent] - 'playstation:PS4:ee256f8c' changed from OFFLINE (COMMUNICATION_ERROR): Connection refused to ONLINE

my log
if i using the UI and not the rules it works fine :frowning: seems my rules are sticky but don’t know what wents wrong

Hi,
just bought 2 PS4 Pro, and I appreciate your work with such binding. But (as there is always a but :wink: )

My OpenHab is running on a Windows 7 machine, so I imagine how to install waker and if this has to run all the time??

Regards
int5749

You only need to run PS4Waker to get you ID string, after that it’s not needed any more.

1 Like

Understood, but how to run this on Windows System :-/ and where to download this?
I have node.js installed as I had to run some scripts for a landroid bridge, before Binding was available.
Woukd this work? I’m not familiar with linux and/or sudo etc.

And … where am I able to download jar files for PS Binding :wink:

The links to the jar and instructions are at the top of this very topic.

Thanks, found them :wink: downloaded but obviously I don’t manage to get the key from ps4-waker as described in ReadMe. I got the --help after installed this in NodeS but didn’t manage to get the .json file with --credentials :frowning:

And it looks like I made mistake to link ps4-waker to app rather than PS4 device, so how can I reset this or force to request new access code?

New release with fixes for the buttons and disconnect channel, also fixes for application-id.
This looks like the last version for openHAB 2.5.x as development has moved on to openHAB 3 now.

@FluBBaOfWard - I initally had the same issue - for both of us it has probably stemmed from copying the items and sitemaps example from git - has the same capitalization error there.